85 lines
3.3 KiB
SQL
85 lines
3.3 KiB
SQL
{{ 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,
|
|
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
|
|
),
|
|
core_deals as (
|
|
select
|
|
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") }}
|
|
),
|
|
integrations_per_user as (
|
|
select
|
|
icuh.id_deal,
|
|
sci.id_superhog_user as id_user,
|
|
scit.display_name as active_pms
|
|
from {{ ref("stg_core__integration") }} sci
|
|
left join
|
|
{{ ref("stg_core__integration_type") }} scit
|
|
on sci.id_integration_type = scit.id_integration_type
|
|
left join
|
|
{{ ref("int_core__user_host") }} icuh
|
|
on sci.id_superhog_user = icuh.id_user_host
|
|
where sci.is_active = true and icuh.is_missing_id_deal = false
|
|
),
|
|
integrations_per_deal as (
|
|
select id_deal, string_agg(distinct active_pms, ', ') as distinct_active_pms
|
|
from integrations_per_user
|
|
group by id_deal
|
|
),
|
|
combined_deals as (
|
|
select
|
|
coalesce(hd.id_deal, cd.id_deal) as id_deal,
|
|
coalesce(hd.main_deal_name, cd.main_deal_name) as main_deal_name,
|
|
cd.main_billing_country_iso_3_per_deal,
|
|
min(
|
|
coalesce(hd.deal_start_date, cd.deal_start_date)
|
|
) 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
|
|
)
|
|
select
|
|
cd.id_deal,
|
|
cd.main_deal_name,
|
|
case
|
|
when ipd.distinct_active_pms is null then false else true
|
|
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_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
|