13 ポイント 投稿者 GN⁺ 2024-03-23 | 1件のコメント | WhatsAppで共有

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件のコメント

 
GN⁺ 2024-03-23
Hacker Newsの意見
  • jqと基本的なシェルツールの組み合わせ

    • jqの文法とデータモデルは非常にエレガントで強力だが、標準ライブラリが不足しており、設計上のぎこちなさもあって、日常的な作業が複雑になることがある。
    • jqはデータを行単位のテキストへうまく変換できるため、Unixシェルツールと組み合わせやすい。
    • たとえば、プロジェクト一覧からOSSライセンスを抽出し、それぞれの使用回数を数える作業は curl ... | jq '.[].license.key' | sort | uniq -c で簡単に処理できる。
  • BabashkaとClojure

    • LispやClojureが好きなら、Babashkaを試してみるとよい。
    • Babashkaを使ってJSONファイルを処理し、データをグループ化してカウントするサンプルコードが示されている。
  • ClickHouseローカルCLI

    • ClickHouseローカルCLIは、JSONやCSVなどの形式をパースしてクエリするのが非常に高速である。
    • 「世界で最も速いJSONクエリツール」と呼ばれ、サーバーレスなデータ分析のための小さなツールとして紹介されている。
  • jq、DuckDB、SQLの使い分け

    • jqはフィルタリング、マッピング、結合といった作業に理想的である。
    • たとえば、特定のダウンロードリンクを見つけたり、Terraformの状態からKubernetesクラスターのKUBE_CONFIGを抽出したりする作業にjqを使える。
  • Google Sheetsクエリ

    • 公開されたGoogle Sheetsのデータを、SQLに似た方法でクエリできる。
  • SQLiteデータベースを使った構造化ロギング

    • 毎日生成されるログイベントをJSONオブジェクトとして保存し、特定のフィールドにインデックスを作成してSQLクエリで検索できる。
  • Benthos

    • データ変換や、メッセージバス、Webhook、データベースへのデータ移動にBenthosを利用できる。
  • Nushell

    • Nushellは、アドホックなデータ操作や一般的なシェル作業に役立つ。
  • pq (prql-query)

    • DuckDB、DataFusion、PRQLを活用し、ターミナルでのデータ作業を簡単かつ楽しくするためにpqが作られた。
    • 現在はメンテナンスが難しくアーカイブ状態だが、協力できる人がいれば状況を変えられるかもしれない。
  • JSONとプログラミング言語の利用

    • JSONをプログラミング言語のハッシュマップのようなデータ構造として扱うことと比べて、利点が明確ではない。
    • 対話的に作業したいなら、ノートブックやREPLを使うこともできる。