From 06603d01e2ac029eb6bb280c85b29b3d54c89ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oriol=20Roqu=C3=A9=20Paniagua?= Date: Mon, 9 Dec 2024 16:13:52 +0000 Subject: [PATCH] Merged PR 3810: Adds is_end_of_month_or_yesterday for Main KPIs # Description Adds `is_end_of_month_or_yesterday` for Main KPIs. Apparently, the fact that we do not show the ongoing value of the month on some tabs of Main KPIs is the main blocker for Ben C to consistently use Main KPIs, which he actually retrieves from the SH legacy reporting. Since I'm sceptical about the data shown there, I want to remove this blocker. It will require a small PR on PBI as well. # 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. - [NA] 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: #25342 --- .../cross/int_mtd_aggregated_metrics.sql | 1 + .../cross/int_mtd_vs_previous_year_metrics.sql | 2 ++ models/intermediate/cross/schema.yml | 8 +++++++- .../kpis/int_kpis__agg_dates_main_kpis.sql | 8 ++++++-- .../kpis/int_kpis__dimension_dates.sql | 3 ++- models/intermediate/kpis/schema.yml | 14 ++++++++++++++ .../reporting/general/mtd_aggregated_metrics.sql | 3 +++ models/reporting/general/schema.yml | 8 ++++++++ 8 files changed, 43 insertions(+), 4 deletions(-) diff --git a/models/intermediate/cross/int_mtd_aggregated_metrics.sql b/models/intermediate/cross/int_mtd_aggregated_metrics.sql index d2e932e..8d582f2 100644 --- a/models/intermediate/cross/int_mtd_aggregated_metrics.sql +++ b/models/intermediate/cross/int_mtd_aggregated_metrics.sql @@ -452,6 +452,7 @@ with day, is_end_of_month, is_current_month, + is_end_of_month_or_yesterday, first_day_month, date, dimension, diff --git a/models/intermediate/cross/int_mtd_vs_previous_year_metrics.sql b/models/intermediate/cross/int_mtd_vs_previous_year_metrics.sql index 075f3ea..e4848d2 100644 --- a/models/intermediate/cross/int_mtd_vs_previous_year_metrics.sql +++ b/models/intermediate/cross/int_mtd_vs_previous_year_metrics.sql @@ -180,6 +180,7 @@ with d.day, d.is_end_of_month, d.is_current_month, + d.is_end_of_month_or_yesterday, d.first_day_month, d.date, d.dimension, @@ -390,6 +391,7 @@ select current.day, current.is_end_of_month, current.is_current_month, + current.is_end_of_month_or_yesterday, current.first_day_month, current.date, current.dimension, diff --git a/models/intermediate/cross/schema.yml b/models/intermediate/cross/schema.yml index cd6a8e0..a218351 100644 --- a/models/intermediate/cross/schema.yml +++ b/models/intermediate/cross/schema.yml @@ -212,7 +212,13 @@ models: - name: is_end_of_month data_type: boolean - description: is end of month, 1 for yes, 0 for no. + description: True if it's end of month. + tests: + - not_null + + - name: is_end_of_month_or_yesterday + data_type: boolean + description: True if it's end of month or yesterday. tests: - not_null diff --git a/models/intermediate/kpis/int_kpis__agg_dates_main_kpis.sql b/models/intermediate/kpis/int_kpis__agg_dates_main_kpis.sql index deb9a70..ccc377b 100644 --- a/models/intermediate/kpis/int_kpis__agg_dates_main_kpis.sql +++ b/models/intermediate/kpis/int_kpis__agg_dates_main_kpis.sql @@ -20,7 +20,10 @@ with ikdd.first_day_month, ikdd.last_day_month, ikdd.is_end_of_month, - ikdd.is_current_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 @@ -44,7 +47,8 @@ with first_day_month, last_day_month, is_end_of_month, - is_current_month + is_current_month, + is_end_of_month_or_yesterday from daily_dim where {{ dimension.dimension_value }} <> 'UNSET' {% if not loop.last %} diff --git a/models/intermediate/kpis/int_kpis__dimension_dates.sql b/models/intermediate/kpis/int_kpis__dimension_dates.sql index 6b0cb61..5168cf4 100644 --- a/models/intermediate/kpis/int_kpis__dimension_dates.sql +++ b/models/intermediate/kpis/int_kpis__dimension_dates.sql @@ -49,7 +49,8 @@ select distinct when date_trunc('week', rd.date) = date_trunc('week', rd.today) then true else false - end as is_current_week + end as is_current_week, + case when rd.today - rd.date = 1 then true else false end as is_yesterday from raw_dates rd where -- include only up-to yesterday diff --git a/models/intermediate/kpis/schema.yml b/models/intermediate/kpis/schema.yml index 4eb1b7e..d29a941 100644 --- a/models/intermediate/kpis/schema.yml +++ b/models/intermediate/kpis/schema.yml @@ -103,6 +103,13 @@ models: tests: - not_null + - name: is_yesterday + data_type: boolean + description: | + True if the date is yesterday, false otherwise. + tests: + - not_null + - name: int_kpis__agg_dates_main_kpis description: | This model provides the skeleton of dates and dimensions needed for Main KPIs display. @@ -188,6 +195,13 @@ models: tests: - not_null + - name: is_end_of_month_or_yesterday + data_type: boolean + description: | + True if the date is the end of the month OR yesterday, false otherwise. + tests: + - not_null + - name: int_kpis__lifecycle_daily_accommodation description: | This model computes the daily lifecycle segment for each accommodation, also known as diff --git a/models/reporting/general/mtd_aggregated_metrics.sql b/models/reporting/general/mtd_aggregated_metrics.sql index 8600534..16dbb6f 100644 --- a/models/reporting/general/mtd_aggregated_metrics.sql +++ b/models/reporting/general/mtd_aggregated_metrics.sql @@ -26,6 +26,9 @@ select day as day, case when is_end_of_month then 1 else 0 end as is_end_of_month, case when is_current_month then 1 else 0 end as is_current_month, + case + when is_end_of_month_or_yesterday then 1 else 0 + end as is_end_of_month_or_yesterday, first_day_month as first_day_month, date as date, dimension_display as dimension, diff --git a/models/reporting/general/schema.yml b/models/reporting/general/schema.yml index 5a0e07e..d3f32a1 100644 --- a/models/reporting/general/schema.yml +++ b/models/reporting/general/schema.yml @@ -355,6 +355,14 @@ models: tests: - not_null + - name: is_end_of_month_or_yesterday + data_type: boolean + description: | + Checks if the date is end of month or yesterday, + 1 for yes, 0 for no. + tests: + - not_null + - name: first_day_month data_type: date description: |