# Description Adapts revenue figures in Main KPIs - MTD scope or global view. This includes MTD, Monthly Overview, Global Evolution over Time, Detail by Category. In essence, everything that is not by deal. The changes are mainly 2: * Remove the line that deducts the `Waiver Amount Paid Back to Hosts` in all metrics except the `Waiver Net Fees`. This effectively means that the previous `Guest Revenue` = `Guest Payments`, thus I dropped all 3 `Guest Payments` metrics. * Do a renaming at metric display level, but not in the code. This means that I remove the computation of `guest_revenue_in_gbp` for instance and keep `guest_payments_in_gbp`, and apply the renaming later on, since the modelisation already accounts for defining metric names differently from those of the fields. For the rest of metrics, I revised all metrics name and did changes based on the [whiteboard](https://whiteboard.office.com/me/whiteboards/p/c3BvOmh0dHBzOi8vZ3VhcmRob2ctbXkuc2hhcmVwb2ludC5jb20vcGVyc29uYWwvcGFibG9fbWFydGluX3N1cGVyaG9nX2NvbQ%3d%3d/b!T2D3opQuBECSDnhuFZrUacFu3TxvSvdIsnI4Dxsh2IuaB1AigbciRqkqte61I4wz/01H5SI4J4L7HTPJGUT7JGYKTOSQYYWACXU). I also changed the dedicated data tests in Main KPIs to ensure it's working. I also changed the exclusion logic in reporting based on the name of the metric to not display metrics that depend on the invoicing cycle unless it's 2 months ago or before. To keep in mind: * Merging this will automatically display the new figures/naming in production. Might be wise to communicate to stakeholders since some key metrics (namely, Guest Revenue / Total Revenue) will change the meaning. * We also need to do these changes in the metrics by deal part of the computation. I'd do first the removal of these fields in the PBI report (and take the opportunity to change the Data Catalogue) and then do the PR in DWH to change the logic. Before that though let's check that the names included in this PR are the correct ones :) # Checklist - [X] The edited models and dependants run properly with production data. - [NA] The edited models are sufficiently documented. - [X] The edited models contain PK tests, and I've ran and passed them. - [NA] I have checked for DRY opportunities with other models and docs. - [NA] I've picked the right materialization for the affected models. # Other - [ ] Check if a full-refresh is required after this PR is merged. Related work items: #22688
449 lines
18 KiB
SQL
449 lines
18 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",
|
|
"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": "converted_metric_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": "converted_metric_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": "converted_metric_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": "converted_metric_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 Revenue",
|
|
"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 Revenue",
|
|
"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 Revenue",
|
|
"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 Athena Revenue",
|
|
"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 Revenue",
|
|
"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_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",
|
|
"increment_sign_format": "positive",
|
|
},
|
|
{
|
|
"order_by": 251,
|
|
"metric": "Guest Revenue 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": "converted_metric_currency_gbp",
|
|
"increment_sign_format": "positive",
|
|
},
|
|
{
|
|
"order_by": 252,
|
|
"metric": "Guest Revenue 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": "converted_metric_currency_gbp",
|
|
"increment_sign_format": "positive",
|
|
},
|
|
{
|
|
"order_by": 260,
|
|
"metric": "Deposit Fees Revenue",
|
|
"value": "deposit_fees_in_gbp",
|
|
"previous_year_value": "previous_year_deposit_fees_in_gbp",
|
|
"relative_increment": "relative_increment_deposit_fees_in_gbp",
|
|
"number_format": "currency_gbp",
|
|
"increment_sign_format": "positive",
|
|
},
|
|
{
|
|
"order_by": 262,
|
|
"metric": "Waiver Revenue",
|
|
"value": "waiver_payments_in_gbp",
|
|
"previous_year_value": "previous_year_waiver_payments_in_gbp",
|
|
"relative_increment": "relative_increment_waiver_payments_in_gbp",
|
|
"number_format": "currency_gbp",
|
|
"increment_sign_format": "positive",
|
|
},
|
|
{
|
|
"order_by": 263,
|
|
"metric": "Damage Host-Waiver Payments",
|
|
"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 Retained",
|
|
"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 Revenue",
|
|
"value": "checkin_cover_fees_in_gbp",
|
|
"previous_year_value": "previous_year_checkin_cover_fees_in_gbp",
|
|
"relative_increment": "relative_increment_checkin_cover_fees_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",
|
|
},
|
|
] %}
|
|
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 %}
|