Merged PR 3418: CSAT score

# Description

Added CSAT score metrics, both average score as count of score to correctly aggregate for agg models

# 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.

CSAT score

Related work items: #23372
This commit is contained in:
Joaquin Ossa 2024-11-05 09:39:19 +00:00
commit f601b69c7d
6 changed files with 136 additions and 30 deletions

View file

@ -26,7 +26,9 @@
) as completed_guest_journeys_not_cancelled, ) as completed_guest_journeys_not_cancelled,
sum(created_guest_journeys) as created_guest_journeys, sum(created_guest_journeys) as created_guest_journeys,
sum(started_guest_journeys) as started_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) / nullif(sum(count_csat_score), 0) as average_csat_score
from {{ ref("int_kpis__metric_monthly_check_in_attributed_guest_journeys") }} from {{ ref("int_kpis__metric_monthly_check_in_attributed_guest_journeys") }}
group by 1, 2, 3, 4 group by 1, 2, 3, 4
{% if not loop.last %} {% if not loop.last %}

View file

@ -26,7 +26,9 @@
) as completed_guest_journeys_not_cancelled, ) as completed_guest_journeys_not_cancelled,
sum(created_guest_journeys) as created_guest_journeys, sum(created_guest_journeys) as created_guest_journeys,
sum(started_guest_journeys) as started_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) / nullif(sum(count_csat_score), 0) as average_csat_score
from {{ ref("int_kpis__metric_mtd_check_in_attributed_guest_journeys") }} from {{ ref("int_kpis__metric_mtd_check_in_attributed_guest_journeys") }}
group by 1, 2, 3, 4 group by 1, 2, 3, 4
{% if not loop.last %} {% if not loop.last %}

View file

@ -69,7 +69,21 @@ select
then vr.id_verification_request then vr.id_verification_request
else null else null
end 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(
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 from {{ ref("int_core__verification_requests") }} as vr
inner join inner join
{{ ref("int_core__bookings") }} as b {{ ref("int_core__bookings") }} as b
@ -88,4 +102,7 @@ left join
{{ ref("stg_core__verification") }} as v {{ ref("stg_core__verification") }} as v
on v.id_verification_request = vr.id_verification_request on v.id_verification_request = vr.id_verification_request
and v.verification = '{{ id_check }}' 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 group by 1, 2, 3, 4, 5, 6

View file

@ -23,7 +23,9 @@ select
) as completed_guest_journeys_not_cancelled, ) as completed_guest_journeys_not_cancelled,
sum(b.created_guest_journeys) as created_guest_journeys, sum(b.created_guest_journeys) as created_guest_journeys,
sum(b.started_guest_journeys) as started_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) / nullif(sum(b.count_csat_score), 0) as average_csat_score
from {{ ref("int_kpis__dimension_dates") }} d from {{ ref("int_kpis__dimension_dates") }} d
left join left join
{{ ref("int_kpis__metric_daily_check_in_attributed_guest_journeys") }} b {{ ref("int_kpis__metric_daily_check_in_attributed_guest_journeys") }} b

View file

@ -23,7 +23,9 @@ select
) as completed_guest_journeys_not_cancelled, ) as completed_guest_journeys_not_cancelled,
sum(b.created_guest_journeys) as created_guest_journeys, sum(b.created_guest_journeys) as created_guest_journeys,
sum(b.started_guest_journeys) as started_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) / nullif(sum(b.count_csat_score), 0) as average_csat_score
from {{ ref("int_kpis__dimension_dates") }} d from {{ ref("int_kpis__dimension_dates") }} d
left join left join
{{ ref("int_kpis__metric_daily_check_in_attributed_guest_journeys") }} b {{ ref("int_kpis__metric_daily_check_in_attributed_guest_journeys") }} b

View file

@ -3190,6 +3190,17 @@ models:
Count of daily guest journeys completed in a given date and Count of daily guest journeys completed in a given date and
per specified dimension. 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 - name: int_kpis__metric_monthly_check_in_attributed_guest_journeys
description: | description: |
This model computes the Monthly metrics associated with Guest Journeys This model computes the Monthly metrics associated with Guest Journeys
@ -3279,31 +3290,31 @@ models:
- name: created_guest_journeys_not_cancelled - name: created_guest_journeys_not_cancelled
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys created, excluding cancelled bookings, Monthly accumulated count of daily guest journeys created, excluding cancelled
in a given date and per specified dimension. bookings, in a given date and per specified dimension.
tests: tests:
- not_null - not_null
- name: started_guest_journeys_not_cancelled - name: started_guest_journeys_not_cancelled
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys started, excluding cancelled bookings, Monthly accumulated count of daily guest journeys started, excluding cancelled
in a given date and per specified dimension. bookings, in a given date and per specified dimension.
tests: tests:
- not_null - not_null
- name: completed_guest_journeys_not_cancelled - name: completed_guest_journeys_not_cancelled
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys completed, excluding cancelled bookings, Monthly accumulated count of daily guest journeys completed, excluding cancelled
in a given date and per specified dimension. bookings, in a given date and per specified dimension.
tests: tests:
- not_null - not_null
- name: created_guest_journeys - name: created_guest_journeys
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys created in a given date and Monthly accumulated count of daily guest journeys created in a given date and
per specified dimension. per specified dimension.
tests: tests:
- not_null - not_null
@ -3311,7 +3322,7 @@ models:
- name: started_guest_journeys - name: started_guest_journeys
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys started in a given date and Monthly accumulated count of daily guest journeys started in a given date and
per specified dimension. per specified dimension.
tests: tests:
- not_null - not_null
@ -3319,11 +3330,27 @@ models:
- name: completed_guest_journeys - name: completed_guest_journeys
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys completed in a given date and Monthly accumulated count of daily guest journeys completed in a given date and
per specified dimension. per specified dimension.
tests: tests:
- not_null - not_null
- name: count_csat_score
data_type: numeric
description: |
Monthly accumulated count of guest journeys with CSAT
(customer satisfaction score) in a given date, dimension, and value.
- name: average_csat_score
data_type: numeric
description: |
Monthly accumulated average CSAT score in a given date, dimension, and value.
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 - name: int_kpis__agg_monthly_check_in_attributed_guest_journeys
description: | description: |
This model computes the dimension aggregation for Monthly metrics associated This model computes the dimension aggregation for Monthly metrics associated
@ -3368,6 +3395,8 @@ models:
metric_column_name: started_guest_journeys metric_column_name: started_guest_journeys
- assert_dimension_completeness: - assert_dimension_completeness:
metric_column_name: completed_guest_journeys metric_column_name: completed_guest_journeys
- assert_dimension_completeness:
metric_column_name: count_csat_score
- accepted_values: - accepted_values:
values: values:
- global - global
@ -3432,6 +3461,23 @@ models:
tests: tests:
- not_null - not_null
- name: count_csat_score
data_type: numeric
description: |
Monthly aggregated count of guest journeys with CSAT
(customer satisfaction score) in a given date, dimension, and value.
- name: average_csat_score
data_type: numeric
description: |
Monthly aggregated average CSAT score in a given date,
dimension, and value.
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 - name: int_kpis__metric_mtd_check_in_attributed_guest_journeys
description: | description: |
This model computes the Month-To-Date metrics associated with Guest Journeys This model computes the Month-To-Date metrics associated with Guest Journeys
@ -3521,31 +3567,31 @@ models:
- name: created_guest_journeys_not_cancelled - name: created_guest_journeys_not_cancelled
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys created, excluding cancelled bookings, Month-to-date accumulated count of daily guest journeys created, excluding cancelled
in a given date and per specified dimension. bookings, in a given date and per specified dimension.
tests: tests:
- not_null - not_null
- name: started_guest_journeys_not_cancelled - name: started_guest_journeys_not_cancelled
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys started, excluding cancelled bookings, Month-to-date accumulated count of daily guest journeys started, excluding cancelled
in a given date and per specified dimension. bookings, in a given date and per specified dimension.
tests: tests:
- not_null - not_null
- name: completed_guest_journeys_not_cancelled - name: completed_guest_journeys_not_cancelled
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys completed, excluding cancelled bookings, Month-to-date accumulated count of daily guest journeys completed, excluding cancelled
in a given date and per specified dimension. bookings, in a given date and per specified dimension.
tests: tests:
- not_null - not_null
- name: created_guest_journeys - name: created_guest_journeys
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys created in a given date and Month-to-date accumulated count of daily guest journeys created in a given date and
per specified dimension. per specified dimension.
tests: tests:
- not_null - not_null
@ -3553,7 +3599,7 @@ models:
- name: started_guest_journeys - name: started_guest_journeys
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys started in a given date and Month-to-date accumulated count of daily guest journeys started in a given date and
per specified dimension. per specified dimension.
tests: tests:
- not_null - not_null
@ -3561,11 +3607,27 @@ models:
- name: completed_guest_journeys - name: completed_guest_journeys
data_type: numeric data_type: numeric
description: | description: |
Count of daily guest journeys completed in a given date and Month-to-date accumulated count of daily guest journeys completed in a given date and
per specified dimension. per specified dimension.
tests: tests:
- not_null - not_null
- name: count_csat_score
data_type: numeric
description: |
Month-to-date accumulated count of guest journeys with CSAT
(customer satisfaction score) in a given date, dimension, and value..
- name: average_csat_score
data_type: numeric
description: |
Month-to-date accumulated average CSAT score in a given date, dimension, and value.
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 - name: int_kpis__agg_mtd_check_in_attributed_guest_journeys
description: | description: |
This model computes the dimension aggregation for Month-To-Date metrics associated This model computes the dimension aggregation for Month-To-Date metrics associated
@ -3610,6 +3672,8 @@ models:
metric_column_name: started_guest_journeys metric_column_name: started_guest_journeys
- assert_dimension_completeness: - assert_dimension_completeness:
metric_column_name: completed_guest_journeys metric_column_name: completed_guest_journeys
- assert_dimension_completeness:
metric_column_name: count_csat_score
- accepted_values: - accepted_values:
values: values:
- global - global
@ -3629,7 +3693,7 @@ models:
- name: created_guest_journeys_not_cancelled - name: created_guest_journeys_not_cancelled
data_type: numeric data_type: numeric
description: | description: |
Monthly aggregated count of guest journeys created, excluding Month-to-date aggregated count of guest journeys created, excluding
cancelled bookings, for a given date, dimension, and value. cancelled bookings, for a given date, dimension, and value.
tests: tests:
- not_null - not_null
@ -3637,7 +3701,7 @@ models:
- name: started_guest_journeys_not_cancelled - name: started_guest_journeys_not_cancelled
data_type: numeric data_type: numeric
description: | description: |
Monthly aggregated count of guest journeys started, excluding Month-to-date aggregated count of guest journeys started, excluding
cancelled bookings, for a given date, dimension, and value. cancelled bookings, for a given date, dimension, and value.
tests: tests:
- not_null - not_null
@ -3645,7 +3709,7 @@ models:
- name: completed_guest_journeys_not_cancelled - name: completed_guest_journeys_not_cancelled
data_type: numeric data_type: numeric
description: | description: |
Monthly aggregated count of guest journeys completed, excluding Month-to-date aggregated count of guest journeys completed, excluding
cancelled bookings, for a given date, dimension, and value. cancelled bookings, for a given date, dimension, and value.
tests: tests:
- not_null - not_null
@ -3653,7 +3717,7 @@ models:
- name: created_guest_journeys - name: created_guest_journeys
data_type: numeric data_type: numeric
description: | description: |
Monthly aggregated count of guest journeys created for a given date, Month-to-date aggregated count of guest journeys created for a given date,
dimension, and value. dimension, and value.
tests: tests:
- not_null - not_null
@ -3661,7 +3725,7 @@ models:
- name: started_guest_journeys - name: started_guest_journeys
data_type: numeric data_type: numeric
description: | description: |
Monthly aggregated count of guest journeys started for a given date, Month-to-date aggregated count of guest journeys started for a given date,
dimension, and value. dimension, and value.
tests: tests:
- not_null - not_null
@ -3669,11 +3733,28 @@ models:
- name: completed_guest_journeys - name: completed_guest_journeys
data_type: numeric data_type: numeric
description: | description: |
Monthly aggregated count of guest journeys completed for a given date, Month-to-date aggregated count of guest journeys completed for a given date,
dimension, and value. dimension, and value.
tests: tests:
- not_null - not_null
- name: count_csat_score
data_type: numeric
description: |
Month-to-date aggregated count of guest journeys with CSAT
(customer satisfaction score) in a given date, dimension, and value.
- name: average_csat_score
data_type: numeric
description: |
Month-to-date aggregated average CSAT score in a given date,
dimension, and value.
tests:
- dbt_expectations.expect_column_values_to_be_between:
min_value: 0
max_value: 5
strictly: false
- name: int_kpis__metric_daily_host_resolutions - name: int_kpis__metric_daily_host_resolutions
description: | description: |
This model computes the Daily Host Resolutions at the deepest granularity. This model computes the Daily Host Resolutions at the deepest granularity.