feat(pipeline): KS2 progress confidence intervals and writing working-towards

This commit is contained in:
Tudor
2026-07-12 21:34:59 +01:00
parent 5a94f470e1
commit af43b291e7
3 changed files with 42 additions and 0 deletions
@@ -86,6 +86,13 @@ models:
tests: [not_null] tests: [not_null]
- name: year - name: year
tests: [not_null] 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: tests:
- unique: - unique:
column_name: "urn || '-' || year" column_name: "urn || '-' || year"
@@ -15,13 +15,20 @@ select
reading_high_pct, reading_high_pct,
reading_avg_score, reading_avg_score,
reading_progress, reading_progress,
reading_progress_lower_ci,
reading_progress_upper_ci,
writing_expected_pct, writing_expected_pct,
writing_high_pct, writing_high_pct,
writing_progress, writing_progress,
writing_progress_lower_ci,
writing_progress_upper_ci,
writing_working_towards_pct,
maths_expected_pct, maths_expected_pct,
maths_high_pct, maths_high_pct,
maths_avg_score, maths_avg_score,
maths_progress, maths_progress,
maths_progress_lower_ci,
maths_progress_upper_ci,
gps_expected_pct, gps_expected_pct,
gps_high_pct, gps_high_pct,
gps_avg_score, gps_avg_score,
@@ -39,6 +39,12 @@ pivoted as (
max(case when subject = 'Reading' max(case when subject = 'Reading'
and breakdown_topic = 'All pupils' and breakdown = 'Total' and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('progress_measure_score') }} end) as reading_progress, 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' max(case when subject = 'Reading'
and breakdown_topic = 'All pupils' and breakdown = 'Total' and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as reading_absence_pct, 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' max(case when subject = 'Writing'
and breakdown_topic = 'All pupils' and breakdown = 'Total' and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('progress_measure_score') }} end) as writing_progress, 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' max(case when subject = 'Writing'
and breakdown_topic = 'All pupils' and breakdown = 'Total' and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as writing_absence_pct, 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' max(case when subject = 'Maths'
and breakdown_topic = 'All pupils' and breakdown = 'Total' and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('progress_measure_score') }} end) as maths_progress, 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' max(case when subject = 'Maths'
and breakdown_topic = 'All pupils' and breakdown = 'Total' and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as maths_absence_pct, 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_high_pct,
p.reading_avg_score, p.reading_avg_score,
p.reading_progress, p.reading_progress,
p.reading_progress_lower_ci,
p.reading_progress_upper_ci,
p.writing_expected_pct, p.writing_expected_pct,
p.writing_high_pct, p.writing_high_pct,
p.writing_progress, p.writing_progress,
p.writing_progress_lower_ci,
p.writing_progress_upper_ci,
p.writing_working_towards_pct,
p.maths_expected_pct, p.maths_expected_pct,
p.maths_high_pct, p.maths_high_pct,
p.maths_avg_score, p.maths_avg_score,
p.maths_progress, p.maths_progress,
p.maths_progress_lower_ci,
p.maths_progress_upper_ci,
p.gps_expected_pct, p.gps_expected_pct,
p.gps_high_pct, p.gps_high_pct,
p.gps_avg_score, p.gps_avg_score,