commit wip

This commit is contained in:
Joaquin Ossa 2025-01-14 16:42:49 +01:00
parent 1db8a050ce
commit b063454409
3 changed files with 57 additions and 73 deletions

View file

@ -1,67 +0,0 @@
with
deal_attributes as (
select
ihd.id_deal,
date_trunc('month', live_date_utc)::date as live_month,
date_trunc('month', cancellation_date_utc)::date as cancellation_month,
coalesce(
icd.main_billing_country_iso_3_per_deal, 'UNSET'
) as main_billing_country_iso_3_per_deal,
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 property_bucket
from {{ ref("int_hubspot__deal") }} ihd
left join {{ ref("int_core__deal") }} icd on ihd.id_deal = icd.id_deal
-- Exclude deals without live dates
where live_date_utc is not null
),
monthly_revenue_per_property_bucket as (
select
date_trunc('month', m.date)::date as metric_month,
coalesce(
d.main_billing_country_iso_3_per_deal, 'global'
) as main_billing_country_iso_3,
coalesce(d.property_bucket, 'global') as property_bucket,
count(*) as deals_active_in_month,
sum(coalesce(m.total_revenue_in_gbp, 0)) as total_revenue_in_gbp
from {{ ref("int_monthly_aggregated_metrics_history_by_deal") }} m
inner join
deal_attributes d
on m.id_deal = d.id_deal
and date_trunc('month', m.date) >= d.live_month
and date_trunc('month', m.date)
<= coalesce(d.cancellation_month, '2099-01-01')
and date_trunc('month', m.date)::date <> date_trunc('month', now())::date
where d.property_bucket <> 'UNSET'
group by
rollup (
date_trunc('month', m.date)::date,
d.property_bucket,
d.main_billing_country_iso_3_per_deal
)
having date_trunc('month', m.date)::date is not null
)
select
(r.metric_month - interval '1 day')::date as date,
r.main_billing_country_iso_3 as billing_country,
r.property_bucket as number_of_listings,
sum(coalesce(m.total_revenue_in_gbp, 0)) as total_revenue_in_gbp,
sum(m.deals_active_in_month) as total_active_months,
sum(coalesce(m.total_revenue_in_gbp, 0))
/ sum(m.deals_active_in_month) as expected_mrr
from monthly_revenue_per_property_bucket m
inner join
monthly_revenue_per_property_bucket r
on r.metric_month > m.metric_month
and r.metric_month <= m.metric_month + interval '12 months'
and r.property_bucket = m.property_bucket
and r.main_billing_country_iso_3 = m.main_billing_country_iso_3
group by r.metric_month, r.property_bucket, r.main_billing_country_iso_3

View file

@ -0,0 +1,51 @@
with
deal_attributes as (
select *
from {{ ref("int_kpis__dimension_deals") }}
-- Exclude deals without live dates
where effective_deal_start_date_utc is not null
),
monthly_revenue_per_number_of_properties as (
select
date_trunc('month', m.date)::date as metric_month,
coalesce(
d.main_billing_country_iso_3_per_deal, 'global'
) as main_billing_country_iso_3,
coalesce(
d.hubspot_listing_segmentation, 'global'
) as hubspot_listing_segmentation,
count(*) as deals_active_in_month,
sum(coalesce(m.total_revenue_in_gbp, 0)) as total_revenue_in_gbp
from {{ ref("int_monthly_aggregated_metrics_history_by_deal") }} m
inner join
deal_attributes d
on m.id_deal = d.id_deal
and date_trunc('month', m.date) >= d.effective_deal_start_month
and date_trunc('month', m.date)
<= coalesce(d.effective_deal_cancellation_month, '2099-01-01')
and date_trunc('month', m.date)::date <> date_trunc('month', now())::date
where d.hubspot_listing_segmentation <> 'UNSET'
group by
rollup (
date_trunc('month', m.date)::date,
d.hubspot_listing_segmentation,
d.main_billing_country_iso_3_per_deal
)
having date_trunc('month', m.date)::date is not null
)
select
(r.metric_month - interval '1 day')::date as date,
r.main_billing_country_iso_3,
r.hubspot_listing_segmentation,
sum(coalesce(m.total_revenue_in_gbp, 0)) as total_revenue_in_gbp,
sum(m.deals_active_in_month) as total_active_months,
sum(coalesce(m.total_revenue_in_gbp, 0))
/ sum(m.deals_active_in_month) as expected_mrr
from monthly_revenue_per_number_of_properties m
inner join
monthly_revenue_per_number_of_properties r
on r.metric_month > m.metric_month
and r.metric_month <= m.metric_month + interval '12 months'
and r.hubspot_listing_segmentation = m.hubspot_listing_segmentation
and r.main_billing_country_iso_3 = m.main_billing_country_iso_3
group by r.metric_month, r.hubspot_listing_segmentation, r.main_billing_country_iso_3

View file

@ -1707,7 +1707,7 @@ models:
data_type: boolean
description: "Flag to indicate if the deal is in Xero."
- name: int_deals_onboarding_mrr
- name: int_monthly_onboarding_mrr_metrics
description: |
"This table provides data on the Onboarding Monthly Recurring Revenue (MRR).
The Onboarding MRR is an estimate of the expected monthly revenue generated by
@ -1724,14 +1724,14 @@ models:
- not_null
- is_last_day_of_month
- name: billing_country
- name: main_billing_country_iso_3
data_type: text
description: |
"ISO 3166-1 alpha-3 main country code in which the Deals are billed"
data_tests:
- not_null
- name: number_of_listings
- name: hubspot_listing_segmentation
data_type: text
description: |
"Segmentation based on the number of properties specified by each deal
@ -1740,9 +1740,9 @@ models:
- not_null
- accepted_values:
values:
- "01|05"
- "06|20"
- "21|60"
- "01-05"
- "06-20"
- "21-60"
- "61+"
- "global"