Quick Start
Query any connected data source — from the terminal, a Python notebook, or inside an AI agent. Pick the integration that fits your workflow, then follow the steps below to authenticate and run your first query.
Fast path: create, load, and query
hotdata databases create \
--name airbnb \
--table listings
hotdata databases load airbnb.listings \
--url https://hotdata.dev/data/sf-airbnb-listings.parquet
hotdata query \
"SELECT COUNT(*) AS total_rows FROM default.public.listings" \
--database airbnb
1) Install the CLI
Install walkthrough (YouTube):
brew install hotdata-dev/tap/cli
Verify the installation:
hotdata --help
2) Authenticate
Authenticate via browser:
hotdata auth
A browser window will open for you to sign in and authorize the CLI. Verify you're logged in:
hotdata auth status
3) Managed databases
Managed databases are Hotdata-owned catalogs you populate with parquet files. Create them on demand, load data, query immediately, and delete when done.
Managed database tutorial (YouTube):
Create a database and declare the tables you plan to load:
hotdata databases create \
--name mydb \
--table orders \
--table customers
Load a parquet file from a local path or URL:
# From a local file
hotdata databases load mydb.orders \
--file orders.parquet
# From a URL
hotdata databases load mydb.orders \
--url https://hotdata.dev/data/sf-airbnb-listings.parquet
Query the loaded table — managed tables are always addressed as default.<schema>.<table>:
hotdata query \
"SELECT * FROM default.public.orders LIMIT 10" \
--database mydb
List databases and their tables:
hotdata databases list
hotdata databases tables mydb
Delete a table or the whole database when you're done:
hotdata databases tables delete --database mydb orders
hotdata databases delete mydb
4) Query your data
Basic query
hotdata query "SELECT 1 AS num" --database mydb
Optional flags: --database <name_or_id> to scope to a managed database, -o table|json|csv for output format.
Analytical functions
Window functions for rankings, running totals, and row comparisons:
hotdata query "
SELECT id, amount,
sum(amount) OVER (
ORDER BY id
ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW
) AS running_total
FROM default.public.orders
LIMIT 10
" --database mydb
hotdata query "
SELECT date, symbol, price,
lag(price) OVER (
PARTITION BY symbol
ORDER BY date
) AS prev_price
FROM default.public.stock_prices
" --database mydb
Full-text search
Requires a full-text index on the text column:
hotdata search "machine learning" \
--table conn.public.articles \
--column body \
--select id,title,body \
--limit 10
Vector search
Requires a vector index. The server resolves the embedding model from the index metadata:
Vector search demo (YouTube):
hotdata search "documents about machine learning" \
--table conn.public.documents \
--column body \
--type vector \
--limit 10
Equivalent SQL when you already have a query vector:
hotdata query "
SELECT id, title,
l2_distance(embedding, ARRAY[0.1, -0.2, 0.5]) AS dist
FROM default.public.documents
ORDER BY dist ASC LIMIT 10
" --database mydb
For cosine similarity, use cosine_distance; for inner product, use negative_dot_product.
See also
- CLI Reference — Full CLI documentation
- Agent Skills — Let Claude Code and Cursor run hotdata commands for you
- API Reference — HTTP API for automation and integrations
- Data Sources — Supported connection types