Merged PR 5429: Rework Booking Source in int_core__bookings

# Description

This PR creates a proper Booking Source in `int_core__bookings` table. This mostly refers to ensure that whenever we do data requests tickets on this regards we have a proper logic in place (as last time we had issues because of this). Logic follows Gus recommendation on applying:

```
case
  when upper(coalesce(bsrc.booking_source, 'UNKNOWN')) = 'UNKNOWN'
  then b.raw_booking_source
  else bsrc.booking_source
end
```

where b. is Booking table and bsrc. is Booking Source table.

Things to note:
* A new `stg_core__booking_source` table is created, full-refreshed from the backend (less than 10 records)
* I added a unique test for `stg_core__booking` that was not in there. I don't document the rest of the model though.
* I remove the previous `id_booking_source` as it wasn't used and the logic in place should be far more accurate.
* I do NOT remove the existing `verification_request_booking_source`. I don't remember what's this but I see this is in use specially on Guest Insights (CSAT) and the legacy Truvi reporting (Bookings, PMS, etc.). Not the scope of this ticket to change it.
* I don't do further propagation, but potentially, this could be extended to New Dash Booking Summary as this source is being shown in the dashboard itself.

# 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: #30415
This commit is contained in:
Oriol Roqué Paniagua 2025-06-10 14:38:35 +00:00
parent 47c51dd18d
commit 0021827368
6 changed files with 56 additions and 6 deletions

View file

@ -283,6 +283,8 @@ sources:
identifier: VerificationRequestGuestProductToPayment
- name: UserProductBundleToGuestProduct
identifier: UserProductBundleToGuestProduct
- name: BookingSource
identifier: BookingSource
- name: guest_product
schema: sync_guest_product

View file

@ -114,6 +114,24 @@ models:
- unique
- not_null
- name: stg_core__booking
columns:
- name: id_booking
data_tests:
- unique
- not_null
- name: stg_core__booking_source
columns:
- name: id_booking_source
data_tests:
- unique
- not_null
- name: booking_source
data_tests:
- unique
- not_null
- name: stg_core__accommodation_to_user
columns:
- name: id_accommodation_to_user

View file

@ -21,6 +21,7 @@ with
{{ adapter.quote("IntegrationId") }} as id_integration,
{{ adapter.quote("AccommodationId") }} as id_accommodation,
{{ adapter.quote("BookingSourceId") }} as id_booking_source,
{{ adapter.quote("RawBookingSource") }} as raw_booking_source,
{{ adapter.quote("VerificationRequestId") }} as id_verification_request,
{{ adapter.quote("BookingStateId") }} as id_booking_state,
{{ adapter.quote("CheckIn") }} as check_in_at_utc,

View file

@ -0,0 +1,12 @@
with
raw_booking_source as (select * from {{ source("core", "BookingSource") }}),
stg_core__booking_source as (
select
{{ adapter.quote("Id") }} as id_booking_source,
upper({{ adapter.quote("FullName") }}) as booking_source,
{{ adapter.quote("_airbyte_extracted_at") }} as dwh_extracted_at_utc
from raw_booking_source
)
select *
from stg_core__booking_source