{% set dimensions = get_kpi_dimensions_per_model("") %}

{{ config(materialized="table", unique_key=["date", "dimension", "dimension_value"]) }}

with
    daily_dim as (
        select distinct
            ikdd.year,
            ikdd.month,
            ikdd.day,
            ikdd.date,
            -- Dimensions --
            coalesce(icuh.id_deal, 'UNSET') as id_deal,
            coalesce(
                icd.main_billing_country_iso_3_per_deal, 'UNSET'
            ) as main_billing_country_iso_3_per_deal,
            coalesce(
                icmas.active_accommodations_per_deal_segmentation, 'UNSET'
            ) as active_accommodations_per_deal_segmentation,
            ikdd.first_day_month,
            ikdd.last_day_month,
            ikdd.is_end_of_month,
            ikdd.is_current_month
        from {{ ref("int_kpis__dimension_dates") }} as ikdd
        left join
            {{ ref("int_core__user_host") }} as icuh
            on ikdd.date >= date(icuh.created_date_utc)
        left join {{ ref("int_core__deal") }} as icd on icuh.id_deal = icd.id_deal
        left join
            {{ ref("int_kpis__dimension_daily_accommodation") }} as icmas
            on icuh.id_deal = icmas.id_deal
            and ikdd.date = icmas.date
        where (ikdd.is_month_to_date = true or ikdd.is_end_of_month)
    )

{% for dimension in dimensions %}
    select distinct
        year,
        month,
        day,
        date,
        {{ dimension.dimension }} as dimension,
        {{ dimension.dimension_value }} as dimension_value,
        first_day_month,
        last_day_month,
        is_end_of_month,
        is_current_month
    from daily_dim
    where {{ dimension.dimension_value }} <> 'UNSET'
    {% if not loop.last %}
        union all
    {% endif %}
{% endfor %}
