Skip to content

Commit dddf1d5

Browse files
Draft updated extract_extension macro and test tpdm_extension model a… (#149)
* Draft updated extract_extension macro and test tpdm_extension model and column * Combine lines * Add support for list of predefined extensions * Add tpdm/epdm predefined credentials exts * Fix if defined check * Change flag name, condense if statement * Add epdm:credentials predefined extension config block * Remove enabled extensions list * Explicitly disable epdm predefined extension * Change variable name * Complete epdm predefned extension config * rename to tpdm for consistency * Update changelog --------- Co-authored-by: rlittle08 <rlittle@edanalytics.org>
1 parent d6224a5 commit dddf1d5

3 files changed

Lines changed: 68 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
- Updated `gen_skey.sql` macro. Changed the order of `k_survey_section` column list. Changed survey_section_title from snake case to camel case.
33
- Corrected `stg_ef3__survey_section_responses.sql` model `k_survey_section_response` variable. previously missing `survey_response_id` variable.
44
## New features
5+
- Updated `extract_extension.sql` macro to allow for extensions to be defined in the edu_edfi_source `dbt_project.yml` and enabled per project.
6+
- Added the tpdm/epdm predefined extension to `dbt_project.yml'
57
## Under the hood
68
## Fixes
79

@@ -265,4 +267,4 @@
265267
## Fixes
266268

267269
# edu_edfi_source v0.1.0
268-
Initial release
270+
Initial release

dbt_project.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,45 @@ models:
4343

4444
vars:
4545
extensions: null
46+
predefined_extensions:
47+
tpdm:
48+
stg_ef3__credentials:
49+
tpdm_certification_route_descriptor:
50+
name: 'tpdm:certificationRouteDescriptor'
51+
dtype: 'varchar'
52+
tpdm_credential_status_descriptor:
53+
name: 'tpdm:credentialStatusDescriptor'
54+
dtype: 'varchar'
55+
tpdm_educator_role_descriptor:
56+
name: 'tpdm:educatorRoleDescriptor'
57+
dtype: 'varchar'
58+
tpdm_board_certification_indicator:
59+
name: 'tpdm:boardCertificationIndicator'
60+
dtype: 'boolean'
61+
tpdm_credential_certification_title:
62+
name: 'tpdm:certificationTitle'
63+
dtype: 'varchar'
64+
tpdm_credential_status_date:
65+
name: 'tpdm:credentialStatusDate'
66+
dtype: 'timestamp'
67+
tpdm_person_reference_person_id:
68+
name: 'tpdm:personReference:PersonId'
69+
dtype: 'varchar'
70+
tpdm_v_student_academic_records:
71+
name: 'tpdm:studentAcademicRecords'
72+
dtype: 'variant'
73+
stg_ef3__schools:
74+
tpdm_post_secondary_institution_reference_post_secondary_institution_id:
75+
name: 'tpdm:postSecondaryInstitutionReference:postSecondaryInstitutionId'
76+
dtype: 'int'
77+
stg_ef3__survey_responses:
78+
tpdm_person_reference_person_id:
79+
name: 'tpdm:personReference:PersonId'
80+
dtype: 'varchar'
81+
4682

4783
# student discipline participation codes that map to non-offenders
4884
'edu:discipline:non_offender_codes': ['Victim', 'Witness', 'Reporter']
85+
86+
# epdm extension default disabled
87+
'src:predefined_extensions:tpdm:enabled': False

macros/extract_extension.sql

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,39 @@
1212
{{ edu_edfi_source.extract_extension_list(model_name) }}
1313
{% else %}
1414
{# if `model_name` IS a singleton, use var of its single model name #}
15-
{%- set extensions = var('extensions')[model_name] -%}
1615

17-
{%- if extensions is defined and extensions|length > 0 -%},{% endif -%}
16+
{%- set extensions = var('extensions', {}).get(model_name, {}) -%}
17+
{%- set predefined_extensions = {} -%}
18+
{%- for k,v in var('predefined_extensions', {}).items() -%}
19+
{# If predefined extension flag is enabled, add it to extensions list. #}
20+
{%- if var('src:predefined_extensions:' ~ k ~ ':enabled') -%}
21+
{%- set _ = predefined_extensions.update(v.get(model_name, {})) -%}
22+
{%- endif -%}
23+
{%- endfor -%}
24+
25+
{# merge the two extension lists #}
26+
{% set all_extensions = {} %}
27+
{% for k, v in extensions.items() %}
28+
{% set _ = all_extensions.update({k: v}) %}
29+
{% endfor %}
30+
{%- if predefined_extensions is defined and predefined_extensions|length > 0 -%}
31+
{% for k, v in predefined_extensions.items() %}
32+
{% set _ = all_extensions.update({k: v}) %}
33+
{% endfor %}
34+
{%- endif -%}
35+
36+
37+
{%- if all_extensions is defined and all_extensions|length > 0 -%},{% endif -%}
1838

19-
{%- for ext in extensions %}
39+
{%- for ext in all_extensions %}
2040

2141
{# If flatten (as is done in stg models), pull out metadata from dbt_project var and use to flatten json into columns #}
2242
{%- if flatten %}
2343

24-
{%- set ext_native_name = extensions[ext].name -%}
44+
{%- set ext_native_name = all_extensions[ext].name -%}
2545
{%- set full_ext_native_name = 'v_ext:' + ext_native_name -%}
26-
{%- set ext_dtype = extensions[ext].dtype -%}
27-
{%- set ext_extract_descriptor = extensions[ext].extract_descriptor -%}
46+
{%- set ext_dtype = all_extensions[ext].dtype -%}
47+
{%- set ext_extract_descriptor = all_extensions[ext].extract_descriptor -%}
2848

2949
{%- if ext_extract_descriptor %}
3050
{{extract_descriptor(full_ext_native_name + '::string')}}::{{ext_dtype}} as {{ext}}

0 commit comments

Comments
 (0)