概要表
1. 遅延実行と即時実行
pandas (即時実行)
DataStore (遅延実行)
なぜ重要か
- クエリ最適化: 複数の操作が 1 つの SQL クエリにコンパイルされる
- カラムプルーニング: 必要なカラムだけが読み込まれる
- フィルタのプッシュダウン: フィルタがデータソース側で適用される
- メモリ効率: 必要のないデータは読み込まない
2. 戻り値の型
pandas
DataStore
pandasの型への変換
3. 実行トリガー
遅延実行のままになる操作
4. 行の並び順
pandas
DataStore
rowNumberInAllBlocks() を使用) 。
順序が保持される場合
- ファイルソース (CSV、Parquet、JSON など)
- pandas DataFrame ソース
- フィルタ操作
- カラムの選択
sort()またはsort_values()を明示的に実行した後- 順序を定義する操作 (
nlargest(),nsmallest(),head(),tail())
順序が変わることがある場合
groupby()による集計の後 (順序を一定にしたい場合はsort_values()を使用してください)- 特定の JOIN 種別で
merge()/join()を行った後 - パフォーマンスモード (
config.use_performance_mode()) では、どの操作でも行の順序は保証されません。詳細は パフォーマンスモード を参照してください。
5. inplace パラメータなし
pandas
DataStore
inplace=True はサポートされていません。必ず結果を代入してください。
なぜ inplace はないのでしょうか?
- クエリの構築 (遅延評価)
- スレッドセーフ
- デバッグのしやすさ
- よりクリーンなコード
6. 索引のサポート
pandas
DataStore
DataStore ではソースの違いが重要です
- DataFrame ソース: pandas のインデックスを保持します
- File ソース: シンプルな整数インデックスを使用します
7. 比較時の動作
pandas との比較
equals() を使用する
8. 型推論
pandas
DataStore
明示的なキャスト
9. メモリモデル
pandas
DataStore
10. エラーメッセージ
エラーの発生元の違い
- pandas errors: pandasライブラリに由来
- DataStore errors: chDB または ClickHouse に由来
デバッグのヒント
移行チェックリスト
- import 文を変更する
-
inplace=Trueパラメータを削除する - pandas DataFrame が必要な箇所では、明示的に
to_df()を追加する - 行の順序が重要な場合はソートを追加する
- 比較テストには
to_pandas()を使用する - 実際の使用を想定したデータサイズでテストする