Merged PR 4060: New fields to int_kpis__dimension_deals

# Description

As suggestedin the previous PR, I'm adding new fields from HubSpot to the `int_kpis__dimension_deals`.
This includes starting date and month, cancellation date and month and segmentation by number of properties

# 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.
- [ ] I have checked for DRY opportunities with other models and docs.
- [ ] 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: #26223
This commit is contained in:
Joaquin Ossa 2025-01-14 16:35:27 +00:00
commit ae4f656d54
2 changed files with 62 additions and 3 deletions

View file

@ -1,7 +1,24 @@
{{ config(materialized="table", unique_key="id_deal") }}
with
hubspot_deals as (
select id_deal, deal_name as main_deal_name, live_date_utc as deal_start_date
select
id_deal,
deal_name as main_deal_name,
live_date_utc as deal_start_date,
date_trunc('month', live_date_utc) as deal_start_month,
cancellation_date_utc as deal_cancellation_date,
date_trunc('month', cancellation_date_utc) as deal_cancellation_month,
case
when amount_of_properties between 1 and 5
then '01-05'
when amount_of_properties between 6 and 20
then '06-20'
when amount_of_properties between 21 and 60
then '21-60'
when amount_of_properties >= 61
then '61+'
else 'UNSET'
end as hubspot_listing_segmentation
from {{ ref("int_hubspot__deal") }}
where live_date_utc is not null
),
@ -10,6 +27,7 @@ with
id_deal,
main_deal_name,
first_created_date_utc as deal_start_date,
date_trunc('month', first_created_date_utc) as deal_start_month,
main_billing_country_iso_3_per_deal
from {{ ref("int_core__deal") }}
),
@ -39,7 +57,13 @@ with
cd.main_billing_country_iso_3_per_deal,
min(
coalesce(hd.deal_start_date, cd.deal_start_date)
) as effective_deal_start_date_utc
) as effective_deal_start_date_utc,
min(
coalesce(hd.deal_start_month, cd.deal_start_month)
) as effective_deal_start_month,
min(hd.deal_cancellation_date) as hubspot_deal_cancellation_date_utc,
min(hd.deal_cancellation_month) as hubspot_deal_cancellation_month,
min(hd.hubspot_listing_segmentation) as hubspot_listing_segmentation
from hubspot_deals hd
full outer join core_deals cd on hd.id_deal = cd.id_deal
group by 1, 2, 3
@ -52,6 +76,10 @@ select
end as has_active_pms,
ipd.distinct_active_pms as active_pms_list,
cd.main_billing_country_iso_3_per_deal,
cd.effective_deal_start_date_utc
cd.effective_deal_start_date_utc,
cd.effective_deal_start_month,
cd.hubspot_deal_cancellation_date_utc,
cd.hubspot_deal_cancellation_month,
cd.hubspot_listing_segmentation
from combined_deals cd
left join integrations_per_deal ipd on cd.id_deal = ipd.id_deal

View file

@ -475,6 +475,37 @@ models:
host has been created according to Core.
data_tests:
- not_null
- name: effective_deal_start_month
data_type: date
description: |
This field represents the first day of the month of the effective
start date of the deal. This is obtained by truncating the effective
deal start date to the month.
data_tests:
- not_null
- name: hubspot_deal_cancellation_date_utc
data_type: date
description: |
Effective date at which the deal cancelled it's partnership with Superhog.
- name: hubspot_deal_cancellation_month
data_type: date
description: |
This field represents the first day of the month of the cancellation date
of the deal. This is obtained by truncating the cancellation deal date
to the month.
- name: hubspot_listing_segmentation
data_type: integer
description: |
Segment value based on the number of properties managed by the deal
according to what was set in HubSpot.
data_tests:
- accepted_values:
values:
- "01-05"
- "06-20"
- "21-60"
- "61+"
- "UNSET"
- name: int_kpis__dimension_daily_accommodation
description: |