data-dwh-dbt-project/models/intermediate/athena/int_athena__verifications_with_fees.sql
Pablo Martín 3f3b99cdf6 Merged PR 4102: Athena price update
# Description

This PR handles the new price set for Athena in Nov.24, as indicated by Nila from Finance (see more detailes in linked story). Price has gone from 2.0GBP to 2.1GBP.

Note that I have manually checked the correctness of the figures, I'm highly confident on the quality of the PR. All figures stay the same in old and new version of to the cutoff date (`2024-11-01T00:00:00Z`). Then, after that date, the 10 cents extra show appropiately.

# Checklist

- [X] The edited models and dependants run properly with production data.
- [X] The edited models are sufficiently documented.
- [X] The edited models contain PK tests, and I've ran and passed them.
- [X] I have checked for DRY opportunities with other models and docs.
- [X] 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: #26475
2025-01-17 16:34:29 +00:00

38 lines
1.3 KiB
SQL

{% set ok_status = "Approved" %}
with
int_athena__verifications as (select * from {{ ref("int_athena__verifications") }}),
stg_seed__athena_price_history as (
select * from {{ ref("stg_seed__athena_price_history") }}
),
-- CTE to rank verifications by updated_at_utc per id_booking
ranked_verifications as (
select
v.*,
row_number() over (
partition by v.id_booking order by v.updated_at_utc asc
) as rn
from int_athena__verifications v
where v.version = 'V1' and v.id_booking is not null
)
select
v.id_verification,
v.id_booking,
v.verification_status,
v.is_cancelled,
-- Charge for 1 night if number_nights = 0
case
when v.number_nights = 0 and v.verification_status = '{{ ok_status }}'
then ph.fee_per_night_gbp
when v.verification_status = '{{ ok_status }}'
then v.number_nights * ph.fee_per_night_gbp
else 0
end as ok_status_fee_in_gbp,
v.created_date_utc,
v.checkout_date_utc
from ranked_verifications v
left join
stg_seed__athena_price_history ph
on v.checkout_date_utc between ph.start_at_utc and ph.end_at_utc
where
-- Select only the most recent verification for each id_booking
v.rn = 1