feat(dbt): dim_school.inspectorate and ofsted_listed (H4)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
TudorandClaude Opus 5.5 committed 2026-10-13 21:26:42 +01:00
1 parent 6cc135ec58
commit 8e82e2e4cf
6 files changed
+101 -7

No files matched your search

+21 -3
View File
@@ -1,9 +1,10 @@
-- Mart: Canonical school dimension — one row per active URN
-- int_ofsted_latest is only ref()'d inside a conditional block below (it may not
-- exist before the Ofsted pipeline first runs), so declare the dependency
-- explicitly for dbt's DAG.
-- int_ofsted_latest and int_ofsted_listed are only ref()'d inside conditional
-- blocks below (they may not exist before the Ofsted pipeline first runs), so
-- declare the dependencies explicitly for dbt's DAG.
-- depends_on: {{ ref('int_ofsted_latest') }}
-- depends_on: {{ ref('int_ofsted_listed') }}
with schools as (
select * from {{ ref('stg_gias_establishments') }}
@@ -15,6 +16,12 @@ with schools as (
identifier='int_ofsted_latest'
) %}
{% set listed_relation = adapter.get_relation(
database=target.database,
schema='intermediate',
identifier='int_ofsted_listed'
) %}
select
s.urn,
s.local_authority_code * 1000 + s.establishment_number as laestab,
@@ -70,6 +77,14 @@ select
s.status_code,
s.nursery_provision,
s.admissions_policy_code,
-- The inspectorate GIAS names ("ISI" for most independent schools) and
-- whether Ofsted's own data lists the school, inspected or not (audit H4).
s.inspectorate_name as inspectorate,
{% if listed_relation is not none %}
l.urn is not null as ofsted_listed,
{% else %}
null::boolean as ofsted_listed,
{% endif %}
-- Latest Ofsted (populated after monthly Ofsted pipeline runs). The grade
-- still in force and the latest visit, from int_ofsted_latest — never a
@@ -88,6 +103,9 @@ from schools s
{% if ofsted_relation is not none %}
left join {{ ref('int_ofsted_latest') }} o on s.urn = o.urn
{% endif %}
{% if listed_relation is not none %}
left join {{ ref('int_ofsted_listed') }} l on s.urn = l.urn
{% endif %}
-- 1 = Open; 3 = Open, but proposed to close (still operating; drops out when
-- GIAS flips to Closed — marts fully rebuild each run).
where s.status_code in (1, 3)
@@ -14,6 +14,8 @@ unit_tests:
- input: ref('int_ofsted_latest')
rows:
- {urn: 102408, inspection_date: '2025-06-17', overall_effectiveness: null, ungraded_grade: 2, framework: 'Schools - S5', latest_visit_date: '2025-06-17', current_grade: null}
- input: ref('int_ofsted_listed')
rows: []
expect:
rows:
- {urn: 102408, ofsted_grade: null, ofsted_date: '2025-06-17', ofsted_framework: 'Schools - S5'}
@@ -30,6 +32,30 @@ unit_tests:
- input: ref('int_ofsted_latest')
rows:
- {urn: 139888, inspection_date: '2020-03-03', overall_effectiveness: 2, ungraded_grade: null, framework: 'Schools - S5', latest_visit_date: '2025-05-21', current_grade: 2}
- input: ref('int_ofsted_listed')
rows: []
expect:
rows:
- {urn: 139888, ofsted_grade: 2, ofsted_date: '2025-05-21'}
- name: dim_school_carries_inspectorate_and_ofsted_listing
description: >
Audit H4. GIAS names ISI for Abbey College Cambridge; Ofsted lists Abbas
and Templecombe without an inspection; a third school is in neither.
model: dim_school
given:
- input: ref('stg_gias_establishments')
rows:
- {urn: 136083, school_name: 'Abbey College Cambridge', status_code: 1, school_type_code: 11, local_authority_code: 873, phase_code: 4, inspectorate_name: 'ISI'}
- {urn: 150031, school_name: 'Abbas and Templecombe Church School', status_code: 1, school_type_code: 28, local_authority_code: 933, phase_code: 2, inspectorate_name: 'Not applicable'}
- {urn: 1, school_name: 'No data school', status_code: 1, school_type_code: 1, local_authority_code: 312, phase_code: 2, inspectorate_name: null}
- input: ref('int_ofsted_latest')
rows: []
- input: ref('int_ofsted_listed')
rows:
- {urn: 150031}
expect:
rows:
- {urn: 136083, inspectorate: 'ISI', ofsted_listed: false}
- {urn: 150031, inspectorate: 'Not applicable', ofsted_listed: true}
- {urn: 1, inspectorate: null, ofsted_listed: false}