Getting StartedQuick Start

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

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

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