forked from dbt-labs/dbt_metrics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvalidate_grain_order.sql
23 lines (18 loc) · 1.05 KB
/
validate_grain_order.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{% macro validate_grain_order(metric_grain, calculation_grain) %}
{% set grains = metrics.get_grain_order() %}
{% if metric_grain not in grains or calculation_grain not in grains %}
{% set comma = joiner(", ") %}
{% do exceptions.raise_compiler_error("Unknown grains: [" ~ (comma() ~ metric_grain if metric_grain not in grains) ~ (comma() ~ calculation_grain if calculation_grain not in grains) ~ "]") %}
{% endif %}
{% set metric_grain_index = grains.index(metric_grain) %}
{% set calculation_grain_index = grains.index(calculation_grain) %}
{% if (calculation_grain_index < metric_grain_index) %}
{% do exceptions.raise_compiler_error("Can't calculate secondary metric at " ~ calculation_grain ~"-level when metric is at " ~ metric_grain ~ "-level") %}
{% endif %}
{% endmacro %}
{% macro get_grain_order() %}
{{ return(adapter.dispatch('get_grain_order', 'metrics')()) }}
{% endmacro %}
{% macro default__get_grain_order() %}
{% do return (['day', 'week', 'month', 'quarter', 'year']) %}
{% endmacro %}