Skip to content

Commit 579f066

Browse files
feature/model_creation_stu_cte_prog_assoc (#140)
* pulled in student cte program associations base and stage models * made requested updates from pull request * added base and stage models to yaml file * updated base/stage yaml files with additional information * updated with remaining columns from v5.2 handbook * created model that flattens program services * removed var from new models * updated all cte models * updated yaml files to enable variables * updated change log with creation of base, stage and secondary stage model for StudentCTEProgramAssociation
1 parent 95ee2bc commit 579f066

6 files changed

Lines changed: 128 additions & 0 deletions

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Unreleased
2+
23
## New features
4+
- Add base/stage model for `StudentCTEProgramAssociation`
5+
- Add stage model `stg_ef3__stu_cte__program_services` to flatten program services list for `StudentCTEProgramAssociation`
6+
37
## Under the hood
48
## Fixes
59
- Add handling of multiple academic subjects per course for DS 5.0 compatibility; new `stg_ef3__courses_academic_subjects` model and new `v_academic_subjects` columns in `base_ef3__courses` and `stg_ef3__courses` models.

models/staging/edfi_3/base/_edfi_3__base.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@ models:
123123
- name: base_ef3__student_contact_associations
124124
config:
125125
tags: ['core']
126+
- name: base_ef3__student_cte_program_associations
127+
config:
128+
tags: ['cte']
129+
enabled: "{{ var('src:program:cte:enabled', True) }}"
126130
- name: base_ef3__student_discipline_incident_associations
127131
config:
128132
tags: ['discipline']
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
with source_stu_programs as (
2+
{{ source_edfi3('student_cte_program_associations') }}
3+
),
4+
5+
renamed as (
6+
select
7+
-- generic columns
8+
tenant_code,
9+
api_year,
10+
pull_timestamp,
11+
last_modified_timestamp,
12+
file_row_number,
13+
filename,
14+
is_deleted,
15+
16+
v:id::string as record_guid,
17+
ods_version,
18+
data_model_version,
19+
v:studentReference:studentUniqueId::int as student_unique_id,
20+
v:educationOrganizationReference:educationOrganizationId::int as ed_org_id,
21+
v:educationOrganizationReference:link:rel::string as ed_org_type,
22+
v:programReference:educationOrganizationId::int as program_ed_org_id,
23+
v:beginDate::date as program_enroll_begin_date,
24+
v:endDate::date as program_enroll_end_date,
25+
v:programReference:programName::string as program_name,
26+
27+
v:nonTraditionalGenderStatus::boolean as non_traditional_gender_status,
28+
v:privateCTEProgram::boolean as private_cte_program,
29+
v:ServedOutsideOfRegularSession::boolean as served_outside_of_regular_session,
30+
31+
-- descriptors
32+
{{ extract_descriptor('v:technicalSkillsAssessmentDescriptor') }} as technical_skills_assessment,
33+
{{ extract_descriptor('v:programReference:programTypeDescriptor') }} as program_type,
34+
{{ extract_descriptor('v:ReasonExitedDescriptor:ReasonExitedDescriptorId') }} as reason_exited,
35+
36+
-- references
37+
v:educationOrganizationReference as education_organization_reference,
38+
v:programReference as program_reference,
39+
v:studentReference as student_reference,
40+
41+
-- lists
42+
v:cteProgramServices as v_cte_program_services,
43+
v:ctePrograms as v_cte_programs,
44+
v:programParticipationStatuses as v_program_participation_statuses,
45+
v:services as v_services,
46+
47+
-- edfi extensions
48+
v:_ext as v_ext
49+
50+
from source_stu_programs
51+
)
52+
53+
select * from renamed

models/staging/edfi_3/stage/_edfi_3__stage.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,11 @@ models:
536536
- name: stg_ef3__staffs__identification_codes
537537
config:
538538
tags: ['core']
539+
540+
- name: stg_ef3__stu_cte__program_services
541+
config:
542+
tags: ['cte']
543+
enabled: "{{ var('src:program:cte:enabled', True) }}"
539544

540545
- name: stg_ef3__stu_ed_org__addresses
541546
config:
@@ -664,6 +669,11 @@ models:
664669
- name: k_contact
665670
tests:
666671
*ref_k_contact
672+
673+
- name: stg_ef3__student_cte_program_associations
674+
config:
675+
tags: ['cte']
676+
enabled: "{{ var('src:program:cte:enabled', True) }}"
667677

668678
- name: stg_ef3__student_discipline_incident_behavior_associations
669679
config:
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
with stage_stu_programs as (
2+
select * from {{ ref('stg_ef3__student_cte_program_associations') }}
3+
),
4+
5+
flattened as (
6+
select
7+
tenant_code,
8+
api_year,
9+
k_student,
10+
k_student_xyear,
11+
k_program,
12+
k_lea,
13+
k_school,
14+
15+
program_enroll_begin_date,
16+
program_enroll_end_date,
17+
{{ extract_descriptor('value:cteProgramServiceDescriptor::string') }} as program_service,
18+
value:primaryIndicator::boolean as primary_indicator,
19+
value:serviceBeginDate::date as service_begin_date,
20+
value:serviceEndDate::date as service_end_date,
21+
value:cipCode::string as cip_code,
22+
23+
-- edfi extensions
24+
value:_ext as v_ext
25+
26+
from stage_stu_programs,
27+
lateral flatten(input => parse_json(v_cte_program_services))
28+
)
29+
30+
select * from flattened
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
with base_stu_programs as (
2+
select * from {{ ref('base_ef3__student_cte_program_associations') }}
3+
),
4+
5+
keyed as (
6+
select
7+
{{ gen_skey('k_student') }},
8+
{{ gen_skey('k_student_xyear') }},
9+
{{ gen_skey('k_program') }},
10+
{{ edorg_ref(annualize=False) }},
11+
api_year as school_year,
12+
base_stu_programs.*
13+
{{ extract_extension(model_name=this.name, flatten=True) }}
14+
15+
from base_stu_programs
16+
),
17+
18+
deduped as (
19+
{{ dbt_utils.deduplicate(
20+
relation='keyed',
21+
partition_by='k_student, k_program, program_enroll_begin_date, school_year',
22+
order_by='last_modified_timestamp desc, pull_timestamp desc'
23+
) }}
24+
)
25+
26+
select * from deduped
27+
where not is_deleted

0 commit comments

Comments
 (0)