Merged PR 3430: Weekly aggregated guest journey metrics
# Description Here I created a weekly aggregated model for guest journey metrics. I changed the daily_dimension week start and end to iso so it matches the week date obtained by Postgres for this aggregation # 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: #23373
This commit is contained in:
commit
60204b53e8
4 changed files with 364 additions and 2 deletions
|
|
@ -0,0 +1,38 @@
|
||||||
|
{% set dimensions = get_kpi_dimensions_per_model("CHECK_IN_ATTRIBUTED_GUEST_JOURNEYS") %}
|
||||||
|
|
||||||
|
{{
|
||||||
|
config(
|
||||||
|
materialized="table", unique_key=["end_date", "dimension", "dimension_value"]
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
{% for dimension in dimensions %}
|
||||||
|
select
|
||||||
|
-- Unique Key --
|
||||||
|
start_date,
|
||||||
|
end_date,
|
||||||
|
week,
|
||||||
|
{{ dimension.dimension }} as dimension,
|
||||||
|
{{ dimension.dimension_value }} as dimension_value,
|
||||||
|
-- Metrics --
|
||||||
|
sum(
|
||||||
|
created_guest_journeys_not_cancelled
|
||||||
|
) as created_guest_journeys_not_cancelled,
|
||||||
|
sum(
|
||||||
|
started_guest_journeys_not_cancelled
|
||||||
|
) as started_guest_journeys_not_cancelled,
|
||||||
|
sum(
|
||||||
|
completed_guest_journeys_not_cancelled
|
||||||
|
) 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(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_weekly_check_in_attributed_guest_journeys") }}
|
||||||
|
group by 1, 2, 3, 4, 5
|
||||||
|
{% if not loop.last %}
|
||||||
|
union all
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
@ -13,8 +13,8 @@ with
|
||||||
id.date_day as date,
|
id.date_day as date,
|
||||||
id.month_start_date as first_day_month,
|
id.month_start_date as first_day_month,
|
||||||
id.month_end_date as last_day_month,
|
id.month_end_date as last_day_month,
|
||||||
id.week_start_date as first_day_week,
|
id.iso_week_start_date as first_day_week,
|
||||||
id.week_end_date as last_day_week,
|
id.iso_week_end_date as last_day_week,
|
||||||
now()::date as today
|
now()::date as today
|
||||||
from int_dates id
|
from int_dates id
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
{{
|
||||||
|
config(
|
||||||
|
materialized="view",
|
||||||
|
unique_key=["end_date", "id_deal", "has_payment", "has_id_check", "active_accommodations_per_deal_segmentation"],
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
|
||||||
|
select
|
||||||
|
-- Unique Key --
|
||||||
|
d.first_day_week as start_date,
|
||||||
|
d.date as end_date,
|
||||||
|
d.week,
|
||||||
|
b.id_deal,
|
||||||
|
b.has_payment,
|
||||||
|
b.has_id_check,
|
||||||
|
-- Dimensions --
|
||||||
|
b.active_accommodations_per_deal_segmentation,
|
||||||
|
b.main_billing_country_iso_3_per_deal,
|
||||||
|
-- Metrics --
|
||||||
|
sum(b.created_guest_journeys_not_cancelled) as created_guest_journeys_not_cancelled,
|
||||||
|
sum(b.started_guest_journeys_not_cancelled) as started_guest_journeys_not_cancelled,
|
||||||
|
sum(
|
||||||
|
b.completed_guest_journeys_not_cancelled
|
||||||
|
) 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.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
|
||||||
|
left join
|
||||||
|
{{ ref("int_kpis__metric_daily_check_in_attributed_guest_journeys") }} b
|
||||||
|
on date_trunc('week', b.date)::date = d.first_day_week
|
||||||
|
where d.is_end_of_week = true and b.id_deal is not null
|
||||||
|
group by 1, 2, 3, 4, 5, 6, 7, 8
|
||||||
|
|
@ -3518,6 +3518,295 @@ models:
|
||||||
max_value: 5
|
max_value: 5
|
||||||
strictly: false
|
strictly: false
|
||||||
|
|
||||||
|
- name: int_kpis__metric_weekly_check_in_attributed_guest_journeys
|
||||||
|
description: |
|
||||||
|
This model computes the Weekly metrics associated with Guest Journeys
|
||||||
|
attributed to Check-In date at the deepest granularity.
|
||||||
|
|
||||||
|
The unique key corresponds to:
|
||||||
|
- end_date,
|
||||||
|
- id_deal,
|
||||||
|
- has_payment,
|
||||||
|
- has_id_check,
|
||||||
|
- active_accommodations_per_deal_segmentation.
|
||||||
|
|
||||||
|
tests:
|
||||||
|
- dbt_utils.unique_combination_of_columns:
|
||||||
|
combination_of_columns:
|
||||||
|
- end_date
|
||||||
|
- id_deal
|
||||||
|
- has_payment
|
||||||
|
- has_id_check
|
||||||
|
- active_accommodations_per_deal_segmentation
|
||||||
|
|
||||||
|
columns:
|
||||||
|
- name: start_date
|
||||||
|
data_type: date
|
||||||
|
description: |
|
||||||
|
The start date of the time range considered for the metrics in this record.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: end_date
|
||||||
|
data_type: date
|
||||||
|
description: |
|
||||||
|
The end date of the time range considered for the metrics in this record.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: week
|
||||||
|
data_type: int
|
||||||
|
description: ISO week number of the given date.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: id_deal
|
||||||
|
data_type: character varying
|
||||||
|
description: Unique identifier of an account.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: has_payment
|
||||||
|
data_type: string
|
||||||
|
description: Has there been any guest payments on the guest journey.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
- accepted_values:
|
||||||
|
values:
|
||||||
|
- W/O Payment
|
||||||
|
- With Payment
|
||||||
|
|
||||||
|
- name: has_id_check
|
||||||
|
data_type: string
|
||||||
|
description: Does the verification in the guest journey
|
||||||
|
include Government Id Check for the bookings.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
- accepted_values:
|
||||||
|
values:
|
||||||
|
- W/O Id Check
|
||||||
|
- With Id Check
|
||||||
|
|
||||||
|
- name: active_accommodations_per_deal_segmentation
|
||||||
|
data_type: text
|
||||||
|
description: |
|
||||||
|
Segment value based on the number of listings booked in 12 months
|
||||||
|
for a given deal and date.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
- accepted_values:
|
||||||
|
values:
|
||||||
|
- "0"
|
||||||
|
- "01-05"
|
||||||
|
- "06-20"
|
||||||
|
- "21-60"
|
||||||
|
- "61+"
|
||||||
|
- "UNSET"
|
||||||
|
|
||||||
|
- name: main_billing_country_iso_3_per_deal
|
||||||
|
data_type: character varying
|
||||||
|
description: |
|
||||||
|
Main billing country of the host aggregated at Deal level.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: created_guest_journeys_not_cancelled
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly accumulated count of daily guest journeys created, excluding cancelled
|
||||||
|
bookings, in a given date and per specified dimension.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: started_guest_journeys_not_cancelled
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly accumulated count of daily guest journeys started, excluding cancelled
|
||||||
|
bookings, in a given date and per specified dimension.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: completed_guest_journeys_not_cancelled
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly accumulated count of daily guest journeys completed, excluding cancelled
|
||||||
|
bookings, in a given date and per specified dimension.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: created_guest_journeys
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly accumulated count of daily guest journeys created in a given date and
|
||||||
|
per specified dimension.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: started_guest_journeys
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly accumulated count of daily guest journeys started in a given date and
|
||||||
|
per specified dimension.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: completed_guest_journeys
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly accumulated count of daily guest journeys completed in a given date and
|
||||||
|
per specified dimension.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: count_csat_score
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly 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: |
|
||||||
|
Weekly 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_weekly_check_in_attributed_guest_journeys
|
||||||
|
description: |
|
||||||
|
This model computes the dimension aggregation for Weekly metrics associated
|
||||||
|
to Guest Journeys attributed to Check-In date.
|
||||||
|
|
||||||
|
tests:
|
||||||
|
- dbt_utils.unique_combination_of_columns:
|
||||||
|
combination_of_columns:
|
||||||
|
- end_date
|
||||||
|
- dimension
|
||||||
|
- dimension_value
|
||||||
|
|
||||||
|
columns:
|
||||||
|
- name: start_date
|
||||||
|
data_type: date
|
||||||
|
description: |
|
||||||
|
The start date of the time range considered for the metrics in this record.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: end_date
|
||||||
|
data_type: date
|
||||||
|
description: |
|
||||||
|
The end date of the time range considered for the metrics in this record.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: week
|
||||||
|
data_type: int
|
||||||
|
description: Week number of the given date.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: dimension
|
||||||
|
data_type: text
|
||||||
|
description: |
|
||||||
|
The dimension or granularity of the metrics.
|
||||||
|
tests:
|
||||||
|
- assert_dimension_completeness:
|
||||||
|
metric_column_name: created_guest_journeys_not_cancelled
|
||||||
|
- assert_dimension_completeness:
|
||||||
|
metric_column_name: started_guest_journeys_not_cancelled
|
||||||
|
- assert_dimension_completeness:
|
||||||
|
metric_column_name: completed_guest_journeys_not_cancelled
|
||||||
|
- assert_dimension_completeness:
|
||||||
|
metric_column_name: created_guest_journeys
|
||||||
|
- assert_dimension_completeness:
|
||||||
|
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
|
||||||
|
- by_deal
|
||||||
|
- by_has_payment
|
||||||
|
- by_has_id_check
|
||||||
|
- by_billing_country
|
||||||
|
- by_number_of_listings
|
||||||
|
|
||||||
|
- name: dimension_value
|
||||||
|
data_type: text
|
||||||
|
description: |
|
||||||
|
The value or segment available for the selected dimension.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: created_guest_journeys_not_cancelled
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly aggregated count of guest journeys created, excluding
|
||||||
|
cancelled bookings, for a given date, dimension, and value.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: started_guest_journeys_not_cancelled
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly aggregated count of guest journeys started, excluding
|
||||||
|
cancelled bookings, for a given date, dimension, and value.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: completed_guest_journeys_not_cancelled
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly aggregated count of guest journeys completed, excluding
|
||||||
|
cancelled bookings, for a given date, dimension, and value.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: created_guest_journeys
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly aggregated count of guest journeys created for a given date,
|
||||||
|
dimension, and value.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: started_guest_journeys
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly aggregated count of guest journeys started for a given date,
|
||||||
|
dimension, and value.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: completed_guest_journeys
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly aggregated count of guest journeys completed for a given date,
|
||||||
|
dimension, and value.
|
||||||
|
tests:
|
||||||
|
- not_null
|
||||||
|
|
||||||
|
- name: count_csat_score
|
||||||
|
data_type: numeric
|
||||||
|
description: |
|
||||||
|
Weekly 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: |
|
||||||
|
Weekly 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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue