Skip to main content
skill CX Codex

chdb-datastore — Claude Code skill: what it does, how to install

Guides the AI agent on speeding up pandas workflows with chDB and ClickHouse. Useful for heavy dataframes, Parquet files, and cross-source joins.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add ClickHouse/agent-skills --skill chdb-datastore -a claude-code
Open on GitHub

What chdb-datastore does

This skill teaches coding agents how to use chdb.datastore as a lazy, ClickHouse-backed drop-in replacement for pandas. Standard pandas syntax remains intact, but operations compile into SQL queries that run only when data is displayed or iterated. DataStore supports 209 DataFrame methods alongside local formats like Parquet and CSV.

A key capability is querying across separate storage systems in a single pipeline. You can read a local file alongside a remote MySQL or S3 table and combine them using a standard dataframe join() call.

The environment requires Python 3.9+ running on macOS or Linux, with chdb installed via pip. It is strictly meant for the DataStore DataFrame API; tasks requiring raw SQL queries should use chdb-sql instead.

What it helps with

  • accelerate slow pandas grouping and filtering workflows
  • join data between local Parquet files and remote MySQL tables
  • read datasets directly from S3 or cloud storage into DataFrames
  • inspect compiled ClickHouse queries with the to_sql method

Example prompts for the agent

  • Rewrite this slow pandas script to use chdb.datastore instead
  • Join orders.parquet with our MySQL customers table using DataStore
  • Show me how to filter a large dataset with chDB and inspect the generated SQL

How to install chdb-datastore

1Skills CLI (Vercel)

npx skills add ClickHouse/agent-skills --skill chdb-datastore -a claude-code

2Manually: put the files in place

~/.claude/skills/chdb-datastore/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/chdb-datastore/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about chdb-datastore

How do I install chdb-datastore in Claude Code?

Run the command npx skills add ClickHouse/agent-skills --skill chdb-datastore -a claude-code.

What does chdb-datastore do?

It provides instructions for using chDB DataStore as an embedded ClickHouse engine with the pandas API. It compiles dataframe operations into SQL and runs them lazily.

When should I use chdb-sql instead of chdb-datastore?

Use chdb-datastore for pandas DataFrame code and cross-source joins. If your task requires raw SQL query syntax or server administration, use chdb-sql instead.

Source text

SKILL.md · Apache-2.0
---
name: chdb-datastore
description: >-
  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.
license: Apache-2.0
compatibility: Requires Python 3.9+, macOS or Linux. pip install chdb.
metadata:
  author: chdb-io
  version: "4.1"
  homepage: https://clickhouse.com/docs/chdb
---

# chdb DataStore — It's Just Faster Pandas

## The Key Insight

```python
# 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).

```bash
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

```python
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

```python
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

```python
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

```python
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](https://clickhouse.com/docs/chdb)

> 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.

© chdb-io · Apache-2.0 · ClickHouse/agent-skills

Similar skills

All skills for Data and databases →

From the same set8

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor