‹ 首页

chdb-datastore

@clickhouse · 收录于 昨天 · 上游提交 2 天前

Use when the user has tabular data (pandas DataFrame, parquet, csv, Arrow, json) and wants to filter, group, aggregate, join, or speed up slow pandas. Provides chDB DataStore — same pandas API, ClickHouse engine underneath. Also handles reading from S3, MySQL, PostgreSQL, MongoDB, ClickHouse Cloud, Iceberg, Delta Lake as DataFrames and joining across sources. TRIGGER when: user mentions DataFrame, parquet, csv, "fast pandas", "speed up pandas", or cross-source DataFrame joins; user imports `chdb.datastore` or `from datastore import DataStore`. SKIP this skill for raw SQL syntax (use chdb-sql instead), ClickHouse server administration, or non-Python DataStore API work.

适合你,如果经常用 pandas 处理数据且觉得慢,或需要跨多个数据库查询

/ 通过 npx 安装 校验哈希
npx oh-my-skill add clickhouse/agent-skills/chdb-datastore
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- clickhouse/agent-skills/chdb-datastore
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify clickhouse/agent-skills/chdb-datastore
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
498GitHub stars
~1.2K最小装载
~7.6K含声明引用
~8K文本包总量
索引托管

怎么用

商店整理自技能原文 · 版本 6e5458d · 表述以原文为准
它做什么

装上后,Claude 会将你的 pandas 代码转为用 ClickHouse 引擎执行,加快过滤、分组、聚合、连接等操作。还能直接从本地文件、MySQL、S3 等读取数据,并跨源连接。

什么时候触发

当你提到 DataFrame、Parquet、CSV、快速 pandas、跨源连接,或导入 chdb.datastore/DataStore 时触发;或你有表格数据并想过滤、分组等。

装好后可以这样说
自动替换 import 为 chdb.datastore。
生成对应的 pandas API 代码。
技能原文 SKILL.md作者撰写 · Apache-2.0 · 6e5458d

chdb DataStore — It's Just Faster Pandas

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

DataStore is a lazy, ClickHouse-backed pandas replacement. Your existing pandas code works unchanged — but operations compile to optimized SQL and execute only when results are needed (e.g., print(), len(), iteration).

pip install chdb
Decision Tree: Pick the Right Approach
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
Connect to Any Data Source — One Pattern
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")

All 16+ sources and URI schemes → [connectors.md](references/connectors.md)

After Connecting — Full 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 methods supported. Full API → [api-reference.md](references/api-reference.md)

Cross-Source Join — The Killer Feature
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)

More join examples → [examples.md](examples/examples.md)

Writing Data
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()
Troubleshooting

| Problem | Fix | |---------|-----| | ImportError: No module named 'chdb' | pip install chdb | | ImportError: cannot import 'DataStore' | Use from datastore import DataStore or from chdb.datastore import DataStore | | Database connection timeout | Include port in host: host="db:3306" not host="db" | | Join returns empty result | Check key types match (both int or both string); use .to_sql() to inspect | | Unexpected results | Call ds.to_sql() to see the generated SQL and debug | | Environment check | Run python scripts/verify_install.py (from skill directory) |

References
  • [API Reference](references/api-reference.md) — Full DataStore method signatures
  • [Connectors](references/connectors.md) — All 16+ data source connection methods
  • [Examples](examples/examples.md) — 10+ runnable examples with expected output
  • [Verify Install](scripts/verify_install.py) — Environment verification script
  • Official Docs
Note: This skill teaches how to use chdb DataStore. For raw SQL queries, use the chdb-sql skill. For contributing to chdb source code, see CLAUDE.md in the project root.
按 Apache-2.0 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。