{% set min_date = "2022-01-01" %}
{% set dimensions = ("global", "by_billing_country") %}
-- "by_number_of_listings" excluded on purpose - there's differences because of daily
-- segmentation
with
    new_mtd_created_guest_journeys as (
        select end_date as date, dimension, dimension_value, created_guest_journeys
        from {{ ref("int_kpis__aggregated_mtd_created_guest_journeys") }}
        where
            end_date >= '{{ min_date }}'
            and dimension in {{ dimensions }}
            and dimension_value <> 'UNSET'
    ),
    new_monthly_created_guest_journeys as (
        select end_date as date, dimension, dimension_value, created_guest_journeys
        from {{ ref("int_kpis__aggregated_monthly_created_guest_journeys") }}
        where
            end_date >= '{{ min_date }}'
            and dimension in {{ dimensions }}
            and dimension_value <> 'UNSET'
    ),
    new_created_guest_journeys as (
        select *
        from new_mtd_created_guest_journeys
        union all
        select *
        from new_monthly_created_guest_journeys
    ),
    old_created_guest_journeys as (
        select date, dimension, dimension_value, created_guest_journeys
        from {{ ref("int_core__mtd_guest_journey_metrics") }}
        where date >= '{{ min_date }}' and dimension in {{ dimensions }}
    ),
    comparison as (
        select
            coalesce(o.date, n.date) as date,
            coalesce(o.dimension, n.dimension) as dimension,
            coalesce(o.dimension_value, n.dimension_value) as dimension_value,
            o.created_guest_journeys as old_created_guest_journeys,
            n.created_guest_journeys as new_created_guest_journeys,
            coalesce(o.created_guest_journeys, 0)
            - coalesce(n.created_guest_journeys, 0) as diff
        from old_created_guest_journeys o
        full outer join
            new_created_guest_journeys n
            on o.date = n.date
            and o.dimension = n.dimension
            and o.dimension_value = n.dimension_value
    )
select *
from comparison
where diff <> 0
order by date desc, abs(diff) desc
