遅延評価
例: 遅延評価と即時評価
遅延評価の利点
- クエリ最適化: 複数の操作が、最適化された単一のSQLクエリにまとめられます
- フィルタのプッシュダウン: フィルタはデータソース側で適用されます
- カラムのプルーニング: 必要なカラムだけが読み込まれます
- 決定の遅延: 実行エンジンは実行時に選択できます
- プランの確認: 実行前にクエリを確認したり、デバッグしたりできます
実行トリガー
自動トリガー
例:
遅延評価のままの操作
例:
3段階の実行モデル
フェーズ1: SQLクエリの構築 (遅延)
フェーズ 2: 実行時点
フェーズ 3: DataFrame の操作 (該当する場合)
実行計画の確認
explain() を使用します。
Query
Response
verbose=True を指定します:
キャッシュ
キャッシュの仕組み
cache の無効化
cacheの手動制御
SQL と Pandas の操作を組み合わせる
SQL互換の操作
filter(),where()select()groupby(),agg()sort(),orderby()limit(),offset()join(),union()distinct()- カラム操作 (算術演算、比較、文字列メソッド)
Pandas のみの操作
- カスタム関数を使った
apply() - 複雑な集計を伴う
pivot_table() stack()、unstack()- 実行済みの DataFrame に対する操作
ハイブリッドパイプライン
実行エンジンの選択
自動モード (既定)
chDB Engine を強制的に使用する
pandasエンジンを強制的に使用する
パフォーマンスへの影響
良い例: 早めにフィルタする
悪い例: フィルタを後回しにする
良い例:早い段階でカラムを絞り込む
良い例: SQLに処理を任せる
ベストプラクティスの概要
- 実行前に処理をまとめる - クエリ全体を組み立ててから、一度だけ実行をトリガーする
- 早い段階でフィルタする - ソース側でデータを絞り込む
- 必要なカラムだけを選択する - カラムのプルーニングによりパフォーマンスが向上する
explain()を使って実行内容を把握する - 実行前にデバッグする- 集計は SQL に任せる - ClickHouse はこの処理向けに最適化されている
- 実行のトリガーを意識する - 意図しない早期実行を避ける
- cacheは適切に使う - cacheが無効化されるタイミングを理解する