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