This PR aims to expose the new metrics to the business KPIs report. The new metrics exposed are, for the global and the by deal view: - Guest Revenue - Guest Revenue per Guest Journey Completed - Guest Revenue per Guest Journey with Payment - Guest Payments - Guest Payments per Guest Journey Completed - Guest Payments per Guest Journey with Payment - Guest Journey with Payment - Guest Journey Payment Rate Changes: - Silly change on the naming in the by deal view of `payment_rate_guest_journey` to be consistent with the global view. - Silly change that I miss some GJ payment metric for the view by deal id. - Added a new number format called `currency_gbp` - only for monetary metrics, available in the schema files - Usual procedure to publish metrics: for global metrics, add them in the `int_mtd_aggregated_metrics`. I also changed the order of display. - **Important**: to avoid displaying revenue figures until Xero invoicing is handled, I created a macro called `is_date_before_previous_month` that is called in the reporting equivalent models: `mtd_aggregated_metrics` in the where section and in the `monthly_aggregated_metrics_history_by_deal` as a case-when. This should allow to expose all new metrics, and enable the publishing of a new update of the business kpis! Related work items: #18107
45 lines
1.8 KiB
SQL
45 lines
1.8 KiB
SQL
with
|
|
int_mtd_aggregated_metrics as (
|
|
select * from {{ ref("int_mtd_aggregated_metrics") }}
|
|
)
|
|
|
|
select
|
|
year as year,
|
|
month as month,
|
|
day as day,
|
|
is_end_of_month as is_end_of_month,
|
|
is_current_month as is_current_month,
|
|
date as date,
|
|
previous_year_date as previous_year_date,
|
|
order_by as order_by,
|
|
number_format as number_format,
|
|
metric as metric,
|
|
value as value,
|
|
previous_year_value as previous_year_value,
|
|
relative_increment as relative_increment
|
|
from int_mtd_aggregated_metrics
|
|
/*
|
|
The following where condition is applied to avoid displaying revenue metrics
|
|
in the MTD for the current month and the previous month. The main reason is
|
|
that we have a time delay between when the guest does a payment vs. when we
|
|
invoice or credit hosts (Xero).
|
|
This is specially tricky for the Host-takes-waiver revenue: guests payments
|
|
happen in a timely fashion, and we get all waiver money from the guests. Once
|
|
the month is finished, Finance will start to invoice hosts, and in this case,
|
|
all hosts that have the Host-takes-waiver need to be payed back the amount
|
|
coming from the guest.
|
|
Not having this filter would mean that, in the current month, the figures
|
|
displayed of guest revenue would be much larger than they actually will be
|
|
because we still need to pay back to the hosts these waivers.
|
|
For a more current-month evaluation, Guest Payments should be a good proxy
|
|
metric to follow.
|
|
*/
|
|
where
|
|
(
|
|
-- Not show current + previous month if revenue metric
|
|
-- we need to pass +1 day to date since it's the last day of the month
|
|
lower(metric) like '%revenue%'
|
|
and {{ is_date_before_previous_month("date") }}
|
|
)
|
|
-- Keep all history for the rest of metrics
|
|
or (lower(metric) not like '%revenue%')
|