From af43b291e7a2a2fa36bca78c4252be0ec7e79b68 Mon Sep 17 00:00:00 2001 From: Tudor Date: Sun, 12 Jul 2026 21:34:59 +0100 Subject: [PATCH] feat(pipeline): KS2 progress confidence intervals and writing working-towards --- .../transform/models/marts/_marts_schema.yml | 7 +++++ .../models/marts/fact_ks2_performance.sql | 7 +++++ .../transform/models/staging/stg_ees_ks2.sql | 28 +++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/pipeline/transform/models/marts/_marts_schema.yml b/pipeline/transform/models/marts/_marts_schema.yml index fd061be..3ab4044 100644 --- a/pipeline/transform/models/marts/_marts_schema.yml +++ b/pipeline/transform/models/marts/_marts_schema.yml @@ -86,6 +86,13 @@ models: tests: [not_null] - name: year tests: [not_null] + - name: reading_progress_lower_ci + - name: reading_progress_upper_ci + - name: writing_progress_lower_ci + - name: writing_progress_upper_ci + - name: writing_working_towards_pct + - name: maths_progress_lower_ci + - name: maths_progress_upper_ci tests: - unique: column_name: "urn || '-' || year" diff --git a/pipeline/transform/models/marts/fact_ks2_performance.sql b/pipeline/transform/models/marts/fact_ks2_performance.sql index 290e94f..f361e91 100644 --- a/pipeline/transform/models/marts/fact_ks2_performance.sql +++ b/pipeline/transform/models/marts/fact_ks2_performance.sql @@ -15,13 +15,20 @@ select reading_high_pct, reading_avg_score, reading_progress, + reading_progress_lower_ci, + reading_progress_upper_ci, writing_expected_pct, writing_high_pct, writing_progress, + writing_progress_lower_ci, + writing_progress_upper_ci, + writing_working_towards_pct, maths_expected_pct, maths_high_pct, maths_avg_score, maths_progress, + maths_progress_lower_ci, + maths_progress_upper_ci, gps_expected_pct, gps_high_pct, gps_avg_score, diff --git a/pipeline/transform/models/staging/stg_ees_ks2.sql b/pipeline/transform/models/staging/stg_ees_ks2.sql index 7a5f375..9f50b19 100644 --- a/pipeline/transform/models/staging/stg_ees_ks2.sql +++ b/pipeline/transform/models/staging/stg_ees_ks2.sql @@ -39,6 +39,12 @@ pivoted as ( max(case when subject = 'Reading' and breakdown_topic = 'All pupils' and breakdown = 'Total' then {{ safe_numeric('progress_measure_score') }} end) as reading_progress, + max(case when subject = 'Reading' + and breakdown_topic = 'All pupils' and breakdown = 'Total' + then {{ safe_numeric('progress_measure_lower_conf_interval') }} end) as reading_progress_lower_ci, + max(case when subject = 'Reading' + and breakdown_topic = 'All pupils' and breakdown = 'Total' + then {{ safe_numeric('progress_measure_upper_conf_interval') }} end) as reading_progress_upper_ci, max(case when subject = 'Reading' and breakdown_topic = 'All pupils' and breakdown = 'Total' then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as reading_absence_pct, @@ -53,6 +59,15 @@ pivoted as ( max(case when subject = 'Writing' and breakdown_topic = 'All pupils' and breakdown = 'Total' then {{ safe_numeric('progress_measure_score') }} end) as writing_progress, + max(case when subject = 'Writing' + and breakdown_topic = 'All pupils' and breakdown = 'Total' + then {{ safe_numeric('progress_measure_lower_conf_interval') }} end) as writing_progress_lower_ci, + max(case when subject = 'Writing' + and breakdown_topic = 'All pupils' and breakdown = 'Total' + then {{ safe_numeric('progress_measure_upper_conf_interval') }} end) as writing_progress_upper_ci, + max(case when subject = 'Writing' + and breakdown_topic = 'All pupils' and breakdown = 'Total' + then {{ safe_numeric('working_towards_expected_standard_pupil_percent') }} end) as writing_working_towards_pct, max(case when subject = 'Writing' and breakdown_topic = 'All pupils' and breakdown = 'Total' then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as writing_absence_pct, @@ -70,6 +85,12 @@ pivoted as ( max(case when subject = 'Maths' and breakdown_topic = 'All pupils' and breakdown = 'Total' then {{ safe_numeric('progress_measure_score') }} end) as maths_progress, + max(case when subject = 'Maths' + and breakdown_topic = 'All pupils' and breakdown = 'Total' + then {{ safe_numeric('progress_measure_lower_conf_interval') }} end) as maths_progress_lower_ci, + max(case when subject = 'Maths' + and breakdown_topic = 'All pupils' and breakdown = 'Total' + then {{ safe_numeric('progress_measure_upper_conf_interval') }} end) as maths_progress_upper_ci, max(case when subject = 'Maths' and breakdown_topic = 'All pupils' and breakdown = 'Total' then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as maths_absence_pct, @@ -143,13 +164,20 @@ select p.reading_high_pct, p.reading_avg_score, p.reading_progress, + p.reading_progress_lower_ci, + p.reading_progress_upper_ci, p.writing_expected_pct, p.writing_high_pct, p.writing_progress, + p.writing_progress_lower_ci, + p.writing_progress_upper_ci, + p.writing_working_towards_pct, p.maths_expected_pct, p.maths_high_pct, p.maths_avg_score, p.maths_progress, + p.maths_progress_lower_ci, + p.maths_progress_upper_ci, p.gps_expected_pct, p.gps_high_pct, p.gps_avg_score,