data-dwh-dbt-project/models/intermediate/kpis/int_kpis__metric_daily_host_resolutions.sql

57 lines
2.5 KiB
MySQL
Raw Normal View History

{% set resolutions_host_payment_account_name = "('RESOLUTIONS - HOST PAYMENT')" %}
{% set relevant_transaction_status = "('AUTHORISED')" %}
{{ config(materialized="table", unique_key=["date", "id_deal", "business_scope"]) }}
select
-- Unique Key --
ixbt.transaction_date_utc as date,
coalesce(ixc.id_deal, 'UNSET') as id_deal,
case
when ikdd.client_type = 'API'
then 'API'
-- We will assume that any host resolution payment happening in the same month
-- or after the user has been created in the New Dash is considered as New
-- Dash. This might not be 100% accurate, but it's a reasonable assumption.
when ikdd.client_type = 'PLATFORM'
then
case
when
icnddsd.id_deal is not null
and date_trunc('month', ixbt.transaction_date_utc)::date
>= date_trunc(
'month', icnddsd.min_user_in_new_dash_since_date_utc
)::date
and ixbt.transaction_date_utc
>= date({{ var("new_dash_first_invoicing_date") }})
then 'New Dash'
else 'Old Dash'
end
else 'UNSET'
end as business_scope,
-- Dimensions --
coalesce(
ikdd.main_billing_country_iso_3_per_deal, 'UNSET'
) as main_billing_country_iso_3_per_deal,
coalesce(
icmas.active_accommodations_per_deal_segmentation, 'UNSET'
) as active_accommodations_per_deal_segmentation,
-- Metrics --
sum(ixbtli.line_amount_wo_taxes_in_gbp) as xero_host_resolution_amount_paid_in_gbp,
count(distinct ixbt.id_bank_transaction) as xero_host_resolution_payment_count
from {{ ref("int_xero__bank_transactions") }} as ixbt
inner join
{{ ref("int_xero__bank_transaction_line_items") }} as ixbtli
on ixbt.id_bank_transaction = ixbtli.id_bank_transaction
and upper(ixbtli.account_name) in {{ resolutions_host_payment_account_name }}
and upper(ixbt.transaction_status) in {{ relevant_transaction_status }}
left join {{ ref("int_xero__contacts") }} as ixc on ixc.id_contact = ixbt.id_contact
left join {{ ref("int_kpis__dimension_deals") }} as ikdd on ixc.id_deal = ikdd.id_deal
left join
{{ ref("int_kpis__dimension_daily_accommodation") }} as icmas
on ixc.id_deal = icmas.id_deal
and ixbt.transaction_date_utc = icmas.date
left join
{{ ref("int_core__new_dash_deal_since_date") }} as icnddsd
on ixc.id_deal = icnddsd.id_deal
group by 1, 2, 3, 4, 5