From 736d61507512a8a38c6340a4e8b594ecf2d39e9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oriol=20Roqu=C3=A9=20Paniagua?= Date: Thu, 6 Feb 2025 12:01:24 +0000 Subject: [PATCH] Merged PR 4303: Adds Cancelled and Not Cancelled Check-out Bookings # Description Adds Cancelled and Not Cancelled Check-Out Bookings as absolute figures. Adds Cancellation Rate only for aggregated models. Edit: I also added the removal of duplicate bookings. Otherwise the rates might be affected, and this should be cleaner anyway. Will do the same for Created Bookings. This won't make these new metrics appear in KPIs. # 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: #24637 --- ...t_kpis__agg_monthly_check_out_bookings.sql | 6 +- .../int_kpis__agg_mtd_check_out_bookings.sql | 6 +- ..._kpis__metric_daily_check_out_bookings.sql | 17 ++++- ...pis__metric_monthly_check_out_bookings.sql | 4 +- ...nt_kpis__metric_mtd_check_out_bookings.sql | 4 +- models/intermediate/kpis/schema.yml | 70 +++++++++++++++++++ 6 files changed, 102 insertions(+), 5 deletions(-) diff --git a/models/intermediate/kpis/int_kpis__agg_monthly_check_out_bookings.sql b/models/intermediate/kpis/int_kpis__agg_monthly_check_out_bookings.sql index 7e38ef4..d4c18d1 100644 --- a/models/intermediate/kpis/int_kpis__agg_monthly_check_out_bookings.sql +++ b/models/intermediate/kpis/int_kpis__agg_monthly_check_out_bookings.sql @@ -15,7 +15,11 @@ {{ dimension.dimension }} as dimension, {{ dimension.dimension_value }} as dimension_value, -- Metrics -- - sum(check_out_bookings) as check_out_bookings + sum(check_out_bookings) as check_out_bookings, + sum(cancelled_check_out_bookings) as cancelled_check_out_bookings, + sum(not_cancelled_check_out_bookings) as not_cancelled_check_out_bookings, + sum(cancelled_check_out_bookings) + / sum(check_out_bookings) as cancelled_check_out_bookings_rate from {{ ref("int_kpis__metric_monthly_check_out_bookings") }} group by 1, 2, 3, 4 {% if not loop.last %} diff --git a/models/intermediate/kpis/int_kpis__agg_mtd_check_out_bookings.sql b/models/intermediate/kpis/int_kpis__agg_mtd_check_out_bookings.sql index f59fcdb..c2914ba 100644 --- a/models/intermediate/kpis/int_kpis__agg_mtd_check_out_bookings.sql +++ b/models/intermediate/kpis/int_kpis__agg_mtd_check_out_bookings.sql @@ -15,7 +15,11 @@ {{ dimension.dimension }} as dimension, {{ dimension.dimension_value }} as dimension_value, -- Metrics -- - sum(check_out_bookings) as check_out_bookings + sum(check_out_bookings) as check_out_bookings, + sum(cancelled_check_out_bookings) as cancelled_check_out_bookings, + sum(not_cancelled_check_out_bookings) as not_cancelled_check_out_bookings, + sum(cancelled_check_out_bookings) + / sum(check_out_bookings) as cancelled_check_out_bookings_rate from {{ ref("int_kpis__metric_mtd_check_out_bookings") }} group by 1, 2, 3, 4 {% if not loop.last %} diff --git a/models/intermediate/kpis/int_kpis__metric_daily_check_out_bookings.sql b/models/intermediate/kpis/int_kpis__metric_daily_check_out_bookings.sql index e1b6f28..49599c9 100644 --- a/models/intermediate/kpis/int_kpis__metric_daily_check_out_bookings.sql +++ b/models/intermediate/kpis/int_kpis__metric_daily_check_out_bookings.sql @@ -14,7 +14,21 @@ select icmas.active_accommodations_per_deal_segmentation, 'UNSET' ) as active_accommodations_per_deal_segmentation, -- Metrics -- - count(distinct icb.id_booking) as check_out_bookings + count(distinct icb.id_booking) as check_out_bookings, + count( + distinct case + when upper(icb.booking_state) = {{ var("cancelled_booking_state") }} + then icb.id_booking + else null + end + ) as cancelled_check_out_bookings, + count( + distinct case + when not upper(icb.booking_state) = {{ var("cancelled_booking_state") }} + then icb.id_booking + else null + end + ) as not_cancelled_check_out_bookings from {{ ref("int_core__bookings") }} as icb left join {{ ref("int_core__user_host") }} as icuh on icb.id_user_host = icuh.id_user_host @@ -26,4 +40,5 @@ left join left join {{ ref("int_core__booking_to_product_bundle") }} as icbtpb on icb.id_booking = icbtpb.id_booking +where icb.is_duplicate_booking = false group by 1, 2, 3, 4, 5 diff --git a/models/intermediate/kpis/int_kpis__metric_monthly_check_out_bookings.sql b/models/intermediate/kpis/int_kpis__metric_monthly_check_out_bookings.sql index 2ecfc0d..ad1ccae 100644 --- a/models/intermediate/kpis/int_kpis__metric_monthly_check_out_bookings.sql +++ b/models/intermediate/kpis/int_kpis__metric_monthly_check_out_bookings.sql @@ -19,7 +19,9 @@ select -- Dimensions -- b.main_billing_country_iso_3_per_deal, -- Metrics -- - sum(b.check_out_bookings) as check_out_bookings + sum(b.check_out_bookings) as check_out_bookings, + sum(b.cancelled_check_out_bookings) as cancelled_check_out_bookings, + sum(b.not_cancelled_check_out_bookings) as not_cancelled_check_out_bookings from {{ ref("int_kpis__dimension_dates") }} d left join {{ ref("int_kpis__metric_daily_check_out_bookings") }} b diff --git a/models/intermediate/kpis/int_kpis__metric_mtd_check_out_bookings.sql b/models/intermediate/kpis/int_kpis__metric_mtd_check_out_bookings.sql index f051ee3..fd0f07d 100644 --- a/models/intermediate/kpis/int_kpis__metric_mtd_check_out_bookings.sql +++ b/models/intermediate/kpis/int_kpis__metric_mtd_check_out_bookings.sql @@ -19,7 +19,9 @@ select -- Dimensions -- b.main_billing_country_iso_3_per_deal, -- Metrics -- - sum(b.check_out_bookings) as check_out_bookings + sum(b.check_out_bookings) as check_out_bookings, + sum(b.cancelled_check_out_bookings) as cancelled_check_out_bookings, + sum(b.not_cancelled_check_out_bookings) as not_cancelled_check_out_bookings from {{ ref("int_kpis__dimension_dates") }} d left join {{ ref("int_kpis__metric_daily_check_out_bookings") }} b diff --git a/models/intermediate/kpis/schema.yml b/models/intermediate/kpis/schema.yml index 46fdb89..d83ff06 100644 --- a/models/intermediate/kpis/schema.yml +++ b/models/intermediate/kpis/schema.yml @@ -2805,6 +2805,18 @@ models: description: | Count of daily bookings checked-out in a given date and per specified dimension. + - name: cancelled_check_out_bookings + data_type: bigint + description: | + Count of daily bookings checked-out in a given date and per specified dimension + that have been cancelled. + + - name: not_cancelled_check_out_bookings + data_type: bigint + description: | + Count of daily bookings checked-out in a given date and per specified dimension + that have not been cancelled. + - name: int_kpis__metric_monthly_check_out_bookings description: | This model computes the Monthly Check-out Bookings at the @@ -2887,6 +2899,18 @@ models: Count of accumulated bookings checked-out in a given month and per specified dimension. + - name: cancelled_check_out_bookings + data_type: bigint + description: | + Count of accumulated bookings checked-out in a given month + and per specified dimension that have been cancelled. + + - name: not_cancelled_check_out_bookings + data_type: bigint + description: | + Count of accumulated bookings checked-out in a given month + and per specified dimension that have not been cancelled. + - name: int_kpis__metric_mtd_check_out_bookings description: | This model computes the Month-To-Date Check-out Bookings at the @@ -2969,6 +2993,18 @@ models: Count of accumulated bookings checked-out in a given month up to the given date and per specified dimension. + - name: cancelled_check_out_bookings + data_type: bigint + description: | + Count of accumulated bookings checked-out in a given month up to the + given date and per specified dimension that have been cancelled. + + - name: not_cancelled_check_out_bookings + data_type: bigint + description: | + Count of accumulated bookings checked-out in a given month up to the + given date and per specified dimension that have not been cancelled. + - name: int_kpis__agg_monthly_check_out_bookings description: | This model computes the dimension aggregation for @@ -3006,6 +3042,8 @@ models: - assert_dimension_completeness: metric_column_names: - check_out_bookings + - cancelled_check_out_bookings + - not_cancelled_check_out_bookings - accepted_values: values: - global @@ -3024,6 +3062,21 @@ models: data_type: bigint description: The monthly checked-out bookings for a given date, dimension and value. + - name: cancelled_check_out_bookings + data_type: bigint + description: | + The monthly cancelled checked-out bookings for a given date, dimension and value. + + - name: not_cancelled_check_out_bookings + data_type: bigint + description: | + The monthly not cancelled checked-out bookings for a given date, dimension and value. + + - name: cancelled_check_out_bookings_rate + data_type: decimal + description: | + The monthly rate of cancelled checked-out bookings for a given date, dimension and value. + - name: int_kpis__agg_mtd_check_out_bookings description: | This model computes the dimension aggregation for @@ -3061,6 +3114,8 @@ models: - assert_dimension_completeness: metric_column_names: - check_out_bookings + - cancelled_check_out_bookings + - not_cancelled_check_out_bookings - accepted_values: values: - global @@ -3079,6 +3134,21 @@ models: data_type: bigint description: The month-to-date checked-out bookings for a given date, dimension and value. + - name: cancelled_check_out_bookings + data_type: bigint + description: | + The month-to-date cancelled checked-out bookings for a given date, dimension and value. + + - name: not_cancelled_check_out_bookings + data_type: bigint + description: | + The month-to-date not cancelled checked-out bookings for a given date, dimension and value. + + - name: cancelled_check_out_bookings_rate + data_type: decimal + description: | + The month-to-date rate of cancelled checked-out bookings for a given date, dimension and value. + - name: int_kpis__metric_daily_billable_bookings description: | This model computes the Daily Billable Bookings at the deepest granularity.