Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データエンジニアリング領域におけるDuckDBのユースケース

chanyou0311
February 26, 2025

 データエンジニアリング領域におけるDuckDBのユースケース

「DuckDBの魅力解剖!〜現場から見る活用術とその可能性〜」の登壇資料です。
https://findy.connpass.com/event/343059/

chanyou0311

February 26, 2025
Tweet

More Decks by chanyou0311

Other Decks in Technology

Transcript

  1. Yu Nakamura - chanyou • スタートアップでデータエンジニアとして交通データ分析基盤 の構築‧運⽤を経験 • その後、株式会社タイミーの DRE

    チームにジョイン データ基盤の構築‧運⽤に注⼒ • 最近はデータ基盤における Platform Engineering に関⼼があり ます • 広島在住。趣味はおうち Kubernetes クラスタ • YAPC::Hiroshima 2024 のスタッフなど
  2. タイミーの実績 スキマ バイト No.1 ※1 ※2 [調査⽅法]インターネット調査 [調査期間]2025年1⽉31⽇〜2025年2⽉4⽇ [調査概要]スキマバイトアプリサービスの 実態調査

    [調査委託先]株式会社マクロミル ※3 2024年12⽉時点 ※4 2024年12⽉時点 利⽤率 ‧リピート率 ※1 ※2 導⼊事業者数 159,000企業 ワーカー数 1,000万⼈ ※4 ※3
  3. クライアントAPIが充実 • CLI • C • Java • Go •

    Node.js • Python • R • WebAssembly 他にも Dart, Rust, Ruby などのクライアントAPIも公開されている
  4. Python の場合 DataFrame と相互変換が可能 • クエリ結果を Pandas や Polars の

    DataFrame に変換できる • DataFrame に対して DuckDB でクエリを実⾏することも可能 https://duckdb.org/docs/clients/python/overview
  5. 外部データソースの読み書きに対応 • PostgreSQL や MySQL といった RDBMS に直接クエリを実⾏できる • CSV,

    Parquet, Delta, Iceberg といったファイルにクエリを実⾏できる https://duckdb.org/docs/data/parquet/overview.html https://duckdb.org/docs/extensions/postgres.html
  6. DuckDB の Good な点 • 🚀 ⼤量データでも⾼いパフォーマンスで実⾏できる • 🧰 幅広いデータ形式の読み込みに対応している

    • 💰 データ量に依存したクエリ料⾦がかからない • 🤝 dbt アダプタなど、周辺エコシステムとの親和性が⾼い
  7. DuckDB の More な点 • 👮 きめ細かなアクセス制御‧監査ログの取得が難しい • 💥 DuckDB

    のデータベースファイルを SSoT として運⽤しようとすると、 途端に破綻する
  8. オブジェクトストレージへのクエリエンジン • 類似ソリューション ◦ AWS Athena や BigQuery Omni など

    ▪ 🦆 クラウドにロックインされず、どこでも実⾏できる ◦ Pandas などの DataFrame ▪ 🦆 Python 実⾏環境が不要で、⼿軽に実⾏できる
  9. データの前処理や検証 • データの前処理 ◦ 複雑な結合‧重複排除 • データの検証 ◦ データの完全性‧⼀意性‧最新性の検証 •

    スクリプト内部に閉じた利⽤が想定される • スクリプト実⾏後にデータが揮発しても問題ない
  10. データの⽐較⽅法 • S3 のファイルの読み込みは read_parquet() 関数ですぐ読み込める • BigQuery はロード後のテーブルを GCS

    に Parquet 形式でエクスポートして から read_parquet() で読み込む ◦ DuckDB から BigQuery に直接クエリできる Community Extension もあるが、⼀部のフィールドでうまく クエリできない問題があって⾒送った • データの⽐較は EXCEPT 句で実⾏できる