Files
school_compare/pipeline/transform/target/partial_parse.msgpack
T

6036 lines
752 KiB
Plaintext
Raw Normal View History

#・nodes゙Rル!seed.school_compare.la_code_names゙ィdatabaseョschool_compareヲschema・seeds、nameュla_code_namesュresource_type、seedャpackage_nameョschool_compare、pathアla_code_names.csvイoriginal_file_pathキseeds/la_code_names.csvゥunique_idル!seed.school_compare.la_code_names」fqn聴school_compareュla_code_names・aliasュla_code_namesィchecksumうnameヲsha256ィchecksumル@a3924c9bda3cb6be5f85832b0744c21935a4e006bc9e2d71ca03b075157abe8eヲconfig゙ァenabledテ・aliasタヲschema・seedsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、seedエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタゥdelimiter。,ュquote_columnsタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config※schema・seedsェcreated_atヒAレ萌B艟ォーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル("school_compare"."seeds"."la_code_names"ィraw_codeェdoc_blocks姓root_pathル7/Users/tudor/projects/school_compare/pipeline/transformェdepends_on※macros整defer_relationタル#seed.school_compare.gias_code_names゙ィdatabaseョschool_compareヲschema・seeds、nameッgias_code_namesュresource_type、seedャpackage_nameョschool_compare、pathウgias_code_names.csvイoriginal_file_pathケseeds/gias_code_names.csvゥunique_idル#seed.school_compare.gias_code_names」fqn聴school_compareッgias_code_names・aliasッgias_code_namesィchecksumうnameヲsha256ィchecksumル@be09e2443f1d0d9ed3d0f8637ae38183e63b9e40c208e8684993e17ac5f2903bヲconfig゙ァenabledテ・aliasタヲschema・seedsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、seedエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタゥdelimiter。,ュquote_columnsタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config※schema・seedsェcreated_atヒAレ萌B芒ャーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル*"school_compare"."seeds"."gias_code_names"ィraw_codeェdoc_blocks姓root_pathル7/Users/tudor/projects/school_compare/pipeline/transformェdepends_on※macros整defer_relationタル%seed.school_compare.school_type_codes゙ィdatabaseョschool_compareヲschema・seeds、nameアschool_type_codesュresource_type、seedャpackage_nameョschool_compare、pathオschool_type_codes.csvイoriginal_file_pathサseeds/school_type_codes.csvゥunique_idル%seed.school_compare.school_type_codes」fqn聴school_compareアschool_type_codes・aliasアschool_type_codesィchecksumうnameヲsha256ィchecksumル@6020353ed39356287495de70fd2b44bed411ef059b2e61b0136c0faf3c9769cfヲconfig゙ァenabledテ・aliasタヲschema・seedsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、seedエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタゥdelimiter。,ュquote_columnsタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config※schema・seedsェcreated_atヒAレ萌B苴ヨーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル,"school_compare"."seeds"."school_type_codes"ィraw_codeェdoc_blocks姓root_pathル7/Users/tudor/projects/school_compare/pipeline/transformェdepends_on※macros整defer_relationタル)model.school_compare.stg_ees_ks4_national゙,ィdatabaseョschool_compareヲschemaァstaging、nameエstg_ees_ks4_nationalュresource_type・modelャpackage_nameョschool_compare、pathル staging/stg_ees_ks4_national.sqlイoriginal_file_pathル'models/staging/stg_ees_ks4_national.sqlゥunique_idル)model.school_compare.stg_ees_ks4_national」fqn動school_compareァstagingエstg_ees_ks4_national・aliasエstg_ees_ks4_nationalィchecksumうnameヲsha256ィchecksumル@cdc96082b585ef4940e4d
-- Staging model: official DfE KS4 national headline averages 窶 one row per
-- academic year (England, all state-funded, all pupils). Source: EES data
-- catalogue "National characteristics summary data". Suppressed values
-- ('z', 'x') are coerced to NULL by safe_numeric 窶 Progress 8 is 'z' in
-- years with no KS2 baseline (e.g. 2024/25): legitimately unpublished.
select
cast(trim(time_period) as integer) as year,
{{ safe_numeric('attainment_8_score') }} as attainment_8_score,
{{ safe_numeric('progress_8_score') }} as progress_8_score,
{{ safe_numeric('english_maths_standard_pass_pct') }} as english_maths_standard_pass_pct,
{{ safe_numeric('english_maths_strong_pass_pct') }} as english_maths_strong_pass_pct,
{{ safe_numeric('ebacc_entry_pct') }} as ebacc_entry_pct,
{{ safe_numeric('ebacc_standard_pass_pct') }} as ebacc_standard_pass_pct,
{{ safe_numeric('ebacc_strong_pass_pct') }} as ebacc_strong_pass_pct,
{{ safe_numeric('ebacc_avg_score') }} as ebacc_avg_score
from {{ source('raw', 'ees_ks4_national') }}
where time_period ~ '^[0-9]+$'ェdoc_blocks勢language」sql、refs制sources葬」rawーees_ks4_nationalァmetrics姓functions征depends_onえmacros胎!macro.school_compare.safe_numeric・nodes胎*source.school_compare.raw.ees_ks4_nationalュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル!model.school_compare.dim_location゙,ィdatabaseョschool_compareヲschema・marts、nameャdim_locationュresource_type・modelャpackage_nameョschool_compare、pathカmarts/dim_location.sqlイoriginal_file_pathスmodels/marts/dim_location.sqlゥunique_idル!model.school_compare.dim_location」fqn動school_compare・martsャdim_location・aliasャdim_locationィchecksumうnameヲsha256ィchecksumル@d52fb2b99be90d6fa3c9e3e4f75b5f1bf872450a5e4460aea47d6e9dd6d1d210ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル/School location dimension with PostGIS geometryァcolumnsぅurn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks勢postcode研nameィpostcodeォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=)Rーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル'"school_compare"."marts"."dim_location"ィraw_codeレD-- Mart: School location dimension 窶 one row per URN, PostGIS-enabled
-- Geometry derived from GIAS easting/northing (British National Grid 竊 WGS84).
-- For schools missing easting/northing, the geocode script backfills via Postcodes.io.
select
s.urn,
s.address_line1,
s.address_line2,
s.town,
s.county,
s.postcode,
s.local_authority_code,
s.local_authority_name,
s.parliamentary_constituency,
s.urban_rural,
s.easting,
s.northing,
case
when s.easting is not null and s.northing is not null
then ST_Transform(ST_SetSRID(ST_MakePoint(s.easting::double precision, s.northing::double precision), 27700), 4326)
else null
end as geom,
case
when s.easting is not null and s.northing is not null
then ST_Y(ST_Transform(ST_SetSRID(ST_MakePoint(s.easting::double precision, s.northing::double precision), 27700), 4326))
else null
end as latitude,
case
when s.easting is not null and s.northing is not null
then ST_X(ST_Transform(ST_SetSRID(ST_MakePoint(s.easting::double precision, s.northing::double precision), 27700), 4326))
else null
end as longitude
from {{ ref('stg_gias_establishments') }} s
-- Must match dim_school's status filter exactly (the API inner-joins the two).
where s.status_code in (1, 3)ェdoc_blocks勢language」sql、refs巣、nameキstg_gias_establishmentsァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎,model.school_compare.stg_gias_establishmentsュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key促urnェtime_spineタ・batchタソmodel.school_compare.dim_school゙,ィdatabaseョschool_compareヲschema・marts、nameェdim_schoolュresource_type・modelャpackage_nameョschool_compare、pathエmarts/dim_school.sqlイoriginal_file_pathサmodels/marts/dim_school.sqlゥunique_idソmodel.school_compare.dim_school」fqn動school_compare・martsェdim_school・aliasェdim_schoolィchecksumうnameヲsha256ィchecksumル@116be1472b8a5ef306d333ad7aec953f47ae184f8ceb8af7bab9770133b7a913ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル5Canonical school dimension 窶 one row per active URNァcolumns哀urn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks性school_name研nameォschool_nameォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks征phase_code研nameェphase_codeォdescriptionレ
GIAS PhaseOfEducation code (2 = Primary, 4 = Secondary, 7 = All-through, etc. 窶 see seeds/gias_code_names.csv). May be null for a small number of independent schools where GIAS publishes "Not Applicable", no statutory age range, and the school name gives no hint.
、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks整has_sixth_form研nameョhas_sixth_formォdescriptionレAuthoritative sixth-form flag from GIAS OfficialSixthForm. "Has a sixth form" => true; "Does not have a sixth form" and "Not applicable" => false; blank GIAS value falls back to statutory_high_age >= 18. Replaces the age_range-contains-"18" heuristic (spec 2026-07-07 ツァ3).
、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks性status_code研nameォstatus_codeォdescriptionルHGIAS EstablishmentStatus code (1 = Open, 3 = Open but proposed to close)、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks晴school_type_code研nameーschool_type_codeォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks精religious_character_code研nameクreligious_character_codeォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks生admissions_policy_code研nameカadmissions_policy_codeォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=8ィーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル%"school_compare"."marts"."dim_school"ィraw_codeレフ-- Mart: Canonical school dimension 窶 one row per active URN
-- int_ofsted_latest is only ref()'d inside a conditional block below (it may not
-- exist before the Ofsted pipeline first runs), so declare the dependency
-- explicitly for dbt's DAG.
-- depends_on: {{ ref('int_ofsted_latest') }}
with schools as (
select * from {{ ref('stg_gias_establishments') }}
)
{% set ofsted_relation = adapter.get_relation(
database=target.database,
schema='intermediate',
identifier='int_ofsted_latest'
) %}
select
s.urn,
s.local_authority_code * 1000 + s.establishment_number as laestab,
s.school_name,
-- Phase in GIAS code space (see seeds/gias_code_names.csv):
-- 2 = Primary, 4 = Secondary, 7 = All-through, 0 = Not applicable.
case
-- 1. Trust GIAS phase when it's a real value (0 = the catch-all "Not Applicable")
when s.phase_code is not null and s.phase_code != 0
then s.phase_code
-- 2. Infer from statutory age range (independent schools still publish these)
when s.statutory_high_age is not null and s.statutory_high_age <= 11 then 2
when s.statutory_low_age is not null and s.statutory_low_age >= 11 then 4
when s.statutory_low_age is not null and s.statutory_high_age is not null
and s.statutory_low_age < 11 and s.statutory_high_age > 11 then 7
-- 3. Fallback: infer from school name (covers independents with missing ages)
when s.school_name ilike '%primary%'
or s.school_name ilike '%infant%'
or s.school_name ilike '%junior%'
or s.school_name ilike '%preparatory%'
or s.school_name ilike '% prep school%'
or s.school_name ilike '% prep %'
then 2
when s.school_name ilike '%secondary%'
or s.school_name ilike '%high school%'
or s.school_name ilike '%grammar%'
or s.school_name ilike '%senior school%'
or s.school_name ilike '%upper school%'
then 4
-- 4. Give up 窶 null renders no phase pill
else null
end as phase_code,
s.school_type_code,
s.academy_trust_name,
s.academy_trust_uid,
s.religious_character_code,
s.gender,
s.statutory_low_age || '-' || s.statutory_high_age as age_range,
-- GIAS OfficialSixthForm in code space: 1 = has, 2 = does not, 0 = N/A.
-- Null (rare, new establishments) falls back to the statutory age range.
case
when s.official_sixth_form_code = 1 then true
when s.official_sixth_form_code in (0, 2) then false
else coalesce(s.statutory_high_age >= 18, false)
end as has_sixth_form,
s.capacity,
s.total_pupils,
concat_ws(' ', s.head_title, s.head_first_name, s.head_last_name) as headteacher_name,
s.website,
s.telephone,
s.open_date,
s.close_date,
s.status_code,
s.nursery_provision,
s.admissions_policy_code,
-- Latest Ofsted (populated after monthly Ofsted pipeline runs)
{% if ofsted_relation is not none %}
-- Prefer the graded overall effectiveness; fall back to the grade parsed
-- from the latest ungraded (Section 8) outcome when no graded grade exists.
coalesce(o.overall_effectiveness, o.ungraded_grade) as ofsted_grade,
o.inspection_date as ofsted_date,
o.framework as ofsted_framework
{% else %}
null::text as ofsted_grade,
null::date as ofsted_date,
null::text as ofsted_framework
{% endif %}
from schools s
{% if ofsted_relation is not none %}
left join {{ ref('int_ofsted_latest') }} o on s.urn = o.urn
{% endif %}
-- 1 = Open; 3 = Open, but proposed to close (still operating; drops out when
-- GIAS flips to Closed 窶 marts fully rebuild each run).
where s.status_code in (1, 3)ェdoc_blocks勢language」sql、refs茶、nameアint_ofsted_latestァpackageタァversionタΖnameキstg_gias_establishmentsァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes壷&model.school_compare.int_ofsted_latestル,model.school_compare.stg_gias_establishmentsュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key促urnェtime_spineタ・batchタル,model.school_compare.stg_gias_establishments゙,ィdatabaseョschool_compareヲschemaァstaging、nameキstg_gias_establishmentsュresource_type・modelャpackage_nameョschool_compare、pathル#staging/stg_gias_establishments.sqlイoriginal_file_pathル*models/staging/stg_gias_establishments.sqlゥunique_idル,model.school_compare.stg_gias_establishments」fqn動school_compareァstagingキstg_gias_establishments・aliasキstg_gias_establishmentsィchecksumうnameヲsha256ィchecksumル@f441ba1ec21d49447e34206e11189040431a3dd525e4a51bc40e8c7c2ba032b0ヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaァstagingェcreated_atヒAレ萌z5vJーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル4"school_compare"."staging"."stg_gias_establishments"ィraw_codeレ -- Staging model: GIAS establishments
-- Light cleaning, type casting, column renaming from raw GIAS bulk CSV
with source as (
select * from {{ source('raw', 'gias_establishments') }}
),
renamed as (
select
cast("URN" as integer) as urn,
cast(nullif("LA (code)", '') as integer) as local_authority_code,
"LA (name)" as local_authority_name,
cast(nullif("EstablishmentNumber", '') as integer) as establishment_number,
"EstablishmentName" as school_name,
cast(nullif(trim("TypeOfEstablishment (code)"), '') as integer) as school_type_code,
cast(nullif(trim("PhaseOfEducation (code)"), '') as integer) as phase_code,
cast(nullif(trim("OfficialSixthForm (code)"), '') as integer) as official_sixth_form_code,
"Gender (name)" as gender,
cast(nullif(trim("ReligiousCharacter (code)"), '') as integer) as religious_character_code,
cast(nullif(trim("AdmissionsPolicy (code)"), '') as integer) as admissions_policy_code,
"SchoolCapacity" as capacity,
cast(nullif("NumberOfPupils", '') as integer) as total_pupils,
"HeadTitle (name)" as head_title,
"HeadFirstName" as head_first_name,
"HeadLastName" as head_last_name,
"TelephoneNum" as telephone,
"SchoolWebsite" as website,
"Street" as address_line1,
"Locality" as address_line2,
"Town" as town,
"County (name)" as county,
"Postcode" as postcode,
cast(nullif(trim("EstablishmentStatus (code)"), '') as integer) as status_code,
case when "OpenDate" = '' then null else to_date("OpenDate", 'DD-MM-YYYY') end as open_date,
case when "CloseDate" = '' then null else to_date("CloseDate", 'DD-MM-YYYY') end as close_date,
"Trusts (name)" as academy_trust_name,
cast(nullif("Trusts (code)", '') as integer) as academy_trust_uid,
"UrbanRural (name)" as urban_rural,
"ParliamentaryConstituency (name)" as parliamentary_constituency,
"NurseryProvision (name)" as nursery_provision,
cast(nullif("Easting", '') as integer) as easting,
cast(nullif("Northing", '') as integer) as northing,
cast(nullif("StatutoryLowAge", '') as integer) as statutory_low_age,
cast(nullif("StatutoryHighAge", '') as integer) as statutory_high_age
from source
where "URN" is not null
)
select * from renamedェdoc_blocks勢language」sql、refs制sources葬」rawウgias_establishmentsァmetrics姓functions征depends_onえmacros是nodes胎-source.school_compare.raw.gias_establishmentsュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル%model.school_compare.fact_performance゙,ィdatabaseョschool_compareヲschema・marts、nameーfact_performanceュresource_type・modelャpackage_nameョschool_compare、pathコmarts/fact_performance.sqlイoriginal_file_pathル!models/marts/fact_performance.sqlゥunique_idル%model.school_compare.fact_performance」fqn動school_compare・martsーfact_performance・aliasーfact_performanceィchecksumうnameヲsha256ィchecksumル@ea8849a6596cdb40066194013400acd5b70cd71b49dd7de8052a67afbe012577ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル藪erged KS2 + KS4 performance 窶 one row per URN per year via FULL OUTER JOIN. All-through schools have both KS2 and KS4 columns populated; pure primary schools have NULL KS4 columns; pure secondary schools have NULL KS2 columns.ァcolumnsぅurn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝year研name、yearォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=Hーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル+"school_compare"."marts"."fact_performance"ィraw_codeレ =-- Mart: Merged KS2 + KS4 performance 窶 one row per URN per year
-- FULL OUTER JOIN so all-through schools have both KS2 and KS4 columns populated.
-- Pure primary schools have NULL KS4 columns; pure secondary schools have NULL KS2 columns.
with ks2 as (
select * from {{ ref('fact_ks2_performance') }}
),
ks4 as (
select * from {{ ref('fact_ks4_performance') }}
)
select
-- Join keys (coalesced so neither side is dropped)
coalesce(ks2.urn, ks4.urn) as urn,
coalesce(ks2.source_urn, ks4.source_urn) as source_urn,
coalesce(ks2.year, ks4.year) as year,
coalesce(ks2.total_pupils, ks4.total_pupils) as total_pupils,
coalesce(ks2.eligible_pupils, ks4.eligible_pupils) as eligible_pupils,
-- KS2 columns (NULL for pure secondary schools)
ks2.rwm_expected_pct,
ks2.rwm_high_pct,
ks2.reading_expected_pct,
ks2.reading_high_pct,
ks2.reading_avg_score,
ks2.reading_progress,
ks2.reading_progress_lower_ci,
ks2.reading_progress_upper_ci,
ks2.writing_expected_pct,
ks2.writing_high_pct,
ks2.writing_progress,
ks2.writing_progress_lower_ci,
ks2.writing_progress_upper_ci,
ks2.writing_working_towards_pct,
ks2.maths_expected_pct,
ks2.maths_high_pct,
ks2.maths_avg_score,
ks2.maths_progress,
ks2.maths_progress_lower_ci,
ks2.maths_progress_upper_ci,
ks2.gps_expected_pct,
ks2.gps_high_pct,
ks2.gps_avg_score,
ks2.science_expected_pct,
ks2.reading_absence_pct,
ks2.writing_absence_pct,
ks2.maths_absence_pct,
ks2.gps_absence_pct,
ks2.science_absence_pct,
ks2.rwm_expected_boys_pct,
ks2.rwm_high_boys_pct,
ks2.rwm_expected_girls_pct,
ks2.rwm_high_girls_pct,
ks2.rwm_expected_disadvantaged_pct,
ks2.rwm_expected_non_disadvantaged_pct,
ks2.disadvantaged_gap,
ks2.disadvantaged_pct,
ks2.eal_pct,
ks2.stability_pct,
-- KS4 columns (NULL for pure primary schools)
ks4.attainment_8_score,
ks4.progress_8_score,
ks4.progress_8_lower_ci,
ks4.progress_8_upper_ci,
ks4.progress_8_english,
ks4.progress_8_maths,
ks4.progress_8_ebacc,
ks4.progress_8_open,
ks4.progress_8_banding,
ks4.attainment_8_disadvantage_gap,
ks4.progress_8_disadvantage_gap,
ks4.english_maths_strong_pass_pct,
ks4.english_maths_standard_pass_pct,
ks4.ebacc_entry_pct,
ks4.ebacc_strong_pass_pct,
ks4.ebacc_standard_pass_pct,
ks4.ebacc_avg_score,
ks4.gcse_grade_91_pct,
ks4.prior_attainment_avg,
ks4.sen_pct,
-- Shared SEN columns 窶 KS2 preferred, fall back to KS4
coalesce(ks2.sen_support_pct, ks4.sen_support_pct) as sen_support_pct,
coalesce(ks2.sen_ehcp_pct, ks4.sen_ehcp_pct) as sen_ehcp_pct
from ks2
full outer join ks4
on ks2.urn = ks4.urn
and ks2.year = ks4.yearェdoc_blocks勢language」sql、refs茶、nameエfact_ks2_performanceァpackageタァversionタΖnameエfact_ks4_performanceァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes壷)model.school_compare.fact_ks2_performanceル)model.school_compare.fact_ks4_performanceュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key卒urn || '-' || yearェtime_spineタ・batchタル)model.school_compare.fact_ks2_performance゙,ィdatabaseョschool_compareヲschema・marts、nameエfact_ks2_performanceュresource_type・modelャpackage_nameョschool_compare、pathセmarts/fact_ks2_performance.sqlイoriginal_file_pathル%models/marts/fact_ks2_performance.sqlゥunique_idル)model.school_compare.fact_ks2_performance」fqn動school_compare・martsエfact_ks2_performance・aliasエfact_ks2_performanceィchecksumうnameヲsha256ィchecksumル@ee3f734e98d37c6b3459f08eb35e78e193c2c4995fb64a4bbe2d58a2382acf8cヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル+KS2 attainment 窶 one row per URN per yearァcolumns殴urn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝year研name、yearォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks聖reading_progress_lower_ci研nameケreading_progress_lower_ciォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks聖reading_progress_upper_ci研nameケreading_progress_upper_ciォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks聖writing_progress_lower_ci研nameケwriting_progress_lower_ciォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks聖writing_progress_upper_ci研nameケwriting_progress_upper_ciォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks製writing_working_towards_pct研nameサwriting_working_towards_pctォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks盛maths_progress_lower_ci研nameキmaths_progress_lower_ciォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks盛maths_progress_upper_ci研nameキmaths_progress_upper_ciォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=E族config_call_dict€サunrendered_config_call_dict€ュrelation_nameル/"school_compare"."marts"."fact_ks2_performance"ィraw_codeレC-- Mart: KS2 performance fact table 窶 one row per URN per year
-- Includes predecessor data via lineage resolution
select
current_urn as urn,
source_urn,
year,
total_pupils,
eligible_pupils,
-- Core attainment
rwm_expected_pct,
rwm_high_pct,
reading_expected_pct,
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,
science_expected_pct,
-- Absence
reading_absence_pct,
writing_absence_pct,
maths_absence_pct,
gps_absence_pct,
science_absence_pct,
-- Gender
rwm_expected_boys_pct,
rwm_high_boys_pct,
rwm_expected_girls_pct,
rwm_high_girls_pct,
-- Disadvantaged
rwm_expected_disadvantaged_pct,
rwm_expected_non_disadvantaged_pct,
disadvantaged_gap,
-- Context
disadvantaged_pct,
eal_pct,
sen_support_pct,
sen_ehcp_pct,
stability_pct
from {{ ref('int_ks2_with_lineage') }}ェdoc_blocks勢language」sql、refs巣、nameエint_ks2_with_lineageァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎)model.school_compare.int_ks2_with_lineageュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key卒urn || '-' || yearェtime_spineタ・batchタル)model.school_compare.int_ks2_with_lineage゙,ィdatabaseョschool_compareヲschemaャintermediate、nameエint_ks2_with_lineageュresource_type・modelャpackage_nameョschool_compare、pathル%intermediate/int_ks2_with_lineage.sqlイoriginal_file_pathル,models/intermediate/int_ks2_with_lineage.sqlゥunique_idル)model.school_compare.int_ks2_with_lineage」fqn動school_compareャintermediateエint_ks2_with_lineage・aliasエint_ks2_with_lineageィchecksumうnameヲsha256ィchecksumル@cf0cd2ad3e55172d40bcdc4c0b5b750bdf5d7c1618f472b359372e34c467a89bヲconfig゙ ァenabledテ・aliasタヲschemaャintermediateィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaャintermediateェcreated_atヒAレ萌z5湾ーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル6"school_compare"."intermediate"."int_ks2_with_lineage"ィraw_codeレ -- Intermediate model: KS2 data chained across academy conversions
-- Maps predecessor URN data to the current active URN
-- Unions EES (2022+) and legacy (2015-2019) school-level data
with all_ks2 as (
select * from {{ ref('stg_ees_ks2') }}
union all
select * from {{ ref('stg_legacy_ks2') }}
),
current_ks2 as (
select
urn as current_urn,
urn as source_urn,
year, total_pupils, eligible_pupils,
rwm_expected_pct, rwm_high_pct,
reading_expected_pct, 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, science_expected_pct,
reading_absence_pct, writing_absence_pct, maths_absence_pct, gps_absence_pct, science_absence_pct,
rwm_expected_boys_pct, rwm_high_boys_pct, rwm_expected_girls_pct, rwm_high_girls_pct,
rwm_expected_disadvantaged_pct, rwm_expected_non_disadvantaged_pct, disadvantaged_gap,
disadvantaged_pct, eal_pct, sen_support_pct, sen_ehcp_pct, stability_pct
from all_ks2
),
predecessor_ks2 as (
-- If multiple predecessors have data for the same year, keep the one with most pupils.
select distinct on (lin.current_urn, ks2.year)
lin.current_urn,
ks2.urn as source_urn,
ks2.year, ks2.total_pupils, ks2.eligible_pupils,
ks2.rwm_expected_pct, ks2.rwm_high_pct,
ks2.reading_expected_pct, ks2.reading_high_pct, ks2.reading_avg_score, ks2.reading_progress,
ks2.reading_progress_lower_ci, ks2.reading_progress_upper_ci,
ks2.writing_expected_pct, ks2.writing_high_pct, ks2.writing_progress,
ks2.writing_progress_lower_ci, ks2.writing_progress_upper_ci, ks2.writing_working_towards_pct,
ks2.maths_expected_pct, ks2.maths_high_pct, ks2.maths_avg_score, ks2.maths_progress,
ks2.maths_progress_lower_ci, ks2.maths_progress_upper_ci,
ks2.gps_expected_pct, ks2.gps_high_pct, ks2.gps_avg_score, ks2.science_expected_pct,
ks2.reading_absence_pct, ks2.writing_absence_pct, ks2.maths_absence_pct, ks2.gps_absence_pct, ks2.science_absence_pct,
ks2.rwm_expected_boys_pct, ks2.rwm_high_boys_pct, ks2.rwm_expected_girls_pct, ks2.rwm_high_girls_pct,
ks2.rwm_expected_disadvantaged_pct, ks2.rwm_expected_non_disadvantaged_pct, ks2.disadvantaged_gap,
ks2.disadvantaged_pct, ks2.eal_pct, ks2.sen_support_pct, ks2.sen_ehcp_pct, ks2.stability_pct
from all_ks2 ks2
inner join {{ ref('int_school_lineage') }} lin
on ks2.urn = lin.predecessor_urn
where not exists (
select 1 from all_ks2 curr
where curr.urn = lin.current_urn
and curr.year = ks2.year
)
order by lin.current_urn, ks2.year, ks2.total_pupils desc nulls last
),
combined as (
select * from current_ks2
union all
select * from predecessor_ks2
)
select * from combinedェdoc_blocks勢language」sql、refs塔、nameォstg_ees_ks2ァpackageタァversionタΖnameョstg_legacy_ks2ァpackageタァversionタΖnameイint_school_lineageァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes遁 model.school_compare.stg_ees_ks2ル#model.school_compare.stg_legacy_ks2ル'model.school_compare.int_school_lineageュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル/model.school_compare.fact_ks4_national_averages゙,ィdatabaseョschool_compareヲschema・marts、nameコfact_ks4_national_averagesュresource_type・modelャpackage_nameョschool_compare、pathル$marts/fact_ks4_national_averages.sqlイoriginal_file_pathル+models/marts/fact_ks4_national_averages.sqlゥunique_idル/model.school_compare.fact_ks4_national_averages」fqn動school_compare・martsコfact_ks4_national_averages・aliasコfact_ks4_national_averagesィchecksumうnameヲsha256ィchecksumル@6652829c2e28bab0f05474060d1cbda23c1009418ccef3791f810553e2f99f98ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionルomputed national KS4 averages (means across state schools in our dataset 窶 not official DfE figures) 窶 one row per academic yearァcolumns▽year研name、yearォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=P晴config_call_dict〓materialized・tableサunrendered_config_call_dict€ュrelation_nameル5"school_compare"."marts"."fact_ks4_national_averages"ィraw_codeレ'{{ config(materialized='table') }}
-- Mart: OFFICIAL DfE KS4 national headline averages 窶 one row per academic
-- year (England, state-funded, all pupils), from the EES national dataset.
-- Replaces the previous unweighted school-level means, which were 7窶15
-- points off every headline measure and produced an arithmetically
-- impossible national Progress 8. gcse_grade_91_pct has no official
-- national series and is NULL (schema kept for the API model).
select
year,
attainment_8_score,
progress_8_score,
english_maths_standard_pass_pct,
english_maths_strong_pass_pct,
ebacc_entry_pct,
ebacc_standard_pass_pct,
ebacc_strong_pass_pct,
ebacc_avg_score,
cast(null as double precision) as gcse_grade_91_pct
from {{ ref('stg_ees_ks4_national') }}
order by yearェdoc_blocks勢language」sql、refs巣、nameエstg_ees_ks4_nationalァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎)model.school_compare.stg_ees_ks4_nationalュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key側yearェtime_spineタ・batchタル)model.school_compare.fact_ks4_performance゙,ィdatabaseョschool_compareヲschema・marts、nameエfact_ks4_performanceュresource_type・modelャpackage_nameョschool_compare、pathセmarts/fact_ks4_performance.sqlイoriginal_file_pathル%models/marts/fact_ks4_performance.sqlゥunique_idル)model.school_compare.fact_ks4_performance」fqn動school_compare・martsエfact_ks4_performance・aliasエfact_ks4_performanceィchecksumうnameヲsha256ィchecksumル@3afb0dc042db222966de51680b08211c603d099f2db132137dda6abae9ac0b17ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル+KS4 attainment 窶 one row per URN per yearァcolumnsurn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝year研name、yearォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks栖progress_8_banding研nameイprogress_8_bandingォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks誠attainment_8_disadvantage_gap研nameスattainment_8_disadvantage_gapォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks製progress_8_disadvantage_gap研nameサprogress_8_disadvantage_gapォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=Nfーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル/"school_compare"."marts"."fact_ks4_performance"ィraw_codeレ-- Mart: KS4 performance fact table 窶 one row per URN per year
-- Includes predecessor data via lineage resolution
select
current_urn as urn,
source_urn,
year,
total_pupils,
eligible_pupils,
prior_attainment_avg,
-- Attainment 8
attainment_8_score,
-- Progress 8
progress_8_score,
progress_8_lower_ci,
progress_8_upper_ci,
progress_8_banding,
attainment_8_disadvantage_gap,
progress_8_disadvantage_gap,
progress_8_english,
progress_8_maths,
progress_8_ebacc,
progress_8_open,
-- English & Maths
english_maths_strong_pass_pct,
english_maths_standard_pass_pct,
-- EBacc
ebacc_entry_pct,
ebacc_strong_pass_pct,
ebacc_standard_pass_pct,
ebacc_avg_score,
-- GCSE
gcse_grade_91_pct,
-- Context
sen_pct,
sen_ehcp_pct,
sen_support_pct
from {{ ref('int_ks4_with_lineage') }}ェdoc_blocks勢language」sql、refs巣、nameエint_ks4_with_lineageァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎)model.school_compare.int_ks4_with_lineageュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key卒urn || '-' || yearェtime_spineタ・batchタル)model.school_compare.int_ks4_with_lineage゙,ィdatabaseョschool_compareヲschemaャintermediate、nameエint_ks4_with_lineageュresource_type・modelャpackage_nameョschool_compare、pathル%intermediate/int_ks4_with_lineage.sqlイoriginal_file_pathル,models/intermediate/int_ks4_with_lineage.sqlゥunique_idル)model.school_compare.int_ks4_with_lineage」fqn動school_compareャintermediateエint_ks4_with_lineage・aliasエint_ks4_with_lineageィchecksumうnameヲsha256ィchecksumル@0f1837fc648e40dea60bdf7a45d60824017665bbc189e497e20203d4739f5a53ヲconfig゙ ァenabledテ・aliasタヲschemaャintermediateィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaャintermediateェcreated_atヒAレ萌z5ソQーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル6"school_compare"."intermediate"."int_ks4_with_lineage"ィraw_codeレ-- Intermediate model: KS4 data chained across academy conversions
-- Unions EES (2023/24 onwards) and legacy (2015/16窶2018/19) school-level data
with all_ks4 as (
select * from {{ ref('stg_ees_ks4') }}
union all
select * from {{ ref('stg_legacy_ks4') }}
),
current_ks4 as (
select
urn as current_urn,
urn as source_urn,
year, total_pupils, eligible_pupils, prior_attainment_avg,
attainment_8_score,
progress_8_score, progress_8_lower_ci, progress_8_upper_ci,
progress_8_english, progress_8_maths, progress_8_ebacc, progress_8_open,
english_maths_strong_pass_pct, english_maths_standard_pass_pct,
ebacc_entry_pct, ebacc_strong_pass_pct, ebacc_standard_pass_pct, ebacc_avg_score,
gcse_grade_91_pct,
sen_pct, sen_support_pct, sen_ehcp_pct,
progress_8_banding, attainment_8_disadvantage_gap, progress_8_disadvantage_gap
from all_ks4
),
predecessor_ks4 as (
-- If multiple predecessors have data for the same year, keep the one with most pupils.
select distinct on (lin.current_urn, ks4.year)
lin.current_urn,
ks4.urn as source_urn,
ks4.year, ks4.total_pupils, ks4.eligible_pupils, ks4.prior_attainment_avg,
ks4.attainment_8_score,
ks4.progress_8_score, ks4.progress_8_lower_ci, ks4.progress_8_upper_ci,
ks4.progress_8_english, ks4.progress_8_maths, ks4.progress_8_ebacc, ks4.progress_8_open,
ks4.english_maths_strong_pass_pct, ks4.english_maths_standard_pass_pct,
ks4.ebacc_entry_pct, ks4.ebacc_strong_pass_pct, ks4.ebacc_standard_pass_pct, ks4.ebacc_avg_score,
ks4.gcse_grade_91_pct,
ks4.sen_pct, ks4.sen_support_pct, ks4.sen_ehcp_pct,
ks4.progress_8_banding, ks4.attainment_8_disadvantage_gap, ks4.progress_8_disadvantage_gap
from all_ks4 ks4
inner join {{ ref('int_school_lineage') }} lin
on ks4.urn = lin.predecessor_urn
where not exists (
select 1 from all_ks4 curr
where curr.urn = lin.current_urn
and curr.year = ks4.year
)
order by lin.current_urn, ks4.year, ks4.total_pupils desc nulls last
),
combined as (
select * from current_ks4
union all
select * from predecessor_ks4
)
select * from combinedェdoc_blocks勢language」sql、refs塔、nameォstg_ees_ks4ァpackageタァversionタΖnameョstg_legacy_ks4ァpackageタァversionタΖnameイint_school_lineageァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes遁 model.school_compare.stg_ees_ks4ル#model.school_compare.stg_legacy_ks4ル'model.school_compare.int_school_lineageュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル'model.school_compare.map_school_lineage゙,ィdatabaseョschool_compareヲschema・marts、nameイmap_school_lineageュresource_type・modelャpackage_nameョschool_compare、pathシmarts/map_school_lineage.sqlイoriginal_file_pathル#models/marts/map_school_lineage.sqlゥunique_idル'model.school_compare.map_school_lineage」fqn動school_compare・martsイmap_school_lineage・aliasイmap_school_lineageィchecksumうnameヲsha256ィchecksumル@ccc46724286e6f850514c1c0bacb73adc7317c3b9e1e57ca9f8dd51a49b848c4ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル!Predecessor/successor lineage mapァcolumns▲urn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=Siーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル-"school_compare"."marts"."map_school_lineage"ィraw_codeルウ-- Mart: School predecessor/successor lineage map
select
current_urn as urn,
predecessor_urn,
link_type,
link_date,
depth
from {{ ref('int_school_lineage') }}ェdoc_blocks勢language」sql、refs巣、nameイint_school_lineageァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎'model.school_compare.int_school_lineageュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル'model.school_compare.int_school_lineage゙,ィdatabaseョschool_compareヲschemaャintermediate、nameイint_school_lineageュresource_type・modelャpackage_nameョschool_compare、pathル#intermediate/int_school_lineage.sqlイoriginal_file_pathル*models/intermediate/int_school_lineage.sqlゥunique_idル'model.school_compare.int_school_lineage」fqn動school_compareャintermediateイint_school_lineage・aliasイint_school_lineageィchecksumうnameヲsha256ィchecksumル@6b5415d216e4fca7dc3802b07795eebf1d0f71cdb5afcb14da3f56661e59c073ヲconfig゙ ァenabledテ・aliasタヲschemaャintermediateィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaャintermediateェcreated_atヒAレ萌z5ユカーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル4"school_compare"."intermediate"."int_school_lineage"ィraw_codeレ-- Intermediate model: Recursive predecessor mapping
-- Resolves academy conversion chains so historical data can be attributed
-- to the current (active) URN.
with recursive lineage as (
-- Base: schools that are predecessors (linked via academy conversion, amalgamation, etc.)
select
urn,
linked_urn as predecessor_urn,
link_type,
link_date,
1 as depth
from {{ ref('stg_gias_links') }}
where link_type in (
'Predecessor',
'Predecessor - Loss of academy converter',
'Predecessor - amalgamated',
'Predecessor - Fresh Start'
)
union all
-- Recursive step: follow the chain
select
l.urn,
links.linked_urn as predecessor_urn,
links.link_type,
links.link_date,
l.depth + 1
from lineage l
inner join {{ ref('stg_gias_links') }} links
on l.predecessor_urn = links.urn
where links.link_type in (
'Predecessor',
'Predecessor - Loss of academy converter',
'Predecessor - amalgamated',
'Predecessor - Fresh Start'
)
and l.depth < 5 -- safety limit
)
select
urn as current_urn,
predecessor_urn,
link_type,
link_date,
depth
from lineageェdoc_blocks勢language」sql、refs茶、nameョstg_gias_linksァpackageタァversionタΖnameョstg_gias_linksァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎#model.school_compare.stg_gias_linksュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル#model.school_compare.stg_gias_links゙,ィdatabaseョschool_compareヲschemaァstaging、nameョstg_gias_linksュresource_type・modelャpackage_nameョschool_compare、pathコstaging/stg_gias_links.sqlイoriginal_file_pathル!models/staging/stg_gias_links.sqlゥunique_idル#model.school_compare.stg_gias_links」fqn動school_compareァstagingョstg_gias_links・aliasョstg_gias_linksィchecksumうnameヲsha256ィchecksumル@b63bd2f36eeb2be840a344365a68879242e5cb3310d7a74e7071fe7f6a9724fcヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaァstagingェcreated_atヒAレ萌z5*ーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル+"school_compare"."staging"."stg_gias_links"ィraw_codeレ,-- Staging model: GIAS school links (predecessor/successor chains)
with source as (
select * from {{ source('raw', 'gias_links') }}
),
renamed as (
select
cast("URN" as integer) as urn,
cast("LinkURN" as integer) as linked_urn,
"LinkType" as link_type,
case when "LinkEstablishedDate" = '' then null else to_date("LinkEstablishedDate", 'DD-MM-YYYY') end as link_date
from source
where "URN" is not null
and "LinkURN" is not null
)
select * from renamedェdoc_blocks勢language」sql、refs制sources葬」rawェgias_linksァmetrics姓functions征depends_onえmacros是nodes胎$source.school_compare.raw.gias_linksュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル+model.school_compare.fact_ofsted_inspection゙,ィdatabaseョschool_compareヲschema・marts、nameカfact_ofsted_inspectionュresource_type・modelャpackage_nameョschool_compare、pathル marts/fact_ofsted_inspection.sqlイoriginal_file_pathル'models/marts/fact_ofsted_inspection.sqlゥunique_idル+model.school_compare.fact_ofsted_inspection」fqn動school_compare・martsカfact_ofsted_inspection・aliasカfact_ofsted_inspectionィchecksumうnameヲsha256ィchecksumル@0f84ccceb71e7c7d5514164e9c6f3bbabecbca72b3547acc555b47c4dc361096ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionセFull Ofsted inspection historyァcolumnsぅurn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks星inspection_date研nameッinspection_dateォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=Vconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル1"school_compare"."marts"."fact_ofsted_inspection"ィraw_codeレ-- Mart: Full Ofsted inspection history 窶 one row per inspection
select
urn,
inspection_date,
inspection_type,
framework,
overall_effectiveness,
quality_of_education,
behaviour_attitudes,
personal_development,
leadership_management,
early_years_provision,
sixth_form_provision,
ungraded_outcome,
ungraded_grade,
rc_safeguarding_met,
rc_inclusion,
rc_curriculum_teaching,
rc_achievement,
rc_attendance_behaviour,
rc_personal_development,
rc_leadership_governance,
rc_early_years,
rc_sixth_form,
rc_inspection_date,
report_url
from {{ ref('stg_ofsted_inspections') }}ェdoc_blocks勢language」sql、refs巣、nameカstg_ofsted_inspectionsァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎+model.school_compare.stg_ofsted_inspectionsュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル&model.school_compare.int_ofsted_latest゙,ィdatabaseョschool_compareヲschemaャintermediate、nameアint_ofsted_latestュresource_type・modelャpackage_nameョschool_compare、pathル"intermediate/int_ofsted_latest.sqlイoriginal_file_pathル)models/intermediate/int_ofsted_latest.sqlゥunique_idル&model.school_compare.int_ofsted_latest」fqn動school_compareャintermediateアint_ofsted_latest・aliasアint_ofsted_latestィchecksumうnameヲsha256ィchecksumル@82a928978d87dcf8799894786716d1fca35b65e08aaea28573974a4423b06a07ヲconfig゙ ァenabledテ・aliasタヲschemaャintermediateィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaャintermediateェcreated_atヒAレ萌z5ーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル3"school_compare"."intermediate"."int_ofsted_latest"ィraw_codeレ{-- Intermediate model: Latest Ofsted inspection per URN
-- Picks the most recent inspection for each school
with ranked as (
select
*,
row_number() over (
partition by urn
order by inspection_date desc
) as rn
from {{ ref('stg_ofsted_inspections') }}
)
select
urn,
inspection_date,
inspection_type,
framework,
overall_effectiveness,
quality_of_education,
behaviour_attitudes,
personal_development,
leadership_management,
early_years_provision,
sixth_form_provision,
ungraded_outcome,
ungraded_grade,
rc_safeguarding_met,
rc_inclusion,
rc_curriculum_teaching,
rc_achievement,
rc_attendance_behaviour,
rc_personal_development,
rc_leadership_governance,
rc_early_years,
rc_sixth_form,
rc_inspection_date,
report_url
from ranked
where rn = 1ェdoc_blocks勢language」sql、refs巣、nameカstg_ofsted_inspectionsァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎+model.school_compare.stg_ofsted_inspectionsュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル+model.school_compare.stg_ofsted_inspections゙,ィdatabaseョschool_compareヲschemaァstaging、nameカstg_ofsted_inspectionsュresource_type・modelャpackage_nameョschool_compare、pathル"staging/stg_ofsted_inspections.sqlイoriginal_file_pathル)models/staging/stg_ofsted_inspections.sqlゥunique_idル+model.school_compare.stg_ofsted_inspections」fqn動school_compareァstagingカstg_ofsted_inspections・aliasカstg_ofsted_inspectionsィchecksumうnameヲsha256ィchecksumル@69c1b9d3d8ede6f5e5b042c5b3f0fcc3b970d0ad7d43c682a369850cdae8e046ヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaァstagingェcreated_atヒAレ萌z6 ーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル3"school_compare"."staging"."stg_ofsted_inspections"ィraw_codeレ`-- Staging model: Ofsted inspection records
-- Handles both OEIF (pre-Nov 2025) and Report Card (post-Nov 2025) frameworks
with source as (
select * from {{ source('raw', 'ofsted_inspections') }}
),
renamed as (
select
cast(urn as integer) as urn,
-- Inspection event date: the graded inspection when present, otherwise the
-- ungraded (Section 8) inspection so schools with only an ungraded
-- inspection are still retained.
coalesce(
to_date(nullif(trim(inspection_date), 'NULL'), 'DD/MM/YYYY'),
to_date(nullif(trim(ungraded_inspection_date), 'NULL'), 'DD/MM/YYYY')
) as inspection_date,
inspection_type,
event_type_grouping as framework,
-- OEIF grades (1-4 scale)
{{ safe_numeric('overall_effectiveness') }}::integer as overall_effectiveness,
{{ safe_numeric('quality_of_education') }}::integer as quality_of_education,
{{ safe_numeric('behaviour_and_attitudes') }}::integer as behaviour_attitudes,
{{ safe_numeric('personal_development') }}::integer as personal_development,
{{ safe_numeric('effectiveness_of_leadership_and_management') }}::integer as leadership_management,
{{ safe_numeric('early_years_provision') }}::integer as early_years_provision,
{{ safe_numeric('sixth_form_provision') }}::integer as sixth_form_provision,
-- Ungraded (Section 8) inspection outcome 窶 free text, plus a grade
-- parsed from it (1/2/null) used as a last-resort fallback for schools
-- with no graded overall effectiveness.
nullif(trim(ungraded_outcome), 'NULL') as ungraded_outcome,
{{ parse_ungraded_outcome('ungraded_outcome') }}::integer as ungraded_grade,
-- Report Card fields (post-Nov 2025 framework), 5-point scale:
-- 1 Exceptional ツキ 2 Strong standard ツキ 3 Expected standard
-- ツキ 4 Needs attention ツキ 5 Urgent improvement
case lower(trim(nullif(rc_safeguarding_met, 'NULL')))
when 'met' then true
when 'not met' then false
end as rc_safeguarding_met,
{{ parse_report_card_grade('rc_inclusion') }}::integer as rc_inclusion,
{{ parse_report_card_grade('rc_curriculum_teaching') }}::integer as rc_curriculum_teaching,
{{ parse_report_card_grade('rc_achievement') }}::integer as rc_achievement,
{{ parse_report_card_grade('rc_attendance_behaviour') }}::integer as rc_attendance_behaviour,
{{ parse_report_card_grade('rc_personal_development') }}::integer as rc_personal_development,
{{ parse_report_card_grade('rc_leadership_governance') }}::integer as rc_leadership_governance,
{{ parse_report_card_grade('rc_early_years') }}::integer as rc_early_years,
{{ parse_report_card_grade('rc_sixth_form') }}::integer as rc_sixth_form,
-- Start date of the latest FULL inspection (the report-card
-- inspection in the renewed framework). Guarded in the final select:
-- only kept when the row actually carries report-card grades, because
-- in legacy-format files this column is the legacy inspection date.
to_date(nullif(trim(rc_inspection_date), 'NULL'), 'DD/MM/YYYY') as rc_inspection_date_raw,
nullif(trim(report_url), 'NULL') as report_url
from source
where urn is not null
and (
nullif(trim(inspection_date), 'NULL') is not null
or nullif(trim(ungraded_inspection_date), 'NULL') is not null
)
)
select
*,
case
when rc_safeguarding_met is not null
or rc_inclusion is not null
or rc_curriculum_teaching is not null
or rc_achievement is not null
or rc_attendance_behaviour is not null
or rc_personal_development is not null
or rc_leadership_governance is not null
then rc_inspection_date_raw
end as rc_inspection_date
from renamed
where inspection_date is not nullェdoc_blocks勢language」sql、refs制sources葬」rawイofsted_inspectionsァmetrics姓functions征depends_onえmacros遁!macro.school_compare.safe_numericル+macro.school_compare.parse_ungraded_outcomeル,macro.school_compare.parse_report_card_grade・nodes胎,source.school_compare.raw.ofsted_inspectionsュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル model.school_compare.stg_ees_ks2゙,ィdatabaseョschool_compareヲschemaァstaging、nameォstg_ees_ks2ュresource_type・modelャpackage_nameョschool_compare、pathキstaging/stg_ees_ks2.sqlイoriginal_file_pathセmodels/staging/stg_ees_ks2.sqlゥunique_idル model.school_compare.stg_ees_ks2」fqn動school_compareァstagingォstg_ees_ks2・aliasォstg_ees_ks2ィchecksumうnameヲsha256ィchecksumル@b5d1cc5ac353d77b1e067f26efee3ac4ebdefe5ea0e6b405595ac3b054ed82a6ヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized・tableヲschemaァstagingェcreated_atヒAレ萌z683ーconfig_call_dict〓materialized・tableサunrendered_config_call_dict〓materialized・tableュrelation_nameル("school_compare"."staging"."stg_ees_ks2"ィraw_codeレ)リ{{ config(materialized='table') }}
-- Staging model: KS2 attainment + information
-- Single-pass pivot: one GROUP BY scan of 1.2M rows handles all subjects
-- and all breakdowns (All pupils, Boys, Girls, Disadvantaged, Not disadvantaged)
-- instead of 5 separate CTE scans + 5 LEFT JOINs.
-- EES uses 'z' (not applicable) and 'c' (confidential) as suppression codes 窶
-- safe_numeric handles both by treating any non-numeric string as NULL.
with attainment as (
select * from {{ source('raw', 'ees_ks2_attainment') }}
where school_urn ~ '^[0-9]+$'
and time_period ~ '^[0-9]+$'
),
pivoted as (
select
cast(trim(school_urn) as integer) as urn,
cast(trim(time_period) as integer) as year,
-- Reading, Writing & Maths combined (All pupils / Total)
max(case when subject = 'Reading, writing and maths'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_pct,
max(case when subject = 'Reading, writing and maths'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('higher_standard_pupil_percent') }} end) as rwm_high_pct,
-- Reading (All pupils / Total)
max(case when subject = 'Reading'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as reading_expected_pct,
max(case when subject = 'Reading'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('higher_standard_pupil_percent') }} end) as reading_high_pct,
max(case when subject = 'Reading'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('average_scaled_score') }} end) as reading_avg_score,
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,
-- Writing (All pupils / Total)
max(case when subject = 'Writing'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as writing_expected_pct,
max(case when subject = 'Writing'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('higher_standard_pupil_percent') }} end) as writing_high_pct,
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,
-- Maths (All pupils / Total)
max(case when subject = 'Maths'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as maths_expected_pct,
max(case when subject = 'Maths'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('higher_standard_pupil_percent') }} end) as maths_high_pct,
max(case when subject = 'Maths'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('average_scaled_score') }} end) as maths_avg_score,
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,
-- GPS (All pupils / Total)
max(case when (subject ilike '%grammar%' or subject = 'GPS')
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as gps_expected_pct,
max(case when (subject ilike '%grammar%' or subject = 'GPS')
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('higher_standard_pupil_percent') }} end) as gps_high_pct,
max(case when (subject ilike '%grammar%' or subject = 'GPS')
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('average_scaled_score') }} end) as gps_avg_score,
max(case when (subject ilike '%grammar%' or subject = 'GPS')
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as gps_absence_pct,
-- Science (All pupils / Total)
max(case when subject = 'Science'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as science_expected_pct,
max(case when subject = 'Science'
and breakdown_topic = 'All pupils' and breakdown = 'Total'
then {{ safe_numeric('absent_or_not_able_to_access_percent') }} end) as science_absence_pct,
-- Gender breakdown for Reading, Writing & Maths
max(case when subject = 'Reading, writing and maths' and breakdown = 'Boys'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_boys_pct,
max(case when subject = 'Reading, writing and maths' and breakdown = 'Boys'
then {{ safe_numeric('higher_standard_pupil_percent') }} end) as rwm_high_boys_pct,
max(case when subject = 'Reading, writing and maths' and breakdown = 'Girls'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_girls_pct,
max(case when subject = 'Reading, writing and maths' and breakdown = 'Girls'
then {{ safe_numeric('higher_standard_pupil_percent') }} end) as rwm_high_girls_pct,
-- Disadvantaged breakdown for Reading, Writing & Maths
max(case when subject = 'Reading, writing and maths' and breakdown = 'Disadvantaged'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_disadvantaged_pct,
max(case when subject = 'Reading, writing and maths' and breakdown = 'Not disadvantaged'
then {{ safe_numeric('expected_standard_pupil_percent') }} end) as rwm_expected_non_disadvantaged_pct
from attainment
group by school_urn, time_period
),
info as (
select
cast(trim(school_urn) as integer) as urn,
cast(trim(time_period) as integer) as year,
{{ safe_numeric('totpups') }}::integer as total_pupils,
{{ safe_numeric('telig') }}::integer as eligible_pupils,
{{ safe_numeric('ptfsm6cla1a') }} as disadvantaged_pct,
{{ safe_numeric('ptealgrp2') }} as eal_pct,
{{ safe_numeric('psenelk') }} as sen_support_pct,
{{ safe_numeric('psenele') }} as sen_ehcp_pct,
{{ safe_numeric('ptmobn') }} as stability_pct
from {{ source('raw', 'ees_ks2_info') }}
where school_urn is not null
)
select
p.urn,
p.year,
i.total_pupils,
i.eligible_pupils,
p.rwm_expected_pct,
p.rwm_high_pct,
p.reading_expected_pct,
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,
p.science_expected_pct,
p.reading_absence_pct,
p.writing_absence_pct,
p.maths_absence_pct,
p.gps_absence_pct,
p.science_absence_pct,
p.rwm_expected_boys_pct,
p.rwm_high_boys_pct,
p.rwm_expected_girls_pct,
p.rwm_high_girls_pct,
p.rwm_expected_disadvantaged_pct,
p.rwm_expected_non_disadvantaged_pct,
p.rwm_expected_disadvantaged_pct - p.rwm_expected_non_disadvantaged_pct as disadvantaged_gap,
i.disadvantaged_pct,
i.eal_pct,
i.sen_support_pct,
i.sen_ehcp_pct,
i.stability_pct
from pivoted p
left join info i on p.urn = i.urn and p.year = i.yearェdoc_blocks勢language」sql、refs制sources鋳」rawイees_ks2_attainment張rawャees_ks2_infoァmetrics姓functions征depends_onえmacros胎!macro.school_compare.safe_numeric・nodes壷,source.school_compare.raw.ees_ks2_attainmentル&source.school_compare.raw.ees_ks2_infoュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル#model.school_compare.stg_legacy_ks2゙,ィdatabaseョschool_compareヲschemaァstaging、nameョstg_legacy_ks2ュresource_type・modelャpackage_nameョschool_compare、pathコstaging/stg_legacy_ks2.sqlイoriginal_file_pathル!models/staging/stg_legacy_ks2.sqlゥunique_idル#model.school_compare.stg_legacy_ks2」fqn動school_compareァstagingョstg_legacy_ks2・aliasョstg_legacy_ks2ィchecksumうnameヲsha256ィchecksumル@d57ce51603d2a1d2945690ba863dca576a96b07b24187f0d603eba40602a2f3aヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized・tableヲschemaァstagingェcreated_atヒAレ萌z6'ーconfig_call_dict〓materialized・tableサunrendered_config_call_dict〓materialized・tableュrelation_nameル+"school_compare"."staging"."stg_legacy_ks2"ィraw_codeレ { config(materialized='table') }}
-- Staging model: Legacy KS2 data from pre-COVID DfE performance tables
-- The tap already maps old column names to match stg_ees_ks2 output;
-- this model just applies safe_numeric casts.
select
cast(trim(urn) as integer) as urn,
cast(trim(year) as integer) as year,
{{ safe_numeric('total_pupils') }}::integer as total_pupils,
{{ safe_numeric('eligible_pupils') }}::integer as eligible_pupils,
{{ safe_numeric('rwm_expected_pct') }} as rwm_expected_pct,
{{ safe_numeric('rwm_high_pct') }} as rwm_high_pct,
{{ safe_numeric('reading_expected_pct') }} as reading_expected_pct,
{{ safe_numeric('reading_high_pct') }} as reading_high_pct,
{{ safe_numeric('reading_avg_score') }} as reading_avg_score,
{{ safe_numeric('reading_progress') }} as reading_progress,
-- Progress CIs / working-towards: not published in the legacy CSVs.
-- Typed placeholders keep positional alignment with stg_ees_ks2 in
-- int_ks2_with_lineage's UNION ALL.
null::numeric as reading_progress_lower_ci,
null::numeric as reading_progress_upper_ci,
{{ safe_numeric('writing_expected_pct') }} as writing_expected_pct,
{{ safe_numeric('writing_high_pct') }} as writing_high_pct,
{{ safe_numeric('writing_progress') }} as writing_progress,
null::numeric as writing_progress_lower_ci,
null::numeric as writing_progress_upper_ci,
null::numeric as writing_working_towards_pct,
{{ safe_numeric('maths_expected_pct') }} as maths_expected_pct,
{{ safe_numeric('maths_high_pct') }} as maths_high_pct,
{{ safe_numeric('maths_avg_score') }} as maths_avg_score,
{{ safe_numeric('maths_progress') }} as maths_progress,
null::numeric as maths_progress_lower_ci,
null::numeric as maths_progress_upper_ci,
{{ safe_numeric('gps_expected_pct') }} as gps_expected_pct,
{{ safe_numeric('gps_high_pct') }} as gps_high_pct,
{{ safe_numeric('gps_avg_score') }} as gps_avg_score,
null::numeric as science_expected_pct,
{{ safe_numeric('reading_absence_pct') }} as reading_absence_pct,
null::numeric as writing_absence_pct,
{{ safe_numeric('maths_absence_pct') }} as maths_absence_pct,
{{ safe_numeric('gps_absence_pct') }} as gps_absence_pct,
null::numeric as science_absence_pct,
{{ safe_numeric('rwm_expected_boys_pct') }} as rwm_expected_boys_pct,
{{ safe_numeric('rwm_high_boys_pct') }} as rwm_high_boys_pct,
{{ safe_numeric('rwm_expected_girls_pct') }} as rwm_expected_girls_pct,
{{ safe_numeric('rwm_high_girls_pct') }} as rwm_high_girls_pct,
{{ safe_numeric('rwm_expected_disadvantaged_pct') }} as rwm_expected_disadvantaged_pct,
{{ safe_numeric('rwm_expected_non_disadvantaged_pct') }} as rwm_expected_non_disadvantaged_pct,
{{ safe_numeric('rwm_expected_disadvantaged_pct') }}
- {{ safe_numeric('rwm_expected_non_disadvantaged_pct') }} as disadvantaged_gap,
{{ safe_numeric('disadvantaged_pct') }} as disadvantaged_pct,
{{ safe_numeric('eal_pct') }} as eal_pct,
{{ safe_numeric('sen_support_pct') }} as sen_support_pct,
{{ safe_numeric('sen_ehcp_pct') }} as sen_ehcp_pct,
{{ safe_numeric('stability_pct') }} as stability_pct
from {{ source('raw', 'legacy_ks2') }}
where urn is not null
and urn ~ '^[0-9]+$'ェdoc_blocks勢language」sql、refs制sources葬」rawェlegacy_ks2ァmetrics姓functions征depends_onえmacros胎!macro.school_compare.safe_numeric・nodes胎$source.school_compare.raw.legacy_ks2ュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル model.school_compare.stg_ees_ks4゙,ィdatabaseョschool_compareヲschemaァstaging、nameォstg_ees_ks4ュresource_type・modelャpackage_nameョschool_compare、pathキstaging/stg_ees_ks4.sqlイoriginal_file_pathセmodels/staging/stg_ees_ks4.sqlゥunique_idル model.school_compare.stg_ees_ks4」fqn動school_compareァstagingォstg_ees_ks4・aliasォstg_ees_ks4ィchecksumうnameヲsha256ィchecksumル@3a3541de61b4d6e6b1bd82c325480e4474a143110f475b50bb3461cb60452091ヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized・tableヲschemaァstagingェcreated_atヒAレ萌z6チ ーconfig_call_dict〓materialized・tableサunrendered_config_call_dict〓materialized・tableュrelation_nameル("school_compare"."staging"."stg_ees_ks4"ィraw_codeレ{{ config(materialized='table') }}
-- Staging model: KS4 attainment data from EES
-- KS4 performance data is long-format with breakdown dimensions (breakdown_topic,
-- breakdown, sex). Unlike KS2 which has a subject dimension, KS4 metrics are
-- already in separate columns 窶 we just filter to the all-pupils total row.
-- EES uses 'z' (not applicable) and 'c' (confidential) as suppression codes 窶
-- safe_numeric handles both by treating any non-numeric string as NULL.
-- NOTE: older EES releases (pre-2023/24) use breakdown_topic = 'All pupils';
-- the 2023/24 release switched to breakdown_topic = 'Total'. Both are included.
with performance as (
select * from {{ source('raw', 'ees_ks4_performance') }}
where school_urn ~ '^[0-9]+$'
and time_period ~ '^[0-9]+$'
),
-- Filter to all-pupils totals (one row per school per year)
all_pupils as (
select
cast(trim(school_urn) as integer) as urn,
cast(trim(time_period) as integer) as year,
{{ safe_numeric('pupil_count') }}::integer as total_pupils,
-- Attainment 8
{{ safe_numeric('attainment8_average') }} as attainment_8_score,
-- Progress 8
{{ safe_numeric('progress8_average') }} as progress_8_score,
{{ safe_numeric('progress8_lower_95_ci') }} as progress_8_lower_ci,
{{ safe_numeric('progress8_upper_95_ci') }} as progress_8_upper_ci,
{{ safe_numeric('progress8eng_average') }} as progress_8_english,
{{ safe_numeric('progress8mat_average') }} as progress_8_maths,
{{ safe_numeric('progress8ebacc_average') }} as progress_8_ebacc,
{{ safe_numeric('progress8open_average') }} as progress_8_open,
-- English & Maths pass rates
{{ safe_numeric('engmath_95_percent') }} as english_maths_strong_pass_pct,
{{ safe_numeric('engmath_94_percent') }} as english_maths_standard_pass_pct,
-- EBacc
{{ safe_numeric('ebacc_entering_percent') }} as ebacc_entry_pct,
{{ safe_numeric('ebacc_95_percent') }} as ebacc_strong_pass_pct,
{{ safe_numeric('ebacc_94_percent') }} as ebacc_standard_pass_pct,
{{ safe_numeric('ebacc_aps_average') }} as ebacc_avg_score,
-- GCSE grade 9-1
{{ safe_numeric('gcse_91_percent') }} as gcse_grade_91_pct
from performance
where breakdown_topic in ('Total', 'All pupils')
and breakdown = 'Total'
and sex = 'Total'
),
-- KS4 info table for context/demographics
info as (
select
cast(trim(school_urn) as integer) as urn,
cast(trim(time_period) as integer) as year,
{{ safe_numeric('endks4_pupil_count') }}::integer as eligible_pupils,
{{ safe_numeric('ks2_scaledscore_average') }} as prior_attainment_avg,
{{ safe_numeric('sen_pupil_percent') }} as sen_pct,
{{ safe_numeric('sen_with_ehcp_pupil_percent') }} as sen_ehcp_pct,
{{ safe_numeric('sen_no_ehcp_pupil_percent') }} as sen_support_pct,
-- EES suppression sentinels (z/c/x/q/u) and blanks must not reach the
-- mart as banding labels
case
when lower(trim(progress8_banding)) in ('', 'z', 'c', 'x', 'q', 'u', 'null')
then null
else trim(progress8_banding)
end as progress_8_banding,
{{ safe_numeric('attainment8_diffn') }} as attainment_8_disadvantage_gap,
{{ safe_numeric('progress8_diffn') }} as progress_8_disadvantage_gap
from {{ source('raw', 'ees_ks4_info') }}
where school_urn is not null
)
select
p.urn,
p.year,
p.total_pupils,
i.eligible_pupils,
i.prior_attainment_avg,
-- Attainment 8
p.attainment_8_score,
-- Progress 8
p.progress_8_score,
p.progress_8_lower_ci,
p.progress_8_upper_ci,
p.progress_8_english,
p.progress_8_maths,
p.progress_8_ebacc,
p.progress_8_open,
-- English & Maths
p.english_maths_strong_pass_pct,
p.english_maths_standard_pass_pct,
-- EBacc
p.ebacc_entry_pct,
p.ebacc_strong_pass_pct,
p.ebacc_standard_pass_pct,
p.ebacc_avg_score,
-- GCSE
p.gcse_grade_91_pct,
-- Context
i.sen_pct,
i.sen_ehcp_pct,
i.sen_support_pct,
i.progress_8_banding,
i.attainment_8_disadvantage_gap,
i.progress_8_disadvantage_gap
from all_pupils p
left join info i on p.urn = i.urn and p.year = i.yearェdoc_blocks勢language」sql、refs制sources鋳」rawウees_ks4_performance張rawャees_ks4_infoァmetrics姓functions征depends_onえmacros胎!macro.school_compare.safe_numeric・nodes壷-source.school_compare.raw.ees_ks4_performanceル&source.school_compare.raw.ees_ks4_infoュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル#model.school_compare.stg_legacy_ks4゙,ィdatabaseョschool_compareヲschemaァstaging、nameョstg_legacy_ks4ュresource_type・modelャpackage_nameョschool_compare、pathコstaging/stg_legacy_ks4.sqlイoriginal_file_pathル!models/staging/stg_legacy_ks4.sqlゥunique_idル#model.school_compare.stg_legacy_ks4」fqn動school_compareァstagingョstg_legacy_ks4・aliasョstg_legacy_ks4ィchecksumうnameヲsha256ィchecksumル@794d61332074548bb35a4f49835f8046fb1422695f926d166828f5e423e149dbヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized・tableヲschemaァstagingェcreated_atヒAレ萌z6ーconfig_call_dict〓materialized・tableサunrendered_config_call_dict〓materialized・tableュrelation_nameル+"school_compare"."staging"."stg_legacy_ks4"ィraw_codeレ 6{{ config(materialized='table') }}
-- Staging model: Legacy KS4 data from pre-EES DfE performance tables
-- Covers 2015/16 窶 2018/19; EES provides 2023/24 onwards.
-- The tap already maps old column names and strips % suffixes;
-- this model just applies safe_numeric casts and adds NULL placeholders
-- for columns not available in the legacy format.
select
cast(trim(urn) as integer) as urn,
cast(trim(year) as integer) as year,
{{ safe_numeric('total_pupils') }}::integer as total_pupils,
{{ safe_numeric('total_pupils') }}::integer as eligible_pupils,
null::numeric as prior_attainment_avg,
-- Attainment 8
{{ safe_numeric('attainment_8_score') }} as attainment_8_score,
-- Progress 8
{{ safe_numeric('progress_8_score') }} as progress_8_score,
{{ safe_numeric('progress_8_lower_ci') }} as progress_8_lower_ci,
{{ safe_numeric('progress_8_upper_ci') }} as progress_8_upper_ci,
{{ safe_numeric('progress_8_english') }} as progress_8_english,
{{ safe_numeric('progress_8_maths') }} as progress_8_maths,
{{ safe_numeric('progress_8_ebacc') }} as progress_8_ebacc,
{{ safe_numeric('progress_8_open') }} as progress_8_open,
-- English & Maths pass rates
{{ safe_numeric('english_maths_strong_pass_pct') }} as english_maths_strong_pass_pct,
{{ safe_numeric('english_maths_standard_pass_pct') }} as english_maths_standard_pass_pct,
-- EBacc
{{ safe_numeric('ebacc_entry_pct') }} as ebacc_entry_pct,
{{ safe_numeric('ebacc_strong_pass_pct') }} as ebacc_strong_pass_pct,
{{ safe_numeric('ebacc_standard_pass_pct') }} as ebacc_standard_pass_pct,
null::numeric as ebacc_avg_score,
-- GCSE grade 9-1 (not published in legacy format)
null::numeric as gcse_grade_91_pct,
-- SEN
null::numeric as sen_pct,
{{ safe_numeric('sen_ehcp_pct') }} as sen_ehcp_pct,
{{ safe_numeric('sen_support_pct') }} as sen_support_pct,
-- Progress 8 banding & disadvantage gaps (not published in legacy format)
null::text as progress_8_banding,
null::numeric as attainment_8_disadvantage_gap,
null::numeric as progress_8_disadvantage_gap
from {{ source('raw', 'legacy_ks4') }}
where urn is not null
and urn ~ '^[0-9]+$'ェdoc_blocks勢language」sql、refs制sources葬」rawェlegacy_ks4ァmetrics姓functions征depends_onえmacros胎!macro.school_compare.safe_numeric・nodes胎$source.school_compare.raw.legacy_ks4ュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル+model.school_compare.fact_census_benchmarks゙,ィdatabaseョschool_compareヲschema・marts、nameカfact_census_benchmarksュresource_type・modelャpackage_nameョschool_compare、pathル marts/fact_census_benchmarks.sqlイoriginal_file_pathル'models/marts/fact_census_benchmarks.sqlゥunique_idル+model.school_compare.fact_census_benchmarks」fqn動school_compare・martsカfact_census_benchmarks・aliasカfact_census_benchmarksィchecksumうnameヲsha256ィchecksumル@a81b31b5e1a0834d9c62fe6213a42c01a5d9e5f299235bbc49a4a7b56e20fe19ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionレState-school context benchmarks from the pupil census 窶 one row per phase (primary/secondary), latest census year. fsm_pct/eal_pct are pupil-weighted means; consumers label them "state-school average (computed from our dataset)", never "England average".
ァcolumns▼phase研name・phaseォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=\config_call_dict〓materialized・tableサunrendered_config_call_dict€ュrelation_nameル1"school_compare"."marts"."fact_census_benchmarks"ィraw_codeレ{{ config(materialized='table') }}
-- Mart: state-school context benchmarks from the pupil census 窶 one row per
-- phase, latest census year. Computed at import time (never per request).
-- fsm_pct / eal_pct are pupil-weighted means, i.e. "what % of pupils", not
-- "the median school" 窶 this matches how DfE quotes national FSM/EAL rates.
-- Consumers must label these "state-school average (computed from our
-- dataset)" (spec ツァ8.6), never "England average".
with latest as (
select max(year) as year from {{ ref('fact_pupil_characteristics') }}
),
classified as (
select
case
when p.phase_type_grouping ilike '%primary%' then 'primary'
when p.phase_type_grouping ilike '%secondary%' then 'secondary'
end as phase,
p.total_pupils,
p.fsm_pct,
p.eal_pct,
l.year
from {{ ref('fact_pupil_characteristics') }} p
join latest l on p.year = l.year
where p.total_pupils is not null and p.total_pupils > 0
)
select
phase,
max(year) as year,
round((sum(fsm_pct * total_pupils) filter (where fsm_pct is not null)
/ nullif(sum(total_pupils) filter (where fsm_pct is not null), 0))::numeric, 1) as fsm_pct,
round((sum(eal_pct * total_pupils) filter (where eal_pct is not null)
/ nullif(sum(total_pupils) filter (where eal_pct is not null), 0))::numeric, 1) as eal_pct,
round(percentile_cont(0.5) within group (order by total_pupils))::integer as median_pupils
from classified
where phase is not null
group by phaseェdoc_blocks勢language」sql、refs茶、nameコfact_pupil_characteristicsァpackageタァversionタΖnameコfact_pupil_characteristicsァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎/model.school_compare.fact_pupil_characteristicsュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key則phaseェtime_spineタ・batchタル/model.school_compare.fact_pupil_characteristics゙,ィdatabaseョschool_compareヲschema・marts、nameコfact_pupil_characteristicsュresource_type・modelャpackage_nameョschool_compare、pathル$marts/fact_pupil_characteristics.sqlイoriginal_file_pathル+models/marts/fact_pupil_characteristics.sqlゥunique_idル/model.school_compare.fact_pupil_characteristics」fqn動school_compare・martsコfact_pupil_characteristics・aliasコfact_pupil_characteristicsィchecksumうnameヲsha256ィchecksumル@cffde5cbc7b2e42d0df227cd2f32410b87f817b738715017c1fc46b6a3f7122cヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル/Pupil demographics 窶 one row per URN per yearァcolumnsぅurn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝year研name、yearォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=YPーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル5"school_compare"."marts"."fact_pupil_characteristics"ィraw_codeレa-- Mart: Pupil characteristics 窶 one row per URN per year
select
urn,
year,
phase_type_grouping,
total_pupils,
female_pupils,
male_pupils,
full_time_pupils,
part_time_pupils,
total_boarders,
fsm_eligible_n,
fsm_pct,
eal_pct,
young_carer_pct,
ethnicity_white_british_pct,
ethnicity_white_other_pct,
ethnicity_gypsy_roma_pct,
ethnicity_mixed_wbc_pct,
ethnicity_mixed_wba_pct,
ethnicity_mixed_wa_pct,
ethnicity_mixed_other_pct,
ethnicity_asian_indian_pct,
ethnicity_asian_pakistani_pct,
ethnicity_asian_bangladeshi_pct,
ethnicity_asian_other_pct,
ethnicity_black_caribbean_pct,
ethnicity_black_african_pct,
ethnicity_black_other_pct,
ethnicity_chinese_pct,
ethnicity_other_pct,
ethnicity_unclassified_pct
from {{ ref('int_pupil_chars_merged') }}ェdoc_blocks勢language」sql、refs巣、nameカint_pupil_chars_mergedァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎+model.school_compare.int_pupil_chars_mergedュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル+model.school_compare.int_pupil_chars_merged゙,ィdatabaseョschool_compareヲschemaャintermediate、nameカint_pupil_chars_mergedュresource_type・modelャpackage_nameョschool_compare、pathル'intermediate/int_pupil_chars_merged.sqlイoriginal_file_pathル.models/intermediate/int_pupil_chars_merged.sqlゥunique_idル+model.school_compare.int_pupil_chars_merged」fqn動school_compareャintermediateカint_pupil_chars_merged・aliasカint_pupil_chars_mergedィchecksumうnameヲsha256ィchecksumル@e14f55eb1d34878f1b2ba334ab719ab6221efb62c147df1d7c0866ff28d9a10bヲconfig゙ ァenabledテ・aliasタヲschemaャintermediateィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaャintermediateェcreated_atヒAレ萌z7:ーーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル8"school_compare"."intermediate"."int_pupil_chars_merged"ィraw_codeレb-- Intermediate model: Merged pupil characteristics from census data
select
urn,
year,
phase_type_grouping,
total_pupils,
female_pupils,
male_pupils,
full_time_pupils,
part_time_pupils,
total_boarders,
fsm_eligible_n,
fsm_pct,
eal_pct,
young_carer_pct,
ethnicity_white_british_pct,
ethnicity_white_other_pct,
ethnicity_gypsy_roma_pct,
ethnicity_mixed_wbc_pct,
ethnicity_mixed_wba_pct,
ethnicity_mixed_wa_pct,
ethnicity_mixed_other_pct,
ethnicity_asian_indian_pct,
ethnicity_asian_pakistani_pct,
ethnicity_asian_bangladeshi_pct,
ethnicity_asian_other_pct,
ethnicity_black_caribbean_pct,
ethnicity_black_african_pct,
ethnicity_black_other_pct,
ethnicity_chinese_pct,
ethnicity_other_pct,
ethnicity_unclassified_pct
from {{ ref('stg_ees_census') }}ェdoc_blocks勢language」sql、refs巣、nameョstg_ees_censusァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎#model.school_compare.stg_ees_censusュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル#model.school_compare.stg_ees_census゙,ィdatabaseョschool_compareヲschemaァstaging、nameョstg_ees_censusュresource_type・modelャpackage_nameョschool_compare、pathコstaging/stg_ees_census.sqlイoriginal_file_pathル!models/staging/stg_ees_census.sqlゥunique_idル#model.school_compare.stg_ees_census」fqn動school_compareァstagingョstg_ees_census・aliasョstg_ees_censusィchecksumうnameヲsha256ィchecksumル@ff3c516a20ad25b525d4be015a9fcfe0a5329899c2ae7fc5aad4aa6b123fcb22ヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized・tableヲschemaァstagingェcreated_atヒAレ萌z7E(ーconfig_call_dict〓materialized・tableサunrendered_config_call_dict〓materialized・tableュrelation_nameル+"school_compare"."staging"."stg_ees_census"ィraw_codeレ \{{ config(materialized='table') }}
-- Staging model: School Pupils and Characteristics (census)
-- One row per school per year. CSV has 269 columns; we extract the
-- aggregate demographic summaries only (not per-age/year-group breakdowns).
-- Column renames happen in the tap before Singer persists to raw.ees_census.
with source as (
select * from {{ source('raw', 'ees_census') }}
where school_urn ~ '^[0-9]+$'
and time_period ~ '^[0-9]+$'
)
select
cast(trim(school_urn) as integer) as urn,
cast(trim(time_period) as integer) as year,
school_name,
phase_type_grouping,
-- Pupil counts
{{ safe_numeric('total_pupils') }}::integer as total_pupils,
{{ safe_numeric('female_pupils') }}::integer as female_pupils,
{{ safe_numeric('male_pupils') }}::integer as male_pupils,
{{ safe_numeric('full_time_pupils') }}::integer as full_time_pupils,
{{ safe_numeric('part_time_pupils') }}::integer as part_time_pupils,
{{ safe_numeric('total_boarders') }}::integer as total_boarders,
-- FSM
{{ safe_numeric('fsm_eligible_n') }}::integer as fsm_eligible_n,
{{ safe_numeric('fsm_pct') }} as fsm_pct,
-- EAL & young carers
{{ safe_numeric('eal_pct') }} as eal_pct,
{{ safe_numeric('young_carer_pct') }} as young_carer_pct,
-- Ethnicity
{{ safe_numeric('ethnicity_white_british_pct') }} as ethnicity_white_british_pct,
{{ safe_numeric('ethnicity_white_other_pct') }} as ethnicity_white_other_pct,
{{ safe_numeric('ethnicity_gypsy_roma_pct') }} as ethnicity_gypsy_roma_pct,
{{ safe_numeric('ethnicity_mixed_wbc_pct') }} as ethnicity_mixed_wbc_pct,
{{ safe_numeric('ethnicity_mixed_wba_pct') }} as ethnicity_mixed_wba_pct,
{{ safe_numeric('ethnicity_mixed_wa_pct') }} as ethnicity_mixed_wa_pct,
{{ safe_numeric('ethnicity_mixed_other_pct') }} as ethnicity_mixed_other_pct,
{{ safe_numeric('ethnicity_asian_indian_pct') }} as ethnicity_asian_indian_pct,
{{ safe_numeric('ethnicity_asian_pakistani_pct') }} as ethnicity_asian_pakistani_pct,
{{ safe_numeric('ethnicity_asian_bangladeshi_pct') }} as ethnicity_asian_bangladeshi_pct,
{{ safe_numeric('ethnicity_asian_other_pct') }} as ethnicity_asian_other_pct,
{{ safe_numeric('ethnicity_black_caribbean_pct') }} as ethnicity_black_caribbean_pct,
{{ safe_numeric('ethnicity_black_african_pct') }} as ethnicity_black_african_pct,
{{ safe_numeric('ethnicity_black_other_pct') }} as ethnicity_black_other_pct,
{{ safe_numeric('ethnicity_chinese_pct') }} as ethnicity_chinese_pct,
{{ safe_numeric('ethnicity_other_pct') }} as ethnicity_other_pct,
{{ safe_numeric('ethnicity_unclassified_pct') }} as ethnicity_unclassified_pct
from sourceェdoc_blocks勢language」sql、refs制sources葬」rawェees_censusァmetrics姓functions征depends_onえmacros胎!macro.school_compare.safe_numeric・nodes胎$source.school_compare.raw.ees_censusュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル$model.school_compare.fact_admissions゙,ィdatabaseョschool_compareヲschema・marts、nameッfact_admissionsュresource_type・modelャpackage_nameョschool_compare、pathケmarts/fact_admissions.sqlイoriginal_file_pathル models/marts/fact_admissions.sqlゥunique_idル$model.school_compare.fact_admissions」fqn動school_compare・martsッfact_admissions・aliasッfact_admissionsィchecksumうnameヲsha256ィchecksumル@b3c18e42c3c8961ca8856cf67f421a7794ac896c61dce1febe3cadade107e3c6ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル.School admissions 窶 one row per URN per yearァcolumnsurn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝year研name、yearォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks精second_preference_offers研nameクsecond_preference_offersォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks盛third_preference_offers研nameキthird_preference_offersォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks牲cross_la_applications研nameオcross_la_applicationsォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks星cross_la_offers研nameッcross_la_offersォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks成total_offers研nameャtotal_offersォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=doーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル*"school_compare"."marts"."fact_admissions"ィraw_codeレリ-- Mart: School admissions 窶 one row per URN per year
select
urn,
year,
school_phase,
places_offered,
total_offers,
total_applications,
first_preference_applications,
first_preference_offers,
second_preference_offers,
third_preference_offers,
cross_la_applications,
cross_la_offers,
first_preference_offer_pct,
oversubscription_ratio,
oversubscribed,
admissions_policy
from {{ ref('stg_ees_admissions') }}ェdoc_blocks勢language」sql、refs巣、nameイstg_ees_admissionsァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎'model.school_compare.stg_ees_admissionsュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル'model.school_compare.stg_ees_admissions゙,ィdatabaseョschool_compareヲschemaァstaging、nameイstg_ees_admissionsュresource_type・modelャpackage_nameョschool_compare、pathセstaging/stg_ees_admissions.sqlイoriginal_file_pathル%models/staging/stg_ees_admissions.sqlゥunique_idル'model.school_compare.stg_ees_admissions」fqn動school_compareァstagingイstg_ees_admissions・aliasイstg_ees_admissionsィchecksumうnameヲsha256ィchecksumル@b4e9317532796ab3413861305cf091cd216e1e4f07efec9d08c17f83cf23afbcヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaァstagingェcreated_atヒAレ萌z7がーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル/"school_compare"."staging"."stg_ees_admissions"ィraw_codeレs-- Staging model: Primary and secondary school admissions from EES
-- Wide format, one row per school per year. No geographic_level column.
-- Note: FSM_eligible_percent is stored with mixed case by target-postgres and
-- must be double-quoted in SQL to avoid case-folding to fsm_eligible_percent.
with source as (
select * from {{ source('raw', 'ees_admissions') }}
-- Exclude rows where school_urn is null, empty, or non-numeric (e.g. "n/a" LA aggregates)
where school_urn ~ '^[0-9]+$'
and time_period ~ '^[0-9]+$'
),
renamed as (
select
cast(trim(school_urn) as integer) as urn,
cast(trim(time_period) as integer) as year,
school_phase,
entry_year,
-- Places and offers
-- places_offered: number of places the school actually offered in this
-- year's admissions round. NOT the Published Admission Number (PAN),
-- which is the school's published capacity 窶 EES does not expose PAN
-- at school level, so we use the count of offers as the best proxy.
{{ safe_numeric('total_number_places_offered') }}::integer as places_offered,
{{ safe_numeric('number_preferred_offers') }}::integer as total_offers,
{{ safe_numeric('number_1st_preference_offers') }}::integer as first_preference_offers,
{{ safe_numeric('number_2nd_preference_offers') }}::integer as second_preference_offers,
{{ safe_numeric('number_3rd_preference_offers') }}::integer as third_preference_offers,
-- Applications
{{ safe_numeric('times_put_as_any_preferred_school') }}::integer as total_applications,
{{ safe_numeric('times_put_as_1st_preference') }}::integer as first_preference_applications,
-- Cross-borough demand: applications naming this school from families
-- living in another local authority, and offers made to them.
{{ safe_numeric('"all_applications_from_another_LA"') }}::integer as cross_la_applications,
{{ safe_numeric('"offers_to_applicants_from_another_LA"') }}::integer as cross_la_offers,
-- Proportions
-- first_preference_offer_pct: of families who listed this school FIRST,
-- the percentage that received an offer. 0窶100 scale.
-- The raw EES column `proportion_1stprefs_v_totaloffers` stores a
-- different, misleading figure (first-preference applications divided
-- by total offers, i.e. an oversubscription ratio) 窶 do not use it.
case
when {{ safe_numeric('times_put_as_1st_preference') }} > 0
then 100.0
* {{ safe_numeric('number_1st_preference_offers') }}
/ {{ safe_numeric('times_put_as_1st_preference') }}
end as first_preference_offer_pct,
-- Oversubscription ratio: 1st-preference applications per place offered.
-- >1 means the school is oversubscribed on first preferences.
case
when {{ safe_numeric('total_number_places_offered') }} > 0
then {{ safe_numeric('times_put_as_1st_preference') }}::numeric
/ {{ safe_numeric('total_number_places_offered') }}
end as oversubscription_ratio,
-- Derived: oversubscribed if 1st-preference applications > places offered
-- Use already-cast columns to avoid repeating the regex expression
(
{{ safe_numeric('times_put_as_1st_preference') }}
> {{ safe_numeric('total_number_places_offered') }}
) as oversubscribed,
-- Context
admissions_policy,
{{ safe_numeric('"FSM_eligible_percent"') }} as fsm_eligible_pct
from source
)
select * from renamedェdoc_blocks勢language」sql、refs制sources葬」rawョees_admissionsァmetrics姓functions征depends_onえmacros胎!macro.school_compare.safe_numeric・nodes胎(source.school_compare.raw.ees_admissionsュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル/model.school_compare.fact_ks2_national_averages゙,ィdatabaseョschool_compareヲschema・marts、nameコfact_ks2_national_averagesュresource_type・modelャpackage_nameョschool_compare、pathル$marts/fact_ks2_national_averages.sqlイoriginal_file_pathル+models/marts/fact_ks2_national_averages.sqlゥunique_idル/model.school_compare.fact_ks2_national_averages」fqn動school_compare・martsコfact_ks2_national_averages・aliasコfact_ks2_national_averagesィchecksumうnameヲsha256ィchecksumル@7e4a689b3ac405ed7311ad43cff791455f4b74e6e12dab8f75bb747e30070c20ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionルIOfficial DfE KS2 national headline averages 窶 one row per academic yearァcolumns▽year研name、yearォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=f族config_call_dict〓materialized・tableサunrendered_config_call_dict€ュrelation_nameル5"school_compare"."marts"."fact_ks2_national_averages"ィraw_codeレ轆{ config(materialized='table') }}
-- Mart: Official DfE KS2 national headline averages 窶 one row per academic year.
-- These are the published England-wide figures, not computed means from our school dataset.
-- Used by the /api/national-averages endpoint to provide accurate per-year reference lines
-- on the school history chart and for hero stat comparisons.
select
year,
rwm_expected_pct,
rwm_high_pct,
reading_expected_pct,
reading_high_pct,
reading_avg_score,
writing_expected_pct,
writing_gd_pct,
maths_expected_pct,
maths_high_pct,
maths_avg_score,
gps_expected_pct,
gps_high_pct,
gps_avg_score,
science_expected_pct
from {{ ref('stg_ees_ks2_national') }}
order by yearェdoc_blocks勢language」sql、refs巣、nameエstg_ees_ks2_nationalァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎)model.school_compare.stg_ees_ks2_nationalュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key側yearェtime_spineタ・batchタル)model.school_compare.stg_ees_ks2_national゙,ィdatabaseョschool_compareヲschemaァstaging、nameエstg_ees_ks2_nationalュresource_type・modelャpackage_nameョschool_compare、pathル staging/stg_ees_ks2_national.sqlイoriginal_file_pathル'models/staging/stg_ees_ks2_national.sqlゥunique_idル)model.school_compare.stg_ees_ks2_national」fqn動school_compareァstagingエstg_ees_ks2_national・aliasエstg_ees_ks2_nationalィchecksumうnameヲsha256ィchecksumル@7306cd5981b55f5a6505f89122cee9a4ca4c1d384431536b5240edf5f8c8e898ヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized・tableヲschemaァstagingェcreated_atヒAレ萌z7ウconfig_call_dict〓materialized・tableサunrendered_config_call_dict〓materialized・tableュrelation_nameル1"school_compare"."staging"."stg_ees_ks2_national"ィraw_codeレ'{{ config(materialized='table') }}
-- Staging model: DfE KS2 national headline averages
-- Source: EES data catalogue CSV (one row per academic year, England national total)
-- COVID years 2019/20 and 2020/21 are naturally absent 窶 DfE did not publish figures
-- because national assessments were cancelled. Those years produce no rows here.
-- 'x' (not applicable) and suppressed values are coerced to NULL by safe_numeric.
select
cast(trim(time_period) as integer) as year,
{{ safe_numeric('rwm_expected_pct') }} as rwm_expected_pct,
{{ safe_numeric('rwm_high_pct') }} as rwm_high_pct,
{{ safe_numeric('reading_expected_pct') }} as reading_expected_pct,
{{ safe_numeric('reading_high_pct') }} as reading_high_pct,
{{ safe_numeric('reading_avg_score') }} as reading_avg_score,
{{ safe_numeric('writing_expected_pct') }} as writing_expected_pct,
{{ safe_numeric('writing_gd_pct') }} as writing_gd_pct,
{{ safe_numeric('maths_expected_pct') }} as maths_expected_pct,
{{ safe_numeric('maths_high_pct') }} as maths_high_pct,
{{ safe_numeric('maths_avg_score') }} as maths_avg_score,
{{ safe_numeric('gps_expected_pct') }} as gps_expected_pct,
{{ safe_numeric('gps_high_pct') }} as gps_high_pct,
{{ safe_numeric('gps_avg_score') }} as gps_avg_score,
{{ safe_numeric('science_expected_pct') }} as science_expected_pct
from {{ source('raw', 'ees_ks2_national') }}
where time_period ~ '^[0-9]+$'
-- 2015/16 was the first year of the current expected-standard tests, so it's
-- the correct floor (not 2016/17 -- that excluded a real, comparable national
-- row). GPS/science/scaled-score columns are already mapped correctly end to
-- end (tap.py's _KS2_NATIONAL_COL_MAP + this model select them fine); the
-- prod NULLs for those fields are stale raw.ees_ks2_national data from before
-- the map covered them, not a mapping bug -- no map change accompanies this fix.
and cast(trim(time_period) as integer) >= 201516ェdoc_blocks勢language」sql、refs制sources葬」rawーees_ks2_nationalァmetrics姓functions征depends_onえmacros胎!macro.school_compare.safe_numeric・nodes胎*source.school_compare.raw.ees_ks2_nationalュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル!model.school_compare.fact_finance゙,ィdatabaseョschool_compareヲschema・marts、nameャfact_financeュresource_type・modelャpackage_nameョschool_compare、pathカmarts/fact_finance.sqlイoriginal_file_pathスmodels/marts/fact_finance.sqlゥunique_idル!model.school_compare.fact_finance」fqn動school_compare・martsャfact_finance・aliasャfact_financeィchecksumうnameヲsha256ィchecksumル@b9eb2ac96af2d48206fe73fbc8d956619c8505fea7e0f95c529484d45fe1e60aヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル2School financial data 窶 one row per URN per yearァcolumnsぅurn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝year研name、yearォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=hヌーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル'"school_compare"."marts"."fact_finance"ィraw_codeル-- Mart: School financial data 窶 one row per URN per year
select
urn,
year,
per_pupil_spend,
staff_cost_pct,
teacher_cost_pct,
support_staff_cost_pct,
premises_cost_pct
from {{ ref('stg_fbit_finance') }}ェdoc_blocks勢language」sql、refs巣、nameーstg_fbit_financeァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎%model.school_compare.stg_fbit_financeュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル%model.school_compare.stg_fbit_finance゙,ィdatabaseョschool_compareヲschemaァstaging、nameーstg_fbit_financeュresource_type・modelャpackage_nameョschool_compare、pathシstaging/stg_fbit_finance.sqlイoriginal_file_pathル#models/staging/stg_fbit_finance.sqlゥunique_idル%model.school_compare.stg_fbit_finance」fqn動school_compareァstagingーstg_fbit_finance・aliasーstg_fbit_financeィchecksumうnameヲsha256ィchecksumル@bc4c4b98c46a4a6122258cb6115f9418db5827b47cebc20a2c97641c6e90f1a2ヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaァstagingェcreated_atヒAレ萌z7 ーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル-"school_compare"."staging"."stg_fbit_finance"ィraw_codeレッ-- Staging model: Financial benchmarking data from FBIT API
with source as (
select * from {{ source('raw', 'fbit_finance') }}
),
renamed as (
select
cast(urn as integer) as urn,
cast(year as integer) as year,
cast(per_pupil_spend as numeric) as per_pupil_spend,
cast(staff_cost_pct as numeric) as staff_cost_pct,
cast(teacher_cost_pct as numeric) as teacher_cost_pct,
cast(support_staff_cost_pct as numeric) as support_staff_cost_pct,
cast(premises_cost_pct as numeric) as premises_cost_pct
from source
where urn is not null
)
select * from renamedェdoc_blocks勢language」sql、refs制sources葬」rawャfbit_financeァmetrics姓functions征depends_onえmacros是nodes胎&source.school_compare.raw.fbit_financeュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル%model.school_compare.fact_deprivation゙,ィdatabaseョschool_compareヲschema・marts、nameーfact_deprivationュresource_type・modelャpackage_nameョschool_compare、pathコmarts/fact_deprivation.sqlイoriginal_file_pathル!models/marts/fact_deprivation.sqlゥunique_idル%model.school_compare.fact_deprivation」fqn動school_compare・martsーfact_deprivation・aliasーfact_deprivationィchecksumうnameヲsha256ィchecksumル@270f49fcf16d710be2f05b9f5ce1e5c4826bdee0f5273104276fc65eec1f2d28ヲconfig゙ ァenabledテ・aliasタヲschema・martsィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized・tableエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionル+IDACI deprivation index 窶 one row per URNァcolumns▲urn研name」urnォdescription、meta€ゥdata_typeタォconstraints是quoteタヲconfigうmeta€、tags畝tags性granularityタゥdimensionタヲentityタェdoc_blocks畝meta€・groupタ、docsうshowテェnode_colorタェpatch_pathル/school_compare://models/marts/_marts_schema.ymlェbuild_pathタアunrendered_configぎmaterialized・tableヲschema・martsェcreated_atヒAレ萌z=k恐config_call_dict€サunrendered_config_call_dict€ュrelation_nameル+"school_compare"."marts"."fact_deprivation"ィraw_codeル゙-- Mart: Deprivation index 窶 one row per URN
-- The IDACI tap already resolves postcode 竊 LSOA 竊 IoD2019 score per school.
select
urn,
lsoa_code,
idaci_score,
idaci_decile
from {{ ref('stg_idaci') }}ェdoc_blocks勢language」sql、refs巣、nameゥstg_idaciァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes太model.school_compare.stg_idaciュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key促urnェtime_spineタ・batchタセmodel.school_compare.stg_idaci゙,ィdatabaseョschool_compareヲschemaァstaging、nameゥstg_idaciュresource_type・modelャpackage_nameョschool_compare、pathオstaging/stg_idaci.sqlイoriginal_file_pathシmodels/staging/stg_idaci.sqlゥunique_idセmodel.school_compare.stg_idaci」fqn動school_compareァstagingゥstg_idaci・aliasゥstg_idaciィchecksumうnameヲsha256ィchecksumル@840a949c12c1480f1cdd874c0af6fcd3d3cbb4cc6f74cee01202f6ffa9754b7cヲconfig゙ ァenabledテ・aliasタヲschemaァstagingィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、viewエincremental_strategyタェbatch_sizeタィlookback・beginタャpersist_docs€ゥpost-hook勢pre-hook制quoting€ャcolumn_types€ャfull_refreshタェunique_keyターon_schema_changeヲignoreキon_configuration_change・applyヲgrants€ィpackages畝docsうshowテェnode_colorタィcontractおenforcedツォalias_typesテェevent_timeタイconcurrent_batchesタヲaccessゥprotectedゥfreshnessタィon_errorタカlatest_version_pointerぉenabledタ・aliasタ、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configぎmaterialized、viewヲschemaァstagingェcreated_atヒAレ萌z77ーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameル&"school_compare"."staging"."stg_idaci"ィraw_codeレ-- Staging model: Income Deprivation Affecting Children Index
-- The IDACI tap resolves postcode 竊 LSOA and joins to IoD2019 data,
-- so each row already has a URN.
with source as (
select * from {{ source('raw', 'idaci') }}
),
renamed as (
select
cast(urn as integer) as urn,
lsoa_code,
cast(idaci_score as numeric) as idaci_score,
cast(idaci_decile as integer) as idaci_decile
from source
where urn is not null
)
select * from renamedェdoc_blocks勢language」sql、refs制sources葬」raw・idaciァmetrics姓functions征depends_onえmacros是nodes汰source.school_compare.raw.idaciュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタヲaccessゥprotectedォconstraints制versionタョlatest_versionターdeprecation_dateタョdefer_relationタォprimary_key征time_spineタ・batchタル,test.school_compare.assert_urns_in_uk_bounds゙#ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameクassert_urns_in_uk_boundsュresource_type、testャpackage_nameョschool_compare、pathシassert_urns_in_uk_bounds.sqlイoriginal_file_pathル"tests/assert_urns_in_uk_bounds.sqlゥunique_idル,test.school_compare.assert_urns_in_uk_bounds」fqn聴school_compareクassert_urns_in_uk_bounds・aliasクassert_urns_in_uk_boundsィchecksumうnameヲsha256ィchecksumル@b5bcc4736f23422874d0ec9963b32da568245eb4978170dc680ceccfeb22a153ヲconfig゙ァenabledテ・aliasタヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity・ERRORョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥfail_calcィcount(*)ァwarn_if、!= 0ィerror_if、!= 0、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config€ェcreated_atヒAレ萌z9憫ーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameタィraw_codeレ#-- Custom test: All geocoded schools should have coordinates within the UK
select
urn,
easting,
northing
from {{ ref('dim_location') }}
where easting is not null
and northing is not null
and (
easting < 0 or easting > 700000
or northing < 0 or northing > 1300000
)ェdoc_blocks勢language」sql、refs巣、nameャdim_locationァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes胎!model.school_compare.dim_locationュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタル,test.school_compare.assert_no_orphaned_facts゙#ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameクassert_no_orphaned_factsュresource_type、testャpackage_nameョschool_compare、pathシassert_no_orphaned_facts.sqlイoriginal_file_pathル"tests/assert_no_orphaned_facts.sqlゥunique_idル,test.school_compare.assert_no_orphaned_facts」fqn聴school_compareクassert_no_orphaned_facts・aliasクassert_no_orphaned_factsィchecksumうnameヲsha256ィchecksumル@fd5287fef72054c2f8bf3ef2450eafe63da791a301642a6b3667d0b2853cc3eeヲconfig゙ァenabledテ・aliasタヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity、warnョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥfail_calcィcount(*)ァwarn_if、!= 0ィerror_if、!= 0、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config→severity、warnェcreated_atヒAレ萌z9ヌ
ーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameタィraw_codeルヌ-- Custom test: All fact table URNs should exist in dim_school
select f.urn
from {{ ref('fact_ks2_performance') }} f
left join {{ ref('dim_school') }} d on f.urn = d.urn
where d.urn is null
limit 10ェdoc_blocks勢language」sql、refs茶、nameエfact_ks2_performanceァpackageタァversionタΖnameェdim_schoolァpackageタァversionタァsources制metrics姓functions征depends_onえmacros是nodes壷)model.school_compare.fact_ks2_performanceソmodel.school_compare.dim_schoolュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタル5test.school_compare.assert_gias_code_names_match_seed゙#ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameル!assert_gias_code_names_match_seedュresource_type、testャpackage_nameョschool_compare、pathル%assert_gias_code_names_match_seed.sqlイoriginal_file_pathル+tests/assert_gias_code_names_match_seed.sqlゥunique_idル5test.school_compare.assert_gias_code_names_match_seed」fqn聴school_compareル!assert_gias_code_names_match_seed・aliasル!assert_gias_code_names_match_seedィchecksumうnameヲsha256ィchecksumル@51084dfebf62e9f965242b1487dd043cf50a85c6305355c3403fcfb28e64967dヲconfig゙ァenabledテ・aliasタヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity、warnョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥfail_calcィcount(*)ァwarn_if、!= 0ィerror_if、!= 0、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config→severity、warnェcreated_atヒAレ萌z9リ0ーconfig_call_dict→severity、warnサunrendered_config_call_dict→severity、warnュrelation_nameタィraw_codeレレ-- Warn when the live GIAS CSV carries a (code, name) pair we don't have in
-- the dictionary seed 窶 i.e. DfE added or renamed a value. Fix by rerunning
-- pipeline/scripts/generate_gias_codes.py and committing the regenerated
-- dictionaries + seed together.
{{ config(severity='warn') }}
with raw_pairs as (
{% for field_key, code_col, name_col in [
('school_type', 'TypeOfEstablishment (code)', 'TypeOfEstablishment (name)'),
('establishment_status', 'EstablishmentStatus (code)', 'EstablishmentStatus (name)'),
('phase_of_education', 'PhaseOfEducation (code)', 'PhaseOfEducation (name)'),
('official_sixth_form', 'OfficialSixthForm (code)', 'OfficialSixthForm (name)'),
('religious_character', 'ReligiousCharacter (code)', 'ReligiousCharacter (name)'),
('admissions_policy', 'AdmissionsPolicy (code)', 'AdmissionsPolicy (name)')
] %}
select distinct
'{{ field_key }}' as field,
cast(nullif(trim("{{ code_col }}"), '') as integer) as code,
nullif(trim("{{ name_col }}"), '') as name
from {{ source('raw', 'gias_establishments') }}
where nullif(trim("{{ code_col }}"), '') is not null
and nullif(trim("{{ name_col }}"), '') is not null
{% if not loop.last %}union all{% endif %}
{% endfor %}
)
select r.*
from raw_pairs r
left join {{ ref('gias_code_names') }} s
on s.field = r.field
and s.code = r.code
and s.name = r.name
where s.field is nullェdoc_blocks勢language」sql、refs巣、nameッgias_code_namesァpackageタァversionタァsources亦」rawウgias_establishments張rawウgias_establishments張rawウgias_establishments張rawウgias_establishments張rawウgias_establishments張rawウgias_establishmentsァmetrics姓functions征depends_onえmacros是nodes壷-source.school_compare.raw.gias_establishmentsル#seed.school_compare.gias_code_namesュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタル8test.school_compare.not_null_dim_location_urn.aefc04518b゙'ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameケnot_null_dim_location_urnュresource_type、testャpackage_nameョschool_compare、pathスnot_null_dim_location_urn.sqlイoriginal_file_pathセmodels/marts/_marts_schema.ymlゥunique_idル8test.school_compare.not_null_dim_location_urn.aefc04518b」fqn動school_compare・martsケnot_null_dim_location_urn・aliasケnot_null_dim_location_urnィchecksumうname、noneィchecksumヲconfig゙ァenabledテ・aliasタヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity・ERRORョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥfail_calcィcount(*)ァwarn_if、!= 0ィerror_if、!= 0、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config€ェcreated_atヒAレ萌z>ナ邁config_call_dict€サunrendered_config_call_dict€ュrelation_nameタィraw_codeル/{{ test_not_null(**_dbt_generic_test_kwargs) }}ェdoc_blocks勢language」sql、refs巣、nameャdim_locationァpackageタァversionタァsources制metrics姓functions征depends_onえmacros孫macro.dbt.test_not_null・nodes胎!model.school_compare.dim_locationュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタォcolumn_name」urnュfile_key_nameウmodels.dim_locationュattached_nodeル!model.school_compare.dim_locationュtest_metadataΖnameィnot_nullヲkwargsきcolumn_name」urn・modelル-{{ get_where_subquery(ref('dim_location')) }}ゥnamespaceタル6test.school_compare.unique_dim_location_urn.7acc2482eb゙'ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameキunique_dim_location_urnュresource_type、testャpackage_nameョschool_compare、pathサunique_dim_location_urn.sqlイoriginal_file_pathセmodels/marts/_marts_schema.ymlゥunique_idル6test.school_compare.unique_dim_location_urn.7acc2482eb」fqn動school_compare・martsキunique_dim_location_urn・aliasキunique_dim_location_urnィchecksumうname、noneィchecksumヲconfig゙ァenabledテ・aliasタヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity・ERRORョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥfail_calcィcount(*)ァwarn_if、!= 0ィerror_if、!= 0、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config€ェcreated_atヒAレ萌z>マーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameタィraw_codeル-{{ test_unique(**_dbt_generic_test_kwargs) }}ェdoc_blocks勢language」sql、refs巣、nameャdim_locationァpackageタァversionタァsources制metrics姓functions征depends_onえmacros揃macro.dbt.test_unique・nodes胎!model.school_compare.dim_locationュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタォcolumn_name」urnュfile_key_nameウmodels.dim_locationュattached_nodeル!model.school_compare.dim_locationュtest_metadataΖnameヲuniqueヲkwargsきcolumn_name」urn・modelル-{{ get_where_subquery(ref('dim_location')) }}ゥnamespaceタルStest.school_compare.relationships_dim_location_urn__urn__ref_dim_school_.719013884a゙'ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameル4relationships_dim_location_urn__urn__ref_dim_school_ュresource_type、testャpackage_nameョschool_compare、pathル8relationships_dim_location_urn__urn__ref_dim_school_.sqlイoriginal_file_pathセmodels/marts/_marts_schema.ymlゥunique_idルStest.school_compare.relationships_dim_location_urn__urn__ref_dim_school_.719013884a」fqn動school_compare・martsル4relationships_dim_location_urn__urn__ref_dim_school_・aliasル4relationships_dim_location_urn__urn__ref_dim_school_ィchecksumうname、noneィchecksumヲconfig゙ァenabledテ・aliasタヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity・ERRORョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥfail_calcィcount(*)ァwarn_if、!= 0ィerror_if、!= 0、tags性descriptionァcolumns€、meta
 !"#$%&'()*+,-.189ォcolumn_nameーschool_type_code・modelル+{{ get_where_subquery(ref('dim_school')) }}ゥnamespaceタレ test.school_compare.accepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99.16074ac494゙'ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameル鸞ccepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99ュresource_type、testャpackage_nameョschool_compare、pathル?accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51.sqlイoriginal_file_pathセmodels/marts/_marts_schema.ymlゥunique_idレ test.school_compare.accepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99.16074ac494」fqn動school_compare・martsル鸞ccepted_values_dim_school_religious_character_code__0__2__3__4__5__6__7__8__9__10__11__12__13__14__15__16__17__18__19__20__21__22__24__25__26__28__29__30__31__32__33__34__35__36__37__38__39__40__41__42__43__44__45__46__47__48__49__99・aliasル;accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51ィchecksumうname、noneィchecksumヲconfig゙ァenabledテ・aliasル;accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51ヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity、warnョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥfail_calcィcount(*)ァwarn_if、!= 0ィerror_if、!= 0、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_configおseverity、warn・aliasル;accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51ェcreated_atヒAレ萌z?ャ恐config_call_dictおseverity、warn・aliasル;accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51サunrendered_config_call_dictおseverity、warn・aliasル;accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51ュrelation_nameタィraw_codeル養{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(severity="warn",alias="accepted_values_dim_school_1a238e6e3f01d47aeac019cd1c400d51") }}ェdoc_blocks勢language」sql、refs巣、nameェdim_schoolァpackageタァversionタァsources制metrics姓functions征depends_onえmacros沈macro.dbt.test_accepted_valuesシmacro.dbt.get_where_subquery・nodes汰model.school_compare.dim_schoolュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタォcolumn_nameクreligious_character_codeュfile_key_nameアmodels.dim_schoolュattached_nodeソmodel.school_compare.dim_schoolュtest_metadataΖnameッaccepted_valuesヲkwargsΘvaluesワ0
 !"#$%&'()*+,-./01cォcolumn_nameクreligious_character_code・modelル+{{ get_where_subquery(ref('dim_school')) }}ゥnamespaceタル\test.school_compare.accepted_values_dim_school_admissions_policy_code__0__2__4__9.cfb6e9f008゙'ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameル=accepted_values_dim_school_admissions_policy_code__0__2__4__9ュresource_type、testャpackage_nameョschool_compare、pathルAaccepted_values_dim_school_admissions_policy_code__0__2__4__9.sqlイoriginal_file_pathセmodels/marts/_marts_schema.ymlゥunique_idル\test.school_compare.accepted_values_dim_school_admissions_policy_code__0__2__4__9.cfb6e9f008」fqn動school_compare・martsル=accepted_values_dim_school_admissions_policy_code__0__2__4__9・aliasル=accepted_values_dim_school_admissions_policy_code__0__2__4__9ィchecksumうname、noneィchecksumヲconfig゙ァenabledテ・aliasタヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity、warnョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥfail_calcィcount(*)ァwarn_if、!= 0ィerror_if、!= 0、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config→severity、warnェcreated_atヒAレ萌z?ソカーconfig_call_dict→severity、warnサunrendered_config_call_dict→severity、warnュrelation_nameタィraw_codeルS{{ test_accepted_values(**_dbt_generic_test_kwargs) }}{{ config(severity="warn") }}ェdoc_blocks勢language」sql、refs巣、nameェdim_schoolァpackageタァversionタァsources制metrics姓functions征depends_onえmacros沈macro.dbt.test_accepted_valuesシmacro.dbt.get_where_subquery・nodes汰model.school_compare.dim_schoolュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタォcolumn_nameカadmissions_policy_codeュfile_key_nameアmodels.dim_schoolュattached_nodeソmodel.school_compare.dim_schoolュtest_metadataΖnameッaccepted_valuesヲkwargsΘvalues ォcolumn_nameカadmissions_policy_code・modelル+{{ get_where_subquery(ref('dim_school')) }}ゥnamespaceタル@test.school_compare.not_null_fact_ks2_performance_urn.7b7546cb10゙'ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameル!not_null_fact_ks2_performance_urnュresource_type、testャpackage_nameョschool_compare、pathル%not_null_fact_ks2_performance_urn.sqlイoriginal_file_pathセmodels/marts/_marts_schema.ymlゥunique_idル@test.school_compare.not_null_fact_ks2_performance_urn.7b7546cb10」fqn動school_compare・martsル!not_null_fact_ks2_performance_urn・aliasル!not_null_fact_ks2_performance_urnィchecksumうname、noneィchecksumヲconfig゙ァenabledテ・aliasタヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity・ERRORョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥfail_calcィcount(*)ァwarn_if、!= 0ィerror_if、!= 0、tags性descriptionァcolumns€、meta€・groupタ、docsうshowテェnode_colorタェpatch_pathタェbuild_pathタアunrendered_config€ェcreated_atヒAレ萌z?ミネーconfig_call_dict€サunrendered_config_call_dict€ュrelation_nameタィraw_codeル/{{ test_not_null(**_dbt_generic_test_kwargs) }}ェdoc_blocks勢language」sql、refs巣、nameエfact_ks2_performanceァpackageタァversionタァsources制metrics姓functions征depends_onえmacros孫macro.dbt.test_not_null・nodes胎)model.school_compare.fact_ks2_performanceュcompiled_pathタィcontractΚenforcedツォalias_typesティchecksumタォcolumn_name」urnュfile_key_nameサmodels.fact_ks2_performanceュattached_nodeル)model.school_compare.fact_ks2_performanceュtest_metadataΖnameィnot_nullヲkwargsきcolumn_name」urn・modelル5{{ get_where_subquery(ref('fact_ks2_performance')) }}ゥnamespaceタルAtest.school_compare.not_null_fact_ks2_performance_year.bf28467bae゙'ィdatabaseョschool_compareヲschemaッdbt_test__audit、nameル"not_null_fact_ks2_performance_yearュresource_type、testャpackage_nameョschool_compare、pathル&not_null_fact_ks2_performance_year.sqlイoriginal_file_pathセmodels/marts/_marts_schema.ymlゥunique_idルAtest.school_compare.not_null_fact_ks2_performance_year.bf28467bae」fqn動school_compare・martsル"not_null_fact_ks2_performance_year・aliasル"not_null_fact_ks2_performance_yearィchecksumうname、noneィchecksumヲconfig゙ァenabledテ・aliasタヲschemaッdbt_test__auditィdatabaseタ、tags畝meta€・groupタッstatic_analysisタャmaterialized、testィseverity・ERRORョstore_failuresタアstore_failures_asタェsql_headerタ・whereタ・limitタゥf
case
when {{ column }}::text in ('1', 'Outstanding') then 1
when {{ column }}::text in ('2', 'Good') then 2
when {{ column }}::text in ('3', 'Requires improvement', 'Requires Improvement', 'Satisfactory') then 3
when {{ column }}::text in ('4', 'Inadequate') then 4
when {{ column }}::text in ('9', 'SWK', 'Serious Weaknesses') then 4
when {{ column }}::text in ('SM', 'Special Measures') then 4
else null
end
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameヲcolumn、typeタォdescriptionェcreated_atヒAレ萌Bヘ誹ウsupported_languagesタル,macro.school_compare.validate_uk_coordinates゙、nameキvalidate_uk_coordinatesュresource_type・macroャpackage_nameョschool_compare、pathル"macros/validate_uk_coordinates.sqlイoriginal_file_pathル"macros/validate_uk_coordinates.sqlゥunique_idル,macro.school_compare.validate_uk_coordinatesゥmacro_sqlルォ{% macro validate_uk_coordinates(lat_col, lng_col) %}
(
{{ lat_col }} between 49.0 and 61.0
and {{ lng_col }} between -8.0 and 2.0
)
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameァlat_col、typeタォdescriptionΖnameァlng_col、typeタォdescriptionェcreated_atヒAレ萌Bヘ匁ウsupported_languagesタル,macro.school_compare.parse_report_card_grade゙、nameキparse_report_card_gradeュresource_type・macroャpackage_nameョschool_compare、pathル"macros/parse_report_card_grade.sqlイoriginal_file_pathル"macros/parse_report_card_grade.sqlゥunique_idル,macro.school_compare.parse_report_card_gradeゥmacro_sqlレP{% macro parse_report_card_grade(column_name) %}
case lower(trim(nullif({{ column_name }}, 'NULL')))
when 'exceptional' then 1
when 'strong standard' then 2
when 'expected standard' then 3
when 'needs attention' then 4
when 'urgent improvement' then 5
else null
end
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameォcolumn_name、typeタォdescriptionェcreated_atヒAレ萌Bヘ枠ウsupported_languagesタル+macro.school_compare.parse_ungraded_outcome゙、nameカparse_ungraded_outcomeュresource_type・macroャpackage_nameョschool_compare、pathル!macros/parse_ungraded_outcome.sqlイoriginal_file_pathル!macros/parse_ungraded_outcome.sqlゥunique_idル+macro.school_compare.parse_ungraded_outcomeゥmacro_sqlルレ{% macro parse_ungraded_outcome(column) %}
case
when {{ column }} ilike '%remains Outstanding%' then 1
when {{ column }} ilike '%remains Good%' then 2
else null
end
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameヲcolumn、typeタォdescriptionェcreated_atヒAレ萌Bヘウsupported_languagesタル)macro.school_compare.generate_schema_name゙、nameエgenerate_schema_nameュresource_type・macroャpackage_nameョschool_compare、pathソmacros/generate_schema_name.sqlイoriginal_file_pathソmacros/generate_schema_name.sqlゥunique_idル)macro.school_compare.generate_schema_nameゥmacro_sqlル炮% macro generate_schema_name(custom_schema_name, node) -%}
{%- if custom_schema_name is not none -%}
{{ custom_schema_name | trim }}
{%- else -%}
{{ target.schema }}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイcustom_schema_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌Bヘ彁ウsupported_languagesタル!macro.school_compare.safe_numeric゙、nameャsafe_numericュresource_type・macroャpackage_nameョschool_compare、pathキmacros/safe_numeric.sqlイoriginal_file_pathキmacros/safe_numeric.sqlゥunique_idル!macro.school_compare.safe_numericゥmacro_sqlル% macro safe_numeric(col) -%}
CASE WHEN {{ col }} ~ '^-?[0-9]+(\.[0-9]+)?$' THEN {{ col }}::numeric ELSE NULL END
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」col、typeタォdescriptionェcreated_atヒAレ萌Bヘ敕ウsupported_languagesタル"macro.school_compare.chain_lineage゙、nameュchain_lineageュresource_type・macroャpackage_nameョschool_compare、pathクmacros/chain_lineage.sqlイoriginal_file_pathクmacros/chain_lineage.sqlゥunique_idル"macro.school_compare.chain_lineageゥmacro_sqlレ{% macro chain_lineage(source_ref, urn_col='urn', year_col='year') %}
with current_data as (
select
{{ urn_col }} as current_urn,
{{ urn_col }} as source_urn,
*
from {{ source_ref }}
),
predecessor_data as (
select
lin.current_urn,
src.{{ urn_col }} as source_urn,
src.*
from {{ source_ref }} src
inner join {{ ref('int_school_lineage') }} lin
on src.{{ urn_col }} = lin.predecessor_urn
where not exists (
select 1 from {{ source_ref }} curr
where curr.{{ urn_col }} = lin.current_urn
and curr.{{ year_col }} = src.{{ year_col }}
)
),
combined as (
select * from current_data
union all
select * from predecessor_data
)
select * from combined
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameェsource_ref、typeタォdescriptionΖnameァurn_col、typeタォdescriptionΖnameィyear_col、typeタォdescriptionェcreated_atヒAレ萌Bヘ。魑supported_languagesタル.macro.dbt_postgres.postgres__current_timestamp゙、nameサpostgres__current_timestampュresource_type・macroャpackage_nameャdbt_postgres、pathオmacros/timestamps.sqlイoriginal_file_pathオmacros/timestamps.sqlゥunique_idル.macro.dbt_postgres.postgres__current_timestampゥmacro_sqlルD{% macro postgres__current_timestamp() -%}
now()
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bヘ」ウsupported_languagesタル4macro.dbt_postgres.postgres__snapshot_string_as_time゙、nameル!postgres__snapshot_string_as_timeュresource_type・macroャpackage_nameャdbt_postgres、pathオmacros/timestamps.sqlイoriginal_file_pathオmacros/timestamps.sqlゥunique_idル4macro.dbt_postgres.postgres__snapshot_string_as_timeゥmacro_sqlルョ{% macro postgres__snapshot_string_as_time(timestamp) -%}
{%- set result = "'" ~ timestamp ~ "'::timestamp without time zone" -%}
{{ return(result) }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameゥtimestamp、typeタォdescriptionェcreated_atヒAレ萌Bヘゥ~ウsupported_languagesタル.macro.dbt_postgres.postgres__snapshot_get_time゙、nameサpostgres__snapshot_get_timeュresource_type・macroャpackage_nameャdbt_postgres、pathオmacros/timestamps.sqlイoriginal_file_pathオmacros/timestamps.sqlゥunique_idル.macro.dbt_postgres.postgres__snapshot_get_timeゥmacro_sqlルs{% macro postgres__snapshot_get_time() -%}
{{ current_timestamp() }}::timestamp without time zone
{%- endmacro %}ェdepends_on※macros遜macro.dbt.current_timestampォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BヘェOウsupported_languagesタル9macro.dbt_postgres.postgres__current_timestamp_backcompat゙、nameル&postgres__current_timestamp_backcompatュresource_type・macroャpackage_nameャdbt_postgres、pathオmacros/timestamps.sqlイoriginal_file_pathオmacros/timestamps.sqlゥunique_idル9macro.dbt_postgres.postgres__current_timestamp_backcompatゥmacro_sqlルq{% macro postgres__current_timestamp_backcompat() %}
current_timestamp::{{ type_timestamp() }}
{% endmacro %}ェdepends_on※macros尊macro.dbt.type_timestampォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bヘォウsupported_languagesタル@macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompat゙、nameル-postgres__current_timestamp_in_utc_backcompatュresource_type・macroャpackage_nameャdbt_postgres、pathオmacros/timestamps.sqlイoriginal_file_pathオmacros/timestamps.sqlゥunique_idル@macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompatゥmacro_sqlル砿% macro postgres__current_timestamp_in_utc_backcompat() %}
(current_timestamp at time zone 'utc')::{{ type_timestamp() }}
{% endmacro %}ェdepends_on※macros尊macro.dbt.type_timestampォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bヘォシウsupported_languagesタル2macro.dbt_postgres.postgres__get_catalog_relations゙、nameソpostgres__get_catalog_relationsュresource_type・macroャpackage_nameャdbt_postgres、pathイmacros/catalog.sqlイoriginal_file_pathイmacros/catalog.sqlゥunique_idル2macro.dbt_postgres.postgres__get_catalog_relationsゥmacro_sqlレ % macro postgres__get_catalog_relations(information_schema, relations) -%}
{%- call statement('catalog', fetch_result=True) -%}
{#
If the user has multiple databases set and the first one is wrong, this will fail.
But we won't fail in the case where there are multiple quoting-difference-only dbs, which is better.
#}
{% set database = information_schema.database %}
{{ adapter.verify_database(database) }}
select
'{{ database }}' as table_database,
sch.nspname as table_schema,
tbl.relname as table_name,
case tbl.relkind
when 'v' then 'VIEW'
when 'm' then 'MATERIALIZED VIEW'
else 'BASE TABLE'
end as table_type,
tbl_desc.description as table_comment,
col.attname as column_name,
col.attnum as column_index,
pg_catalog.format_type(col.atttypid, col.atttypmod) as column_type,
col_desc.description as column_comment,
pg_get_userbyid(tbl.relowner) as table_owner
from pg_catalog.pg_namespace sch
join pg_catalog.pg_class tbl on tbl.relnamespace = sch.oid
join pg_catalog.pg_attribute col on col.attrelid = tbl.oid
left outer join pg_catalog.pg_description tbl_desc on (tbl_desc.objoid = tbl.oid and tbl_desc.objsubid = 0)
left outer join pg_catalog.pg_description col_desc on (col_desc.objoid = tbl.oid and col_desc.objsubid = col.attnum)
where (
{%- for relation in relations -%}
{%- if relation.identifier -%}
(upper(sch.nspname) = upper('{{ relation.schema }}') and
upper(tbl.relname) = upper('{{ relation.identifier }}'))
{%- else-%}
upper(sch.nspname) = upper('{{ relation.schema }}')
{%- endif -%}
{%- if not loop.last %} or {% endif -%}
{%- endfor -%}
)
and not pg_is_other_temp_schema(sch.oid) -- not a temporary schema belonging to another session
and tbl.relpersistence in ('p', 'u') -- [p]ermanent table or [u]nlogged table. Exclude [t]emporary tables
and tbl.relkind in ('r', 'v', 'f', 'p', 'm') -- o[r]dinary table, [v]iew, [f]oreign table, [p]artitioned table, [m]aterialized view. Other values are [i]ndex, [S]equence, [c]omposite type, [t]OAST table
and col.attnum > 0 -- negative numbers are used for system columns such as oid
and not col.attisdropped -- column as not been dropped
order by
sch.nspname,
tbl.relname,
col.attnum
{%- endcall -%}
{{ return(load_result('catalog').table) }}
{%- endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameゥrelations、typeタォdescriptionェcreated_atヒAレ萌Bヘイ鋧supported_languagesタル(macro.dbt_postgres.postgres__get_catalog゙、nameオpostgres__get_catalogュresource_type・macroャpackage_nameャdbt_postgres、pathイmacros/catalog.sqlイoriginal_file_pathイmacros/catalog.sqlゥunique_idル(macro.dbt_postgres.postgres__get_catalogゥmacro_sqlレ){% macro postgres__get_catalog(information_schema, schemas) -%}
{%- set relations = [] -%}
{%- for schema in schemas -%}
{%- set dummy = relations.append({'schema': schema}) -%}
{%- endfor -%}
{{ return(postgres__get_catalog_relations(information_schema, relations)) }}
{%- endmacro %}ェdepends_on※macros胎2macro.dbt_postgres.postgres__get_catalog_relationsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameァschemas、typeタォdescriptionェcreated_atヒAレ萌BヘオOウsupported_languagesタル*macro.dbt_postgres.postgres__get_relations゙、nameキpostgres__get_relationsュresource_type・macroャpackage_nameャdbt_postgres、pathエmacros/relations.sqlイoriginal_file_pathエmacros/relations.sqlゥunique_idル*macro.dbt_postgres.postgres__get_relationsゥmacro_sqlレ % macro postgres__get_relations() -%}
{#
-- in pg_depend, objid is the dependent, refobjid is the referenced object
-- > a pg_depend entry indicates that the referenced object cannot be
-- > dropped without also dropping the dependent object.
#}
{%- call statement('relations', fetch_result=True) -%}
select distinct
dependent_namespace.nspname as dependent_schema,
dependent_class.relname as dependent_name,
referenced_namespace.nspname as referenced_schema,
referenced_class.relname as referenced_name
-- Query for views: views are entries in pg_class with an entry in pg_rewrite, but we avoid
-- a seq scan on pg_rewrite by leveraging the fact there is an "internal" row in pg_depend for
-- the view...
from pg_class as dependent_class
join pg_namespace as dependent_namespace on dependent_namespace.oid = dependent_class.relnamespace
join pg_depend as dependent_depend on dependent_depend.refobjid = dependent_class.oid
and dependent_depend.classid = 'pg_rewrite'::regclass
and dependent_depend.refclassid = 'pg_class'::regclass
and dependent_depend.deptype = 'i'
-- ... and via pg_depend (that has a row per column, hence the need for "distinct" above, and
-- making sure to exclude the internal row to avoid a view appearing to depend on itself)...
join pg_depend as joining_depend on joining_depend.objid = dependent_depend.objid
and joining_depend.classid = 'pg_rewrite'::regclass
and joining_depend.refclassid = 'pg_class'::regclass
and joining_depend.refobjid != dependent_depend.refobjid
-- ... we can find the tables they query from in pg_class, but excluding system tables. Note we
-- don't need need to exclude _dependent_ system tables, because they only query from other
-- system tables, and so are automatically excluded by excluding _referenced_ system tables
join pg_class as referenced_class on referenced_class.oid = joining_depend.refobjid
join pg_namespace as referenced_namespace on referenced_namespace.oid = referenced_class.relnamespace
and referenced_namespace.nspname != 'information_schema'
and referenced_namespace.nspname not like 'pg\_%'
order by
dependent_schema, dependent_name, referenced_schema, referenced_name;
{%- endcall -%}
{{ return(load_result('relations').table) }}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BヘケAウsupported_languagesタル)macro.dbt_postgres.postgres_get_relations゙、nameカpostgres_get_relationsュresource_type・macroャpackage_nameャdbt_postgres、pathエmacros/relations.sqlイoriginal_file_pathエmacros/relations.sqlゥunique_idル)macro.dbt_postgres.postgres_get_relationsゥmacro_sqlル]{% macro postgres_get_relations() %}
{{ return(postgres__get_relations()) }}
{% endmacro %}ェdepends_on※macros胎*macro.dbt_postgres.postgres__get_relationsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bヘコウsupported_languagesタル,macro.dbt_postgres.postgres__create_table_as゙、nameケpostgres__create_table_asュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル,macro.dbt_postgres.postgres__create_table_asゥmacro_sqlレ4{% macro postgres__create_table_as(temporary, relation, sql) -%}
{%- set unlogged = config.get('unlogged', default=false) -%}
{%- set sql_header = config.get('sql_header', none) -%}
{{ sql_header if sql_header is not none }}
create {% if temporary -%}
temporary
{%- elif unlogged -%}
unlogged
{%- endif %} table {{ relation }}
{% set contract_config = config.get('contract') %}
{% if contract_config.enforced %}
{{ get_assert_columns_equivalent(sql) }}
{% endif -%}
{% if contract_config.enforced and (not temporary) -%}
{{ get_table_columns_and_constraints() }} ;
insert into {{ relation }} (
{{ adapter.dispatch('get_column_names', 'dbt')() }}
)
{%- set sql = get_select_subquery(sql) %}
{% else %}
as
{% endif %}
(
{{ sql }}
);
{%- endmacro %}ェdepends_on※macros匪'macro.dbt.get_assert_columns_equivalentル+macro.dbt.get_table_columns_and_constraintsル#macro.dbt.default__get_column_namesスmacro.dbt.get_select_subqueryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameゥtemporary、typeタォdescriptionΖnameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌BヘノXウsupported_languagesタル1macro.dbt_postgres.postgres__get_create_index_sql゙、nameセpostgres__get_create_index_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル1macro.dbt_postgres.postgres__get_create_index_sqlゥmacro_sqlレ{% macro postgres__get_create_index_sql(relation, index_dict) -%}
{%- set index_config = adapter.parse_index(index_dict) -%}
{%- set comma_separated_columns = ", ".join(index_config.columns) -%}
{%- set index_name = index_config.render(relation) -%}
create {% if index_config.unique -%}
unique
{%- endif %} index if not exists
"{{ index_name }}"
on {{ relation }} {% if index_config.type -%}
using {{ index_config.type }}
{%- endif %}
({{ comma_separated_columns }})
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameェindex_dict、typeタォdescriptionェcreated_atヒAレ萌Bヘフpウsupported_languagesタル*macro.dbt_postgres.postgres__create_schema゙、nameキpostgres__create_schemaュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル*macro.dbt_postgres.postgres__create_schemaゥmacro_sqlレ8{% macro postgres__create_schema(relation) -%}
{% if relation.database -%}
{{ adapter.verify_database(relation.database) }}
{%- endif -%}
{%- call statement('create_schema') -%}
create schema if not exists {{ relation.without_identifier().include(database=False) }}
{%- endcall -%}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bヘホpウsupported_languagesタル(macro.dbt_postgres.postgres__drop_schema゙、nameオpostgres__drop_schemaュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル(macro.dbt_postgres.postgres__drop_schemaゥmacro_sqlレ6{% macro postgres__drop_schema(relation) -%}
{% if relation.database -%}
{{ adapter.verify_database(relation.database) }}
{%- endif -%}
{%- call statement('drop_schema') -%}
drop schema if exists {{ relation.without_identifier().include(database=False) }} cascade
{%- endcall -%}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bヘミhウsupported_languagesタル4macro.dbt_postgres.postgres__get_columns_in_relation゙、nameル!postgres__get_columns_in_relationュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル4macro.dbt_postgres.postgres__get_columns_in_relationゥmacro_sqlレ掉% macro postgres__get_columns_in_relation(relation) -%}
{% call statement('get_columns_in_relation', fetch_result=True) %}
select
column_name,
data_type,
character_maximum_length,
numeric_precision,
numeric_scale
from {{ relation.information_schema('columns') }}
where table_name = '{{ relation.identifier }}'
{% if relation.schema %}
and table_schema = '{{ relation.schema }}'
{% endif %}
order by ordinal_position
{% endcall %}
{% set table = load_result('get_columns_in_relation').table %}
{{ return(sql_convert_columns_in_relation(table)) }}
{% endmacro %}ェdepends_on※macros諜macro.dbt.statementル)macro.dbt.sql_convert_columns_in_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌BヘモWウsupported_languagesタル;macro.dbt_postgres.postgres__list_relations_without_caching゙、nameル(postgres__list_relations_without_cachingュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル;macro.dbt_postgres.postgres__list_relations_without_cachingゥmacro_sqlレツ{% macro postgres__list_relations_without_caching(schema_relation) %}
{% call statement('list_relations_without_caching', fetch_result=True) -%}
select
'{{ schema_relation.database }}' as database,
tablename as name,
schemaname as schema,
'table' as type
from pg_tables
where schemaname ilike '{{ schema_relation.schema }}'
union all
select
'{{ schema_relation.database }}' as database,
viewname as name,
schemaname as schema,
'view' as type
from pg_views
where schemaname ilike '{{ schema_relation.schema }}'
union all
select
'{{ schema_relation.database }}' as database,
matviewname as name,
schemaname as schema,
'materialized_view' as type
from pg_matviews
where schemaname ilike '{{ schema_relation.schema }}'
union all
select distinct
'{{ schema_relation.database }}' as database,
proname as name,
ns.nspname as schema,
'function' as type
from pg_proc
join pg_namespace as ns on pronamespace = ns.oid
where ns.nspname ilike '{{ schema_relation.schema }}'
{% endcall %}
{{ return(load_result('list_relations_without_caching').table) }}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッschema_relation、typeタォdescriptionェcreated_atヒAレ萌Bヘヨ€ウsupported_languagesタル4macro.dbt_postgres.postgres__information_schema_name゙、nameル!postgres__information_schema_nameュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル4macro.dbt_postgres.postgres__information_schema_nameゥmacro_sqlルク{% macro postgres__information_schema_name(database) -%}
{% if database_name -%}
{{ adapter.verify_database(database_name) }}
{%- endif -%}
information_schema
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィdatabase、typeタォdescriptionェcreated_atヒAレ萌Bヘラ。ウsupported_languagesタル)macro.dbt_postgres.postgres__list_schemas゙、nameカpostgres__list_schemasュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル)macro.dbt_postgres.postgres__list_schemasゥmacro_sqlレH{% macro postgres__list_schemas(database) %}
{% if database -%}
{{ adapter.verify_database(database) }}
{%- endif -%}
{% call statement('list_schemas', fetch_result=True, auto_begin=False) %}
select distinct nspname from pg_namespace
{% endcall %}
{{ return(load_result('list_schemas').table) }}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィdatabase、typeタォdescriptionェcreated_atヒAレ萌Bヘルコウsupported_languagesタル0macro.dbt_postgres.postgres__check_schema_exists゙、nameスpostgres__check_schema_existsュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル0macro.dbt_postgres.postgres__check_schema_existsゥmacro_sqlレュ{% macro postgres__check_schema_exists(information_schema, schema) -%}
{% if information_schema.database -%}
{{ adapter.verify_database(information_schema.database) }}
{%- endif -%}
{% call statement('check_schema_exists', fetch_result=True, auto_begin=False) %}
select count(*) from pg_namespace where nspname = '{{ schema }}'
{% endcall %}
{{ return(load_result('check_schema_exists').table) }}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameヲschema、typeタォdescriptionェcreated_atヒAレ萌Bヘワウsupported_languagesタル6macro.dbt_postgres.postgres__make_relation_with_suffix゙、nameル#postgres__make_relation_with_suffixュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル6macro.dbt_postgres.postgres__make_relation_with_suffixゥmacro_sqlレG{% macro postgres__make_relation_with_suffix(base_relation, suffix, dstring) %}
{% if dstring %}
{% set dt = modules.datetime.datetime.now() %}
{% set dtstring = dt.strftime("%H%M%S%f") %}
{% set suffix = suffix ~ dtstring %}
{% endif %}
{% set suffix_length = suffix|length %}
{% set relation_max_name_length = base_relation.relation_max_name_length() %}
{% if suffix_length > relation_max_name_length %}
{% do exceptions.raise_compiler_error('Relation suffix is too long (' ~ suffix_length ~ ' characters). Maximum length is ' ~ relation_max_name_length ~ ' characters.') %}
{% endif %}
{% set identifier = base_relation.identifier[:relation_max_name_length - suffix_length] ~ suffix %}
{{ return(base_relation.incorporate(path={"identifier": identifier })) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameュbase_relation、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionΖnameァdstring、typeタォdescriptionェcreated_atヒAレ萌Bヘ;ウsupported_languagesタル7macro.dbt_postgres.postgres__make_intermediate_relation゙、nameル$postgres__make_intermediate_relationュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル7macro.dbt_postgres.postgres__make_intermediate_relationゥmacro_sqlルイ{% macro postgres__make_intermediate_relation(base_relation, suffix) %}
{{ return(postgres__make_relation_with_suffix(base_relation, suffix, dstring=False)) }}
{% endmacro %}ェdepends_on※macros胎6macro.dbt_postgres.postgres__make_relation_with_suffixォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュbase_relation、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionェcreated_atヒAレ萌Bヘ穹ウsupported_languagesタル/macro.dbt_postgres.postgres__make_temp_relation゙、nameシpostgres__make_temp_relationュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル/macro.dbt_postgres.postgres__make_temp_relationゥmacro_sqlレ8{% macro postgres__make_temp_relation(base_relation, suffix) %}
{% set temp_relation = postgres__make_relation_with_suffix(base_relation, suffix, dstring=True) %}
{{ return(temp_relation.incorporate(path={"schema": none,
"database": none})) }}
{% endmacro %}ェdepends_on※macros胎6macro.dbt_postgres.postgres__make_relation_with_suffixォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュbase_relation、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionェcreated_atヒAレ萌Bヘ舸ウsupported_languagesタル1macro.dbt_postgres.postgres__make_backup_relation゙、nameセpostgres__make_backup_relationュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル1macro.dbt_postgres.postgres__make_backup_relationゥmacro_sqlレ{% macro postgres__make_backup_relation(base_relation, backup_relation_type, suffix) %}
{% set backup_relation = postgres__make_relation_with_suffix(base_relation, suffix, dstring=False) %}
{{ return(backup_relation.incorporate(type=backup_relation_type)) }}
{% endmacro %}ェdepends_on※macros胎6macro.dbt_postgres.postgres__make_relation_with_suffixォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameュbase_relation、typeタォdescriptionΖnameエbackup_relation_type、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionェcreated_atヒAレ萌Bヘ%ウsupported_languagesタル*macro.dbt_postgres.postgres_escape_comment゙、nameキpostgres_escape_commentュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル*macro.dbt_postgres.postgres_escape_commentゥmacro_sqlレイ{% macro postgres_escape_comment(comment) -%}
{% if comment is not string %}
{% do exceptions.raise_compiler_error('cannot escape a non-string: ' ~ comment) %}
{% endif %}
{%- set magic = '$dbt_comment_literal_block$' -%}
{%- if magic in comment -%}
{%- do exceptions.raise_compiler_error('The string ' ~ magic ~ ' is not allowed in comments.') -%}
{%- endif -%}
{{ magic }}{{ comment }}{{ magic }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameァcomment、typeタォdescriptionェcreated_atヒAレ萌Bヘ驕ウsupported_languagesタル3macro.dbt_postgres.postgres__alter_relation_comment゙、nameル postgres__alter_relation_commentュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル3macro.dbt_postgres.postgres__alter_relation_commentゥmacro_sqlレ% macro postgres__alter_relation_comment(relation, comment) %}
{% set escaped_comment = postgres_escape_comment(comment) %}
{% if relation.type == 'materialized_view' -%}
{% set relation_type = "materialized view" %}
{%- else -%}
{%- set relation_type = relation.type -%}
{%- endif -%}
comment on {{ relation_type }} {{ relation }} is {{ escaped_comment }};
{% endmacro %}ェdepends_on※macros胎*macro.dbt_postgres.postgres_escape_commentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameァcomment、typeタォdescriptionェcreated_atヒAレ萌Bヘウsupported_languagesタル1macro.dbt_postgres.postgres__alter_column_comment゙、nameセpostgres__alter_column_commentュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル1macro.dbt_postgres.postgres__alter_column_commentゥmacro_sqlレ*{% macro postgres__alter_column_comment(relation, column_dict) %}
{% set existing_columns = adapter.get_columns_in_relation(relation) | map(attribute="name") | list %}
{% for column_name in column_dict if (column_name in existing_columns) %}
{% set comment = column_dict[column_name]['description'] %}
{% set escaped_comment = postgres_escape_comment(comment) %}
comment on column {{ relation }}.{{ adapter.quote(column_name) if column_dict[column_name]['quote'] else column_name }} is {{ escaped_comment }};
{% endfor %}
{% endmacro %}ェdepends_on※macros胎*macro.dbt_postgres.postgres_escape_commentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameォcolumn_dict、typeタォdescriptionェcreated_atヒAレ萌Bヘウsupported_languagesタル/macro.dbt_postgres.postgres__get_show_grant_sql゙、nameシpostgres__get_show_grant_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル/macro.dbt_postgres.postgres__get_show_grant_sqlゥmacro_sqlレW
{%- macro postgres__get_show_grant_sql(relation) -%}
select grantee, privilege_type
from {{ relation.information_schema('role_table_grants') }}
where grantor = current_role
and grantee != current_role
and table_schema = '{{ relation.schema }}'
and table_name = '{{ relation.identifier }}'
{%- endmacro -%}
ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bヘ ウsupported_languagesタル(macro.dbt_postgres.postgres__copy_grants゙、nameオpostgres__copy_grantsュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル(macro.dbt_postgres.postgres__copy_grantsゥmacro_sqlルJ{% macro postgres__copy_grants() %}
{{ return(False) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bヘウsupported_languagesタル1macro.dbt_postgres.postgres__get_show_indexes_sql゙、nameセpostgres__get_show_indexes_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル1macro.dbt_postgres.postgres__get_show_indexes_sqlゥmacro_sqlレ8{% macro postgres__get_show_indexes_sql(relation) %}
select
i.relname as name,
m.amname as method,
ix.indisunique as "unique",
array_to_string(array_agg(a.attname), ',') as column_names
from pg_index ix
join pg_class i
on i.oid = ix.indexrelid
join pg_am m
on m.oid=i.relam
join pg_class t
on t.oid = ix.indrelid
join pg_namespace n
on n.oid = t.relnamespace
join pg_attribute a
on a.attrelid = t.oid
and a.attnum = ANY(ix.indkey)
where t.relname = '{{ relation.identifier }}'
and n.nspname = '{{ relation.schema }}'
and t.relkind in ('r', 'm')
group by 1, 2, 3
order by 1, 2, 3
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bヘウsupported_languagesタル/macro.dbt_postgres.postgres__get_drop_index_sql゙、nameシpostgres__get_drop_index_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathウmacros/adapters.sqlイoriginal_file_pathウmacros/adapters.sqlゥunique_idル/macro.dbt_postgres.postgres__get_drop_index_sqlゥmacro_sqlル
{%- macro postgres__get_drop_index_sql(relation, index_name) -%}
drop index if exists "{{ relation.schema }}"."{{ index_name }}"
{%- endmacro -%}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameェindex_name、typeタォdescriptionェcreated_atヒAレ萌Bヘウsupported_languagesタル8macro.dbt_postgres.postgres__get_incremental_default_sql゙、nameル%postgres__get_incremental_default_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル2macros/materializations/incremental_strategies.sqlイoriginal_file_pathル2macros/materializations/incremental_strategies.sqlゥunique_idル8macro.dbt_postgres.postgres__get_incremental_default_sqlゥmacro_sqlレ{% macro postgres__get_incremental_default_sql(arg_dict) %}
{% if arg_dict["unique_key"] %}
{% do return(get_incremental_delete_insert_sql(arg_dict)) %}
{% else %}
{% do return(get_incremental_append_sql(arg_dict)) %}
{% endif %}
{% endmacro %}ェdepends_on※macros壷+macro.dbt.get_incremental_delete_insert_sqlル$macro.dbt.get_incremental_append_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bヘウsupported_languagesタル;macro.dbt_postgres.postgres__get_incremental_microbatch_sql゙、nameル(postgres__get_incremental_microbatch_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル2macros/materializations/incremental_strategies.sqlイoriginal_file_pathル2macros/materializations/incremental_strategies.sqlゥunique_idル;macro.dbt_postgres.postgres__get_incremental_microbatch_sqlゥmacro_sqlレF{% macro postgres__get_incremental_microbatch_sql(arg_dict) %}
{% if arg_dict["unique_key"] %}
{% do return(adapter.dispatch('get_incremental_merge_sql', 'dbt')(arg_dict)) %}
{% else %}
{{ exceptions.raise_compiler_error("dbt-postgres 'microbatch' requires a `unique_key` config") }}
{% endif %}
{% endmacro %}ェdepends_on※macros壷#macro.dbt.get_incremental_merge_sqlル,macro.dbt.default__get_incremental_merge_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bヘウsupported_languagesタル/macro.dbt_postgres.postgres__snapshot_merge_sql゙、nameシpostgres__snapshot_merge_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル*macros/materializations/snapshot_merge.sqlイoriginal_file_pathル*macros/materializations/snapshot_merge.sqlゥunique_idル/macro.dbt_postgres.postgres__snapshot_merge_sqlゥmacro_sqlレオ{% macro postgres__snapshot_merge_sql(target, source, insert_cols) -%}
{%- set insert_cols_csv = insert_cols | join(', ') -%}
{%- set columns = config.get("snapshot_table_column_names") or get_snapshot_table_column_names() -%}
update {{ target }}
set {{ columns.dbt_valid_to }} = DBT_INTERNAL_SOURCE.{{ columns.dbt_valid_to }}
from {{ source }} as DBT_INTERNAL_SOURCE
where DBT_INTERNAL_SOURCE.{{ columns.dbt_scd_id }}::text = {{ target }}.{{ columns.dbt_scd_id }}::text
and DBT_INTERNAL_SOURCE.dbt_change_type::text in ('update'::text, 'delete'::text)
{% if config.get("dbt_valid_to_current") %}
and ({{ target }}.{{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }} or {{ target }}.{{ columns.dbt_valid_to }} is null);
{% else %}
and {{ target }}.{{ columns.dbt_valid_to }} is null;
{% endif %}
insert into {{ target }} ({{ insert_cols_csv }})
select {% for column in insert_cols -%}
DBT_INTERNAL_SOURCE.{{ column }} {%- if not loop.last %}, {%- endif %}
{%- endfor %}
from {{ source }} as DBT_INTERNAL_SOURCE
where DBT_INTERNAL_SOURCE.dbt_change_type::text = 'insert'::text;
{% endmacro %}ェdepends_on※macros胎)macro.dbt.get_snapshot_table_column_namesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameヲtarget、typeタォdescriptionΖnameヲsource、typeタォdescriptionΖnameォinsert_cols、typeタォdescriptionェcreated_atヒAレ萌Bヘノウsupported_languagesタル?macro.dbt_postgres.postgres__formatted_scalar_function_args_sql゙、nameル,postgres__formatted_scalar_function_args_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル?macro.dbt_postgres.postgres__formatted_scalar_function_args_sqlゥmacro_sqlレ閔% macro postgres__formatted_scalar_function_args_sql() %}
{% set args = [] %}
{% for arg in model.arguments -%}
{% set default_value = arg.get('default_value', none) %}
{% if default_value != none %}
{%- do args.append(arg.name ~ ' ' ~ arg.data_type ~ ' DEFAULT ' ~ default_value) -%}
{% else %}
{%- do args.append(arg.name ~ ' ' ~ arg.data_type) -%}
{% endif %}
{%- endfor %}
{{ args | join(', ') }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BホGウsupported_languagesタル3macro.dbt_postgres.postgres__drop_materialized_view゙、nameル postgres__drop_materialized_viewュresource_type・macroャpackage_nameャdbt_postgres、pathル+macros/relations/materialized_view/drop.sqlイoriginal_file_pathル+macros/relations/materialized_view/drop.sqlゥunique_idル3macro.dbt_postgres.postgres__drop_materialized_viewゥmacro_sqlルボ% macro postgres__drop_materialized_view(relation) -%}
drop materialized view if exists {{ relation }} cascade
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌BホKウsupported_languagesタル7macro.dbt_postgres.postgres__describe_materialized_view゙、nameル$postgres__describe_materialized_viewュresource_type・macroャpackage_nameャdbt_postgres、pathル/macros/relations/materialized_view/describe.sqlイoriginal_file_pathル/macros/relations/materialized_view/describe.sqlゥunique_idル7macro.dbt_postgres.postgres__describe_materialized_viewゥmacro_sqlレ{% macro postgres__describe_materialized_view(relation) %}
-- for now just get the indexes, we don't need the name or the query yet
{% set _indexes = run_query(get_show_indexes_sql(relation)) %}
{% do return({'indexes': _indexes}) %}
{% endmacro %}ェdepends_on※macros諜macro.dbt.run_queryセmacro.dbt.get_show_indexes_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bホ1ウsupported_languagesタル6macro.dbt_postgres.postgres__refresh_materialized_view゙、nameル#postgres__refresh_materialized_viewュresource_type・macroャpackage_nameャdbt_postgres、pathル.macros/relations/materialized_view/refresh.sqlイoriginal_file_pathル.macros/relations/materialized_view/refresh.sqlゥunique_idル6macro.dbt_postgres.postgres__refresh_materialized_viewゥmacro_sqlルu{% macro postgres__refresh_materialized_view(relation) %}
refresh materialized view {{ relation }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bホ-ウsupported_languagesタル=macro.dbt_postgres.postgres__get_rename_materialized_view_sql゙、nameル*postgres__get_rename_materialized_view_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル-macros/relations/materialized_view/rename.sqlイoriginal_file_pathル-macros/relations/materialized_view/rename.sqlゥunique_idル=macro.dbt_postgres.postgres__get_rename_materialized_view_sqlゥmacro_sqlル掉% macro postgres__get_rename_materialized_view_sql(relation, new_name) %}
alter materialized view {{ relation }} rename to {{ new_name }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bホ Jウsupported_languagesタル?macro.dbt_postgres.postgres__get_alter_materialized_view_as_sql゙、nameル,postgres__get_alter_materialized_view_as_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル,macros/relations/materialized_view/alter.sqlイoriginal_file_pathル,macros/relations/materialized_view/alter.sqlゥunique_idル?macro.dbt_postgres.postgres__get_alter_materialized_view_as_sqlゥmacro_sqlレ-{% macro postgres__get_alter_materialized_view_as_sql(
relation,
configuration_changes,
sql,
existing_relation,
backup_relation,
intermediate_relation
) %}
-- apply a full refresh immediately if needed
{% if configuration_changes.requires_full_refresh %}
{{ get_replace_sql(existing_relation, relation, sql) }}
-- otherwise apply individual changes as needed
{% else %}
{{ postgres__update_indexes_on_materialized_view(relation, configuration_changes.indexes) }}
{%- endif -%}
{% endmacro %}ェdepends_on※macros鳥macro.dbt.get_replace_sqlル@macro.dbt_postgres.postgres__update_indexes_on_materialized_viewォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments麻、nameィrelation、typeタォdescriptionΖnameオconfiguration_changes、typeタォdescriptionΖname」sql、typeタォdescriptionΖnameアexisting_relation、typeタォdescriptionΖnameッbackup_relation、typeタォdescriptionΖnameオintermediate_relation、typeタォdescriptionェcreated_atヒAレ萌Bホ
=ウsupported_languagesタル@macro.dbt_postgres.postgres__update_indexes_on_materialized_view゙、nameル-postgres__update_indexes_on_materialized_viewュresource_type・macroャpackage_nameャdbt_postgres、pathル,macros/relations/materialized_view/alter.sqlイoriginal_file_pathル,macros/relations/materialized_view/alter.sqlゥunique_idル@macro.dbt_postgres.postgres__update_indexes_on_materialized_viewゥmacro_sqlレ]
{%- macro postgres__update_indexes_on_materialized_view(relation, index_changes) -%}
{{- log("Applying UPDATE INDEXES to: " ~ relation) -}}
{%- for _index_change in index_changes -%}
{%- set _index = _index_change.context -%}
{%- if _index_change.action == "drop" -%}
{{ postgres__get_drop_index_sql(relation, _index.name) }}
{%- elif _index_change.action == "create" -%}
{{ postgres__get_create_index_sql(relation, _index.as_node_config) }}
{%- endif -%}
{{ ';' if not loop.last else "" }}
{%- endfor -%}
{%- endmacro -%}
ェdepends_on※macros壷/macro.dbt_postgres.postgres__get_drop_index_sqlル1macro.dbt_postgres.postgres__get_create_index_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameュindex_changes、typeタォdescriptionェcreated_atヒAレ萌Bホヌウsupported_languagesタルHmacro.dbt_postgres.postgres__get_materialized_view_configuration_changes゙、nameル5postgres__get_materialized_view_configuration_changesュresource_type・macroャpackage_nameャdbt_postgres、pathル,macros/relations/materialized_view/alter.sqlイoriginal_file_pathル,macros/relations/materialized_view/alter.sqlゥunique_idルHmacro.dbt_postgres.postgres__get_materialized_view_configuration_changesゥmacro_sqlレ本% macro postgres__get_materialized_view_configuration_changes(existing_relation, new_config) %}
{% set _existing_materialized_view = postgres__describe_materialized_view(existing_relation) %}
{% set _configuration_changes = existing_relation.get_materialized_view_config_change_collection(_existing_materialized_view, new_config.model) %}
{% do return(_configuration_changes) %}
{% endmacro %}ェdepends_on※macros胎7macro.dbt_postgres.postgres__describe_materialized_viewォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアexisting_relation、typeタォdescriptionΖnameェnew_config、typeタォdescriptionェcreated_atヒAレ萌Bホセウsupported_languagesタル@macro.dbt_postgres.postgres__get_create_materialized_view_as_sql゙、nameル-postgres__get_create_materialized_view_as_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル-macros/relations/materialized_view/create.sqlイoriginal_file_pathル-macros/relations/materialized_view/create.sqlゥunique_idル@macro.dbt_postgres.postgres__get_create_materialized_view_as_sqlゥmacro_sqlレJ{% macro postgres__get_create_materialized_view_as_sql(relation, sql) %}
create materialized view if not exists {{ relation }} as {{ sql }};
{% for _index_dict in config.get('indexes', []) -%}
{{- get_create_index_sql(relation, _index_dict) -}}{{ ';' if not loop.last else "" }}
{%- endfor -%}
{% endmacro %}ェdepends_on※macros太macro.dbt.get_create_index_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bホ正supported_languagesタル'macro.dbt_postgres.postgres__drop_table゙、nameエpostgres__drop_tableュresource_type・macroャpackage_nameャdbt_postgres、pathソmacros/relations/table/drop.sqlイoriginal_file_pathソmacros/relations/table/drop.sqlゥunique_idル'macro.dbt_postgres.postgres__drop_tableゥmacro_sqlルk{% macro postgres__drop_table(relation) -%}
drop table if exists {{ relation }} cascade
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bホsupported_languagesタル2macro.dbt_postgres.postgres__get_replace_table_sql゙、nameソpostgres__get_replace_table_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル"macros/relations/table/replace.sqlイoriginal_file_pathル"macros/relations/table/replace.sqlゥunique_idル2macro.dbt_postgres.postgres__get_replace_table_sqlゥmacro_sqlレ {% macro postgres__get_replace_table_sql(relation, sql) -%}
{%- set sql_header = config.get('sql_header', none) -%}
{{ sql_header if sql_header is not none }}
create or replace table {{ relation }}
{% set contract_config = config.get('contract') %}
{% if contract_config.enforced %}
{{ get_assert_columns_equivalent(sql) }}
{{ get_table_columns_and_constraints() }}
{%- set sql = get_select_subquery(sql) %}
{% endif %}
as (
{{ sql }}
);
{%- endmacro %}ェdepends_on※macros遁'macro.dbt.get_assert_columns_equivalentル+macro.dbt.get_table_columns_and_constraintsスmacro.dbt.get_select_subqueryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bホ承supported_languagesタル1macro.dbt_postgres.postgres__get_rename_table_sql゙、nameセpostgres__get_rename_table_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル!macros/relations/table/rename.sqlイoriginal_file_pathル!macros/relations/table/rename.sqlゥunique_idル1macro.dbt_postgres.postgres__get_rename_table_sqlゥmacro_sqlル% macro postgres__get_rename_table_sql(relation, new_name) %}
alter table {{ relation }} rename to {{ new_name }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bホメウsupported_languagesタル&macro.dbt_postgres.postgres__drop_view゙、nameウpostgres__drop_viewュresource_type・macroャpackage_nameャdbt_postgres、pathセmacros/relations/view/drop.sqlイoriginal_file_pathセmacros/relations/view/drop.sqlゥunique_idル&macro.dbt_postgres.postgres__drop_viewゥmacro_sqlルi{% macro postgres__drop_view(relation) -%}
drop view if exists {{ relation }} cascade
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bホムウsupported_languagesタル1macro.dbt_postgres.postgres__get_replace_view_sql゙、nameセpostgres__get_replace_view_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル!macros/relations/view/replace.sqlイoriginal_file_pathル!macros/relations/view/replace.sqlゥunique_idル1macro.dbt_postgres.postgres__get_replace_view_sqlゥmacro_sqlレウ{% macro postgres__get_replace_view_sql(relation, sql) -%}
{%- set sql_header = config.get('sql_header', none) -%}
{{ sql_header if sql_header is not none }}
create or replace view {{ relation }}
{% set contract_config = config.get('contract') %}
{% if contract_config.enforced %}
{{ get_assert_columns_equivalent(sql) }}
{%- endif %}
as (
{{ sql }}
);
{%- endmacro %}ェdepends_on※macros胎'macro.dbt.get_assert_columns_equivalentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bホ 﨤supported_languagesタル0macro.dbt_postgres.postgres__get_rename_view_sql゙、nameスpostgres__get_rename_view_sqlュresource_type・macroャpackage_nameャdbt_postgres、pathル macros/relations/view/rename.sqlイoriginal_file_pathル macros/relations/view/rename.sqlゥunique_idル0macro.dbt_postgres.postgres__get_rename_view_sqlゥmacro_sqlルボ% macro postgres__get_rename_view_sql(relation, new_name) %}
alter view {{ relation }} rename to {{ new_name }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bホ"Bウsupported_languagesタル$macro.dbt_postgres.postgres__dateadd゙、nameアpostgres__dateaddュresource_type・macroャpackage_nameャdbt_postgres、pathクmacros/utils/dateadd.sqlイoriginal_file_pathクmacros/utils/dateadd.sqlゥunique_idル$macro.dbt_postgres.postgres__dateaddゥmacro_sqlルー{% macro postgres__dateadd(datepart, interval, from_date_or_timestamp) %}
{{ from_date_or_timestamp }} + ((interval '1 {{ datepart }}') * ({{ interval }}))
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィdatepart、typeタォdescriptionΖnameィinterval、typeタォdescriptionΖnameカfrom_date_or_timestamp、typeタォdescriptionェcreated_atヒAレ萌Bホ#シウsupported_languagesタル$macro.dbt_postgres.postgres__listagg゙、nameアpostgres__listaggュresource_type・macroャpackage_nameャdbt_postgres、pathクmacros/utils/listagg.sqlイoriginal_file_pathクmacros/utils/listagg.sqlゥunique_idル$macro.dbt_postgres.postgres__listaggゥmacro_sqlレ+{% macro postgres__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}
{% if limit_num -%}
array_to_string(
(array_agg(
{{ measure }}
{% if order_by_clause -%}
{{ order_by_clause }}
{%- endif %}
))[1:{{ limit_num }}],
{{ delimiter_text }}
)
{%- else %}
string_agg(
{{ measure }},
{{ delimiter_text }}
{% if order_by_clause -%}
{{ order_by_clause }}
{%- endif %}
)
{%- endif %}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameァmeasure、typeタォdescriptionΖnameョdelimiter_text、typeタォdescriptionΖnameッorder_by_clause、typeタォdescriptionΖnameゥlimit_num、typeタォdescriptionェcreated_atヒAレ萌Bホ'ウsupported_languagesタル%macro.dbt_postgres.postgres__datediff゙、nameイpostgres__datediffュresource_type・macroャpackage_nameャdbt_postgres、pathケmacros/utils/datediff.sqlイoriginal_file_pathケmacros/utils/datediff.sqlゥunique_idル%macro.dbt_postgres.postgres__datediffゥmacro_sqlレ #{% macro postgres__datediff(first_date, second_date, datepart) -%}
{% if datepart == 'year' %}
(date_part('year', ({{second_date}})::date) - date_part('year', ({{first_date}})::date))
{% elif datepart == 'quarter' %}
({{ datediff(first_date, second_date, 'year') }} * 4 + date_part('quarter', ({{second_date}})::date) - date_part('quarter', ({{first_date}})::date))
{% elif datepart == 'month' %}
({{ datediff(first_date, second_date, 'year') }} * 12 + date_part('month', ({{second_date}})::date) - date_part('month', ({{first_date}})::date))
{% elif datepart == 'day' %}
(({{second_date}})::date - ({{first_date}})::date)
{% elif datepart == 'week' %}
({{ datediff(first_date, second_date, 'day') }} / 7 + case
when date_part('dow', ({{first_date}})::timestamp) <= date_part('dow', ({{second_date}})::timestamp) then
case when {{first_date}} <= {{second_date}} then 0 else -1 end
else
case when {{first_date}} <= {{second_date}} then 1 else 0 end
end)
{% elif datepart == 'hour' %}
({{ datediff(first_date, second_date, 'day') }} * 24 + date_part('hour', ({{second_date}})::timestamp) - date_part('hour', ({{first_date}})::timestamp))
{% elif datepart == 'minute' %}
({{ datediff(first_date, second_date, 'hour') }} * 60 + date_part('minute', ({{second_date}})::timestamp) - date_part('minute', ({{first_date}})::timestamp))
{% elif datepart == 'second' %}
({{ datediff(first_date, second_date, 'minute') }} * 60 + floor(date_part('second', ({{second_date}})::timestamp)) - floor(date_part('second', ({{first_date}})::timestamp)))
{% elif datepart == 'millisecond' %}
({{ datediff(first_date, second_date, 'minute') }} * 60000 + floor(date_part('millisecond', ({{second_date}})::timestamp)) - floor(date_part('millisecond', ({{first_date}})::timestamp)))
{% elif datepart == 'microsecond' %}
({{ datediff(first_date, second_date, 'minute') }} * 60000000 + floor(date_part('microsecond', ({{second_date}})::timestamp)) - floor(date_part('microsecond', ({{first_date}})::timestamp)))
{% else %}
{{ exceptions.raise_compiler_error("Unsupported datepart for macro datediff in postgres: {!r}".format(datepart)) }}
{% endif %}
{%- endmacro %}ェdepends_on※macros卒macro.dbt.datediffォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameェfirst_date、typeタォdescriptionΖnameォsecond_date、typeタォdescriptionΖnameィdatepart、typeタォdescriptionェcreated_atヒAレ萌Bホ5zウsupported_languagesタル#macro.dbt_postgres.postgres__equals゙、nameーpostgres__equalsュresource_type・macroャpackage_nameャdbt_postgres、pathキmacros/utils/equals.sqlイoriginal_file_pathキmacros/utils/equals.sqlゥunique_idル#macro.dbt_postgres.postgres__equalsゥmacro_sqlル% macro postgres__equals(expr1, expr2) -%}
{%- if adapter.behavior.enable_truthy_nulls_equals_macro.no_warn %}
({{ expr1 }} IS NOT DISTINCT FROM {{ expr2 }})
{%- else -%}
({{ expr1 }} = {{ expr2 }})
{%- endif %}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・expr1、typeタォdescriptionΖname・expr2、typeタォdescriptionェcreated_atヒAレ萌Bホ8 ウsupported_languagesタル&macro.dbt_postgres.postgres__any_value゙、nameウpostgres__any_valueュresource_type・macroャpackage_nameャdbt_postgres、pathコmacros/utils/any_value.sqlイoriginal_file_pathコmacros/utils/any_value.sqlゥunique_idル&macro.dbt_postgres.postgres__any_valueゥmacro_sqlルX{% macro postgres__any_value(expression) -%}
min({{ expression }})
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェexpression、typeタォdescriptionェcreated_atヒAレ萌Bホ9Dウsupported_languagesタル%macro.dbt_postgres.postgres__last_day゙、nameイpostgres__last_dayュresource_type・macroャpackage_nameャdbt_postgres、pathケmacros/utils/last_day.sqlイoriginal_file_pathケmacros/utils/last_day.sqlゥunique_idル%macro.dbt_postgres.postgres__last_dayゥmacro_sqlレ}{% macro postgres__last_day(date, datepart) -%}
{%- if datepart == 'quarter' -%}
-- postgres dateadd does not support quarter interval.
cast(
{{dbt.dateadd('day', '-1',
dbt.dateadd('month', '3', dbt.date_trunc(datepart, date))
)}}
as date)
{%- else -%}
{{dbt.default_last_day(date, datepart)}}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros導macro.dbt.dateaddエmacro.dbt.date_truncコmacro.dbt.default_last_dayォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name、date、typeタォdescriptionΖnameィdatepart、typeタォdescriptionェcreated_atヒAレ萌Bホ<スウsupported_languagesタル'macro.dbt_postgres.postgres__split_part゙、nameエpostgres__split_partュresource_type・macroャpackage_nameャdbt_postgres、pathサmacros/utils/split_part.sqlイoriginal_file_pathサmacros/utils/split_part.sqlゥunique_idル'macro.dbt_postgres.postgres__split_partゥmacro_sqlレ+{% macro postgres__split_part(string_text, delimiter_text, part_number) %}
{% if part_number >= 0 %}
{{ dbt.default__split_part(string_text, delimiter_text, part_number) }}
{% else %}
{{ dbt._split_part_negative(string_text, delimiter_text, part_number) }}
{% endif %}
{% endmacro %}ェdepends_on※macros朕macro.dbt.default__split_partセmacro.dbt._split_part_negativeォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameォstring_text、typeタォdescriptionΖnameョdelimiter_text、typeタォdescriptionΖnameォpart_number、typeタォdescriptionェcreated_atヒAレ萌Bホ?ォウsupported_languagesタウmacro.dbt.run_hooks゙、nameゥrun_hooksュresource_type・macroャpackage_name」dbt、pathル!macros/materializations/hooks.sqlイoriginal_file_pathル!macros/materializations/hooks.sqlゥunique_idウmacro.dbt.run_hooksゥmacro_sqlレ{% macro run_hooks(hooks, inside_transaction=True) %}
{% for hook in hooks | selectattr('transaction', 'equalto', inside_transaction) %}
{% if not inside_transaction and loop.first %}
{% call statement(auto_begin=inside_transaction) %}
commit;
{% endcall %}
{% endif %}
{% set rendered = render(hook.get('sql')) | trim %}
{% if (rendered | length) > 0 %}
{% call statement(auto_begin=inside_transaction) %}
{{ rendered }}
{% endcall %}
{% endif %}
{% endfor %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・hooks、typeタォdescriptionΖnameイinside_transaction、typeタォdescriptionェcreated_atヒAレ萌BホE匍supported_languagesタコmacro.dbt.make_hook_config゙、nameーmake_hook_configュresource_type・macroャpackage_name」dbt、pathル!macros/materializations/hooks.sqlイoriginal_file_pathル!macros/materializations/hooks.sqlゥunique_idコmacro.dbt.make_hook_configゥmacro_sqlル% macro make_hook_config(sql, inside_transaction) %}
{{ tojson({"sql": sql, "transaction": inside_transaction}) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name」sql、typeタォdescriptionΖnameイinside_transaction、typeタォdescriptionェcreated_atヒAレ萌BホFsupported_languagesタカmacro.dbt.before_begin゙、nameャbefore_beginュresource_type・macroャpackage_name」dbt、pathル!macros/materializations/hooks.sqlイoriginal_file_pathル!macros/materializations/hooks.sqlゥunique_idカmacro.dbt.before_beginゥmacro_sqlルf{% macro before_begin(sql) %}
{{ make_hook_config(sql, inside_transaction=False) }}
{% endmacro %}ェdepends_on※macros村macro.dbt.make_hook_configォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌BホG昕supported_languagesタクmacro.dbt.in_transaction゙、nameョin_transactionュresource_type・macroャpackage_name」dbt、pathル!macros/materializations/hooks.sqlイoriginal_file_pathル!macros/materializations/hooks.sqlゥunique_idクmacro.dbt.in_transactionゥmacro_sqlルg{% macro in_transaction(sql) %}
{{ make_hook_config(sql, inside_transaction=True) }}
{% endmacro %}ェdepends_on※macros村macro.dbt.make_hook_configォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌BホHモウsupported_languagesタカmacro.dbt.after_commit゙、nameャafter_commitュresource_type・macroャpackage_name」dbt、pathル!macros/materializations/hooks.sqlイoriginal_file_pathル!macros/materializations/hooks.sqlゥunique_idカmacro.dbt.after_commitゥmacro_sqlルf{% macro after_commit(sql) %}
{{ make_hook_config(sql, inside_transaction=False) }}
{% endmacro %}ェdepends_on※macros村macro.dbt.make_hook_configォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌BホIカウsupported_languagesタクmacro.dbt.set_sql_header゙、nameョset_sql_headerュresource_type・macroャpackage_name」dbt、pathル#macros/materializations/configs.sqlイoriginal_file_pathル#macros/materializations/configs.sqlゥunique_idクmacro.dbt.set_sql_headerゥmacro_sqlル^{% macro set_sql_header(config) -%}
{{ config.set('sql_header', caller()) }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameヲconfig、typeタォdescriptionェcreated_atヒAレ萌BホKモウsupported_languagesタスmacro.dbt.should_full_refresh゙、nameウshould_full_refreshュresource_type・macroャpackage_name」dbt、pathル#macros/materializations/configs.sqlイoriginal_file_pathル#macros/materializations/configs.sqlゥunique_idスmacro.dbt.should_full_refreshゥmacro_sqlレ{% macro should_full_refresh() %}
{% set config_full_refresh = config.get('full_refresh') %}
{% if config_full_refresh is none %}
{% set config_full_refresh = flags.FULL_REFRESH %}
{% endif %}
{% do return(config_full_refresh) %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BホMニウsupported_languagesタソmacro.dbt.should_store_failures゙、nameオshould_store_failuresュresource_type・macroャpackage_name」dbt、pathル#macros/materializations/configs.sqlイoriginal_file_pathル#macros/materializations/configs.sqlゥunique_idソmacro.dbt.should_store_failuresゥmacro_sqlレ{% macro should_store_failures() %}
{% set config_store_failures = config.get('store_failures') %}
{% if config_store_failures is none %}
{% set config_store_failures = flags.STORE_FAILURES %}
{% endif %}
{% do return(config_store_failures) %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BホOオウsupported_languagesタシmacro.dbt.snapshot_merge_sql゙、nameイsnapshot_merge_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/snapshots/snapshot_merge.sqlイoriginal_file_pathル4macros/materializations/snapshots/snapshot_merge.sqlゥunique_idシmacro.dbt.snapshot_merge_sqlゥmacro_sqlル毬% macro snapshot_merge_sql(target, source, insert_cols) -%}
{{ adapter.dispatch('snapshot_merge_sql', 'dbt')(target, source, insert_cols) }}
{%- endmacro %}ェdepends_on※macros胎/macro.dbt_postgres.postgres__snapshot_merge_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameヲtarget、typeタォdescriptionΖnameヲsource、typeタォdescriptionΖnameォinsert_cols、typeタォdescriptionェcreated_atヒAレ萌BホRアウsupported_languagesタル%macro.dbt.default__snapshot_merge_sql゙、nameサdefault__snapshot_merge_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/snapshots/snapshot_merge.sqlイoriginal_file_pathル4macros/materializations/snapshots/snapshot_merge.sqlゥunique_idル%macro.dbt.default__snapshot_merge_sqlゥmacro_sqlレオ{% macro default__snapshot_merge_sql(target, source, insert_cols) -%}
{%- set insert_cols_csv = insert_cols | join(', ') -%}
{%- set columns = config.get("snapshot_table_column_names") or get_snapshot_table_column_names() -%}
merge into {{ target.render() }} as DBT_INTERNAL_DEST
using {{ source }} as DBT_INTERNAL_SOURCE
on DBT_INTERNAL_SOURCE.{{ columns.dbt_scd_id }} = DBT_INTERNAL_DEST.{{ columns.dbt_scd_id }}
when matched
{% if config.get("dbt_valid_to_current") %}
{% set source_unique_key = ("DBT_INTERNAL_DEST." ~ columns.dbt_valid_to) | trim %}
{% set target_unique_key = config.get('dbt_valid_to_current') | trim %}
and ({{ equals(source_unique_key, target_unique_key) }} or {{ source_unique_key }} is null)
{% else %}
and DBT_INTERNAL_DEST.{{ columns.dbt_valid_to }} is null
{% endif %}
and DBT_INTERNAL_SOURCE.dbt_change_type in ('update', 'delete')
then update
set {{ columns.dbt_valid_to }} = DBT_INTERNAL_SOURCE.{{ columns.dbt_valid_to }}
when not matched
and DBT_INTERNAL_SOURCE.dbt_change_type = 'insert'
then insert ({{ insert_cols_csv }})
values ({{ insert_cols_csv }})
{% endmacro %}ェdepends_on※macros壷)macro.dbt.get_snapshot_table_column_namesーmacro.dbt.equalsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameヲtarget、typeタォdescriptionΖnameヲsource、typeタォdescriptionΖnameォinsert_cols、typeタォdescriptionェcreated_atヒAレ萌BホWsupported_languagesタサmacro.dbt.strategy_dispatch゙、nameアstrategy_dispatchュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/snapshots/strategies.sqlイoriginal_file_pathル0macros/materializations/snapshots/strategies.sqlゥunique_idサmacro.dbt.strategy_dispatchゥmacro_sqlレソ{% macro strategy_dispatch(name) -%}
{% set original_name = name %}
{% if '.' in name %}
{% set package_name, name = name.split(".", 1) %}
{% else %}
{% set package_name = none %}
{% endif %}
{% if package_name is none %}
{% set package_context = context %}
{% elif package_name in context %}
{% set package_context = context[package_name] %}
{% else %}
{% set error_msg %}
Could not find package '{{package_name}}', called with '{{original_name}}'
{% endset %}
{{ exceptions.raise_compiler_error(error_msg | trim) }}
{% endif %}
{%- set search_name = 'snapshot_' ~ name ~ '_strategy' -%}
{% if search_name not in package_context %}
{% set error_msg %}
The specified strategy macro '{{name}}' was not found in package '{{ package_name }}'
{% endset %}
{{ exceptions.raise_compiler_error(error_msg | trim) }}
{% endif %}
{{ return(package_context[search_name]) }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name、name、typeタォdescriptionェcreated_atヒAレ萌Bホgモウsupported_languagesタル!macro.dbt.snapshot_hash_arguments゙、nameキsnapshot_hash_argumentsュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/snapshots/strategies.sqlイoriginal_file_pathル0macros/materializations/snapshots/strategies.sqlゥunique_idル!macro.dbt.snapshot_hash_argumentsゥmacro_sqlル{{% macro snapshot_hash_arguments(args) -%}
{{ adapter.dispatch('snapshot_hash_arguments', 'dbt')(args) }}
{%- endmacro %}ェdepends_on※macros胎*macro.dbt.default__snapshot_hash_argumentsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name、args、typeタォdescriptionェcreated_atヒAレ萌Bホiウsupported_languagesタル*macro.dbt.default__snapshot_hash_arguments゙、nameル default__snapshot_hash_argumentsュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/snapshots/strategies.sqlイoriginal_file_pathル0macros/materializations/snapshots/strategies.sqlゥunique_idル*macro.dbt.default__snapshot_hash_argumentsゥmacro_sqlル゙{% macro default__snapshot_hash_arguments(args) -%}
md5({%- for arg in args -%}
coalesce(cast({{ arg }} as varchar ), '')
{% if not loop.last %} || '|' || {% endif %}
{%- endfor -%})
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name、args、typeタォdescriptionェcreated_atヒAレ萌Bホjコウsupported_languagesタル%macro.dbt.snapshot_timestamp_strategy゙、nameサsnapshot_timestamp_strategyュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/snapshots/strategies.sqlイoriginal_file_pathル0macros/materializations/snapshots/strategies.sqlゥunique_idル%macro.dbt.snapshot_timestamp_strategyゥmacro_sqlレ{% macro snapshot_timestamp_strategy(node, snapshotted_rel, current_rel, model_config, target_exists) %}
{# The model_config parameter is no longer used, but is passed in anyway for compatibility. #}
{% set primary_key = config.get('unique_key') %}
{% set updated_at = config.get('updated_at') %}
{% set hard_deletes = adapter.get_hard_deletes_behavior(config) %}
{% set invalidate_hard_deletes = hard_deletes == 'invalidate' %}
{% set columns = config.get("snapshot_table_column_names") or get_snapshot_table_column_names() %}
{#/*
The snapshot relation might not have an {{ updated_at }} value if the
snapshot strategy is changed from `check` to `timestamp`. We
should use a dbt-created column for the comparison in the snapshot
table instead of assuming that the user-supplied {{ updated_at }}
will be present in the historical data.
See https://github.com/dbt-labs/dbt-core/issues/2350
*/ #}
{% set row_changed_expr -%}
({{ snapshotted_rel }}.{{ columns.dbt_valid_from }} < {{ current_rel }}.{{ updated_at }})
{%- endset %}
{% set scd_args = api.Relation.scd_args(primary_key, updated_at) %}
{% set scd_id_expr = snapshot_hash_arguments(scd_args) %}
{% do return({
"unique_key": primary_key,
"updated_at": updated_at,
"row_changed": row_changed_expr,
"scd_id": scd_id_expr,
"invalidate_hard_deletes": invalidate_hard_deletes,
"hard_deletes": hard_deletes
}) %}
{% endmacro %}ェdepends_on※macros壷)macro.dbt.get_snapshot_table_column_namesル!macro.dbt.snapshot_hash_argumentsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、name、node、typeタォdescriptionΖnameッsnapshotted_rel、typeタォdescriptionΖnameォcurrent_rel、typeタォdescriptionΖnameャmodel_config、typeタォdescriptionΖnameュtarget_exists、typeタォdescriptionェcreated_atヒAレ萌BホqTウsupported_languagesタル!macro.dbt.snapshot_string_as_time゙、nameキsnapshot_string_as_timeュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/snapshots/strategies.sqlイoriginal_file_pathル0macros/materializations/snapshots/strategies.sqlゥunique_idル!macro.dbt.snapshot_string_as_timeゥmacro_sqlル% macro snapshot_string_as_time(timestamp) -%}
{{ adapter.dispatch('snapshot_string_as_time', 'dbt')(timestamp) }}
{%- endmacro %}ェdepends_on※macros胎4macro.dbt_postgres.postgres__snapshot_string_as_timeォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameゥtimestamp、typeタォdescriptionェcreated_atヒAレ萌Bホruウsupported_languagesタル*macro.dbt.default__snapshot_string_as_time゙、nameル default__snapshot_string_as_timeュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/snapshots/strategies.sqlイoriginal_file_pathル0macros/materializations/snapshots/strategies.sqlゥunique_idル*macro.dbt.default__snapshot_string_as_timeゥmacro_sqlルマ{% macro default__snapshot_string_as_time(timestamp) %}
{% do exceptions.raise_not_implemented(
'snapshot_string_as_time macro not implemented for adapter '+adapter.type()
) %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameゥtimestamp、typeタォdescriptionェcreated_atヒAレ萌Bホs」ウsupported_languagesタル1macro.dbt.snapshot_check_all_get_existing_columns゙、nameル'snapshot_check_all_get_existing_columnsュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/snapshots/strategies.sqlイoriginal_file_pathル0macros/materializations/snapshots/strategies.sqlゥunique_idル1macro.dbt.snapshot_check_all_get_existing_columnsゥmacro_sqlレ\{% macro snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) -%}
{%- if not target_exists -%}
{#-- no table yet -> return whatever the query does --#}
{{ return((false, query_columns)) }}
{%- endif -%}
{#-- handle any schema changes --#}
{%- set target_relation = adapter.get_relation(database=node.database, schema=node.schema, identifier=node.alias) -%}
{% if check_cols_config == 'all' %}
{%- set query_columns = get_columns_in_query(node['compiled_code']) -%}
{% elif check_cols_config is iterable and (check_cols_config | length) > 0 %}
{#-- query for proper casing/quoting, to support comparison below --#}
{%- set select_check_cols_from_target -%}
{#-- N.B. The whitespace below is necessary to avoid edge case issue with comments --#}
{#-- See: https://github.com/dbt-labs/dbt-core/issues/6781 --#}
select {{ check_cols_config | join(', ') }} from (
{{ node['compiled_code'] }}
) subq
{%- endset -%}
{% set query_columns = get_columns_in_query(select_check_cols_from_target) %}
{% else %}
{% do exceptions.raise_compiler_error("Invalid value for 'check_cols': " ~ check_cols_config) %}
{% endif %}
{%- set existing_cols = adapter.get_columns_in_relation(target_relation) | map(attribute = 'name') | list -%}
{%- set ns = namespace() -%} {#-- handle for-loop scoping with a namespace --#}
{%- set ns.column_added = false -%}
{%- set intersection = [] -%}
{%- for col in query_columns -%}
{%- if col in existing_cols -%}
{%- do intersection.append(adapter.quote(col)) -%}
{%- else -%}
{% set ns.column_added = true %}
{%- endif -%}
{%- endfor -%}
{{ return((ns.column_added, intersection)) }}
{%- endmacro %}ェdepends_on※macros太macro.dbt.get_columns_in_queryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、name、node、typeタォdescriptionΖnameュtarget_exists、typeタォdescriptionΖnameアcheck_cols_config、typeタォdescriptionェcreated_atヒAレ萌Bホ|ネウsupported_languagesタル!macro.dbt.snapshot_check_strategy゙、nameキsnapshot_check_strategyュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/snapshots/strategies.sqlイoriginal_file_pathル0macros/materializations/snapshots/strategies.sqlゥunique_idル!macro.dbt.snapshot_check_strategyゥmacro_sqlレ須% macro snapshot_check_strategy(node, snapshotted_rel, current_rel, model_config, target_exists) %}
{# The model_config parameter is no longer used, but is passed in anyway for compatibility. #}
{% set check_cols_config = config.get('check_cols') %}
{% set primary_key = config.get('unique_key') %}
{% set hard_deletes = adapter.get_hard_deletes_behavior(config) %}
{% set invalidate_hard_deletes = hard_deletes == 'invalidate' %}
{% set updated_at = config.get('updated_at') or snapshot_get_time() %}
{% set column_added = false %}
{% set column_added, check_cols = snapshot_check_all_get_existing_columns(node, target_exists, check_cols_config) %}
{%- set row_changed_expr -%}
(
{%- if column_added -%}
{{ get_true_sql() }}
{%- else -%}
{%- for col in check_cols -%}
{{ snapshotted_rel }}.{{ col }} != {{ current_rel }}.{{ col }}
or
(
(({{ snapshotted_rel }}.{{ col }} is null) and not ({{ current_rel }}.{{ col }} is null))
or
((not {{ snapshotted_rel }}.{{ col }} is null) and ({{ current_rel }}.{{ col }} is null))
)
{%- if not loop.last %} or {% endif -%}
{%- endfor -%}
{%- endif -%}
)
{%- endset %}
{% set scd_args = api.Relation.scd_args(primary_key, updated_at) %}
{% set scd_id_expr = snapshot_hash_arguments(scd_args) %}
{% do return({
"unique_key": primary_key,
"updated_at": updated_at,
"row_changed": row_changed_expr,
"scd_id": scd_id_expr,
"invalidate_hard_deletes": invalidate_hard_deletes,
"hard_deletes": hard_deletes
}) %}
{% endmacro %}ェdepends_on※macros判macro.dbt.snapshot_get_timeル1macro.dbt.snapshot_check_all_get_existing_columnsカmacro.dbt.get_true_sqlル!macro.dbt.snapshot_hash_argumentsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、name、node、typeタォdescriptionΖnameッsnapshotted_rel、typeタォdescriptionΖnameォcurrent_rel、typeタォdescriptionΖnameャmodel_config、typeタォdescriptionΖnameュtarget_exists、typeタォdescriptionェcreated_atヒAレ萌Bホウsupported_languagesタクmacro.dbt.create_columns゙、nameョcreate_columnsュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idクmacro.dbt.create_columnsゥmacro_sqlル+% macro create_columns(relation, columns) %}
{{ adapter.dispatch('create_columns', 'dbt')(relation, columns) }}
{% endmacro %}ェdepends_on※macros胎!macro.dbt.default__create_columnsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameァcolumns、typeタォdescriptionェcreated_atヒAレ萌Bホ爆ウsupported_languagesタル!macro.dbt.default__create_columns゙、nameキdefault__create_columnsュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル!macro.dbt.default__create_columnsゥmacro_sqlレ{% macro default__create_columns(relation, columns) %}
{% for column in columns %}
{% call statement() %}
alter table {{ relation.render() }} add column {{ adapter.quote(column.name) }} {{ column.expanded_data_type }};
{% endcall %}
{% endfor %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameァcolumns、typeタォdescriptionェcreated_atヒAレ萌Bホ無ウsupported_languagesタキmacro.dbt.post_snapshot゙、nameュpost_snapshotュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idキmacro.dbt.post_snapshotゥmacro_sqlル}{% macro post_snapshot(staging_relation) %}
{{ adapter.dispatch('post_snapshot', 'dbt')(staging_relation) }}
{% endmacro %}ェdepends_on※macros胎 macro.dbt.default__post_snapshotォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameーstaging_relation、typeタォdescriptionェcreated_atヒAレ萌Bホ琳ウsupported_languagesタル macro.dbt.default__post_snapshot゙、nameカdefault__post_snapshotュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル macro.dbt.default__post_snapshotゥmacro_sqlルS{% macro default__post_snapshot(staging_relation) %}
{# no-op #}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameーstaging_relation、typeタォdescriptionェcreated_atヒAレ萌Bホ湾ウsupported_languagesタカmacro.dbt.get_true_sql゙、nameャget_true_sqlュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idカmacro.dbt.get_true_sqlゥmacro_sqlル[{% macro get_true_sql() %}
{{ adapter.dispatch('get_true_sql', 'dbt')() }}
{% endmacro %}ェdepends_on※macros汰macro.dbt.default__get_true_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bホ冂ウsupported_languagesタソmacro.dbt.default__get_true_sql゙、nameオdefault__get_true_sqlュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idソmacro.dbt.default__get_true_sqlゥmacro_sqlルK{% macro default__get_true_sql() %}
{{ return('TRUE') }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bホ$ウsupported_languagesタル macro.dbt.snapshot_staging_table゙、nameカsnapshot_staging_tableュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル macro.dbt.snapshot_staging_tableゥmacro_sqlルコ{% macro snapshot_staging_table(strategy, source_sql, target_relation) -%}
{{ adapter.dispatch('snapshot_staging_table', 'dbt')(strategy, source_sql, target_relation) }}
{% endmacro %}ェdepends_on※macros胎)macro.dbt.default__snapshot_staging_tableォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィstrategy、typeタォdescriptionΖnameェsource_sql、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bホ嫐ウsupported_languagesタル)macro.dbt.get_snapshot_table_column_names゙、nameソget_snapshot_table_column_namesュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル)macro.dbt.get_snapshot_table_column_namesゥmacro_sqlル% macro get_snapshot_table_column_names() %}
{{ return({'dbt_valid_to': 'dbt_valid_to', 'dbt_valid_from': 'dbt_valid_from', 'dbt_scd_id': 'dbt_scd_id', 'dbt_updated_at': 'dbt_updated_at', 'dbt_is_deleted': 'dbt_is_deleted'}) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bホ$ウsupported_languagesタル)macro.dbt.default__snapshot_staging_table゙、nameソdefault__snapshot_staging_tableュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル)macro.dbt.default__snapshot_staging_tableゥmacro_sqlレ{% macro default__snapshot_staging_table(strategy, source_sql, target_relation) -%}
{% set columns = config.get('snapshot_table_column_names') or get_snapshot_table_column_names() %}
{% if strategy.hard_deletes == 'new_record' %}
{% set new_scd_id = snapshot_hash_arguments([columns.dbt_scd_id, snapshot_get_time()]) %}
{% endif %}
with snapshot_query as (
{{ source_sql }}
),
snapshotted_data as (
select *, {{ unique_key_fields(strategy.unique_key) }}
from {{ target_relation }}
where
{% if config.get('dbt_valid_to_current') %}
{% set source_unique_key = columns.dbt_valid_to | trim %}
{% set target_unique_key = config.get('dbt_valid_to_current') | trim %}
{# The exact equals semantics between NULL values depends on the current behavior flag set. Also, update records if the source field is null #}
( {{ equals(source_unique_key, target_unique_key) }} or {{ source_unique_key }} is null )
{% else %}
{{ columns.dbt_valid_to }} is null
{% endif %}
),
insertions_source_data as (
select *, {{ unique_key_fields(strategy.unique_key) }},
{{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
{{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
{{ get_dbt_valid_to_current(strategy, columns) }},
{{ strategy.scd_id }} as {{ columns.dbt_scd_id }}
from snapshot_query
),
updates_source_data as (
select *, {{ unique_key_fields(strategy.unique_key) }},
{{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
{{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
{{ strategy.updated_at }} as {{ columns.dbt_valid_to }}
from snapshot_query
),
{%- if strategy.hard_deletes == 'invalidate' or strategy.hard_deletes == 'new_record' %}
deletes_source_data as (
select *, {{ unique_key_fields(strategy.unique_key) }}
from snapshot_query
),
{% endif %}
insertions as (
select
'insert' as dbt_change_type,
source_data.*
{%- if strategy.hard_deletes == 'new_record' -%}
,'False' as {{ columns.dbt_is_deleted }}
{%- endif %}
from insertions_source_data as source_data
left outer join snapshotted_data
on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
where {{ unique_key_is_null(strategy.unique_key, "snapshotted_data") }}
or ({{ unique_key_is_not_null(strategy.unique_key, "snapshotted_data") }} and (
{{ strategy.row_changed }} {%- if strategy.hard_deletes == 'new_record' -%} or snapshotted_data.{{ columns.dbt_is_deleted }} = 'True' {% endif %}
)
)
),
updates as (
select
'update' as dbt_change_type,
source_data.*,
snapshotted_data.{{ columns.dbt_scd_id }}
{%- if strategy.hard_deletes == 'new_record' -%}
, snapshotted_data.{{ columns.dbt_is_deleted }}
{%- endif %}
from updates_source_data as source_data
join snapshotted_data
on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
where (
{{ strategy.row_changed }} {%- if strategy.hard_deletes == 'new_record' -%} or snapshotted_data.{{ columns.dbt_is_deleted }} = 'True' {% endif %}
)
)
{%- if strategy.hard_deletes == 'invalidate' or strategy.hard_deletes == 'new_record' %}
,
deletes as (
select
'delete' as dbt_change_type,
source_data.*,
{{ snapshot_get_time() }} as {{ columns.dbt_valid_from }},
{{ snapshot_get_time() }} as {{ columns.dbt_updated_at }},
{{ snapshot_get_time() }} as {{ columns.dbt_valid_to }},
snapshotted_data.{{ columns.dbt_scd_id }}
{%- if strategy.hard_deletes == 'new_record' -%}
, snapshotted_data.{{ columns.dbt_is_deleted }}
{%- endif %}
from snapshotted_data
left join deletes_source_data as source_data
on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
where {{ unique_key_is_null(strategy.unique_key, "source_data") }}
{%- if strategy.hard_deletes == 'new_record' %}
and not (
--avoid updating the record's valid_to if the latest entry is marked as deleted
snapshotted_data.{{ columns.dbt_is_deleted }} = 'True'
and
{% if config.get('dbt_valid_to_current') -%}
snapshotted_data.{{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }}
{%- else -%}
snapshotted_data.{{ columns.dbt_valid_to }} is null
{%- endif %}
)
{%- endif %}
)
{%- endif %}
{%- if strategy.hard_deletes == 'new_record' %}
{% set snapshotted_cols = get_list_of_column_names(get_columns_in_relation(target_relation)) %}
{% set source_col_names = get_columns_in_query(source_sql) %}
,
deletion_records as (
select
'insert' as dbt_change_type,
{%- for col_name in source_col_names -%}
{%- if col_name in snapshotted_cols -%}
snapshotted_data.{{ adapter.quote(col_name) }},
{%- else -%}
source_data.{{ adapter.quote(col_name) }},
{%- endif -%}
{% endfor -%}
{%- if strategy.unique_key | is_list -%}
{%- for key in strategy.unique_key -%}
snapshotted_data.{{ key }} as dbt_unique_key_{{ loop.index }},
{% endfor -%}
{%- else -%}
snapshotted_data.dbt_unique_key as dbt_unique_key,
{% endif -%}
{{ snapshot_get_time() }} as {{ columns.dbt_valid_from }},
{{ snapshot_get_time() }} as {{ columns.dbt_updated_at }},
snapshotted_data.{{ columns.dbt_valid_to }} as {{ columns.dbt_valid_to }},
{{ new_scd_id }} as {{ columns.dbt_scd_id }},
'True' as {{ columns.dbt_is_deleted }}
from snapshotted_data
left join deletes_source_data as source_data
on {{ unique_key_join_on(strategy.unique_key, "snapshotted_data", "source_data") }}
where {{ unique_key_is_null(strategy.unique_key, "source_data") }}
and not (
--avoid inserting a new record if the latest one is marked as deleted
snapshotted_data.{{ columns.dbt_is_deleted }} = 'True'
and
{% if config.get('dbt_valid_to_current') -%}
snapshotted_data.{{ columns.dbt_valid_to }} = {{ config.get('dbt_valid_to_current') }}
{%- else -%}
snapshotted_data.{{ columns.dbt_valid_to }} is null
{%- endif %}
)
)
{%- endif %}
select * from insertions
union all
select * from updates
{%- if strategy.hard_deletes == 'invalidate' or strategy.hard_deletes == 'new_record' %}
union all
select * from deletes
{%- endif %}
{%- if strategy.hard_deletes == 'new_record' %}
union all
select * from deletion_records
{%- endif %}
{%- endmacro %}ェdepends_on※macros憖)macro.dbt.get_snapshot_table_column_namesル!macro.dbt.snapshot_hash_argumentsサmacro.dbt.snapshot_get_timeサmacro.dbt.unique_key_fieldsーmacro.dbt.equalsル"macro.dbt.get_dbt_valid_to_currentシmacro.dbt.unique_key_join_onシmacro.dbt.unique_key_is_nullル macro.dbt.unique_key_is_not_nullル"macro.dbt.get_list_of_column_namesル!macro.dbt.get_columns_in_relationセmacro.dbt.get_columns_in_queryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィstrategy、typeタォdescriptionΖnameェsource_sql、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bホケウウsupported_languagesタセmacro.dbt.build_snapshot_table゙、nameエbuild_snapshot_tableュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idセmacro.dbt.build_snapshot_tableゥmacro_sqlル% macro build_snapshot_table(strategy, sql) -%}
{{ adapter.dispatch('build_snapshot_table', 'dbt')(strategy, sql) }}
{% endmacro %}ェdepends_on※macros胎'macro.dbt.default__build_snapshot_tableォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィstrategy、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bホサkウsupported_languagesタル'macro.dbt.default__build_snapshot_table゙、nameスdefault__build_snapshot_tableュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル'macro.dbt.default__build_snapshot_tableゥmacro_sqlレ\{% macro default__build_snapshot_table(strategy, sql) %}
{% set columns = config.get('snapshot_table_column_names') or get_snapshot_table_column_names() %}
select *,
{{ strategy.scd_id }} as {{ columns.dbt_scd_id }},
{{ strategy.updated_at }} as {{ columns.dbt_updated_at }},
{{ strategy.updated_at }} as {{ columns.dbt_valid_from }},
{{ get_dbt_valid_to_current(strategy, columns) }}
{%- if strategy.hard_deletes == 'new_record' -%}
, 'False' as {{ columns.dbt_is_deleted }}
{% endif -%}
from (
{{ sql }}
) sbq
{% endmacro %}ェdepends_on※macros壷)macro.dbt.get_snapshot_table_column_namesル"macro.dbt.get_dbt_valid_to_currentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィstrategy、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bホセ雉supported_languagesタル&macro.dbt.build_snapshot_staging_table゙、nameシbuild_snapshot_staging_tableュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル&macro.dbt.build_snapshot_staging_tableゥmacro_sqlレ本% macro build_snapshot_staging_table(strategy, sql, target_relation) %}
{% set temp_relation = make_temp_relation(target_relation) %}
{% set select = snapshot_staging_table(strategy, sql, target_relation) %}
{% call statement('build_snapshot_staging_relation') %}
{{ create_table_as(True, temp_relation, select) }}
{% endcall %}
{% do return(temp_relation) %}
{% endmacro %}ェdepends_on※macros半macro.dbt.make_temp_relationル macro.dbt.snapshot_staging_tableウmacro.dbt.statementケmacro.dbt.create_table_asォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィstrategy、typeタォdescriptionΖname」sql、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bホチハウsupported_languagesタル)macro.dbt.get_updated_at_column_data_type゙、nameソget_updated_at_column_data_typeュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル)macro.dbt.get_updated_at_column_data_typeゥmacro_sqlレw{% macro get_updated_at_column_data_type(snapshot_sql) %}
{% set snapshot_sql_column_schema = get_column_schema_from_query(snapshot_sql) %}
{% set dbt_updated_at_data_type = null %}
{% set ns = namespace() -%} {#-- handle for-loop scoping with a namespace --#}
{% set ns.dbt_updated_at_data_type = null -%}
{% for column in snapshot_sql_column_schema %}
{% if ((column.column == 'dbt_updated_at') or (column.column == 'DBT_UPDATED_AT')) %}
{% set ns.dbt_updated_at_data_type = column.dtype %}
{% endif %}
{% endfor %}
{{ return(ns.dbt_updated_at_data_type or none) }}
{% endmacro %}ェdepends_on※macros胎&macro.dbt.get_column_schema_from_queryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameャsnapshot_sql、typeタォdescriptionェcreated_atヒAレ萌Bホニウsupported_languagesタソmacro.dbt.check_time_data_types゙、nameオcheck_time_data_typesュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idソmacro.dbt.check_time_data_typesゥmacro_sqlレ/{% macro check_time_data_types(sql) %}
{% set dbt_updated_at_data_type = get_updated_at_column_data_type(sql) %}
{% set snapshot_get_time_data_type = get_snapshot_get_time_data_type() %}
{% if snapshot_get_time_data_type is not none and dbt_updated_at_data_type is not none and snapshot_get_time_data_type != dbt_updated_at_data_type %}
{% if exceptions.warn_snapshot_timestamp_data_types %}
{{ exceptions.warn_snapshot_timestamp_data_types(snapshot_get_time_data_type, dbt_updated_at_data_type) }}
{% endif %}
{% endif %}
{% endmacro %}ェdepends_on※macros壷)macro.dbt.get_updated_at_column_data_typeル)macro.dbt.get_snapshot_get_time_data_typeォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌Bホネ鋧supported_languagesタル"macro.dbt.get_dbt_valid_to_current゙、nameクget_dbt_valid_to_currentュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル"macro.dbt.get_dbt_valid_to_currentゥmacro_sqlレ{% macro get_dbt_valid_to_current(strategy, columns) %}
{% set dbt_valid_to_current = config.get('dbt_valid_to_current') or "null" %}
coalesce(nullif({{ strategy.updated_at }}, {{ strategy.updated_at }}), {{dbt_valid_to_current}})
as {{ columns.dbt_valid_to }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィstrategy、typeタォdescriptionΖnameァcolumns、typeタォdescriptionェcreated_atヒAレ萌Bホハンウsupported_languagesタサmacro.dbt.unique_key_fields゙、nameアunique_key_fieldsュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idサmacro.dbt.unique_key_fieldsゥmacro_sqlレI{% macro unique_key_fields(unique_key) %}
{% if unique_key | is_list %}
{% for key in unique_key %}
{{ key }} as dbt_unique_key_{{ loop.index }}
{%- if not loop.last %} , {%- endif %}
{% endfor %}
{% else %}
{{ unique_key }} as dbt_unique_key
{% endif %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェunique_key、typeタォdescriptionェcreated_atヒAレ萌BホホOウsupported_languagesタシmacro.dbt.unique_key_join_on゙、nameイunique_key_join_onュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idシmacro.dbt.unique_key_join_onゥmacro_sqlレC{% macro unique_key_join_on(unique_key, identifier, from_identifier) %}
{% if unique_key | is_list %}
{% for key in unique_key %}
{% set source_unique_key = (identifier ~ ".dbt_unique_key_" ~ loop.index) | trim %}
{% set target_unique_key = (from_identifier ~ ".dbt_unique_key_" ~ loop.index) | trim %}
{{ equals(source_unique_key, target_unique_key) }}
{%- if not loop.last %} and {%- endif %}
{% endfor %}
{% else %}
{{ identifier }}.dbt_unique_key = {{ from_identifier }}.dbt_unique_key
{% endif %}
{% endmacro %}ェdepends_on※macros族macro.dbt.equalsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameェunique_key、typeタォdescriptionΖnameェidentifier、typeタォdescriptionΖnameッfrom_identifier、typeタォdescriptionェcreated_atヒAレ萌Bホメ乙supported_languagesタシmacro.dbt.unique_key_is_null゙、nameイunique_key_is_nullュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idシmacro.dbt.unique_key_is_nullゥmacro_sqlル閔% macro unique_key_is_null(unique_key, identifier) %}
{% if unique_key | is_list %}
{{ identifier }}.dbt_unique_key_1 is null
{% else %}
{{ identifier }}.dbt_unique_key is null
{% endif %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameェunique_key、typeタォdescriptionΖnameェidentifier、typeタォdescriptionェcreated_atヒAレ萌Bホヤウsupported_languagesタル macro.dbt.unique_key_is_not_null゙、nameカunique_key_is_not_nullュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/snapshots/helpers.sqlイoriginal_file_pathル-macros/materializations/snapshots/helpers.sqlゥunique_idル macro.dbt.unique_key_is_not_nullゥmacro_sqlル% macro unique_key_is_not_null(unique_key, identifier) %}
{% if unique_key | is_list %}
{{ identifier }}.dbt_unique_key_1 is not null
{% else %}
{{ identifier }}.dbt_unique_key is not null
{% endif %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameェunique_key、typeタォdescriptionΖnameェidentifier、typeタォdescriptionェcreated_atヒAレ萌Bホユxウsupported_languagesタル*macro.dbt.materialization_snapshot_default゙、nameル materialization_snapshot_defaultュresource_type・macroャpackage_name」dbt、pathル.macros/materializations/snapshots/snapshot.sqlイoriginal_file_pathル.macros/materializations/snapshots/snapshot.sqlゥunique_idル*macro.dbt.materialization_snapshot_defaultゥmacro_sqlレハ{% materialization snapshot, default %}
{%- set target_table = model.get('alias', model.get('name')) -%}
{%- set strategy_name = config.get('strategy') -%}
{%- set unique_key = config.get('unique_key') %}
-- grab current tables grants config for comparision later on
{%- set grant_config = config.get('grants') -%}
{% set target_relation_exists, target_relation = get_or_create_relation(
database=model.database,
schema=model.schema,
identifier=target_table,
type='table') -%}
{%- if not target_relation.is_table -%}
{% do exceptions.relation_wrong_type(target_relation, 'table') %}
{%- endif -%}
{{ run_hooks(pre_hooks, inside_transaction=False) }}
{{ run_hooks(pre_hooks, inside_transaction=True) }}
{% set strategy_macro = strategy_dispatch(strategy_name) %}
{# The model['config'] parameter below is no longer used, but passing anyway for compatibility #}
{# It was a dictionary of config, instead of the config object from the context #}
{% set strategy = strategy_macro(model, "snapshotted_data", "source_data", model['config'], target_relation_exists) %}
{% if not target_relation_exists %}
{% set build_sql = build_snapshot_table(strategy, model['compiled_code']) %}
{% set build_or_select_sql = build_sql %}
{% set final_sql = create_table_as(False, target_relation, build_sql) %}
{% else %}
{% set columns = config.get("snapshot_table_column_names") or get_snapshot_table_column_names() %}
{{ adapter.assert_valid_snapshot_target_given_strategy(target_relation, columns, strategy) }}
{% set build_or_select_sql = snapshot_staging_table(strategy, sql, target_relation) %}
{% set staging_table = build_snapshot_staging_table(strategy, sql, target_relation) %}
-- this may no-op if the database does not require column expansion
{% do adapter.expand_target_column_types(from_relation=staging_table,
to_relation=target_relation) %}
{% set remove_columns = ['dbt_change_type', 'DBT_CHANGE_TYPE', 'dbt_unique_key', 'DBT_UNIQUE_KEY'] %}
{% if unique_key | is_list %}
{% for key in strategy.unique_key %}
{{ remove_columns.append('dbt_unique_key_' + loop.index|string) }}
{{ remove_columns.append('DBT_UNIQUE_KEY_' + loop.index|string) }}
{% endfor %}
{% endif %}
{% set missing_columns = adapter.get_missing_columns(staging_table, target_relation)
| rejectattr('name', 'in', remove_columns)
| list %}
{% do create_columns(target_relation, missing_columns) %}
{% set source_columns = adapter.get_columns_in_relation(staging_table)
| rejectattr('name', 'in', remove_columns)
| list %}
{% set quoted_source_columns = [] %}
{% for column in source_columns %}
{% do quoted_source_columns.append(adapter.quote(column.name)) %}
{% endfor %}
{% set final_sql = snapshot_merge_sql(
target = target_relation,
source = staging_table,
insert_cols = quoted_source_columns
)
%}
{% endif %}
{{ check_time_data_types(build_or_select_sql) }}
{% call statement('main') %}
{{ final_sql }}
{% endcall %}
{% set should_revoke = should_revoke(target_relation_exists, full_refresh_mode=False) %}
{% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}
{% do persist_docs(target_relation, model) %}
{% if not target_relation_exists %}
{% do create_indexes(target_relation) %}
{% endif %}
{{ run_hooks(post_hooks, inside_transaction=True) }}
{{ adapter.commit() }}
{% if staging_table is defined %}
{% do post_snapshot(staging_table) %}
{% endif %}
{{ run_hooks(post_hooks, inside_transaction=False) }}
{{ return({'relations': [target_relation]}) }}
{% endmaterialization %}ェdepends_on※macrosワル macro.dbt.get_or_create_relationウmacro.dbt.run_hooksサmacro.dbt.strategy_dispatchセmacro.dbt.build_snapshot_tableケmacro.dbt.create_table_asル)macro.dbt.get_snapshot_table_column_namesル macro.dbt.snapshot_staging_tableル&macro.dbt.build_snapshot_staging_tableクmacro.dbt.create_columnsシmacro.dbt.snapshot_merge_sqlソmacro.dbt.check_time_data_typesウmacro.dbt.statementキmacro.dbt.should_revokeカmacro.dbt.apply_grantsカmacro.dbt.persist_docsクmacro.dbt.create_indexesキmacro.dbt.post_snapshotォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌Bホウsupported_languages促sqlル&macro.dbt.materialization_test_default゙、nameシmaterialization_test_defaultュresource_type・macroャpackage_name」dbt、pathル&macros/materializations/tests/test.sqlイoriginal_file_pathル&macros/materializations/tests/test.sqlゥunique_idル&macro.dbt.materialization_test_defaultゥmacro_sqlレ %- materialization test, default -%}
{% set relations = [] %}
{% set limit = config.get('limit') %}
{% set sql_header = config.get('sql_header') if flags.REQUIRE_SQL_HEADER_IN_TEST_CONFIGS else none %}
{% set sql_with_limit %}
{{ get_limit_subquery_sql(sql, limit) }}
{% endset %}
{% if should_store_failures() %}
{% set identifier = model['alias'] %}
{% set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}
{% set store_failures_as = config.get('store_failures_as') %}
-- if `--store-failures` is invoked via command line and `store_failures_as` is not set,
-- config.get('store_failures_as', 'table') returns None, not 'table'
{% if store_failures_as == none %}{% set store_failures_as = 'table' %}{% endif %}
{% if store_failures_as not in ['table', 'view'] %}
{{ exceptions.raise_compiler_error(
"'" ~ store_failures_as ~ "' is not a valid value for `store_failures_as`. "
"Accepted values are: ['ephemeral', 'table', 'view']"
) }}
{% endif %}
{% set target_relation = api.Relation.create(
identifier=identifier, schema=schema, database=database, type=store_failures_as) -%} %}
{% if old_relation %}
{% do adapter.drop_relation(old_relation) %}
{% endif %}
{% call statement(auto_begin=True) %}
{% if sql_header %}{{ sql_header }}{% endif %}
{{ get_create_sql(target_relation, sql_with_limit) }}
{% endcall %}
{% do relations.append(target_relation) %}
{# Since the test failures have already been saved to the database, reuse that result rather than querying again #}
{% set main_sql %}
select *
from {{ target_relation }}
{% endset %}
{{ adapter.commit() }}
{% else %}
{% set main_sql = sql_with_limit %}
{% endif %}
{% set fail_calc = config.get('fail_calc') %}
{% set warn_if = config.get('warn_if') %}
{% set error_if = config.get('error_if') %}
{% call statement('main', fetch_result=True) -%}
{% if sql_header %}{{ sql_header }}{% endif %}
{# The limit has already been included above, and we do not want to duplicate it again. We also want to be safe for macro overrides treating `limit` as a required parameter. #}
{{ get_test_sql(main_sql, fail_calc, warn_if, error_if, limit=none)}}
{%- endcall %}
{{ return({'relations': relations}) }}
{%- endmaterialization -%}ェdepends_on※macros弁 macro.dbt.get_limit_subquery_sqlソmacro.dbt.should_store_failuresウmacro.dbt.statementクmacro.dbt.get_create_sqlカmacro.dbt.get_test_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌Bマ諜supported_languages促sqlカmacro.dbt.get_test_sql゙、nameャget_test_sqlュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/tests/helpers.sqlイoriginal_file_pathル)macros/materializations/tests/helpers.sqlゥunique_idカmacro.dbt.get_test_sqlゥmacro_sqlルキ{% macro get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}
{{ adapter.dispatch('get_test_sql', 'dbt')(main_sql, fail_calc, warn_if, error_if, limit) }}
{%- endmacro %}ェdepends_on※macros汰macro.dbt.default__get_test_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、nameィmain_sql、typeタォdescriptionΖnameゥfail_calc、typeタォdescriptionΖnameァwarn_if、typeタォdescriptionΖnameィerror_if、typeタォdescriptionΖname・limit、typeタォdescriptionェcreated_atヒAレ萌Bマlウsupported_languagesタソmacro.dbt.default__get_test_sql゙、nameオdefault__get_test_sqlュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/tests/helpers.sqlイoriginal_file_pathル)macros/materializations/tests/helpers.sqlゥunique_idソmacro.dbt.default__get_test_sqlゥmacro_sqlレ^{% macro default__get_test_sql(main_sql, fail_calc, warn_if, error_if, limit) -%}
select
{{ fail_calc }} as failures,
{{ fail_calc }} {{ warn_if }} as should_warn,
{{ fail_calc }} {{ error_if }} as should_error
from (
{{ main_sql }}
{{ "limit " ~ limit if limit != none }}
) dbt_internal_test
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、nameィmain_sql、typeタォdescriptionΖnameゥfail_calc、typeタォdescriptionΖnameァwarn_if、typeタォdescriptionΖnameィerror_if、typeタォdescriptionΖname・limit、typeタォdescriptionェcreated_atヒAレ萌Bマ_ウsupported_languagesタサmacro.dbt.get_unit_test_sql゙、nameアget_unit_test_sqlュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/tests/helpers.sqlイoriginal_file_pathル)macros/materializations/tests/helpers.sqlゥunique_idサmacro.dbt.get_unit_test_sqlゥmacro_sqlルム{% macro get_unit_test_sql(main_sql, expected_fixture_sql, expected_column_names) -%}
{{ adapter.dispatch('get_unit_test_sql', 'dbt')(main_sql, expected_fixture_sql, expected_column_names) }}
{%- endmacro %}ェdepends_on※macros胎$macro.dbt.default__get_unit_test_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィmain_sql、typeタォdescriptionΖnameエexpected_fixture_sql、typeタォdescriptionΖnameオexpected_column_names、typeタォdescriptionェcreated_atヒAレ萌Bマッウsupported_languagesタル$macro.dbt.default__get_unit_test_sql゙、nameコdefault__get_unit_test_sqlュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/tests/helpers.sqlイoriginal_file_pathル)macros/materializations/tests/helpers.sqlゥunique_idル$macro.dbt.default__get_unit_test_sqlゥmacro_sqlレモ{% macro default__get_unit_test_sql(main_sql, expected_fixture_sql, expected_column_names) -%}
-- Build actual result given inputs
with dbt_internal_unit_test_actual as (
select
{% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%},{% endif %}{%- endfor -%}, {{ dbt.string_literal("actual") }} as {{ adapter.quote("actual_or_expected") }}
from (
{{ main_sql }}
) _dbt_internal_unit_test_actual
),
-- Build expected result
dbt_internal_unit_test_expected as (
select
{% for expected_column_name in expected_column_names %}{{expected_column_name}}{% if not loop.last -%}, {% endif %}{%- endfor -%}, {{ dbt.string_literal("expected") }} as {{ adapter.quote("actual_or_expected") }}
from (
{{ expected_fixture_sql }}
) _dbt_internal_unit_test_expected
)
-- Union actual and expected results
select * from dbt_internal_unit_test_actual
union all
select * from dbt_internal_unit_test_expected
{%- endmacro %}ェdepends_on※macros尊macro.dbt.string_literalォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィmain_sql、typeタォdescriptionΖnameエexpected_fixture_sql、typeタォdescriptionΖnameオexpected_column_names、typeタォdescriptionェcreated_atヒAレ萌Bマ €ウsupported_languagesタシmacro.dbt.get_where_subquery゙、nameイget_where_subqueryュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/tests/where_subquery.sqlイoriginal_file_pathル0macros/materializations/tests/where_subquery.sqlゥunique_idシmacro.dbt.get_where_subqueryゥmacro_sqlル% macro get_where_subquery(relation) -%}
{% do return(adapter.dispatch('get_where_subquery', 'dbt')(relation)) %}
{%- endmacro %}ェdepends_on※macros胎%macro.dbt.default__get_where_subqueryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bマイウsupported_languagesタル%macro.dbt.default__get_where_subquery゙、nameサdefault__get_where_subqueryュresource_type・macroャpackage_name」dbt、pathル0macros/materializations/tests/where_subquery.sqlイoriginal_file_pathル0macros/materializations/tests/where_subquery.sqlゥunique_idル%macro.dbt.default__get_where_subqueryゥmacro_sqlレh{% macro default__get_where_subquery(relation) -%}
{% set where = config.get('where', '') %}
{% if where %}
{%- set filtered -%}
(select * from {{ relation }} where {{ where }}) dbt_subquery
{%- endset -%}
{% do return(filtered) %}
{%- else -%}
{% do return(relation) %}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bマウsupported_languagesタル&macro.dbt.materialization_unit_default゙、nameシmaterialization_unit_defaultュresource_type・macroャpackage_name」dbt、pathル&macros/materializations/tests/unit.sqlイoriginal_file_pathル&macros/materializations/tests/unit.sqlゥunique_idル&macro.dbt.materialization_unit_defaultゥmacro_sqlレ艝%- materialization unit, default -%}
{% set relations = [] %}
{% set sql_header = config.get('sql_header') if flags.REQUIRE_SQL_HEADER_IN_TEST_CONFIGS else none %}
{% set expected_rows = config.get('expected_rows') %}
{% set expected_sql = config.get('expected_sql') %}
{% set tested_expected_column_names = expected_rows[0].keys() if (expected_rows | length ) > 0 else get_columns_in_query(sql) %}
{%- set target_relation = this.incorporate(type='table') -%}
{%- set temp_relation = make_temp_relation(target_relation)-%}
{% do run_query(get_create_table_as_sql(True, temp_relation, get_empty_subquery_sql(sql))) %}
{%- set columns_in_relation = adapter.get_columns_in_relation(temp_relation) -%}
{%- set column_name_to_data_types = {} -%}
{%- set column_name_to_quoted = {} -%}
{%- for column in columns_in_relation -%}
{%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}
{%- do column_name_to_quoted.update({column.name|lower: column.quoted}) -%}
{%- endfor -%}
{%- set expected_column_names_quoted = [] -%}
{%- for column_name in tested_expected_column_names -%}
{%- do expected_column_names_quoted.append(column_name_to_quoted[column_name|lower]) -%}
{%- endfor -%}
{% if not expected_sql %}
{% set expected_sql = get_expected_sql(expected_rows, column_name_to_data_types, column_name_to_quoted) %}
{% endif %}
{% set unit_test_sql = get_unit_test_sql(sql, expected_sql, expected_column_names_quoted) %}
{% call statement('main', fetch_result=True) -%}
{% if sql_header %}{{ sql_header }}{% endif %}
{{ unit_test_sql }}
{%- endcall %}
{% do adapter.drop_relation(temp_relation) %}
{{ return({'relations': relations}) }}
{%- endmaterialization -%}ェdepends_on※macros仞macro.dbt.get_columns_in_queryシmacro.dbt.make_temp_relationウmacro.dbt.run_queryル!macro.dbt.get_create_table_as_sqlル macro.dbt.get_empty_subquery_sqlコmacro.dbt.get_expected_sqlサmacro.dbt.get_unit_test_sqlウmacro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌Bマクウsupported_languages促sqlル3macro.dbt.materialization_materialized_view_default゙、nameル)materialization_materialized_view_defaultュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/materialized_view.sqlイoriginal_file_pathル4macros/materializations/models/materialized_view.sqlゥunique_idル3macro.dbt.materialization_materialized_view_defaultゥmacro_sqlレm{% materialization materialized_view, default %}
{% set existing_relation = load_cached_relation(this) %}
{% set target_relation = this.incorporate(type=this.MaterializedView) %}
{% set intermediate_relation = make_intermediate_relation(target_relation) %}
{% set backup_relation_type = target_relation.MaterializedView if existing_relation is none else existing_relation.type %}
{% set backup_relation = make_backup_relation(target_relation, backup_relation_type) %}
{{ materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) }}
{% set build_sql = materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}
{% if build_sql == '' %}
{{ materialized_view_execute_no_op(target_relation) }}
{% else %}
{{ materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) }}
{% endif %}
{{ materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) }}
{{ return({'relations': [target_relation]}) }}
{% endmaterialization %}ェdepends_on※macros仞macro.dbt.load_cached_relationル$macro.dbt.make_intermediate_relationセmacro.dbt.make_backup_relationル!macro.dbt.materialized_view_setupル)macro.dbt.materialized_view_get_build_sqlル)macro.dbt.materialized_view_execute_no_opル-macro.dbt.materialized_view_execute_build_sqlル$macro.dbt.materialized_view_teardownォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌Bマ'蟲supported_languages促sqlル!macro.dbt.materialized_view_setup゙、nameキmaterialized_view_setupュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/materialized_view.sqlイoriginal_file_pathル4macros/materializations/models/materialized_view.sqlゥunique_idル!macro.dbt.materialized_view_setupゥmacro_sqlレノ{% macro materialized_view_setup(backup_relation, intermediate_relation, pre_hooks) %}
-- backup_relation and intermediate_relation should not already exist in the database
-- it's possible these exist because of a previous run that exited unexpectedly
{% set preexisting_backup_relation = load_cached_relation(backup_relation) %}
{% set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) %}
-- drop the temp relations if they exist already in the database
{{ drop_relation_if_exists(preexisting_backup_relation) }}
{{ drop_relation_if_exists(preexisting_intermediate_relation) }}
{{ run_hooks(pre_hooks, inside_transaction=False) }}
{% endmacro %}ェdepends_on※macros得macro.dbt.load_cached_relationル!macro.dbt.drop_relation_if_existsウmacro.dbt.run_hooksォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameッbackup_relation、typeタォdescriptionΖnameオintermediate_relation、typeタォdescriptionΖnameゥpre_hooks、typeタォdescriptionェcreated_atヒAレ萌Bマ*_ウsupported_languagesタル$macro.dbt.materialized_view_teardown゙、nameコmaterialized_view_teardownュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/materialized_view.sqlイoriginal_file_pathル4macros/materializations/models/materialized_view.sqlゥunique_idル$macro.dbt.materialized_view_teardownゥmacro_sqlレl{% macro materialized_view_teardown(backup_relation, intermediate_relation, post_hooks) %}
-- drop the temp relations if they exist to leave the database clean for the next run
{{ drop_relation_if_exists(backup_relation) }}
{{ drop_relation_if_exists(intermediate_relation) }}
{{ run_hooks(post_hooks, inside_transaction=False) }}
{% endmacro %}ェdepends_on※macros壷!macro.dbt.drop_relation_if_existsウmacro.dbt.run_hooksォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameッbackup_relation、typeタォdescriptionΖnameオintermediate_relation、typeタォdescriptionΖnameェpost_hooks、typeタォdescriptionェcreated_atヒAレ萌Bマ,^ウsupported_languagesタル)macro.dbt.materialized_view_get_build_sql゙、nameソmaterialized_view_get_build_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/materialized_view.sqlイoriginal_file_pathル4macros/materializations/models/materialized_view.sqlゥunique_idル)macro.dbt.materialized_view_get_build_sqlゥmacro_sqlレ% macro materialized_view_get_build_sql(existing_relation, target_relation, backup_relation, intermediate_relation) %}
{% set full_refresh_mode = should_full_refresh() %}
-- determine the scenario we're in: create, full_refresh, alter, refresh data
{% if existing_relation is none %}
{% set build_sql = get_create_materialized_view_as_sql(target_relation, sql) %}
{% elif full_refresh_mode or not existing_relation.is_materialized_view %}
{% set build_sql = get_replace_sql(existing_relation, target_relation, sql) %}
{% else %}
-- get config options
{% set on_configuration_change = config.get('on_configuration_change') %}
{% set configuration_changes = get_materialized_view_configuration_changes(existing_relation, config) %}
{% if configuration_changes is none %}
{% set build_sql = refresh_materialized_view(target_relation) %}
{% elif on_configuration_change == 'apply' %}
{% set build_sql = get_alter_materialized_view_as_sql(target_relation, configuration_changes, sql, existing_relation, backup_relation, intermediate_relation) %}
{% elif on_configuration_change == 'continue' %}
{% set build_sql = '' %}
{{ exceptions.warn("Configuration changes were identified and `on_configuration_change` was set to `continue` for `" ~ target_relation.render() ~ "`") }}
{% elif on_configuration_change == 'fail' %}
{{ exceptions.raise_fail_fast_error("Configuration changes were identified and `on_configuration_change` was set to `fail` for `" ~ target_relation.render() ~ "`") }}
{% else %}
-- this only happens if the user provides a value other than `apply`, 'skip', 'fail'
{{ exceptions.raise_compiler_error("Unexpected configuration scenario") }}
{% endif %}
{% endif %}
{% do return(build_sql) %}
{% endmacro %}ェdepends_on※macros命macro.dbt.should_full_refreshル-macro.dbt.get_create_materialized_view_as_sqlケmacro.dbt.get_replace_sqlル5macro.dbt.get_materialized_view_configuration_changesル#macro.dbt.refresh_materialized_viewル,macro.dbt.get_alter_materialized_view_as_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameアexisting_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionΖnameッbackup_relation、typeタォdescriptionΖnameオintermediate_relation、typeタォdescriptionェcreated_atヒAレ萌Bマ4Pウsupported_languagesタル)macro.dbt.materialized_view_execute_no_op゙、nameソmaterialized_view_execute_no_opュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/materialized_view.sqlイoriginal_file_pathル4macros/materializations/models/materialized_view.sqlゥunique_idル)macro.dbt.materialized_view_execute_no_opゥmacro_sqlル炮% macro materialized_view_execute_no_op(target_relation) %}
{% do store_raw_result(
name="main",
message="skip " ~ target_relation,
code="skip",
rows_affected="-1"
) %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bマ5゚ウsupported_languagesタル-macro.dbt.materialized_view_execute_build_sql゙、nameル#materialized_view_execute_build_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/materialized_view.sqlイoriginal_file_pathル4macros/materializations/models/materialized_view.sqlゥunique_idル-macro.dbt.materialized_view_execute_build_sqlゥmacro_sqlレ宮% macro materialized_view_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) %}
-- `BEGIN` happens here:
{{ run_hooks(pre_hooks, inside_transaction=True) }}
{% set grant_config = config.get('grants') %}
{% call statement(name="main") %}
{{ build_sql }}
{% endcall %}
{% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}
{% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}
{% do persist_docs(target_relation, model) %}
{{ run_hooks(post_hooks, inside_transaction=True) }}
{{ adapter.commit() }}
{% endmacro %}ェdepends_on※macros糞macro.dbt.run_hooksウmacro.dbt.statementキmacro.dbt.should_revokeカmacro.dbt.apply_grantsカmacro.dbt.persist_docsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameゥbuild_sql、typeタォdescriptionΖnameアexisting_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionΖnameェpost_hooks、typeタォdescriptionェcreated_atヒAレ萌Bマ9箋supported_languagesタル&macro.dbt.materialization_view_default゙、nameシmaterialization_view_defaultュresource_type・macroャpackage_name」dbt、pathル'macros/materializations/models/view.sqlイoriginal_file_pathル'macros/materializations/models/view.sqlゥunique_idル&macro.dbt.materialization_view_defaultゥmacro_sqlレ ー{%- materialization view, default -%}
{%- set existing_relation = load_cached_relation(this) -%}
{%- set target_relation = this.incorporate(type='view') -%}
{%- set intermediate_relation = make_intermediate_relation(target_relation) -%}
-- the intermediate_relation should not already exist in the database; get_relation
-- will return None in that case. Otherwise, we get a relation that we can drop
-- later, before we try to use this name for the current operation
{%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}
/*
This relation (probably) doesn't exist yet. If it does exist, it's a leftover from
a previous run, and we're going to try to drop it immediately. At the end of this
materialization, we're going to rename the "existing_relation" to this identifier,
and then we're going to drop it. In order to make sure we run the correct one of:
- drop view ...
- drop table ...
We need to set the type of this relation to be the type of the existing_relation, if it exists,
or else "view" as a sane default if it does not. Note that if the existing_relation does not
exist, then there is nothing to move out of the way and subsequentally drop. In that case,
this relation will be effectively unused.
*/
{%- set backup_relation_type = 'view' if existing_relation is none else existing_relation.type -%}
{%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}
-- as above, the backup_relation should not already exist
{%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}
-- grab current tables grants config for comparision later on
{% set grant_config = config.get('grants') %}
{{ run_hooks(pre_hooks, inside_transaction=False) }}
-- drop the temp relations if they exist already in the database
{{ drop_relation_if_exists(preexisting_intermediate_relation) }}
{{ drop_relation_if_exists(preexisting_backup_relation) }}
-- `BEGIN` happens here:
{{ run_hooks(pre_hooks, inside_transaction=True) }}
-- build model
{% call statement('main') -%}
{{ get_create_view_as_sql(intermediate_relation, sql) }}
{%- endcall %}
-- cleanup
-- move the existing view out of the way
{% if existing_relation is not none %}
/* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped
since the variable was first set. */
{% set existing_relation = load_cached_relation(existing_relation) %}
{% if existing_relation is not none %}
{{ adapter.rename_relation(existing_relation, backup_relation) }}
{% endif %}
{% endif %}
{{ adapter.rename_relation(intermediate_relation, target_relation) }}
{% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}
{% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}
{% do persist_docs(target_relation, model) %}
{{ run_hooks(post_hooks, inside_transaction=True) }}
{{ adapter.commit() }}
{{ drop_relation_if_exists(backup_relation) }}
{{ run_hooks(post_hooks, inside_transaction=False) }}
{{ return({'relations': [target_relation]}) }}
{%- endmaterialization -%}ェdepends_on※macros埓macro.dbt.load_cached_relationル$macro.dbt.make_intermediate_relationセmacro.dbt.make_backup_relationウmacro.dbt.run_hooksル!macro.dbt.drop_relation_if_existsウmacro.dbt.statementル macro.dbt.get_create_view_as_sqlキmacro.dbt.should_revokeカmacro.dbt.apply_grantsカmacro.dbt.persist_docsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌BマGウsupported_languages促sqlル'macro.dbt.materialization_table_default゙、nameスmaterialization_table_defaultュresource_type・macroャpackage_name」dbt、pathル(macros/materializations/models/table.sqlイoriginal_file_pathル(macros/materializations/models/table.sqlゥunique_idル'macro.dbt.materialization_table_defaultゥmacro_sqlレ
y{% materialization table, default %}
{%- set existing_relation = load_cached_relation(this) -%}
{%- set target_relation = this.incorporate(type='table') %}
{%- set intermediate_relation = make_intermediate_relation(target_relation) -%}
-- the intermediate_relation should not already exist in the database; get_relation
-- will return None in that case. Otherwise, we get a relation that we can drop
-- later, before we try to use this name for the current operation
{%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation) -%}
/*
See ../view/view.sql for more information about this relation.
*/
{%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}
{%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}
-- as above, the backup_relation should not already exist
{%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}
-- grab current tables grants config for comparision later on
{% set grant_config = config.get('grants') %}
-- drop the temp relations if they exist already in the database
{{ drop_relation_if_exists(preexisting_intermediate_relation) }}
{{ drop_relation_if_exists(preexisting_backup_relation) }}
{{ run_hooks(pre_hooks, inside_transaction=False) }}
-- `BEGIN` happens here:
{{ run_hooks(pre_hooks, inside_transaction=True) }}
-- build model
{% call statement('main') -%}
{{ get_create_table_as_sql(False, intermediate_relation, sql) }}
{%- endcall %}
{% do create_indexes(intermediate_relation) %}
-- cleanup
{% if existing_relation is not none %}
/* Do the equivalent of rename_if_exists. 'existing_relation' could have been dropped
since the variable was first set. */
{% set existing_relation = load_cached_relation(existing_relation) %}
{% if existing_relation is not none %}
{{ adapter.rename_relation(existing_relation, backup_relation) }}
{% endif %}
{% endif %}
{{ adapter.rename_relation(intermediate_relation, target_relation) }}
{{ run_hooks(post_hooks, inside_transaction=True) }}
{% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}
{% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}
{% do persist_docs(target_relation, model) %}
-- `COMMIT` happens here
{{ adapter.commit() }}
-- finally, drop the existing/backup relation after the commit
{{ drop_relation_if_exists(backup_relation) }}
{{ run_hooks(post_hooks, inside_transaction=False) }}
{{ return({'relations': [target_relation]}) }}
{% endmaterialization %}ェdepends_on※macros崟macro.dbt.load_cached_relationル$macro.dbt.make_intermediate_relationセmacro.dbt.make_backup_relationル!macro.dbt.drop_relation_if_existsウmacro.dbt.run_hooksウmacro.dbt.statementル!macro.dbt.get_create_table_as_sqlクmacro.dbt.create_indexesキmacro.dbt.should_revokeカmacro.dbt.apply_grantsカmacro.dbt.persist_docsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌BマTsupported_languages促sqlクmacro.dbt.get_quoted_csv゙、nameョget_quoted_csvュresource_type・macroャpackage_name」dbt、pathル=macros/materializations/models/incremental/column_helpers.sqlイoriginal_file_pathル=macros/materializations/models/incremental/column_helpers.sqlゥunique_idクmacro.dbt.get_quoted_csvゥmacro_sqlレ{% macro get_quoted_csv(column_names) %}
{% set quoted = [] %}
{% for col in column_names -%}
{%- do quoted.append(adapter.quote(col)) -%}
{%- endfor %}
{%- set dest_cols_csv = quoted | join(', ') -%}
{{ return(dest_cols_csv) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameャcolumn_names、typeタォdescriptionェcreated_atヒAレ萌Bマ[:ウsupported_languagesタカmacro.dbt.diff_columns゙、nameャdiff_columnsュresource_type・macroャpackage_name」dbt、pathル=macros/materializations/models/incremental/column_helpers.sqlイoriginal_file_pathル=macros/materializations/models/incremental/column_helpers.sqlゥunique_idカmacro.dbt.diff_columnsゥmacro_sqlレ {% macro diff_columns(source_columns, target_columns) %}
{% set result = [] %}
{% set source_names = source_columns | map(attribute = 'column') | list %}
{% set target_names = target_columns | map(attribute = 'column') | list %}
{# --check whether the name attribute exists in the target - this does not perform a data type check #}
{% for sc in source_columns %}
{% if sc.name not in target_names %}
{{ result.append(sc) }}
{% endif %}
{% endfor %}
{{ return(result) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameョsource_columns、typeタォdescriptionΖnameョtarget_columns、typeタォdescriptionェcreated_atヒAレ萌Bマ^盖supported_languagesタル macro.dbt.diff_column_data_types゙、nameカdiff_column_data_typesュresource_type・macroャpackage_name」dbt、pathル=macros/materializations/models/incremental/column_helpers.sqlイoriginal_file_pathル=macros/materializations/models/incremental/column_helpers.sqlゥunique_idル macro.dbt.diff_column_data_typesゥmacro_sqlルウ{% macro diff_column_data_types(source_columns, target_columns) %}
{{ return(adapter.dispatch('diff_column_data_types', 'dbt')(source_columns, target_columns)) }}
{% endmacro %}ェdepends_on※macros胎)macro.dbt.default__diff_column_data_typesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameョsource_columns、typeタォdescriptionΖnameョtarget_columns、typeタォdescriptionェcreated_atヒAレ萌Bマ`Jウsupported_languagesタル)macro.dbt.default__diff_column_data_types゙、nameソdefault__diff_column_data_typesュresource_type・macroャpackage_name」dbt、pathル=macros/materializations/models/incremental/column_helpers.sqlイoriginal_file_pathル=macros/materializations/models/incremental/column_helpers.sqlゥunique_idル)macro.dbt.default__diff_column_data_typesゥmacro_sqlレ {% macro default__diff_column_data_types(source_columns, target_columns) %}
{% set result = [] %}
{% for sc in source_columns %}
{% set tc = target_columns | selectattr("name", "equalto", sc.name) | list | first %}
{% if tc %}
{% if sc.expanded_data_type != tc.expanded_data_type and not sc.can_expand_to(other_column=tc) %}
{{ result.append( { 'column_name': tc.name, 'new_type': sc.expanded_data_type } ) }}
{% endif %}
{% endif %}
{% endfor %}
{{ return(result) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameョsource_columns、typeタォdescriptionΖnameョtarget_columns、typeタォdescriptionェcreated_atヒAレ萌Bマdwウsupported_languagesタル"macro.dbt.get_merge_update_columns゙、nameクget_merge_update_columnsュresource_type・macroャpackage_name」dbt、pathル=macros/materializations/models/incremental/column_helpers.sqlイoriginal_file_pathル=macros/materializations/models/incremental/column_helpers.sqlゥunique_idル"macro.dbt.get_merge_update_columnsゥmacro_sqlル垬% macro get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}
{{ return(adapter.dispatch('get_merge_update_columns', 'dbt')(merge_update_columns, merge_exclude_columns, dest_columns)) }}
{% endmacro %}ェdepends_on※macros胎+macro.dbt.default__get_merge_update_columnsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameエmerge_update_columns、typeタォdescriptionΖnameオmerge_exclude_columns、typeタォdescriptionΖnameャdest_columns、typeタォdescriptionェcreated_atヒAレ萌Bマfウsupported_languagesタル+macro.dbt.default__get_merge_update_columns゙、nameル!default__get_merge_update_columnsュresource_type・macroャpackage_name」dbt、pathル=macros/materializations/models/incremental/column_helpers.sqlイoriginal_file_pathル=macros/materializations/models/incremental/column_helpers.sqlゥunique_idル+macro.dbt.default__get_merge_update_columnsゥmacro_sqlレ本% macro default__get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) %}
{%- set default_cols = dest_columns | map(attribute="quoted") | list -%}
{%- if merge_update_columns and merge_exclude_columns -%}
{{ exceptions.raise_compiler_error(
'Model cannot specify merge_update_columns and merge_exclude_columns. Please update model to use only one config'
)}}
{%- elif merge_update_columns -%}
{%- set update_columns = merge_update_columns -%}
{%- elif merge_exclude_columns -%}
{%- set update_columns = [] -%}
{%- for column in dest_columns -%}
{% if column.column | lower not in merge_exclude_columns | map("lower") | list %}
{%- do update_columns.append(column.quoted) -%}
{% endif %}
{%- endfor -%}
{%- else -%}
{%- set update_columns = default_cols -%}
{%- endif -%}
{{ return(update_columns) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameエmerge_update_columns、typeタォdescriptionΖnameオmerge_exclude_columns、typeタォdescriptionΖnameャdest_columns、typeタォdescriptionェcreated_atヒAレ萌Bマjモウsupported_languagesタキmacro.dbt.get_merge_sql゙、nameュget_merge_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/incremental/merge.sqlイoriginal_file_pathル4macros/materializations/models/incremental/merge.sqlゥunique_idキmacro.dbt.get_merge_sqlゥmacro_sqlレ_{% macro get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}
-- back compat for old kwarg name
{% set incremental_predicates = kwargs.get('predicates', incremental_predicates) %}
{{ adapter.dispatch('get_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}
{%- endmacro %}ェdepends_on※macros胎 macro.dbt.default__get_merge_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、nameヲtarget、typeタォdescriptionΖnameヲsource、typeタォdescriptionΖnameェunique_key、typeタォdescriptionΖnameャdest_columns、typeタォdescriptionΖnameカincremental_predicates、typeタォdescriptionェcreated_atヒAレ萌Bマr゙ウsupported_languagesタル$macro.dbt.get_merge_unique_key_match゙、nameコget_merge_unique_key_matchュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/incremental/merge.sqlイoriginal_file_pathル4macros/materializations/models/incremental/merge.sqlゥunique_idル$macro.dbt.get_merge_unique_key_matchゥmacro_sqlルヌ{% macro get_merge_unique_key_match(source_unique_key, target_unique_key) %}
{{ return(adapter.dispatch('get_merge_unique_key_match', 'dbt')(source_unique_key, target_unique_key)) }}
{% endmacro %}ェdepends_on※macros胎-macro.dbt.default__get_merge_unique_key_matchォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアsource_unique_key、typeタォdescriptionΖnameアtarget_unique_key、typeタォdescriptionェcreated_atヒAレ萌Bマt6ウsupported_languagesタル-macro.dbt.default__get_merge_unique_key_match゙、nameル#default__get_merge_unique_key_matchュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/incremental/merge.sqlイoriginal_file_pathル4macros/materializations/models/incremental/merge.sqlゥunique_idル-macro.dbt.default__get_merge_unique_key_matchゥmacro_sqlルャ{% macro default__get_merge_unique_key_match(source_unique_key, target_unique_key) -%}
{{ return(equals(source_unique_key, target_unique_key) | trim) }}
{%- endmacro %}ェdepends_on※macros族macro.dbt.equalsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアsource_unique_key、typeタォdescriptionΖnameアtarget_unique_key、typeタォdescriptionェcreated_atヒAレ萌BマuGウsupported_languagesタル macro.dbt.default__get_merge_sql゙、nameカdefault__get_merge_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/incremental/merge.sqlイoriginal_file_pathル4macros/materializations/models/incremental/merge.sqlゥunique_idル macro.dbt.default__get_merge_sqlゥmacro_sqlレ{% macro default__get_merge_sql(target, source, unique_key, dest_columns, incremental_predicates=none) -%}
{%- set predicates = [] if incremental_predicates is none else [] + incremental_predicates -%}
{%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute="name")) -%}
{%- set merge_update_columns = config.get('merge_update_columns') -%}
{%- set merge_exclude_columns = config.get('merge_exclude_columns') -%}
{%- set update_columns = get_merge_update_columns(merge_update_columns, merge_exclude_columns, dest_columns) -%}
{%- set sql_header = config.get('sql_header', none) -%}
{% if unique_key %}
{% if unique_key is sequence and unique_key is not mapping and unique_key is not string %}
{% for key in unique_key %}
{% set this_key_match %}
DBT_INTERNAL_SOURCE.{{ key }} = DBT_INTERNAL_DEST.{{ key }}
{% endset %}
{% do predicates.append(this_key_match) %}
{% endfor %}
{% else %}
{% set source_unique_key = ("DBT_INTERNAL_SOURCE." ~ unique_key) | trim %}
{% set target_unique_key = ("DBT_INTERNAL_DEST." ~ unique_key) | trim %}
{% set unique_key_match = get_merge_unique_key_match(source_unique_key, target_unique_key) %}
{% do predicates.append(unique_key_match) %}
{% endif %}
{% else %}
{% do predicates.append('FALSE') %}
{% endif %}
{{ sql_header if sql_header is not none }}
merge into {{ target }} as DBT_INTERNAL_DEST
using {{ source }} as DBT_INTERNAL_SOURCE
on {{"(" ~ predicates | join(") and (") ~ ")"}}
{% if unique_key %}
when matched then update set
{% for column_name in update_columns -%}
{{ column_name }} = DBT_INTERNAL_SOURCE.{{ column_name }}
{%- if not loop.last %}, {%- endif %}
{%- endfor %}
{% endif %}
when not matched then insert
({{ dest_cols_csv }})
values
({{ dest_cols_csv }})
{% endmacro %}ェdepends_on※macros萄macro.dbt.get_quoted_csvル"macro.dbt.get_merge_update_columnsル$macro.dbt.get_merge_unique_key_matchォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、nameヲtarget、typeタォdescriptionΖnameヲsource、typeタォdescriptionΖnameェunique_key、typeタォdescriptionΖnameャdest_columns、typeタォdescriptionΖnameカincremental_predicates、typeタォdescriptionェcreated_atヒAレ萌Bマsupported_languagesタル%macro.dbt.get_delete_insert_merge_sql゙、nameサget_delete_insert_merge_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/incremental/merge.sqlイoriginal_file_pathル4macros/materializations/models/incremental/merge.sqlゥunique_idル%macro.dbt.get_delete_insert_merge_sqlゥmacro_sqlル硺% macro get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}
{{ adapter.dispatch('get_delete_insert_merge_sql', 'dbt')(target, source, unique_key, dest_columns, incremental_predicates) }}
{%- endmacro %}ェdepends_on※macros胎.macro.dbt.default__get_delete_insert_merge_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、nameヲtarget、typeタォdescriptionΖnameヲsource、typeタォdescriptionΖnameェunique_key、typeタォdescriptionΖnameャdest_columns、typeタォdescriptionΖnameカincremental_predicates、typeタォdescriptionェcreated_atヒAレ萌Bマ←ウsupported_languagesタル.macro.dbt.default__get_delete_insert_merge_sql゙、nameル$default__get_delete_insert_merge_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/incremental/merge.sqlイoriginal_file_pathル4macros/materializations/models/incremental/merge.sqlゥunique_idル.macro.dbt.default__get_delete_insert_merge_sqlゥmacro_sqlレォ{% macro default__get_delete_insert_merge_sql(target, source, unique_key, dest_columns, incremental_predicates) -%}
{%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute="name")) -%}
{% if unique_key %}
{% if unique_key is string %}
{% set unique_key = [unique_key] %}
{% endif %}
{%- set unique_key_str = unique_key|join(', ') -%}
delete from {{ target }} as DBT_INTERNAL_DEST
where ({{ unique_key_str }}) in (
select distinct {{ unique_key_str }}
from {{ source }} as DBT_INTERNAL_SOURCE
)
{%- if incremental_predicates %}
{% for predicate in incremental_predicates %}
and {{ predicate }}
{% endfor %}
{%- endif -%};
{% endif %}
insert into {{ target }} ({{ dest_cols_csv }})
(
select {{ dest_cols_csv }}
from {{ source }}
)
{%- endmacro %}ェdepends_on※macros尊macro.dbt.get_quoted_csvォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、nameヲtarget、typeタォdescriptionΖnameヲsource、typeタォdescriptionΖnameェunique_key、typeタォdescriptionΖnameャdest_columns、typeタォdescriptionΖnameカincremental_predicates、typeタォdescriptionェcreated_atヒAレ萌Bマ#ウsupported_languagesタル(macro.dbt.get_insert_overwrite_merge_sql゙、nameセget_insert_overwrite_merge_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/incremental/merge.sqlイoriginal_file_pathル4macros/materializations/models/incremental/merge.sqlゥunique_idル(macro.dbt.get_insert_overwrite_merge_sqlゥmacro_sqlル{% macro get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header=false) -%}
{{ adapter.dispatch('get_insert_overwrite_merge_sql', 'dbt')(target, source, dest_columns, predicates, include_sql_header) }}
{%- endmacro %}ェdepends_on※macros胎1macro.dbt.default__get_insert_overwrite_merge_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、nameヲtarget、typeタォdescriptionΖnameヲsource、typeタォdescriptionΖnameャdest_columns、typeタォdescriptionΖnameェpredicates、typeタォdescriptionΖnameイinclude_sql_header、typeタォdescriptionェcreated_atヒAレ萌Bマウsupported_languagesタル1macro.dbt.default__get_insert_overwrite_merge_sql゙、nameル'default__get_insert_overwrite_merge_sqlュresource_type・macroャpackage_name」dbt、pathル4macros/materializations/models/incremental/merge.sqlイoriginal_file_pathル4macros/materializations/models/incremental/merge.sqlゥunique_idル1macro.dbt.default__get_insert_overwrite_merge_sqlゥmacro_sqlレ% macro default__get_insert_overwrite_merge_sql(target, source, dest_columns, predicates, include_sql_header) -%}
{#-- The only time include_sql_header is True: --#}
{#-- BigQuery + insert_overwrite strategy + "static" partitions config --#}
{#-- We should consider including the sql header at the materialization level instead --#}
{%- set predicates = [] if predicates is none else [] + predicates -%}
{%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute="name")) -%}
{%- set sql_header = config.get('sql_header', none) -%}
{{ sql_header if sql_header is not none and include_sql_header }}
merge into {{ target }} as DBT_INTERNAL_DEST
using {{ source }} as DBT_INTERNAL_SOURCE
on FALSE
when not matched by source
{% if predicates %} and {{ predicates | join(' and ') }} {% endif %}
then delete
when not matched then insert
({{ dest_cols_csv }})
values
({{ dest_cols_csv }})
{% endmacro %}ェdepends_on※macros尊macro.dbt.get_quoted_csvォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、nameヲtarget、typeタォdescriptionΖnameヲsource、typeタォdescriptionΖnameャdest_columns、typeタォdescriptionΖnameェpredicates、typeタォdescriptionΖnameイinclude_sql_header、typeタォdescriptionェcreated_atヒAレ萌Bマ屈ウsupported_languagesタクmacro.dbt.is_incremental゙、nameョis_incrementalュresource_type・macroャpackage_name」dbt、pathル=macros/materializations/models/incremental/is_incremental.sqlイoriginal_file_pathル=macros/materializations/models/incremental/is_incremental.sqlゥunique_idクmacro.dbt.is_incrementalゥmacro_sqlレワ{% macro is_incremental() %}
{#-- do not run introspective queries in parsing #}
{% if not execute %}
{{ return(False) }}
{% else %}
{% set relation = adapter.get_relation(this.database, this.schema, this.table) %}
{{ return(relation is not none
and relation.type == 'table'
and model.config.materialized == 'incremental'
and not should_full_refresh()) }}
{% endif %}
{% endmacro %}ェdepends_on※macros多macro.dbt.should_full_refreshォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bマ埴ウsupported_languagesタル$macro.dbt.get_incremental_append_sql゙、nameコget_incremental_append_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル$macro.dbt.get_incremental_append_sqlゥmacro_sqlル捜% macro get_incremental_append_sql(arg_dict) %}
{{ return(adapter.dispatch('get_incremental_append_sql', 'dbt')(arg_dict)) }}
{% endmacro %}ェdepends_on※macros胎-macro.dbt.default__get_incremental_append_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ嚢ウsupported_languagesタル-macro.dbt.default__get_incremental_append_sql゙、nameル#default__get_incremental_append_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル-macro.dbt.default__get_incremental_append_sqlゥmacro_sqlルテ{% macro default__get_incremental_append_sql(arg_dict) %}
{% do return(get_insert_into_sql(arg_dict["target_relation"], arg_dict["temp_relation"], arg_dict["dest_columns"])) %}
{% endmacro %}ェdepends_on※macros多macro.dbt.get_insert_into_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ遍ウsupported_languagesタル+macro.dbt.get_incremental_delete_insert_sql゙、nameル!get_incremental_delete_insert_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル+macro.dbt.get_incremental_delete_insert_sqlゥmacro_sqlル毬% macro get_incremental_delete_insert_sql(arg_dict) %}
{{ return(adapter.dispatch('get_incremental_delete_insert_sql', 'dbt')(arg_dict)) }}
{% endmacro %}ェdepends_on※macros胎4macro.dbt.default__get_incremental_delete_insert_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ愈ウsupported_languagesタル4macro.dbt.default__get_incremental_delete_insert_sql゙、nameル*default__get_incremental_delete_insert_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル4macro.dbt.default__get_incremental_delete_insert_sqlゥmacro_sqlレ{% macro default__get_incremental_delete_insert_sql(arg_dict) %}
{% do return(get_delete_insert_merge_sql(arg_dict["target_relation"], arg_dict["temp_relation"], arg_dict["unique_key"], arg_dict["dest_columns"], arg_dict["incremental_predicates"])) %}
{% endmacro %}ェdepends_on※macros胎%macro.dbt.get_delete_insert_merge_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ仆ウsupported_languagesタル#macro.dbt.get_incremental_merge_sql゙、nameケget_incremental_merge_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル#macro.dbt.get_incremental_merge_sqlゥmacro_sqlル旬% macro get_incremental_merge_sql(arg_dict) %}
{{ return(adapter.dispatch('get_incremental_merge_sql', 'dbt')(arg_dict)) }}
{% endmacro %}ェdepends_on※macros胎,macro.dbt.default__get_incremental_merge_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ圉ウsupported_languagesタル,macro.dbt.default__get_incremental_merge_sql゙、nameル"default__get_incremental_merge_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル,macro.dbt.default__get_incremental_merge_sqlゥmacro_sqlル% macro default__get_incremental_merge_sql(arg_dict) %}
{% do return(get_merge_sql(arg_dict["target_relation"], arg_dict["temp_relation"], arg_dict["unique_key"], arg_dict["dest_columns"], arg_dict["incremental_predicates"])) %}
{% endmacro %}ェdepends_on※macros孫macro.dbt.get_merge_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ徭ウsupported_languagesタル.macro.dbt.get_incremental_insert_overwrite_sql゙、nameル$get_incremental_insert_overwrite_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル.macro.dbt.get_incremental_insert_overwrite_sqlゥmacro_sqlル・{% macro get_incremental_insert_overwrite_sql(arg_dict) %}
{{ return(adapter.dispatch('get_incremental_insert_overwrite_sql', 'dbt')(arg_dict)) }}
{% endmacro %}ェdepends_on※macros胎7macro.dbt.default__get_incremental_insert_overwrite_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ擅ウsupported_languagesタル7macro.dbt.default__get_incremental_insert_overwrite_sql゙、nameル-default__get_incremental_insert_overwrite_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル7macro.dbt.default__get_incremental_insert_overwrite_sqlゥmacro_sqlル% macro default__get_incremental_insert_overwrite_sql(arg_dict) %}
{% do return(get_insert_overwrite_merge_sql(arg_dict["target_relation"], arg_dict["temp_relation"], arg_dict["dest_columns"], arg_dict["incremental_predicates"])) %}
{% endmacro %}ェdepends_on※macros胎(macro.dbt.get_insert_overwrite_merge_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ4ウsupported_languagesタル%macro.dbt.get_incremental_default_sql゙、nameサget_incremental_default_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル%macro.dbt.get_incremental_default_sqlゥmacro_sqlル怒% macro get_incremental_default_sql(arg_dict) %}
{{ return(adapter.dispatch('get_incremental_default_sql', 'dbt')(arg_dict)) }}
{% endmacro %}ェdepends_on※macros胎8macro.dbt_postgres.postgres__get_incremental_default_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマbウsupported_languagesタル.macro.dbt.default__get_incremental_default_sql゙、nameル$default__get_incremental_default_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル.macro.dbt.default__get_incremental_default_sqlゥmacro_sqlルボ% macro default__get_incremental_default_sql(arg_dict) %}
{% do return(get_incremental_append_sql(arg_dict)) %}
{% endmacro %}ェdepends_on※macros胎$macro.dbt.get_incremental_append_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ。Uウsupported_languagesタル(macro.dbt.get_incremental_microbatch_sql゙、nameセget_incremental_microbatch_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル(macro.dbt.get_incremental_microbatch_sqlゥmacro_sqlル几% macro get_incremental_microbatch_sql(arg_dict) %}
{{ return(adapter.dispatch('get_incremental_microbatch_sql', 'dbt')(arg_dict)) }}
{% endmacro %}ェdepends_on※macros胎;macro.dbt_postgres.postgres__get_incremental_microbatch_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ「wウsupported_languagesタル1macro.dbt.default__get_incremental_microbatch_sql゙、nameル'default__get_incremental_microbatch_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idル1macro.dbt.default__get_incremental_microbatch_sqlゥmacro_sqlルフ{% macro default__get_incremental_microbatch_sql(arg_dict) %}
{{ exceptions.raise_not_implemented('microbatch materialization strategy not implemented for adapter ' + adapter.type()) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィarg_dict、typeタォdescriptionェcreated_atヒAレ萌Bマ」圧supported_languagesタスmacro.dbt.get_insert_into_sql゙、nameウget_insert_into_sqlュresource_type・macroャpackage_name」dbt、pathル9macros/materializations/models/incremental/strategies.sqlイoriginal_file_pathル9macros/materializations/models/incremental/strategies.sqlゥunique_idスmacro.dbt.get_insert_into_sqlゥmacro_sqlレ@{% macro get_insert_into_sql(target_relation, temp_relation, dest_columns) %}
{%- set dest_cols_csv = get_quoted_csv(dest_columns | map(attribute="name")) -%}
insert into {{ target_relation }} ({{ dest_cols_csv }})
(
select {{ dest_cols_csv }}
from {{ temp_relation }}
)
{% endmacro %}ェdepends_on※macros尊macro.dbt.get_quoted_csvォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameッtarget_relation、typeタォdescriptionΖnameュtemp_relation、typeタォdescriptionΖnameャdest_columns、typeタォdescriptionェcreated_atヒAレ萌Bマ・Dウsupported_languagesタル-macro.dbt.materialization_incremental_default゙、nameル#materialization_incremental_defaultュresource_type・macroャpackage_name」dbt、pathル:macros/materializations/models/incremental/incremental.sqlイoriginal_file_pathル:macros/materializations/models/incremental/incremental.sqlゥunique_idル-macro.dbt.materialization_incremental_defaultゥmacro_sqlレタ{% materialization incremental, default -%}
-- relations
{%- set existing_relation = load_cached_relation(this) -%}
{%- set target_relation = this.incorporate(type='table') -%}
{%- set temp_relation = make_temp_relation(target_relation)-%}
{%- set intermediate_relation = make_intermediate_relation(target_relation)-%}
{%- set backup_relation_type = 'table' if existing_relation is none else existing_relation.type -%}
{%- set backup_relation = make_backup_relation(target_relation, backup_relation_type) -%}
-- configs
{%- set unique_key = config.get('unique_key') -%}
{%- set full_refresh_mode = (should_full_refresh() or existing_relation.is_view) -%}
{%- set on_schema_change = incremental_validate_on_schema_change(config.get('on_schema_change'), default='ignore') -%}
-- the temp_ and backup_ relations should not already exist in the database; get_relation
-- will return None in that case. Otherwise, we get a relation that we can drop
-- later, before we try to use this name for the current operation. This has to happen before
-- BEGIN, in a separate transaction
{%- set preexisting_intermediate_relation = load_cached_relation(intermediate_relation)-%}
{%- set preexisting_backup_relation = load_cached_relation(backup_relation) -%}
-- grab current tables grants config for comparision later on
{% set grant_config = config.get('grants') %}
{{ drop_relation_if_exists(preexisting_intermediate_relation) }}
{{ drop_relation_if_exists(preexisting_backup_relation) }}
{{ run_hooks(pre_hooks, inside_transaction=False) }}
-- `BEGIN` happens here:
{{ run_hooks(pre_hooks, inside_transaction=True) }}
{% set to_drop = [] %}
{% set incremental_strategy = config.get('incremental_strategy') or 'default' %}
{% set strategy_sql_macro_func = adapter.get_incremental_strategy_macro(context, incremental_strategy) %}
{% if existing_relation is none %}
{% set build_sql = get_create_table_as_sql(False, target_relation, sql) %}
{% set relation_for_indexes = target_relation %}
{% elif full_refresh_mode %}
{% set build_sql = get_create_table_as_sql(False, intermediate_relation, sql) %}
{% set relation_for_indexes = intermediate_relation %}
{% set need_swap = true %}
{% else %}
{% do run_query(get_create_table_as_sql(True, temp_relation, sql)) %}
{% set relation_for_indexes = temp_relation %}
{% set contract_config = config.get('contract') %}
{% if not contract_config or not contract_config.enforced %}
{% do adapter.expand_target_column_types(
from_relation=temp_relation,
to_relation=target_relation) %}
{% endif %}
{#-- Process schema changes. Returns dict of changes if successful. Use source columns for upserting/merging --#}
{% set dest_columns = process_schema_changes(on_schema_change, temp_relation, existing_relation) %}
{% if not dest_columns %}
{% set dest_columns = adapter.get_columns_in_relation(existing_relation) %}
{% endif %}
{#-- Get the incremental_strategy, the macro to use for the strategy, and build the sql --#}
{% set incremental_predicates = config.get('predicates', none) or config.get('incremental_predicates', none) %}
{% set strategy_arg_dict = ({'target_relation': target_relation, 'temp_relation': temp_relation, 'unique_key': unique_key, 'dest_columns': dest_columns, 'incremental_predicates': incremental_predicates }) %}
{% set build_sql = strategy_sql_macro_func(strategy_arg_dict) %}
{% endif %}
{% call statement("main") %}
{{ build_sql }}
{% endcall %}
{% if existing_relation is none or existing_relation.is_view or should_full_refresh() %}
{% do create_indexes(relation_for_indexes) %}
{% endif %}
{% if need_swap %}
{% do adapter.rename_relation(target_relation, backup_relation) %}
{% do adapter.rename_relation(intermediate_relation, target_relation) %}
{% do to_drop.append(backup_relation) %}
{% endif %}
{% set should_revoke = should_revoke(existing_relation, full_refresh_mode) %}
{% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}
{% do persist_docs(target_relation, model) %}
{{ run_hooks(post_hooks, inside_transaction=True) }}
-- `COMMIT` happens here
{% do adapter.commit() %}
{% for rel in to_drop %}
{% do adapter.drop_relation(rel) %}
{% endfor %}
{{ run_hooks(post_hooks, inside_transaction=False) }}
{{ return({'relations': [target_relation]}) }}
{%- endmaterialization %}ェdepends_on※macrosワセmacro.dbt.load_cached_relationシmacro.dbt.make_temp_relationル$macro.dbt.make_intermediate_relationセmacro.dbt.make_backup_relationスmacro.dbt.should_full_refreshル/macro.dbt.incremental_validate_on_schema_changeル!macro.dbt.drop_relation_if_existsウmacro.dbt.run_hooksル!macro.dbt.get_create_table_as_sqlウmacro.dbt.run_queryル macro.dbt.process_schema_changesウmacro.dbt.statementクmacro.dbt.create_indexesキmacro.dbt.should_revokeカmacro.dbt.apply_grantsカmacro.dbt.persist_docsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌BマタHウsupported_languages促sqlル/macro.dbt.incremental_validate_on_schema_change゙、nameル%incremental_validate_on_schema_changeュresource_type・macroャpackage_name」dbt、pathル?macros/materializations/models/incremental/on_schema_change.sqlイoriginal_file_pathル?macros/materializations/models/incremental/on_schema_change.sqlゥunique_idル/macro.dbt.incremental_validate_on_schema_changeゥmacro_sqlレヤ{% macro incremental_validate_on_schema_change(on_schema_change, default='ignore') %}
{% if on_schema_change not in ['sync_all_columns', 'append_new_columns', 'fail', 'ignore'] %}
{% set log_message = 'Invalid value for on_schema_change (%s) specified. Setting default value of %s.' % (on_schema_change, default) %}
{% do log(log_message) %}
{{ return(default) }}
{% else %}
{{ return(on_schema_change) }}
{% endif %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameーon_schema_change、typeタォdescriptionΖnameァdefault、typeタォdescriptionェcreated_atヒAレ萌Bマノyウsupported_languagesタル"macro.dbt.check_for_schema_changes゙、nameクcheck_for_schema_changesュresource_type・macroャpackage_name」dbt、pathル?macros/materializations/models/incremental/on_schema_change.sqlイoriginal_file_pathル?macros/materializations/models/incremental/on_schema_change.sqlゥunique_idル"macro.dbt.check_for_schema_changesゥmacro_sqlルサ{% macro check_for_schema_changes(source_relation, target_relation) %}
{{ return(adapter.dispatch('check_for_schema_changes', 'dbt')(source_relation, target_relation)) }}
{% endmacro %}ェdepends_on※macros胎+macro.dbt.default__check_for_schema_changesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameッsource_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bマハ箋supported_languagesタル+macro.dbt.default__check_for_schema_changes゙、nameル!default__check_for_schema_changesュresource_type・macroャpackage_name」dbt、pathル?macros/materializations/models/incremental/on_schema_change.sqlイoriginal_file_pathル?macros/materializations/models/incremental/on_schema_change.sqlゥunique_idル+macro.dbt.default__check_for_schema_changesゥmacro_sqlレ% macro default__check_for_schema_changes(source_relation, target_relation) %}
{% set schema_changed = False %}
{%- set source_columns = adapter.get_columns_in_relation(source_relation) -%}
{%- set target_columns = adapter.get_columns_in_relation(target_relation) -%}
{%- set source_not_in_target = diff_columns(source_columns, target_columns) -%}
{%- set target_not_in_source = diff_columns(target_columns, source_columns) -%}
{% set new_target_types = diff_column_data_types(source_columns, target_columns) %}
{% if source_not_in_target != [] %}
{% set schema_changed = True %}
{% elif target_not_in_source != [] or new_target_types != [] %}
{% set schema_changed = True %}
{% elif new_target_types != [] %}
{% set schema_changed = True %}
{% endif %}
{% set changes_dict = {
'schema_changed': schema_changed,
'source_not_in_target': source_not_in_target,
'target_not_in_source': target_not_in_source,
'source_columns': source_columns,
'target_columns': target_columns,
'new_target_types': new_target_types
} %}
{% set msg %}
In {{ target_relation }}:
Schema changed: {{ schema_changed }}
Source columns not in target: {{ source_not_in_target }}
Target columns not in source: {{ target_not_in_source }}
New column types: {{ new_target_types }}
{% endset %}
{% do log(msg) %}
{{ return(changes_dict) }}
{% endmacro %}ェdepends_on※macros銚macro.dbt.diff_columnsル macro.dbt.diff_column_data_typesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameッsource_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bマメ「ウsupported_languagesタスmacro.dbt.sync_column_schemas゙、nameウsync_column_schemasュresource_type・macroャpackage_name」dbt、pathル?macros/materializations/models/incremental/on_schema_change.sqlイoriginal_file_pathル?macros/materializations/models/incremental/on_schema_change.sqlゥunique_idスmacro.dbt.sync_column_schemasゥmacro_sqlルン{% macro sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}
{{ return(adapter.dispatch('sync_column_schemas', 'dbt')(on_schema_change, target_relation, schema_changes_dict)) }}
{% endmacro %}ェdepends_on※macros胎&macro.dbt.default__sync_column_schemasォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameーon_schema_change、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionΖnameウschema_changes_dict、typeタォdescriptionェcreated_atヒAレ萌BマヤJウsupported_languagesタル&macro.dbt.default__sync_column_schemas゙、nameシdefault__sync_column_schemasュresource_type・macroャpackage_name」dbt、pathル?macros/materializations/models/incremental/on_schema_change.sqlイoriginal_file_pathル?macros/materializations/models/incremental/on_schema_change.sqlゥunique_idル&macro.dbt.default__sync_column_schemasゥmacro_sqlレウ{% macro default__sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}
{%- set add_to_target_arr = schema_changes_dict['source_not_in_target'] -%}
{%- set remove_from_target_arr = schema_changes_dict['target_not_in_source'] -%}
{%- set new_target_types = schema_changes_dict['new_target_types'] -%}
{%- if on_schema_change == 'append_new_columns'-%}
{%- if add_to_target_arr | length > 0 -%}
{%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, none) -%}
{%- endif -%}
{% elif on_schema_change == 'sync_all_columns' %}
{% if add_to_target_arr | length > 0 or remove_from_target_arr | length > 0 %}
{%- do alter_relation_add_remove_columns(target_relation, add_to_target_arr, remove_from_target_arr) -%}
{% endif %}
{% if new_target_types != [] %}
{% for ntt in new_target_types %}
{% set column_name = ntt['column_name'] %}
{% set new_type = ntt['new_type'] %}
{% do alter_column_type(target_relation, column_name, new_type) %}
{% endfor %}
{% endif %}
{% endif %}
{% set schema_change_message %}
In {{ target_relation }}:
Schema change approach: {{ on_schema_change }}
Columns added: {{ add_to_target_arr }}
Columns removed: {{ remove_from_target_arr }}
Data types changed: {{ new_target_types }}
{% endset %}
{% do log(schema_change_message) %}
{% endmacro %}ェdepends_on※macros壷+macro.dbt.alter_relation_add_remove_columnsサmacro.dbt.alter_column_typeォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameーon_schema_change、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionΖnameウschema_changes_dict、typeタォdescriptionェcreated_atヒAレ萌Bマロ゚ウsupported_languagesタル macro.dbt.process_schema_changes゙、nameカprocess_schema_changesュresource_type・macroャpackage_name」dbt、pathル?macros/materializations/models/incremental/on_schema_change.sqlイoriginal_file_pathル?macros/materializations/models/incremental/on_schema_change.sqlゥunique_idル macro.dbt.process_schema_changesゥmacro_sqlルロ{% macro process_schema_changes(on_schema_change, source_relation, target_relation) %}
{{ return(adapter.dispatch('process_schema_changes', 'dbt')(on_schema_change, source_relation, target_relation)) }}
{% endmacro %}ェdepends_on※macros胎)macro.dbt.default__process_schema_changesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameーon_schema_change、typeタォdescriptionΖnameッsource_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bマンrウsupported_languagesタル)macro.dbt.default__process_schema_changes゙、nameソdefault__process_schema_changesュresource_type・macroャpackage_name」dbt、pathル?macros/materializations/models/incremental/on_schema_change.sqlイoriginal_file_pathル?macros/materializations/models/incremental/on_schema_change.sqlゥunique_idル)macro.dbt.default__process_schema_changesゥmacro_sqlレ+{% macro default__process_schema_changes(on_schema_change, source_relation, target_relation) %}
{% if on_schema_change == 'ignore' %}
{{ return({}) }}
{% else %}
{% set schema_changes_dict = check_for_schema_changes(source_relation, target_relation) %}
{% if schema_changes_dict['schema_changed'] %}
{% if on_schema_change == 'fail' %}
{% set fail_msg %}
The source and target schemas on this incremental model are out of sync!
They can be reconciled in several ways:
- set the `on_schema_change` config to either append_new_columns or sync_all_columns, depending on your situation.
- Re-run the incremental model with `full_refresh: True` to update the target schema.
- update the schema manually and re-run the process.
Additional troubleshooting context:
Source columns not in target: {{ schema_changes_dict['source_not_in_target'] }}
Target columns not in source: {{ schema_changes_dict['target_not_in_source'] }}
New column types: {{ schema_changes_dict['new_target_types'] }}
{% endset %}
{% do exceptions.raise_compiler_error(fail_msg) %}
{# -- unless we ignore, run the sync operation per the config #}
{% else %}
{% do sync_column_schemas(on_schema_change, target_relation, schema_changes_dict) %}
{% endif %}
{% endif %}
{{ return(schema_changes_dict['source_columns']) }}
{% endif %}
{% endmacro %}ェdepends_on※macros壷"macro.dbt.check_for_schema_changesスmacro.dbt.sync_column_schemasォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameーon_schema_change、typeタォdescriptionΖnameッsource_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bマ糅ウsupported_languagesタケmacro.dbt.can_clone_table゙、nameッcan_clone_tableュresource_type・macroャpackage_name」dbt、pathル8macros/materializations/models/clone/can_clone_table.sqlイoriginal_file_pathル8macros/materializations/models/clone/can_clone_table.sqlゥunique_idケmacro.dbt.can_clone_tableゥmacro_sqlルk{% macro can_clone_table() %}
{{ return(adapter.dispatch('can_clone_table', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎"macro.dbt.default__can_clone_tableォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bマ荵ウsupported_languagesタル"macro.dbt.default__can_clone_table゙、nameクdefault__can_clone_tableュresource_type・macroャpackage_name」dbt、pathル8macros/materializations/models/clone/can_clone_table.sqlイoriginal_file_pathル8macros/materializations/models/clone/can_clone_table.sqlゥunique_idル"macro.dbt.default__can_clone_tableゥmacro_sqlルM{% macro default__can_clone_table() %}
{{ return(False) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bマ蜩ウsupported_languagesタル!macro.dbt.create_or_replace_clone゙、nameキcreate_or_replace_cloneュresource_type・macroャpackage_name」dbt、pathル@macros/materializations/models/clone/create_or_replace_clone.sqlイoriginal_file_pathル@macros/materializations/models/clone/create_or_replace_clone.sqlゥunique_idル!macro.dbt.create_or_replace_cloneゥmacro_sqlルオ{% macro create_or_replace_clone(this_relation, defer_relation) %}
{{ return(adapter.dispatch('create_or_replace_clone', 'dbt')(this_relation, defer_relation)) }}
{% endmacro %}ェdepends_on※macros胎*macro.dbt.default__create_or_replace_cloneォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュthis_relation、typeタォdescriptionΖnameョdefer_relation、typeタォdescriptionェcreated_atヒAレ萌Bマ邇ウsupported_languagesタル*macro.dbt.default__create_or_replace_clone゙、nameル default__create_or_replace_cloneュresource_type・macroャpackage_name」dbt、pathル@macros/materializations/models/clone/create_or_replace_clone.sqlイoriginal_file_pathル@macros/materializations/models/clone/create_or_replace_clone.sqlゥunique_idル*macro.dbt.default__create_or_replace_cloneゥmacro_sqlルキ{% macro default__create_or_replace_clone(this_relation, defer_relation) %}
create or replace table {{ this_relation.render() }} clone {{ defer_relation.render() }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュthis_relation、typeタォdescriptionΖnameョdefer_relation、typeタォdescriptionェcreated_atヒAレ萌Bマ霖ウsupported_languagesタル'macro.dbt.materialization_clone_default゙、nameスmaterialization_clone_defaultュresource_type・macroャpackage_name」dbt、pathル.macros/materializations/models/clone/clone.sqlイoriginal_file_pathル.macros/materializations/models/clone/clone.sqlゥunique_idル'macro.dbt.materialization_clone_defaultゥmacro_sqlレ .{%- materialization clone, default -%}
{%- set relations = {'relations': []} -%}
{%- if not defer_relation -%}
-- nothing to do
{{ log("No relation found in state manifest for " ~ model.unique_id, info=True) }}
{{ return(relations) }}
{%- endif -%}
{%- set existing_relation = load_cached_relation(this) -%}
{%- if existing_relation and not flags.FULL_REFRESH -%}
-- noop!
{{ log("Relation " ~ existing_relation ~ " already exists", info=True) }}
{{ return(relations) }}
{%- endif -%}
{%- set other_existing_relation = load_cached_relation(defer_relation) -%}
-- If this is a database that can do zero-copy cloning of tables, and the other relation is a table, then this will be a table
-- Otherwise, this will be a view
{% set can_clone_table = can_clone_table() %}
{%- set grant_config = config.get('grants') -%}
{%- if other_existing_relation and other_existing_relation.type == 'table' and can_clone_table -%}
{%- set target_relation = this.incorporate(type='table') -%}
{% if existing_relation is not none and not existing_relation.is_table %}
{{ log("Dropping relation " ~ existing_relation.render() ~ " because it is of type " ~ existing_relation.type) }}
{{ drop_relation_if_exists(existing_relation) }}
{% endif %}
-- as a general rule, data platforms that can clone tables can also do atomic 'create or replace'
{% if target_relation.database == defer_relation.database and
target_relation.schema == defer_relation.schema and
target_relation.identifier == defer_relation.identifier %}
{{ log("Target relation and defer relation are the same, skipping clone for relation: " ~ target_relation.render()) }}
{% else %}
{% call statement('main') %}
{{ create_or_replace_clone(target_relation, defer_relation) }}
{% endcall %}
{% endif %}
{% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}
{% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}
{% do persist_docs(target_relation, model) %}
{{ return({'relations': [target_relation]}) }}
{%- else -%}
{%- set target_relation = this.incorporate(type='view') -%}
-- reuse the view materialization
-- TODO: support actual dispatch for materialization macros
-- Tracking ticket: https://github.com/dbt-labs/dbt-core/issues/7799
{% set search_name = "materialization_view_" ~ adapter.type() %}
{% if not search_name in context %}
{% set search_name = "materialization_view_default" %}
{% endif %}
{% set materialization_macro = context[search_name] %}
{% set relations = materialization_macro() %}
{{ return(relations) }}
{%- endif -%}
{%- endmaterialization -%}ェdepends_on※macros仞macro.dbt.load_cached_relationケmacro.dbt.can_clone_tableル!macro.dbt.drop_relation_if_existsウmacro.dbt.statementル!macro.dbt.create_or_replace_cloneキmacro.dbt.should_revokeカmacro.dbt.apply_grantsカmacro.dbt.persist_docsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌Bマ柀ウsupported_languages促sqlル&macro.dbt.materialization_seed_default゙、nameシmaterialization_seed_defaultュresource_type・macroャpackage_name」dbt、pathル&macros/materializations/seeds/seed.sqlイoriginal_file_pathル&macros/materializations/seeds/seed.sqlゥunique_idル&macro.dbt.materialization_seed_defaultゥmacro_sqlレャ{% materialization seed, default %}
{%- set identifier = model['alias'] -%}
{%- set full_refresh_mode = (should_full_refresh()) -%}
{%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}
{%- set exists_as_table = (old_relation is not none and old_relation.is_table) -%}
{%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}
{%- set grant_config = config.get('grants') -%}
{%- set agate_table = load_agate_table() -%}
-- grab current tables grants config for comparison later on
{%- do store_result('agate_table', response='OK', agate_table=agate_table) -%}
{{ run_hooks(pre_hooks, inside_transaction=False) }}
-- `BEGIN` happens here:
{{ run_hooks(pre_hooks, inside_transaction=True) }}
-- build model
{% set create_table_sql = "" %}
{% if exists_as_view %}
{{ exceptions.raise_compiler_error("Cannot seed to '{}', it is a view".format(old_relation.render())) }}
{% elif exists_as_table %}
{% set create_table_sql = reset_csv_table(model, full_refresh_mode, old_relation, agate_table) %}
{% else %}
{% set create_table_sql = create_csv_table(model, agate_table) %}
{% endif %}
{% set code = 'CREATE' if full_refresh_mode else 'INSERT' %}
{% set rows_affected = (agate_table.rows | length) %}
{% set sql = "" %}
{% if rows_affected > 0 %}
{% set sql = load_csv_rows(model, agate_table) %}
{% endif %}
{% call noop_statement('main', code ~ ' ' ~ rows_affected, code, rows_affected) %}
{{ get_csv_sql(create_table_sql, sql) }};
{% endcall %}
{% set target_relation = this.incorporate(type='table') %}
{% set should_revoke = should_revoke(old_relation, full_refresh_mode) %}
{% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}
{% do persist_docs(target_relation, model) %}
{% if full_refresh_mode or not exists_as_table %}
{% do create_indexes(target_relation) %}
{% endif %}
{{ run_hooks(post_hooks, inside_transaction=True) }}
-- `COMMIT` happens here
{{ adapter.commit() }}
{{ run_hooks(post_hooks, inside_transaction=False) }}
{{ return({'relations': [target_relation]}) }}
{% endmaterialization %}ェdepends_on※macros嵜macro.dbt.should_full_refreshウmacro.dbt.run_hooksケmacro.dbt.reset_csv_tableコmacro.dbt.create_csv_tableキmacro.dbt.load_csv_rowsクmacro.dbt.noop_statementオmacro.dbt.get_csv_sqlキmacro.dbt.should_revokeカmacro.dbt.apply_grantsカmacro.dbt.persist_docsクmacro.dbt.create_indexesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌Bミ xウsupported_languages促sqlコmacro.dbt.create_csv_table゙、nameーcreate_csv_tableュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idコmacro.dbt.create_csv_tableゥmacro_sqlル閲% macro create_csv_table(model, agate_table) -%}
{{ adapter.dispatch('create_csv_table', 'dbt')(model, agate_table) }}
{%- endmacro %}ェdepends_on※macros胎#macro.dbt.default__create_csv_tableォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・model、typeタォdescriptionΖnameォagate_table、typeタォdescriptionェcreated_atヒAレ萌Bミ雉supported_languagesタル#macro.dbt.default__create_csv_table゙、nameケdefault__create_csv_tableュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idル#macro.dbt.default__create_csv_tableゥmacro_sqlレ({% macro default__create_csv_table(model, agate_table) %}
{%- set column_override = model['config'].get('column_types', {}) -%}
{%- set quote_seed_column = model['config'].get('quote_columns', None) -%}
{% set sql %}
create table {{ this.render() }} (
{%- for col_name in agate_table.column_names -%}
{%- set inferred_type = adapter.convert_type(agate_table, loop.index0) -%}
{%- set type = column_override.get(col_name, inferred_type) -%}
{%- set column_name = (col_name | string) -%}
{{ adapter.quote_seed_column(column_name, quote_seed_column) }} {{ type }} {%- if not loop.last -%}, {%- endif -%}
{%- endfor -%}
)
{% endset %}
{% call statement('_') -%}
{{ sql }}
{%- endcall %}
{{ return(sql) }}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・model、typeタォdescriptionΖnameォagate_table、typeタォdescriptionェcreated_atヒAレ萌Bミaウsupported_languagesタケmacro.dbt.reset_csv_table゙、nameッreset_csv_tableュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idケmacro.dbt.reset_csv_tableゥmacro_sqlルソ{% macro reset_csv_table(model, full_refresh, old_relation, agate_table) -%}
{{ adapter.dispatch('reset_csv_table', 'dbt')(model, full_refresh, old_relation, agate_table) }}
{%- endmacro %}ェdepends_on※macros胎"macro.dbt.default__reset_csv_tableォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、name・model、typeタォdescriptionΖnameャfull_refresh、typeタォdescriptionΖnameャold_relation、typeタォdescriptionΖnameォagate_table、typeタォdescriptionェcreated_atヒAレ萌Bミ゙ウsupported_languagesタル"macro.dbt.default__reset_csv_table゙、nameクdefault__reset_csv_tableュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idル"macro.dbt.default__reset_csv_tableゥmacro_sqlレア{% macro default__reset_csv_table(model, full_refresh, old_relation, agate_table) %}
{% set sql = "" %}
{% if full_refresh %}
{{ adapter.drop_relation(old_relation) }}
{% set sql = create_csv_table(model, agate_table) %}
{% else %}
{{ adapter.truncate_relation(old_relation) }}
{% set sql = "truncate table " ~ old_relation.render() %}
{% endif %}
{{ return(sql) }}
{% endmacro %}ェdepends_on※macros村macro.dbt.create_csv_tableォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、name・model、typeタォdescriptionΖnameャfull_refresh、typeタォdescriptionΖnameャold_relation、typeタォdescriptionΖnameォagate_table、typeタォdescriptionェcreated_atヒAレ萌Bミラウsupported_languagesタオmacro.dbt.get_csv_sql゙、nameォget_csv_sqlュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idオmacro.dbt.get_csv_sqlゥmacro_sqlル毬% macro get_csv_sql(create_or_truncate_sql, insert_sql) %}
{{ adapter.dispatch('get_csv_sql', 'dbt')(create_or_truncate_sql, insert_sql) }}
{% endmacro %}ェdepends_on※macros太macro.dbt.default__get_csv_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameカcreate_or_truncate_sql、typeタォdescriptionΖnameェinsert_sql、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタセmacro.dbt.default__get_csv_sql゙、nameエdefault__get_csv_sqlュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idセmacro.dbt.default__get_csv_sqlゥmacro_sqlル掉% macro default__get_csv_sql(create_or_truncate_sql, insert_sql) %}
{{ create_or_truncate_sql }};
-- dbt seed --
{{ insert_sql }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameカcreate_or_truncate_sql、typeタォdescriptionΖnameェinsert_sql、typeタォdescriptionェcreated_atヒAレ萌Bミsupported_languagesタコmacro.dbt.get_binding_char゙、nameーget_binding_charュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idコmacro.dbt.get_binding_charゥmacro_sqlルe{% macro get_binding_char() -%}
{{ adapter.dispatch('get_binding_char', 'dbt')() }}
{%- endmacro %}ェdepends_on※macros胎#macro.dbt.default__get_binding_charォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミルウsupported_languagesタル#macro.dbt.default__get_binding_char゙、nameケdefault__get_binding_charュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idル#macro.dbt.default__get_binding_charゥmacro_sqlルK{% macro default__get_binding_char() %}
{{ return('%s') }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ!uウsupported_languagesタクmacro.dbt.get_batch_size゙、nameョget_batch_sizeュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idクmacro.dbt.get_batch_sizeゥmacro_sqlルi{% macro get_batch_size() -%}
{{ return(adapter.dispatch('get_batch_size', 'dbt')()) }}
{%- endmacro %}ェdepends_on※macros胎!macro.dbt.default__get_batch_sizeォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ"tウsupported_languagesタル!macro.dbt.default__get_batch_size゙、nameキdefault__get_batch_sizeュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idル!macro.dbt.default__get_batch_sizeゥmacro_sqlルJ{% macro default__get_batch_size() %}
{{ return(10000) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ#6ウsupported_languagesタル$macro.dbt.get_seed_column_quoted_csv゙、nameコget_seed_column_quoted_csvュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idル$macro.dbt.get_seed_column_quoted_csvゥmacro_sqlレ旬% macro get_seed_column_quoted_csv(model, column_names) %}
{%- set quote_seed_column = model['config'].get('quote_columns', None) -%}
{% set quoted = [] %}
{% for col in column_names -%}
{%- do quoted.append(adapter.quote_seed_column(col, quote_seed_column)) -%}
{%- endfor %}
{%- set dest_cols_csv = quoted | join(', ') -%}
{{ return(dest_cols_csv) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・model、typeタォdescriptionΖnameャcolumn_names、typeタォdescriptionェcreated_atヒAレ萌Bミ& ウsupported_languagesタキmacro.dbt.load_csv_rows゙、nameュload_csv_rowsュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idキmacro.dbt.load_csv_rowsゥmacro_sqlルボ% macro load_csv_rows(model, agate_table) -%}
{{ adapter.dispatch('load_csv_rows', 'dbt')(model, agate_table) }}
{%- endmacro %}ェdepends_on※macros胎 macro.dbt.default__load_csv_rowsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・model、typeタォdescriptionΖnameォagate_table、typeタォdescriptionェcreated_atヒAレ萌Bミ'Vウsupported_languagesタル macro.dbt.default__load_csv_rows゙、nameカdefault__load_csv_rowsュresource_type・macroャpackage_name」dbt、pathル)macros/materializations/seeds/helpers.sqlイoriginal_file_pathル)macros/materializations/seeds/helpers.sqlゥunique_idル macro.dbt.default__load_csv_rowsゥmacro_sqlレ^{% macro default__load_csv_rows(model, agate_table) %}
{% set batch_size = get_batch_size() %}
{% set cols_sql = get_seed_column_quoted_csv(model, agate_table.column_names) %}
{% set bindings = [] %}
{% set statements = [] %}
{% for chunk in agate_table.rows | batch(batch_size) %}
{% set bindings = [] %}
{% for row in chunk %}
{% do bindings.extend(row) %}
{% endfor %}
{% set sql %}
insert into {{ this.render() }} ({{ cols_sql }}) values
{% for row in chunk -%}
({%- for column in agate_table.column_names -%}
{{ get_binding_char() }}
{%- if not loop.last%},{%- endif %}
{%- endfor -%})
{%- if not loop.last%},{%- endif %}
{%- endfor %}
{% endset %}
{% do adapter.add_query(sql, bindings=bindings, abridge_sql_log=True) %}
{% if loop.index0 == 0 %}
{% do statements.append(sql) %}
{% endif %}
{% endfor %}
{# Return SQL so we can render it out into the compiled files #}
{{ return(statements[0]) }}
{% endmacro %}ェdepends_on※macros萄macro.dbt.get_batch_sizeル$macro.dbt.get_seed_column_quoted_csvコmacro.dbt.get_binding_charォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・model、typeタォdescriptionΖnameォagate_table、typeタォdescriptionェcreated_atヒAレ萌Bミ.ヤウsupported_languagesタスmacro.dbt.scalar_function_sql゙、nameウscalar_function_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idスmacro.dbt.scalar_function_sqlゥmacro_sqlル捜% macro scalar_function_sql(target_relation) %}
{{ return(adapter.dispatch('scalar_function_sql', 'dbt')(target_relation)) }}
{% endmacro %}ェdepends_on※macros胎&macro.dbt.default__scalar_function_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bミ4]ウsupported_languagesタル&macro.dbt.default__scalar_function_sql゙、nameシdefault__scalar_function_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル&macro.dbt.default__scalar_function_sqlゥmacro_sqlルカ{% macro default__scalar_function_sql(target_relation) %}
{{ scalar_function_create_replace_signature_sql(target_relation) }}
{{ scalar_function_body_sql() }};
{% endmacro %}ェdepends_on※macros壷6macro.dbt.scalar_function_create_replace_signature_sqlル"macro.dbt.scalar_function_body_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bミ5教supported_languagesタル6macro.dbt.scalar_function_create_replace_signature_sql゙、nameル,scalar_function_create_replace_signature_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル6macro.dbt.scalar_function_create_replace_signature_sqlゥmacro_sqlルテ{% macro scalar_function_create_replace_signature_sql(target_relation) %}
{{ return(adapter.dispatch('scalar_function_create_replace_signature_sql', 'dbt')(target_relation)) }}
{% endmacro %}ェdepends_on※macros胎?macro.dbt.default__scalar_function_create_replace_signature_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bミ6アウsupported_languagesタル?macro.dbt.default__scalar_function_create_replace_signature_sql゙、nameル5default__scalar_function_create_replace_signature_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル?macro.dbt.default__scalar_function_create_replace_signature_sqlゥmacro_sqlレ'{% macro default__scalar_function_create_replace_signature_sql(target_relation) %}
CREATE OR REPLACE FUNCTION {{ target_relation.render() }} ({{ formatted_scalar_function_args_sql()}})
RETURNS {{ model.returns.data_type }}
{{ scalar_function_volatility_sql() }}
AS
{% endmacro %}ェdepends_on※macros壷,macro.dbt.formatted_scalar_function_args_sqlル(macro.dbt.scalar_function_volatility_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌Bミ8*ウsupported_languagesタル,macro.dbt.formatted_scalar_function_args_sql゙、nameル"formatted_scalar_function_args_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル,macro.dbt.formatted_scalar_function_args_sqlゥmacro_sqlル捜% macro formatted_scalar_function_args_sql() %}
{{ return(adapter.dispatch('formatted_scalar_function_args_sql', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎?macro.dbt_postgres.postgres__formatted_scalar_function_args_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ9Lウsupported_languagesタル3macro.dbt.formatted_scalar_function_args_javascript゙、nameル)formatted_scalar_function_args_javascriptュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル3macro.dbt.formatted_scalar_function_args_javascriptゥmacro_sqlル毬% macro formatted_scalar_function_args_javascript() %}
{{ return(adapter.dispatch('formatted_scalar_function_args_javascript', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎<macro.dbt.default__formatted_scalar_function_args_javascriptォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ:諜supported_languagesタル5macro.dbt.default__formatted_scalar_function_args_sql゙、nameル+default__formatted_scalar_function_args_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル5macro.dbt.default__formatted_scalar_function_args_sqlゥmacro_sqlル% macro default__formatted_scalar_function_args_sql() %}
{% set args = [] %}
{% for arg in model.arguments -%}
{%- do args.append(arg.name ~ ' ' ~ arg.data_type) -%}
{%- endfor %}
{{ args | join(', ') }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ<ヘウsupported_languagesタル<macro.dbt.default__formatted_scalar_function_args_javascript゙、nameル2default__formatted_scalar_function_args_javascriptュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル<macro.dbt.default__formatted_scalar_function_args_javascriptゥmacro_sqlル% macro default__formatted_scalar_function_args_javascript() %}
{% set msg = "formatted_scalar_function_args_javascript not implemented for adapter " ~ adapter.type() %}
{% do exceptions.raise_compiler_error(msg) %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ>2ウsupported_languagesタル"macro.dbt.scalar_function_body_sql゙、nameクscalar_function_body_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル"macro.dbt.scalar_function_body_sqlゥmacro_sqlル}{% macro scalar_function_body_sql() %}
{{ return(adapter.dispatch('scalar_function_body_sql', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎+macro.dbt.default__scalar_function_body_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ?:ウsupported_languagesタル+macro.dbt.default__scalar_function_body_sql゙、nameル!default__scalar_function_body_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル+macro.dbt.default__scalar_function_body_sqlゥmacro_sqlルz{% macro default__scalar_function_body_sql() %}
$$
{{ model.compiled_code }}
$$ LANGUAGE SQL
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ?supported_languagesタル(macro.dbt.scalar_function_volatility_sql゙、nameセscalar_function_volatility_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル(macro.dbt.scalar_function_volatility_sqlゥmacro_sqlル閲% macro scalar_function_volatility_sql() %}
{{ return(adapter.dispatch('scalar_function_volatility_sql', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎1macro.dbt.default__scalar_function_volatility_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ@supported_languagesタル/macro.dbt.scalar_function_volatility_javascript゙、nameル%scalar_function_volatility_javascriptュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル/macro.dbt.scalar_function_volatility_javascriptゥmacro_sqlル養% macro scalar_function_volatility_javascript() %}
{{ return(adapter.dispatch('scalar_function_volatility_javascript', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎8macro.dbt.default__scalar_function_volatility_javascriptォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BミAsupported_languagesタル8macro.dbt.default__scalar_function_volatility_javascript゙、nameル.default__scalar_function_volatility_javascriptュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル8macro.dbt.default__scalar_function_volatility_javascriptゥmacro_sqlレQ{% macro default__scalar_function_volatility_javascript() %}
{% set volatility = model.config.get('volatility') %}
{% if volatility != none %}
{% set msg = "Volatility is not supported by " ~ adapter.type() ~ " in javascript UDF and will be ignored" %}
{% do exceptions.warn(msg) %}
{% endif %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BミDウsupported_languagesタル1macro.dbt.default__scalar_function_volatility_sql゙、nameル'default__scalar_function_volatility_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル1macro.dbt.default__scalar_function_volatility_sqlゥmacro_sqlレD{% macro default__scalar_function_volatility_sql() %}
{% set volatility = model.config.get('volatility') %}
{% if volatility == 'deterministic' %}
IMMUTABLE
{% elif volatility == 'stable' %}
STABLE
{% elif volatility == 'non-deterministic' %}
VOLATILE
{% elif volatility != none %}
{# This shouldn't happen unless a new volatility is invented #}
{% do unsupported_volatility_warning(volatility) %}
{% endif %}
{# If no volatility is set, don't add anything and let the data warehouse default it #}
{% endmacro %}ェdepends_on※macros胎(macro.dbt.unsupported_volatility_warningォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BミFイウsupported_languagesタル(macro.dbt.unsupported_volatility_warning゙、nameセunsupported_volatility_warningュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル(macro.dbt.unsupported_volatility_warningゥmacro_sqlル掉% macro unsupported_volatility_warning(volatility) %}
{{ return(adapter.dispatch('unsupported_volatility_warning', 'dbt')(volatility)) }}
{% endmacro %}ェdepends_on※macros胎1macro.dbt.default__unsupported_volatility_warningォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェvolatility、typeタォdescriptionェcreated_atヒAレ萌BミG莎supported_languagesタル1macro.dbt.default__unsupported_volatility_warning゙、nameル'default__unsupported_volatility_warningュresource_type・macroャpackage_name」dbt、pathル,macros/materializations/functions/scalar.sqlイoriginal_file_pathル,macros/materializations/functions/scalar.sqlゥunique_idル1macro.dbt.default__unsupported_volatility_warningゥmacro_sqlレ({% macro default__unsupported_volatility_warning(volatility) %}
{% set msg = "Found `" ~ volatility ~ "` volatility specified on function `" ~ model.name ~ "`. This volatility is not supported by " ~ adapter.type() ~ ", and will be ignored" %}
{% do exceptions.warn(msg) %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェvolatility、typeタォdescriptionェcreated_atヒAレ萌BミI袖supported_languagesタル$macro.dbt.function_execute_build_sql゙、nameコfunction_execute_build_sqlュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/functions/helpers.sqlイoriginal_file_pathル-macros/materializations/functions/helpers.sqlゥunique_idル$macro.dbt.function_execute_build_sqlゥmacro_sqlルロ{% macro function_execute_build_sql(build_sql, existing_relation, target_relation) %}
{{ return(adapter.dispatch('function_execute_build_sql', 'dbt')(build_sql, existing_relation, target_relation)) }}
{% endmacro %}ェdepends_on※macros胎-macro.dbt.default__function_execute_build_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameゥbuild_sql、typeタォdescriptionΖnameアexisting_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌BミLウsupported_languagesタル-macro.dbt.default__function_execute_build_sql゙、nameル#default__function_execute_build_sqlュresource_type・macroャpackage_name」dbt、pathル-macros/materializations/functions/helpers.sqlイoriginal_file_pathル-macros/materializations/functions/helpers.sqlゥunique_idル-macro.dbt.default__function_execute_build_sqlゥmacro_sqlレ% macro default__function_execute_build_sql(build_sql, existing_relation, target_relation) %}
{% set grant_config = config.get('grants') %}
{% call statement(name="main") %}
{{ build_sql }}
{% endcall %}
{% set should_revoke = should_revoke(existing_relation, full_refresh_mode=True) %}
{% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}
{% do persist_docs(target_relation, model) %}
{{ adapter.commit() }}
{% endmacro %}ェdepends_on※macros筏macro.dbt.statementキmacro.dbt.should_revokeカmacro.dbt.apply_grantsカmacro.dbt.persist_docsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameゥbuild_sql、typeタォdescriptionΖnameアexisting_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌BミO羌supported_languagesタル9macro.dbt.get_aggregate_function_create_replace_signature゙、nameル/get_aggregate_function_create_replace_signatureュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idル9macro.dbt.get_aggregate_function_create_replace_signatureゥmacro_sqlルノ{% macro get_aggregate_function_create_replace_signature(target_relation) %}
{{ return(adapter.dispatch('get_aggregate_function_create_replace_signature', 'dbt')(target_relation)) }}
{% endmacro %}ェdepends_on※macros胎Bmacro.dbt.default__get_aggregate_function_create_replace_signatureォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌BミTGウsupported_languagesタルBmacro.dbt.default__get_aggregate_function_create_replace_signature゙、nameル8default__get_aggregate_function_create_replace_signatureュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idルBmacro.dbt.default__get_aggregate_function_create_replace_signatureゥmacro_sqlレロ{% macro default__get_aggregate_function_create_replace_signature(target_relation) %}
CREATE OR REPLACE AGGREGATE FUNCTION {{ target_relation.render() }} ({{ get_formatted_aggregate_function_args()}})
RETURNS {{ model.returns.data_type }}
{{ get_function_language_specifier() }}
{{ get_aggregate_function_volatility_specifier() }}
{% if model.get('language') == 'python' %}
{{ get_function_python_options() }}
{% endif %}
AS
{% endmacro %}ェdepends_on※macros匪/macro.dbt.get_formatted_aggregate_function_argsル)macro.dbt.get_function_language_specifierル5macro.dbt.get_aggregate_function_volatility_specifierル%macro.dbt.get_function_python_optionsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッtarget_relation、typeタォdescriptionェcreated_atヒAレ萌BミV竜supported_languagesタル/macro.dbt.get_formatted_aggregate_function_args゙、nameル%get_formatted_aggregate_function_argsュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idル/macro.dbt.get_formatted_aggregate_function_argsゥmacro_sqlル養% macro get_formatted_aggregate_function_args() %}
{{ return(adapter.dispatch('get_formatted_aggregate_function_args', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎8macro.dbt.default__get_formatted_aggregate_function_argsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BミWケウsupported_languagesタル8macro.dbt.default__get_formatted_aggregate_function_args゙、nameル.default__get_formatted_aggregate_function_argsュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idル8macro.dbt.default__get_formatted_aggregate_function_argsゥmacro_sqlルサ{% macro default__get_formatted_aggregate_function_args() %}
{# conveniently we can reuse the sql scalar function args #}
{{ formatted_scalar_function_args_sql() }}
{% endmacro %}ェdepends_on※macros胎,macro.dbt.formatted_scalar_function_args_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BミXyウsupported_languagesタル)macro.dbt.get_function_language_specifier゙、nameソget_function_language_specifierュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idル)macro.dbt.get_function_language_specifierゥmacro_sqlル宮% macro get_function_language_specifier() %}
{{ return(adapter.dispatch('get_function_language_specifier', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎2macro.dbt.default__get_function_language_specifierォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BミY}ウsupported_languagesタル2macro.dbt.default__get_function_language_specifier゙、nameル(default__get_function_language_specifierュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idル2macro.dbt.default__get_function_language_specifierゥmacro_sqlレァ{% macro default__get_function_language_specifier() %}
{% set language = model.get('language') %}
{% if language == 'sql' %}
{# generally you dont need to specify the language for sql functions #}
{% elif language == 'python' %}
LANGUAGE PYTHON
{% elif language == 'javascript' %}
LANGUAGE js
{% else %}
{{ 'LANGUAGE ' ~ language.upper() }}
{% endif %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ[トウsupported_languagesタル5macro.dbt.get_aggregate_function_volatility_specifier゙、nameル+get_aggregate_function_volatility_specifierュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idル5macro.dbt.get_aggregate_function_volatility_specifierゥmacro_sqlル」{% macro get_aggregate_function_volatility_specifier() %}
{{ return(adapter.dispatch('get_aggregate_function_volatility_specifier', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎>macro.dbt.default__get_aggregate_function_volatility_specifierォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ\ルウsupported_languagesタル>macro.dbt.default__get_aggregate_function_volatility_specifier゙、nameル4default__get_aggregate_function_volatility_specifierュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idル>macro.dbt.default__get_aggregate_function_volatility_specifierゥmacro_sqlル|{% macro default__get_aggregate_function_volatility_specifier() %}
{{ scalar_function_volatility_sql() }}
{% endmacro %}ェdepends_on※macros胎(macro.dbt.scalar_function_volatility_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ]€ウsupported_languagesタル%macro.dbt.get_function_python_options゙、nameサget_function_python_optionsュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idル%macro.dbt.get_function_python_optionsゥmacro_sqlルボ% macro get_function_python_options() %}
{{ return(adapter.dispatch('get_function_python_options', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎.macro.dbt.default__get_function_python_optionsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ^supported_languagesタル.macro.dbt.default__get_function_python_options゙、nameル$default__get_function_python_optionsュresource_type・macroャpackage_name」dbt、pathル/macros/materializations/functions/aggregate.sqlイoriginal_file_pathル/macros/materializations/functions/aggregate.sqlゥunique_idル.macro.dbt.default__get_function_python_optionsゥmacro_sqlレI{% macro default__get_function_python_options() %}
RUNTIME_VERSION = '{{ model.config.get('runtime_version') }}'
HANDLER = '{{ model.config.get('entry_point') }}'
{% set packages = model.config.get('packages', []) %}
{% if packages %}
PACKAGES = ('{{ packages | join("','") }}')
{% endif %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ`トウsupported_languagesタル*macro.dbt.materialization_function_default゙、nameル materialization_function_defaultュresource_type・macroャpackage_name」dbt、pathル.macros/materializations/functions/function.sqlイoriginal_file_pathル.macros/materializations/functions/function.sqlゥunique_idル*macro.dbt.materialization_function_defaultゥmacro_sqlレッ{% materialization function, default, supported_languages=['sql', 'python', 'javascript'] %}
{% set existing_relation = load_cached_relation(this) %}
{% set target_relation = this.incorporate(type=this.Function) %}
{{ run_hooks(pre_hooks) }}
{% set function_config = this.get_function_config(model) %}
{% set macro_name = this.get_function_macro_name(function_config) %}
{# Doing this aliasing of adapter.dispatch is a hacky way to disable the static analysis of actually calling adapter.dispatch #}
{# This is necessary because the static analysis breaks being able to dynamically pass a macro_name #}
{% set _dispatch = adapter.dispatch %}
{% set build_sql = _dispatch(macro_name, 'dbt')(target_relation) %}
{{ function_execute_build_sql(build_sql, existing_relation, target_relation) }}
{{ run_hooks(post_hooks) }}
{{ return({'relations': [target_relation]}) }}
{% endmaterialization %}ェdepends_on※macros得macro.dbt.load_cached_relationウmacro.dbt.run_hooksル$macro.dbt.function_execute_build_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameウsupported_languages、typeタォdescriptionェcreated_atヒAレ萌Bミfイウsupported_languages謄sqlヲpythonェjavascriptスmacro.dbt.generate_alias_name゙、nameウgenerate_alias_nameュresource_type・macroャpackage_name」dbt、pathル+macros/get_custom_name/get_custom_alias.sqlイoriginal_file_pathル+macros/get_custom_name/get_custom_alias.sqlゥunique_idスmacro.dbt.generate_alias_nameゥmacro_sqlルー{% macro generate_alias_name(custom_alias_name=none, node=none) -%}
{% do return(adapter.dispatch('generate_alias_name', 'dbt')(custom_alias_name, node)) %}
{%- endmacro %}ェdepends_on※macros胎&macro.dbt.default__generate_alias_nameォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアcustom_alias_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌BミiMウsupported_languagesタル&macro.dbt.default__generate_alias_name゙、nameシdefault__generate_alias_nameュresource_type・macroャpackage_name」dbt、pathル+macros/get_custom_name/get_custom_alias.sqlイoriginal_file_pathル+macros/get_custom_name/get_custom_alias.sqlゥunique_idル&macro.dbt.default__generate_alias_nameゥmacro_sqlレQ{% macro default__generate_alias_name(custom_alias_name=none, node=none) -%}
{%- if custom_alias_name -%}
{{ custom_alias_name | trim }}
{%- elif node.version -%}
{{ return(node.name ~ "_v" ~ (node.version | replace(".", "_"))) }}
{%- else -%}
{{ node.name }}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアcustom_alias_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌Bミkモウsupported_languagesタル/macro.dbt.generate_latest_version_pointer_alias゙、nameル%generate_latest_version_pointer_aliasュresource_type・macroャpackage_name」dbt、pathル;macros/get_custom_name/get_latest_version_pointer_alias.sqlイoriginal_file_pathル;macros/get_custom_name/get_latest_version_pointer_alias.sqlゥunique_idル/macro.dbt.generate_latest_version_pointer_aliasゥmacro_sqlルヤ{% macro generate_latest_version_pointer_alias(custom_alias_name=none, node=none) -%}
{% do return(adapter.dispatch('generate_latest_version_pointer_alias', 'dbt')(custom_alias_name, node)) %}
{%- endmacro %}ェdepends_on※macros胎8macro.dbt.default__generate_latest_version_pointer_aliasォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアcustom_alias_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌BミnGウsupported_languagesタル8macro.dbt.default__generate_latest_version_pointer_alias゙、nameル.default__generate_latest_version_pointer_aliasュresource_type・macroャpackage_name」dbt、pathル;macros/get_custom_name/get_latest_version_pointer_alias.sqlイoriginal_file_pathル;macros/get_custom_name/get_latest_version_pointer_alias.sqlゥunique_idル8macro.dbt.default__generate_latest_version_pointer_aliasゥmacro_sqlル% macro default__generate_latest_version_pointer_alias(custom_alias_name=none, node=none) -%}
{%- if custom_alias_name -%}
{{ custom_alias_name | trim }}
{%- else -%}
{{ node.name }}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアcustom_alias_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌Bミoーウsupported_languagesタセmacro.dbt.generate_schema_name゙、nameエgenerate_schema_nameュresource_type・macroャpackage_name」dbt、pathル,macros/get_custom_name/get_custom_schema.sqlイoriginal_file_pathル,macros/get_custom_name/get_custom_schema.sqlゥunique_idセmacro.dbt.generate_schema_nameゥmacro_sqlルー{% macro generate_schema_name(custom_schema_name=none, node=none) -%}
{{ return(adapter.dispatch('generate_schema_name', 'dbt')(custom_schema_name, node)) }}
{% endmacro %}ェdepends_on※macros胎'macro.dbt.default__generate_schema_nameォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイcustom_schema_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌Bミrウsupported_languagesタル'macro.dbt.default__generate_schema_name゙、nameスdefault__generate_schema_nameュresource_type・macroャpackage_name」dbt、pathル,macros/get_custom_name/get_custom_schema.sqlイoriginal_file_pathル,macros/get_custom_name/get_custom_schema.sqlゥunique_idル'macro.dbt.default__generate_schema_nameゥmacro_sqlレ0{% macro default__generate_schema_name(custom_schema_name, node) -%}
{%- set default_schema = target.schema -%}
{%- if custom_schema_name is none -%}
{{ default_schema }}
{%- else -%}
{{ default_schema }}_{{ custom_schema_name | trim }}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイcustom_schema_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌BミtOウsupported_languagesタル&macro.dbt.generate_schema_name_for_env゙、nameシgenerate_schema_name_for_envュresource_type・macroャpackage_name」dbt、pathル,macros/get_custom_name/get_custom_schema.sqlイoriginal_file_pathル,macros/get_custom_name/get_custom_schema.sqlゥunique_idル&macro.dbt.generate_schema_name_for_envゥmacro_sqlレ8{% macro generate_schema_name_for_env(custom_schema_name, node) -%}
{%- set default_schema = target.schema -%}
{%- if target.name == 'prod' and custom_schema_name is not none -%}
{{ custom_schema_name | trim }}
{%- else -%}
{{ default_schema }}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイcustom_schema_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌Bミv6ウsupported_languagesタル macro.dbt.generate_database_name゙、nameカgenerate_database_nameュresource_type・macroャpackage_name」dbt、pathル.macros/get_custom_name/get_custom_database.sqlイoriginal_file_pathル.macros/get_custom_name/get_custom_database.sqlゥunique_idル macro.dbt.generate_database_nameゥmacro_sqlルシ{% macro generate_database_name(custom_database_name=none, node=none) -%}
{% do return(adapter.dispatch('generate_database_name', 'dbt')(custom_database_name, node)) %}
{%- endmacro %}ェdepends_on※macros胎)macro.dbt.default__generate_database_nameォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameエcustom_database_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌Bミx嵭supported_languagesタル)macro.dbt.default__generate_database_name゙、nameソdefault__generate_database_nameュresource_type・macroャpackage_name」dbt、pathル.macros/get_custom_name/get_custom_database.sqlイoriginal_file_pathル.macros/get_custom_name/get_custom_database.sqlゥunique_idル)macro.dbt.default__generate_database_nameゥmacro_sqlレg{% macro default__generate_database_name(custom_database_name=none, node=none) -%}
{%- set default_database = target.database -%}
{%- if node is not none and node|attr('database') -%}
{%- set catalog_relation = adapter.build_catalog_relation(node) -%}
{%- if catalog_relation and catalog_relation|attr('catalog_database') -%}
{{ return(catalog_relation.catalog_database) }}
{%- endif -%}
{%- endif -%}
{%- if custom_database_name is none -%}
{{ default_database }}
{%- else -%}
{{ custom_database_name }}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameエcustom_database_name、typeタォdescriptionΖname、node、typeタォdescriptionェcreated_atヒAレ萌Bミ|Bウsupported_languagesタカmacro.dbt.get_drop_sql゙、nameャget_drop_sqlュresource_type・macroャpackage_name」dbt、pathケmacros/relations/drop.sqlイoriginal_file_pathケmacros/relations/drop.sqlゥunique_idカmacro.dbt.get_drop_sqlゥmacro_sqlルァ{%- macro get_drop_sql(relation) -%}
{{- log('Applying DROP to: ' ~ relation) -}}
{{- adapter.dispatch('get_drop_sql', 'dbt')(relation) -}}
{%- endmacro -%}
ェdepends_on※macros汰macro.dbt.default__get_drop_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミ€ウsupported_languagesタソmacro.dbt.default__get_drop_sql゙、nameオdefault__get_drop_sqlュresource_type・macroャpackage_name」dbt、pathケmacros/relations/drop.sqlイoriginal_file_pathケmacros/relations/drop.sqlゥunique_idソmacro.dbt.default__get_drop_sqlゥmacro_sqlレ學%- macro default__get_drop_sql(relation) -%}
{%- if relation.is_view -%}
{{ drop_view(relation) }}
{%- elif relation.is_table -%}
{{ drop_table(relation) }}
{%- elif relation.is_materialized_view -%}
{{ drop_materialized_view(relation) }}
{%- else -%}
drop {{ relation.type }} if exists {{ relation.render() }} cascade
{%- endif -%}
{%- endmacro -%}
ェdepends_on※macros撞macro.dbt.drop_viewエmacro.dbt.drop_tableル macro.dbt.drop_materialized_viewォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミぱウsupported_languagesタキmacro.dbt.drop_relation゙、nameュdrop_relationュresource_type・macroャpackage_name」dbt、pathケmacros/relations/drop.sqlイoriginal_file_pathケmacros/relations/drop.sqlゥunique_idキmacro.dbt.drop_relationゥmacro_sqlルx{% macro drop_relation(relation) -%}
{{ return(adapter.dispatch('drop_relation', 'dbt')(relation)) }}
{% endmacro %}ェdepends_on※macros胎 macro.dbt.default__drop_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミ#ウsupported_languagesタル macro.dbt.default__drop_relation゙、nameカdefault__drop_relationュresource_type・macroャpackage_name」dbt、pathケmacros/relations/drop.sqlイoriginal_file_pathケmacros/relations/drop.sqlゥunique_idル macro.dbt.default__drop_relationゥmacro_sqlルア{% macro default__drop_relation(relation) -%}
{% call statement('drop_relation', auto_begin=False) -%}
{{ get_drop_sql(relation) }}
{%- endcall %}
{% endmacro %}ェdepends_on※macros諜macro.dbt.statementカmacro.dbt.get_drop_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタル!macro.dbt.drop_relation_if_exists゙、nameキdrop_relation_if_existsュresource_type・macroャpackage_name」dbt、pathケmacros/relations/drop.sqlイoriginal_file_pathケmacros/relations/drop.sqlゥunique_idル!macro.dbt.drop_relation_if_existsゥmacro_sqlル倍% macro drop_relation_if_exists(relation) %}
{% if relation is not none %}
{{ adapter.drop_relation(relation) }}
{% endif %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタケmacro.dbt.get_replace_sql゙、nameッget_replace_sqlュresource_type・macroャpackage_name」dbt、pathシmacros/relations/replace.sqlイoriginal_file_pathシmacros/relations/replace.sqlゥunique_idケmacro.dbt.get_replace_sqlゥmacro_sqlル% macro get_replace_sql(existing_relation, target_relation, sql) %}
{{- log('Applying REPLACE to: ' ~ existing_relation) -}}
{{- adapter.dispatch('get_replace_sql', 'dbt')(existing_relation, target_relation, sql) -}}
{% endmacro %}ェdepends_on※macros胎"macro.dbt.default__get_replace_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameアexisting_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミ柑ウsupported_languagesタル"macro.dbt.default__get_replace_sql゙、nameクdefault__get_replace_sqlュresource_type・macroャpackage_name」dbt、pathシmacros/relations/replace.sqlイoriginal_file_pathシmacros/relations/replace.sqlゥunique_idル"macro.dbt.default__get_replace_sqlゥmacro_sqlレ{% macro default__get_replace_sql(existing_relation, target_relation, sql) %}
{# /* use a create or replace statement if possible */ #}
{% set is_replaceable = existing_relation.type == target_relation.type and existing_relation.can_be_replaced %}
{% if is_replaceable and existing_relation.is_view %}
{{ get_replace_view_sql(target_relation, sql) }}
{% elif is_replaceable and existing_relation.is_table %}
{{ get_replace_table_sql(target_relation, sql) }}
{% elif is_replaceable and existing_relation.is_materialized_view %}
{{ get_replace_materialized_view_sql(target_relation, sql) }}
{# /* a create or replace statement is not possible, so try to stage and/or backup to be safe */ #}
{# /* create target_relation as an intermediate relation, then swap it out with the existing one using a backup */ #}
{%- elif target_relation.can_be_renamed and existing_relation.can_be_renamed -%}
{{ get_create_intermediate_sql(target_relation, sql) }};
{{ get_create_backup_sql(existing_relation) }};
{{ get_rename_intermediate_sql(target_relation) }};
{{ get_drop_backup_sql(existing_relation) }}
{# /* create target_relation as an intermediate relation, then swap it out with the existing one without using a backup */ #}
{%- elif target_relation.can_be_renamed -%}
{{ get_create_intermediate_sql(target_relation, sql) }};
{{ get_drop_sql(existing_relation) }};
{{ get_rename_intermediate_sql(target_relation) }}
{# /* create target_relation in place by first backing up the existing relation */ #}
{%- elif existing_relation.can_be_renamed -%}
{{ get_create_backup_sql(existing_relation) }};
{{ get_create_sql(target_relation, sql) }};
{{ get_drop_backup_sql(existing_relation) }}
{# /* no renaming is allowed, so just drop and create */ #}
{%- else -%}
{{ get_drop_sql(existing_relation) }};
{{ get_create_sql(target_relation, sql) }}
{%- endif -%}
{% endmacro %}ェdepends_on※macros卆macro.dbt.get_replace_view_sqlソmacro.dbt.get_replace_table_sqlル+macro.dbt.get_replace_materialized_view_sqlル%macro.dbt.get_create_intermediate_sqlソmacro.dbt.get_create_backup_sqlル%macro.dbt.get_rename_intermediate_sqlスmacro.dbt.get_drop_backup_sqlカmacro.dbt.get_drop_sqlクmacro.dbt.get_create_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameアexisting_relation、typeタォdescriptionΖnameッtarget_relation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミ痛ウsupported_languagesタル%macro.dbt.get_create_intermediate_sql゙、nameサget_create_intermediate_sqlュresource_type・macroャpackage_name」dbt、pathル(macros/relations/create_intermediate.sqlイoriginal_file_pathル(macros/relations/create_intermediate.sqlゥunique_idル%macro.dbt.get_create_intermediate_sqlゥmacro_sqlル゙{%- macro get_create_intermediate_sql(relation, sql) -%}
{{- log('Applying CREATE INTERMEDIATE to: ' ~ relation) -}}
{{- adapter.dispatch('get_create_intermediate_sql', 'dbt')(relation, sql) -}}
{%- endmacro -%}
ェdepends_on※macros胎.macro.dbt.default__get_create_intermediate_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミ:ウsupported_languagesタル.macro.dbt.default__get_create_intermediate_sql゙、nameル$default__get_create_intermediate_sqlュresource_type・macroャpackage_name」dbt、pathル(macros/relations/create_intermediate.sqlイoriginal_file_pathル(macros/relations/create_intermediate.sqlゥunique_idル.macro.dbt.default__get_create_intermediate_sqlゥmacro_sqlレY{%- macro default__get_create_intermediate_sql(relation, sql) -%}
-- get the standard intermediate name
{% set intermediate_relation = make_intermediate_relation(relation) %}
-- drop any pre-existing intermediate
{{ get_drop_sql(intermediate_relation) }};
{{ get_create_sql(intermediate_relation, sql) }}
{%- endmacro -%}ェdepends_on※macros遁$macro.dbt.make_intermediate_relationカmacro.dbt.get_drop_sqlクmacro.dbt.get_create_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミ模ウsupported_languagesタサmacro.dbt.drop_schema_named゙、nameアdrop_schema_namedュresource_type・macroャpackage_name」dbt、pathサmacros/relations/schema.sqlイoriginal_file_pathサmacros/relations/schema.sqlゥunique_idサmacro.dbt.drop_schema_namedゥmacro_sqlル% macro drop_schema_named(schema_name) %}
{{ return(adapter.dispatch('drop_schema_named', 'dbt') (schema_name)) }}
{% endmacro %}ェdepends_on※macros胎$macro.dbt.default__drop_schema_namedォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameォschema_name、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタル$macro.dbt.default__drop_schema_named゙、nameコdefault__drop_schema_namedュresource_type・macroャpackage_name」dbt、pathサmacros/relations/schema.sqlイoriginal_file_pathサmacros/relations/schema.sqlゥunique_idル$macro.dbt.default__drop_schema_namedゥmacro_sqlルオ{% macro default__drop_schema_named(schema_name) %}
{% set schema_relation = api.Relation.create(schema=schema_name) %}
{{ adapter.drop_schema(schema_relation) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameォschema_name、typeタォdescriptionェcreated_atヒAレ萌Bミ吼ウsupported_languagesタスmacro.dbt.get_drop_backup_sql゙、nameウget_drop_backup_sqlュresource_type・macroャpackage_name」dbt、pathル macros/relations/drop_backup.sqlイoriginal_file_pathル macros/relations/drop_backup.sqlゥunique_idスmacro.dbt.get_drop_backup_sqlゥmacro_sqlルシ{%- macro get_drop_backup_sql(relation) -%}
{{- log('Applying DROP BACKUP to: ' ~ relation) -}}
{{- adapter.dispatch('get_drop_backup_sql', 'dbt')(relation) -}}
{%- endmacro -%}
ェdepends_on※macros胎&macro.dbt.default__get_drop_backup_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミ嵶ウsupported_languagesタル&macro.dbt.default__get_drop_backup_sql゙、nameシdefault__get_drop_backup_sqlュresource_type・macroャpackage_name」dbt、pathル macros/relations/drop_backup.sqlイoriginal_file_pathル macros/relations/drop_backup.sqlゥunique_idル&macro.dbt.default__get_drop_backup_sqlゥmacro_sqlル窖%- macro default__get_drop_backup_sql(relation) -%}
-- get the standard backup name
{% set backup_relation = make_backup_relation(relation, relation.type) %}
{{ get_drop_sql(backup_relation) }}
{%- endmacro -%}ェdepends_on※macros沈macro.dbt.make_backup_relationカmacro.dbt.get_drop_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミ杳ウsupported_languagesタクmacro.dbt.get_rename_sql゙、nameョget_rename_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/relations/rename.sqlイoriginal_file_pathサmacros/relations/rename.sqlゥunique_idクmacro.dbt.get_rename_sqlゥmacro_sqlルチ{%- macro get_rename_sql(relation, new_name) -%}
{{- log('Applying RENAME to: ' ~ relation) -}}
{{- adapter.dispatch('get_rename_sql', 'dbt')(relation, new_name) -}}
{%- endmacro -%}
ェdepends_on※macros胎!macro.dbt.default__get_rename_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bミ。ウsupported_languagesタル!macro.dbt.default__get_rename_sql゙、nameキdefault__get_rename_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/relations/rename.sqlイoriginal_file_pathサmacros/relations/rename.sqlゥunique_idル!macro.dbt.default__get_rename_sqlゥmacro_sqlレ {%- macro default__get_rename_sql(relation, new_name) -%}
{%- if relation.is_view -%}
{{ get_rename_view_sql(relation, new_name) }}
{%- elif relation.is_table -%}
{{ get_rename_table_sql(relation, new_name) }}
{%- elif relation.is_materialized_view -%}
{{ get_rename_materialized_view_sql(relation, new_name) }}
{%- else -%}
{{- exceptions.raise_compiler_error("`get_rename_sql` has not been implemented for: " ~ relation.type ) -}}
{%- endif -%}
{%- endmacro -%}
ェdepends_on※macros匿macro.dbt.get_rename_view_sqlセmacro.dbt.get_rename_table_sqlル*macro.dbt.get_rename_materialized_view_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bミ」ハウsupported_languagesタケmacro.dbt.rename_relation゙、nameッrename_relationュresource_type・macroャpackage_name」dbt、pathサmacros/relations/rename.sqlイoriginal_file_pathサmacros/relations/rename.sqlゥunique_idケmacro.dbt.rename_relationゥmacro_sqlル桀% macro rename_relation(from_relation, to_relation) -%}
{{ return(adapter.dispatch('rename_relation', 'dbt')(from_relation, to_relation)) }}
{% endmacro %}ェdepends_on※macros胎"macro.dbt.default__rename_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュfrom_relation、typeタォdescriptionΖnameォto_relation、typeタォdescriptionェcreated_atヒAレ萌Bミ・ウsupported_languagesタル"macro.dbt.default__rename_relation゙、nameクdefault__rename_relationュresource_type・macroャpackage_name」dbt、pathサmacros/relations/rename.sqlイoriginal_file_pathサmacros/relations/rename.sqlゥunique_idル"macro.dbt.default__rename_relationゥmacro_sqlレ1{% macro default__rename_relation(from_relation, to_relation) -%}
{% set target_name = adapter.quote_as_configured(to_relation.identifier, 'identifier') %}
{% call statement('rename_relation') -%}
alter table {{ from_relation.render() }} rename to {{ target_name }}
{%- endcall %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュfrom_relation、typeタォdescriptionΖnameォto_relation、typeタォdescriptionェcreated_atヒAレ萌Bミヲsupported_languagesタソmacro.dbt.get_create_backup_sql゙、nameオget_create_backup_sqlュresource_type・macroャpackage_name」dbt、pathル"macros/relations/create_backup.sqlイoriginal_file_pathル"macros/relations/create_backup.sqlゥunique_idソmacro.dbt.get_create_backup_sqlゥmacro_sqlルツ{%- macro get_create_backup_sql(relation) -%}
{{- log('Applying CREATE BACKUP to: ' ~ relation) -}}
{{- adapter.dispatch('get_create_backup_sql', 'dbt')(relation) -}}
{%- endmacro -%}
ェdepends_on※macros胎(macro.dbt.default__get_create_backup_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミゥウsupported_languagesタル(macro.dbt.default__get_create_backup_sql゙、nameセdefault__get_create_backup_sqlュresource_type・macroャpackage_name」dbt、pathル"macros/relations/create_backup.sqlイoriginal_file_pathル"macros/relations/create_backup.sqlゥunique_idル(macro.dbt.default__get_create_backup_sqlゥmacro_sqlレI{%- macro default__get_create_backup_sql(relation) -%}
-- get the standard backup name
{% set backup_relation = make_backup_relation(relation, relation.type) %}
-- drop any pre-existing backup
{{ get_drop_sql(backup_relation) }};
{{ get_rename_sql(relation, backup_relation.identifier) }}
{%- endmacro -%}ェdepends_on※macros得macro.dbt.make_backup_relationカmacro.dbt.get_drop_sqlクmacro.dbt.get_rename_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミェチウsupported_languagesタクmacro.dbt.get_create_sql゙、nameョget_create_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/relations/create.sqlイoriginal_file_pathサmacros/relations/create.sqlゥunique_idクmacro.dbt.get_create_sqlゥmacro_sqlルキ{%- macro get_create_sql(relation, sql) -%}
{{- log('Applying CREATE to: ' ~ relation) -}}
{{- adapter.dispatch('get_create_sql', 'dbt')(relation, sql) -}}
{%- endmacro -%}
ェdepends_on※macros胎!macro.dbt.default__get_create_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミュ1ウsupported_languagesタル!macro.dbt.default__get_create_sql゙、nameキdefault__get_create_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/relations/create.sqlイoriginal_file_pathサmacros/relations/create.sqlゥunique_idル!macro.dbt.default__get_create_sqlゥmacro_sqlレ{%- macro default__get_create_sql(relation, sql) -%}
{%- if relation.is_view -%}
{{ get_create_view_as_sql(relation, sql) }}
{%- elif relation.is_table -%}
{{ get_create_table_as_sql(False, relation, sql) }}
{%- elif relation.is_materialized_view -%}
{{ get_create_materialized_view_as_sql(relation, sql) }}
{%- else -%}
{{- exceptions.raise_compiler_error("`get_create_sql` has not been implemented for: " ~ relation.type ) -}}
{%- endif -%}
{%- endmacro -%}ェdepends_on※macros遁 macro.dbt.get_create_view_as_sqlル!macro.dbt.get_create_table_as_sqlル-macro.dbt.get_create_materialized_view_as_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミッsupported_languagesタル%macro.dbt.get_rename_intermediate_sql゙、nameサget_rename_intermediate_sqlュresource_type・macroャpackage_name」dbt、pathル(macros/relations/rename_intermediate.sqlイoriginal_file_pathル(macros/relations/rename_intermediate.sqlゥunique_idル%macro.dbt.get_rename_intermediate_sqlゥmacro_sqlルヤ{%- macro get_rename_intermediate_sql(relation) -%}
{{- log('Applying RENAME INTERMEDIATE to: ' ~ relation) -}}
{{- adapter.dispatch('get_rename_intermediate_sql', 'dbt')(relation) -}}
{%- endmacro -%}
ェdepends_on※macros胎.macro.dbt.default__get_rename_intermediate_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミアsupported_languagesタル.macro.dbt.default__get_rename_intermediate_sql゙、nameル$default__get_rename_intermediate_sqlュresource_type・macroャpackage_name」dbt、pathル(macros/relations/rename_intermediate.sqlイoriginal_file_pathル(macros/relations/rename_intermediate.sqlゥunique_idル.macro.dbt.default__get_rename_intermediate_sqlゥmacro_sqlレ
{%- macro default__get_rename_intermediate_sql(relation) -%}
-- get the standard intermediate name
{% set intermediate_relation = make_intermediate_relation(relation) %}
{{ get_rename_sql(intermediate_relation, relation.identifier) }}
{%- endmacro -%}ェdepends_on※macros壷$macro.dbt.make_intermediate_relationクmacro.dbt.get_rename_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌BミウNウsupported_languagesタル macro.dbt.drop_materialized_view゙、nameカdrop_materialized_viewュresource_type・macroャpackage_name」dbt、pathル+macros/relations/materialized_view/drop.sqlイoriginal_file_pathル+macros/relations/materialized_view/drop.sqlゥunique_idル macro.dbt.drop_materialized_viewゥmacro_sqlル% macro drop_materialized_view(relation) -%}
{{- adapter.dispatch('drop_materialized_view', 'dbt')(relation) -}}
{%- endmacro %}ェdepends_on※macros胎3macro.dbt_postgres.postgres__drop_materialized_viewォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミエsupported_languagesタル)macro.dbt.default__drop_materialized_view゙、nameソdefault__drop_materialized_viewュresource_type・macroャpackage_name」dbt、pathル+macros/relations/materialized_view/drop.sqlイoriginal_file_pathル+macros/relations/materialized_view/drop.sqlゥunique_idル)macro.dbt.default__drop_materialized_viewゥmacro_sqlル宮% macro default__drop_materialized_view(relation) -%}
drop materialized view if exists {{ relation.render() }} cascade
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミクkウsupported_languagesタル+macro.dbt.get_replace_materialized_view_sql゙、nameル!get_replace_materialized_view_sqlュresource_type・macroャpackage_name」dbt、pathル.macros/relations/materialized_view/replace.sqlイoriginal_file_pathル.macros/relations/materialized_view/replace.sqlゥunique_idル+macro.dbt.get_replace_materialized_view_sqlゥmacro_sqlル」{% macro get_replace_materialized_view_sql(relation, sql) %}
{{- adapter.dispatch('get_replace_materialized_view_sql', 'dbt')(relation, sql) -}}
{% endmacro %}ェdepends_on※macros胎4macro.dbt.default__get_replace_materialized_view_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミコ4ウsupported_languagesタル4macro.dbt.default__get_replace_materialized_view_sql゙、nameル*default__get_replace_materialized_view_sqlュresource_type・macroャpackage_name」dbt、pathル.macros/relations/materialized_view/replace.sqlイoriginal_file_pathル.macros/relations/materialized_view/replace.sqlゥunique_idル4macro.dbt.default__get_replace_materialized_view_sqlゥmacro_sqlル゙{% macro default__get_replace_materialized_view_sql(relation, sql) %}
{{ exceptions.raise_compiler_error(
"`get_replace_materialized_view_sql` has not been implemented for this adapter."
) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミサ4ウsupported_languagesタル#macro.dbt.refresh_materialized_view゙、nameケrefresh_materialized_viewュresource_type・macroャpackage_name」dbt、pathル.macros/relations/materialized_view/refresh.sqlイoriginal_file_pathル.macros/relations/materialized_view/refresh.sqlゥunique_idル#macro.dbt.refresh_materialized_viewゥmacro_sqlルス{% macro refresh_materialized_view(relation) %}
{{- log('Applying REFRESH to: ' ~ relation) -}}
{{- adapter.dispatch('refresh_materialized_view', 'dbt')(relation) -}}
{% endmacro %}ェdepends_on※macros胎6macro.dbt_postgres.postgres__refresh_materialized_viewォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌BミスMウsupported_languagesタル,macro.dbt.default__refresh_materialized_view゙、nameル"default__refresh_materialized_viewュresource_type・macroャpackage_name」dbt、pathル.macros/relations/materialized_view/refresh.sqlイoriginal_file_pathル.macros/relations/materialized_view/refresh.sqlゥunique_idル,macro.dbt.default__refresh_materialized_viewゥmacro_sqlルサ{% macro default__refresh_materialized_view(relation) %}
{{ exceptions.raise_compiler_error("`refresh_materialized_view` has not been implemented for this adapter.") }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミセ'ウsupported_languagesタル*macro.dbt.get_rename_materialized_view_sql゙、nameル get_rename_materialized_view_sqlュresource_type・macroャpackage_name」dbt、pathル-macros/relations/materialized_view/rename.sqlイoriginal_file_pathル-macros/relations/materialized_view/rename.sqlゥunique_idル*macro.dbt.get_rename_materialized_view_sqlゥmacro_sqlルォ{% macro get_rename_materialized_view_sql(relation, new_name) %}
{{- adapter.dispatch('get_rename_materialized_view_sql', 'dbt')(relation, new_name) -}}
{% endmacro %}ェdepends_on※macros胎=macro.dbt_postgres.postgres__get_rename_materialized_view_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bミタ8ウsupported_languagesタル3macro.dbt.default__get_rename_materialized_view_sql゙、nameル)default__get_rename_materialized_view_sqlュresource_type・macroャpackage_name」dbt、pathル-macros/relations/materialized_view/rename.sqlイoriginal_file_pathル-macros/relations/materialized_view/rename.sqlゥunique_idル3macro.dbt.default__get_rename_materialized_view_sqlゥmacro_sqlル痣% macro default__get_rename_materialized_view_sql(relation, new_name) %}
{{ exceptions.raise_compiler_error(
"`get_rename_materialized_view_sql` has not been implemented for this adapter."
) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bミチ8ウsupported_languagesタル,macro.dbt.get_alter_materialized_view_as_sql゙、nameル"get_alter_materialized_view_as_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/relations/materialized_view/alter.sqlイoriginal_file_pathル,macros/relations/materialized_view/alter.sqlゥunique_idル,macro.dbt.get_alter_materialized_view_as_sqlゥmacro_sqlレヒ{% macro get_alter_materialized_view_as_sql(
relation,
configuration_changes,
sql,
existing_relation,
backup_relation,
intermediate_relation
) %}
{{- log('Applying ALTER to: ' ~ relation) -}}
{{- adapter.dispatch('get_alter_materialized_view_as_sql', 'dbt')(
relation,
configuration_changes,
sql,
existing_relation,
backup_relation,
intermediate_relation
) -}}
{% endmacro %}ェdepends_on※macros胎?macro.dbt_postgres.postgres__get_alter_materialized_view_as_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments麻、nameィrelation、typeタォdescriptionΖnameオconfiguration_changes、typeタォdescriptionΖname」sql、typeタォdescriptionΖnameアexisting_relation、typeタォdescriptionΖnameッbackup_relation、typeタォdescriptionΖnameオintermediate_relation、typeタォdescriptionェcreated_atヒAレ萌Bミトツウsupported_languagesタル5macro.dbt.default__get_alter_materialized_view_as_sql゙、nameル+default__get_alter_materialized_view_as_sqlュresource_type・macroャpackage_name」dbt、pathル,macros/relations/materialized_view/alter.sqlイoriginal_file_pathル,macros/relations/materialized_view/alter.sqlゥunique_idル5macro.dbt.default__get_alter_materialized_view_as_sqlゥmacro_sqlレ-{% macro default__get_alter_materialized_view_as_sql(
relation,
configuration_changes,
sql,
existing_relation,
backup_relation,
intermediate_relation
) %}
{{ exceptions.raise_compiler_error("Materialized views have not been implemented for this adapter.") }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments麻、nameィrelation、typeタォdescriptionΖnameオconfiguration_changes、typeタォdescriptionΖname」sql、typeタォdescriptionΖnameアexisting_relation、typeタォdescriptionΖnameッbackup_relation、typeタォdescriptionΖnameオintermediate_relation、typeタォdescriptionェcreated_atヒAレ萌Bミナsupported_languagesタル5macro.dbt.get_materialized_view_configuration_changes゙、nameル+get_materialized_view_configuration_changesュresource_type・macroャpackage_name」dbt、pathル,macros/relations/materialized_view/alter.sqlイoriginal_file_pathル,macros/relations/materialized_view/alter.sqlゥunique_idル5macro.dbt.get_materialized_view_configuration_changesゥmacro_sqlレ2{% macro get_materialized_view_configuration_changes(existing_relation, new_config) %}
/* {#
It's recommended that configuration changes be formatted as follows:
{"<change_category>": [{"action": "<name>", "context": ...}]}
For example:
{
"indexes": [
{"action": "drop", "context": "index_abc"},
{"action": "create", "context": {"columns": ["column_1", "column_2"], "type": "hash", "unique": True}},
],
}
Either way, `get_materialized_view_configuration_changes` needs to align with `get_alter_materialized_view_as_sql`.
#} */
{{- log('Determining configuration changes on: ' ~ existing_relation) -}}
{%- do return(adapter.dispatch('get_materialized_view_configuration_changes', 'dbt')(existing_relation, new_config)) -%}
{% endmacro %}ェdepends_on※macros胎Hmacro.dbt_postgres.postgres__get_materialized_view_configuration_changesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアexisting_relation、typeタォdescriptionΖnameェnew_config、typeタォdescriptionェcreated_atヒAレ萌Bミヌメウsupported_languagesタル>macro.dbt.default__get_materialized_view_configuration_changes゙、nameル4default__get_materialized_view_configuration_changesュresource_type・macroャpackage_name」dbt、pathル,macros/relations/materialized_view/alter.sqlイoriginal_file_pathル,macros/relations/materialized_view/alter.sqlゥunique_idル>macro.dbt.default__get_materialized_view_configuration_changesゥmacro_sqlルレ{% macro default__get_materialized_view_configuration_changes(existing_relation, new_config) %}
{{ exceptions.raise_compiler_error("Materialized views have not been implemented for this adapter.") }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアexisting_relation、typeタォdescriptionΖnameェnew_config、typeタォdescriptionェcreated_atヒAレ萌Bミネナウsupported_languagesタル-macro.dbt.get_create_materialized_view_as_sql゙、nameル#get_create_materialized_view_as_sqlュresource_type・macroャpackage_name」dbt、pathル-macros/relations/materialized_view/create.sqlイoriginal_file_pathル-macros/relations/materialized_view/create.sqlゥunique_idル-macro.dbt.get_create_materialized_view_as_sqlゥmacro_sqlルゥ{% macro get_create_materialized_view_as_sql(relation, sql) -%}
{{- adapter.dispatch('get_create_materialized_view_as_sql', 'dbt')(relation, sql) -}}
{%- endmacro %}ェdepends_on※macros胎@macro.dbt_postgres.postgres__get_create_materialized_view_as_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミハ宍supported_languagesタル6macro.dbt.default__get_create_materialized_view_as_sql゙、nameル,default__get_create_materialized_view_as_sqlュresource_type・macroャpackage_name」dbt、pathル-macros/relations/materialized_view/create.sqlイoriginal_file_pathル-macros/relations/materialized_view/create.sqlゥunique_idル6macro.dbt.default__get_create_materialized_view_as_sqlゥmacro_sqlル縵% macro default__get_create_materialized_view_as_sql(relation, sql) -%}
{{ exceptions.raise_compiler_error(
"`get_create_materialized_view_as_sql` has not been implemented for this adapter."
) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミヒ}ウsupported_languagesタル+macro.dbt.get_table_columns_and_constraints゙、nameル!get_table_columns_and_constraintsュresource_type・macroャpackage_name」dbt、pathル,macros/relations/column/columns_spec_ddl.sqlイoriginal_file_pathル,macros/relations/column/columns_spec_ddl.sqlゥunique_idル+macro.dbt.get_table_columns_and_constraintsゥmacro_sqlル宮%- macro get_table_columns_and_constraints() -%}
{{ adapter.dispatch('get_table_columns_and_constraints', 'dbt')() }}
{%- endmacro -%}
ェdepends_on※macros胎4macro.dbt.default__get_table_columns_and_constraintsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミミ袖supported_languagesタル4macro.dbt.default__get_table_columns_and_constraints゙、nameル*default__get_table_columns_and_constraintsュresource_type・macroャpackage_name」dbt、pathル,macros/relations/column/columns_spec_ddl.sqlイoriginal_file_pathル,macros/relations/column/columns_spec_ddl.sqlゥunique_idル4macro.dbt.default__get_table_columns_and_constraintsゥmacro_sqlルy{% macro default__get_table_columns_and_constraints() -%}
{{ return(table_columns_and_constraints()) }}
{%- endmacro %}ェdepends_on※macros胎'macro.dbt.table_columns_and_constraintsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミム[ウsupported_languagesタル'macro.dbt.table_columns_and_constraints゙、nameスtable_columns_and_constraintsュresource_type・macroャpackage_name」dbt、pathル,macros/relations/column/columns_spec_ddl.sqlイoriginal_file_pathル,macros/relations/column/columns_spec_ddl.sqlゥunique_idル'macro.dbt.table_columns_and_constraintsゥmacro_sqlレc{% macro table_columns_and_constraints() %}
{# loop through user_provided_columns to create DDL with data types and constraints #}
{%- set raw_column_constraints = adapter.render_raw_columns_constraints(raw_columns=model['columns']) -%}
{%- set raw_model_constraints = adapter.render_raw_model_constraints(raw_constraints=model['constraints']) -%}
(
{% for c in raw_column_constraints -%}
{{ c }}{{ "," if not loop.last or raw_model_constraints }}
{% endfor %}
{% for c in raw_model_constraints -%}
{{ c }}{{ "," if not loop.last }}
{% endfor -%}
)
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミヤェウsupported_languagesタル'macro.dbt.get_assert_columns_equivalent゙、nameスget_assert_columns_equivalentュresource_type・macroャpackage_name」dbt、pathル,macros/relations/column/columns_spec_ddl.sqlイoriginal_file_pathル,macros/relations/column/columns_spec_ddl.sqlゥunique_idル'macro.dbt.get_assert_columns_equivalentゥmacro_sqlル
{%- macro get_assert_columns_equivalent(sql) -%}
{{ adapter.dispatch('get_assert_columns_equivalent', 'dbt')(sql) }}
{%- endmacro -%}
ェdepends_on※macros胎0macro.dbt.default__get_assert_columns_equivalentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌Bミユセウsupported_languagesタル0macro.dbt.default__get_assert_columns_equivalent゙、nameル&default__get_assert_columns_equivalentュresource_type・macroャpackage_name」dbt、pathル,macros/relations/column/columns_spec_ddl.sqlイoriginal_file_pathル,macros/relations/column/columns_spec_ddl.sqlゥunique_idル0macro.dbt.default__get_assert_columns_equivalentゥmacro_sqlルw{% macro default__get_assert_columns_equivalent(sql) -%}
{{ return(assert_columns_equivalent(sql)) }}
{%- endmacro %}ェdepends_on※macros胎#macro.dbt.assert_columns_equivalentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌Bミヨ匍supported_languagesタル#macro.dbt.assert_columns_equivalent゙、nameケassert_columns_equivalentュresource_type・macroャpackage_name」dbt、pathル,macros/relations/column/columns_spec_ddl.sqlイoriginal_file_pathル,macros/relations/column/columns_spec_ddl.sqlゥunique_idル#macro.dbt.assert_columns_equivalentゥmacro_sqlレモ{% macro assert_columns_equivalent(sql) %}
{#-- First ensure the user has defined 'columns' in yaml specification --#}
{%- set user_defined_columns = model['columns'] -%}
{%- if not user_defined_columns -%}
{{ exceptions.raise_contract_error([], []) }}
{%- endif -%}
{#-- Obtain the column schema provided by sql file. #}
{%- set sql_file_provided_columns = get_column_schema_from_query(sql, config.get('sql_header', none)) -%}
{#--Obtain the column schema provided by the schema file by generating an 'empty schema' query from the model's columns. #}
{%- set schema_file_provided_columns = get_column_schema_from_query(get_empty_schema_sql(user_defined_columns)) -%}
{#-- create dictionaries with name and formatted data type and strings for exception #}
{%- set sql_columns = format_columns(sql_file_provided_columns) -%}
{%- set yaml_columns = format_columns(schema_file_provided_columns) -%}
{%- if sql_columns|length != yaml_columns|length -%}
{%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}
{%- endif -%}
{%- for sql_col in sql_columns -%}
{%- set yaml_col = [] -%}
{%- for this_col in yaml_columns -%}
{%- if this_col['name'] == sql_col['name'] -%}
{%- do yaml_col.append(this_col) -%}
{%- break -%}
{%- endif -%}
{%- endfor -%}
{%- if not yaml_col -%}
{#-- Column with name not found in yaml #}
{%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}
{%- endif -%}
{%- if sql_col['formatted'] != yaml_col[0]['formatted'] -%}
{#-- Column data types don't match #}
{%- do exceptions.raise_contract_error(yaml_columns, sql_columns) -%}
{%- endif -%}
{%- endfor -%}
{% endmacro %}ェdepends_on※macros遁&macro.dbt.get_column_schema_from_queryセmacro.dbt.get_empty_schema_sqlクmacro.dbt.format_columnsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌Bミ゚@ウsupported_languagesタクmacro.dbt.format_columns゙、nameョformat_columnsュresource_type・macroャpackage_name」dbt、pathル,macros/relations/column/columns_spec_ddl.sqlイoriginal_file_pathル,macros/relations/column/columns_spec_ddl.sqlゥunique_idクmacro.dbt.format_columnsゥmacro_sqlレ2{% macro format_columns(columns) %}
{% set formatted_columns = [] %}
{% for column in columns %}
{%- set formatted_column = adapter.dispatch('format_column', 'dbt')(column) -%}
{%- do formatted_columns.append(formatted_column) -%}
{% endfor %}
{{ return(formatted_columns) }}
{% endmacro %}ェdepends_on※macros胎 macro.dbt.default__format_columnォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameァcolumns、typeタォdescriptionェcreated_atヒAレ萌Bミ盞ウsupported_languagesタル macro.dbt.default__format_column゙、nameカdefault__format_columnュresource_type・macroャpackage_name」dbt、pathル,macros/relations/column/columns_spec_ddl.sqlイoriginal_file_pathル,macros/relations/column/columns_spec_ddl.sqlゥunique_idル macro.dbt.default__format_columnゥmacro_sqlル% macro default__format_column(column) -%}
{% set data_type = column.dtype %}
{% set formatted = column.column.lower() ~ " " ~ data_type %}
{{ return({'name': column.name, 'data_type': data_type, 'formatted': formatted}) }}
{%- endmacro -%}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameヲcolumn、typeタォdescriptionェcreated_atヒAレ萌Bミ聲ウsupported_languagesタエmacro.dbt.drop_table゙、nameェdrop_tableュresource_type・macroャpackage_name」dbt、pathソmacros/relations/table/drop.sqlイoriginal_file_pathソmacros/relations/table/drop.sqlゥunique_idエmacro.dbt.drop_tableゥmacro_sqlルm{% macro drop_table(relation) -%}
{{- adapter.dispatch('drop_table', 'dbt')(relation) -}}
{%- endmacro %}ェdepends_on※macros胎'macro.dbt_postgres.postgres__drop_tableォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミ蝸ウsupported_languagesタスmacro.dbt.default__drop_table゙、nameウdefault__drop_tableュresource_type・macroャpackage_name」dbt、pathソmacros/relations/table/drop.sqlイoriginal_file_pathソmacros/relations/table/drop.sqlゥunique_idスmacro.dbt.default__drop_tableゥmacro_sqlルs{% macro default__drop_table(relation) -%}
drop table if exists {{ relation.render() }} cascade
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミ詆ウsupported_languagesタソmacro.dbt.get_replace_table_sql゙、nameオget_replace_table_sqlュresource_type・macroャpackage_name」dbt、pathル"macros/relations/table/replace.sqlイoriginal_file_pathル"macros/relations/table/replace.sqlゥunique_idソmacro.dbt.get_replace_table_sqlゥmacro_sqlル宮% macro get_replace_table_sql(relation, sql) %}
{{- adapter.dispatch('get_replace_table_sql', 'dbt')(relation, sql) -}}
{% endmacro %}ェdepends_on※macros胎2macro.dbt_postgres.postgres__get_replace_table_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミ)ウsupported_languagesタル(macro.dbt.default__get_replace_table_sql゙、nameセdefault__get_replace_table_sqlュresource_type・macroャpackage_name」dbt、pathル"macros/relations/table/replace.sqlイoriginal_file_pathル"macros/relations/table/replace.sqlゥunique_idル(macro.dbt.default__get_replace_table_sqlゥmacro_sqlルニ{% macro default__get_replace_table_sql(relation, sql) %}
{{ exceptions.raise_compiler_error(
"`get_replace_table_sql` has not been implemented for this adapter."
) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタセmacro.dbt.get_rename_table_sql゙、nameエget_rename_table_sqlュresource_type・macroャpackage_name」dbt、pathル!macros/relations/table/rename.sqlイoriginal_file_pathル!macros/relations/table/rename.sqlゥunique_idセmacro.dbt.get_rename_table_sqlゥmacro_sqlル怒% macro get_rename_table_sql(relation, new_name) %}
{{- adapter.dispatch('get_rename_table_sql', 'dbt')(relation, new_name) -}}
{% endmacro %}ェdepends_on※macros胎1macro.dbt_postgres.postgres__get_rename_table_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタル'macro.dbt.default__get_rename_table_sql゙、nameスdefault__get_rename_table_sqlュresource_type・macroャpackage_name」dbt、pathル!macros/relations/table/rename.sqlイoriginal_file_pathル!macros/relations/table/rename.sqlゥunique_idル'macro.dbt.default__get_rename_table_sqlゥmacro_sqlルノ{% macro default__get_rename_table_sql(relation, new_name) %}
{{ exceptions.raise_compiler_error(
"`get_rename_table_sql` has not been implemented for this adapter."
) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタル!macro.dbt.get_create_table_as_sql゙、nameキget_create_table_as_sqlュresource_type・macroャpackage_name」dbt、pathル!macros/relations/table/create.sqlイoriginal_file_pathル!macros/relations/table/create.sqlゥunique_idル!macro.dbt.get_create_table_as_sqlゥmacro_sqlル」{% macro get_create_table_as_sql(temporary, relation, sql) -%}
{{ adapter.dispatch('get_create_table_as_sql', 'dbt')(temporary, relation, sql) }}
{%- endmacro %}ェdepends_on※macros胎*macro.dbt.default__get_create_table_as_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameゥtemporary、typeタォdescriptionΖnameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタル*macro.dbt.default__get_create_table_as_sql゙、nameル default__get_create_table_as_sqlュresource_type・macroャpackage_name」dbt、pathル!macros/relations/table/create.sqlイoriginal_file_pathル!macros/relations/table/create.sqlゥunique_idル*macro.dbt.default__get_create_table_as_sqlゥmacro_sqlル須% macro default__get_create_table_as_sql(temporary, relation, sql) -%}
{{ return(create_table_as(temporary, relation, sql)) }}
{% endmacro %}ェdepends_on※macros損macro.dbt.create_table_asォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameゥtemporary、typeタォdescriptionΖnameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタケmacro.dbt.create_table_as゙、nameッcreate_table_asュresource_type・macroャpackage_name」dbt、pathル!macros/relations/table/create.sqlイoriginal_file_pathル!macros/relations/table/create.sqlゥunique_idケmacro.dbt.create_table_asゥmacro_sqlレヲ{% macro create_table_as(temporary, relation, compiled_code, language='sql') -%}
{# backward compatibility for create_table_as that does not support language #}
{% if language == "sql" %}
{{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code)}}
{% else %}
{{ adapter.dispatch('create_table_as', 'dbt')(temporary, relation, compiled_code, language) }}
{% endif %}
{%- endmacro %}ェdepends_on※macros胎,macro.dbt_postgres.postgres__create_table_asォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameゥtemporary、typeタォdescriptionΖnameィrelation、typeタォdescriptionΖnameュcompiled_code、typeタォdescriptionΖnameィlanguage、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタル"macro.dbt.default__create_table_as゙、nameクdefault__create_table_asュresource_type・macroャpackage_name」dbt、pathル!macros/relations/table/create.sqlイoriginal_file_pathル!macros/relations/table/create.sqlゥunique_idル"macro.dbt.default__create_table_asゥmacro_sqlレ\{% macro default__create_table_as(temporary, relation, sql) -%}
{%- set sql_header = config.get('sql_header', none) -%}
{{ sql_header if sql_header is not none }}
create {% if temporary: -%}temporary{%- endif %} table
{{ relation.include(database=(not temporary), schema=(not temporary)) }}
{% set contract_config = config.get('contract') %}
{% if contract_config.enforced and (not temporary) %}
{{ get_assert_columns_equivalent(sql) }}
{{ get_table_columns_and_constraints() }}
{%- set sql = get_select_subquery(sql) %}
{% endif %}
as (
{{ sql }}
);
{%- endmacro %}ェdepends_on※macros遁'macro.dbt.get_assert_columns_equivalentル+macro.dbt.get_table_columns_and_constraintsスmacro.dbt.get_select_subqueryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameゥtemporary、typeタォdescriptionΖnameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタル#macro.dbt.default__get_column_names゙、nameケdefault__get_column_namesュresource_type・macroャpackage_name」dbt、pathル!macros/relations/table/create.sqlイoriginal_file_pathル!macros/relations/table/create.sqlゥunique_idル#macro.dbt.default__get_column_namesゥmacro_sqlレォ{% macro default__get_column_names() %}
{#- loop through user_provided_columns to get column names -#}
{%- set user_provided_columns = model['columns'] -%}
{%- for i in user_provided_columns %}
{%- set col = user_provided_columns[i] -%}
{%- set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] -%}
{{ col_name }}{{ ", " if not loop.last }}
{%- endfor -%}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bミ惲ウsupported_languagesタスmacro.dbt.get_select_subquery゙、nameウget_select_subqueryュresource_type・macroャpackage_name」dbt、pathル!macros/relations/table/create.sqlイoriginal_file_pathル!macros/relations/table/create.sqlゥunique_idスmacro.dbt.get_select_subqueryゥmacro_sqlルw{% macro get_select_subquery(sql) %}
{{ return(adapter.dispatch('get_select_subquery', 'dbt')(sql)) }}
{% endmacro %}ェdepends_on※macros胎&macro.dbt.default__get_select_subqueryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌Bミ隯ウsupported_languagesタル&macro.dbt.default__get_select_subquery゙、nameシdefault__get_select_subqueryュresource_type・macroャpackage_name」dbt、pathル!macros/relations/table/create.sqlイoriginal_file_pathル!macros/relations/table/create.sqlゥunique_idル&macro.dbt.default__get_select_subqueryゥmacro_sqlルュ{% macro default__get_select_subquery(sql) %}
select {{ adapter.dispatch('get_column_names', 'dbt')() }}
from (
{{ sql }}
) as model_subq
{%- endmacro %}ェdepends_on※macros胎#macro.dbt.default__get_column_namesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌Bミウsupported_languagesタウmacro.dbt.drop_view゙、nameゥdrop_viewュresource_type・macroャpackage_name」dbt、pathセmacros/relations/view/drop.sqlイoriginal_file_pathセmacros/relations/view/drop.sqlゥunique_idウmacro.dbt.drop_viewゥmacro_sqlルk{% macro drop_view(relation) -%}
{{- adapter.dispatch('drop_view', 'dbt')(relation) -}}
{%- endmacro %}ェdepends_on※macros胎&macro.dbt_postgres.postgres__drop_viewォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミチウsupported_languagesタシmacro.dbt.default__drop_view゙、nameイdefault__drop_viewュresource_type・macroャpackage_name」dbt、pathセmacros/relations/view/drop.sqlイoriginal_file_pathセmacros/relations/view/drop.sqlゥunique_idシmacro.dbt.default__drop_viewゥmacro_sqlルq{% macro default__drop_view(relation) -%}
drop view if exists {{ relation.render() }} cascade
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bミ承supported_languagesタセmacro.dbt.get_replace_view_sql゙、nameエget_replace_view_sqlュresource_type・macroャpackage_name」dbt、pathル!macros/relations/view/replace.sqlイoriginal_file_pathル!macros/relations/view/replace.sqlゥunique_idセmacro.dbt.get_replace_view_sqlゥmacro_sqlル閲% macro get_replace_view_sql(relation, sql) %}
{{- adapter.dispatch('get_replace_view_sql', 'dbt')(relation, sql) -}}
{% endmacro %}ェdepends_on※macros胎1macro.dbt_postgres.postgres__get_replace_view_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bムsupported_languagesタル'macro.dbt.default__get_replace_view_sql゙、nameスdefault__get_replace_view_sqlュresource_type・macroャpackage_name」dbt、pathル!macros/relations/view/replace.sqlイoriginal_file_pathル!macros/relations/view/replace.sqlゥunique_idル'macro.dbt.default__get_replace_view_sqlゥmacro_sqlルト{% macro default__get_replace_view_sql(relation, sql) %}
{{ exceptions.raise_compiler_error(
"`get_replace_view_sql` has not been implemented for this adapter."
) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bムsupported_languagesタル macro.dbt.create_or_replace_view゙、nameカcreate_or_replace_viewュresource_type・macroャpackage_name」dbt、pathル!macros/relations/view/replace.sqlイoriginal_file_pathル!macros/relations/view/replace.sqlゥunique_idル macro.dbt.create_or_replace_viewゥmacro_sqlレ炮% macro create_or_replace_view() %}
{%- set identifier = model['alias'] -%}
{%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%}
{%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%}
{%- set target_relation = api.Relation.create(
identifier=identifier, schema=schema, database=database,
type='view') -%}
{% set grant_config = config.get('grants') %}
{{ run_hooks(pre_hooks) }}
-- If there's a table with the same name and we weren't told to full refresh,
-- that's an error. If we were told to full refresh, drop it. This behavior differs
-- for Snowflake and BigQuery, so multiple dispatch is used.
{%- if old_relation is not none and old_relation.is_table -%}
{{ handle_existing_table(should_full_refresh(), old_relation) }}
{%- endif -%}
-- build model
{% call statement('main') -%}
{{ get_create_view_as_sql(target_relation, sql) }}
{%- endcall %}
{% set should_revoke = should_revoke(exists_as_view, full_refresh_mode=True) %}
{% do apply_grants(target_relation, grant_config, should_revoke=should_revoke) %}
{{ run_hooks(post_hooks) }}
{{ return({'relations': [target_relation]}) }}
{% endmacro %}ェdepends_on※macros竜macro.dbt.run_hooksソmacro.dbt.handle_existing_tableスmacro.dbt.should_full_refreshウmacro.dbt.statementル macro.dbt.get_create_view_as_sqlキmacro.dbt.should_revokeカmacro.dbt.apply_grantsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム ウsupported_languagesタソmacro.dbt.handle_existing_table゙、nameオhandle_existing_tableュresource_type・macroャpackage_name」dbt、pathル!macros/relations/view/replace.sqlイoriginal_file_pathル!macros/relations/view/replace.sqlゥunique_idソmacro.dbt.handle_existing_tableゥmacro_sqlル」{% macro handle_existing_table(full_refresh, old_relation) %}
{{ adapter.dispatch('handle_existing_table', 'dbt')(full_refresh, old_relation) }}
{% endmacro %}ェdepends_on※macros胎(macro.dbt.default__handle_existing_tableォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameャfull_refresh、typeタォdescriptionΖnameャold_relation、typeタォdescriptionェcreated_atヒAレ萌Bム
€ウsupported_languagesタル(macro.dbt.default__handle_existing_table゙、nameセdefault__handle_existing_tableュresource_type・macroャpackage_name」dbt、pathル!macros/relations/view/replace.sqlイoriginal_file_pathル!macros/relations/view/replace.sqlゥunique_idル(macro.dbt.default__handle_existing_tableゥmacro_sqlル% macro default__handle_existing_table(full_refresh, old_relation) %}
{{ log("Dropping relation " ~ old_relation.render() ~ " because it is of type " ~ old_relation.type) }}
{{ adapter.drop_relation(old_relation) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameャfull_refresh、typeタォdescriptionΖnameャold_relation、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタスmacro.dbt.get_rename_view_sql゙、nameウget_rename_view_sqlュresource_type・macroャpackage_name」dbt、pathル macros/relations/view/rename.sqlイoriginal_file_pathル macros/relations/view/rename.sqlゥunique_idスmacro.dbt.get_rename_view_sqlゥmacro_sqlル捜% macro get_rename_view_sql(relation, new_name) %}
{{- adapter.dispatch('get_rename_view_sql', 'dbt')(relation, new_name) -}}
{% endmacro %}ェdepends_on※macros胎0macro.dbt_postgres.postgres__get_rename_view_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタル&macro.dbt.default__get_rename_view_sql゙、nameシdefault__get_rename_view_sqlュresource_type・macroャpackage_name」dbt、pathル macros/relations/view/rename.sqlイoriginal_file_pathル macros/relations/view/rename.sqlゥunique_idル&macro.dbt.default__get_rename_view_sqlゥmacro_sqlルヌ{% macro default__get_rename_view_sql(relation, new_name) %}
{{ exceptions.raise_compiler_error(
"`get_rename_view_sql` has not been implemented for this adapter."
) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameィnew_name、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタル macro.dbt.get_create_view_as_sql゙、nameカget_create_view_as_sqlュresource_type・macroャpackage_name」dbt、pathル macros/relations/view/create.sqlイoriginal_file_pathル macros/relations/view/create.sqlゥunique_idル macro.dbt.get_create_view_as_sqlゥmacro_sqlル宮% macro get_create_view_as_sql(relation, sql) -%}
{{ adapter.dispatch('get_create_view_as_sql', 'dbt')(relation, sql) }}
{%- endmacro %}ェdepends_on※macros胎)macro.dbt.default__get_create_view_as_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bム攀supported_languagesタル)macro.dbt.default__get_create_view_as_sql゙、nameソdefault__get_create_view_as_sqlュresource_type・macroャpackage_name」dbt、pathル macros/relations/view/create.sqlイoriginal_file_pathル macros/relations/view/create.sqlゥunique_idル)macro.dbt.default__get_create_view_as_sqlゥmacro_sqlルx{% macro default__get_create_view_as_sql(relation, sql) -%}
{{ return(create_view_as(relation, sql)) }}
{% endmacro %}ェdepends_on※macros尊macro.dbt.create_view_asォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bムゥウsupported_languagesタクmacro.dbt.create_view_as゙、nameョcreate_view_asュresource_type・macroャpackage_name」dbt、pathル macros/relations/view/create.sqlイoriginal_file_pathル macros/relations/view/create.sqlゥunique_idクmacro.dbt.create_view_asゥmacro_sqlル{{% macro create_view_as(relation, sql) -%}
{{ adapter.dispatch('create_view_as', 'dbt')(relation, sql) }}
{%- endmacro %}ェdepends_on※macros胎!macro.dbt.default__create_view_asォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bムホウsupported_languagesタル!macro.dbt.default__create_view_as゙、nameキdefault__create_view_asュresource_type・macroャpackage_name」dbt、pathル macros/relations/view/create.sqlイoriginal_file_pathル macros/relations/view/create.sqlゥunique_idル!macro.dbt.default__create_view_asゥmacro_sqlレ% macro default__create_view_as(relation, sql) -%}
{%- set sql_header = config.get('sql_header', none) -%}
{{ sql_header if sql_header is not none }}
create view {{ relation.render() }}
{% set contract_config = config.get('contract') %}
{% if contract_config.enforced %}
{{ get_assert_columns_equivalent(sql) }}
{%- endif %}
as (
{{ sql }}
);
{%- endmacro %}ェdepends_on※macros胎'macro.dbt.get_assert_columns_equivalentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖname」sql、typeタォdescriptionェcreated_atヒAレ萌Bムィウsupported_languagesタル%macro.dbt.default__test_relationships゙、nameサdefault__test_relationshipsュresource_type・macroャpackage_name」dbt、pathル)macros/generic_test_sql/relationships.sqlイoriginal_file_pathル)macros/generic_test_sql/relationships.sqlゥunique_idル%macro.dbt.default__test_relationshipsゥmacro_sqlレ怒% macro default__test_relationships(model, column_name, to, field) %}
with child as (
select {{ column_name }} as from_field
from {{ model }}
where {{ column_name }} is not null
),
parent as (
select {{ field }} as to_field
from {{ to }}
)
select
from_field
from child
left join parent
on child.from_field = parent.to_field
where parent.to_field is null
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、name・model、typeタォdescriptionΖnameォcolumn_name、typeタォdescriptionΖname「to、typeタォdescriptionΖname・field、typeタォdescriptionェcreated_atヒAレ萌Bム邉supported_languagesタル macro.dbt.default__test_not_null゙、nameカdefault__test_not_nullュresource_type・macroャpackage_name」dbt、pathル$macros/generic_test_sql/not_null.sqlイoriginal_file_pathル$macros/generic_test_sql/not_null.sqlゥunique_idル macro.dbt.default__test_not_nullゥmacro_sqlルレ{% macro default__test_not_null(model, column_name) %}
{% set column_list = '*' if should_store_failures() else column_name %}
select {{ column_list }}
from {{ model }}
where {{ column_name }} is null
{% endmacro %}ェdepends_on※macros汰macro.dbt.should_store_failuresォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・model、typeタォdescriptionΖnameォcolumn_name、typeタォdescriptionェcreated_atヒAレ萌Bムメウsupported_languagesタセmacro.dbt.default__test_unique゙、nameエdefault__test_uniqueュresource_type・macroャpackage_name」dbt、pathル"macros/generic_test_sql/unique.sqlイoriginal_file_pathル"macros/generic_test_sql/unique.sqlゥunique_idセmacro.dbt.default__test_uniqueゥmacro_sqlル% macro default__test_unique(model, column_name) %}
select
{{ column_name }} as unique_field,
count(*) as n_records
from {{ model }}
where {{ column_name }} is not null
group by {{ column_name }}
having count(*) > 1
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・model、typeタォdescriptionΖnameォcolumn_name、typeタォdescriptionェcreated_atヒAレ萌Bム`ウsupported_languagesタル'macro.dbt.default__test_accepted_values゙、nameスdefault__test_accepted_valuesュresource_type・macroャpackage_name」dbt、pathル+macros/generic_test_sql/accepted_values.sqlイoriginal_file_pathル+macros/generic_test_sql/accepted_values.sqlゥunique_idル'macro.dbt.default__test_accepted_valuesゥmacro_sqlレ{% macro default__test_accepted_values(model, column_name, values, quote=True) %}
with all_values as (
select
{{ column_name }} as value_field,
count(*) as n_records
from {{ model }}
group by {{ column_name }}
)
select *
from all_values
where value_field not in (
{% for value in values -%}
{% if quote -%}
'{{ value }}'
{%- else -%}
{{ value }}
{%- endif -%}
{%- if not loop.last -%},{%- endif %}
{%- endfor %}
)
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、name・model、typeタォdescriptionΖnameォcolumn_name、typeタォdescriptionΖnameヲvalues、typeタォdescriptionΖname・quote、typeタォdescriptionェcreated_atヒAレ萌Bム"ウウsupported_languagesタウmacro.dbt.statement゙、nameゥstatementュresource_type・macroャpackage_name」dbt、pathクmacros/etc/statement.sqlイoriginal_file_pathクmacros/etc/statement.sqlゥunique_idウmacro.dbt.statementゥmacro_sqlレ
{%- macro statement(name=None, fetch_result=False, auto_begin=True, language='sql') -%}
{%- if execute: -%}
{%- set compiled_code = caller() -%}
{%- if name == 'main' -%}
{{ log('Writing runtime {} for node "{}"'.format(language, model['unique_id'])) }}
{{ write(compiled_code) }}
{%- endif -%}
{%- if language == 'sql'-%}
{%- set res, table = adapter.execute(compiled_code, auto_begin=auto_begin, fetch=fetch_result) -%}
{%- elif language == 'python' -%}
{%- set res = submit_python_job(model, compiled_code) -%}
{#-- TODO: What should table be for python models? --#}
{%- set table = None -%}
{%- else -%}
{% do exceptions.raise_compiler_error("statement macro didn't get supported language") %}
{%- endif -%}
{%- if name is not none -%}
{{ store_result(name, response=res, agate_table=table) }}
{%- endif -%}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、name、name、typeタォdescriptionΖnameャfetch_result、typeタォdescriptionΖnameェauto_begin、typeタォdescriptionΖnameィlanguage、typeタォdescriptionェcreated_atヒAレ萌Bム*ウsupported_languagesタクmacro.dbt.noop_statement゙、nameョnoop_statementュresource_type・macroャpackage_name」dbt、pathクmacros/etc/statement.sqlイoriginal_file_pathクmacros/etc/statement.sqlゥunique_idクmacro.dbt.noop_statementゥmacro_sqlレオ{% macro noop_statement(name=None, message=None, code=None, rows_affected=None, res=None) -%}
{%- set sql = caller() -%}
{%- if name == 'main' -%}
{{ log('Writing runtime SQL for node "{}"'.format(model['unique_id'])) }}
{{ write(sql) }}
{%- endif -%}
{%- if name is not none -%}
{{ store_raw_result(name, message=message, code=code, rows_affected=rows_affected, agate_table=res) }}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments父、name、name、typeタォdescriptionΖnameァmessage、typeタォdescriptionΖname、code、typeタォdescriptionΖnameュrows_affected、typeタォdescriptionΖname」res、typeタォdescriptionェcreated_atヒAレ萌Bム.カウsupported_languagesタウmacro.dbt.run_query゙、nameゥrun_queryュresource_type・macroャpackage_name」dbt、pathクmacros/etc/statement.sqlイoriginal_file_pathクmacros/etc/statement.sqlゥunique_idウmacro.dbt.run_queryゥmacro_sqlルラ{% macro run_query(sql) %}
{% call statement("run_query_statement", fetch_result=true, auto_begin=false) %}
{{ sql }}
{% endcall %}
{% do return(load_result("run_query_statement").table) %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌Bム0匍supported_languagesタコmacro.dbt.convert_datetime゙、nameーconvert_datetimeュresource_type・macroャpackage_name」dbt、pathキmacros/etc/datetime.sqlイoriginal_file_pathキmacros/etc/datetime.sqlゥunique_idコmacro.dbt.convert_datetimeゥmacro_sqlレW{% macro convert_datetime(date_str, date_fmt) %}
{% set error_msg -%}
The provided partition date '{{ date_str }}' does not match the expected format '{{ date_fmt }}'
{%- endset %}
{% set res = try_or_compiler_error(error_msg, modules.datetime.datetime.strptime, date_str.strip(), date_fmt) %}
{{ return(res) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィdate_str、typeタォdescriptionΖnameィdate_fmt、typeタォdescriptionェcreated_atヒAレ萌Bム5aウsupported_languagesタクmacro.dbt.dates_in_range゙、nameョdates_in_rangeュresource_type・macroャpackage_name」dbt、pathキmacros/etc/datetime.sqlイoriginal_file_pathキmacros/etc/datetime.sqlゥunique_idクmacro.dbt.dates_in_rangeゥmacro_sqlレ% macro dates_in_range(start_date_str, end_date_str=none, in_fmt="%Y%m%d", out_fmt="%Y%m%d") %}
{% set end_date_str = start_date_str if end_date_str is none else end_date_str %}
{% set start_date = convert_datetime(start_date_str, in_fmt) %}
{% set end_date = convert_datetime(end_date_str, in_fmt) %}
{% set day_count = (end_date - start_date).days %}
{% if day_count < 0 %}
{% set msg -%}
Partition start date is after the end date ({{ start_date }}, {{ end_date }})
{%- endset %}
{{ exceptions.raise_compiler_error(msg, model) }}
{% endif %}
{% set date_list = [] %}
{% for i in range(0, day_count + 1) %}
{% set the_date = (modules.datetime.timedelta(days=i) + start_date) %}
{% if not out_fmt %}
{% set _ = date_list.append(the_date) %}
{% else %}
{% set _ = date_list.append(the_date.strftime(out_fmt)) %}
{% endif %}
{% endfor %}
{{ return(date_list) }}
{% endmacro %}ェdepends_on※macros村macro.dbt.convert_datetimeォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameョstart_date_str、typeタォdescriptionΖnameャend_date_str、typeタォdescriptionΖnameヲin_fmt、typeタォdescriptionΖnameァout_fmt、typeタォdescriptionェcreated_atヒAレ萌Bム<ッウsupported_languagesタケmacro.dbt.partition_range゙、nameッpartition_rangeュresource_type・macroャpackage_name」dbt、pathキmacros/etc/datetime.sqlイoriginal_file_pathキmacros/etc/datetime.sqlゥunique_idケmacro.dbt.partition_rangeゥmacro_sqlレ學% macro partition_range(raw_partition_date, date_fmt='%Y%m%d') %}
{% set partition_range = (raw_partition_date | string).split(",") %}
{% if (partition_range | length) == 1 %}
{% set start_date = partition_range[0] %}
{% set end_date = none %}
{% elif (partition_range | length) == 2 %}
{% set start_date = partition_range[0] %}
{% set end_date = partition_range[1] %}
{% else %}
{{ exceptions.raise_compiler_error("Invalid partition time. Expected format: {Start Date}[,{End Date}]. Got: " ~ raw_partition_date) }}
{% endif %}
{{ return(dates_in_range(start_date, end_date, in_fmt=date_fmt)) }}
{% endmacro %}ェdepends_on※macros尊macro.dbt.dates_in_rangeォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイraw_partition_date、typeタォdescriptionΖnameィdate_fmt、typeタォdescriptionェcreated_atヒAレ萌BムC ウsupported_languagesタソmacro.dbt.py_current_timestring゙、nameオpy_current_timestringュresource_type・macroャpackage_name」dbt、pathキmacros/etc/datetime.sqlイoriginal_file_pathキmacros/etc/datetime.sqlゥunique_idソmacro.dbt.py_current_timestringゥmacro_sqlル% macro py_current_timestring() %}
{% set dt = modules.datetime.datetime.now() %}
{% do return(dt.strftime("%Y%m%d%H%M%S%f")) %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BムD昕supported_languagesターmacro.dbt.except゙、nameヲexceptュresource_type・macroャpackage_name」dbt、pathキmacros/utils/except.sqlイoriginal_file_pathキmacros/utils/except.sqlゥunique_idーmacro.dbt.exceptゥmacro_sqlルW{% macro except() %}
{{ return(adapter.dispatch('except', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros損macro.dbt.default__exceptォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BムF糞supported_languagesタケmacro.dbt.default__except゙、nameッdefault__exceptュresource_type・macroャpackage_name」dbt、pathキmacros/utils/except.sqlイoriginal_file_pathキmacros/utils/except.sqlゥunique_idケmacro.dbt.default__exceptゥmacro_sqlル9{% macro default__except() %}
except
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BムG ウsupported_languagesタソmacro.dbt.get_intervals_between゙、nameオget_intervals_betweenュresource_type・macroャpackage_name」dbt、pathサmacros/utils/date_spine.sqlイoriginal_file_pathサmacros/utils/date_spine.sqlゥunique_idソmacro.dbt.get_intervals_betweenゥmacro_sqlルオ{% macro get_intervals_between(start_date, end_date, datepart) -%}
{{ return(adapter.dispatch('get_intervals_between', 'dbt')(start_date, end_date, datepart)) }}
{%- endmacro %}ェdepends_on※macros胎(macro.dbt.default__get_intervals_betweenォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameェstart_date、typeタォdescriptionΖnameィend_date、typeタォdescriptionΖnameィdatepart、typeタォdescriptionェcreated_atヒAレ萌BムJΦsupported_languagesタル(macro.dbt.default__get_intervals_between゙、nameセdefault__get_intervals_betweenュresource_type・macroャpackage_name」dbt、pathサmacros/utils/date_spine.sqlイoriginal_file_pathサmacros/utils/date_spine.sqlゥunique_idル(macro.dbt.default__get_intervals_betweenゥmacro_sqlレ{% macro default__get_intervals_between(start_date, end_date, datepart) -%}
{%- call statement('get_intervals_between', fetch_result=True) %}
select {{ dbt.datediff(start_date, end_date, datepart) }}
{%- endcall -%}
{%- set value_list = load_result('get_intervals_between') -%}
{%- if value_list and value_list['data'] -%}
{%- set values = value_list['data'] | map(attribute=0) | list %}
{{ return(values[0]) }}
{%- else -%}
{{ return(1) }}
{%- endif -%}
{%- endmacro %}ェdepends_on※macros諜macro.dbt.statementイmacro.dbt.datediffォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameェstart_date、typeタォdescriptionΖnameィend_date、typeタォdescriptionΖnameィdatepart、typeタォdescriptionェcreated_atヒAレ萌BムNwウsupported_languagesタエmacro.dbt.date_spine゙、nameェdate_spineュresource_type・macroャpackage_name」dbt、pathサmacros/utils/date_spine.sqlイoriginal_file_pathサmacros/utils/date_spine.sqlゥunique_idエmacro.dbt.date_spineゥmacro_sqlル桀% macro date_spine(datepart, start_date, end_date) %}
{{ return(adapter.dispatch('date_spine', 'dbt')(datepart, start_date, end_date)) }}
{%- endmacro %}ェdepends_on※macros多macro.dbt.default__date_spineォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィdatepart、typeタォdescriptionΖnameェstart_date、typeタォdescriptionΖnameィend_date、typeタォdescriptionェcreated_atヒAレ萌BムOsupported_languagesタスmacro.dbt.default__date_spine゙、nameウdefault__date_spineュresource_type・macroャpackage_name」dbt、pathサmacros/utils/date_spine.sqlイoriginal_file_pathサmacros/utils/date_spine.sqlゥunique_idスmacro.dbt.default__date_spineゥmacro_sqlレ;{% macro default__date_spine(datepart, start_date, end_date) %}
{# call as follows:
date_spine(
"day",
"to_date('01/01/2016', 'mm/dd/yyyy')",
"dbt.dateadd(week, 1, current_date)"
) #}
with rawdata as (
{{dbt.generate_series(
dbt.get_intervals_between(start_date, end_date, datepart)
)}}
),
all_periods as (
select (
{{
dbt.dateadd(
datepart,
"row_number() over (order by 1) - 1",
start_date
)
}}
) as date_{{datepart}}
from rawdata
),
filtered as (
select *
from all_periods
where date_{{datepart}} <= {{ end_date }}
)
select * from filtered
{% endmacro %}ェdepends_on※macros道macro.dbt.generate_seriesソmacro.dbt.get_intervals_betweenアmacro.dbt.dateaddォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィdatepart、typeタォdescriptionΖnameェstart_date、typeタォdescriptionΖnameィend_date、typeタォdescriptionェcreated_atヒAレ萌BムRQウsupported_languagesタョmacro.dbt.date゙、name、dateュresource_type・macroャpackage_name」dbt、pathオmacros/utils/date.sqlイoriginal_file_pathオmacros/utils/date.sqlゥunique_idョmacro.dbt.dateゥmacro_sqlルt{% macro date(year, month, day) %}
{{ return(adapter.dispatch('date', 'dbt') (year, month, day)) }}
{% endmacro %}ェdepends_on※macros孫macro.dbt.default__dateォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、name、year、typeタォdescriptionΖname・month、typeタォdescriptionΖname」day、typeタォdescriptionェcreated_atヒAレ萌BムTuウsupported_languagesタキmacro.dbt.default__date゙、nameュdefault__dateュresource_type・macroャpackage_name」dbt、pathオmacros/utils/date.sqlイoriginal_file_pathオmacros/utils/date.sqlゥunique_idキmacro.dbt.default__dateゥmacro_sqlル% macro default__date(year, month, day) -%}
{%- set dt = modules.datetime.date(year, month, day) -%}
{%- set iso_8601_formatted_date = dt.strftime('%Y-%m-%d') -%}
to_date('{{ iso_8601_formatted_date }}', 'YYYY-MM-DD')
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、name、year、typeタォdescriptionΖname・month、typeタォdescriptionΖname」day、typeタォdescriptionェcreated_atヒAレ萌BムVLウsupported_languagesタアmacro.dbt.replace゙、nameァreplaceュresource_type・macroャpackage_name」dbt、pathクmacros/utils/replace.sqlイoriginal_file_pathクmacros/utils/replace.sqlゥunique_idアmacro.dbt.replaceゥmacro_sqlル怒% macro replace(field, old_chars, new_chars) -%}
{{ return(adapter.dispatch('replace', 'dbt') (field, old_chars, new_chars)) }}
{% endmacro %}ェdepends_on※macros村macro.dbt.default__replaceォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、name・field、typeタォdescriptionΖnameゥold_chars、typeタォdescriptionΖnameゥnew_chars、typeタォdescriptionェcreated_atヒAレ萌BムX`ウsupported_languagesタコmacro.dbt.default__replace゙、nameーdefault__replaceュresource_type・macroャpackage_name」dbt、pathクmacros/utils/replace.sqlイoriginal_file_pathクmacros/utils/replace.sqlゥunique_idコmacro.dbt.default__replaceゥmacro_sqlル、{% macro default__replace(field, old_chars, new_chars) %}
replace(
{{ field }},
{{ old_chars }},
{{ new_chars }}
)
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、name・field、typeタォdescriptionΖnameゥold_chars、typeタォdescriptionΖnameゥnew_chars、typeタォdescriptionェcreated_atヒAレ萌BムYさsupported_languagesターmacro.dbt.concat゙、nameヲconcatュresource_type・macroャpackage_name」dbt、pathキmacros/utils/concat.sqlイoriginal_file_pathキmacros/utils/concat.sqlゥunique_idーmacro.dbt.concatゥmacro_sqlルe{% macro concat(fields) -%}
{{ return(adapter.dispatch('concat', 'dbt')(fields)) }}
{%- endmacro %}ェdepends_on※macros損macro.dbt.default__concatォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameヲfields、typeタォdescriptionェcreated_atヒAレ萌Bム[)ウsupported_languagesタケmacro.dbt.default__concat゙、nameッdefault__concatュresource_type・macroャpackage_name」dbt、pathキmacros/utils/concat.sqlイoriginal_file_pathキmacros/utils/concat.sqlゥunique_idケmacro.dbt.default__concatゥmacro_sqlルR{% macro default__concat(fields) -%}
{{ fields|join(' || ') }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameヲfields、typeタォdescriptionェcreated_atヒAレ萌Bム[ウsupported_languagesタサmacro.dbt.get_powers_of_two゙、nameアget_powers_of_twoュresource_type・macroャpackage_name」dbt、pathル macros/utils/generate_series.sqlイoriginal_file_pathル macros/utils/generate_series.sqlゥunique_idサmacro.dbt.get_powers_of_twoゥmacro_sqlル% macro get_powers_of_two(upper_bound) %}
{{ return(adapter.dispatch('get_powers_of_two', 'dbt')(upper_bound)) }}
{% endmacro %}ェdepends_on※macros胎$macro.dbt.default__get_powers_of_twoォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameォupper_bound、typeタォdescriptionェcreated_atヒAレ萌Bム^昕supported_languagesタル$macro.dbt.default__get_powers_of_two゙、nameコdefault__get_powers_of_twoュresource_type・macroャpackage_name」dbt、pathル macros/utils/generate_series.sqlイoriginal_file_pathル macros/utils/generate_series.sqlゥunique_idル$macro.dbt.default__get_powers_of_twoゥmacro_sqlレA{% macro default__get_powers_of_two(upper_bound) %}
{% if upper_bound <= 0 %}
{{ exceptions.raise_compiler_error("upper bound must be positive") }}
{% endif %}
{% for _ in range(1, 100) %}
{% if upper_bound <= 2 ** loop.index %}{{ return(loop.index) }}{% endif %}
{% endfor %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameォupper_bound、typeタォdescriptionェcreated_atヒAレ萌Bムa匍supported_languagesタケmacro.dbt.generate_series゙、nameッgenerate_seriesュresource_type・macroャpackage_name」dbt、pathル macros/utils/generate_series.sqlイoriginal_file_pathル macros/utils/generate_series.sqlゥunique_idケmacro.dbt.generate_seriesゥmacro_sqlル+% macro generate_series(upper_bound) %}
{{ return(adapter.dispatch('generate_series', 'dbt')(upper_bound)) }}
{% endmacro %}ェdepends_on※macros胎"macro.dbt.default__generate_seriesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameォupper_bound、typeタォdescriptionェcreated_atヒAレ萌Bムbトウsupported_languagesタル"macro.dbt.default__generate_series゙、nameクdefault__generate_seriesュresource_type・macroャpackage_name」dbt、pathル macros/utils/generate_series.sqlイoriginal_file_pathル macros/utils/generate_series.sqlゥunique_idル"macro.dbt.default__generate_seriesゥmacro_sqlレq{% macro default__generate_series(upper_bound) %}
{% set n = dbt.get_powers_of_two(upper_bound) %}
with p as (
select 0 as generated_number union all select 1
), unioned as (
select
{% for i in range(n) %}
p{{i}}.generated_number * power(2, {{i}})
{% if not loop.last %} + {% endif %}
{% endfor %}
+ 1
as generated_number
from
{% for i in range(n) %}
p as p{{i}}
{% if not loop.last %} cross join {% endif %}
{% endfor %}
)
select *
from unioned
where generated_number <= {{upper_bound}}
order by generated_number
{% endmacro %}ェdepends_on※macros遜macro.dbt.get_powers_of_twoォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameォupper_bound、typeタォdescriptionェcreated_atヒAレ萌Bムf#ウsupported_languagesターmacro.dbt.length゙、nameヲlengthュresource_type・macroャpackage_name」dbt、pathキmacros/utils/length.sqlイoriginal_file_pathキmacros/utils/length.sqlゥunique_idーmacro.dbt.lengthゥmacro_sqlルo{% macro length(expression) -%}
{{ return(adapter.dispatch('length', 'dbt') (expression)) }}
{% endmacro %}ェdepends_on※macros損macro.dbt.default__lengthォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェexpression、typeタォdescriptionェcreated_atヒAレ萌Bムhウsupported_languagesタケmacro.dbt.default__length゙、nameッdefault__lengthュresource_type・macroャpackage_name」dbt、pathキmacros/utils/length.sqlイoriginal_file_pathキmacros/utils/length.sqlゥunique_idケmacro.dbt.default__lengthゥmacro_sqlルe{% macro default__length(expression) %}
length(
{{ expression }}
)
{%- endmacro -%}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェexpression、typeタォdescriptionェcreated_atヒAレ萌Bムhオウsupported_languagesタアmacro.dbt.dateadd゙、nameァdateaddュresource_type・macroャpackage_name」dbt、pathクmacros/utils/dateadd.sqlイoriginal_file_pathクmacros/utils/dateadd.sqlゥunique_idアmacro.dbt.dateaddゥmacro_sqlルュ{% macro dateadd(datepart, interval, from_date_or_timestamp) %}
{{ return(adapter.dispatch('dateadd', 'dbt')(datepart, interval, from_date_or_timestamp)) }}
{% endmacro %}ェdepends_on※macros胎$macro.dbt_postgres.postgres__dateaddォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィdatepart、typeタォdescriptionΖnameィinterval、typeタォdescriptionΖnameカfrom_date_or_timestamp、typeタォdescriptionェcreated_atヒAレ萌Bムjセウsupported_languagesタコmacro.dbt.default__dateadd゙、nameーdefault__dateaddュresource_type・macroャpackage_name」dbt、pathクmacros/utils/dateadd.sqlイoriginal_file_pathクmacros/utils/dateadd.sqlゥunique_idコmacro.dbt.default__dateaddゥmacro_sqlルナ{% macro default__dateadd(datepart, interval, from_date_or_timestamp) %}
dateadd(
{{ datepart }},
{{ interval }},
{{ from_date_or_timestamp }}
)
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィdatepart、typeタォdescriptionΖnameィinterval、typeタォdescriptionΖnameカfrom_date_or_timestamp、typeタォdescriptionェcreated_atヒAレ萌Bムkハウsupported_languagesタウmacro.dbt.intersect゙、nameゥintersectュresource_type・macroャpackage_name」dbt、pathコmacros/utils/intersect.sqlイoriginal_file_pathコmacros/utils/intersect.sqlゥunique_idウmacro.dbt.intersectゥmacro_sqlル]{% macro intersect() %}
{{ return(adapter.dispatch('intersect', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros他macro.dbt.default__intersectォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムm@ウsupported_languagesタシmacro.dbt.default__intersect゙、nameイdefault__intersectュresource_type・macroャpackage_name」dbt、pathコmacros/utils/intersect.sqlイoriginal_file_pathコmacros/utils/intersect.sqlゥunique_idシmacro.dbt.default__intersectゥmacro_sqlル?{% macro default__intersect() %}
intersect
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムnvウsupported_languagesタセmacro.dbt.escape_single_quotes゙、nameエescape_single_quotesュresource_type・macroャpackage_name」dbt、pathル%macros/utils/escape_single_quotes.sqlイoriginal_file_pathル%macros/utils/escape_single_quotes.sqlゥunique_idセmacro.dbt.escape_single_quotesゥmacro_sqlル鶏% macro escape_single_quotes(expression) %}
{{ return(adapter.dispatch('escape_single_quotes', 'dbt') (expression)) }}
{% endmacro %}ェdepends_on※macros胎'macro.dbt.default__escape_single_quotesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェexpression、typeタォdescriptionェcreated_atヒAレ萌BムpLウsupported_languagesタル'macro.dbt.default__escape_single_quotes゙、nameスdefault__escape_single_quotesュresource_type・macroャpackage_name」dbt、pathル%macros/utils/escape_single_quotes.sqlイoriginal_file_pathル%macros/utils/escape_single_quotes.sqlゥunique_idル'macro.dbt.default__escape_single_quotesゥmacro_sqlルk{% macro default__escape_single_quotes(expression) -%}
{{ expression | replace("'","''") }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェexpression、typeタォdescriptionェcreated_atヒAレ萌Bムq?ウsupported_languagesタッmacro.dbt.right゙、name・rightュresource_type・macroャpackage_name」dbt、pathカmacros/utils/right.sqlイoriginal_file_pathカmacros/utils/right.sqlゥunique_idッmacro.dbt.rightゥmacro_sqlル府% macro right(string_text, length_expression) -%}
{{ return(adapter.dispatch('right', 'dbt') (string_text, length_expression)) }}
{% endmacro %}ェdepends_on※macros尊macro.dbt.default__rightォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameォstring_text、typeタォdescriptionΖnameアlength_expression、typeタォdescriptionェcreated_atヒAレ萌Bムsウsupported_languagesタクmacro.dbt.default__right゙、nameョdefault__rightュresource_type・macroャpackage_name」dbt、pathカmacros/utils/right.sqlイoriginal_file_pathカmacros/utils/right.sqlゥunique_idクmacro.dbt.default__rightゥmacro_sqlル几% macro default__right(string_text, length_expression) %}
right(
{{ string_text }},
{{ length_expression }}
)
{%- endmacro -%}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameォstring_text、typeタォdescriptionΖnameアlength_expression、typeタォdescriptionェcreated_atヒAレ萌Bムtウsupported_languagesタアmacro.dbt.listagg゙、nameァlistaggュresource_type・macroャpackage_name」dbt、pathクmacros/utils/listagg.sqlイoriginal_file_pathクmacros/utils/listagg.sqlゥunique_idアmacro.dbt.listaggゥmacro_sqlルヤ{% macro listagg(measure, delimiter_text="','", order_by_clause=none, limit_num=none) -%}
{{ return(adapter.dispatch('listagg', 'dbt') (measure, delimiter_text, order_by_clause, limit_num)) }}
{%- endmacro %}ェdepends_on※macros胎$macro.dbt_postgres.postgres__listaggォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameァmeasure、typeタォdescriptionΖnameョdelimiter_text、typeタォdescriptionΖnameッorder_by_clause、typeタォdescriptionΖnameゥlimit_num、typeタォdescriptionェcreated_atヒAレ萌Bムvウsupported_languagesタコmacro.dbt.default__listagg゙、nameーdefault__listaggュresource_type・macroャpackage_name」dbt、pathクmacros/utils/listagg.sqlイoriginal_file_pathクmacros/utils/listagg.sqlゥunique_idコmacro.dbt.default__listaggゥmacro_sqlレz{% macro default__listagg(measure, delimiter_text, order_by_clause, limit_num) -%}
{% if limit_num -%}
array_to_string(
array_slice(
array_agg(
{{ measure }}
){% if order_by_clause -%}
within group ({{ order_by_clause }})
{%- endif %}
,0
,{{ limit_num }}
),
{{ delimiter_text }}
)
{%- else %}
listagg(
{{ measure }},
{{ delimiter_text }}
)
{% if order_by_clause -%}
within group ({{ order_by_clause }})
{%- endif %}
{%- endif %}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameァmeasure、typeタォdescriptionΖnameョdelimiter_text、typeタォdescriptionΖnameッorder_by_clause、typeタォdescriptionΖnameゥlimit_num、typeタォdescriptionェcreated_atヒAレ萌Bムysupported_languagesタイmacro.dbt.datediff゙、nameィdatediffュresource_type・macroャpackage_name」dbt、pathケmacros/utils/datediff.sqlイoriginal_file_pathケmacros/utils/datediff.sqlゥunique_idイmacro.dbt.datediffゥmacro_sqlル掉% macro datediff(first_date, second_date, datepart) %}
{{ return(adapter.dispatch('datediff', 'dbt')(first_date, second_date, datepart)) }}
{% endmacro %}ェdepends_on※macros胎%macro.dbt_postgres.postgres__datediffォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameェfirst_date、typeタォdescriptionΖnameォsecond_date、typeタォdescriptionΖnameィdatepart、typeタォdescriptionェcreated_atヒAレ萌Bム{糞supported_languagesタサmacro.dbt.default__datediff゙、nameアdefault__datediffュresource_type・macroャpackage_name」dbt、pathケmacros/utils/datediff.sqlイoriginal_file_pathケmacros/utils/datediff.sqlゥunique_idサmacro.dbt.default__datediffゥmacro_sqlルキ{% macro default__datediff(first_date, second_date, datepart) -%}
datediff(
{{ datepart }},
{{ first_date }},
{{ second_date }}
)
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameェfirst_date、typeタォdescriptionΖnameォsecond_date、typeタォdescriptionΖnameィdatepart、typeタォdescriptionェcreated_atヒAレ萌Bム|ヲウsupported_languagesタウmacro.dbt.safe_cast゙、nameゥsafe_castュresource_type・macroャpackage_name」dbt、pathコmacros/utils/safe_cast.sqlイoriginal_file_pathコmacros/utils/safe_cast.sqlゥunique_idウmacro.dbt.safe_castゥmacro_sqlルt{% macro safe_cast(field, type) %}
{{ return(adapter.dispatch('safe_cast', 'dbt') (field, type)) }}
{% endmacro %}ェdepends_on※macros他macro.dbt.default__safe_castォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・field、typeタォdescriptionΖname、type、typeタォdescriptionェcreated_atヒAレ萌Bム~supported_languagesタシmacro.dbt.default__safe_cast゙、nameイdefault__safe_castュresource_type・macroャpackage_name」dbt、pathコmacros/utils/safe_cast.sqlイoriginal_file_pathコmacros/utils/safe_cast.sqlゥunique_idシmacro.dbt.default__safe_castゥmacro_sqlルウ{% macro default__safe_cast(field, type) %}
{# most databases don't support this function yet
so we just need to use cast #}
cast({{field}} as {{type}})
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・field、typeタォdescriptionΖname、type、typeタォdescriptionェcreated_atヒAレ萌Bムoウsupported_languagesターmacro.dbt.equals゙、nameヲequalsュresource_type・macroャpackage_name」dbt、pathキmacros/utils/equals.sqlイoriginal_file_pathキmacros/utils/equals.sqlゥunique_idーmacro.dbt.equalsゥmacro_sqlルs{% macro equals(expr1, expr2) %}
{{ return(adapter.dispatch('equals', 'dbt') (expr1, expr2)) }}
{%- endmacro %}ェdepends_on※macros胎#macro.dbt_postgres.postgres__equalsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・expr1、typeタォdescriptionΖname・expr2、typeタォdescriptionェcreated_atヒAレ萌Bム÷ウsupported_languagesタケmacro.dbt.default__equals゙、nameッdefault__equalsュresource_type・macroャpackage_name」dbt、pathキmacros/utils/equals.sqlイoriginal_file_pathキmacros/utils/equals.sqlゥunique_idケmacro.dbt.default__equalsゥmacro_sqlレ>{% macro default__equals(expr1, expr2) -%}
{%- if adapter.behavior.enable_truthy_nulls_equals_macro.no_warn %}
case when (({{ expr1 }} = {{ expr2 }}) or ({{ expr1 }} is null and {{ expr2 }} is null))
then 0
else 1
end = 0
{%- else -%}
({{ expr1 }} = {{ expr2 }})
{%- endif %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・expr1、typeタォdescriptionΖname・expr2、typeタォdescriptionェcreated_atヒAレ萌Bムピウsupported_languagesタョmacro.dbt.hash゙、name、hashュresource_type・macroャpackage_name」dbt、pathオmacros/utils/hash.sqlイoriginal_file_pathオmacros/utils/hash.sqlゥunique_idョmacro.dbt.hashゥmacro_sqlル`{% macro hash(field) -%}
{{ return(adapter.dispatch('hash', 'dbt') (field)) }}
{%- endmacro %}ェdepends_on※macros孫macro.dbt.default__hashォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・field、typeタォdescriptionェcreated_atヒAレ萌Bム#ウsupported_languagesタキmacro.dbt.default__hash゙、nameュdefault__hashュresource_type・macroャpackage_name」dbt、pathオmacros/utils/hash.sqlイoriginal_file_pathオmacros/utils/hash.sqlゥunique_idキmacro.dbt.default__hashゥmacro_sqlルy{% macro default__hash(field) -%}
md5(cast({{ field }} as {{ api.Column.translate_type('string') }}))
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・field、typeタォdescriptionェcreated_atヒAレ萌Bム+ウsupported_languagesタサmacro.dbt.cast_bool_to_text゙、nameアcast_bool_to_textュresource_type・macroャpackage_name」dbt、pathル"macros/utils/cast_bool_to_text.sqlイoriginal_file_pathル"macros/utils/cast_bool_to_text.sqlゥunique_idサmacro.dbt.cast_bool_to_textゥmacro_sqlルp{% macro cast_bool_to_text(field) %}
{{ adapter.dispatch('cast_bool_to_text', 'dbt') (field) }}
{% endmacro %}ェdepends_on※macros胎$macro.dbt.default__cast_bool_to_textォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・field、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタル$macro.dbt.default__cast_bool_to_text゙、nameコdefault__cast_bool_to_textュresource_type・macroャpackage_name」dbt、pathル"macros/utils/cast_bool_to_text.sqlイoriginal_file_pathル"macros/utils/cast_bool_to_text.sqlゥunique_idル$macro.dbt.default__cast_bool_to_textゥmacro_sqlル{% macro default__cast_bool_to_text(field) %}
cast({{ field }} as {{ api.Column.translate_type('string') }})
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・field、typeタォdescriptionェcreated_atヒAレ萌Bム鞍ウsupported_languagesタョmacro.dbt.cast゙、name、castュresource_type・macroャpackage_name」dbt、pathオmacros/utils/cast.sqlイoriginal_file_pathオmacros/utils/cast.sqlゥunique_idョmacro.dbt.castゥmacro_sqlルj{% macro cast(field, type) %}
{{ return(adapter.dispatch('cast', 'dbt') (field, type)) }}
{% endmacro %}ェdepends_on※macros孫macro.dbt.default__castォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・field、typeタォdescriptionΖname、type、typeタォdescriptionェcreated_atヒAレ萌Bム刈ウsupported_languagesタキmacro.dbt.default__cast゙、nameュdefault__castュresource_type・macroャpackage_name」dbt、pathオmacros/utils/cast.sqlイoriginal_file_pathオmacros/utils/cast.sqlゥunique_idキmacro.dbt.default__castゥmacro_sqlルU{% macro default__cast(field, type) %}
cast({{field}} as {{type}})
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・field、typeタォdescriptionΖname、type、typeタォdescriptionェcreated_atヒAレ萌Bム宮ウsupported_languagesタウmacro.dbt.any_value゙、nameゥany_valueュresource_type・macroャpackage_name」dbt、pathコmacros/utils/any_value.sqlイoriginal_file_pathコmacros/utils/any_value.sqlゥunique_idウmacro.dbt.any_valueゥmacro_sqlルu{% macro any_value(expression) -%}
{{ return(adapter.dispatch('any_value', 'dbt') (expression)) }}
{% endmacro %}ェdepends_on※macros胎&macro.dbt_postgres.postgres__any_valueォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェexpression、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタシmacro.dbt.default__any_value゙、nameイdefault__any_valueュresource_type・macroャpackage_name」dbt、pathコmacros/utils/any_value.sqlイoriginal_file_pathコmacros/utils/any_value.sqlゥunique_idシmacro.dbt.default__any_valueゥmacro_sqlル]{% macro default__any_value(expression) -%}
any_value({{ expression }})
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェexpression、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタイmacro.dbt.position゙、nameィpositionュresource_type・macroャpackage_name」dbt、pathケmacros/utils/position.sqlイoriginal_file_pathケmacros/utils/position.sqlゥunique_idイmacro.dbt.positionゥmacro_sqlル府% macro position(substring_text, string_text) -%}
{{ return(adapter.dispatch('position', 'dbt') (substring_text, string_text)) }}
{% endmacro %}ェdepends_on※macros遜macro.dbt.default__positionォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameョsubstring_text、typeタォdescriptionΖnameォstring_text、typeタォdescriptionェcreated_atヒAレ萌Bム譲ウsupported_languagesタサmacro.dbt.default__position゙、nameアdefault__positionュresource_type・macroャpackage_name」dbt、pathケmacros/utils/position.sqlイoriginal_file_pathケmacros/utils/position.sqlゥunique_idサmacro.dbt.default__positionゥmacro_sqlル怒% macro default__position(substring_text, string_text) %}
position(
{{ substring_text }} in {{ string_text }}
)
{%- endmacro -%}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameョsubstring_text、typeタォdescriptionΖnameォstring_text、typeタォdescriptionェcreated_atヒAレ萌Bム其ウsupported_languagesタクmacro.dbt.string_literal゙、nameョstring_literalュresource_type・macroャpackage_name」dbt、pathクmacros/utils/literal.sqlイoriginal_file_pathクmacros/utils/literal.sqlゥunique_idクmacro.dbt.string_literalゥmacro_sqlルx{%- macro string_literal(value) -%}
{{ return(adapter.dispatch('string_literal', 'dbt') (value)) }}
{%- endmacro -%}
ェdepends_on※macros胎!macro.dbt.default__string_literalォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・value、typeタォdescriptionェcreated_atヒAレ萌Bム党ウsupported_languagesタル!macro.dbt.default__string_literal゙、nameキdefault__string_literalュresource_type・macroャpackage_name」dbt、pathクmacros/utils/literal.sqlイoriginal_file_pathクmacros/utils/literal.sqlゥunique_idル!macro.dbt.default__string_literalゥmacro_sqlルM{% macro default__string_literal(value) -%}
'{{ value }}'
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・value、typeタォdescriptionェcreated_atヒAレ萌Bム:ウsupported_languagesタオmacro.dbt.type_string゙、nameォtype_stringュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idオmacro.dbt.type_stringゥmacro_sqlルi
{%- macro type_string() -%}
{{ return(adapter.dispatch('type_string', 'dbt')()) }}
{%- endmacro -%}
ェdepends_on※macros太macro.dbt.default__type_stringォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム冏ウsupported_languagesタセmacro.dbt.default__type_string゙、nameエdefault__type_stringュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idセmacro.dbt.default__type_stringゥmacro_sqlルg{% macro default__type_string() %}
{{ return(api.Column.translate_type("string")) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム喞ウsupported_languagesタクmacro.dbt.type_timestamp゙、nameョtype_timestampュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idクmacro.dbt.type_timestampゥmacro_sqlルo
{%- macro type_timestamp() -%}
{{ return(adapter.dispatch('type_timestamp', 'dbt')()) }}
{%- endmacro -%}
ェdepends_on※macros胎!macro.dbt.default__type_timestampォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム斈ウsupported_languagesタル!macro.dbt.default__type_timestamp゙、nameキdefault__type_timestampュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idル!macro.dbt.default__type_timestampゥmacro_sqlルm{% macro default__type_timestamp() %}
{{ return(api.Column.translate_type("timestamp")) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム很ウsupported_languagesタエmacro.dbt.type_float゙、nameェtype_floatュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idエmacro.dbt.type_floatゥmacro_sqlルg
{%- macro type_float() -%}
{{ return(adapter.dispatch('type_float', 'dbt')()) }}
{%- endmacro -%}
ェdepends_on※macros多macro.dbt.default__type_floatォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム挂ウsupported_languagesタスmacro.dbt.default__type_float゙、nameウdefault__type_floatュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idスmacro.dbt.default__type_floatゥmacro_sqlルe{% macro default__type_float() %}
{{ return(api.Column.translate_type("float")) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム檜ウsupported_languagesタカmacro.dbt.type_numeric゙、nameャtype_numericュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idカmacro.dbt.type_numericゥmacro_sqlルk
{%- macro type_numeric() -%}
{{ return(adapter.dispatch('type_numeric', 'dbt')()) }}
{%- endmacro -%}
ェdepends_on※macros汰macro.dbt.default__type_numericォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム泯ウsupported_languagesタソmacro.dbt.default__type_numeric゙、nameオdefault__type_numericュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idソmacro.dbt.default__type_numericゥmacro_sqlルn{% macro default__type_numeric() %}
{{ return(api.Column.numeric_type("numeric", 28, 6)) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムヌウsupported_languagesタオmacro.dbt.type_bigint゙、nameォtype_bigintュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idオmacro.dbt.type_bigintゥmacro_sqlルi
{%- macro type_bigint() -%}
{{ return(adapter.dispatch('type_bigint', 'dbt')()) }}
{%- endmacro -%}
ェdepends_on※macros太macro.dbt.default__type_bigintォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム。ヌウsupported_languagesタセmacro.dbt.default__type_bigint゙、nameエdefault__type_bigintュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idセmacro.dbt.default__type_bigintゥmacro_sqlルg{% macro default__type_bigint() %}
{{ return(api.Column.translate_type("bigint")) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム「ツウsupported_languagesタイmacro.dbt.type_int゙、nameィtype_intュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idイmacro.dbt.type_intゥmacro_sqlルc
{%- macro type_int() -%}
{{ return(adapter.dispatch('type_int', 'dbt')()) }}
{%- endmacro -%}
ェdepends_on※macros遜macro.dbt.default__type_intォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム」コウsupported_languagesタサmacro.dbt.default__type_int゙、nameアdefault__type_intュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idサmacro.dbt.default__type_intゥmacro_sqlルi{%- macro default__type_int() -%}
{{ return(api.Column.translate_type("integer")) }}
{%- endmacro -%}
ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム、ィウsupported_languagesタカmacro.dbt.type_boolean゙、nameャtype_booleanュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idカmacro.dbt.type_booleanゥmacro_sqlルk
{%- macro type_boolean() -%}
{{ return(adapter.dispatch('type_boolean', 'dbt')()) }}
{%- endmacro -%}
ェdepends_on※macros汰macro.dbt.default__type_booleanォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bム・ュウsupported_languagesタソmacro.dbt.default__type_boolean゙、nameオdefault__type_booleanュresource_type・macroャpackage_name」dbt、pathサmacros/utils/data_types.sqlイoriginal_file_pathサmacros/utils/data_types.sqlゥunique_idソmacro.dbt.default__type_booleanゥmacro_sqlルm{%- macro default__type_boolean() -%}
{{ return(api.Column.translate_type("boolean")) }}
{%- endmacro -%}
ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムヲ撞supported_languagesタカmacro.dbt.array_concat゙、nameャarray_concatュresource_type・macroャpackage_name」dbt、pathスmacros/utils/array_concat.sqlイoriginal_file_pathスmacros/utils/array_concat.sqlゥunique_idカmacro.dbt.array_concatゥmacro_sqlル% macro array_concat(array_1, array_2) -%}
{{ return(adapter.dispatch('array_concat', 'dbt')(array_1, array_2)) }}
{%- endmacro %}ェdepends_on※macros汰macro.dbt.default__array_concatォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameァarray_1、typeタォdescriptionΖnameァarray_2、typeタォdescriptionェcreated_atヒAレ萌Bムィzウsupported_languagesタソmacro.dbt.default__array_concat゙、nameオdefault__array_concatュresource_type・macroャpackage_name」dbt、pathスmacros/utils/array_concat.sqlイoriginal_file_pathスmacros/utils/array_concat.sqlゥunique_idソmacro.dbt.default__array_concatゥmacro_sqlルp{% macro default__array_concat(array_1, array_2) -%}
array_cat({{ array_1 }}, {{ array_2 }})
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameァarray_1、typeタォdescriptionΖnameァarray_2、typeタォdescriptionェcreated_atヒAレ萌Bムゥ]ウsupported_languagesタアmacro.dbt.bool_or゙、nameァbool_orュresource_type・macroャpackage_name」dbt、pathクmacros/utils/bool_or.sqlイoriginal_file_pathクmacros/utils/bool_or.sqlゥunique_idアmacro.dbt.bool_orゥmacro_sqlルq{% macro bool_or(expression) -%}
{{ return(adapter.dispatch('bool_or', 'dbt') (expression)) }}
{% endmacro %}ェdepends_on※macros村macro.dbt.default__bool_orォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェexpression、typeタォdescriptionェcreated_atヒAレ萌Bムェsupported_languagesタコmacro.dbt.default__bool_or゙、nameーdefault__bool_orュresource_type・macroャpackage_name」dbt、pathクmacros/utils/bool_or.sqlイoriginal_file_pathクmacros/utils/bool_or.sqlゥunique_idコmacro.dbt.default__bool_orゥmacro_sqlルY{% macro default__bool_or(expression) -%}
bool_or({{ expression }})
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェexpression、typeタォdescriptionェcreated_atヒAレ萌Bムォ、ウsupported_languagesタイmacro.dbt.last_day゙、nameィlast_dayュresource_type・macroャpackage_name」dbt、pathケmacros/utils/last_day.sqlイoriginal_file_pathケmacros/utils/last_day.sqlゥunique_idイmacro.dbt.last_dayゥmacro_sqlルx{% macro last_day(date, datepart) %}
{{ return(adapter.dispatch('last_day', 'dbt') (date, datepart)) }}
{% endmacro %}ェdepends_on※macros胎%macro.dbt_postgres.postgres__last_dayォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name、date、typeタォdescriptionΖnameィdatepart、typeタォdescriptionェcreated_atヒAレ萌Bムュァウsupported_languagesタコmacro.dbt.default_last_day゙、nameーdefault_last_dayュresource_type・macroャpackage_name」dbt、pathケmacros/utils/last_day.sqlイoriginal_file_pathケmacros/utils/last_day.sqlゥunique_idコmacro.dbt.default_last_dayゥmacro_sqlルミ
{%- macro default_last_day(date, datepart) -%}
cast(
{{dbt.dateadd('day', '-1',
dbt.dateadd(datepart, '1', dbt.date_trunc(datepart, date))
)}}
as date)
{%- endmacro -%}
ェdepends_on※macros蝶macro.dbt.dateaddエmacro.dbt.date_truncォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name、date、typeタォdescriptionΖnameィdatepart、typeタォdescriptionェcreated_atヒAレ萌Bムーウsupported_languagesタサmacro.dbt.default__last_day゙、nameアdefault__last_dayュresource_type・macroャpackage_name」dbt、pathケmacros/utils/last_day.sqlイoriginal_file_pathケmacros/utils/last_day.sqlゥunique_idサmacro.dbt.default__last_dayゥmacro_sqlルk{% macro default__last_day(date, datepart) -%}
{{dbt.default_last_day(date, datepart)}}
{%- endmacro %}ェdepends_on※macros村macro.dbt.default_last_dayォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name、date、typeタォdescriptionΖnameィdatepart、typeタォdescriptionェcreated_atヒAレ萌Bムアウsupported_languagesタエmacro.dbt.split_part゙、nameェsplit_partュresource_type・macroャpackage_name」dbt、pathサmacros/utils/split_part.sqlイoriginal_file_pathサmacros/utils/split_part.sqlゥunique_idエmacro.dbt.split_partゥmacro_sqlルー{% macro split_part(string_text, delimiter_text, part_number) %}
{{ return(adapter.dispatch('split_part', 'dbt') (string_text, delimiter_text, part_number)) }}
{% endmacro %}ェdepends_on※macros胎'macro.dbt_postgres.postgres__split_partォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameォstring_text、typeタォdescriptionΖnameョdelimiter_text、typeタォdescriptionΖnameォpart_number、typeタォdescriptionェcreated_atヒAレ萌Bムウ乙supported_languagesタスmacro.dbt.default__split_part゙、nameウdefault__split_partュresource_type・macroャpackage_name」dbt、pathサmacros/utils/split_part.sqlイoriginal_file_pathサmacros/utils/split_part.sqlゥunique_idスmacro.dbt.default__split_partゥmacro_sqlルヌ{% macro default__split_part(string_text, delimiter_text, part_number) %}
split_part(
{{ string_text }},
{{ delimiter_text }},
{{ part_number }}
)
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameォstring_text、typeタォdescriptionΖnameョdelimiter_text、typeタォdescriptionΖnameォpart_number、typeタォdescriptionェcreated_atヒAレ萌Bムエ楜supported_languagesタセmacro.dbt._split_part_negative゙、nameエ_split_part_negativeュresource_type・macroャpackage_name」dbt、pathサmacros/utils/split_part.sqlイoriginal_file_pathサmacros/utils/split_part.sqlゥunique_idセmacro.dbt._split_part_negativeゥmacro_sqlレN{% macro _split_part_negative(string_text, delimiter_text, part_number) %}
split_part(
{{ string_text }},
{{ delimiter_text }},
length({{ string_text }})
- length(
replace({{ string_text }}, {{ delimiter_text }}, '')
) + 2 + {{ part_number }}
)
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameォstring_text、typeタォdescriptionΖnameョdelimiter_text、typeタォdescriptionΖnameォpart_number、typeタォdescriptionェcreated_atヒAレ萌Bムオウsupported_languagesタエmacro.dbt.date_trunc゙、nameェdate_truncュresource_type・macroャpackage_name」dbt、pathサmacros/utils/date_trunc.sqlイoriginal_file_pathサmacros/utils/date_trunc.sqlゥunique_idエmacro.dbt.date_truncゥmacro_sqlル~{% macro date_trunc(datepart, date) -%}
{{ return(adapter.dispatch('date_trunc', 'dbt') (datepart, date)) }}
{%- endmacro %}ェdepends_on※macros多macro.dbt.default__date_truncォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィdatepart、typeタォdescriptionΖname、date、typeタォdescriptionェcreated_atヒAレ萌Bムキフウsupported_languagesタスmacro.dbt.default__date_trunc゙、nameウdefault__date_truncュresource_type・macroャpackage_name」dbt、pathサmacros/utils/date_trunc.sqlイoriginal_file_pathサmacros/utils/date_trunc.sqlゥunique_idスmacro.dbt.default__date_truncゥmacro_sqlルi{% macro default__date_trunc(datepart, date) -%}
date_trunc('{{datepart}}', {{date}})
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィdatepart、typeタォdescriptionΖname、date、typeタォdescriptionェcreated_atヒAレ萌Bムクョウsupported_languagesタケmacro.dbt.array_construct゙、nameッarray_constructュresource_type・macroャpackage_name」dbt、pathル macros/utils/array_construct.sqlイoriginal_file_pathル macros/utils/array_construct.sqlゥunique_idケmacro.dbt.array_constructゥmacro_sqlルオ{% macro array_construct(inputs=[], data_type=api.Column.translate_type('integer')) -%}
{{ return(adapter.dispatch('array_construct', 'dbt')(inputs, data_type)) }}
{%- endmacro %}ェdepends_on※macros胎"macro.dbt.default__array_constructォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameヲinputs、typeタォdescriptionΖnameゥdata_type、typeタォdescriptionェcreated_atヒAレ萌Bムサウsupported_languagesタル"macro.dbt.default__array_construct゙、nameクdefault__array_constructュresource_type・macroャpackage_name」dbt、pathル macros/utils/array_construct.sqlイoriginal_file_pathル macros/utils/array_construct.sqlゥunique_idル"macro.dbt.default__array_constructゥmacro_sqlルノ{% macro default__array_construct(inputs, data_type) -%}
{% if inputs|length > 0 %}
array[ {{ inputs|join(' , ') }} ]
{% else %}
array[]::{{data_type}}[]
{% endif %}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameヲinputs、typeタォdescriptionΖnameゥdata_type、typeタォdescriptionェcreated_atヒAレ萌Bムシモウsupported_languagesタカmacro.dbt.array_append゙、nameャarray_appendュresource_type・macroャpackage_name」dbt、pathスmacros/utils/array_append.sqlイoriginal_file_pathスmacros/utils/array_append.sqlゥunique_idカmacro.dbt.array_appendゥmacro_sqlル閲% macro array_append(array, new_element) -%}
{{ return(adapter.dispatch('array_append', 'dbt')(array, new_element)) }}
{%- endmacro %}ェdepends_on※macros汰macro.dbt.default__array_appendォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・array、typeタォdescriptionΖnameォnew_element、typeタォdescriptionェcreated_atヒAレ萌Bムセコウsupported_languagesタソmacro.dbt.default__array_append゙、nameオdefault__array_appendュresource_type・macroャpackage_name」dbt、pathスmacros/utils/array_append.sqlイoriginal_file_pathスmacros/utils/array_append.sqlゥunique_idソmacro.dbt.default__array_appendゥmacro_sqlルw{% macro default__array_append(array, new_element) -%}
array_append({{ array }}, {{ new_element }})
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name・array、typeタォdescriptionΖnameォnew_element、typeタォdescriptionェcreated_atヒAレ萌Bムソ亠supported_languagesタキmacro.dbt.create_schema゙、nameュcreate_schemaュresource_type・macroャpackage_name」dbt、pathコmacros/adapters/schema.sqlイoriginal_file_pathコmacros/adapters/schema.sqlゥunique_idキmacro.dbt.create_schemaゥmacro_sqlルn{% macro create_schema(relation) -%}
{{ adapter.dispatch('create_schema', 'dbt')(relation) }}
{% endmacro %}ェdepends_on※macros胎*macro.dbt_postgres.postgres__create_schemaォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムチャウsupported_languagesタル macro.dbt.default__create_schema゙、nameカdefault__create_schemaュresource_type・macroャpackage_name」dbt、pathコmacros/adapters/schema.sqlイoriginal_file_pathコmacros/adapters/schema.sqlゥunique_idル macro.dbt.default__create_schemaゥmacro_sqlルコ{% macro default__create_schema(relation) -%}
{%- call statement('create_schema') -%}
create schema if not exists {{ relation.without_identifier() }}
{% endcall %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムツラウsupported_languagesタオmacro.dbt.drop_schema゙、nameォdrop_schemaュresource_type・macroャpackage_name」dbt、pathコmacros/adapters/schema.sqlイoriginal_file_pathコmacros/adapters/schema.sqlゥunique_idオmacro.dbt.drop_schemaゥmacro_sqlルj{% macro drop_schema(relation) -%}
{{ adapter.dispatch('drop_schema', 'dbt')(relation) }}
{% endmacro %}ェdepends_on※macros胎(macro.dbt_postgres.postgres__drop_schemaォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムテメウsupported_languagesタセmacro.dbt.default__drop_schema゙、nameエdefault__drop_schemaュresource_type・macroャpackage_name」dbt、pathコmacros/adapters/schema.sqlイoriginal_file_pathコmacros/adapters/schema.sqlゥunique_idセmacro.dbt.default__drop_schemaゥmacro_sqlルク{% macro default__drop_schema(relation) -%}
{%- call statement('drop_schema') -%}
drop schema if exists {{ relation.without_identifier() }} cascade
{% endcall %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムトsupported_languagesタサmacro.dbt.current_timestamp゙、nameアcurrent_timestampュresource_type・macroャpackage_name」dbt、pathセmacros/adapters/timestamps.sqlイoriginal_file_pathセmacros/adapters/timestamps.sqlゥunique_idサmacro.dbt.current_timestampゥmacro_sqlルm{%- macro current_timestamp() -%}
{{ adapter.dispatch('current_timestamp', 'dbt')() }}
{%- endmacro -%}
ェdepends_on※macros胎.macro.dbt_postgres.postgres__current_timestampォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムネウsupported_languagesタル$macro.dbt.default__current_timestamp゙、nameコdefault__current_timestampュresource_type・macroャpackage_name」dbt、pathセmacros/adapters/timestamps.sqlイoriginal_file_pathセmacros/adapters/timestamps.sqlゥunique_idル$macro.dbt.default__current_timestampゥmacro_sqlルー{% macro default__current_timestamp() -%}
{{ exceptions.raise_not_implemented(
'current_timestamp macro not implemented for adapter ' + adapter.type()) }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムネsupported_languagesタサmacro.dbt.snapshot_get_time゙、nameアsnapshot_get_timeュresource_type・macroャpackage_name」dbt、pathセmacros/adapters/timestamps.sqlイoriginal_file_pathセmacros/adapters/timestamps.sqlゥunique_idサmacro.dbt.snapshot_get_timeゥmacro_sqlルo
{%- macro snapshot_get_time() -%}
{{ adapter.dispatch('snapshot_get_time', 'dbt')() }}
{%- endmacro -%}
ェdepends_on※macros胎.macro.dbt_postgres.postgres__snapshot_get_timeォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムノレウsupported_languagesタル$macro.dbt.default__snapshot_get_time゙、nameコdefault__snapshot_get_timeュresource_type・macroャpackage_name」dbt、pathセmacros/adapters/timestamps.sqlイoriginal_file_pathセmacros/adapters/timestamps.sqlゥunique_idル$macro.dbt.default__snapshot_get_timeゥmacro_sqlルU{% macro default__snapshot_get_time() %}
{{ current_timestamp() }}
{% endmacro %}ェdepends_on※macros遜macro.dbt.current_timestampォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムハさsupported_languagesタル)macro.dbt.get_snapshot_get_time_data_type゙、nameソget_snapshot_get_time_data_typeュresource_type・macroャpackage_name」dbt、pathセmacros/adapters/timestamps.sqlイoriginal_file_pathセmacros/adapters/timestamps.sqlゥunique_idル)macro.dbt.get_snapshot_get_time_data_typeゥmacro_sqlレェ{% macro get_snapshot_get_time_data_type() %}
{% set snapshot_time = adapter.dispatch('snapshot_get_time', 'dbt')() %}
{% set time_data_type_sql = 'select ' ~ snapshot_time ~ ' as dbt_snapshot_time' %}
{% set snapshot_time_column_schema = get_column_schema_from_query(time_data_type_sql) %}
{% set time_data_type = snapshot_time_column_schema[0].dtype %}
{{ return(time_data_type or none) }}
{% endmacro %}ェdepends_on※macros峠macro.dbt.snapshot_get_timeル.macro.dbt_postgres.postgres__snapshot_get_timeル&macro.dbt.get_column_schema_from_queryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムヘ ウsupported_languagesタル&macro.dbt.current_timestamp_backcompat゙、nameシcurrent_timestamp_backcompatュresource_type・macroャpackage_name」dbt、pathセmacros/adapters/timestamps.sqlイoriginal_file_pathセmacros/adapters/timestamps.sqlゥunique_idル&macro.dbt.current_timestamp_backcompatゥmacro_sqlル% macro current_timestamp_backcompat() %}
{{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎9macro.dbt_postgres.postgres__current_timestamp_backcompatォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムホウsupported_languagesタル/macro.dbt.default__current_timestamp_backcompat゙、nameル%default__current_timestamp_backcompatュresource_type・macroャpackage_name」dbt、pathセmacros/adapters/timestamps.sqlイoriginal_file_pathセmacros/adapters/timestamps.sqlゥunique_idル/macro.dbt.default__current_timestamp_backcompatゥmacro_sqlルc{% macro default__current_timestamp_backcompat() %}
current_timestamp::timestamp
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムホ「ウsupported_languagesタル-macro.dbt.current_timestamp_in_utc_backcompat゙、nameル#current_timestamp_in_utc_backcompatュresource_type・macroャpackage_name」dbt、pathセmacros/adapters/timestamps.sqlイoriginal_file_pathセmacros/adapters/timestamps.sqlゥunique_idル-macro.dbt.current_timestamp_in_utc_backcompatゥmacro_sqlル怒% macro current_timestamp_in_utc_backcompat() %}
{{ return(adapter.dispatch('current_timestamp_in_utc_backcompat', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎@macro.dbt_postgres.postgres__current_timestamp_in_utc_backcompatォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムマネウsupported_languagesタル6macro.dbt.default__current_timestamp_in_utc_backcompat゙、nameル,default__current_timestamp_in_utc_backcompatュresource_type・macroャpackage_name」dbt、pathセmacros/adapters/timestamps.sqlイoriginal_file_pathセmacros/adapters/timestamps.sqlゥunique_idル6macro.dbt.default__current_timestamp_in_utc_backcompatゥmacro_sqlル府% macro default__current_timestamp_in_utc_backcompat() %}
{{ return(adapter.dispatch('current_timestamp_backcompat', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros壷&macro.dbt.current_timestamp_backcompatル9macro.dbt_postgres.postgres__current_timestamp_backcompatォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムムヲウsupported_languagesタセmacro.dbt.get_create_index_sql゙、nameエget_create_index_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/indexes.sqlイoriginal_file_pathサmacros/adapters/indexes.sqlゥunique_idセmacro.dbt.get_create_index_sqlゥmacro_sqlル悳% macro get_create_index_sql(relation, index_dict) -%}
{{ return(adapter.dispatch('get_create_index_sql', 'dbt')(relation, index_dict)) }}
{% endmacro %}ェdepends_on※macros胎1macro.dbt_postgres.postgres__get_create_index_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameェindex_dict、typeタォdescriptionェcreated_atヒAレ萌Bムヤ魑supported_languagesタル'macro.dbt.default__get_create_index_sql゙、nameスdefault__get_create_index_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/indexes.sqlイoriginal_file_pathサmacros/adapters/indexes.sqlゥunique_idル'macro.dbt.default__get_create_index_sqlゥmacro_sqlルg{% macro default__get_create_index_sql(relation, index_dict) -%}
{% do return(None) %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameェindex_dict、typeタォdescriptionェcreated_atヒAレ萌Bムユマウsupported_languagesタクmacro.dbt.create_indexes゙、nameョcreate_indexesュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/indexes.sqlイoriginal_file_pathサmacros/adapters/indexes.sqlゥunique_idクmacro.dbt.create_indexesゥmacro_sqlルq{% macro create_indexes(relation) -%}
{{ adapter.dispatch('create_indexes', 'dbt')(relation) }}
{%- endmacro %}ェdepends_on※macros胎!macro.dbt.default__create_indexesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムヨリウsupported_languagesタル!macro.dbt.default__create_indexes゙、nameキdefault__create_indexesュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/indexes.sqlイoriginal_file_pathサmacros/adapters/indexes.sqlゥunique_idル!macro.dbt.default__create_indexesゥmacro_sqlレR{% macro default__create_indexes(relation) -%}
{%- set _indexes = config.get('indexes', default=[]) -%}
{% for _index_dict in _indexes %}
{% set create_index_sql = get_create_index_sql(relation, _index_dict) %}
{% if create_index_sql %}
{% do run_query(create_index_sql) %}
{% endif %}
{% endfor %}
{% endmacro %}ェdepends_on※macros沈macro.dbt.get_create_index_sqlウmacro.dbt.run_queryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌BムルDウsupported_languagesタシmacro.dbt.get_drop_index_sql゙、nameイget_drop_index_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/indexes.sqlイoriginal_file_pathサmacros/adapters/indexes.sqlゥunique_idシmacro.dbt.get_drop_index_sqlゥmacro_sqlル怒% macro get_drop_index_sql(relation, index_name) -%}
{{ adapter.dispatch('get_drop_index_sql', 'dbt')(relation, index_name) }}
{%- endmacro %}ェdepends_on※macros胎/macro.dbt_postgres.postgres__get_drop_index_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameェindex_name、typeタォdescriptionェcreated_atヒAレ萌Bムレウsupported_languagesタル%macro.dbt.default__get_drop_index_sql゙、nameサdefault__get_drop_index_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/indexes.sqlイoriginal_file_pathサmacros/adapters/indexes.sqlゥunique_idル%macro.dbt.default__get_drop_index_sqlゥmacro_sqlルコ{% macro default__get_drop_index_sql(relation, index_name) -%}
{{ exceptions.raise_compiler_error("`get_drop_index_sql has not been implemented for this adapter.") }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameェindex_name、typeタォdescriptionェcreated_atヒAレ萌Bムロfウsupported_languagesタセmacro.dbt.get_show_indexes_sql゙、nameエget_show_indexes_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/indexes.sqlイoriginal_file_pathサmacros/adapters/indexes.sqlゥunique_idセmacro.dbt.get_show_indexes_sqlゥmacro_sqlル{% macro get_show_indexes_sql(relation) -%}
{{ adapter.dispatch('get_show_indexes_sql', 'dbt')(relation) }}
{%- endmacro %}ェdepends_on※macros胎1macro.dbt_postgres.postgres__get_show_indexes_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムワbウsupported_languagesタル'macro.dbt.default__get_show_indexes_sql゙、nameスdefault__get_show_indexes_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/indexes.sqlイoriginal_file_pathサmacros/adapters/indexes.sqlゥunique_idル'macro.dbt.default__get_show_indexes_sqlゥmacro_sqlルイ{% macro default__get_show_indexes_sql(relation) -%}
{{ exceptions.raise_compiler_error("`get_show_indexes_sql has not been implemented for this adapter.") }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムン"ウsupported_languagesタル$macro.dbt.make_intermediate_relation゙、nameコmake_intermediate_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idル$macro.dbt.make_intermediate_relationゥmacro_sqlルオ{% macro make_intermediate_relation(base_relation, suffix='__dbt_tmp') %}
{{ return(adapter.dispatch('make_intermediate_relation', 'dbt')(base_relation, suffix)) }}
{% endmacro %}ェdepends_on※macros胎7macro.dbt_postgres.postgres__make_intermediate_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュbase_relation、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionェcreated_atヒAレ萌Bム皰ウsupported_languagesタル-macro.dbt.default__make_intermediate_relation゙、nameル#default__make_intermediate_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idル-macro.dbt.default__make_intermediate_relationゥmacro_sqlル嘴% macro default__make_intermediate_relation(base_relation, suffix) %}
{{ return(default__make_temp_relation(base_relation, suffix)) }}
{% endmacro %}ェdepends_on※macros胎%macro.dbt.default__make_temp_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュbase_relation、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionェcreated_atヒAレ萌Bム箒ウsupported_languagesタシmacro.dbt.make_temp_relation゙、nameイmake_temp_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idシmacro.dbt.make_temp_relationゥmacro_sqlレt{% macro make_temp_relation(base_relation, suffix='__dbt_tmp') %}
{#-- This ensures microbatch batches get unique temp relations to avoid clobbering --#}
{% if suffix == '__dbt_tmp' and model.batch %}
{% set suffix = suffix ~ '_' ~ model.batch.id %}
{% endif %}
{{ return(adapter.dispatch('make_temp_relation', 'dbt')(base_relation, suffix)) }}
{% endmacro %}ェdepends_on※macros胎/macro.dbt_postgres.postgres__make_temp_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュbase_relation、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionェcreated_atヒAレ萌Bム:ウsupported_languagesタル%macro.dbt.default__make_temp_relation゙、nameサdefault__make_temp_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idル%macro.dbt.default__make_temp_relationゥmacro_sqlレ3{% macro default__make_temp_relation(base_relation, suffix) %}
{%- set temp_identifier = base_relation.identifier ~ suffix -%}
{%- set temp_relation = base_relation.incorporate(
path={"identifier": temp_identifier}) -%}
{{ return(temp_relation) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameュbase_relation、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionェcreated_atヒAレ萌Bム霏ウsupported_languagesタセmacro.dbt.make_backup_relation゙、nameエmake_backup_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idセmacro.dbt.make_backup_relationゥmacro_sqlルレ{% macro make_backup_relation(base_relation, backup_relation_type, suffix='__dbt_backup') %}
{{ return(adapter.dispatch('make_backup_relation', 'dbt')(base_relation, backup_relation_type, suffix)) }}
{% endmacro %}ェdepends_on※macros胎1macro.dbt_postgres.postgres__make_backup_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameュbase_relation、typeタォdescriptionΖnameエbackup_relation_type、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionェcreated_atヒAレ萌Bム黽ウsupported_languagesタル'macro.dbt.default__make_backup_relation゙、nameスdefault__make_backup_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idル'macro.dbt.default__make_backup_relationゥmacro_sqlレ本% macro default__make_backup_relation(base_relation, backup_relation_type, suffix) %}
{%- set backup_identifier = base_relation.identifier ~ suffix -%}
{%- set backup_relation = base_relation.incorporate(
path={"identifier": backup_identifier},
type=backup_relation_type
) -%}
{{ return(backup_relation) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameュbase_relation、typeタォdescriptionΖnameエbackup_relation_type、typeタォdescriptionΖnameヲsuffix、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタサmacro.dbt.truncate_relation゙、nameアtruncate_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idサmacro.dbt.truncate_relationゥmacro_sqlル~{% macro truncate_relation(relation) -%}
{{ return(adapter.dispatch('truncate_relation', 'dbt')(relation)) }}
{% endmacro %}ェdepends_on※macros胎$macro.dbt.default__truncate_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bム﨓ウsupported_languagesタル$macro.dbt.default__truncate_relation゙、nameコdefault__truncate_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idル$macro.dbt.default__truncate_relationゥmacro_sqlルゥ{% macro default__truncate_relation(relation) -%}
{% call statement('truncate_relation') -%}
truncate table {{ relation.render() }}
{%- endcall %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムⅷウsupported_languagesタル macro.dbt.get_or_create_relation゙、nameカget_or_create_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idル macro.dbt.get_or_create_relationゥmacro_sqlルシ{% macro get_or_create_relation(database, schema, identifier, type) -%}
{{ return(adapter.dispatch('get_or_create_relation', 'dbt')(database, schema, identifier, type)) }}
{% endmacro %}ェdepends_on※macros胎)macro.dbt.default__get_or_create_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameィdatabase、typeタォdescriptionΖnameヲschema、typeタォdescriptionΖnameェidentifier、typeタォdescriptionΖname、type、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタル)macro.dbt.default__get_or_create_relation゙、nameソdefault__get_or_create_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idル)macro.dbt.default__get_or_create_relationゥmacro_sqlレン{% macro default__get_or_create_relation(database, schema, identifier, type) %}
{%- set target_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) %}
{% if target_relation %}
{% do return([true, target_relation]) %}
{% endif %}
{%- set new_relation = api.Relation.create(
database=database,
schema=schema,
identifier=identifier,
type=type
) -%}
{% do return([false, new_relation]) %}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameィdatabase、typeタォdescriptionΖnameヲschema、typeタォdescriptionΖnameェidentifier、typeタォdescriptionΖname、type、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタセmacro.dbt.load_cached_relation゙、nameエload_cached_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idセmacro.dbt.load_cached_relationゥmacro_sqlルニ{% macro load_cached_relation(relation) %}
{% do return(adapter.get_relation(
database=relation.database,
schema=relation.schema,
identifier=relation.identifier
)) -%}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタキmacro.dbt.load_relation゙、nameュload_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/relation.sqlイoriginal_file_pathシmacros/adapters/relation.sqlゥunique_idキmacro.dbt.load_relationゥmacro_sqlルc{% macro load_relation(relation) %}
{{ return(load_cached_relation(relation)) }}
{% endmacro %}ェdepends_on※macros太macro.dbt.load_cached_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタエmacro.dbt.is_core_v2゙、nameェis_core_v2ュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/runtime.sqlイoriginal_file_pathサmacros/adapters/runtime.sqlゥunique_idエmacro.dbt.is_core_v2ゥmacro_sqlル捜% macro is_core_v2() -%}
{%- set major_version = (dbt_version.split('.') | first) | int -%}
{{ return(major_version == 2) }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bムウsupported_languagesタサmacro.dbt.collect_freshness゙、nameアcollect_freshnessュresource_type・macroャpackage_name」dbt、pathスmacros/adapters/freshness.sqlイoriginal_file_pathスmacros/adapters/freshness.sqlゥunique_idサmacro.dbt.collect_freshnessゥmacro_sqlルェ{% macro collect_freshness(source, loaded_at_field, filter) %}
{{ return(adapter.dispatch('collect_freshness', 'dbt')(source, loaded_at_field, filter))}}
{% endmacro %}ェdepends_on※macros胎$macro.dbt.default__collect_freshnessォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameヲsource、typeタォdescriptionΖnameッloaded_at_field、typeタォdescriptionΖnameヲfilter、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタル$macro.dbt.default__collect_freshness゙、nameコdefault__collect_freshnessュresource_type・macroャpackage_name」dbt、pathスmacros/adapters/freshness.sqlイoriginal_file_pathスmacros/adapters/freshness.sqlゥunique_idル$macro.dbt.default__collect_freshnessゥmacro_sqlレェ{% macro default__collect_freshness(source, loaded_at_field, filter) %}
{% call statement('collect_freshness', fetch_result=True, auto_begin=False) -%}
select
max({{ loaded_at_field }}) as max_loaded_at,
{{ current_timestamp() }} as snapshotted_at
from {{ source }}
{% if filter %}
where {{ filter }}
{% endif %}
{% endcall %}
{{ return(load_result('collect_freshness')) }}
{% endmacro %}ェdepends_on※macros諜macro.dbt.statementサmacro.dbt.current_timestampォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameヲsource、typeタォdescriptionΖnameッloaded_at_field、typeタォdescriptionΖnameヲfilter、typeタォdescriptionェcreated_atヒAレ萌Bムウsupported_languagesタル&macro.dbt.collect_freshness_custom_sql゙、nameシcollect_freshness_custom_sqlュresource_type・macroャpackage_name」dbt、pathスmacros/adapters/freshness.sqlイoriginal_file_pathスmacros/adapters/freshness.sqlゥunique_idル&macro.dbt.collect_freshness_custom_sqlゥmacro_sqlルー{% macro collect_freshness_custom_sql(source, loaded_at_query) %}
{{ return(adapter.dispatch('collect_freshness_custom_sql', 'dbt')(source, loaded_at_query))}}
{% endmacro %}ェdepends_on※macros胎/macro.dbt.default__collect_freshness_custom_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameヲsource、typeタォdescriptionΖnameッloaded_at_query、typeタォdescriptionェcreated_atヒAレ萌Bメzウsupported_languagesタル/macro.dbt.default__collect_freshness_custom_sql゙、nameル%default__collect_freshness_custom_sqlュresource_type・macroャpackage_name」dbt、pathスmacros/adapters/freshness.sqlイoriginal_file_pathスmacros/adapters/freshness.sqlゥunique_idル/macro.dbt.default__collect_freshness_custom_sqlゥmacro_sqlレ・{% macro default__collect_freshness_custom_sql(source, loaded_at_query) %}
{% call statement('collect_freshness_custom_sql', fetch_result=True, auto_begin=False) -%}
with source_query as (
{{ loaded_at_query }}
)
select
(select * from source_query) as max_loaded_at,
{{ current_timestamp() }} as snapshotted_at
{% endcall %}
{{ return(load_result('collect_freshness_custom_sql')) }}
{% endmacro %}ェdepends_on※macros諜macro.dbt.statementサmacro.dbt.current_timestampォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameヲsource、typeタォdescriptionΖnameッloaded_at_query、typeタォdescriptionェcreated_atヒAレ萌Bメィウsupported_languagesタカmacro.dbt.validate_sql゙、nameャvalidate_sqlュresource_type・macroャpackage_name」dbt、pathル macros/adapters/validate_sql.sqlイoriginal_file_pathル macros/adapters/validate_sql.sqlゥunique_idカmacro.dbt.validate_sqlゥmacro_sqlルj{% macro validate_sql(sql) -%}
{{ return(adapter.dispatch('validate_sql', 'dbt')(sql)) }}
{% endmacro %}ェdepends_on※macros汰macro.dbt.default__validate_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌Bメ撞supported_languagesタソmacro.dbt.default__validate_sql゙、nameオdefault__validate_sqlュresource_type・macroャpackage_name」dbt、pathル macros/adapters/validate_sql.sqlイoriginal_file_pathル macros/adapters/validate_sql.sqlゥunique_idソmacro.dbt.default__validate_sqlゥmacro_sqlルー{% macro default__validate_sql(sql) -%}
{% call statement('validate_sql') -%}
explain {{ sql }}
{% endcall %}
{{ return(load_result('validate_sql')) }}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name」sql、typeタォdescriptionェcreated_atヒAレ萌Bメ!ウsupported_languagesタオmacro.dbt.copy_grants゙、nameォcopy_grantsュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idオmacro.dbt.copy_grantsゥmacro_sqlルc{% macro copy_grants() %}
{{ return(adapter.dispatch('copy_grants', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎(macro.dbt_postgres.postgres__copy_grantsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメ
犁supported_languagesタセmacro.dbt.default__copy_grants゙、nameエdefault__copy_grantsュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idセmacro.dbt.default__copy_grantsゥmacro_sqlルH{% macro default__copy_grants() %}
{{ return(True) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメ攀supported_languagesタル5macro.dbt.support_multiple_grantees_per_dcl_statement゙、nameル+support_multiple_grantees_per_dcl_statementュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idル5macro.dbt.support_multiple_grantees_per_dcl_statementゥmacro_sqlル」{% macro support_multiple_grantees_per_dcl_statement() %}
{{ return(adapter.dispatch('support_multiple_grantees_per_dcl_statement', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎>macro.dbt.default__support_multiple_grantees_per_dcl_statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメ・ウsupported_languagesタル>macro.dbt.default__support_multiple_grantees_per_dcl_statement゙、nameル4default__support_multiple_grantees_per_dcl_statementュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idル>macro.dbt.default__support_multiple_grantees_per_dcl_statementゥmacro_sqlルq
{%- macro default__support_multiple_grantees_per_dcl_statement() -%}
{{ return(True) }}
{%- endmacro -%}
ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメ^ウsupported_languagesタキmacro.dbt.should_revoke゙、nameュshould_revokeュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idキmacro.dbt.should_revokeゥmacro_sqlレ2{% macro should_revoke(existing_relation, full_refresh_mode=True) %}
{% if not existing_relation %}
{#-- The table doesn't already exist, so no grants to copy over --#}
{{ return(False) }}
{% elif full_refresh_mode %}
{#-- The object is being REPLACED -- whether grants are copied over depends on the value of user config --#}
{{ return(copy_grants()) }}
{% else %}
{#-- The table is being merged/upserted/inserted -- grants will be carried over --#}
{{ return(True) }}
{% endif %}
{% endmacro %}ェdepends_on※macros揃macro.dbt.copy_grantsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameアexisting_relation、typeタォdescriptionΖnameアfull_refresh_mode、typeタォdescriptionェcreated_atヒAレ萌Bメ筏supported_languagesタシmacro.dbt.get_show_grant_sql゙、nameイget_show_grant_sqlュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idシmacro.dbt.get_show_grant_sqlゥmacro_sqlル+% macro get_show_grant_sql(relation) %}
{{ return(adapter.dispatch("get_show_grant_sql", "dbt")(relation)) }}
{% endmacro %}ェdepends_on※macros胎/macro.dbt_postgres.postgres__get_show_grant_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bメヌウsupported_languagesタル%macro.dbt.default__get_show_grant_sql゙、nameサdefault__get_show_grant_sqlュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idル%macro.dbt.default__get_show_grant_sqlゥmacro_sqlルk{% macro default__get_show_grant_sql(relation) %}
show grants on {{ relation.render() }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bメsupported_languagesタキmacro.dbt.get_grant_sql゙、nameュget_grant_sqlュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idキmacro.dbt.get_grant_sqlゥmacro_sqlル。{% macro get_grant_sql(relation, privilege, grantees) %}
{{ return(adapter.dispatch('get_grant_sql', 'dbt')(relation, privilege, grantees)) }}
{% endmacro %}ェdepends_on※macros胎 macro.dbt.default__get_grant_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameゥprivilege、typeタォdescriptionΖnameィgrantees、typeタォdescriptionェcreated_atヒAレ萌Bメ
ウsupported_languagesタル macro.dbt.default__get_grant_sql゙、nameカdefault__get_grant_sqlュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idル macro.dbt.default__get_grant_sqlゥmacro_sqlルュ
{%- macro default__get_grant_sql(relation, privilege, grantees) -%}
grant {{ privilege }} on {{ relation.render() }} to {{ grantees | join(', ') }}
{%- endmacro -%}
ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameゥprivilege、typeタォdescriptionΖnameィgrantees、typeタォdescriptionェcreated_atヒAレ萌Bメsupported_languagesタクmacro.dbt.get_revoke_sql゙、nameョget_revoke_sqlュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idクmacro.dbt.get_revoke_sqlゥmacro_sqlル」{% macro get_revoke_sql(relation, privilege, grantees) %}
{{ return(adapter.dispatch('get_revoke_sql', 'dbt')(relation, privilege, grantees)) }}
{% endmacro %}ェdepends_on※macros胎!macro.dbt.default__get_revoke_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameゥprivilege、typeタォdescriptionΖnameィgrantees、typeタォdescriptionェcreated_atヒAレ萌Bメウsupported_languagesタル!macro.dbt.default__get_revoke_sql゙、nameキdefault__get_revoke_sqlュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idル!macro.dbt.default__get_revoke_sqlゥmacro_sqlレV
{%- macro default__get_revoke_sql(relation, privilege, grantees) -%}
{%- set quoted_grantees = [] -%}
{%- for grantee in grantees -%}
{%- do quoted_grantees.append(adapter.quote(grantee)) -%}
{%- endfor -%}
revoke {{ privilege }} on {{ relation.render() }} from {{ quoted_grantees | join(', ') }}
{%- endmacro -%}
ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameゥprivilege、typeタォdescriptionΖnameィgrantees、typeタォdescriptionェcreated_atヒAレ萌Bメスウsupported_languagesタル macro.dbt.get_dcl_statement_list゙、nameカget_dcl_statement_listュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idル macro.dbt.get_dcl_statement_listゥmacro_sqlルテ{% macro get_dcl_statement_list(relation, grant_config, get_dcl_macro) %}
{{ return(adapter.dispatch('get_dcl_statement_list', 'dbt')(relation, grant_config, get_dcl_macro)) }}
{% endmacro %}ェdepends_on※macros胎)macro.dbt.default__get_dcl_statement_listォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameャgrant_config、typeタォdescriptionΖnameュget_dcl_macro、typeタォdescriptionェcreated_atヒAレ萌BメGウsupported_languagesタル)macro.dbt.default__get_dcl_statement_list゙、nameソdefault__get_dcl_statement_listュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idル)macro.dbt.default__get_dcl_statement_listゥmacro_sqlレ?
{%- macro default__get_dcl_statement_list(relation, grant_config, get_dcl_macro) -%}
{#
-- Unpack grant_config into specific privileges and the set of users who need them granted/revoked.
-- Depending on whether this database supports multiple grantees per statement, pass in the list of
-- all grantees per privilege, or (if not) template one statement per privilege-grantee pair.
-- `get_dcl_macro` will be either `get_grant_sql` or `get_revoke_sql`
#}
{%- set dcl_statements = [] -%}
{%- for privilege, grantees in grant_config.items() %}
{%- if support_multiple_grantees_per_dcl_statement() and grantees -%}
{%- set dcl = get_dcl_macro(relation, privilege, grantees) -%}
{%- do dcl_statements.append(dcl) -%}
{%- else -%}
{%- for grantee in grantees -%}
{% set dcl = get_dcl_macro(relation, privilege, [grantee]) %}
{%- do dcl_statements.append(dcl) -%}
{% endfor -%}
{%- endif -%}
{%- endfor -%}
{{ return(dcl_statements) }}
{%- endmacro %}ェdepends_on※macros胎5macro.dbt.support_multiple_grantees_per_dcl_statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameャgrant_config、typeタォdescriptionΖnameュget_dcl_macro、typeタォdescriptionェcreated_atヒAレ萌Bメ!フウsupported_languagesタスmacro.dbt.call_dcl_statements゙、nameウcall_dcl_statementsュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idスmacro.dbt.call_dcl_statementsゥmacro_sqlル養% macro call_dcl_statements(dcl_statement_list) %}
{{ return(adapter.dispatch("call_dcl_statements", "dbt")(dcl_statement_list)) }}
{% endmacro %}ェdepends_on※macros胎&macro.dbt.default__call_dcl_statementsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameイdcl_statement_list、typeタォdescriptionェcreated_atヒAレ萌Bメ# ウsupported_languagesタル&macro.dbt.default__call_dcl_statements゙、nameシdefault__call_dcl_statementsュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idル&macro.dbt.default__call_dcl_statementsゥmacro_sqlレ{% macro default__call_dcl_statements(dcl_statement_list) %}
{#
-- By default, supply all grant + revoke statements in a single semicolon-separated block,
-- so that they're all processed together.
-- Some databases do not support this. Those adapters will need to override this macro
-- to run each statement individually.
#}
{% call statement('grants') %}
{% for dcl_statement in dcl_statement_list %}
{{ dcl_statement }};
{% endfor %}
{% endcall %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameイdcl_statement_list、typeタォdescriptionェcreated_atヒAレ萌Bメ$ウウsupported_languagesタカmacro.dbt.apply_grants゙、nameャapply_grantsュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idカmacro.dbt.apply_grantsゥmacro_sqlルッ{% macro apply_grants(relation, grant_config, should_revoke) %}
{{ return(adapter.dispatch("apply_grants", "dbt")(relation, grant_config, should_revoke)) }}
{% endmacro %}ェdepends_on※macros汰macro.dbt.default__apply_grantsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameャgrant_config、typeタォdescriptionΖnameュshould_revoke、typeタォdescriptionェcreated_atヒAレ萌Bメ&ウsupported_languagesタソmacro.dbt.default__apply_grants゙、nameオdefault__apply_grantsュresource_type・macroャpackage_name」dbt、pathル macros/adapters/apply_grants.sqlイoriginal_file_pathル macros/adapters/apply_grants.sqlゥunique_idソmacro.dbt.default__apply_grantsゥmacro_sqlレヌ{% macro default__apply_grants(relation, grant_config, should_revoke=True) %}
{#-- If grant_config is {} or None, this is a no-op --#}
{% if grant_config %}
{% if should_revoke %}
{#-- We think previous grants may have carried over --#}
{#-- Show current grants and calculate diffs --#}
{% set current_grants_table = run_query(get_show_grant_sql(relation)) %}
{% set current_grants_dict = adapter.standardize_grants_dict(current_grants_table) %}
{% set needs_granting = diff_of_two_dicts(grant_config, current_grants_dict) %}
{% set needs_revoking = diff_of_two_dicts(current_grants_dict, grant_config) %}
{% if not (needs_granting or needs_revoking) %}
{{ log('On ' ~ relation.render() ~': All grants are in place, no revocation or granting needed.')}}
{% endif %}
{% else %}
{#-- We don't think there's any chance of previous grants having carried over. --#}
{#-- Jump straight to granting what the user has configured. --#}
{% set needs_revoking = {} %}
{% set needs_granting = grant_config %}
{% endif %}
{% if needs_granting or needs_revoking %}
{% set revoke_statement_list = get_dcl_statement_list(relation, needs_revoking, get_revoke_sql) %}
{% set grant_statement_list = get_dcl_statement_list(relation, needs_granting, get_grant_sql) %}
{% set dcl_statement_list = revoke_statement_list + grant_statement_list %}
{% if dcl_statement_list %}
{{ call_dcl_statements(dcl_statement_list) }}
{% endif %}
{% endif %}
{% endif %}
{% endmacro %}ェdepends_on※macros筏macro.dbt.run_queryシmacro.dbt.get_show_grant_sqlル macro.dbt.get_dcl_statement_listスmacro.dbt.call_dcl_statementsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameャgrant_config、typeタォdescriptionΖnameュshould_revoke、typeタォdescriptionェcreated_atヒAレ萌Bメ.Iウsupported_languagesタカmacro.dbt.get_show_sql゙、nameャget_show_sqlュresource_type・macroャpackage_name」dbt、pathクmacros/adapters/show.sqlイoriginal_file_pathクmacros/adapters/show.sqlゥunique_idカmacro.dbt.get_show_sqlゥmacro_sqlルナ{% macro get_show_sql(compiled_code, sql_header, limit) -%}
{%- if sql_header is not none -%}
{{ sql_header }}
{%- endif %}
{{ get_limit_subquery_sql(compiled_code, limit) }}
{% endmacro %}ェdepends_on※macros胎 macro.dbt.get_limit_subquery_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameュcompiled_code、typeタォdescriptionΖnameェsql_header、typeタォdescriptionΖname・limit、typeタォdescriptionェcreated_atヒAレ萌Bメ1ウsupported_languagesタル macro.dbt.get_limit_subquery_sql゙、nameカget_limit_subquery_sqlュresource_type・macroャpackage_name」dbt、pathクmacros/adapters/show.sqlイoriginal_file_pathクmacros/adapters/show.sqlゥunique_idル macro.dbt.get_limit_subquery_sqlゥmacro_sqlル
{%- macro get_limit_subquery_sql(sql, limit) -%}
{{ adapter.dispatch('get_limit_sql', 'dbt')(sql, limit) }}
{%- endmacro -%}
ェdepends_on※macros胎 macro.dbt.default__get_limit_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name」sql、typeタォdescriptionΖname・limit、typeタォdescriptionェcreated_atヒAレ萌Bメ2@ウsupported_languagesタル macro.dbt.default__get_limit_sql゙、nameカdefault__get_limit_sqlュresource_type・macroャpackage_name」dbt、pathクmacros/adapters/show.sqlイoriginal_file_pathクmacros/adapters/show.sqlゥunique_idル macro.dbt.default__get_limit_sqlゥmacro_sqlル顎% macro default__get_limit_sql(sql, limit) %}
{{ sql }}
{% if limit is not none %}
limit {{ limit }}
{%- endif -%}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name」sql、typeタォdescriptionΖname・limit、typeタォdescriptionェcreated_atヒAレ萌Bメ3zウsupported_languagesタセmacro.dbt.alter_column_comment゙、nameエalter_column_commentュresource_type・macroャpackage_name」dbt、pathル macros/adapters/persist_docs.sqlイoriginal_file_pathル macros/adapters/persist_docs.sqlゥunique_idセmacro.dbt.alter_column_commentゥmacro_sqlル桀% macro alter_column_comment(relation, column_dict) -%}
{{ return(adapter.dispatch('alter_column_comment', 'dbt')(relation, column_dict)) }}
{% endmacro %}ェdepends_on※macros胎1macro.dbt_postgres.postgres__alter_column_commentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameォcolumn_dict、typeタォdescriptionェcreated_atヒAレ萌Bメ7レウsupported_languagesタル'macro.dbt.default__alter_column_comment゙、nameスdefault__alter_column_commentュresource_type・macroャpackage_name」dbt、pathル macros/adapters/persist_docs.sqlイoriginal_file_pathル macros/adapters/persist_docs.sqlゥunique_idル'macro.dbt.default__alter_column_commentゥmacro_sqlルネ{% macro default__alter_column_comment(relation, column_dict) -%}
{{ exceptions.raise_not_implemented(
'alter_column_comment macro not implemented for adapter '+adapter.type()) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameォcolumn_dict、typeタォdescriptionェcreated_atヒAレ萌Bメ8邉supported_languagesタル macro.dbt.alter_relation_comment゙、nameカalter_relation_commentュresource_type・macroャpackage_name」dbt、pathル macros/adapters/persist_docs.sqlイoriginal_file_pathル macros/adapters/persist_docs.sqlゥunique_idル macro.dbt.alter_relation_commentゥmacro_sqlルャ{% macro alter_relation_comment(relation, relation_comment) -%}
{{ return(adapter.dispatch('alter_relation_comment', 'dbt')(relation, relation_comment)) }}
{% endmacro %}ェdepends_on※macros胎3macro.dbt_postgres.postgres__alter_relation_commentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameーrelation_comment、typeタォdescriptionェcreated_atヒAレ萌Bメ:*ウsupported_languagesタル)macro.dbt.default__alter_relation_comment゙、nameソdefault__alter_relation_commentュresource_type・macroャpackage_name」dbt、pathル macros/adapters/persist_docs.sqlイoriginal_file_pathル macros/adapters/persist_docs.sqlゥunique_idル)macro.dbt.default__alter_relation_commentゥmacro_sqlルム{% macro default__alter_relation_comment(relation, relation_comment) -%}
{{ exceptions.raise_not_implemented(
'alter_relation_comment macro not implemented for adapter '+adapter.type()) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameィrelation、typeタォdescriptionΖnameーrelation_comment、typeタォdescriptionェcreated_atヒAレ萌Bメ;6ウsupported_languagesタカmacro.dbt.persist_docs゙、nameャpersist_docsュresource_type・macroャpackage_name」dbt、pathル macros/adapters/persist_docs.sqlイoriginal_file_pathル macros/adapters/persist_docs.sqlゥunique_idカmacro.dbt.persist_docsゥmacro_sqlルツ{% macro persist_docs(relation, model, for_relation=true, for_columns=true) -%}
{{ return(adapter.dispatch('persist_docs', 'dbt')(relation, model, for_relation, for_columns)) }}
{% endmacro %}ェdepends_on※macros汰macro.dbt.default__persist_docsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameィrelation、typeタォdescriptionΖname・model、typeタォdescriptionΖnameャfor_relation、typeタォdescriptionΖnameォfor_columns、typeタォdescriptionェcreated_atヒAレ萌Bメ<゙ウsupported_languagesタセmacro.dbt.validate_doc_columns゙、nameエvalidate_doc_columnsュresource_type・macroャpackage_name」dbt、pathル macros/adapters/persist_docs.sqlイoriginal_file_pathル macros/adapters/persist_docs.sqlゥunique_idセmacro.dbt.validate_doc_columnsゥmacro_sqlレ鶏% macro validate_doc_columns(relation, column_dict, existing_column_names) %}
{% set existing_lower = existing_column_names | map("lower") | list %}
{% set missing = [] %}
{% set filtered = {} %}
{% for col_name in column_dict %}
{% set is_quoted = column_dict[col_name]['quote'] %}
{% if is_quoted %}
{% set present = col_name in existing_column_names %}
{% else %}
{% set present = col_name | lower in existing_lower %}
{% endif %}
{% if present %}
{% do filtered.update({col_name: column_dict[col_name]}) %}
{% else %}
{% do missing.append(col_name) %}
{% endif %}
{% endfor %}
{% if missing | length > 0 %}
{{ exceptions.warn("In relation " ~ relation.render() ~ ": The following columns are specified in the schema but are not present in the database: " ~ missing | join(", ")) }}
{% endif %}
{{ return(filtered) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameォcolumn_dict、typeタォdescriptionΖnameオexisting_column_names、typeタォdescriptionェcreated_atヒAレ萌BメCBウsupported_languagesタソmacro.dbt.default__persist_docs゙、nameオdefault__persist_docsュresource_type・macroャpackage_name」dbt、pathル macros/adapters/persist_docs.sqlイoriginal_file_pathル macros/adapters/persist_docs.sqlゥunique_idソmacro.dbt.default__persist_docsゥmacro_sqlレ{% macro default__persist_docs(relation, model, for_relation, for_columns) -%}
{% if for_relation and config.persist_relation_docs() and model.description %}
{% do run_query(alter_relation_comment(relation, model.description)) %}
{% endif %}
{% if for_columns and config.persist_column_docs() and model.columns %}
{% set existing_columns = adapter.get_columns_in_relation(relation) | map(attribute="name") | list %}
{% set filtered_columns = validate_doc_columns(relation, model.columns, existing_columns) %}
{% set alter_comment_sql = alter_column_comment(relation, filtered_columns) %}
{% if alter_comment_sql and alter_comment_sql | trim | length > 0 %}
{% do run_query(alter_comment_sql) %}
{% endif %}
{% endif %}
{% endmacro %}ェdepends_on※macros筏macro.dbt.run_queryル macro.dbt.alter_relation_commentセmacro.dbt.validate_doc_columnsセmacro.dbt.alter_column_commentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments買、nameィrelation、typeタォdescriptionΖname・model、typeタォdescriptionΖnameャfor_relation、typeタォdescriptionΖnameォfor_columns、typeタォdescriptionェcreated_atヒAレ萌BメHキウsupported_languagesタソmacro.dbt.get_catalog_relations゙、nameオget_catalog_relationsュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idソmacro.dbt.get_catalog_relationsゥmacro_sqlルア{% macro get_catalog_relations(information_schema, relations) -%}
{{ return(adapter.dispatch('get_catalog_relations', 'dbt')(information_schema, relations)) }}
{%- endmacro %}ェdepends_on※macros胎2macro.dbt_postgres.postgres__get_catalog_relationsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameゥrelations、typeタォdescriptionェcreated_atヒAレ萌BメNセウsupported_languagesタル(macro.dbt.default__get_catalog_relations゙、nameセdefault__get_catalog_relationsュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル(macro.dbt.default__get_catalog_relationsゥmacro_sqlレ {% macro default__get_catalog_relations(information_schema, relations) -%}
{% set typename = adapter.type() %}
{% set msg -%}
get_catalog_relations not implemented for {{ typename }}
{%- endset %}
{{ exceptions.raise_compiler_error(msg) }}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameゥrelations、typeタォdescriptionェcreated_atヒAレ萌BメPnウsupported_languagesタオmacro.dbt.get_catalog゙、nameォget_catalogュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idオmacro.dbt.get_catalogゥmacro_sqlル几% macro get_catalog(information_schema, schemas) -%}
{{ return(adapter.dispatch('get_catalog', 'dbt')(information_schema, schemas)) }}
{%- endmacro %}ェdepends_on※macros胎(macro.dbt_postgres.postgres__get_catalogォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameァschemas、typeタォdescriptionェcreated_atヒAレ萌BメQーウsupported_languagesタセmacro.dbt.default__get_catalog゙、nameエdefault__get_catalogュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idセmacro.dbt.default__get_catalogゥmacro_sqlル% macro default__get_catalog(information_schema, schemas) -%}
{% set typename = adapter.type() %}
{% set msg -%}
get_catalog not implemented for {{ typename }}
{%- endset %}
{{ exceptions.raise_compiler_error(msg) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameァschemas、typeタォdescriptionェcreated_atヒAレ萌BメSYウsupported_languagesタル!macro.dbt.information_schema_name゙、nameキinformation_schema_nameュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル!macro.dbt.information_schema_nameゥmacro_sqlル閲% macro information_schema_name(database) %}
{{ return(adapter.dispatch('information_schema_name', 'dbt')(database)) }}
{% endmacro %}ェdepends_on※macros胎4macro.dbt_postgres.postgres__information_schema_nameォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィdatabase、typeタォdescriptionェcreated_atヒAレ萌BメTyウsupported_languagesタル*macro.dbt.default__information_schema_name゙、nameル default__information_schema_nameュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル*macro.dbt.default__information_schema_nameゥmacro_sqlルケ{% macro default__information_schema_name(database) -%}
{%- if database -%}
{{ database }}.INFORMATION_SCHEMA
{%- else -%}
INFORMATION_SCHEMA
{%- endif -%}
{%- endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィdatabase、typeタォdescriptionェcreated_atヒAレ萌BメUsupported_languagesタカmacro.dbt.list_schemas゙、nameャlist_schemasュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idカmacro.dbt.list_schemasゥmacro_sqlルt{% macro list_schemas(database) -%}
{{ return(adapter.dispatch('list_schemas', 'dbt')(database)) }}
{% endmacro %}ェdepends_on※macros胎)macro.dbt_postgres.postgres__list_schemasォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィdatabase、typeタォdescriptionェcreated_atヒAレ萌BメV」ウsupported_languagesタソmacro.dbt.default__list_schemas゙、nameオdefault__list_schemasュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idソmacro.dbt.default__list_schemasゥmacro_sqlレ{% macro default__list_schemas(database) -%}
{% set sql %}
select distinct schema_name
from {{ information_schema_name(database) }}.SCHEMATA
where catalog_name ilike '{{ database }}'
{% endset %}
{{ return(run_query(sql)) }}
{% endmacro %}ェdepends_on※macros壷!macro.dbt.information_schema_nameウmacro.dbt.run_queryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィdatabase、typeタォdescriptionェcreated_atヒAレ萌BメXウsupported_languagesタスmacro.dbt.check_schema_exists゙、nameウcheck_schema_existsュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idスmacro.dbt.check_schema_existsゥmacro_sqlルヲ{% macro check_schema_exists(information_schema, schema) -%}
{{ return(adapter.dispatch('check_schema_exists', 'dbt')(information_schema, schema)) }}
{% endmacro %}ェdepends_on※macros胎0macro.dbt_postgres.postgres__check_schema_existsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameヲschema、typeタォdescriptionェcreated_atヒAレ萌BメYhウsupported_languagesタル&macro.dbt.default__check_schema_exists゙、nameシdefault__check_schema_existsュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル&macro.dbt.default__check_schema_existsゥmacro_sqlレf{% macro default__check_schema_exists(information_schema, schema) -%}
{% set sql -%}
select count(*)
from {{ information_schema.replace(information_schema_view='SCHEMATA') }}
where catalog_name='{{ information_schema.database }}'
and schema_name='{{ schema }}'
{%- endset %}
{{ return(run_query(sql)) }}
{% endmacro %}ェdepends_on※macros蝶macro.dbt.replaceウmacro.dbt.run_queryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameヲschema、typeタォdescriptionェcreated_atヒAレ萌Bメ\>ウsupported_languagesタル(macro.dbt.list_relations_without_caching゙、nameセlist_relations_without_cachingュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル(macro.dbt.list_relations_without_cachingゥmacro_sqlル・{% macro list_relations_without_caching(schema_relation) %}
{{ return(adapter.dispatch('list_relations_without_caching', 'dbt')(schema_relation)) }}
{% endmacro %}ェdepends_on※macros胎;macro.dbt_postgres.postgres__list_relations_without_cachingォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッschema_relation、typeタォdescriptionェcreated_atヒAレ萌Bメ]}ウsupported_languagesタル1macro.dbt.default__list_relations_without_caching゙、nameル'default__list_relations_without_cachingュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル1macro.dbt.default__list_relations_without_cachingゥmacro_sqlルユ{% macro default__list_relations_without_caching(schema_relation) %}
{{ exceptions.raise_not_implemented(
'list_relations_without_caching macro not implemented for adapter '+adapter.type()) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッschema_relation、typeタォdescriptionェcreated_atヒAレ萌Bメ^諜supported_languagesタル1macro.dbt.list_function_relations_without_caching゙、nameル'list_function_relations_without_cachingュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル1macro.dbt.list_function_relations_without_cachingゥmacro_sqlルキ{% macro list_function_relations_without_caching(schema_relation) %}
{{ return(adapter.dispatch('list_function_relations_without_caching', 'dbt')(schema_relation)) }}
{% endmacro %}ェdepends_on※macros胎:macro.dbt.default__list_function_relations_without_cachingォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッschema_relation、typeタォdescriptionェcreated_atヒAレ萌Bメ_ョウsupported_languagesタル:macro.dbt.default__list_function_relations_without_caching゙、nameル0default__list_function_relations_without_cachingュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル:macro.dbt.default__list_function_relations_without_cachingゥmacro_sqlル轆% macro default__list_function_relations_without_caching(schema_relation) %}
{{ exceptions.raise_not_implemented(
'list_function_relations_without_caching macro not implemented for adapter '+adapter.type()) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameッschema_relation、typeタォdescriptionェcreated_atヒAレ萌Bメ`ッウsupported_languagesタル)macro.dbt.get_catalog_for_single_relation゙、nameソget_catalog_for_single_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル)macro.dbt.get_catalog_for_single_relationゥmacro_sqlル几% macro get_catalog_for_single_relation(relation) %}
{{ return(adapter.dispatch('get_catalog_for_single_relation', 'dbt')(relation)) }}
{% endmacro %}ェdepends_on※macros胎2macro.dbt.default__get_catalog_for_single_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bメaヤウsupported_languagesタル2macro.dbt.default__get_catalog_for_single_relation゙、nameル(default__get_catalog_for_single_relationュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル2macro.dbt.default__get_catalog_for_single_relationゥmacro_sqlルミ{% macro default__get_catalog_for_single_relation(relation) %}
{{ exceptions.raise_not_implemented(
'get_catalog_for_single_relation macro not implemented for adapter '+adapter.type()) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bメbマウsupported_languagesタキmacro.dbt.get_relations゙、nameュget_relationsュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idキmacro.dbt.get_relationsゥmacro_sqlルe{% macro get_relations() %}
{{ return(adapter.dispatch('get_relations', 'dbt')()) }}
{% endmacro %}ェdepends_on※macros胎*macro.dbt_postgres.postgres__get_relationsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメcミウsupported_languagesタル macro.dbt.default__get_relations゙、nameカdefault__get_relationsュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル macro.dbt.default__get_relationsゥmacro_sqlル、{% macro default__get_relations() %}
{{ exceptions.raise_not_implemented(
'get_relations macro not implemented for adapter '+adapter.type()) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメdコウsupported_languagesタル$macro.dbt.get_relation_last_modified゙、nameコget_relation_last_modifiedュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル$macro.dbt.get_relation_last_modifiedゥmacro_sqlルケ{% macro get_relation_last_modified(information_schema, relations) %}
{{ return(adapter.dispatch('get_relation_last_modified', 'dbt')(information_schema, relations)) }}
{% endmacro %}ェdepends_on※macros胎-macro.dbt.default__get_relation_last_modifiedォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameゥrelations、typeタォdescriptionェcreated_atヒAレ萌Bメesupported_languagesタル-macro.dbt.default__get_relation_last_modified゙、nameル#default__get_relation_last_modifiedュresource_type・macroャpackage_name」dbt、pathシmacros/adapters/metadata.sqlイoriginal_file_pathシmacros/adapters/metadata.sqlゥunique_idル-macro.dbt.default__get_relation_last_modifiedゥmacro_sqlルン{% macro default__get_relation_last_modified(information_schema, relations) %}
{{ exceptions.raise_not_implemented(
'get_relation_last_modified macro not implemented for adapter ' + adapter.type()) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameイinformation_schema、typeタォdescriptionΖnameゥrelations、typeタォdescriptionェcreated_atヒAレ萌Bメg
ウsupported_languagesタル!macro.dbt.get_columns_in_relation゙、nameキget_columns_in_relationュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル!macro.dbt.get_columns_in_relationゥmacro_sqlル顎% macro get_columns_in_relation(relation) -%}
{{ return(adapter.dispatch('get_columns_in_relation', 'dbt')(relation)) }}
{% endmacro %}ェdepends_on※macros胎4macro.dbt_postgres.postgres__get_columns_in_relationォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bメnラウsupported_languagesタル*macro.dbt.default__get_columns_in_relation゙、nameル default__get_columns_in_relationュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル*macro.dbt.default__get_columns_in_relationゥmacro_sqlルチ{% macro default__get_columns_in_relation(relation) -%}
{{ exceptions.raise_not_implemented(
'get_columns_in_relation macro not implemented for adapter '+adapter.type()) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameィrelation、typeタォdescriptionェcreated_atヒAレ萌Bメoロウsupported_languagesタル)macro.dbt.sql_convert_columns_in_relation゙、nameソsql_convert_columns_in_relationュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル)macro.dbt.sql_convert_columns_in_relationゥmacro_sqlルノ{% macro sql_convert_columns_in_relation(table) -%}
{% set columns = [] %}
{% for row in table %}
{% do columns.append(api.Column(*row)) %}
{% endfor %}
{{ return(columns) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・table、typeタォdescriptionェcreated_atヒAレ萌Bメqホウsupported_languagesタル"macro.dbt.get_list_of_column_names゙、nameクget_list_of_column_namesュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル"macro.dbt.get_list_of_column_namesゥmacro_sqlルヌ
{%- macro get_list_of_column_names(columns) -%}
{% set col_names = [] %}
{% for col in columns %}
{% do col_names.append(col.name) %}
{% endfor %}
{{ return(col_names) }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameァcolumns、typeタォdescriptionェcreated_atヒAレ萌Bメs承supported_languagesタル macro.dbt.get_empty_subquery_sql゙、nameカget_empty_subquery_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル macro.dbt.get_empty_subquery_sqlゥmacro_sqlルキ{% macro get_empty_subquery_sql(select_sql, select_sql_header=none) -%}
{{ return(adapter.dispatch('get_empty_subquery_sql', 'dbt')(select_sql, select_sql_header)) }}
{% endmacro %}ェdepends_on※macros胎)macro.dbt.default__get_empty_subquery_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameェselect_sql、typeタォdescriptionΖnameアselect_sql_header、typeタォdescriptionェcreated_atヒAレ萌Bメtsupported_languagesタル)macro.dbt.default__get_empty_subquery_sql゙、nameソdefault__get_empty_subquery_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル)macro.dbt.default__get_empty_subquery_sqlゥmacro_sqlレ{% macro default__get_empty_subquery_sql(select_sql, select_sql_header=none) %}
{%- if select_sql_header is not none -%}
{{ select_sql_header }}
{%- endif -%}
select * from (
{{ select_sql }}
) as __dbt_sbq
where false
limit 0
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameェselect_sql、typeタォdescriptionΖnameアselect_sql_header、typeタォdescriptionェcreated_atヒAレ萌BメvBウsupported_languagesタセmacro.dbt.get_empty_schema_sql゙、nameエget_empty_schema_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idセmacro.dbt.get_empty_schema_sqlゥmacro_sqlル% macro get_empty_schema_sql(columns) -%}
{{ return(adapter.dispatch('get_empty_schema_sql', 'dbt')(columns)) }}
{% endmacro %}ェdepends_on※macros胎'macro.dbt.default__get_empty_schema_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameァcolumns、typeタォdescriptionェcreated_atヒAレ萌Bメwiウsupported_languagesタル'macro.dbt.default__get_empty_schema_sql゙、nameスdefault__get_empty_schema_sqlュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル'macro.dbt.default__get_empty_schema_sqlゥmacro_sqlレT{% macro default__get_empty_schema_sql(columns) %}
{%- set col_err = [] -%}
{%- set col_naked_numeric = [] -%}
select
{% for i in columns %}
{%- set col = columns[i] -%}
{%- if col['data_type'] is not defined -%}
{%- do col_err.append(col['name']) -%}
{#-- If this column's type is just 'numeric' then it is missing precision/scale, raise a warning --#}
{%- elif col['data_type'].strip().lower() in ('numeric', 'decimal', 'number') -%}
{%- do col_naked_numeric.append(col['name']) -%}
{%- endif -%}
{% set col_name = adapter.quote(col['name']) if col.get('quote') else col['name'] %}
{{ cast('null', col['data_type']) }} as {{ col_name }}{{ ", " if not loop.last }}
{%- endfor -%}
{%- if (col_err | length) > 0 -%}
{{ exceptions.column_type_missing(column_names=col_err) }}
{%- elif (col_naked_numeric | length) > 0 -%}
{{ exceptions.warn("Detected columns with numeric type and unspecified precision/scale, this can lead to unintended rounding: " ~ col_naked_numeric ~ "`") }}
{%- endif -%}
{% endmacro %}ェdepends_on※macros属macro.dbt.castォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameァcolumns、typeタォdescriptionェcreated_atヒAレ萌Bメ~攀supported_languagesタル&macro.dbt.get_column_schema_from_query゙、nameシget_column_schema_from_queryュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル&macro.dbt.get_column_schema_from_queryゥmacro_sqlレア{% macro get_column_schema_from_query(select_sql, select_sql_header=none) -%}
{% set columns = [] %}
{# -- Using an 'empty subquery' here to get the same schema as the given select_sql statement, without necessitating a data scan.#}
{% set sql = get_empty_subquery_sql(select_sql, select_sql_header) %}
{% set column_schema = adapter.get_column_schema_from_query(sql) %}
{{ return(column_schema) }}
{% endmacro %}ェdepends_on※macros胎 macro.dbt.get_empty_subquery_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、nameェselect_sql、typeタォdescriptionΖnameアselect_sql_header、typeタォdescriptionェcreated_atヒAレ萌Bメ$ウsupported_languagesタセmacro.dbt.get_columns_in_query゙、nameエget_columns_in_queryュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idセmacro.dbt.get_columns_in_queryゥmacro_sqlル% macro get_columns_in_query(select_sql) -%}
{{ return(adapter.dispatch('get_columns_in_query', 'dbt')(select_sql)) }}
{% endmacro %}ェdepends_on※macros胎'macro.dbt.default__get_columns_in_queryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェselect_sql、typeタォdescriptionェcreated_atヒAレ萌Bメとウsupported_languagesタル'macro.dbt.default__get_columns_in_query゙、nameスdefault__get_columns_in_queryュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル'macro.dbt.default__get_columns_in_queryゥmacro_sqlレA{% macro default__get_columns_in_query(select_sql) %}
{% call statement('get_columns_in_query', fetch_result=True, auto_begin=False) -%}
{{ get_empty_subquery_sql(select_sql) }}
{% endcall %}
{{ return(load_result('get_columns_in_query').table.columns | map(attribute='name') | list) }}
{% endmacro %}ェdepends_on※macros諜macro.dbt.statementル macro.dbt.get_empty_subquery_sqlォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameェselect_sql、typeタォdescriptionェcreated_atヒAレ萌Bメウsupported_languagesタサmacro.dbt.alter_column_type゙、nameアalter_column_typeュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idサmacro.dbt.alter_column_typeゥmacro_sqlルコ{% macro alter_column_type(relation, column_name, new_column_type) -%}
{{ return(adapter.dispatch('alter_column_type', 'dbt')(relation, column_name, new_column_type)) }}
{% endmacro %}ェdepends_on※macros胎$macro.dbt.default__alter_column_typeォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameォcolumn_name、typeタォdescriptionΖnameッnew_column_type、typeタォdescriptionェcreated_atヒAレ萌Bメウsupported_languagesタル$macro.dbt.default__alter_column_type゙、nameコdefault__alter_column_typeュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル$macro.dbt.default__alter_column_typeゥmacro_sqlレ<{% macro default__alter_column_type(relation, column_name, new_column_type) -%}
{#
1. Create a new column (w/ temp name and correct type)
2. Copy data over to it
3. Drop the existing column (cascade!)
4. Rename the new column to existing column
#}
{%- set tmp_column = column_name + "__dbt_alter" -%}
{% call statement('alter_column_type') %}
alter table {{ relation.render() }} add column {{ adapter.quote(tmp_column) }} {{ new_column_type }};
update {{ relation.render() }} set {{ adapter.quote(tmp_column) }} = {{ adapter.quote(column_name) }};
alter table {{ relation.render() }} drop column {{ adapter.quote(column_name) }} cascade;
alter table {{ relation.render() }} rename column {{ adapter.quote(tmp_column) }} to {{ adapter.quote(column_name) }}
{% endcall %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.statementォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameォcolumn_name、typeタォdescriptionΖnameッnew_column_type、typeタォdescriptionェcreated_atヒAレ萌Bメ
ウsupported_languagesタル+macro.dbt.alter_relation_add_remove_columns゙、nameル!alter_relation_add_remove_columnsュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル+macro.dbt.alter_relation_add_remove_columnsゥmacro_sqlル諚% macro alter_relation_add_remove_columns(relation, add_columns = none, remove_columns = none) -%}
{{ return(adapter.dispatch('alter_relation_add_remove_columns', 'dbt')(relation, add_columns, remove_columns)) }}
{% endmacro %}ェdepends_on※macros胎4macro.dbt.default__alter_relation_add_remove_columnsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameォadd_columns、typeタォdescriptionΖnameョremove_columns、typeタォdescriptionェcreated_atヒAレ萌Bメ庫ウsupported_languagesタル4macro.dbt.default__alter_relation_add_remove_columns゙、nameル*default__alter_relation_add_remove_columnsュresource_type・macroャpackage_name」dbt、pathサmacros/adapters/columns.sqlイoriginal_file_pathサmacros/adapters/columns.sqlゥunique_idル4macro.dbt.default__alter_relation_add_remove_columnsゥmacro_sqlレ% macro default__alter_relation_add_remove_columns(relation, add_columns, remove_columns) %}
{% if add_columns is none %}
{% set add_columns = [] %}
{% endif %}
{% if remove_columns is none %}
{% set remove_columns = [] %}
{% endif %}
{% set sql -%}
alter {{ relation.type }} {{ relation.render() }}
{% for column in add_columns %}
add column {{ column.quoted }} {{ column.expanded_data_type }}{{ ',' if not loop.last }}
{% endfor %}{{ ',' if add_columns and remove_columns }}
{% for column in remove_columns %}
drop column {{ column.quoted }}{{ ',' if not loop.last }}
{% endfor %}
{%- endset -%}
{% do run_query(sql) %}
{% endmacro %}ェdepends_on※macros袖macro.dbt.run_queryォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、nameィrelation、typeタォdescriptionΖnameォadd_columns、typeタォdescriptionΖnameョremove_columns、typeタォdescriptionェcreated_atヒAレ萌Bメ対ウsupported_languagesタケmacro.dbt.get_fixture_sql゙、nameッget_fixture_sqlュresource_type・macroャpackage_name」dbt、pathル(macros/unit_test_sql/get_fixture_sql.sqlイoriginal_file_pathル(macros/unit_test_sql/get_fixture_sql.sqlゥunique_idケmacro.dbt.get_fixture_sqlゥmacro_sqlレ% macro get_fixture_sql(rows, column_name_to_data_types) %}
-- Fixture for {{ model.name }}
{% set default_row = {} %}
{%- if not column_name_to_data_types -%}
{#-- Use defer_relation IFF it is available in the manifest and 'this' is missing from the database --#}
{%- set this_or_defer_relation = defer_relation if (defer_relation and not load_relation(this)) else this -%}
{%- set columns_in_relation = adapter.get_columns_in_relation(this_or_defer_relation) -%}
{%- set column_name_to_data_types = {} -%}
{%- set column_name_to_quoted = {} -%}
{%- for column in columns_in_relation -%}
{#-- This needs to be a case-insensitive comparison --#}
{%- do column_name_to_data_types.update({column.name|lower: column.data_type}) -%}
{%- do column_name_to_quoted.update({column.name|lower: column.quoted}) -%}
{%- endfor -%}
{%- endif -%}
{%- if not column_name_to_data_types -%}
{{ exceptions.raise_compiler_error("Not able to get columns for unit test '" ~ model.name ~ "' from relation " ~ this ~ " because the relation doesn't exist") }}
{%- endif -%}
{%- for column_name, column_type in column_name_to_data_types.items() -%}
{%- do default_row.update({column_name: (safe_cast("null", column_type) | trim )}) -%}
{%- endfor -%}
{{ validate_fixture_rows(rows, row_number) }}
{%- for row in rows -%}
{%- set formatted_row = format_row(row, column_name_to_data_types) -%}
{%- set default_row_copy = default_row.copy() -%}
{%- do default_row_copy.update(formatted_row) -%}
select
{%- for column_name, column_value in default_row_copy.items() %} {{ column_value }} as {{ column_name_to_quoted[column_name] }}{% if not loop.last -%}, {%- endif %}
{%- endfor %}
{%- if not loop.last %}
union all
{% endif %}
{%- endfor -%}
{%- if (rows | length) == 0 -%}
select
{%- for column_name, column_value in default_row.items() %} {{ column_value }} as {{ column_name_to_quoted[column_name] }}{% if not loop.last -%},{%- endif %}
{%- endfor %}
limit 0
{%- endif -%}
{% endmacro %}ェdepends_on※macros塙macro.dbt.load_relationウmacro.dbt.safe_castソmacro.dbt.validate_fixture_rowsエmacro.dbt.format_rowォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name、rows、typeタォdescriptionΖnameケcolumn_name_to_data_types、typeタォdescriptionェcreated_atヒAレ萌Bメ」ウsupported_languagesタコmacro.dbt.get_expected_sql゙、nameーget_expected_sqlュresource_type・macroャpackage_name」dbt、pathル(macros/unit_test_sql/get_fixture_sql.sqlイoriginal_file_pathル(macros/unit_test_sql/get_fixture_sql.sqlゥunique_idコmacro.dbt.get_expected_sqlゥmacro_sqlレ/{% macro get_expected_sql(rows, column_name_to_data_types, column_name_to_quoted) %}
{%- if (rows | length) == 0 -%}
select * from dbt_internal_unit_test_actual
limit 0
{%- else -%}
{%- for row in rows -%}
{%- set formatted_row = format_row(row, column_name_to_data_types) -%}
select
{%- for column_name, column_value in formatted_row.items() %} {{ column_value }} as {{ column_name_to_quoted[column_name] }}{% if not loop.last -%}, {%- endif %}
{%- endfor %}
{%- if not loop.last %}
union all
{% endif %}
{%- endfor -%}
{%- endif -%}
{% endmacro %}ェdepends_on※macros其macro.dbt.format_rowォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments塔、name、rows、typeタォdescriptionΖnameケcolumn_name_to_data_types、typeタォdescriptionΖnameオcolumn_name_to_quoted、typeタォdescriptionェcreated_atヒAレ萌Bメヲsupported_languagesタエmacro.dbt.format_row゙、nameェformat_rowュresource_type・macroャpackage_name」dbt、pathル(macros/unit_test_sql/get_fixture_sql.sqlイoriginal_file_pathル(macros/unit_test_sql/get_fixture_sql.sqlゥunique_idエmacro.dbt.format_rowゥmacro_sqlレ
{%- macro format_row(row, column_name_to_data_types) -%}
{#-- generate case-insensitive formatted row --#}
{% set formatted_row = {} %}
{%- for column_name, column_value in row.items() -%}
{% set column_name = column_name|lower %}
{%- if column_name not in column_name_to_data_types %}
{#-- if user-provided row contains column name that relation does not contain, raise an error --#}
{% set fixture_name = "expected output" if model.resource_type == 'unit_test' else ("'" ~ model.name ~ "'") %}
{{ exceptions.raise_compiler_error(
"Invalid column name: '" ~ column_name ~ "' in unit test fixture for " ~ fixture_name ~ "."
"\nAccepted columns for " ~ fixture_name ~ " are: " ~ (column_name_to_data_types.keys()|list)
) }}
{%- endif -%}
{%- set column_type = column_name_to_data_types[column_name] %}
{#-- For string fixture values, strip varchar length to prevent silent truncation (GH-11974) --#}
{%- if column_value is string and 'varying' in column_type -%}
{%- set column_type = column_type.split('(')[0] -%}
{%- endif -%}
{#-- sanitize column_value: wrap yaml strings in quotes, apply cast --#}
{%- set column_value_clean = column_value -%}
{%- if column_value is string -%}
{%- set column_value_clean = dbt.string_literal(dbt.escape_single_quotes(column_value)) -%}
{%- elif column_value is none -%}
{%- set column_value_clean = 'null' -%}
{%- endif -%}
{%- set row_update = {column_name: safe_cast(column_value_clean, column_type) } -%}
{%- do formatted_row.update(row_update) -%}
{%- endfor -%}
{{ return(formatted_row) }}
{%- endmacro -%}
ェdepends_on※macros萄macro.dbt.string_literalセmacro.dbt.escape_single_quotesウmacro.dbt.safe_castォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name」row、typeタォdescriptionΖnameケcolumn_name_to_data_types、typeタォdescriptionェcreated_atヒAレ萌Bメョsupported_languagesタソmacro.dbt.validate_fixture_rows゙、nameオvalidate_fixture_rowsュresource_type・macroャpackage_name」dbt、pathル(macros/unit_test_sql/get_fixture_sql.sqlイoriginal_file_pathル(macros/unit_test_sql/get_fixture_sql.sqlゥunique_idソmacro.dbt.validate_fixture_rowsゥmacro_sqlル學%- macro validate_fixture_rows(rows, row_number) -%}
{{ return(adapter.dispatch('validate_fixture_rows', 'dbt')(rows, row_number)) }}
{%- endmacro -%}
ェdepends_on※macros胎(macro.dbt.default__validate_fixture_rowsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name、rows、typeタォdescriptionΖnameェrow_number、typeタォdescriptionェcreated_atヒAレ萌Bメー`ウsupported_languagesタル(macro.dbt.default__validate_fixture_rows゙、nameセdefault__validate_fixture_rowsュresource_type・macroャpackage_name」dbt、pathル(macros/unit_test_sql/get_fixture_sql.sqlイoriginal_file_pathル(macros/unit_test_sql/get_fixture_sql.sqlゥunique_idル(macro.dbt.default__validate_fixture_rowsゥmacro_sqlル畜%- macro default__validate_fixture_rows(rows, row_number) -%}
{# This is an abstract method for adapter overrides as needed #}
{%- endmacro -%}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments茶、name、rows、typeタォdescriptionΖnameェrow_number、typeタォdescriptionェcreated_atヒAレ萌Bメアウsupported_languagesタシmacro.dbt.resolve_model_name゙、nameイresolve_model_nameュresource_type・macroャpackage_name」dbt、pathセmacros/python_model/python.sqlイoriginal_file_pathセmacros/python_model/python.sqlゥunique_idシmacro.dbt.resolve_model_nameゥmacro_sqlル捜% macro resolve_model_name(input_model_name) %}
{{ return(adapter.dispatch('resolve_model_name', 'dbt')(input_model_name)) }}
{% endmacro %}ェdepends_on※macros胎%macro.dbt.default__resolve_model_nameォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameーinput_model_name、typeタォdescriptionェcreated_atヒAレ萌Bメカ垉supported_languagesタル%macro.dbt.default__resolve_model_name゙、nameサdefault__resolve_model_nameュresource_type・macroャpackage_name」dbt、pathセmacros/python_model/python.sqlイoriginal_file_pathセmacros/python_model/python.sqlゥunique_idル%macro.dbt.default__resolve_model_nameゥmacro_sqlル
{%- macro default__resolve_model_name(input_model_name) -%}
{{ input_model_name | string | replace('"', '\"') }}
{%- endmacro -%}
ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、nameーinput_model_name、typeタォdescriptionェcreated_atヒAレ萌Bメキ「ウsupported_languagesタシmacro.dbt.build_ref_function゙、nameイbuild_ref_functionュresource_type・macroャpackage_name」dbt、pathセmacros/python_model/python.sqlイoriginal_file_pathセmacros/python_model/python.sqlゥunique_idシmacro.dbt.build_ref_functionゥmacro_sqlレ% macro build_ref_function(model) %}
{%- set ref_dict = {} -%}
{%- for _ref in model.refs -%}
{% set _ref_args = [_ref.get('package'), _ref['name']] if _ref.get('package') else [_ref['name'],] %}
{%- set resolved = ref(*_ref_args, v=_ref.get('version')) -%}
{#
We want to get the string of the returned relation by calling .render() in order to skip sample/empty
mode rendering logic. However, people override the default ref macro, and often return a string instead
of a relation (like the ref macro does by default). Thus, to make sure we dont blow things up, we have
to ensure the resolved relation has a .render() method.
#}
{%- if resolved.render is defined and resolved.render is callable -%}
{%- set resolved = resolved.render() -%}
{%- endif -%}
{%- if _ref.get('version') -%}
{% do _ref_args.extend(["v" ~ _ref['version']]) %}
{%- endif -%}
{%- do ref_dict.update({_ref_args | join('.'): resolve_model_name(resolved)}) -%}
{%- endfor -%}
def ref(*args, **kwargs):
refs = {{ ref_dict | tojson }}
key = '.'.join(args)
version = kwargs.get("v") or kwargs.get("version")
if version:
key += f".v{version}"
dbt_load_df_function = kwargs.get("dbt_load_df_function")
return dbt_load_df_function(refs[key])
{% endmacro %}ェdepends_on※macros他macro.dbt.resolve_model_nameォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・model、typeタォdescriptionェcreated_atヒAレ萌Bメス゚ウsupported_languagesタソmacro.dbt.build_source_function゙、nameオbuild_source_functionュresource_type・macroャpackage_name」dbt、pathセmacros/python_model/python.sqlイoriginal_file_pathセmacros/python_model/python.sqlゥunique_idソmacro.dbt.build_source_functionゥmacro_sqlレサ{% macro build_source_function(model) %}
{%- set source_dict = {} -%}
{%- for _source in model.sources -%}
{%- set resolved = source(*_source) -%}
{%- do source_dict.update({_source | join('.'): resolve_model_name(resolved)}) -%}
{%- endfor -%}
def source(*args, dbt_load_df_function):
sources = {{ source_dict | tojson }}
key = '.'.join(args)
return dbt_load_df_function(sources[key])
{% endmacro %}ェdepends_on※macros他macro.dbt.resolve_model_nameォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・model、typeタォdescriptionェcreated_atヒAレ萌Bメタzウsupported_languagesタサmacro.dbt.build_config_dict゙、nameアbuild_config_dictュresource_type・macroャpackage_name」dbt、pathセmacros/python_model/python.sqlイoriginal_file_pathセmacros/python_model/python.sqlゥunique_idサmacro.dbt.build_config_dictゥmacro_sqlレ% macro build_config_dict(model) %}
{%- set config_dict = {} -%}
{% set config_dbt_used = zip(model.config.config_keys_used, model.config.config_keys_defaults) | list %}
{%- for key, default in config_dbt_used -%}
{# weird type testing with enum, would be much easier to write this logic in Python! #}
{%- if key == "language" -%}
{%- set value = "python" -%}
{%- endif -%}
{%- set value = model.config.get(key, default) -%}
{%- do config_dict.update({key: value}) -%}
{%- endfor -%}
{# Handle dbt.config.meta_get() calls - use separate dict to avoid overwriting native configs #}
{%- set meta_dict = {} -%}
{%- if model.config.meta_keys_used -%}
{% set meta_dbt_used = zip(model.config.meta_keys_used, model.config.meta_keys_defaults) | list %}
{%- for key, default in meta_dbt_used -%}
{%- if model.config.meta and key in model.config.meta -%}
{%- set value = model.config.meta[key] -%}
{%- else -%}
{%- set value = default -%}
{%- endif -%}
{%- do meta_dict.update({key: value}) -%}
{%- endfor -%}
{%- endif -%}
config_dict = {{ config_dict }}
meta_dict = {{ meta_dict }}
{% endmacro %}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・model、typeタォdescriptionェcreated_atヒAレ萌Bメヌーウsupported_languagesタサmacro.dbt.py_script_postfix゙、nameアpy_script_postfixュresource_type・macroャpackage_name」dbt、pathセmacros/python_model/python.sqlイoriginal_file_pathセmacros/python_model/python.sqlゥunique_idサmacro.dbt.py_script_postfixゥmacro_sqlレ{% macro py_script_postfix(model) %}
# This part is user provided model code
# you will need to copy the next section to run the code
# COMMAND ----------
# this part is dbt logic for get ref work, do not modify
{{ build_ref_function(model ) }}
{{ build_source_function(model ) }}
{{ build_config_dict(model) }}
class config:
def __init__(self, *args, **kwargs):
pass
@staticmethod
def get(key, default=None):
return config_dict.get(key, default)
@staticmethod
def meta_get(key, default=None):
return meta_dict.get(key, default)
class this:
"""dbt.this() or dbt.this.identifier"""
database = "{{ this.database }}"
schema = "{{ this.schema }}"
identifier = "{{ this.identifier }}"
{% set this_relation_name = resolve_model_name(this) %}
def __repr__(self):
return '{{ this_relation_name }}'
class dbtObj:
def __init__(self, load_df_function) -> None:
self.source = lambda *args: source(*args, dbt_load_df_function=load_df_function)
self.ref = lambda *args, **kwargs: ref(*args, **kwargs, dbt_load_df_function=load_df_function)
self.config = config
self.this = this()
self.is_incremental = {{ is_incremental() }}
# COMMAND ----------
{{py_script_comment()}}
{% endmacro %}ェdepends_on※macros名macro.dbt.build_ref_functionソmacro.dbt.build_source_functionサmacro.dbt.build_config_dictシmacro.dbt.resolve_model_nameクmacro.dbt.is_incrementalサmacro.dbt.py_script_commentォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments巣、name・model、typeタォdescriptionェcreated_atヒAレ萌Bメハ箋supported_languagesタサmacro.dbt.py_script_comment゙、nameアpy_script_commentュresource_type・macroャpackage_name」dbt、pathセmacros/python_model/python.sqlイoriginal_file_pathセmacros/python_model/python.sqlゥunique_idサmacro.dbt.py_script_commentゥmacro_sqlル*{%macro py_script_comment()%}
{%endmacro%}ェdepends_on※macros性description、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメヒmウsupported_languagesタオmacro.dbt.test_unique゙、nameォtest_uniqueュresource_type・macroャpackage_name」dbt、pathケtests/generic/builtin.sqlイoriginal_file_pathケtests/generic/builtin.sqlゥunique_idオmacro.dbt.test_uniqueゥmacro_sqlル倍% test unique(model, column_name) %}
{% set macro = adapter.dispatch('test_unique', 'dbt') %}
{{ macro(model, column_name) }}
{% endtest %}ェdepends_on※macros太macro.dbt.default__test_uniqueォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメホヲウsupported_languagesタキmacro.dbt.test_not_null゙、nameュtest_not_nullュresource_type・macroャpackage_name」dbt、pathケtests/generic/builtin.sqlイoriginal_file_pathケtests/generic/builtin.sqlゥunique_idキmacro.dbt.test_not_nullゥmacro_sqlル% test not_null(model, column_name) %}
{% set macro = adapter.dispatch('test_not_null', 'dbt') %}
{{ macro(model, column_name) }}
{% endtest %}ェdepends_on※macros胎 macro.dbt.default__test_not_nullォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌BメミJウsupported_languagesタセmacro.dbt.test_accepted_values゙、nameエtest_accepted_valuesュresource_type・macroャpackage_name」dbt、pathケtests/generic/builtin.sqlイoriginal_file_pathケtests/generic/builtin.sqlゥunique_idセmacro.dbt.test_accepted_valuesゥmacro_sqlルノ{% test accepted_values(model, column_name, values, quote=True) %}
{% set macro = adapter.dispatch('test_accepted_values', 'dbt') %}
{{ macro(model, column_name, values, quote) }}
{% endtest %}ェdepends_on※macros胎'macro.dbt.default__test_accepted_valuesォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメメ5ウsupported_languagesタシmacro.dbt.test_relationships゙、nameイtest_relationshipsュresource_type・macroャpackage_name」dbt、pathケtests/generic/builtin.sqlイoriginal_file_pathケtests/generic/builtin.sqlゥunique_idシmacro.dbt.test_relationshipsゥmacro_sqlルク{% test relationships(model, column_name, to, field) %}
{% set macro = adapter.dispatch('test_relationships', 'dbt') %}
{{ macro(model, column_name, to, field) }}
{% endtest %}ェdepends_on※macros胎%macro.dbt.default__test_relationshipsォdescription、meta€、docsうshowテェnode_colorタヲconfigうmeta€、docsうshowテェnode_colorタェpatch_pathタゥarguments征created_atヒAレ萌Bメヨゥウsupported_languagesタ、docsdoc.dbt.__overview__nameャ__overview__ュresource_type」docャpackage_name」dbt、pathォoverview.mdイoriginal_file_pathーdocs/overview.mdゥunique_idエdoc.dbt.__overview__ョblock_contentsレ### Welcome!
Welcome to the auto-generated documentation for your dbt project!
### Navigation
You can use the `Project` and `Database` navigation tabs on the left side of the window to explore the models
in your project.
#### Project Tab
The `Project` tab mirrors the directory structure of your dbt project. In this tab, you can see all of the
models defined in your dbt project, as well as models imported from dbt packages.
#### Database Tab
The `Database` tab also exposes your models, but in a format that looks more like a database explorer. This view
shows relations (tables and views) grouped into database schemas. Note that ephemeral models are _not_ shown
in this interface, as they do not exist in the database.
### Graph Exploration
You can click the blue icon on the bottom-right corner of the page to view the lineage graph of your models.
On model pages, you'll see the immediate parents and children of the model you're exploring. By clicking the `Expand`
button at the top-right of this lineage pane, you'll be able to see all of the models that are used to build,
or are built from, the model you're exploring.
Once expanded, you'll be able to use the `--select` and `--exclude` model selection syntax to filter the
models in the graph. For more information on model selection, check out the [dbt docs](https://docs.getdbt.com/docs/model-selection-syntax).
Note that you can also right-click on models to interactively filter and explore the graph.
---
### More information
- [What is dbt](https://docs.getdbt.com/docs/introduction)?
- Read the [dbt viewpoint](https://docs.getdbt.com/docs/viewpoint)
- [Installation](https://docs.getdbt.com/docs/installation)
- Join the [dbt Community](https://www.getdbt.com/community/) for questions and discussionゥexposures€ゥfunctions€ァmetrics€ヲgroups€ゥselectors€・files゙オル.school_compare://macros/parse_ofsted_grade.sqlpath┓searched_pathヲmacrosュrelative_pathカparse_ofsted_grade.sqlアmodification_timeヒAレ憲1)ャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@941d9d7c23a15cf09d5cd05bd571b211a34d02e518abaa4bcf9b1c103f9f673aャproject_nameョschool_compareッparse_file_type・macroヲmacros胎'macro.school_compare.parse_ofsted_gradeル3school_compare://macros/validate_uk_coordinates.sqlpath┓searched_pathヲmacrosュrelative_pathサvalidate_uk_coordinates.sqlアmodification_timeヒAレ憲1)$ャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@cf0e984a8be23e9468bacda68402291381d55d51effb28534b4519d8b53ae074ャproject_nameョschool_compareッparse_file_type・macroヲmacros胎,macro.school_compare.validate_uk_coordinatesル3school_compare://macros/parse_report_card_grade.sqlpath┓searched_pathヲmacrosュrelative_pathサparse_report_card_grade.sqlアmodification_timeヒAレ=ケ
ャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@02c3f06c5966e84743a49015ee36adde573d677d867309c3c3498de126d04fa3ャproject_nameョschool_compareッparse_file_type・macroヲmacros胎,macro.school_compare.parse_report_card_gradeル2school_compare://macros/parse_ungraded_outcome.sqlpath┓searched_pathヲmacrosュrelative_pathコparse_ungraded_outcome.sqlアmodification_timeヒAレ楚タイャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@c37f3dad7f5e5f55b2ea33d3111549088e96d2971419894df944730bfbd10ee3ャproject_nameョschool_compareッparse_file_type・macroヲmacros胎+macro.school_compare.parse_ungraded_outcomeル0school_compare://macros/generate_schema_name.sqlpath┓searched_pathヲmacrosュrelative_pathクgenerate_schema_name.sqlアmodification_timeヒAレ憲1)錂ャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@69a140f645004e87f28444e8aeea1c614b773817e41d12299965bc1707d89fc3ャproject_nameョschool_compareッparse_file_type・macroヲmacros胎)macro.school_compare.generate_schema_nameル(school_compare://macros/safe_numeric.sqlpath┓searched_pathヲmacrosュrelative_pathーsafe_numeric.sqlアmodification_timeヒAレ憲1)Eャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@3a5f63a7720b15a5f10f006bbf746c56b322251aa87f2f1beb792caef8dcc42dャproject_nameョschool_compareッparse_file_type・macroヲmacros胎!macro.school_compare.safe_numericル)school_compare://macros/chain_lineage.sqlpath┓searched_pathヲmacrosュrelative_pathアchain_lineage.sqlアmodification_timeヒAレ憲1)ャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@d7dda98a59eb71174146cc7a743dd0d26c3d99adbd101499dbb49d40d1f42abcャproject_nameョschool_compareッparse_file_type・macroヲmacros胎"macro.school_compare.chain_lineageル2school_compare://models/staging/stg_legacy_ks4.sqlpath┓searched_pathヲmodelsュrelative_pathコstaging/stg_legacy_ks4.sqlアmodification_timeヒAレ=ケ
ャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@794d61332074548bb35a4f49835f8046fb1422695f926d166828f5e423e149dbャproject_nameョschool_compareッparse_file_type・model・nodes胎#model.school_compare.stg_legacy_ks4ル2school_compare://models/staging/stg_gias_links.sqlpath┓searched_pathヲmodelsュrelative_pathコstaging/stg_gias_links.sqlアmodification_timeヒAレ憲1*ムャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@b63bd2f36eeb2be840a344365a68879242e5cb3310d7a74e7071fe7f6a9724fcャproject_nameョschool_compareッparse_file_type・model・nodes胎#model.school_compare.stg_gias_linksル2school_compare://models/staging/stg_legacy_ks2.sqlpath┓searched_pathヲmodelsュrelative_pathコstaging/stg_legacy_ks2.sqlアmodification_timeヒAレ=ケ:・ャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@d57ce51603d2a1d2945690ba863dca576a96b07b24187f0d603eba40602a2f3aャproject_nameョschool_compareッparse_file_type・model・nodes胎#model.school_compare.stg_legacy_ks2ル;school_compare://models/staging/stg_gias_establishments.sqlpath┓searched_pathヲmodelsュrelative_pathル#staging/stg_gias_establishments.sqlアmodification_timeヒAレコxYyャproject_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@f441ba1ec21d49447e34206e11189040431a3dd525e4a51bc40e8c7c2ba032b0ャproject_nameョschool_compareッparse_file_type・model・nodes胎,model.school_compare.stg_gias_establishmentsル4school_compare://models/staging/stg_fbit_finance.sqlpath┓searched_pathヲmodelsュrelative_pathシstaging/stg_fbit_finance.sqlアmodification_timeヒAレ憲1*抦project_rootル7/Users/tudor/projects/school_compare/pipeline/transformィchecksumうnameヲsha256ィchecksumル@bc4c4b98c46a4a6122258cb6115f9418db5827b47cebc20a2c97641c6e90f1a2ャproject_nameョschool_compareッparse_file_type・model・nodes胎%model.school_compare.stg_fbit_financeル2school_compare://models/staging/stg_ees_census.sqlpath┓searched_pathヲmodelsュrelative_pathコstaging/stg_ees_census.sqlアmodification_t