Skip to content

Commit 95ee2bc

Browse files
authored
Fix/Support multiple subjects per course in DS 5.0 (#139)
* Add staging model with flattened academic subjects per course for DS 5 * Fix minimum/maximum credits type to float from int According to the Ed-Fi docs, `MaximumAvailableCredits`, `MaximumAvailableCreditsConversion`, `MinimumAvailableCredits`, and `MinimumAvailableCreditsConversion` should all be decimal types, but other edu_edfi_source models (e.g. for course transcripts) keep track of similar fields as floats. Also, adjust indents for surrounding lines to maintain visual alignment. * Document changes in CHANGELOG.md * Move unreleased changes to right section in changelog
1 parent b087f49 commit 95ee2bc

3 files changed

Lines changed: 29 additions & 12 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
## New features
33
## Under the hood
44
## Fixes
5+
- 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.
6+
- Correctly cast minimum and maximum credits for courses to float instead of int.
57

68

79
# edu_edfi_source v0.4.9

models/staging/edfi_3/base/base_ef3__courses.sql

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@ renamed as (
1515
data_model_version,
1616
v:educationOrganizationReference:educationOrganizationId::int as ed_org_id,
1717
v:educationOrganizationReference:link:rel::string as ed_org_type,
18-
v:courseCode::string as course_code,
19-
v:courseTitle::string as course_title,
20-
v:courseDescription::string as course_description,
21-
v:dateCourseAdopted::date as date_course_adopted,
22-
v:highSchoolCourseRequirement::boolean as is_high_school_course_requirement,
23-
v:maxCompletionsForCredit::int as max_completions_for_credit,
24-
v:maximumAvailableCreditConversion::int as maximum_available_credit_conversion,
25-
v:maximumAvailableCredits::int as maximum_available_credits,
26-
v:minimumAvailableCreditConversion::int as minimum_available_credit_conversion,
27-
v:minimumAvailableCredits::int as minimum_available_credits,
28-
v:numberOfParts::int as number_of_parts,
29-
v:timeRequiredForCompletion::int as time_required_for_completion,
18+
v:courseCode::string as course_code,
19+
v:courseTitle::string as course_title,
20+
v:courseDescription::string as course_description,
21+
v:dateCourseAdopted::date as date_course_adopted,
22+
v:highSchoolCourseRequirement::boolean as is_high_school_course_requirement,
23+
v:maxCompletionsForCredit::int as max_completions_for_credit,
24+
v:maximumAvailableCreditConversion::float as maximum_available_credit_conversion,
25+
v:maximumAvailableCredits::float as maximum_available_credits,
26+
v:minimumAvailableCreditConversion::float as minimum_available_credit_conversion,
27+
v:minimumAvailableCredits::float as minimum_available_credits,
28+
v:numberOfParts::int as number_of_parts,
29+
v:timeRequiredForCompletion::int as time_required_for_completion,
3030
{{ extract_descriptor('v:academicSubjectDescriptor::string') }} as academic_subject,
3131
{{ extract_descriptor('v:careerPathwayDescriptor::string') }} as career_pathway,
3232
{{ extract_descriptor('v:courseDefinedByDescriptor::string') }} as course_defined_by,
@@ -42,6 +42,7 @@ renamed as (
4242
v:learningStandards as v_learning_standards,
4343
v:levelCharacteristics as v_level_characteristics,
4444
v:offeredGradeLevels as v_offered_grade_levels,
45+
v:academicSubjects as v_academic_subjects,
4546

4647
-- edfi extensions
4748
v:_ext as v_ext
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
with stg_courses as (
2+
select * from {{ ref('stg_ef3__courses') }}
3+
),
4+
flattened as (
5+
select
6+
tenant_code,
7+
api_year,
8+
k_course,
9+
{{ extract_descriptor('value:academicSubjectDescriptor::string') }} as academic_subject
10+
from stg_courses,
11+
lateral flatten(input => v_academic_subjects)
12+
)
13+
select *
14+
from flattened

0 commit comments

Comments
 (0)