Data connectors
Connectors are declared in sources.yaml and loaded lazily the first time a
query asks for that type. Each backend's heavy dependencies are an optional pip
extra, so you only install what you use. A query's connector= (default main)
chooses which one runs it.
# sources.yaml
main:
type: csv
directory: data
warehouse:
type: postgres
host: ${PG_HOST} # ${ENV_VAR} expansion is supported everywhere
database: analytics
user: ${PG_USER}
password: ${PG_PASSWORD}
The built-in connectors #
| Type | Family | Extra | Page |
|---|---|---|---|
csv |
DuckDB-backed | (core) | CSV |
json |
DuckDB-backed | (core) | JSON |
parquet |
DuckDB-backed | (core) | Parquet |
duckdb |
DuckDB-backed | (core) | DuckDB |
motherduck |
DuckDB-backed | (core) | MotherDuck |
quack |
DuckDB-backed | (core) | Quack |
postgres |
SQL DB-API | dashdown-md[postgres] |
Postgres |
mysql |
SQL DB-API | dashdown-md[mysql] |
MySQL |
mssql |
SQL DB-API | dashdown-md[mssql] |
SQL Server |
snowflake |
SQL DB-API | dashdown-md[snowflake] |
Snowflake |
bigquery |
SQL DB-API | dashdown-md[bigquery] |
BigQuery |
excel |
Tabular | dashdown-md[excel] |
Excel |
sheets |
Tabular | dashdown-md[sheets] |
Google Sheets |
dax |
REST (Fabric/PBI) | dashdown-md[dax] |
DAX / Fabric |
cube |
Semantic (Cube) | dashdown-md[cube] |
Cube |
The csv, json, parquet, duckdb, excel, and sheets connectors all run
SQL on an embedded DuckDB — so files and spreadsheets answer the same SQL as a
real database.
Tip
Third-party connectors ship as separate PyPI packages declaring the
dashdown.connectors entry-point group — no change to the core is needed.