13 Punkte von GN⁺ 2024-03-23 | 1 Kommentare | Auf WhatsApp teilen

DuckDB wird zum neuen jq

  • Das DuckDB-Projekt ist eine SQLite-ähnliche Datenbank für Datenanwendungen und bringt Funktionen mit, um verschiedene Datenformate ohne zusätzliche Abhängigkeiten zu importieren.
  • JSON-Dateien lassen sich direkt als Datenbanktabellen einlesen und parsen; das gilt auch für viele andere Formate.
  • Für die Arbeit mit JSON wird meist jq verwendet, aber weil die jq-Syntax komplex sein kann und SQL vertrauter ist, ist DuckDB oft bequemer.
  • So lassen sich zum Beispiel mit der GitHub-API Repository-Informationen der golang-Organisation als JSON abrufen und anschließend Statistiken zu Open-Source-Lizenztypen einfach per SQL erstellen.
  • SQL-Abfragen in DuckDB zu schreiben ist auch ohne ständigen Blick in die Dokumentation leicht möglich; die Syntax ähnelt den JSON-Funktionen von PostgreSQL.
  • DuckDB unterstützt auch JSON-Ausgabe, und bei Bedarf kann jq genutzt werden, um die Ergebnisse hübsch zu formatieren.
  • DuckDB kann nicht nur JSON, sondern auch viele andere Datenformate wie CSV, Parquet oder Excel-Dateien importieren.
  • Wenn Daten nicht dauerhaft gespeichert werden müssen, können sie auch ohne das Erstellen von Tabellen abgefragt werden.
  • DuckDB kann JSON nicht nur aus lokalen Dateien, sondern auch direkt von URLs einlesen.

Meinung von GN⁺

  • DuckDB könnte ein interessantes Werkzeug für Nutzer sein, die häufig mit Datenanalyse zu tun haben. Vor allem für Menschen, die mit SQL vertraut sind, kann es eine leistungsstarke Alternative für den einfachen Umgang mit JSON-Daten sein.
  • Dass DuckDB JSON-Daten direkt lesen kann, vereinfacht die Datenvorverarbeitung und reduziert beim Aufbau von Datenpipelines den Bedarf an separaten Transformationsschritten.
  • Wenn sich DuckDB weiter verbreitet, könnte es im Vergleich zu bestehenden, komplexeren Werkzeugen für Datenanalyse und -verarbeitung die Lernkurve senken und die Produktivität steigern.
  • Wenn DuckDB allerdings noch nicht breit bekannt ist oder die Community-Unterstützung nicht ausreicht, könnte es für Nutzer schwierig sein, bei Problemen Lösungen zu finden.
  • Andere Open-Source-Projekte mit ähnlichen Funktionen sind etwa Apache Drill oder PrestoDB, die ebenfalls SQL-Abfragen auf große Datensätze unterstützen.

1 Kommentare

 
GN⁺ 2024-03-23
Hacker-News-Kommentare
  • Kombination aus jq und grundlegenden Shell-Tools

    • Die Syntax und das Datenmodell von jq sind sehr elegant und leistungsfähig, aber wegen der kleinen Standardbibliothek und einiger Unbeholfenheiten im Design können alltägliche Aufgaben komplex werden.
    • jq wandelt Daten gut in zeilenbasierten Text um und lässt sich daher gut mit Unix-Shell-Tools kombinieren.
    • Zum Beispiel lässt sich das Extrahieren von OSS-Lizenzen aus einer Projektliste und das Zählen ihrer jeweiligen Nutzung einfach mit curl ... | jq '.[].license.key' | sort | uniq -c erledigen.
  • Babashka und Clojure

    • Wer Lisp und Clojure mag, sollte sich Babashka ansehen.
    • Es wird Beispielcode gezeigt, der mit Babashka JSON-Dateien verarbeitet sowie Daten gruppiert und zählt.
  • ClickHouse Local CLI

    • Die ClickHouse Local CLI ist sehr schnell beim Parsen und Abfragen von Formaten wie JSON und CSV.
    • Sie wird als „das schnellste JSON-Abfragewerkzeug der Welt“ bezeichnet und als kleines Tool für serverlose Datenanalyse vorgestellt.
  • Einsatz von jq, DuckDB und SQL

    • jq ist ideal für Aufgaben wie Filtern, Mapping und Verkettung.
    • jq kann zum Beispiel verwendet werden, um bestimmte Download-Links zu finden oder KUBE_CONFIG eines Kubernetes-Clusters aus einem Terraform-Status zu extrahieren.
  • Google-Sheets-Abfragen

    • Öffentlich zugängliche Google-Sheets-Daten lassen sich auf SQL-ähnliche Weise abfragen.
  • Strukturiertes Logging mit einer SQLite-Datenbank

    • Täglich erzeugte Log-Events können als JSON-Objekte gespeichert werden, und durch das Erstellen von Indizes auf bestimmte Felder lassen sie sich mit SQL-Abfragen durchsuchen.
  • Benthos

    • Benthos kann für Datentransformation sowie zum Verschieben von Daten zu Message-Bussen, Webhooks und Datenbanken verwendet werden.
  • Nushell

    • Nushell ist nützlich für ad-hoc-Datenmanipulation und allgemeine Shell-Aufgaben.
  • pq (prql-query)

    • pq wurde entwickelt, um die Arbeit mit Daten im Terminal mithilfe von DuckDB, DataFusion und PRQL einfach und unterhaltsam zu machen.
    • Derzeit ist das Projekt wegen schwieriger Wartung archiviert, aber mit Mitwirkenden könnte sich das ändern.
  • JSON und der Einsatz von Programmiersprachen

    • Im Vergleich dazu, JSON wie eine Datenstruktur ähnlich einer Hash-Map in einer Programmiersprache zu behandeln, ist der Vorteil nicht eindeutig.
    • Wer interaktiv arbeiten möchte, kann ein Notebook oder eine REPL verwenden.