data-dwh-dbt-project/models/reporting/general/mtd_aggregated_metrics.sql
Oriol Roqué Paniagua baf9d2767c Merged PR 5215: Switch from 20th to 12th for invoicing cap
# Description

After a discussion with Nathan, the invoicing cycle has again been reduced by quite a few days.
We agreed to move the cap from 20th to 12th of the following month.

# 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: #30147
2025-05-15 14:10:27 +00:00

72 lines
2.4 KiB
SQL

{% set production_dimensions = get_main_kpis_dimensions_for_production() %}
{{
config(
materialized="table",
indexes=[
{"columns": ["dimension"]},
{"columns": ["dimension", "date"]},
],
)
}}
with
dimensions as (
{% for dimension in production_dimensions %}
select
{{ dimension.dimension }} as dimension,
{{ dimension.dimension_display }} as dimension_display
{% if not loop.last %}
union all
{% endif %}
{% endfor %}
),
int_mtd_aggregated_metrics as (
select m.*, d.dimension_display
from {{ ref("int_mtd_aggregated_metrics") }} m
-- The following clause limits the display execution
-- to only include those dimensions configured to
-- appear for production purposes
inner join dimensions d on m.dimension = d.dimension
)
select
year as year,
month as month,
day as day,
case when is_end_of_month then 1 else 0 end as is_end_of_month,
case when is_current_month then 1 else 0 end as is_current_month,
case
when is_end_of_month_or_yesterday then 1 else 0
end as is_end_of_month_or_yesterday,
first_day_month as first_day_month,
date as date,
dimension_display as dimension,
dimension_value as dimension_value,
previous_year_date as previous_year_date,
order_by as order_by,
number_format as number_format,
metric as metric,
value as value,
previous_year_value as previous_year_value,
relative_increment as relative_increment,
relative_increment_with_sign_format as relative_increment_with_sign_format
from int_mtd_aggregated_metrics m
where
(
(
-- Not show current + previous month if the metric depends on
-- invoicing cycle and it is before the 12th of the month, if it
-- is the 12th of the month or after, only exclude the current
-- month.
display_exclusion = 'INVOICING'
and {{ is_date_before_12th_of_previous_month("date") }}
)
or (
-- Handle exclusion for Churn/MRR metrics: do not show them in the
-- current month.
display_exclusion = 'ONGOING_MONTH'
and date_trunc('month', m.date) < date_trunc('month', current_date)
)
-- Keep all history for the rest of metrics
or display_exclusion = 'NONE'
)