data-dwh-dbt-project/models/intermediate/kpis/int_kpis__agg_dates_main_kpis.sql
Oriol Roqué Paniagua 9ba0edb82d Merged PR 3482: Adapts date dimension skeleton for Main KPIs
# Description

New model:
* int_kpis__agg_dates_main_kpis - Serves as the skeleton of dates and dimensions for Main KPIs. It's aggregated since it follows a similar aggregation strategy. It's a single model to feed both Main KPIs visualisations. Note boolean fields are real booleans (true/false) while before these were integers (1/0). This also affects downstream models.

Main KPIs flow adaptations to new skeleton model:
* int_monthly_aggregated_metrics_history_by_deal
* int_monthly_churn_metrics - additionally, calls usual KPIs macro instead of old one
* int_mtd_vs_previous_year_metrics

Reporting changes to ensure report is not down:
* mtd_aggregated_metrics - adaptations on booleans (true-1, false-0)

Cleaning:
* get_kpi_dimensions macro is no longer used
* int_dates_by_deal model and schema entry
* int_dates_mtd_by_dimension model and schema entry
* int_dates_mtd model and schema entry

# Checklist

- [X] The edited models and dependants run properly with production data.
- [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

- [ ] Check if a full-refresh is required after this PR is merged.

Related work items: #23763
2024-11-11 15:57:37 +00:00

53 lines
1.7 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
from {{ ref("int_kpis__dimension_dates") }} as ikdd
left join
{{ ref("int_core__user_host") }} as icuh
on ikdd.date >= 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
from daily_dim
where {{ dimension.dimension_value }} <> 'UNSET'
{% if not loop.last %}
union all
{% endif %}
{% endfor %}