{% set metrics = [
    {
        "order_by": 1,
        "metric": "Created Bookings",
        "value": "created_bookings",
        "previous_year_value": "previous_year_created_bookings",
        "relative_increment": "relative_increment_created_bookings",
        "number_format": "integer",
    },
    {
        "order_by": 2,
        "metric": "Cancelled Bookings",
        "value": "cancelled_bookings",
        "previous_year_value": "previous_year_cancelled_bookings",
        "relative_increment": "relative_increment_cancelled_bookings",
        "number_format": "integer",
    },
    {
        "order_by": 3,
        "metric": "Checkout Bookings",
        "value": "check_out_bookings",
        "previous_year_value": "previous_year_check_out_bookings",
        "relative_increment": "relative_increment_check_out_bookings",
        "number_format": "integer",
    },
   {
        "order_by": 4,
        "metric": "Guest Journey Created",
        "value": "created_guest_journeys",
        "previous_year_value": "previous_year_created_guest_journeys",
        "relative_increment": "relative_increment_created_guest_journeys",
        "number_format": "integer",
    },
    {
        "order_by": 5,
        "metric": "Guest Journey Started",
        "value": "started_guest_journeys",
        "previous_year_value": "previous_year_started_guest_journeys",
        "relative_increment": "relative_increment_started_guest_journeys",
        "number_format": "integer",
    },
    {
        "order_by": 6,
        "metric": "Guest Journey Completed",
        "value": "completed_guest_journeys",
        "previous_year_value": "previous_year_completed_guest_journeys",
        "relative_increment": "relative_increment_completed_guest_journeys",
        "number_format": "integer",
    },
    {
        "order_by": 7,
        "metric": "Guest Journey with Payment",
        "value": "paid_guest_journeys",
        "previous_year_value": "previous_year_paid_guest_journeys",
        "relative_increment": "relative_increment_paid_guest_journeys",
        "number_format": "integer",
    },
    {
        "order_by": 8,
        "metric": "New Deals",
        "value": "new_deals",
        "previous_year_value": "previous_year_new_deals",
        "relative_increment": "relative_increment_new_deals",
        "number_format": "integer",
    },
    {
        "order_by": 9,
        "metric": "First Time Booked Deals",
        "value": "first_time_booked_deals",
        "previous_year_value": "previous_year_first_time_booked_deals",
        "relative_increment": "relative_increment_first_time_booked_deals",
        "number_format": "integer",
    },
    {
        "order_by": 10,
        "metric": "Deals Booked in Month",
        "value": "deals_booked_in_month",
        "previous_year_value": "previous_year_deals_booked_in_month",
        "relative_increment": "relative_increment_deals_booked_in_month",
        "number_format": "integer",
    },
    {
        "order_by": 11,
        "metric": "Deals Booked in 6 Months",
        "value": "deals_booked_in_6_months",
        "previous_year_value": "previous_year_deals_booked_in_6_months",
        "relative_increment": "relative_increment_deals_booked_in_6_months",
        "number_format": "integer",
    },
    {
        "order_by": 12,
        "metric": "Deals Booked in 12 Months",
        "value": "deals_booked_in_12_months",
        "previous_year_value": "previous_year_deals_booked_in_12_months",
        "relative_increment": "relative_increment_deals_booked_in_12_months",
        "number_format": "integer",
    },
    {
        "order_by": 13,
        "metric": "Churning Deals",
        "value": "churning_deals",
        "previous_year_value": "previous_year_churning_deals",
        "relative_increment": "relative_increment_churning_deals",
        "number_format": "integer",
    },
    {
        "order_by": 14,
        "metric": "New Listings",
        "value": "new_listings",
        "previous_year_value": "previous_year_new_listings",
        "relative_increment": "relative_increment_new_listings",
        "number_format": "integer",
    },
    {
        "order_by": 15,
        "metric": "First Time Booked Listings",
        "value": "first_time_booked_listings",
        "previous_year_value": "previous_year_first_time_booked_listings",
        "relative_increment": "relative_increment_first_time_booked_listings",
        "number_format": "integer",
    },
    {
        "order_by": 16,
        "metric": "Listings Booked in Month",
        "value": "listings_booked_in_month",
        "previous_year_value": "previous_year_listings_booked_in_month",
        "relative_increment": "relative_increment_listings_booked_in_month",
        "number_format": "integer",
    },
    {
        "order_by": 17,
        "metric": "Listings Booked in 6 Months",
        "value": "listings_booked_in_6_months",
        "previous_year_value": "previous_year_listings_booked_in_6_months",
        "relative_increment": "relative_increment_listings_booked_in_6_months",
        "number_format": "integer",
    },
    {
        "order_by": 18,
        "metric": "Listings Booked in 12 Months",
        "value": "listings_booked_in_12_months",
        "previous_year_value": "previous_year_listings_booked_in_12_months",
        "relative_increment": "relative_increment_listings_booked_in_12_months",
        "number_format": "integer",
    },
    {
        "order_by": 19,
        "metric": "Churning Listings",
        "value": "churning_listings",
        "previous_year_value": "previous_year_churning_listings",
        "relative_increment": "relative_increment_churning_listings",
        "number_format": "integer",
    },
    {
        "order_by": 100,
        "metric": "Guest Journey Start Rate",
        "value": "start_rate_guest_journey",
        "previous_year_value": "previous_year_start_rate_guest_journey",
        "relative_increment": "relative_increment_start_rate_guest_journey",
        "number_format": "percentage",
    },
    {
        "order_by": 101,
        "metric": "Guest Journey Completion Rate",
        "value": "completion_rate_guest_journey",
        "previous_year_value": "previous_year_completion_rate_guest_journey",
        "relative_increment": "relative_increment_completion_rate_guest_journey",
        "number_format": "percentage",
    },
    {
        "order_by": 102,
        "metric": "Guest Journey Incompletion Rate",
        "value": "incompletion_rate_guest_journey",
        "previous_year_value": "previous_year_incompletion_rate_guest_journey",
        "relative_increment": "relative_increment_incompletion_rate_guest_journey",
        "number_format": "percentage",
    },
    {
        "order_by": 103,
        "metric": "Guest Journey Payment Rate",
        "value": "payment_rate_guest_journey",
        "previous_year_value": "previous_year_payment_rate_guest_journey",
        "relative_increment": "relative_increment_payment_rate_guest_journey",
        "number_format": "percentage",
    },
    {
        "order_by": 200,
        "metric": "Guest Payments",
        "value": "total_guest_payments_in_gbp",
        "previous_year_value": "previous_year_total_guest_payments_in_gbp",
        "relative_increment": "relative_increment_total_guest_payments_in_gbp",
        "number_format": "currency_gbp",
    },
    {
        "order_by": 201,
        "metric": "Guest Payments per Guest Journey Completed",
        "value": "guest_payments_per_completed_guest_journey",
        "previous_year_value": "previous_year_guest_payments_per_completed_guest_journey",
        "relative_increment": "relative_increment_guest_payments_per_completed_guest_journey",
        "number_format": "currency_gbp",
    },
    {
        "order_by": 202,
        "metric": "Guest Payments per Guest Journey with Payment",
        "value": "guest_payments_per_paid_guest_journey",
        "previous_year_value": "previous_year_guest_payments_per_paid_guest_journey",
        "relative_increment": "relative_increment_guest_payments_per_paid_guest_journey",
        "number_format": "currency_gbp",
    },
    {
        "order_by": 203,
        "metric": "Guest Revenue",
        "value": "total_guest_revenue_in_gbp",
        "previous_year_value": "previous_year_total_guest_revenue_in_gbp",
        "relative_increment": "relative_increment_total_guest_revenue_in_gbp",
        "number_format": "currency_gbp",
    },
    {
        "order_by": 204,
        "metric": "Guest Revenue per Guest Journey Completed",
        "value": "guest_revenue_per_completed_guest_journey",
        "previous_year_value": "previous_year_guest_revenue_per_completed_guest_journey",
        "relative_increment": "relative_increment_guest_revenue_per_completed_guest_journey",
        "number_format": "currency_gbp",
    },
    {
        "order_by": 205,
        "metric": "Guest Revenue per Guest Journey with Payment",
        "value": "guest_revenue_per_paid_guest_journey",
        "previous_year_value": "previous_year_guest_revenue_per_paid_guest_journey",
        "relative_increment": "relative_increment_guest_revenue_per_paid_guest_journey",
        "number_format": "currency_gbp",
    }
] %}
with
    int_mtd_vs_previous_year_metrics as (
        select * from {{ ref("int_mtd_vs_previous_year_metrics") }}
    )
{% for metric in metrics %}
    select
        year,
        month,
        day,
        is_end_of_month,
        is_current_month,
        first_day_month,
        date,
        previous_year_date,
        {{ metric.order_by }} as order_by,
        -- quotation marks added because text format
        '{{ metric.number_format }}' as number_format,
        '{{ metric.metric }}' as metric,
        {{ metric.value }} as value,
        {{ metric.previous_year_value }} as previous_year_value,
        {{ metric.relative_increment }} as relative_increment
    from int_mtd_vs_previous_year_metrics
    {% if not loop.last %}
        union all
    {% endif %}
{% endfor %}
