data-dwh-dbt-project/macros/business_kpis_configuration.sql
Oriol Roqué Paniagua a690ca6eac Merged PR 4400: Adds Billable Bookings split per scope
# Description

Changes:
* Adds Business Scope split on Billable Bookings + propagates towards Agg/Metric Monthly/MTD models

This is a temporary modification until the ticket on Billable Bookings for New Dash is handled.

# 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.
- [ ] I have checked for DRY opportunities with other models and docs.
- [ ] 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: #27356
2025-02-14 12:29:18 +00:00

189 lines
5.5 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_kpi_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'",
},
] %}
{{ 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 != "DEALS" %}
{% set additional_dimensions = additional_dimensions + [dim_deal()] %}
{% endif %}
{# Add entity-specific dimensions #}
{% if entity_name in [
"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",
] %}
{% 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 == "NEW_DASH_CREATED_SERVICES" %}
{% set additional_dimensions = additional_dimensions + [
dim_has_upgraded_service(),
dim_new_dash_version(),
dim_pricing_service(),
dim_pricing_business_type(),
] %}
{% endif %}
{% if entity_name == "NEW_DASH_CHARGEABLE_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 %}