feat(pipeline): add Meltano + dbt + Airflow ELT pipeline scaffold
All checks were successful
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 35s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 1m9s
Build and Push Docker Images / Build Integrator (push) Successful in 56s
Build and Push Docker Images / Build Kestra Init (push) Successful in 32s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 1s
All checks were successful
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 35s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 1m9s
Build and Push Docker Images / Build Integrator (push) Successful in 56s
Build and Push Docker Images / Build Kestra Init (push) Successful in 32s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 1s
Replaces the hand-rolled integrator with a production-grade ELT pipeline using Meltano (Singer taps), dbt Core (medallion architecture), and Apache Airflow (orchestration). Adds Typesense for search and PostGIS for geospatial queries. - 6 custom Singer taps (GIAS, EES, Ofsted, Parent View, FBIT, IDACI) - dbt project: 12 staging, 5 intermediate, 12 mart models - 3 Airflow DAGs (daily/monthly/annual schedules) - Typesense sync + batch geocoding scripts - docker-compose: add Airflow, Typesense; upgrade to PostGIS - Portainer stack definition matching live deployment topology Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
19
pipeline/transform/models/marts/dim_location.sql
Normal file
19
pipeline/transform/models/marts/dim_location.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
-- Mart: School location dimension — one row per URN, PostGIS-enabled
|
||||
-- The geom column is populated by a post-hook or the geocode script.
|
||||
|
||||
select
|
||||
s.urn,
|
||||
s.address_line1,
|
||||
s.address_line2,
|
||||
s.town,
|
||||
s.county,
|
||||
s.postcode,
|
||||
s.local_authority_code,
|
||||
s.local_authority_name,
|
||||
s.parliamentary_constituency,
|
||||
s.urban_rural,
|
||||
s.easting,
|
||||
s.northing
|
||||
from {{ ref('stg_gias_establishments') }} s
|
||||
where s.status = 'Open'
|
||||
and s.postcode is not null
|
||||
Reference in New Issue
Block a user