# Description Changes: * Creates lifecycle_daily_deal, metric_daily_deals and agg_daily_deals. These follow a different strategy due to the nature of the metrics * Modifies the dimension macro to ensure deal dimension is included in all models except these ones * Fixes production issue on currently deployed deal lifecycle and 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: #23566
131 lines
4.2 KiB
SQL
131 lines
4.2 KiB
SQL
/*
|
|
Macro: get_kpi_dimensions
|
|
|
|
Provides a general configuration for the Dimensions available for the KPIs.
|
|
Please note that strings should be encoded with " ' your_value_here ' ",
|
|
while fields from tables should be specified like " your_field_here "
|
|
*/
|
|
{% macro get_kpi_dimensions() %}
|
|
{% set dimensions = [
|
|
{"dimension": "'global'", "dimension_value": "'global'"},
|
|
{
|
|
"dimension": "'by_number_of_listings'",
|
|
"dimension_value": "active_accommodations_per_deal_segmentation",
|
|
},
|
|
{
|
|
"dimension": "'by_billing_country'",
|
|
"dimension_value": "main_billing_country_iso_3_per_deal",
|
|
},
|
|
] %}
|
|
{{ return(dimensions) }}
|
|
{% endmacro %}
|
|
|
|
|
|
/*
|
|
Macro: get_kpi_dimensions_for_production
|
|
|
|
Provides the list of Dimensions that will be available in production for the KPIs.
|
|
This configuration ensures that working with new dimensions won't affect the display
|
|
until all development work has been done.
|
|
Additionally, 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 Booked in 12 Months'",
|
|
},
|
|
{
|
|
"dimension": "'by_billing_country'",
|
|
"dimension_display": "'By Billing Country'",
|
|
},
|
|
] %}
|
|
{{ return(dimensions) }}
|
|
{% 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_dash() %}
|
|
{{ return({"dimension": "'by_dash_source'", "dimension_value": "dash_source"}) }}
|
|
{% 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: get_kpi_dimensions_per_model
|
|
|
|
Provides a general assignemnt 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 == "CREATED_BOOKINGS" %}
|
|
{% set additional_dimensions = additional_dimensions + [dim_dash()] %}
|
|
{% endif %}
|
|
|
|
{# Add entity-specific dimensions #}
|
|
{% if entity_name == "CHECK_IN_ATTRIBUTED_GUEST_JOURNEYS" %}
|
|
{% set additional_dimensions = additional_dimensions + [
|
|
dim_has_payment(),
|
|
dim_has_id_check(),
|
|
] %}
|
|
{% endif %}
|
|
|
|
{# Combine base dimensions with additional dimensions for the specific model #}
|
|
{% set dimensions = base_dimensions + additional_dimensions %}
|
|
{{ return(dimensions) }}
|
|
{% endmacro %}
|