Ir al contenido

Shell Interactivo

El shell interactivo es un REPL SQL que te da acceso directo a tu data lake con resaltado de sintaxis, autocompletado y comandos dot especiales.

Ventana de terminal
dataspoc-lens shell
DataSpoc Lens Shell (DuckDB)
Type SQL or .help for commands.
lens>
  • Resaltado de sintaxis — palabras clave SQL, strings y numeros con colores via Pygments
  • Autocompletado — nombres de tablas, columnas y palabras clave SQL con Tab
  • Historial de comandos — persistente entre sesiones, almacenado en ~/.dataspoc-lens/history
  • Consultas multi-linea — las consultas se ejecutan cuando escribes ; al final
  • Salida enriquecida — resultados mostrados como tablas formateadas

Los comandos dot son comandos especiales del shell que comienzan con . y proporcionan acceso rapido a metadatos y utilidades.

ComandoDescripcion
.tablesLista todas las tablas montadas
.schema <table>Muestra nombres de columnas y tipos de una tabla
.bucketsLista todos los buckets registrados
.cache [table]Cachea una tabla localmente para uso offline
.export <format> <path>Exporta el resultado de la ultima consulta a un archivo
.helpMuestra los comandos dot disponibles
.quitSale del shell
lens> .tables
customers
orders
products
lens> .schema orders
order_id INTEGER
customer_id INTEGER
order_date DATE
total DOUBLE
status VARCHAR
lens> SELECT status, COUNT(*) as cnt, AVG(total) as avg_total
...> FROM orders
...> GROUP BY status;
┌───────────┬───────┬───────────┐
│ status │ cnt │ avg_total │
├───────────┼───────┼───────────┤
│ completed │ 32100 │ 85.40 │
│ pending │ 8450 │ 72.15 │
│ cancelled │ 2130 │ 45.20 │
└───────────┴───────┴───────────┘
(3 row(s), 0.089s)
lens> .export csv /tmp/order_stats.csv
Exported 3 row(s) to /tmp/order_stats.csv
lens> .cache orders
Caching 'orders'...
Cached 'orders': 4 file(s), 12.3 MB
lens> .buckets
s3://my-company-data
lens> .quit

Si has configurado un proveedor de IA (via setup-ai o variables de entorno), puedes hacer preguntas en lenguaje natural directamente en el shell prefijando tu entrada con ask:

lens> ask What is the average order value by month?
SQL: SELECT DATE_TRUNC('month', order_date) as month,
AVG(total) as avg_order_value
FROM orders GROUP BY month ORDER BY month
┌────────────┬─────────────────┐
│ month │ avg_order_value │
├────────────┼─────────────────┤
│ 2024-01-01 │ 78.50 │
│ 2024-02-01 │ 82.30 │
│ 2024-03-01 │ 91.20 │
└────────────┴─────────────────┘
(3 row(s), 1.150s)
AtajoAccion
TabAutocompletado
Up / DownNavegar historial de comandos
Ctrl+CCancelar la entrada actual
Ctrl+DSalir del shell