mcpField
C
chdb-datastore

chdb-datastore

github.com/clickhouseデータ・データベース5627.9k 回インストール1 週間前に更新
リポジトリ

chdb-datastore について

ClickHouse を基盤とする遅延実行型の pandas 代替として、chdb DataStore を使うためのスキルです。ファイルやデータベースを慣れた DataFrame 操作で扱いたい Python ユーザー向けで、結果が必要になるまで処理を実行しません。

主な機能

  1. 01pandas 風の DataFrame 操作
  2. 02SQL の遅延実行
  3. 03ファイルとデータベース用コネクター
  4. 04複数ソース間のデータ結合
  5. 05クエリ結果の出力先への書き込み

活用シーン

  1. 01ローカルファイルのデータをフィルタリングおよび集計
  2. 02データベースのレコードとファイルデータの結合
  3. 03集計結果の Parquet への書き込み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/clickhouse/agent-skills --skill chdb-datastore

インストール後、Claude Code で/chdb-datastoreを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

metadata.json
README.md
examples/
examples.md
references/
api-reference.md
connectors.md
scripts/
verify_install.py

詳細

chdb DataStore — pandasをさらに高速に

重要なポイント

# Change this:
import pandas as pd
# To this:
import chdb.datastore as pd
# Everything else stays the same.

DataStoreは、ClickHouseをバックエンドとする遅延評価型のpandas代替ライブラリです。既存のpandasコードは変更せずにそのまま動作します。操作は最適化されたSQLにコンパイルされ、結果が必要になったとき(例:print()、len()、反復処理)にのみ実行されます。

pip install chdb

選択ガイド:適切な方法を選ぶ

1. "I have a file/database and want to analyze it with pandas"
   → DataStore.from_file() / from_mysql() / from_s3() etc.
   → See references/connectors.md

2. "I need to join data from different sources"
   → Create DataStores from each source, use .join()
   → See examples/examples.md #3-5

3. "My pandas code is too slow"
   → import chdb.datastore as pd — change one line, keep the rest

4. "I need raw SQL queries"
   → Use the chdb-sql skill instead

あらゆるデータソースに接続する — 共通のパターン

from datastore import DataStore

# Local file (auto-detects .parquet, .csv, .json, .arrow, .orc, .avro, .tsv, .xml)
ds = DataStore.from_file("sales.parquet")

# Database
ds = DataStore.from_mysql(host="db:3306", database="shop", table="orders", user="root", password="pass")

# Cloud storage
ds = DataStore.from_s3("s3://bucket/data.parquet", nosign=True)

# URI shorthand — auto-detects source type
ds = DataStore.uri("mysql://root:pass@db:3306/shop/orders")

16種類以上のすべてのデータソースとURIスキーム → connectors.md

接続後 — pandas API全体を利用

result = ds[ds["age"] > 25]                                          # filter
result = ds[["name", "city"]]                                        # select columns
result = ds.sort_values("revenue", ascending=False)                  # sort
result = ds.groupby("dept")["salary"].mean()                         # groupby
result = ds.assign(margin=lambda x: x["profit"] / x["revenue"])     # computed column
ds["name"].str.upper()                                               # string accessor
ds["date"].dt.year                                                   # datetime accessor
result = ds1.join(ds2, on="id")                                      # join
result = ds.head(10)                                                 # preview
print(ds.to_sql())                                                   # see generated SQL

209種類のDataFrameメソッドに対応しています。API全体 → api-reference.md

データソースをまたぐ結合 — 最大の特長

from datastore import DataStore

customers = DataStore.from_mysql(host="db:3306", database="crm", table="customers", user="root", password="pass")
orders = DataStore.from_file("orders.parquet")

result = (orders
    .join(customers, left_on="customer_id", right_on="id")
    .groupby("country")
    .agg({"amount": "sum", "rating": "mean"})
    .sort_values("sum", ascending=False))
print(result)

結合の例をもっと見る → examples.md

データの書き込み

source = DataStore.from_mysql(host="db:3306", database="shop", table="orders", user="root", password="pass")
target = DataStore("file", path="summary.parquet", format="Parquet")

target.insert_into("category", "total", "count").select_from(
    source.groupby("category").select("category", "sum(amount) AS total", "count() AS count")
).execute()

トラブルシューティング

問題対処方法
ImportError: No module named 'chdb'pip install chdb
ImportError: cannot import 'DataStore'from datastore import DataStore または from chdb.datastore import DataStore を使用します
データベース接続がタイムアウトするホストにポートを含めます:host="db:3306"(host="db"ではなく)
結合結果が空になるキーの型が一致しているか確認します(両方とも整数、または両方とも文字列)。.to_sql() を使って確認します
想定外の結果になるds.to_sql() を呼び出して、生成されたSQLを確認し、デバッグします
環境の確認python scripts/verify_install.py を実行します(スキルのディレクトリから)

参考資料

注意:このスキルでは、chdb DataStoreの使い方を説明します。 生のSQLクエリには、chdb-sql スキルを使用してください。 chdbのソースコードへの貢献については、プロジェクトのルートにあるCLAUDE.mdを参照してください。

コメント