内容説明
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
ローカルで大規模データを高速分析!
画期的データベースの使い方を包括的に解説。
従来のデータ分析ツールはコストが高く、個人や小規模ユーザーには導入・運用が難しい面がありました。DuckDBは「分析処理用SQLite」とも言える画期的なデータベースです。
データをメモリに保存するインメモリDBで、ローカルでギガバイト級データを高い性能で処理できます。主要なOS上で動作、多様なデータソースに対応、手軽に分析を開始できます。
本書は、DuckDBの基本的な使い方から、高度なデータ分析手法までを取り上げています。まずは、コマンドラインでの操作、Pythonエコシステムとのシームレスな統合によるクエリの実行、そしてSQLを用いた効率的な分析タスクの手法を解説。データパイプラインの構築についても掘り下げ、実践的な知識を提供します。
さらに、クラウド上でDuckDBを利用できるMotherDuck、サーバーレス分析プラットフォームについても紹介。大規模データセットを扱う上でのパフォーマンスの考慮事項や、データアプリケーションの構築とデプロイも解説し、DuckDBを最大限に活用するためのノウハウを多数掲載。
■章構成
1章 DuckDB入門
2章 DuckDBを使い始める
3章 SQLクエリの実行
4章 高度な集約とデータ分析
5章 永続化なしのデータ探索
6章 Pythonエコシステムとの統合
7章 MotherDuck―クラウド上のDuckDB
8章 DuckDBでデータパイプラインを構築
9章 データアプリケーションの構築とデプロイ
10章 大規模データセットのためのパフォーマンスの考慮事項
11章 本書のまとめ
付録A DuckDBのクライアントAPI
付録B SQL標準に対する便利な拡張
※本書は『DuckDB in Action』の翻訳書です。
目次
表紙
サンプルコード・正誤表・商標について
献辞
序文
まえがき
謝辞
本書について
著者について
訳者まえがき
目次
第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 まとめ 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標準に対する便利な拡張
索引
翻訳者プロフィール
奥付