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>
23 lines
640 B
SQL
23 lines
640 B
SQL
-- Mart: Deprivation index — one row per URN
|
|
-- Joins school postcode → LSOA → IDACI score
|
|
|
|
with school_postcodes as (
|
|
select
|
|
urn,
|
|
postcode
|
|
from {{ ref('stg_gias_establishments') }}
|
|
where status = 'Open'
|
|
and postcode is not null
|
|
)
|
|
|
|
-- Note: The join between postcode and LSOA requires a postcode-to-LSOA
|
|
-- lookup table. This will be populated by the geocode script or a seed.
|
|
-- For now, this model serves as a placeholder that will be completed
|
|
-- once the IDACI tap provides the postcode→LSOA mapping.
|
|
|
|
select
|
|
i.lsoa_code,
|
|
i.idaci_score,
|
|
i.idaci_decile
|
|
from {{ ref('stg_idaci') }} i
|