From ee2cb2e40e526d5f791a1365878642536679016b Mon Sep 17 00:00:00 2001 From: Joaquin Date: Mon, 4 Nov 2024 16:51:24 +0100 Subject: [PATCH] CSAT score --- ...hly_check_in_attributed_guest_journeys.sql | 4 +- ...mtd_check_in_attributed_guest_journeys.sql | 4 +- ...ily_check_in_attributed_guest_journeys.sql | 19 +++- ...hly_check_in_attributed_guest_journeys.sql | 4 +- ...mtd_check_in_attributed_guest_journeys.sql | 4 +- models/intermediate/kpis/schema.yml | 95 +++++++++++++++++++ 6 files changed, 125 insertions(+), 5 deletions(-) diff --git a/models/intermediate/kpis/int_kpis__agg_monthly_check_in_attributed_guest_journeys.sql b/models/intermediate/kpis/int_kpis__agg_monthly_check_in_attributed_guest_journeys.sql index 8f0ef70..768f71b 100644 --- a/models/intermediate/kpis/int_kpis__agg_monthly_check_in_attributed_guest_journeys.sql +++ b/models/intermediate/kpis/int_kpis__agg_monthly_check_in_attributed_guest_journeys.sql @@ -26,7 +26,9 @@ ) as completed_guest_journeys_not_cancelled, sum(created_guest_journeys) as created_guest_journeys, sum(started_guest_journeys) as started_guest_journeys, - sum(completed_guest_journeys) as completed_guest_journeys + sum(completed_guest_journeys) as completed_guest_journeys, + sum(count_csat_score) as count_csat_score, + sum(count_csat_score * average_csat_score)/sum(count_csat_score) as average_csat_score from {{ ref("int_kpis__metric_monthly_check_in_attributed_guest_journeys") }} group by 1, 2, 3, 4 {% if not loop.last %} diff --git a/models/intermediate/kpis/int_kpis__agg_mtd_check_in_attributed_guest_journeys.sql b/models/intermediate/kpis/int_kpis__agg_mtd_check_in_attributed_guest_journeys.sql index 6544f1c..5c87b29 100644 --- a/models/intermediate/kpis/int_kpis__agg_mtd_check_in_attributed_guest_journeys.sql +++ b/models/intermediate/kpis/int_kpis__agg_mtd_check_in_attributed_guest_journeys.sql @@ -26,7 +26,9 @@ ) as completed_guest_journeys_not_cancelled, sum(created_guest_journeys) as created_guest_journeys, sum(started_guest_journeys) as started_guest_journeys, - sum(completed_guest_journeys) as completed_guest_journeys + sum(completed_guest_journeys) as completed_guest_journeys, + sum(count_csat_score) as count_csat_score, + sum(count_csat_score * average_csat_score)/sum(count_csat_score) as average_csat_score from {{ ref("int_kpis__metric_mtd_check_in_attributed_guest_journeys") }} group by 1, 2, 3, 4 {% if not loop.last %} diff --git a/models/intermediate/kpis/int_kpis__metric_daily_check_in_attributed_guest_journeys.sql b/models/intermediate/kpis/int_kpis__metric_daily_check_in_attributed_guest_journeys.sql index ebbf068..ae4d365 100644 --- a/models/intermediate/kpis/int_kpis__metric_daily_check_in_attributed_guest_journeys.sql +++ b/models/intermediate/kpis/int_kpis__metric_daily_check_in_attributed_guest_journeys.sql @@ -69,7 +69,21 @@ select then vr.id_verification_request else null end - ) as completed_guest_journeys + ) as completed_guest_journeys, + count( + distinct case + when gsr.id_verification_request is not null + then vr.id_verification_request + else null + end + ) as count_csat_score, + avg( + distinct case + when gsr.id_verification_request is not null + then gsr.experience_rating + else null + end + ) as average_csat_score from {{ ref("int_core__verification_requests") }} as vr inner join {{ ref("int_core__bookings") }} as b @@ -88,4 +102,7 @@ left join {{ ref("stg_core__verification") }} as v on v.id_verification_request = vr.id_verification_request and v.verification = '{{ id_check }}' +left join + {{ ref("int_core__guest_satisfaction_responses") }} as gsr + on gsr.id_verification_request = vr.id_verification_request group by 1, 2, 3, 4, 5, 6 diff --git a/models/intermediate/kpis/int_kpis__metric_monthly_check_in_attributed_guest_journeys.sql b/models/intermediate/kpis/int_kpis__metric_monthly_check_in_attributed_guest_journeys.sql index 021092a..bd70d0e 100644 --- a/models/intermediate/kpis/int_kpis__metric_monthly_check_in_attributed_guest_journeys.sql +++ b/models/intermediate/kpis/int_kpis__metric_monthly_check_in_attributed_guest_journeys.sql @@ -23,7 +23,9 @@ select ) as completed_guest_journeys_not_cancelled, sum(b.created_guest_journeys) as created_guest_journeys, sum(b.started_guest_journeys) as started_guest_journeys, - sum(b.completed_guest_journeys) as completed_guest_journeys + sum(b.completed_guest_journeys) as completed_guest_journeys, + sum(b.count_csat_score) as count_csat_score, + sum(b.count_csat_score * b.average_csat_score)/sum(b.count_csat_score) as average_csat_score from {{ ref("int_kpis__dimension_dates") }} d left join {{ ref("int_kpis__metric_daily_check_in_attributed_guest_journeys") }} b diff --git a/models/intermediate/kpis/int_kpis__metric_mtd_check_in_attributed_guest_journeys.sql b/models/intermediate/kpis/int_kpis__metric_mtd_check_in_attributed_guest_journeys.sql index 4c7a5f2..a692631 100644 --- a/models/intermediate/kpis/int_kpis__metric_mtd_check_in_attributed_guest_journeys.sql +++ b/models/intermediate/kpis/int_kpis__metric_mtd_check_in_attributed_guest_journeys.sql @@ -23,7 +23,9 @@ select ) as completed_guest_journeys_not_cancelled, sum(b.created_guest_journeys) as created_guest_journeys, sum(b.started_guest_journeys) as started_guest_journeys, - sum(b.completed_guest_journeys) as completed_guest_journeys + sum(b.completed_guest_journeys) as completed_guest_journeys, + sum(b.count_csat_score) as count_csat_score, + sum(b.count_csat_score * b.average_csat_score)/sum(b.count_csat_score) as average_csat_score from {{ ref("int_kpis__dimension_dates") }} d left join {{ ref("int_kpis__metric_daily_check_in_attributed_guest_journeys") }} b diff --git a/models/intermediate/kpis/schema.yml b/models/intermediate/kpis/schema.yml index f768f6f..493b00c 100644 --- a/models/intermediate/kpis/schema.yml +++ b/models/intermediate/kpis/schema.yml @@ -3190,6 +3190,17 @@ models: Count of daily guest journeys completed in a given date and per specified dimension. + - name: count_csat_score + data_type: bigint + description: | + Count of daily guest journeys with CSAT (customer satisfaction score) + in a given date and per specified dimension. + + - name: average_csat_score + data_type: bigint + description: | + Average daily CSAT score in a given date and per specified dimension. + - name: int_kpis__metric_monthly_check_in_attributed_guest_journeys description: | This model computes the Monthly metrics associated with Guest Journeys @@ -3324,6 +3335,26 @@ models: tests: - not_null + - name: count_csat_score + data_type: numeric + description: | + Count of daily guest journeys with CSAT (customer satisfaction score) + in a given date and per specified dimension. + tests: + - dbt_expectations.expect_column_values_to_be_between: + min_value: 0 + strictly: false + + - name: average_csat_score + data_type: numeric + description: | + Average daily CSAT score in a given date and per specified dimension. + tests: + - dbt_expectations.expect_column_values_to_be_between: + min_value: 0 + max_value: 5 + strictly: false + - name: int_kpis__agg_monthly_check_in_attributed_guest_journeys description: | This model computes the dimension aggregation for Monthly metrics associated @@ -3368,6 +3399,8 @@ models: metric_column_name: started_guest_journeys - assert_dimension_completeness: metric_column_name: completed_guest_journeys + - assert_dimension_completeness: + metric_column_name: count_csat_score - accepted_values: values: - global @@ -3432,6 +3465,26 @@ models: tests: - not_null + - name: count_csat_score + data_type: numeric + description: | + Count of daily guest journeys with CSAT (customer satisfaction score) + in a given date and per specified dimension. + tests: + - dbt_expectations.expect_column_values_to_be_between: + min_value: 0 + strictly: false + + - name: average_csat_score + data_type: numeric + description: | + Average daily CSAT score in a given date and per specified dimension. + tests: + - dbt_expectations.expect_column_values_to_be_between: + min_value: 0 + max_value: 5 + strictly: false + - name: int_kpis__metric_mtd_check_in_attributed_guest_journeys description: | This model computes the Month-To-Date metrics associated with Guest Journeys @@ -3566,6 +3619,26 @@ models: tests: - not_null + - name: count_csat_score + data_type: numeric + description: | + Count of daily guest journeys with CSAT (customer satisfaction score) + in a given date and per specified dimension. + tests: + - dbt_expectations.expect_column_values_to_be_between: + min_value: 0 + strictly: false + + - name: average_csat_score + data_type: numeric + description: | + Average daily CSAT score in a given date and per specified dimension. + tests: + - dbt_expectations.expect_column_values_to_be_between: + min_value: 0 + max_value: 5 + strictly: false + - name: int_kpis__agg_mtd_check_in_attributed_guest_journeys description: | This model computes the dimension aggregation for Month-To-Date metrics associated @@ -3610,6 +3683,8 @@ models: metric_column_name: started_guest_journeys - assert_dimension_completeness: metric_column_name: completed_guest_journeys + - assert_dimension_completeness: + metric_column_name: count_csat_score - accepted_values: values: - global @@ -3673,6 +3748,26 @@ models: dimension, and value. tests: - not_null + + - name: count_csat_score + data_type: numeric + description: | + Count of daily guest journeys with CSAT (customer satisfaction score) + in a given date and per specified dimension. + tests: + - dbt_expectations.expect_column_values_to_be_between: + min_value: 0 + strictly: false + + - name: average_csat_score + data_type: numeric + description: | + Average daily CSAT score in a given date and per specified dimension. + tests: + - dbt_expectations.expect_column_values_to_be_between: + min_value: 0 + max_value: 5 + strictly: false - name: int_kpis__metric_daily_host_resolutions description: |