chdb-datastore

DataStore là một giải pháp thay thế pandas lười biếng, dựa trên ClickHouse. Mã pandas hiện tại của bạn hoạt động không thay đổi — nhưng các thao tác được biên dịch thành SQL tối ưu hóa và chỉ thực thi khi cần kết quả (ví dụ: print(), len(), lặp).

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.

Thêm skills từ clickhouse

clickhouse-best-practices
clickhouse
28 quy tắc thực hành tốt nhất cho ClickHouse được tổ chức theo thiết kế lược đồ, tối ưu hóa truy vấn và chiến lược nhập dữ liệu. Bao gồm ba lĩnh vực quan trọng: lựa chọn khóa chính và kiểu dữ liệu (các quyết định thiết kế không thể thay đổi), tối ưu hóa JOIN và truy vấn, cũng như gộp lô chèn và tránh đột biến. Bao gồm 28 quy tắc được ưu tiên theo mức độ tác động, với các quy tắc thiết kế lược đồ và tối ưu hóa truy vấn được đánh dấu QUAN TRỌNG do cơ chế lưu trữ cột và chỉ mục thưa của
official
clickhouse-js-node-coding
clickhouse
Write idiomatic application code with the ClickHouse Node.js client (`@clickhouse/client`). Use this skill whenever a user is *building* against the Node.js…
official
clickhousectl-cloud-deploy
clickhouse
Sử dụng khi người dùng muốn triển khai ClickHouse lên đám mây, chuyển sang môi trường sản xuất, sử dụng ClickHouse Cloud, lưu trữ dịch vụ ClickHouse được quản lý, hoặc di chuyển từ hệ thống cục bộ…
official
clickstack-otel-collector
clickhouse
Use when a user wants to wire an OpenTelemetry collector into a Managed ClickStack service on ClickHouse Cloud, either by deploying a new local collector…
official
infra-clickhouse
clickhouse
Sets up and manages ClickHouse using the clickhousectl CLI — installs and runs a local ClickHouse server for development, and creates managed ClickHouse Cloud…
official
infra-postgres
clickhouse
Sets up and manages Postgres using the clickhousectl CLI — runs a local Docker-backed Postgres for development, and creates and operates managed ClickHouse…
official
clickhouse-best-practices
clickhouse
PHẢI SỬ DỤNG khi xem xét lược đồ ClickHouse, truy vấn hoặc cấu hình. Chứa 31 quy tắc PHẢI được kiểm tra trước khi đưa ra khuyến nghị. Luôn đọc…
official
setup
clickhouse
Hướng dẫn người dùng thiết lập kết nối máy chủ ClickHouse MCP đi kèm với plugin này. Sử dụng khi người dùng cài đặt plugin lần đầu hoặc gặp sự cố…
official