{% 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",
        "increment_sign_format": "positive",
    },
    {
        "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",
        "increment_sign_format": "negative",
    },
    {
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 4,
        "metric": "Est. Billable Bookings",
        "value": "billable_bookings",
        "previous_year_value": "previous_year_billable_bookings",
        "relative_increment": "relative_increment_billable_bookings",
        "number_format": "integer",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 10,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 11,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 12,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 13,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 20,
        "metric": "New Deals",
        "value": "new_deals",
        "previous_year_value": "previous_year_new_deals",
        "relative_increment": "relative_increment_new_deals",
        "number_format": "integer",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 21,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 22,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 23,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 24,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 25,
        "metric": "Churning Deals",
        "value": "churning_deals",
        "previous_year_value": "previous_year_churning_deals",
        "relative_increment": "relative_increment_churning_deals",
        "number_format": "integer",
        "increment_sign_format": "negative",
    },
    {
        "order_by": 30,
        "metric": "New Listings",
        "value": "new_listings",
        "previous_year_value": "previous_year_new_listings",
        "relative_increment": "relative_increment_new_listings",
        "number_format": "integer",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 31,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 32,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 33,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 34,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 35,
        "metric": "Churning Listings",
        "value": "churning_listings",
        "previous_year_value": "previous_year_churning_listings",
        "relative_increment": "relative_increment_churning_listings",
        "number_format": "integer",
        "increment_sign_format": "negative",
    },
    {
        "order_by": 40,
        "metric": "Host Resolutions Payment Count",
        "value": "xero_host_resolution_payment_count",
        "previous_year_value": "previous_year_xero_host_resolution_payment_count",
        "relative_increment": "relative_increment_xero_host_resolution_payment_count",
        "number_format": "integer",
        "increment_sign_format": "negative",
    },
    {
        "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",
        "increment_sign_format": "positive",
    },
    {
        "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",
        "increment_sign_format": "positive",
    },
    {
        "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",
        "increment_sign_format": "negative",
    },
    {
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 200,
        "metric": "Total Revenue",
        "value": "total_revenue_in_gbp",
        "previous_year_value": "previous_year_total_revenue_in_gbp",
        "relative_increment": "relative_increment_total_revenue_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 201,
        "metric": "Total Revenue per Booking Created",
        "value": "total_revenue_per_created_booking",
        "previous_year_value": "previous_year_total_revenue_per_created_booking",
        "relative_increment": "relative_increment_total_revenue_per_created_booking",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 202,
        "metric": "Total Revenue per Guest Journey Created",
        "value": "total_revenue_per_created_guest_journey",
        "previous_year_value": "previous_year_total_revenue_per_created_guest_journey",
        "relative_increment": "relative_increment_total_revenue_per_created_guest_journey",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 203,
        "metric": "Total Revenue per Deals Booked in Month",
        "value": "total_revenue_per_deals_booked_in_month",
        "previous_year_value": "previous_year_total_revenue_per_deals_booked_in_month",
        "relative_increment": "relative_increment_total_revenue_per_deals_booked_in_month",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 204,
        "metric": "Total Revenue per Listings Booked in Month",
        "value": "total_revenue_per_listings_booked_in_month",
        "previous_year_value": "previous_year_total_revenue_per_listings_booked_in_month",
        "relative_increment": "relative_increment_total_revenue_per_listings_booked_in_month",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 220,
        "metric": "Invoiced Operator Revenue",
        "value": "xero_operator_net_fees_in_gbp",
        "previous_year_value": "previous_year_xero_operator_net_fees_in_gbp",
        "relative_increment": "relative_increment_xero_operator_net_fees_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 225,
        "metric": "Invoiced Booking Fees",
        "value": "xero_booking_net_fees_in_gbp",
        "previous_year_value": "previous_year_xero_booking_net_fees_in_gbp",
        "relative_increment": "relative_increment_xero_booking_net_fees_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 226,
        "metric": "Invoiced Listing Fees",
        "value": "xero_listing_net_fees_in_gbp",
        "previous_year_value": "previous_year_xero_listing_net_fees_in_gbp",
        "relative_increment": "relative_increment_xero_listing_net_fees_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 227,
        "metric": "Invoiced Verification Fees",
        "value": "xero_verification_net_fees_in_gbp",
        "previous_year_value": "previous_year_xero_verification_net_fees_in_gbp",
        "relative_increment": "relative_increment_xero_verification_net_fees_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 230,
        "metric": "Invoiced APIs Revenue",
        "value": "xero_apis_net_fees_in_gbp",
        "previous_year_value": "previous_year_xero_apis_net_fees_in_gbp",
        "relative_increment": "relative_increment_xero_apis_net_fees_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 235,
        "metric": "Invoiced Guesty Fees",
        "value": "xero_guesty_net_fees_in_gbp",
        "previous_year_value": "previous_year_xero_guesty_net_fees_in_gbp",
        "relative_increment": "relative_increment_xero_guesty_net_fees_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 236,
        "metric": "Invoiced E-Deposit Fees",
        "value": "xero_e_deposit_net_fees_in_gbp",
        "previous_year_value": "previous_year_xero_e_deposit_net_fees_in_gbp",
        "relative_increment": "relative_increment_xero_e_deposit_net_fees_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 250,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 251,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 252,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 260,
        "metric": "Deposit Fees",
        "value": "deposit_fees_without_taxes_in_gbp",
        "previous_year_value": "previous_year_deposit_fees_without_taxes_in_gbp",
        "relative_increment": "relative_increment_deposit_fees_without_taxes_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 262,
        "metric": "Waiver Amount Paid by Guests",
        "value": "waiver_payments_without_taxes_in_gbp",
        "previous_year_value": "previous_year_waiver_payments_without_taxes_in_gbp",
        "relative_increment": "relative_increment_waiver_payments_without_taxes_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 263,
        "metric": "Waiver Amount Paid back to Hosts",
        "value": "xero_waiver_paid_back_to_host_in_gbp",
        "previous_year_value": "previous_year_xero_waiver_paid_back_to_host_in_gbp",
        "relative_increment": "relative_increment_xero_waiver_paid_back_to_host_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "negative",
    },
    {
        "order_by": 264,
        "metric": "Waiver Net Fees",
        "value": "waiver_net_fees_in_gbp",
        "previous_year_value": "previous_year_waiver_net_fees_in_gbp",
        "relative_increment": "relative_increment_waiver_net_fees_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 265,
        "metric": "Check-In Hero Amount Paid by Guests",
        "value": "checkin_cover_fees_without_taxes_in_gbp",
        "previous_year_value": "previous_year_checkin_cover_fees_without_taxes_in_gbp",
        "relative_increment": "relative_increment_checkin_cover_fees_without_taxes_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 270,
        "metric": "Host Resolutions Amount Paid",
        "value": "xero_host_resolution_amount_paid_in_gbp",
        "previous_year_value": "previous_year_xero_host_resolution_amount_paid_in_gbp",
        "relative_increment": "relative_increment_xero_host_resolution_amount_paid_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "negative",
    },
    {
        "order_by": 290,
        "metric": "Guest Payments",
        "value": "total_guest_payments_without_taxes_in_gbp",
        "previous_year_value": "previous_year_total_guest_payments_without_taxes_in_gbp",
        "relative_increment": "relative_increment_total_guest_payments_without_taxes_in_gbp",
        "number_format": "currency_gbp",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 291,
        "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",
        "increment_sign_format": "positive",
    },
    {
        "order_by": 292,
        "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",
        "increment_sign_format": "positive",
    },
] %}
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,
        dimension,
        dimension_value,
        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,
        case
            when '{{ metric.increment_sign_format }}' = 'negative'
            then {{ metric.relative_increment }} * -1
            else {{ metric.relative_increment }}
        end as relative_increment_with_sign_format
    from int_mtd_vs_previous_year_metrics
    {% if not loop.last %}
        union all
    {% endif %}
{% endfor %}
