No description
- Python 94.4%
- Nix 3.1%
- TypeScript 1.4%
- Jupyter Notebook 1%
- Shell 0.1%
| .claude/commands | ||
| .opencode/plugins | ||
| dagster_deployment | ||
| dagster_deployment_tests | ||
| docs | ||
| plans | ||
| queries | ||
| scripts | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| DATASETS.md | ||
| flake.lock | ||
| flake.nix | ||
| pyproject.toml | ||
| README.md | ||
| SOURCES.md | ||
| uv.lock | ||
dagster-etl
Dagster pipeline for ingesting open EU datasets into a local data lake (/mnt/pool/data/lake).
Conventions
Country codes: always ISO 3166-1 alpha-2 (DE, FR, GR). TED notices use alpha-3 — convert at ingest. NUTS codes share the same alpha-2 prefix (LEFT(nuts_code, 2)).
Hive partitioning: use key=value directory names for all partitioned assets (year=2024/, country=DE/). Always pass hive_partitioning=true when reading with DuckDB.
Development
nix develop # activate shell (sets LD_LIBRARY_PATH, syncs uv venv)
dg dev # start Dagster UI at http://localhost:3000
dagster-etl-run # run main_job as a one-shot module
Further reading
DATASETS.md— all datasets in the lake and candidates for ingestionSOURCES.md— external source APIs and access detailsdocs/geo-partitioning-plan.md— country/region hive partitioning strategy for Overture datasets