Merged PR 4483: Adding targets (to be revised). Allows multi-year last-date computation
# Description Changes: * Adds template for targets -> These need to be revised * Adds comparison of values vs. targets * Allows for multi-year last date computation (allowing multiple years to be selected, not just the last one) # 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. # Other - [ ] Check if a full-refresh is required after this PR is merged. Related work items: #27609, #27805
This commit is contained in:
parent
cbed87404e
commit
85c2c73da7
6 changed files with 332 additions and 40 deletions
|
|
@ -153,39 +153,73 @@
|
|||
with
|
||||
int_ytd_mtd_main_metrics_overview as (
|
||||
select * from {{ ref("int_ytd_mtd_main_metrics_overview") }}
|
||||
),
|
||||
stg_seed__main_metrics_targets as (
|
||||
select * from {{ ref("stg_seed__main_metrics_targets") }}
|
||||
),
|
||||
main_metrics_aggregation as (
|
||||
{% for metric in metrics %}
|
||||
select
|
||||
calendar_year,
|
||||
financial_year,
|
||||
date,
|
||||
previous_year_date,
|
||||
dimension,
|
||||
dimension_value,
|
||||
{{ metric.id_metric }} as id_metric,
|
||||
-- quotation marks added because text format
|
||||
'{{ metric.name }}' as metric_name,
|
||||
{{ metric.requires_invoicing_data }} as requires_invoicing_data,
|
||||
{{ metric.current_month_MTD }} as current_month_mtd,
|
||||
{{ metric.previous_month_EOM }} as previous_month_eom,
|
||||
{{ metric.previous_year_MTD }} as previous_year_mtd,
|
||||
{{ metric.current_YTD }} as current_year_ytd,
|
||||
{{ metric.previous_YTD }} as previous_year_ytd,
|
||||
{{ metric.current_month_MTD }}
|
||||
- {{ metric.previous_month_EOM }}
|
||||
as diff_current_month_mtd_vs_previous_month_eom,
|
||||
{{ metric.current_month_MTD }}
|
||||
- {{ metric.previous_year_MTD }}
|
||||
as diff_current_month_mtd_vs_previous_year_mtd,
|
||||
{{ metric.current_YTD }}
|
||||
- {{ metric.previous_YTD }} as diff_current_ytd_vs_previous_ytd,
|
||||
{{ metric.current_month_MTD }}
|
||||
/ nullif({{ metric.previous_month_EOM }}, 0)
|
||||
- 1 as rel_diff_current_month_mtd_vs_previous_month_eom,
|
||||
{{ metric.current_month_MTD }}
|
||||
/ nullif({{ metric.previous_year_MTD }}, 0)
|
||||
- 1 as rel_diff_current_month_mtd_vs_previous_year_mtd,
|
||||
{{ metric.current_YTD }} / nullif({{ metric.previous_YTD }}, 0)
|
||||
- 1 as rel_diff_current_ytd_vs_previous_ytd
|
||||
from int_ytd_mtd_main_metrics_overview
|
||||
{% if not loop.last %}
|
||||
union all
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
)
|
||||
{% for metric in metrics %}
|
||||
select
|
||||
calendar_year,
|
||||
financial_year,
|
||||
date,
|
||||
previous_year_date,
|
||||
dimension,
|
||||
dimension_value,
|
||||
{{ metric.id_metric }} as id_metric,
|
||||
-- quotation marks added because text format
|
||||
'{{ metric.name }}' as metric_name,
|
||||
{{ metric.requires_invoicing_data }} as requires_invoicing_data,
|
||||
{{ metric.current_month_MTD }} as current_month_mtd,
|
||||
{{ metric.previous_month_EOM }} as previous_month_eom,
|
||||
{{ metric.previous_year_MTD }} as previous_year_mtd,
|
||||
{{ metric.current_YTD }} as current_year_ytd,
|
||||
{{ metric.previous_YTD }} as previous_year_ytd,
|
||||
{{ metric.current_month_MTD }}
|
||||
- {{ metric.previous_month_EOM }}
|
||||
as diff_current_month_mtd_vs_previous_month_eom,
|
||||
{{ metric.current_month_MTD }}
|
||||
- {{ metric.previous_year_MTD }} as diff_current_month_mtd_vs_previous_year_mtd,
|
||||
{{ metric.current_YTD }}
|
||||
- {{ metric.previous_YTD }} as diff_current_ytd_vs_previous_ytd,
|
||||
{{ metric.current_month_MTD }} / nullif({{ metric.previous_month_EOM }}, 0)
|
||||
- 1 as rel_diff_current_month_mtd_vs_previous_month_eom,
|
||||
{{ metric.current_month_MTD }} / nullif({{ metric.previous_year_MTD }}, 0)
|
||||
- 1 as rel_diff_current_month_mtd_vs_previous_year_mtd,
|
||||
{{ metric.current_YTD }} / nullif({{ metric.previous_YTD }}, 0)
|
||||
- 1 as rel_diff_current_ytd_vs_previous_ytd
|
||||
from int_ytd_mtd_main_metrics_overview
|
||||
{% if not loop.last %}
|
||||
union all
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
select
|
||||
metrics.*,
|
||||
-- EOM target --
|
||||
targets.target_eom_value as target_eom_value,
|
||||
metrics.current_month_mtd
|
||||
- targets.target_eom_value as diff_current_month_mtd_vs_eom_target,
|
||||
metrics.current_month_mtd / nullif(targets.target_eom_value, 0)
|
||||
- 1 as rel_diff_current_month_mtd_vs_eom_target,
|
||||
-- YTD target --
|
||||
targets.target_ytd_value as target_ytd_value,
|
||||
metrics.current_year_ytd
|
||||
- targets.target_ytd_value as diff_current_ytd_vs_ytd_target,
|
||||
metrics.current_year_ytd / nullif(targets.target_ytd_value, 0)
|
||||
- 1 as rel_diff_current_ytd_vs_ytd_target,
|
||||
-- EOFY target --
|
||||
targets.target_eofy_value as target_eofy_value,
|
||||
metrics.current_year_ytd
|
||||
- targets.target_eofy_value as diff_current_ytd_vs_eofy_target,
|
||||
metrics.current_year_ytd / nullif(
|
||||
targets.target_eofy_value, 0
|
||||
) as achievement_rate_current_ytd_vs_eofy_target
|
||||
from main_metrics_aggregation as metrics
|
||||
left join
|
||||
stg_seed__main_metrics_targets as targets
|
||||
on metrics.id_metric = targets.id_metric
|
||||
and date_trunc('month', metrics.date) = date_trunc('month', targets.target_date)
|
||||
|
|
|
|||
|
|
@ -2312,3 +2312,61 @@ models:
|
|||
data_type: numeric
|
||||
description: |
|
||||
Relative difference between the current year YTD and the previous year YTD.
|
||||
|
||||
- name: target_eom_value
|
||||
data_type: numeric
|
||||
description: |
|
||||
The EOM target value for this metric. This is the value that we aim to
|
||||
achieve by the end of the month. It can be null if the target is not
|
||||
available.
|
||||
|
||||
- name: target_ytd_value
|
||||
data_type: numeric
|
||||
description: |
|
||||
The YTD target value for this metric. This is the cumulative value that we
|
||||
aim to achieve by the end of each month with respect to the beginning of the
|
||||
financial year, that will put us to reach the EOFY target. It can be null if
|
||||
the target is not available.
|
||||
|
||||
- name: target_eofy_value
|
||||
data_type: numeric
|
||||
description: |
|
||||
The EOFY target value for this metric. This is the value that we aim to
|
||||
achieve by the end of the financial year. It can be null if the target is
|
||||
not available.
|
||||
|
||||
- name: diff_current_month_mtd_vs_eom_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Difference between the current month MTD and the EOM target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: diff_current_ytd_vs_ytd_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Difference between the current year YTD and the YTD target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: diff_current_ytd_vs_eofy_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Difference between the current year YTD and the EOFY target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: rel_diff_current_month_mtd_vs_eom_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Relative difference between the current month MTD and the EOM target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: rel_diff_current_ytd_vs_ytd_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Relative difference between the current year YTD and the YTD target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: achievement_rate_current_ytd_vs_eofy_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Achievement rate between the current year YTD and the EOFY target. It can be null
|
||||
if the target is not available.
|
||||
|
|
|
|||
|
|
@ -2073,3 +2073,61 @@ models:
|
|||
data_type: numeric
|
||||
description: |
|
||||
Relative difference between the current year YTD and the previous year YTD.
|
||||
|
||||
- name: target_eom_value
|
||||
data_type: numeric
|
||||
description: |
|
||||
The EOM target value for this metric. This is the value that we aim to
|
||||
achieve by the end of the month. It can be null if the target is not
|
||||
available.
|
||||
|
||||
- name: target_ytd_value
|
||||
data_type: numeric
|
||||
description: |
|
||||
The YTD target value for this metric. This is the cumulative value that we
|
||||
aim to achieve by the end of each month with respect to the beginning of the
|
||||
financial year, that will put us to reach the EOFY target. It can be null if
|
||||
the target is not available.
|
||||
|
||||
- name: target_eofy_value
|
||||
data_type: numeric
|
||||
description: |
|
||||
The EOFY target value for this metric. This is the value that we aim to
|
||||
achieve by the end of the financial year. It can be null if the target is
|
||||
not available.
|
||||
|
||||
- name: diff_current_month_mtd_vs_eom_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Difference between the current month MTD and the EOM target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: diff_current_ytd_vs_ytd_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Difference between the current year YTD and the YTD target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: diff_current_ytd_vs_eofy_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Difference between the current year YTD and the EOFY target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: rel_diff_current_month_mtd_vs_eom_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Relative difference between the current month MTD and the EOM target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: rel_diff_current_ytd_vs_ytd_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Relative difference between the current year YTD and the YTD target. It can be null
|
||||
if the target is not available.
|
||||
|
||||
- name: achievement_rate_current_ytd_vs_eofy_target
|
||||
data_type: numeric
|
||||
description: |
|
||||
Achievement rate between the current year YTD and the EOFY target. It can be null
|
||||
if the target is not available.
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ with
|
|||
int_ytd_mtd_aggregated_main_metrics_overview as (
|
||||
select * from {{ ref("int_ytd_mtd_aggregated_main_metrics_overview") }}
|
||||
),
|
||||
latest_dates as (
|
||||
select dimension, id_metric, max(date) as latest_available_date
|
||||
latest_dates_per_financial_year as (
|
||||
select dimension, financial_year, id_metric, max(date) as latest_available_date
|
||||
from int_ytd_mtd_aggregated_main_metrics_overview
|
||||
where
|
||||
(
|
||||
|
|
@ -19,7 +19,7 @@ with
|
|||
or requires_invoicing_data = false
|
||||
)
|
||||
-- To do: handle exclusion for Churn/MRR metrics once these are created
|
||||
group by dimension, id_metric
|
||||
group by dimension, financial_year, id_metric
|
||||
)
|
||||
select
|
||||
m.calendar_year as calendar_year,
|
||||
|
|
@ -46,10 +46,22 @@ select
|
|||
as rel_diff_current_month_mtd_vs_previous_month_eom,
|
||||
m.rel_diff_current_month_mtd_vs_previous_year_mtd
|
||||
as rel_diff_current_month_mtd_vs_previous_year_mtd,
|
||||
m.rel_diff_current_ytd_vs_previous_ytd as rel_diff_current_ytd_vs_previous_ytd
|
||||
m.rel_diff_current_ytd_vs_previous_ytd as rel_diff_current_ytd_vs_previous_ytd,
|
||||
m.target_eom_value as target_eom_value,
|
||||
m.diff_current_month_mtd_vs_eom_target as diff_current_month_mtd_vs_eom_target,
|
||||
m.rel_diff_current_month_mtd_vs_eom_target
|
||||
as rel_diff_current_month_mtd_vs_eom_target,
|
||||
m.target_ytd_value as target_ytd_value,
|
||||
m.diff_current_ytd_vs_ytd_target as diff_current_ytd_vs_ytd_target,
|
||||
m.rel_diff_current_ytd_vs_ytd_target as rel_diff_current_ytd_vs_ytd_target,
|
||||
m.target_eofy_value as target_eofy_value,
|
||||
m.diff_current_ytd_vs_eofy_target as diff_current_ytd_vs_eofy_target,
|
||||
m.achievement_rate_current_ytd_vs_eofy_target
|
||||
as achievement_rate_current_ytd_vs_eofy_target
|
||||
from int_ytd_mtd_aggregated_main_metrics_overview m
|
||||
inner join
|
||||
latest_dates ld
|
||||
latest_dates_per_financial_year ld
|
||||
on m.dimension = ld.dimension
|
||||
and m.id_metric = ld.id_metric
|
||||
and m.financial_year = ld.financial_year
|
||||
and m.date <= ld.latest_available_date
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue