Crear una tarea de SQL en DuckDB, con un archivo de datos
SQL (DuckDB) es un segundo lenguaje SQL junto a SQLite, con las mismas dos pestañas: la consulta que escribe el alumno y el esquema que construye la base de datos sobre la que se ejecuta. DuckDB está hecho para el análisis, así que enseña lo que SQLite no enseña: funciones de ventana, leer un archivo CSV directamente por su nombre y leer el plan de una consulta.
Qué es y cuándo elegirlo
Elige SQL (DuckDB) cuando la lección trate de analizar datos: acumulados y clasificaciones con `OVER`, `QUALIFY`, agrupar un archivo de lecturas, o por qué una consulta es más lenta que otra. Elige SQLite para tablas, claves y el primer `select`. Una tarea es de uno u otro para siempre, de modo que el alumno nunca ve cambiar el dialecto bajo sus pies.
Cada ejecución construye una base de datos nueva y vacía en memoria, en su propio contenedor, aplica tu esquema y después la consulta, igual que con SQL. Nada de lo que haga un alumno llega a otro, y nada se conserva de una ejecución a la siguiente.
Una tarea de DuckDB nueva se abre con una tabla pequeña de ventas y una consulta con una función de ventana, con un modelo de respuesta que ya aprueba.
Aportar un archivo de datos
Junto a la salida, un control de archivo de datos permite adjuntar un archivo a la tarea. La consulta lo lee por su nombre: `select * from 'readings.csv'`, o `read_json` para líneas JSON. Todos los alumnos que hacen la tarea leen los mismos datos, y un alumno puede añadir uno propio al lado con otro nombre.
Admite archivos CSV, TSV y líneas JSON, como texto, de hasta 64 KB cada uno. Los archivos Parquet no se admiten, porque un archivo de datos tiene que ser texto, y tampoco uno que solo tenga mal la terminación: la página dice qué tipos lee cuando rechaza uno. El esquema puede estar vacío cuando el archivo es todo el dato que necesita la tarea.
Lo que una consulta no puede hacer
DuckDB se ejecuta sin red y sin forma de añadirse nada. Una consulta puede leer el archivo de datos de la tarea y nada más: no puede leer otro archivo, escribir uno, adjuntar una base de datos, instalar una extensión ni ejecutar un comando. Cada intento se rechaza con las palabras de DuckDB, por ejemplo que las operaciones del sistema de archivos están desactivadas, así que el alumno que lo prueba ve por qué y el profesor puede mostrarlo a la clase.
Tiene los mismos límites de tiempo, memoria y procesos que una ejecución de SQL. Una consulta que quiere más memoria de la que se le da se detiene con el mensaje de memoria agotada de DuckDB.
Ejecutarla y corregirla
«Ejecutar» lanza la consulta y muestra las filas como una tabla sencilla; «Ejecutar esquema» reconstruye la base de datos y actualiza las tablas que se muestran al lado. `EXPLAIN ANALYZE` imprime el plan con las filas y el tiempo de cada paso, que es la forma de enseñar por qué una consulta es rápida.
La corrección es la de SQL. Dale un modelo de respuesta a la tarea y «Ejecutar pruebas» ejecuta la consulta del alumno y la tuya sobre el mismo esquema y el mismo archivo de datos, y compara sus filas sin tener en cuenta el orden pero sí los duplicados. El resultado es un simple aprobado o suspenso, y una consulta que no puede ejecutarse dice «No se pudo ejecutar» en lugar de «suspendido».
Lo que cuesta, y cómo probarlo
Un centro tiene gratis sus primeros 365 días, hasta 50 alumnos y sin tarjeta, y todo lo que describe esta página forma parte de ello. Después, el precio es por alumno y año, con el profesorado gratis y los laboratorios, las máquinas virtuales y la IA incluidos con un uso razonable. La página de precios da la cifra en tu moneda y tiene una calculadora.
Preguntas frecuentes
- ¿Pueden los alumnos usar archivos Parquet?
- Todavía no. Un archivo de datos es texto, así que se admiten CSV, TSV y líneas JSON, y un archivo Parquet se rechaza con una frase que lo explica.
- ¿Puede una consulta instalar una extensión o leer de internet?
- No. La ejecución no tiene red y su configuración se bloquea antes de que empiece la consulta, de modo que no se puede volver a activar nada.
- ¿Puedo usar DuckDB en una lección?
- Sí. Un bloque de código de DuckDB en una lección tiene las mismas dos pestañas y se ejecuta en DuckDB.