New aggregated model in intermediate for e-deposit report
This commit is contained in:
parent
958dc97ac2
commit
0b6239e5c2
2 changed files with 106 additions and 0 deletions
49
models/intermediate/core/int_edeposit__agg_fee_per_user.sql
Normal file
49
models/intermediate/core/int_edeposit__agg_fee_per_user.sql
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
{% set ok_status_fee_calculation = "case when verification_status = 'Approved' or verification_status = 'Flagged' then cast(nightly_fee_local as float) * number_nights else 0 end" %}
|
||||
|
||||
{% set rejected_fee_calculation = (
|
||||
"case when verification_status = 'Rejected' then 0.25 else 0 end"
|
||||
) %}
|
||||
with
|
||||
int_edeposit__verifications as (
|
||||
select * from {{ ref("int_edeposit__verifications") }}
|
||||
),
|
||||
edeposit_records as (
|
||||
select
|
||||
id_booking,
|
||||
is_cancelled,
|
||||
channel,
|
||||
cast(checkin_at_utc as date) as checkin_date_utc,
|
||||
cast(checkout_at_utc as date) as checkout_date_utc,
|
||||
creation_at_utc,
|
||||
verification_status,
|
||||
id_user_host,
|
||||
{{ ok_status_fee_calculation }} as ok_status_fee,
|
||||
{{ rejected_fee_calculation }} as rejected_fee,
|
||||
to_char(creation_at_utc, 'YYYY-MM') as year_month_created,
|
||||
to_char(checkout_at_utc, 'YYYY-MM') as year_month_checkout
|
||||
from int_edeposit__verifications
|
||||
where version = 'V2' -- This version V2 indicates records for e-deposit
|
||||
)
|
||||
select
|
||||
year_month_created,
|
||||
year_month_checkout,
|
||||
id_user_host,
|
||||
count(distinct id_booking) as bookings_per_month,
|
||||
sum(cast(is_cancelled as integer)) as cancelled_per_month,
|
||||
sum(cast(is_cancelled as integer))::decimal / count(*) as cancelled_ratio,
|
||||
case
|
||||
when sum(cast(is_cancelled as integer))::decimal / count(*) >= 0.05
|
||||
then sum(cast(is_cancelled as integer)) * 0.25
|
||||
else 0
|
||||
end as sum_cancelled_fee,
|
||||
sum(ok_status_fee) as ok_status_fee_sum,
|
||||
sum(rejected_fee) as rejected_fee_sum,
|
||||
case
|
||||
when sum(cast(is_cancelled as integer))::decimal / count(*) >= 0.05
|
||||
then sum(cast(is_cancelled as integer)) * 0.25
|
||||
else 0
|
||||
end
|
||||
+ sum(ok_status_fee)
|
||||
+ sum(rejected_fee) as total_revenue
|
||||
from edeposit_records
|
||||
group by year_month_created, year_month_checkout, id_user_host
|
||||
|
|
@ -2937,3 +2937,60 @@ models:
|
|||
- name: created_at_utc
|
||||
data_type: timestamp without time zone
|
||||
description: ""
|
||||
|
||||
models:
|
||||
- name: int_edeposit__agg_fee_per_user
|
||||
description:
|
||||
"This table holds detailed data on revenue generated through e-deposit verifications.
|
||||
Each record provides insights into booking activities per user, including the number
|
||||
of bookings, cancellations, and associated fees within specific months. Each record
|
||||
captures data for bookings created in a particular month along with their corresponding
|
||||
checkout month, allowing for a comprehensive view of the booking lifecycle and associated
|
||||
revenues within those periods."
|
||||
tests:
|
||||
- dbt_utils.unique_combination_of_columns:
|
||||
combination_of_columns:
|
||||
- year_month_created
|
||||
- year_month_checkout
|
||||
- id_user
|
||||
columns:
|
||||
- name: year_month_created
|
||||
data_type: text
|
||||
description: "first day of month of created date"
|
||||
|
||||
- name: year_month_checkout
|
||||
data_type: text
|
||||
description: "first day of month of check-out date"
|
||||
|
||||
- name: id_user_host
|
||||
data_type: text
|
||||
description: "unique id value for user host"
|
||||
|
||||
- name: bookings_per_month
|
||||
data_type: bigint
|
||||
description: "total number of bookings"
|
||||
|
||||
- name: cancelled_per_month
|
||||
data_type: bigint
|
||||
description: "number of cancelled bookings"
|
||||
|
||||
- name: cancelled_ratio
|
||||
data_type: numeric
|
||||
description: "ratio of cancelled bookings over total bookings"
|
||||
|
||||
- name: sum_cancelled_fee
|
||||
data_type: numeric
|
||||
description: "sum of fees charged for cancelled bookings"
|
||||
|
||||
- name: ok_status_fee_sum
|
||||
data_type: double precision
|
||||
description: |
|
||||
"sum of fees charged for bookings with status 'Approved' or 'Flagged'"
|
||||
|
||||
- name: rejected_fee_sum
|
||||
data_type: numeric
|
||||
description: "sum of fees charged for rejected bookings"
|
||||
|
||||
- name: total_revenue
|
||||
data_type: double precision
|
||||
description: "total sum of fees charged"
|
||||
Loading…
Add table
Add a link
Reference in a new issue