インプレス[コンピュータ・IT]ムック DuckDB実践入門 PCで使える高速で快適なデータ分析用DB―基本からエコシステム活用まで
インプレス / 2025年08月20日 / 全407ページ
目次
- サンプルコード・正誤表・商標について
- 献辞
- 序文
- まえがき
- 謝辞
- 本書について
- 著者について
- 訳者まえがき
- 目次
- 第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 まとめ
- サンプルコード・正誤表・商標について
- 献辞
- 序文
- まえがき
- 謝辞
- 本書について
- 著者について
- 訳者まえがき
- 目次
- 第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とWindows2.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 まとめ 28
- 第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標準に対する便利な拡張
- 索引
- 翻訳者プロフィール
- 奥付
※このデジタル雑誌には目次に記載されているコンテンツが含まれています。それ以外のコンテンツは、本誌のコンテンツであっても含まれていません のでご注意ください。
※電子版では、紙の雑誌と内容が一部異なる場合や、掲載されないページがある場合があります。