Eine SQL-Aufgabe mit DuckDB und einer Datendatei stellen
SQL (DuckDB) ist eine zweite SQL-Sprache neben SQLite, mit denselben zwei Tabs: der Abfrage, die die Lernenden schreiben, und dem Schema, das die Datenbank aufbaut, auf der sie läuft. DuckDB ist für Analysen gemacht und lehrt, was SQLite nicht lehrt: Fensterfunktionen, eine CSV-Datei direkt über ihren Namen lesen und einen Abfrageplan lesen.
Was es ist und wann man es wählt
Wählen Sie SQL (DuckDB), wenn es in der Stunde um die Analyse von Daten geht: laufende Summen und Ranglisten mit `OVER`, `QUALIFY`, das Gruppieren einer Datei mit Messwerten oder die Frage, warum eine Abfrage langsamer ist als eine andere. Wählen Sie SQLite für Tabellen, Schlüssel und das erste `select`. Eine Aufgabe gehört für immer zu einer der beiden, sodass sich der Dialekt nie unter den Lernenden ändert.
Jeder Lauf baut in einem eigenen Container eine frische, leere Datenbank im Arbeitsspeicher auf, wendet Ihr Schema und dann die Abfrage an, genau wie bei SQL. Nichts, was eine Lernende tut, erreicht jemand anderen, und von einem Lauf zum nächsten bleibt nichts erhalten.
Eine neue DuckDB-Aufgabe öffnet sich mit einer kleinen Verkaufstabelle und einer Abfrage mit einer Fensterfunktion, samt Musterlösung, die schon besteht.
Eine Datendatei mitbringen
Neben der Ausgabe lässt sich über die Datendatei-Steuerung eine Datei an die Aufgabe hängen. Die Abfrage liest sie über ihren Namen: `select * from 'readings.csv'`, oder `read_json` für JSON-Lines. Alle, die die Aufgabe bearbeiten, lesen dieselben Daten, und Lernende können unter einem anderen Namen eine eigene danebenlegen.
Angenommen werden CSV-, TSV- und JSON-Lines-Dateien als Text, jeweils bis zu 64 KB. Parquet-Dateien werden nicht angenommen, weil eine Datendatei Text sein muss, und eine Datei mit bloß falscher Endung auch nicht: Die Seite nennt bei einer Ablehnung, welche Arten sie liest. Das Schema darf leer sein, wenn die Datei alle Daten der Aufgabe enthält.
Was eine Abfrage nicht kann
DuckDB läuft ohne Netz und ohne die Möglichkeit, sich etwas hinzuzufügen. Eine Abfrage kann die Datendatei der Aufgabe lesen und sonst nichts: Sie kann keine andere Datei lesen, keine schreiben, keine Datenbank anhängen, keine Erweiterung installieren und keinen Befehl ausführen. Jeder Versuch wird mit den Worten von DuckDB abgelehnt, zum Beispiel dass Dateisystemoperationen deaktiviert sind. So sehen Lernende, die es versuchen, warum, und die Lehrkraft kann es der Klasse zeigen.
Es gelten dieselben Grenzen für Zeit, Speicher und Prozesse wie bei einem SQL-Lauf. Eine Abfrage, die mehr Speicher will, als sie bekommt, bricht mit der Speichermeldung von DuckDB ab.
Ausführen und bewerten
„Ausführen“ führt die Abfrage aus und zeigt die Zeilen als einfache Tabelle; „Schema ausführen“ baut die Datenbank neu auf und aktualisiert die Tabellen daneben. `EXPLAIN ANALYZE` gibt den Plan mit Zeilen und Zeit je Schritt aus, womit sich zeigen lässt, warum eine Abfrage schnell ist.
Die Bewertung ist die von SQL. Geben Sie der Aufgabe eine Musterlösung, dann führt „Tests ausführen“ die Abfrage der Lernenden und Ihre auf demselben Schema und derselben Datendatei aus und vergleicht ihre Zeilen, ohne die Reihenfolge zu beachten, aber mit Duplikaten. Das Ergebnis ist ein einfaches Bestanden oder Nicht bestanden, und eine Abfrage, die nicht laufen kann, heißt „Konnte nicht ausgeführt werden“ statt „fehlgeschlagen“.
Was es kostet, und wie Sie es ausprobieren
Für eine Schule sind die ersten 365 Tage kostenlos, für bis zu 50 Lernende und ohne Karte, und alles auf dieser Seite gehört dazu. Danach gilt ein Preis je lernender Person und Jahr; Lehrkräfte sind kostenlos, und Labs, virtuelle Maschinen und KI sind im Rahmen einer fairen Nutzung enthalten. Die Preisseite zeigt den Betrag in Ihrer Währung und hat einen Rechner.
Häufige Fragen
- Können Lernende Parquet-Dateien verwenden?
- Noch nicht. Eine Datendatei ist Text, deshalb werden CSV, TSV und JSON-Lines angenommen, und eine Parquet-Datei wird mit einem erklärenden Satz abgelehnt.
- Kann eine Abfrage eine Erweiterung installieren oder aus dem Internet lesen?
- Nein. Der Lauf hat kein Netz, und seine Konfiguration wird gesperrt, bevor die Abfrage beginnt; nichts lässt sich wieder einschalten.
- Kann ich DuckDB in einer Lektion verwenden?
- Ja. Ein DuckDB-Codeblock in einer Lektion hat dieselben zwei Tabs und läuft auf DuckDB.