Merged PR 4819: New Dash Listings Services model
# Description New Dash Listings Services model There was 1 slight issue that was causing me a lot of problems, the fact that during the same day they could change the bundle multiple times was generating duplications for several accommodations. I removed those duplicates only keeping the most recent one for each day # 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: #28627
This commit is contained in:
commit
f7504393c4
2 changed files with 160 additions and 0 deletions
|
|
@ -0,0 +1,60 @@
|
|||
{{
|
||||
config(
|
||||
materialized="table",
|
||||
unique_key=[
|
||||
"date",
|
||||
"id_accommodation",
|
||||
"id_user_product_bundle",
|
||||
"service_name",
|
||||
"service_business_type",
|
||||
],
|
||||
)
|
||||
}}
|
||||
with
|
||||
-- Order by the most recent product bundle per accommodation per day
|
||||
latest_daily_bundle as (
|
||||
select
|
||||
*,
|
||||
row_number() over (
|
||||
partition by id_accommodation, effective_start_date_utc
|
||||
order by
|
||||
effective_start_date_utc desc, -- Prefers the latest effective start date
|
||||
original_starts_at_utc desc, -- In case of ties, prefers the most recent original start
|
||||
coalesce(original_ends_at_utc, {{ var("end_of_time") }}) desc
|
||||
) as rn
|
||||
from {{ ref("int_core__accommodation_to_product_bundle") }}
|
||||
)
|
||||
select
|
||||
-- Unique Key --
|
||||
dd.date,
|
||||
ldb.id_accommodation,
|
||||
bs.id_user_product_bundle,
|
||||
bs.service_name,
|
||||
bs.service_business_type,
|
||||
-- Dimensions --
|
||||
coalesce(uh.id_deal, 'UNSET') as id_deal,
|
||||
case when bs.is_default_service then 'NO' else 'YES' end as is_upgraded_service,
|
||||
coalesce(uh.new_dash_version, 'UNSET') as new_dash_version,
|
||||
coalesce(
|
||||
uh.main_billing_country_iso_3_per_deal, 'UNSET'
|
||||
) as main_billing_country_iso_3_per_deal,
|
||||
coalesce(
|
||||
icmas.active_accommodations_per_deal_segmentation, 'UNSET'
|
||||
) as active_accommodations_per_deal_segmentation
|
||||
from {{ ref("int_kpis__dimension_dates") }} as dd
|
||||
inner join
|
||||
{{ ref("int_core__user_host") }} as uh
|
||||
on dd.date >= uh.user_in_new_dash_since_date_utc
|
||||
inner join
|
||||
{{ ref("int_core__user_product_bundle_contains_services") }} as bs
|
||||
on uh.id_user_host = bs.id_user_host
|
||||
inner join
|
||||
latest_daily_bundle as ldb
|
||||
on bs.id_user_product_bundle = ldb.id_user_product_bundle
|
||||
and date >= ldb.effective_start_date_utc
|
||||
and date < coalesce(ldb.effective_end_date_utc, {{ var("end_of_time") }})
|
||||
and ldb.rn = 1
|
||||
left join
|
||||
{{ ref("int_kpis__dimension_daily_accommodation") }} as icmas
|
||||
on uh.id_deal = icmas.id_deal
|
||||
and dd.date = icmas.date
|
||||
|
|
@ -7482,6 +7482,106 @@ models:
|
|||
- "61+"
|
||||
- "UNSET"
|
||||
|
||||
- name: main_billing_country_iso_3_per_deal
|
||||
data_type: string
|
||||
description: |
|
||||
Main billing country of the host aggregated at Deal level.
|
||||
data_tests:
|
||||
- not_null
|
||||
|
||||
- name: int_kpis__metric_daily_new_dash_accommodation_offered_services
|
||||
description: |
|
||||
This model computes the Daily Offered Services by Listings at the deepest granularity.
|
||||
It only retrieves services that come from users that are in New Dash, as well
|
||||
as it only considers services created after the user has moved to New Dash.
|
||||
The unique key corresponds to the deepest granularity of the model,
|
||||
in this case:
|
||||
- date,
|
||||
- id_accommodation,
|
||||
- id_user_product_bundle,
|
||||
- service_name,
|
||||
- service_business_type
|
||||
data_tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- date
|
||||
- id_accommodation
|
||||
- id_user_product_bundle
|
||||
- service_name
|
||||
- service_business_type
|
||||
columns:
|
||||
- name: date
|
||||
data_type: date
|
||||
description: Date of when user has a bundle with service active.
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: id_accommodation
|
||||
data_type: bigint
|
||||
description: Unique identifier of an accommodation, or listing.
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: id_user_product_bundle
|
||||
data_type: bigint
|
||||
description: Unique identifier of the User Product Bundle.
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: service_name
|
||||
data_type: string
|
||||
description: Name of the created service.
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: service_business_type
|
||||
data_type: string
|
||||
description: |
|
||||
Identifies the service type (Screening, Deposit Management, Protection
|
||||
or Guest Agreement) according to New Pricing documentation.
|
||||
Cannot be null.
|
||||
data_tests:
|
||||
- not_null
|
||||
- accepted_values:
|
||||
values:
|
||||
- "SCREENING"
|
||||
- "PROTECTION"
|
||||
- "DEPOSIT_MANAGEMENT"
|
||||
- "GUEST_AGREEMENT"
|
||||
- name: id_deal
|
||||
data_type: string
|
||||
description: Unique identifier of an account.
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: is_upgraded_service
|
||||
data_type: string
|
||||
description: |
|
||||
Whether the service is an upgraded version of the
|
||||
default. In other words, if it's not Basic Screening.
|
||||
data_tests:
|
||||
- not_null
|
||||
- accepted_values:
|
||||
values:
|
||||
- "YES"
|
||||
- "NO"
|
||||
- name: new_dash_version
|
||||
data_type: string
|
||||
description: |
|
||||
The version of the New Dash. It corresponds to the
|
||||
release or migration phase from user point of view.
|
||||
data_tests:
|
||||
- not_null
|
||||
- name: active_accommodations_per_deal_segmentation
|
||||
data_type: string
|
||||
description: |
|
||||
Segment value based on the number of listings booked in 12 months
|
||||
for a given deal and date.
|
||||
data_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: string
|
||||
description: |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue