# Description The model `stg_core__superhog_user` contained the fields `created_date_utc` and `updated_date_utc`, which were actually timestamps, not dates. This created issues a while ago in KPIs that were fixed by forcing a date conversion at `int_kpis` level, but the source issue remained unfixed. This PR just creates the proper fields in staging, meaning: * `created_at_utc` and `created_date_utc` * `updated_at_utc` and `updated_date_utc` And propagates the changes through all dependencies. On KPIs, it also removes the hardcoded date conversion since it's no longer needed. It also adds the different schema entries on which these fields were already defined. Note I didn't update the staging entry since there's no entry for the rest of the fields. I recommend checking this PR in the commits order. What I've tested: * Unified User and User Host have plenty of dependencies that I've checked one by one, at each dependency layer by using dbt docs. * Run `core__unified_user` and the full execution of +`mtd_aggregated_metrics` What clearly will fail: * There's the famous `Users_dashboard` PBI report that shouldn't exist that has a dependency with `core__unified_user`. This report will fail. But it does not exist. I'd like to drop it once and forever # Checklist - [X] The edited models and dependants run properly with production data. **See above** - [X] The edited models are sufficiently documented. - [X] The edited models contain PK tests, and I've ran and passed them. - [X] I have checked for DRY opportunities with other models and docs. - [X] I've picked the right materialization for the affected models. # Other - [X] Check if a full-refresh is required after this PR is merged. **The staging model is incremental!** Related work items: #23703
57 lines
1.9 KiB
SQL
57 lines
1.9 KiB
SQL
{% set dimensions = get_kpi_dimensions_per_model("") %}
|
|
|
|
{{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }}
|
|
|
|
with
|
|
daily_dim as (
|
|
select distinct
|
|
ikdd.year,
|
|
ikdd.month,
|
|
ikdd.day,
|
|
ikdd.date,
|
|
-- Dimensions --
|
|
coalesce(icuh.id_deal, 'UNSET') as id_deal,
|
|
coalesce(
|
|
icd.main_billing_country_iso_3_per_deal, 'UNSET'
|
|
) as main_billing_country_iso_3_per_deal,
|
|
coalesce(
|
|
icmas.active_accommodations_per_deal_segmentation, 'UNSET'
|
|
) as active_accommodations_per_deal_segmentation,
|
|
ikdd.first_day_month,
|
|
ikdd.last_day_month,
|
|
ikdd.is_end_of_month,
|
|
ikdd.is_current_month,
|
|
case
|
|
when ikdd.is_yesterday or ikdd.is_end_of_month then true else false
|
|
end as is_end_of_month_or_yesterday
|
|
from {{ ref("int_kpis__dimension_dates") }} as ikdd
|
|
left join
|
|
{{ ref("int_core__user_host") }} as icuh
|
|
on ikdd.date >= icuh.created_date_utc
|
|
left join {{ ref("int_core__deal") }} as icd on icuh.id_deal = icd.id_deal
|
|
left join
|
|
{{ ref("int_kpis__dimension_daily_accommodation") }} as icmas
|
|
on icuh.id_deal = icmas.id_deal
|
|
and ikdd.date = icmas.date
|
|
where (ikdd.is_month_to_date = true or ikdd.is_end_of_month)
|
|
)
|
|
|
|
{% for dimension in dimensions %}
|
|
select distinct
|
|
year,
|
|
month,
|
|
day,
|
|
date,
|
|
{{ dimension.dimension }} as dimension,
|
|
{{ dimension.dimension_value }} as dimension_value,
|
|
first_day_month,
|
|
last_day_month,
|
|
is_end_of_month,
|
|
is_current_month,
|
|
is_end_of_month_or_yesterday
|
|
from daily_dim
|
|
where {{ dimension.dimension_value }} <> 'UNSET'
|
|
{% if not loop.last %}
|
|
union all
|
|
{% endif %}
|
|
{% endfor %}
|