{% 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'
    )
