This PR exposes the following metrics to the Main KPIs business overview report, for both Global + By Deal view: - Total Revenue - Total Revenue per Booking Created - Total Revenue per Guest Journey Created - Total Revenue per Deals Booked in Month (does not apply on the by deal view) - Total Revenue per Listings Booked in Month - Invoiced Operator Revenue - Host Resolution Payment Count - Host Resolution Amount Paid Keep in mind Global view will be displaying these metrics once this is merged. I also changed a bit the order of the metric display. Note that Billable Bookings are not included. I recommend to review by 1) checking the first commit. This is almost the same as the previous abandoned PR that @<Joaquin Ossa> you already checked on Tuesday. I added a second commit, to be checked later, which basically fixes some stupid issues that if one of the source of revenue is null, then total revenue is null. This is specially critical for the view by deal, since most of them do not have revenue from APIs - thus all total revenue figures were null... Related work items: #18108, #18109, #18110, #18719
332 lines
13 KiB
SQL
332 lines
13 KiB
SQL
{% 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": 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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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": "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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"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",
|
|
},
|
|
{
|
|
"order_by": 290,
|
|
"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": 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",
|
|
},
|
|
{
|
|
"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",
|
|
}
|
|
] %}
|
|
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 %}
|