Merged PR 3599: New Dash KPIs skeleton with Created Services

# Description

This PR handles the computation of KPIs for New Dash, focusing on Created Services.

New dimensions configured in `business_kpis_configuration` and applied in this new models for `NEW_DASH_CREATED_SERVICES`:
* `dim_host`,
* `dim_has_upgraded_service`,
* `dim_new_dash_version`,
* `dim_pricing_service`

New daily metric model `int_kpis__metric_daily_new_dash_created_services`
* Follows a similar pattern as for the rest of daily metric models. The only difference is that is aggregated to `id_booking` to ensure we can handle count distinct of bookings per different time granularities.
* Reads from the new pricing tables `int_core__booking_summary` and `int_core__booking_service_detail`. The main filters applied are selecting only new dash users and only services created after the user move timestamp to new dash.

An additional metric model at monthly level is created `int_kpis__metric_monthly_new_dash_created_services`

These finally go to a dimension aggregated model (`dimension`, `dimension_value`), respectively:
* Daily: `int_kpis__agg_daily_new_dash_created_services`
* Monthly: `int_kpis__agg_monthly_new_dash_created_services`

A final model aims to aggregate the different dimension aggregated metrics for New Dash: `int_kpis__product_new_dash_agg_metrics`
* It computes a `time_granularity` aggregation
* Here I will add additional metrics (such as revenue) once we have them.

A final model reading from the previous is exposed to reporting: `kpis__product_new_dash_agg_metrics`

# 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: #20809
This commit is contained in:
Oriol Roqué Paniagua 2024-11-20 09:43:30 +00:00
parent d73ca6555c
commit 86c81c1f21
9 changed files with 662 additions and 2 deletions

View file

@ -0,0 +1,12 @@
with
int_kpis__product_new_dash_agg_metrics as (
select * from {{ ref("int_kpis__product_new_dash_agg_metrics") }}
)
select
date as date,
time_granularity as time_granularity,
dimension as dimension,
dimension_value as dimension_value,
created_services as created_services,
booking_with_created_services_count as booking_with_created_services_count
from int_kpis__product_new_dash_agg_metrics

View file

@ -203,3 +203,68 @@ models:
description: |
Sum of total payments paid by guests, excluding taxes, in GBP
on the same date in the previous year, segmented by the specified dimension.
- name: kpis__product_new_dash_agg_metrics
description: |
Reporting model for New Dash specific KPIs. It's an aggregated version
of time granularity, dimension, dimension value and list of metrics
with their value.
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns:
- date
- time_granularity
- dimension
- dimension_value
columns:
- name: date
data_type: date
description: |
The end date of the time range specified in the time_granularity
for the dimension, dimension_value and metrics in this record.
tests:
- not_null
- name: time_granularity
data_type: string
description: The time dimension.
tests:
- accepted_values:
values:
- daily
- monthly
- name: dimension
data_type: string
description: The dimension or granularity of the metrics.
tests:
- accepted_values:
values:
- global
- by_number_of_listings
- by_billing_country
- by_deal
- by_new_dash_version
- by_has_upgraded_service
- by_service
- by_host
- name: dimension_value
data_type: string
description: The value or segment available for the selected dimension.
tests:
- not_null
- name: created_services
data_type: bigint
description: The daily created services for a given date, dimension and value.
- name: booking_with_created_services_count
data_type: bigint
description: |
The daily bookings with created services for a given date, dimension and value.
This is an approximation to booking count since different services can
apply to the same booking and these do not need to be created in the same
time period. Therefore, it's not an additive metric.