DuckDB、新しいjqとして台頭
- DuckDBプロジェクトは、データアプリケーション向けのSQLiteのようなデータベースで、追加の依存関係なしにさまざまなデータ形式を取り込める機能を備えている。
- JSONファイルをデータベーステーブルとして直接読み込んでパースでき、これは多くの他の形式にも当てはまる。
- JSON作業では主に
jq を使うが、複雑な jq の文法よりもSQLに慣れているため、DuckDBを使うほうが便利だ。
- たとえば、GitHub APIを使ってgolang組織のリポジトリ情報をJSONで取得した後、オープンソースライセンスの種類に関する統計をSQLで簡単に出せる。
- DuckDBを使ってSQL文を書くのは、ドキュメントを参照しなくても簡単にでき、PostgreSQLのJSON関数に似た文法を使う。
- DuckDBはJSON出力もサポートしており、必要であれば
jq を使って結果を見やすく整形できる。
- DuckDBはJSONだけでなく、CSV、parquet、Excelファイルなどさまざまなデータ形式を取り込める。
- データを永続的に保存する必要がない場合、テーブルを作成せずにデータをクエリできる。
- DuckDBはローカルファイルだけでなく、URLから直接JSONを読み込むこともできる。
GN⁺の意見
- DuckDBは、データ分析に関する作業を頻繁に行うユーザーにとって興味深いツールになりうる。特にSQLに慣れた人にとっては、JSONデータを簡単に扱える強力な代替手段になりうる。
- DuckDBがJSONデータを直接読み込める点は、データ前処理の過程を単純化し、データパイプライン構築時に別途のデータ変換ステップを減らせる利点をもたらす。
- DuckDBの利用が広がれば、データ分析や処理のための既存の複雑なツールと比べて学習コストを下げ、生産性を向上させられる。
- ただし、DuckDBがまだ広く知られていなかったり、コミュニティの支援が十分でなかったりする場合、ユーザーが問題に直面した際に解決策を見つけにくい可能性がある。
- DuckDBと似た機能を提供する他のオープンソースプロジェクトとしてはApache DrillやPrestoDBがあり、これらも大規模データセットに対するSQLクエリをサポートしている。
1件のコメント
Hacker Newsの意見
jqと基本的なシェルツールの組み合わせ
curl ... | jq '.[].license.key' | sort | uniq -cで簡単に処理できる。BabashkaとClojure
ClickHouseローカルCLI
jq、DuckDB、SQLの使い分け
Google Sheetsクエリ
SQLiteデータベースを使った構造化ロギング
Benthos
Nushell
pq (prql-query)
JSONとプログラミング言語の利用