メインコンテンツへスキップ
DataStore は、chDB の pandas 互換 API です。使い慣れた pandas DataFrame インターフェイスと SQL クエリ最適化の強みを組み合わせることで、pandas スタイルのコードを記述しながら ClickHouse のパフォーマンスを得られます。

主な機能

  • Pandas互換性: 209個の pandas DataFrame メソッド、56個の .str メソッド、42以上の .dt メソッド
  • SQL 最適化: 操作は自動的に最適化された SQL クエリにコンパイルされます
  • 遅延評価: 結果が必要になるまで操作の実行が保留されます
  • 630以上の API メソッド: データ操作に対応する包括的な API
  • ClickHouse 拡張機能: pandas では利用できない追加のアクセサ (.arr.json.url.ip.geo)

アーキテクチャ

DataStore は、遅延評価デュアルエンジン実行 を採用しています。
  1. 遅延オペレーションチェーン: 操作は記録されますが、すぐには実行されません
  2. スマートなエンジン選択: QueryPlanner が各セグメントを最適なエンジンに振り分けます (SQL には chDB、複雑な処理には Pandas)
  3. 中間キャッシュ: 各ステップの結果をキャッシュすることで、反復的な探索を高速化します
詳しくは 実行モデル を参照してください。

Pandasからのワンライナーでの移行

# 変更前 (pandas)
import pandas as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()

# 変更後 (DataStore) - インポートを変更するだけ!
from chdb import datastore as pd
df = pd.read_csv("data.csv")
result = df[df['age'] > 25].groupby('city')['salary'].mean()
既存の pandas コードは変更不要でそのまま動作しますが、実行は ClickHouse engine 上で行われます。

パフォーマンス比較

DataStore は pandas と比べて大幅に高速で、特に集約処理や複雑なパイプラインで高い効果を発揮します。
操作PandasDataStore高速化率
GroupBy count347ms17ms19.93x
複雑なパイプライン2,047ms380ms5.39x
Filter+Sort+Head1,537ms350ms4.40x
GroupBy agg406ms141ms2.88x
1,000万行でのベンチマークです。詳細は ベンチマークスクリプトPerformance Guide を参照してください。

DataStore を使うべき場合

次のような場合は DataStore を使用してください。
  • 大規模なデータセット (数百万行) を扱う場合
  • 集計や groupby 操作を行う場合
  • ファイル、データベース、またはクラウドストレージのデータをクエリする場合
  • 複雑なデータパイプラインを構築する場合
  • より高いパフォーマンスで pandas API を使いたい場合
次のような場合は raw SQL API を使用してください。
  • SQL を直接書きたい場合
  • クエリの実行を細かく制御する必要がある場合
  • pandas API では提供されていない ClickHouse 固有の機能を使う場合

機能比較

FeaturePandasPolarsDuckDBDataStore
Pandas API 互換性-一部なし完全
遅延評価なしありありあり
SQL クエリのサポートなしありありあり
ClickHouse 関数なしなしなしあり
String/DateTime アクセサありありなしあり + 拡張機能
Array/JSON/URL/IP/Geoなし一部なしあり
ファイルへの直接クエリなしありありあり
クラウドストレージのサポートなし限定的ありあり

API 統計

カテゴリ件数対応範囲
DataFrame メソッド209pandas の 100%
Series.str アクセサ56pandas の 100%
Series.dt アクセサ42+100% 以上 (ClickHouse 独自の拡張を含む)
Series.arr アクセサ37ClickHouse 固有
Series.json アクセサ13ClickHouse 固有
Series.url アクセサ15ClickHouse 固有
Series.ip アクセサ9ClickHouse 固有
Series.geo アクセサ14ClickHouse 固有
API メソッド総数630+-

はじめに

API リファレンス

高度なトピック

設定とデバッグ

Pandas ユーザーガイド

簡単な使用例

from chdb import datastore as pd

# 様々なソースからデータを読み込む
ds = pd.read_csv("sales.csv")
# または: ds = pd.DataStore.uri("s3://bucket/sales.parquet")
# または: ds = pd.DataStore.from_mysql("mysql://user:pass@host/db/table")

# 使い慣れた pandas 操作 - 自動的に SQL へ最適化される
result = (ds
    .filter(ds['amount'] > 1000)           # WHERE amount > 1000
    .groupby('region')                      # GROUP BY region
    .agg({'amount': ['sum', 'mean']})       # SUM(amount), AVG(amount)
    .sort_values('sum', ascending=False)    # ORDER BY sum DESC
    .head(10)                               # LIMIT 10
)

# 生成された SQL を確認する
print(result.to_sql())

# 実行して結果を取得する
df = result.to_df()  # pandas DataFrame を返す

次のステップ

最終更新日 2026年6月10日