達人出版会 | 夏休みに読みたい!インプレス&近代科学社フェア
DuckDB実践入門 PCで使える高速で快適なデータ分析用DB―基本からエコシステム活用まで

DuckDB実践入門 PCで使える高速で快適なデータ分析用DB―基本からエコシステム活用まで

Mark Needham

インプレス

「分析処理用SQLite」とも言えるデータベースDuckDBの基本から解説―コマンドでの操作から始め、Python環境からの活用、SQLでの効率的な分析、データパイプライン構築へとより実践的な内容に進み、さらにクラウド上でDuckDBを提供するMotherDuck、大規模データでの性能、データアプリ構築・展開について説明。

PDF EPUB固定
SALE 3,740円 1,870円 (税込)

【注意】本書のEPUB版は固定レイアウト型になっております。文字の大きさの変更や検索、引用などはお使いいただけません。画面の大きい端末でご利用ください。

ギフト用に購入

書籍情報

著者: Mark Needham
共著者: , Michael Hunger, Michael Simons(著), 設樂 洋爾(訳)

発行日: 2025-08-20
最終更新日: 2025-08-20

バージョン: 1.0.0
ページ数: 408ページ(PDF版換算)ページ
対応フォーマット: PDF, EPUB
出版社: インプレス

対象読者

データエンジニア、データサイエンティスト、開発者。 データ分析基盤を整備することなく、すでに手元にある構造化データを効率的に分析したい、と考えている人たち。コマンドラインツールに慣れ親しんでいて、Pythonについてもある程度の知識があるとよい。

著者について
Mark Needham

オンライン分析処理データベースDBClickHouseのプロダクトマーケティングエンジニア。データインフラ分野で10年間の業務経験があり、グラフデータベースのNeo4j、リアルタイム分析プラットフォームのApache Pinotに取り組んできた。また、個人的な活動として15年間、ソフトウェアに関するブログを執筆、markhneedham.comで公開。

目次

序文

まえがき

  • 謝辞
  • 本書について
  • 著者について
  • 訳者まえがき

目次

第1章 DuckDB入門

  • 1.1 DuckDBとは何か?
  • 1.2 DuckDBに注目すべき理由
  • 1.3 いつDuckDBを使うべきか?
  • 1.4 いつDuckDBを使うべきではないか?
  • 1.5 ユースケース
  • 1.6 DuckDBはどこに適しているか?
  • 1.7 データ処理フローのステップ
  • 1.7.1 データ形式とソース
  • 1.7.2 データ構造
  • 1.7.3 SQLの開発
  • 1.7.4 結果の利用と処理
  • 1.8 まとめ

第2章 DuckDBを使い始める

  • 2.1 サポートしている環境
  • 2.2 DuckDB CLIをインストールする
  • 2.2.1 macOS
  • 2.2.2 LinuxとWindows
  • 2.3 DuckDB CLIを使う
  • 2.3.1 SQL文
  • 2.3.2 ドットコマンド
  • 2.3.3 CLIの引数
  • 2.4 DuckDBの拡張システム
  • 2.5 CSVファイルをDuckDB CLIで解析する
  • 2.5.1 結果モード
  • 2.6 まとめ

第3章 SQLクエリの実行

  • 3.1 SQLの簡単なおさらい
  • 3.2 エネルギー生産の分析
  • 3.2.1 データセットのダウンロード
  • 3.2.2 ターゲットのスキーマ
  • 3.3 データ定義言語クエリ
  • 3.3.1 CREATE TABLE文
  • 3.3.2 ALTER TABLE文
  • 3.3.3 CREATE VIEW文
  • 3.3.4 DESCRIBE文
  • 3.4 データ操作言語クエリ
  • 3.4.1 INSERT文
  • 3.4.2 データのマージ
  • 3.4.3 DELETE文
  • 3.4.4 SELECT文
  • 3.5 DuckDB固有のSQL拡張
  • 3.5.1 SELECTの取り扱い
  • 3.5.2 名前で挿入する
  • 3.5.3 どこからでもエイリアスにアクセスする
  • 3.5.4 関連するすべての列によるグループ化と並べ替え
  • 3.5.5 データのサンプリング
  • 3.5.6 オプションパラメータを持つ関数
  • 3.6 まとめ

第4章 高度な集約とデータ分析

  • 4.1 データ取り込み時の事前集計
  • 4.2 データを要約する
  • 4.3 サブクエリ
  • 4.3.1 式としてのサブクエリ
  • 4.4 グループ化セット
  • 4.5 ウィンドウ関数
  • 4.5.1 パーティションの定義
  • 4.5.2 フレーミング
  • 4.5.3 名前付きウィンドウ
  • 4.5.4 パーティション内の前後の行にアクセスする
  • 4.6 WHERE句の外の条件とフィルタリング
  • 4.6.1 HAVING句の使用
  • 4.6.2 QUALIFY句の使用
  • 4.6.3 FILTER句の使用
  • 4.7 PIVOT文
  • 4.8 ASOF JOINの使用
  • 4.9 テーブル関数の使用
  • 4.10 LATERAL JOINの使用
  • 4.11 まとめ

第5章 永続化なしのデータ探索

  • 5.1 なぜデータを永続化せずにデータベースを使うのか
  • 5.2 ファイルタイプとスキーマの推論
  • 5.2.1 CSVの解析について
  • 5.3 JSONの入れ子(ネスト)構造の解体
  • 5.4 CSVからApache Parquetへの変換
  • 5.5 Parquetファイルの分析とクエリ
  • 5.6 SQLiteや他のデータベースのクエリ
  • 5.7 Excelファイルの操作
  • 5.8 まとめ

第6章 Pythonエコシステムとの統合

  • 6.1 始め方
  • 6.1.1 Pythonパッケージのインストール
  • 6.1.2 データベースコネクションを開く
  • 6.2 リレーショナルAPIの使用
  • 6.2.1 Python APIを使ったCSVデータの取り込み
  • 6.2.2 クエリの組み立て
  • 6.2.3 SQLクエリ
  • 6.3 pandasデータフレームのクエリ
  • 6.4 ユーザー定義関数
  • 6.5 Apache ArrowとPolarsとの相互運用性
  • 6.6 まとめ

第7章 MotherDuck-クラウド上のDuckDB

  • 7.1 MotherDuckの紹介
  • 7.1.1 仕組み
  • 7.1.2 MotherDuckを使用する理由
  • 7.2 MotherDuckの始め方
  • 7.2.1 UI経由でのMotherDuckの使用
  • 7.2.2 トークンベースの認証を使用してDuckDBをMotherDuckに接続する
  • 7.3 MotherDuckを最大限に活用する
  • 7.3.1 MotherDuckへのデータベースのアップロード
  • 7.3.2 MotherDuckでデータベースを作成する
  • 7.3.3 データベースの共有
  • 7.3.4 S3シークレットの管理とS3バケットからのデータのロード
  • 7.3.5 データ取り込みとMotherDuckの使用を最適化する
  • 7.3.6 AIを使用したクエリ
  • 7.3.7 インテグレーション
  • 7.4 まとめ

第8章 DuckDBでデータパイプラインを構築

  • 8.1 データパイプラインとDuckDBの役割
  • 8.2 dltを使ったデータ取り込み
  • 8.2.1 サポートされているソースのインストール
  • 8.2.2 パイプラインの構築
  • 8.2.3 パイプラインのメタデータを探る
  • 8.3 dbtによるデータ変換とモデリング
  • 8.3.1 dbtプロジェクトのセットアップ
  • 8.3.2 ソースを定義する
  • 8.3.3 モデルを使った変換の記述
  • 8.3.4 変換とパイプラインのテスト
  • 8.3.5 すべてのCSVファイルを変換する
  • 8.4 Dagsterによるデータパイプラインのオーケストレーション
  • 8.4.1 アセットの定義
  • 8.4.2 パイプラインの実行
  • 8.4.3 パイプライン内の依存関係を管理する
  • 8.4.4 アセットにおける高度な計算
  • 8.4.5 MotherDuckへのアップロード
  • 8.5 まとめ

第9章 データアプリケーションの構築とデプロイ

  • 9.1 Streamlitを使用したカスタムデータアプリケーションの構築
  • 9.1.1 Streamlitとは何か
  • 9.1.2 アプリの構築
  • 9.1.3 Streamlitコンポーネントの使用
  • 9.1.4 plot.lyを使用したデータの可視化
  • 9.1.5 コミュニティクラウドにアプリをデプロイする
  • 9.2 Apache Supersetを使用したBIダッシュボードの構築
  • 9.2.1 Apache Supersetとは
  • 9.2.2 Supersetのワークフロー
  • 9.2.3 最初のダッシュボードの作成
  • 9.2.4 SQLクエリからデータセットを作成する
  • 9.2.5 ダッシュボードのエクスポートとインポート
  • 9.3 まとめ

第10章 大規模データセットのためのパフォーマンスの考慮事項

  • 10.1 Stack Overflowデータセット全体の読み込みとクエリ
  • 10.1.1 データダンプと抽出
  • 10.1.2 データモデル
  • 10.1.3 CSVファイルデータの探索
  • 10.1.4 DuckDBへのデータのロード
  • 10.1.5 大規模なテーブルに対する高速な探索クエリ
  • 10.1.6 平日の投稿
  • 10.1.7 タグにenumを使用する
  • 10.2 クエリのプランと実行
  • 10.2.1 プランナーと最適化
  • 10.2.2 ランタイムとベクトル化
  • 10.2.3 ExplainとExplain Analyzeによるクエリプランの可視化
  • 10.3 Stack OverflowデータのParquetへのエクスポート
  • 10.4 Parquetファイルからニューヨークタクシーデータセットを探索する
  • 10.4.1 S3アクセスのための認証情報の設定
  • 10.4.2 ファイルタイプの自動推論
  • 10.4.3 Parquetスキーマの探索
  • 10.4.4 ビューの作成
  • 10.4.5 データの分析
  • 10.4.6 タクシーデータセットの活用
  • 10.5 まとめ

第11章 本書のまとめ

  • 11.1 本書で学んだこと
  • 11.2 DuckDBの今後の安定版
  • 11.3 カバーしきれなかった領域
  • 11.4 さらに学ぶには
  • 11.5 DuckDBによるデータエンジニアリングの未来

付録A DuckDBのクライアントAPI

付録B SQL標準に対する便利な拡張

索引