data-dwh-dbt-project/macros/business_kpis_configuration.sql
Oriol Roqué Paniagua ca5db795a3 Merged PR 4946: Allows By Deal dimension to be propagated within intermediate
# Description

To be able to compute By Deal KPIs  similarly as we do for Main KPIs we need to propagate the "By Deal" dimension first in intermediate. This does not impact reporting since there's a macro that already cuts the dimensions to be displayed, but I modified the name so it's clearer.

Changes:
* In `int_mtd_vs_previous_year_metrics`, I added a new `dimension_list`. This is applied to all initial CTEs that filter by dimension. Note that I added here the `by_deal` dimension.
* Modified the name of `get_kpi_dimensions_for_production` to `get_main_kpis_dimensions_for_production`. Now it's more explicit that this is the configuration for Main KPIs reporting. This affects both `business_kpis_configuration` and it's usage in `mtd_aggregated_metrics`.
* Modified the tests in `int_mtd_vs_previous_year_metrics` and `int_mtd_aggregated_metrics` to include the new dimension `by_deal`.
* It seems by adding this now autoformatting works again on this model! I'll tag all cases that are just because of autoformatting.

MD5 trick has been applied in `reporting.mtd_aggregated_metrics`.

# 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: #28998
2025-04-08 05:37:53 +00:00

196 lines
5.6 KiB
SQL

/*
Macro: get_kpi_dimensions_for_production
Provides the list of Dimensions that will be available in production for the Main KPIs.
It provides a proper display name for reporting purposes.
*/
{% macro get_main_kpis_dimensions_for_production() %}
{% set dimensions = [
{"dimension": "'global'", "dimension_display": "'Global'"},
{
"dimension": "'by_number_of_listings'",
"dimension_display": "'By # of Listings'",
},
{
"dimension": "'by_billing_country'",
"dimension_display": "'By Billing Country'",
},
{
"dimension": "'by_business_scope'",
"dimension_display": "'By Business Scope'",
},
] %}
{{ return(dimensions) }}
{% endmacro %}
{% macro capitalise_and_remove_underscores(field_name) %}
initcap(regexp_replace({{ field_name }}, '_', ' ', 'g'))
{% endmacro %}
/*
The following lines specify for each dimension the field to be used in a
standalone macro.
Please note that strings should be encoded with " ' your_value_here ' ",
while fields from tables should be specified like " your_field_here "
*/
{% macro dim_global() %}
{{ return({"dimension": "'global'", "dimension_value": "'global'"}) }}
{% endmacro %}
{% macro dim_billing_country() %}
{{
return(
{
"dimension": "'by_billing_country'",
"dimension_value": "main_billing_country_iso_3_per_deal",
}
)
}}
{% endmacro %}
{% macro dim_number_of_listings() %}
{{
return(
{
"dimension": "'by_number_of_listings'",
"dimension_value": "active_accommodations_per_deal_segmentation",
}
)
}}
{% endmacro %}
{% macro dim_deal() %}
{{ return({"dimension": "'by_deal'", "dimension_value": "id_deal"}) }}
{% endmacro %}
{% macro dim_business_scope() %}
{{
return(
{"dimension": "'by_business_scope'", "dimension_value": "business_scope"}
)
}}
{% endmacro %}
{% macro dim_has_payment() %}
{{ return({"dimension": "'by_has_payment'", "dimension_value": "has_payment"}) }}
{% endmacro %}
{% macro dim_has_id_check() %}
{{ return({"dimension": "'by_has_id_check'", "dimension_value": "has_id_check"}) }}
{% endmacro %}
{% macro dim_has_upgraded_service() %}
{{
return(
{
"dimension": "'by_has_upgraded_service'",
"dimension_value": "is_upgraded_service",
}
)
}}
{% endmacro %}
{% macro dim_pricing_service() %}
{{
return(
{
"dimension": "'by_service'",
"dimension_value": "service_name",
}
)
}}
{% endmacro %}
{% macro dim_pricing_business_type() %}
{{
return(
{
"dimension": "'by_service_business_type'",
"dimension_value": "service_business_type",
}
)
}}
{% endmacro %}
{% macro dim_new_dash_version() %}
{{
return(
{
"dimension": "'by_new_dash_version'",
"dimension_value": "new_dash_version",
}
)
}}
{% endmacro %}
/*
Macro: get_kpi_dimensions_per_model
Provides a general assignement for the Dimensions available for each KPI
model. Keep in mind that these assignations need to be previously
declared.
*/
{% macro get_kpi_dimensions_per_model(entity_name) %}
{# Base dimensions shared by all models #}
{% set base_dimensions = [
dim_global(),
dim_number_of_listings(),
dim_billing_country(),
] %}
{# Initialize a list to hold any model-specific dimensions #}
{% set additional_dimensions = [] %}
{# Adds Deal dimension to all models except DEAL metrics #}
{% if entity_name not in [
"DEALS",
"NEW_DASH_DEALS_OFFERED_SERVICES",
"ONBOARDING_MRR",
] %}
{% set additional_dimensions = additional_dimensions + [dim_deal()] %}
{% endif %}
{# Add entity-specific dimensions #}
{% if entity_name in [
"MAIN_KPIS_DATES",
"BILLABLE_BOOKINGS",
"CHECK_OUT_BOOKINGS",
"COMPLETED_GUEST_JOURNEYS",
"CREATED_BOOKINGS",
"CREATED_GUEST_JOURNEYS",
"DEALS",
"GUEST_JOURNEYS_WITH_PAYMENT",
"GUEST_PAYMENTS",
"HOST_RESOLUTIONS",
"INVOICED_REVENUE",
"LISTINGS",
"STARTED_GUEST_JOURNEYS",
"TOTAL_AND_RETAINED_REVENUE",
] %}
{% set additional_dimensions = additional_dimensions + [dim_business_scope()] %}
{% endif %}
{% if entity_name == "CHECK_IN_ATTRIBUTED_GUEST_JOURNEYS" %}
{% set additional_dimensions = additional_dimensions + [
dim_has_payment(),
dim_has_id_check(),
] %}
{% endif %}
{% if entity_name == "GUEST_PAYMENTS" %}
{% set additional_dimensions = additional_dimensions + [
dim_has_id_check(),
] %}
{% endif %}
{% if entity_name in [
"NEW_DASH_CREATED_SERVICES",
"NEW_DASH_CHARGEABLE_SERVICES",
"NEW_DASH_ACCOMMODATION_OFFERED_SERVICES",
"NEW_DASH_CREATED_BOOKINGS",
"NEW_DASH_DEALS_OFFERED_SERVICES",
] %}
{% set additional_dimensions = additional_dimensions + [
dim_has_upgraded_service(),
dim_new_dash_version(),
dim_pricing_service(),
dim_pricing_business_type(),
] %}
{% endif %}
{# Combine base dimensions with additional dimensions for the specific model #}
{% set dimensions = base_dimensions + additional_dimensions %}
{{ return(dimensions) }}
{% endmacro %}