# Description Creates a new model for reporting. It includes any relevant metric at Deal level in a similar format as we do for `mtd_aggregated_metrics`. Additionally, there's few Deal attributes - from Hubspot, segmentations, lifecycles, etc. In order to dynamically choose which metrics are relevant on a Deal level, I modified the configuration in `int_mtd_aggregated_metrics` so the extraction is under control. # 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. **Worth discussing the possibilities to include indexes in the future** # Other - [ ] Check if a full-refresh is required after this PR is merged. Related work items: #28998
64 lines
2.1 KiB
SQL
64 lines
2.1 KiB
SQL
with
|
|
int_mtd_aggregated_metrics_by_deal as (
|
|
select * from {{ ref("int_mtd_aggregated_metrics_by_deal") }}
|
|
)
|
|
|
|
select
|
|
-- PRIMARY KEY --
|
|
m.date as date,
|
|
m.id_deal as id_deal,
|
|
m.metric as metric,
|
|
|
|
-- TIME ATTRIBUTES --
|
|
m.year as year,
|
|
m.month as month,
|
|
m.day as day,
|
|
case when m.is_end_of_month then 1 else 0 end as is_end_of_month,
|
|
case when m.is_current_month then 1 else 0 end as is_current_month,
|
|
case
|
|
when m.is_end_of_month_or_yesterday then 1 else 0
|
|
end as is_end_of_month_or_yesterday,
|
|
m.first_day_month as first_day_month,
|
|
|
|
-- MAIN DEAL ATTRIBUTES --
|
|
m.deal as deal,
|
|
m.active_accommodations_per_deal_segmentation
|
|
as active_accommodations_per_deal_segmentation,
|
|
m.main_billing_country_iso_3_per_deal as main_billing_country_iso_3_per_deal,
|
|
|
|
-- HUBSPOT ATTRIBUTES --
|
|
m.account_manager as account_manager,
|
|
|
|
-- DEAL BUSINESS SCOPE
|
|
m.business_scope as business_scope,
|
|
|
|
-- DEAL LIFECYCLE --
|
|
m.deal_lifecycle_state as deal_lifecycle_state,
|
|
|
|
-- METRIC VALUES AND DISPLAY --
|
|
m.order_by as order_by,
|
|
m.number_format as number_format,
|
|
m.value as value,
|
|
m.previous_year_value as previous_year_value,
|
|
m.relative_increment as relative_increment,
|
|
m.relative_increment_with_sign_format as relative_increment_with_sign_format
|
|
from int_mtd_aggregated_metrics_by_deal m
|
|
where
|
|
(
|
|
(
|
|
-- Not show current + previous month if the metric depends on
|
|
-- invoicing cycle and it is before the 20th of the month, if it
|
|
-- is the 20th of the month or after, only exclude the current
|
|
-- month.
|
|
m.display_exclusion = 'INVOICING'
|
|
and {{ is_date_before_20th_of_previous_month("m.date") }}
|
|
)
|
|
or (
|
|
-- Handle exclusion for Churn/MRR metrics: do not show them in the
|
|
-- current month.
|
|
m.display_exclusion = 'ONGOING_MONTH'
|
|
and date_trunc('month', m.date) < date_trunc('month', current_date)
|
|
)
|
|
-- Keep all history for the rest of metrics
|
|
or m.display_exclusion = 'NONE'
|
|
)
|