chdb-datastore

โดย clickhouse

DataStore เป็นตัวแทน pandas แบบขี้เกียจที่ใช้ ClickHouse โค้ด pandas ที่มีอยู่ของคุณทำงานได้โดยไม่เปลี่ยนแปลง — แต่การดำเนินการจะถูกคอมไพล์เป็น SQL ที่ปรับให้เหมาะสมและดำเนินการเฉพาะเมื่อต้องการผลลัพธ์ (เช่น print() , len() , การวนซ้ำ)

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

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

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

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

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

ProblemFix
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 timeoutInclude port in host: host="db:3306" not host="db"
Join returns empty resultCheck key types match (both int or both string); use .to_sql() to inspect
Unexpected resultsCall ds.to_sql() to see the generated SQL and debug
Environment checkRun python scripts/verify_install.py (from skill directory)

References

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.

Skills เพิ่มเติมจาก clickhouse

chdb-sql
clickhouse
รัน ClickHouse SQL โดยตรงใน Python — ไม่ต้องใช้เซิร์ฟเวอร์ ค้นหาไฟล์ในเครื่อง ฐานข้อมูลระยะไกล และคลาวด์สตอเรจด้วยพลังของ ClickHouse SQL อย่างเต็มรูปแบบ
official
clickhouse-architecture-advisor
clickhouse
ต้องใช้เมื่อออกแบบสถาปัตยกรรม ClickHouse เลือกระหว่างรูปแบบการนำเข้าข้อมูลหรือการสร้างแบบจำลอง หรือแปลแนวปฏิบัติที่ดีที่สุดไปสู่ระบบที่เฉพาะเจาะจงกับปริมาณงาน…
official
clickhouse-best-practices
clickhouse
กฎแนวปฏิบัติที่ดีที่สุดของ ClickHouse จำนวน 28 ข้อ จัดตามการออกแบบสคีมา การปรับแต่งคิวรี และกลยุทธ์การนำเข้าข้อมูล ครอบคลุมสามด้านสำคัญ: การเลือกคีย์หลักและชนิดข้อมูล (การตัดสินใจออกแบบที่ไม่สามารถเปลี่ยนแปลงได้), การปรับแต่ง JOIN และคิวรี, และการทำแบทช์อินเสิร์ตพร้อมหลีกเลี่ยงมิวเทชัน รวมถึงกฎ 28 ข้อที่จัดลำดับตามผลกระทบ โดยกฎการออกแบบสคีมาและการปรับแต่งคิวรีถูกทำเครื่องหมายว่าสำคัญมาก (CRITICAL) เนื่องจากกลไกการจัดเก็บแบบคอลัมน์และดัชนีแบบกระจัดกระจายของ ClickHouse มีขั้นตอนการตรวจสอบที่มีโครงสร้างสำหรับ...
official
clickhousectl-cloud-deploy
clickhouse
ใช้เมื่อผู้ใช้ต้องการปรับใช้ ClickHouse ไปยังคลาวด์ ไปสู่ระบบผลิต ใช้ ClickHouse Cloud โฮสต์บริการ ClickHouse ที่มีการจัดการ หรือย้ายจากระบบภายในเครื่อง…
official
clickhousectl-local-dev
clickhouse
ใช้เมื่อผู้ใช้ต้องการสร้างแอปพลิเคชันด้วย ClickHouse, ตั้งค่าสภาพแวดล้อมการพัฒนา ClickHouse ในเครื่อง, ติดตั้ง ClickHouse, สร้างเซิร์ฟเวอร์ในเครื่อง,…
official
setup
clickhouse
แนะนำผู้ใช้ในการตั้งค่าการเชื่อมต่อเซิร์ฟเวอร์ ClickHouse MCP ที่มาพร้อมกับปลั๊กอินนี้ ใช้เมื่อผู้ใช้ติดตั้งปลั๊กอินครั้งแรกหรือพบปัญหา…
official
clickhouse-js-node-coding
clickhouse
อ้างอิง: https://clickhouse.com/docs/integrations/javascript
official
clickhouse-js-node-troubleshooting
clickhouse
อ้างอิง: https://clickhouse.com/docs/integrations/javascript
official