24 lines
1 KiB
MySQL
24 lines
1 KiB
MySQL
|
|
{% macro generate_kpis_aggregation(time_granularity, agg_models) %}
|
||
|
|
select
|
||
|
|
d.date,
|
||
|
|
'{{ time_granularity }}' as time_granularity,
|
||
|
|
d.dimension,
|
||
|
|
d.dimension_value
|
||
|
|
{%- for agg_model in agg_models if time_granularity in agg_model["name"] %}
|
||
|
|
{%- for metric in agg_model["metrics"] %}
|
||
|
|
, coalesce({{ ref(agg_model["name"]) }}.{{ metric }}, 0) as {{ metric }}
|
||
|
|
{%- endfor %}
|
||
|
|
{%- endfor %}
|
||
|
|
from all_dates d
|
||
|
|
{%- for agg_model in agg_models if time_granularity in agg_model["name"] %}
|
||
|
|
left join
|
||
|
|
{{ ref(agg_model["name"]) }}
|
||
|
|
on d.date = {{ ref(agg_model["name"]) }}.{{ agg_model["date_field"] }}
|
||
|
|
and d.dimension = {{ ref(agg_model["name"]) }}.dimension
|
||
|
|
and d.dimension_value = {{ ref(agg_model["name"]) }}.dimension_value
|
||
|
|
{%- endfor %}
|
||
|
|
{% if time_granularity == "weekly" %} where d.is_end_of_week
|
||
|
|
{% elif time_granularity == "monthly" %} where d.is_end_of_month
|
||
|
|
{% endif %}
|
||
|
|
{% endmacro %}
|