メインコンテンツへスキップ
DataStoreを効果的に活用し、最適なパフォーマンスを引き出すには、その遅延評価モデルを理解することが重要です。

遅延評価

DataStore は 遅延評価 を採用しています。操作はすぐには実行されず、記録されたうえで最適化された SQL クエリにコンパイルされます。実行されるのは、実際に結果が必要になったときだけです。

例: 遅延評価と即時評価

遅延評価の利点

  1. クエリ最適化: 複数の操作が、最適化された単一のSQLクエリにまとめられます
  2. フィルタのプッシュダウン: フィルタはデータソース側で適用されます
  3. カラムのプルーニング: 必要なカラムだけが読み込まれます
  4. 決定の遅延: 実行エンジンは実行時に選択できます
  5. プランの確認: 実行前にクエリを確認したり、デバッグしたりできます

実行トリガー

実際の値が必要になった時点で、自動的に実行がトリガーされます:

自動トリガー

例:

遅延評価のままの操作

例:

3段階の実行モデル

DataStore の操作は、3段階の実行モデルに従います。

フェーズ1: SQLクエリの構築 (遅延)

SQLで表現できる操作は蓄積されます:

フェーズ 2: 実行時点

トリガーが発生すると、それまでに蓄積された SQL が実行されます:

フェーズ 3: DataFrame の操作 (該当する場合)

実行後に pandas 固有の操作を続けて行う場合:

実行計画の確認

実行される内容を確認するには、explain() を使用します。
Query
Response
詳細を表示するには verbose=True を指定します:
詳しいドキュメントについては、デバッグ: explain()を参照してください。

キャッシュ

DataStore は、同じクエリの重複実行を避けるために実行結果をキャッシュします。

キャッシュの仕組み

cache の無効化

DataStore を変更する操作が行われると、cache は無効化されます。

cacheの手動制御


SQL と Pandas の操作を組み合わせる

DataStore は、SQL と pandas が混在する操作をインテリジェントに処理します。

SQL互換の操作

これらはSQLに変換されます:
  • filter(), where()
  • select()
  • groupby(), agg()
  • sort(), orderby()
  • limit(), offset()
  • join(), union()
  • distinct()
  • カラム操作 (算術演算、比較、文字列メソッド)

Pandas のみの操作

これらは実行をトリガーし、pandas を使用します。
  • カスタム関数を使った apply()
  • 複雑な集計を伴う pivot_table()
  • stack()unstack()
  • 実行済みの DataFrame に対する操作

ハイブリッドパイプライン


実行エンジンの選択

DataStore では、異なるエンジンを使用して操作を実行できます。

自動モード (既定)

chDB Engine を強制的に使用する

pandasエンジンを強制的に使用する

詳細は、設定: 実行エンジンを参照してください。

パフォーマンスへの影響

良い例: 早めにフィルタする

悪い例: フィルタを後回しにする

良い例:早い段階でカラムを絞り込む

良い例: SQLに処理を任せる


ベストプラクティスの概要

  1. 実行前に処理をまとめる - クエリ全体を組み立ててから、一度だけ実行をトリガーする
  2. 早い段階でフィルタする - ソース側でデータを絞り込む
  3. 必要なカラムだけを選択する - カラムのプルーニングによりパフォーマンスが向上する
  4. explain() を使って実行内容を把握する - 実行前にデバッグする
  5. 集計は SQL に任せる - ClickHouse はこの処理向けに最適化されている
  6. 実行のトリガーを意識する - 意図しない早期実行を避ける
  7. cacheは適切に使う - cacheが無効化されるタイミングを理解する
最終更新日 2026年7月2日