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
This commit is contained in:
parent
2f80642f6c
commit
9ba0edb82d
12 changed files with 197 additions and 416 deletions
53
models/intermediate/kpis/int_kpis__agg_dates_main_kpis.sql
Normal file
53
models/intermediate/kpis/int_kpis__agg_dates_main_kpis.sql
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
{% 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 %}
|
||||
|
|
@ -41,14 +41,14 @@ models:
|
|||
- name: first_day_month
|
||||
data_type: date
|
||||
description: |
|
||||
First day of the month correspoding to the date field.
|
||||
First day of the month corresponding to the date field.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
- name: last_day_month
|
||||
data_type: date
|
||||
description: |
|
||||
Last day of the month correspoding to the date field.
|
||||
Last day of the month corresponding to the date field.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
|
|
@ -103,6 +103,91 @@ models:
|
|||
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.
|
||||
It encapsulates the multiple manners to present data in the reporting, namely, Monthly+MTD
|
||||
per a given dimension or specifically Monthly by Deal.
|
||||
The rest of the metrics computed are attached to this master table.
|
||||
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- date
|
||||
- dimension
|
||||
- dimension_value
|
||||
|
||||
columns:
|
||||
- name: date
|
||||
data_type: date
|
||||
description: |
|
||||
The end date of the time range considered for the metrics that will be
|
||||
available in this record.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
- name: dimension
|
||||
data_type: string
|
||||
description: The dimension or granularity of the metrics.
|
||||
tests:
|
||||
- accepted_values:
|
||||
values:
|
||||
- global
|
||||
- by_number_of_listings
|
||||
- by_billing_country
|
||||
- by_deal
|
||||
|
||||
- name: dimension_value
|
||||
data_type: string
|
||||
description: The value or segment available for the selected dimension.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
- name: year
|
||||
data_type: int
|
||||
description: Year number of the given date.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
- name: month
|
||||
data_type: int
|
||||
description: Month number of the given date.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
- name: day
|
||||
data_type: int
|
||||
description: Day monthly number of the given date.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
- name: first_day_month
|
||||
data_type: date
|
||||
description: |
|
||||
First day of the month corresponding to the date field.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
- name: last_day_month
|
||||
data_type: date
|
||||
description: |
|
||||
Last day of the month corresponding to the date field.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
- name: is_end_of_month
|
||||
data_type: boolean
|
||||
description: True if it's end of month, false otherwise.
|
||||
tests:
|
||||
- not_null
|
||||
|
||||
- name: is_current_month
|
||||
data_type: boolean
|
||||
description: |
|
||||
True if the date is within the current month, 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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue