diff --git a/macros/business_kpis_configuration.sql b/macros/business_kpis_configuration.sql index 321559c..11e4aaf 100644 --- a/macros/business_kpis_configuration.sql +++ b/macros/business_kpis_configuration.sql @@ -171,16 +171,13 @@ Provides a general assignement for the Dimensions available for each KPI ] %} {% endif %} - {% if entity_name == "NEW_DASH" %} - {% 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_DEALS_OFFERED_SERVICES" %} + {% 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(), diff --git a/macros/generate_kpis_aggregation.sql b/macros/generate_kpis_aggregation.sql deleted file mode 100644 index 5ce9bbc..0000000 --- a/macros/generate_kpis_aggregation.sql +++ /dev/null @@ -1,23 +0,0 @@ -{% macro generate_kpis_aggregation(time_granularity, agg_models) %} - select - d.date, - '{{ time_granularity }}' as time_granularity, - d.dimension, - d.dimension_value - {%- for agg_model in agg_models if time_granularity in agg_model["name"] %} - {%- for metric in agg_model["metrics"] %} - , coalesce({{ ref(agg_model["name"]) }}.{{ metric }}, 0) as {{ metric }} - {%- endfor %} - {%- endfor %} - from all_dates d - {%- for agg_model in agg_models if time_granularity in agg_model["name"] %} - left join - {{ ref(agg_model["name"]) }} - on d.date = {{ ref(agg_model["name"]) }}.{{ agg_model["date_field"] }} - and d.dimension = {{ ref(agg_model["name"]) }}.dimension - and d.dimension_value = {{ ref(agg_model["name"]) }}.dimension_value - {%- endfor %} - {% if time_granularity == "weekly" %} where d.is_end_of_week - {% elif time_granularity == "monthly" %} where d.is_end_of_month - {% endif %} -{% endmacro %} diff --git a/models/intermediate/kpis/int_kpis__agg_daily_new_dash_accommodation_offered_services.sql b/models/intermediate/kpis/int_kpis__agg_daily_new_dash_accommodation_offered_services.sql index 3c00223..080395d 100644 --- a/models/intermediate/kpis/int_kpis__agg_daily_new_dash_accommodation_offered_services.sql +++ b/models/intermediate/kpis/int_kpis__agg_daily_new_dash_accommodation_offered_services.sql @@ -1,4 +1,6 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model( + "NEW_DASH_ACCOMMODATION_OFFERED_SERVICES" +) %} {{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }} diff --git a/models/intermediate/kpis/int_kpis__agg_daily_new_dash_chargeable_services.sql b/models/intermediate/kpis/int_kpis__agg_daily_new_dash_chargeable_services.sql index 7802dc3..2b66697 100644 --- a/models/intermediate/kpis/int_kpis__agg_daily_new_dash_chargeable_services.sql +++ b/models/intermediate/kpis/int_kpis__agg_daily_new_dash_chargeable_services.sql @@ -1,4 +1,4 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH_CHARGEABLE_SERVICES") %} {{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }} diff --git a/models/intermediate/kpis/int_kpis__agg_daily_new_dash_created_bookings.sql b/models/intermediate/kpis/int_kpis__agg_daily_new_dash_created_bookings.sql index 4fae871..77dd889 100644 --- a/models/intermediate/kpis/int_kpis__agg_daily_new_dash_created_bookings.sql +++ b/models/intermediate/kpis/int_kpis__agg_daily_new_dash_created_bookings.sql @@ -1,4 +1,4 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH_CREATED_BOOKINGS") %} {{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }} diff --git a/models/intermediate/kpis/int_kpis__agg_daily_new_dash_created_services.sql b/models/intermediate/kpis/int_kpis__agg_daily_new_dash_created_services.sql index f3f74c2..2b1ac06 100644 --- a/models/intermediate/kpis/int_kpis__agg_daily_new_dash_created_services.sql +++ b/models/intermediate/kpis/int_kpis__agg_daily_new_dash_created_services.sql @@ -1,4 +1,4 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH_CREATED_SERVICES") %} {{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }} diff --git a/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_accommodation_offered_services.sql b/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_accommodation_offered_services.sql index 64ce35e..7d82a9c 100644 --- a/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_accommodation_offered_services.sql +++ b/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_accommodation_offered_services.sql @@ -1,4 +1,6 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model( + "NEW_DASH_ACCOMMODATION_OFFERED_SERVICES" +) %} {{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }} diff --git a/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_chargeable_services.sql b/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_chargeable_services.sql index ab73cb5..f28c863 100644 --- a/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_chargeable_services.sql +++ b/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_chargeable_services.sql @@ -1,4 +1,4 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH_CHARGEABLE_SERVICES") %} {{ config( diff --git a/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_created_bookings.sql b/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_created_bookings.sql index 9239d5c..185c844 100644 --- a/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_created_bookings.sql +++ b/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_created_bookings.sql @@ -1,4 +1,4 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH_CREATED_BOOKINGS") %} {{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }} diff --git a/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_created_services.sql b/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_created_services.sql index 931c761..0525434 100644 --- a/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_created_services.sql +++ b/models/intermediate/kpis/int_kpis__agg_monthly_new_dash_created_services.sql @@ -1,4 +1,4 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH_CREATED_SERVICES") %} {{ config( diff --git a/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_accommodation_offered_services.sql b/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_accommodation_offered_services.sql index 97d8129..a353a74 100644 --- a/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_accommodation_offered_services.sql +++ b/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_accommodation_offered_services.sql @@ -1,4 +1,6 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model( + "NEW_DASH_ACCOMMODATION_OFFERED_SERVICES" +) %} {{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }} diff --git a/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_chargeable_services.sql b/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_chargeable_services.sql index f061305..243a6be 100644 --- a/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_chargeable_services.sql +++ b/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_chargeable_services.sql @@ -1,4 +1,4 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH_CHARGEABLE_SERVICES") %} {{ config( diff --git a/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_created_bookings.sql b/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_created_bookings.sql index 488c312..5bf664a 100644 --- a/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_created_bookings.sql +++ b/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_created_bookings.sql @@ -1,4 +1,4 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH_CREATED_BOOKINGS") %} {{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }} diff --git a/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_created_services.sql b/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_created_services.sql index b27b261..eeb5de1 100644 --- a/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_created_services.sql +++ b/models/intermediate/kpis/int_kpis__agg_weekly_new_dash_created_services.sql @@ -1,4 +1,4 @@ -{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH") %} +{% set dimensions = get_kpi_dimensions_per_model("NEW_DASH_CREATED_SERVICES") %} {{ config( diff --git a/models/intermediate/kpis/int_kpis__product_new_dash_agg_metrics.sql b/models/intermediate/kpis/int_kpis__product_new_dash_agg_metrics.sql index 3efa1a3..f6719e2 100644 --- a/models/intermediate/kpis/int_kpis__product_new_dash_agg_metrics.sql +++ b/models/intermediate/kpis/int_kpis__product_new_dash_agg_metrics.sql @@ -119,11 +119,30 @@ with left join int_kpis__dimension_dates d on c.date = d.date ) -select * -from ({{ generate_kpis_aggregation("daily", agg_models) }}) -union all -select * -from ({{ generate_kpis_aggregation("weekly", agg_models) }}) -union all -select * -from ({{ generate_kpis_aggregation("monthly", agg_models) }}) +{% for time_granularity in ["daily", "weekly", "monthly"] %} + {% if time_granularity != "daily" %} + union all + {% endif %} + + select + d.date, + '{{ time_granularity }}' as time_granularity, + d.dimension, + d.dimension_value + {% for agg_model in agg_models if time_granularity in agg_model["name"] %} + {% for metric in agg_model["metrics"] %} + , coalesce({{ ref(agg_model["name"]) }}.{{ metric }}, 0) as {{ metric }} + {% endfor %} + {% endfor %} + from all_dates d + {% for agg_model in agg_models if time_granularity in agg_model["name"] %} + left join + {{ ref(agg_model["name"]) }} + on d.date = {{ ref(agg_model["name"]) }}.{{ agg_model["date_field"] }} + and d.dimension = {{ ref(agg_model["name"]) }}.dimension + and d.dimension_value = {{ ref(agg_model["name"]) }}.dimension_value + {% endfor %} + {% if time_granularity == "weekly" %} where d.is_end_of_week + {% elif time_granularity == "monthly" %} where d.is_end_of_month + {% endif %} +{% endfor %}