Case 01 / 04 · 2026
AWS DLT Pipeline
A metadata-driven AWS lakehouse: Finland's open grid API, ingested incrementally and refined by Databricks Delta Live Tables into a governed star schema — provisioned by Terraform, shipped through CI/CD.
- AWS S3
- Databricks
- Delta Live Tables
- Auto Loader
- Delta Lake
- Unity Catalog
- Terraform
- Asset Bundles
- GitHub Actions
- Power BI
01 · The problem
Fingrid — the operator of Finland's national power grid — streams electricity consumption and wind- and solar-generation data through an open REST API. It is high-frequency, time-series, and paginated: useful only once it is ingested reliably, modeled cleanly, and governed.
I built a cloud-native lakehouse on AWS that does exactly that — and does it declaratively. Adding a new dataset is a row of configuration, not a new pipeline; every environment is provisioned and deployed the same way, from code.
02 · Architecture
Ingest
Fingrid Open API
A control table drives an incremental, per-dataset loop — paginated and rate-limit aware — pulling only each source's new time-window.
Land
S3 landing zone
Raw JSON lands per dataset on S3, picked up downstream by Databricks Auto Loader.
Transform
Delta Live Tables medallion
- Bronze Auto Loader · dynamic per-dataset tables · quality expectations
- Silver Cleanse · flatten JSON · typecast — per-dataset logic map
- Gold Auto CDC (SCD-1) into a star schema
Serve
Gold star schema
Conformed facts & dimensions feed Power BI.
- fact_consumption
- fact_generation_forecast
- dim_date · dim_time
- dim_customer_type
→ Power BI
Unity Catalog governs access and lineage across every layer — bronze, silver, and gold.
Trigger
push / PR merge
CI
GitHub Actions
builds the Databricks Asset Bundle
Dev
terraform apply · bundle deploy
w_dev · dev S3 · dev workspace
Test
terraform apply · bundle deploy
w_test · test S3 · test workspace
Prod
terraform apply · bundle deploy
w_prod · prod S3 · prod workspace
03 · How it works
-
Metadata-driven ingestion
A control table holds each source — its id, watermark, and batch size. One job reads the active rows, fans out with a for-each, and pulls only each dataset’s new window from the API (paginated, with rate-limit retries), landing raw JSON on S3.
-
A medallion that builds itself
The Delta Live Tables pipeline generates its tables from config: a bronze table per dataset via Auto Loader, then a silver layer that routes each dataset to its own cleansing logic. Add a dataset and the graph grows — no new code.
-
Auto CDC into a star schema
Intermediate DLT views join the cleaned streams to conformed date and time dimensions, then Auto CDC flows apply SCD-1 upserts into the gold facts and dimensions — fact_consumption and fact_generation_forecast, ready for BI.
-
Governed, multi-env, from code
Terraform provisions the S3 lake; Databricks Asset Bundles package the job and pipeline; GitHub Actions promote them across dev, test, and prod — each an isolated Unity Catalog, so governance and lineage are centralized, not bolted on.
04 · Proof


05 · Outcome
The result is a hands-off, config-driven lakehouse: a new Fingrid dataset is one row in a control table, and it flows — ingested incrementally, refined through bronze, silver, and gold, and modeled into the star schema — all the way to Power BI, governed end to end and reproducible across every environment.
View the code Ask the assistant about this