2024-04-08 09:44:32 +02:00
version : 2
models :
- name : int_core__duplicate_bookings
description : |
A list of bookings which are considered duplicates of other bookings.
We currently consider two bookings to be duplicate if they have the same :
- Guest user id
- Accomodation id
- Check-in date
Bear in mind these bookings do have different booking ids.
Out of a duplicated tuple of 2 or more bookings :
- Our logic will consider the oldest one to be the "original", not duplicate one.
- This table will contain only the duplicates, and not the original.
columns :
- name : id_booking
data_type : bigint
description : The unique, Superhog generated id for this booking.
2024-07-31 12:48:57 +02:00
tests :
- unique
- not_null
2024-04-08 09:44:32 +02:00
- name : is_duplicate_booking
data_type : boolean
description : |
True if the booking is duplicate.
If you are thinking that this is redundant, you are right. All
records in this table will be true. But we keep this field to
make your life easier when joining with other tables.
- name : is_duplicating_booking_with_id
data_type : bigint
description : |
Indicates what's the original booking being duplicated.
If there is a tuple of duplicate bookings {A, B, C}, where A is the
original and the others are the duplicates :
- B and C will appear in this table, A will not.
- The value of this field for both B and C will be A's id.
2024-07-31 12:48:57 +02:00
tests :
- not_null
2024-09-12 15:38:50 +02:00
2024-04-08 09:44:32 +02:00
- name : int_core__booking_charge_events
description : |
2024-09-12 15:38:50 +02:00
2024-04-08 09:44:32 +02:00
Booking charge events is a fancy word for saying : a booking happened,
the related host had a booking fee set up at the right time, hence we
need to charge him.
The table contains one record per booking and shows the associated
booking fee, as well as the point in time in which the charge event was
considered.
Be wary of the booking fees : they don't have an associated currency.
Crazy, I know, but we currently don't store that information in the
backend.
As for the charge dates : the exact point in time at which we consider
that we should be charging a fee depends on billing details of the host
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
customer. For some bookings, this will be the check-in. For others, it's
when the guest 'begins the verification process'. Here, depending on whether
the booking has or not a verification request linked to it, we will consider
either by when the guest joined or when the verification request was last
updated. Be aware that this 'begins the verification process' logic is different
from other DWH models; the current one explained here aiming to replicate what
is currently being done for invoicing.
Note : even though we aim to replicate what is happening for the invoicing process,
you need to be aware that the monthly volumes do not match exactly with what we
have in the invoicing exporter.
An additional column called is_booking_created_after_charging_date exemplifies the
fact that some bookings will get created after the verification process should have
happened - thus these are likely billable bookings that have not been billed.
2024-04-08 09:44:32 +02:00
Not all bookings appear here since we don't charge a fee for all
bookings.
columns :
- name : id_booking
data_type : bigint
description : The unique, Superhog generated id for this booking.
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
tests :
- not_null
- unique
2024-04-08 09:44:32 +02:00
- name : id_price_plan
data_type : bigint
description : The id of the price plan that relates to this booking.
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
tests :
- not_null
2024-04-08 09:44:32 +02:00
- name : booking_fee_local
data_type : numeric
description : The fee to apply to the booking, in host currency.
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
- name : account_currency_iso4217
data_type : character varying
description : Currency used by host/pm/platform users.
- name : booking_fee_in_gbp
data_type : numeric
description : The fee to apply to the booking, in GBP.
2024-04-08 09:44:32 +02:00
- name : booking_fee_charge_at_utc
data_type : timestamp without time zone
description : |
The point in time in which the booking should be invoiced.
This could be the check-in date of the booking or the date in which the guest verification
started, depending on the billing settings of the host.
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
tests :
- not_null
2024-04-08 09:44:32 +02:00
- name : booking_fee_charge_date_utc
data_type : date
description : |
The date in which the booking should be invoiced.
This could be the check-in date of the booking or the date in which the guest verification
started, depending on the billing settings of the host.
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
tests :
- not_null
2024-09-12 15:38:50 +02:00
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
- name : is_booking_created_after_charging_date
data_type : boolean
description : |
Flag to identify if the booking was created after the
expected charge date. It can identify cases that might not
be covered within the current invoicing process.
2024-05-07 17:52:35 +02:00
- name : int_core__check_in_cover_prices
description : |
2024-09-12 15:38:50 +02:00
2024-05-07 17:52:35 +02:00
This table shows the active price and cover for the Check-In Hero
product.
The prices are obtained through a gross `GROUP BY` thrown at the payment
validation sets table. It works this way because the price settings of
this product were done with a terrible backend data model design.
How could the prices be changed remains a mystery, and the current design
does not support any kind of history tracking. When the time comes to
adjust prices, we will have a lot of careful work to do to make sure that
we keep history and that no downstream dependencies of this model blow
up.
columns :
- name : local_currency_iso_4217
data_type : character varying
description : A currency code.
2024-11-20 10:09:03 +01:00
tests :
- not_null
- unique
2024-05-07 17:52:35 +02:00
- name : checkin_cover_guest_fee_local_curr
data_type : numeric
2024-09-12 15:38:50 +02:00
description : |
2024-05-07 17:52:35 +02:00
The fee that the guest user must pay if he wants to purchase the
2024-09-17 07:25:09 +00:00
cover. This fee is tax inclusive if happen in a country in which
taxes are to be applied
2024-05-07 17:52:35 +02:00
- name : checkin_cover_cover_amount_local_curr
data_type : numeric
description : |
The amount for which the guest user is covered if he faces problems
during check-in.
2024-06-10 16:23:45 +02:00
- name : int_core__unified_user
columns :
- name : id_user
data_type : character varying
description : The unique ID for the user.
tests :
- not_null
- unique
2024-09-12 15:38:50 +02:00
2024-06-10 15:30:26 +00:00
- name : int_core__vr_check_in_cover
2024-09-12 15:38:50 +02:00
description : "This tables holds information on verification requests
2024-08-20 09:27:49 +02:00
with Ckeck-in Hero available for the guests."
2024-06-10 15:30:26 +00:00
columns :
- name : id_verification_request
2024-08-20 09:27:49 +02:00
data_type : bigint
2024-09-12 15:38:50 +02:00
description :
"Unique, incremental, internal ID for the related verification
2024-08-20 09:27:49 +02:00
request."
2024-06-10 15:30:26 +00:00
tests :
- unique
2024-08-20 09:27:49 +02:00
- not_null
- name : uuid_verification_request
data_type : text
description : "uuid for the related verification request"
- name : id_verification_set
data_type : bigint
description : ""
- name : id_superhog_verified_set
data_type : bigint
description : ""
- name : id_payment_validation_set
data_type : bigint
description : ""
- name : id_user_guest
data_type : character varying
description : Unique, incremental, internal ID for the guest user.
- name : id_user_host
data_type : character varying
description : Unique, incremental, internal ID for the host user.
- name : id_booking
data_type : bigint
description : ""
- name : id_accommodation
data_type : bigint
description : "Id of the accommodation or listing."
- name : is_verification_request_complete
data_type : boolean
2024-09-12 15:38:50 +02:00
description : "True if the verification request is considered
2024-08-20 09:27:49 +02:00
complete, AKA the guest has finished the full guest journey."
- name : is_past_check_in
data_type : boolean
description : ""
- name : is_awaiting_check_in
data_type : boolean
description : ""
- name : cover_was_purchased
data_type : boolean
2024-09-12 15:38:50 +02:00
description : "Boolean to indicate if the cover was purchased by the guest or not."
2024-08-20 09:27:49 +02:00
- name : cover_was_rejected
data_type : boolean
description : ""
- name : verification_url
data_type : character varying
description : ""
- name : callback_url
data_type : character varying
description : ""
- name : redirect_url
data_type : character varying
description : ""
- name : logo
data_type : character varying
description : ""
- name : guest_email
data_type : character varying
description : "The email of the guest"
- name : last_name
data_type : character varying
description : The last name of the guest.
- name : first_name
data_type : character varying
description : The first name of the guest.
- name : guest_phone_number
data_type : character varying
description : The phone number of the guest.
- name : telephone_code
data_type : character varying
description : The telephone code of the guest.
- name : guest_phone_number_2
data_type : character varying
description : ""
- name : check_in_at_utc
data_type : timestamp without time zone
description : ""
- name : check_in_date_utc
data_type : date
description : ""
- name : check_out_at_utc
data_type : timestamp without time zone
description : ""
- name : check_out_date_utc
data_type : date
description : ""
- name : verification_start_at_utc
data_type : timestamp without time zone
description : ""
- name : verification_start_date_utc
data_type : date
description : ""
- name : verification_end_at_utc
data_type : timestamp without time zone
description : ""
- name : verification_end_date_utc
data_type : date
description : ""
- name : link_used_at_utc
data_type : timestamp without time zone
description : ""
- name : link_used_date_utc
data_type : date
description : ""
- name : expire_at_utc
data_type : timestamp without time zone
description : ""
- name : expire_date_utc
data_type : date
description : ""
- name : is_deleted
data_type : boolean
description : ""
- name : redirect_name
data_type : character varying
description : ""
- name : id_one_step_link
data_type : bigint
description : ""
- name : success_message
data_type : character varying
description : ""
- name : summary
data_type : character varying
description : ""
- name : rejection_reason
data_type : character varying
description : ""
- name : has_switched_to_mobile
data_type : boolean
description : ""
- name : is_verifier_rejected
data_type : boolean
description : ""
- name : config
data_type : character varying
description : ""
- name : metadata
data_type : character varying
description : ""
- name : created_at_utc
data_type : timestamp without time zone
description : "Date and time at which the validation was created."
- name : created_date_utc
data_type : date
description : ""
- name : updated_at_utc
data_type : timestamp without time zone
description : "Date and time at which the validation was last updated."
- name : updated_date_utc
data_type : date
description : ""
- name : dwh_extracted_at_utc
data_type : timestamp with time zone
description : "Date and time at which the record was extracted from the backend into the DWH."
- name : amount_in_txn_currency
data_type : numeric
2024-09-12 15:38:50 +02:00
description :
"The payment amount in the currency in which the transaction actually happened.
2024-08-20 09:27:49 +02:00
If the guest paid in Australian Dollars, this is measured in AUD."
- name : currency
data_type : text
2024-09-12 15:38:50 +02:00
description : "The currency in which the transaction actually happened."
2024-08-20 09:27:49 +02:00
- name : amount_in_gbp
data_type : numeric
2024-09-12 15:38:50 +02:00
description :
2024-08-20 09:27:49 +02:00
"The payment amount value, converted to GBP, using the exchange rate for
the day on which the payment happened."
- name : payment_status
data_type : character varying
2024-09-12 15:38:50 +02:00
description : "The status of the payment. It can be one of: Paid, Refunded, Refund Failed."
2024-08-20 09:27:49 +02:00
- name : payment_paid_date_utc
data_type : date
description : ""
- name : checkin_cover_limit_amount_local_curr
data_type : numeric
2024-09-12 15:38:50 +02:00
description :
2024-08-20 09:27:49 +02:00
"The amount for which the guest user is covered if he faces problems
during check-in in their local currency."
- name : checkin_cover_limit_amount_in_gbp
data_type : numeric
2024-09-12 15:38:50 +02:00
description :
2024-08-20 09:27:49 +02:00
"The amount for which the guest user is covered if he faces problems
during check-in in GBP."
2024-06-10 15:30:26 +00:00
2024-06-13 08:14:11 +00:00
- name : int_core__verification_request_completeness
description : |
The `int_core__verification_request_completeness` model allows to determine if a verification request is
completed or not. To achieve it, it encapsulates the logic to determine the different possibilites. Its main
output is the column is_verification_request_complete, but it also provides outputs of the intermediate logic
steps to be used for further modeling, such as determining the completion date.
2024-09-12 15:38:50 +02:00
2024-06-13 08:14:11 +00:00
columns :
- name : id_verification_request
data_type : bigint
description : id of the verification request. It's the unique key for this model.
tests :
- not_null
- unique
- name : expected_verification_count
data_type : int
description : count of verifications that are expected to be passed in order to complete the request.
- name : confirmed_from_same_verification_request_count
data_type : int
description : count of confirmed verifications that its logic is computed from the same verification request.
- name : confirmed_from_previous_verification_requests_count
data_type : int
description : count of confirmed verifications that its logic is computed from previous verification requests.
- name : confirmed_verification_count
data_type : int
2024-09-12 15:38:50 +02:00
description : |
2024-06-13 08:14:11 +00:00
total count of confirmed verifications. Mainly, it's the sum of the confirmed verifications
that come from the same verification request plus the ones that come from previous verifications requests.
- name : is_verification_request_complete
data_type : boolean
description : if the verification request can be considered as completed or not.
- name : used_verification_from_same_verification_request
data_type : boolean
2024-09-12 15:38:50 +02:00
description : |
2024-06-13 08:14:11 +00:00
if the verification request can be considered as completed and has at least one confirmed verification
from the same verification request.
- name : used_verification_from_previous_verification_requests
data_type : boolean
2024-09-12 15:38:50 +02:00
description : |
2024-06-13 08:14:11 +00:00
if the verification request can be considered as completed and has at least one confirmed verification
from a previous verification request.
- name : is_complete_only_from_previous_verification_requests
data_type : boolean
2024-09-12 15:38:50 +02:00
description : |
2024-06-13 08:14:11 +00:00
if the verification request can be considered as completed and all confirmed verifications are from
previous verification requests.
2024-06-13 13:30:22 +00:00
- name : int_core__verification_request_completed_date
description : |
The `int_core__verification_request_completed_date` model allows to retrieve the time in which the guest
journey, or verification request, was completed. It only considers that a guest journey is completed based
on the positive outcome of the is_verification_complete boolean coming from verification_request_completeness
model.
The completion time is computed as follows :
- Only considering verification requests that have been tagged as completed. From here, we have :
- If the verification request has, at least, one verification linked; the date will be the creation date
of the last verification created linked to that verification request.
To keep in mind : for some cases, the last verification can have updates after the creation, but these
generally happen with very low time differences with respect to the creation date. However, there are
some outliers - mostly linked to admin override - that we're not considering here, since these might
not necessarily be linked to the Guest completing the Guest Journey.
- If the verification request does not have any verification linked; we assume an automatic completion.
In this case, we use the time from which the verification request was created.
For some cases, it is possible that this logic still generates some completed times that are actually
before a user usage of the link. For these cases, we do an override and we apply the used_link_at_utc
as the completed time. To account for this cases, check the boolean column
is_completed_at_overriden_with_used_link_at.
In summary, the guest journey completion time provided here is an estimation.
Finally, this model only contains those request that have been completed, so keep it in mind when joining this
table.
2024-09-12 15:38:50 +02:00
2024-06-13 13:30:22 +00:00
columns :
- name : id_verification_request
data_type : bigint
description : id of the completed verification request. It's the unique key for this model.
tests :
- not_null
- unique
- name : estimated_completed_at_utc
data_type : timestamp
description : estimated timestamp of when the verification request was completed.
- name : estimated_completed_date_utc
2024-09-12 15:38:50 +02:00
data_type : date
2024-06-13 13:30:22 +00:00
description : estimated date from the timestamp of when the verification request was completed.
- name : is_completed_at_overriden_with_used_link_at
2024-06-18 13:10:47 +02:00
data_type : boolean
description : >
boolean indicating if the estimated dates have been overriden with the
2024-06-18 13:40:36 +02:00
used link since the initial computation was still considering an end
date before a starting date.
2024-06-18 13:10:47 +02:00
- name : int_core__verification_payments
2024-09-18 11:26:23 +02:00
latest_version : 2
2024-06-18 13:40:36 +02:00
description : >-
A simplified table that holds guest journey payments with details around
when they happen, what service was being paid, what was the related
verification request, etc.
Currency rates are converted to GBP with our simple exchange rates view.
2024-09-06 17:22:52 +02:00
Guest taxes get calculated here. You can find out more about Guest Tax
calculation here : https://www.notion.so/knowyourguest-superhog/Guest-Services-Taxes-How-to-calculate-a5ab4c049d61427fafab669dbbffb3a2?pvs=4
2024-06-18 13:10:47 +02:00
columns :
- name : id_verification_to_payment
data_type : bigint
2024-06-18 13:41:32 +02:00
description : Unique ID for the relation between the payment verification
2024-09-12 15:38:50 +02:00
and the payment at hand.
2024-06-18 13:10:47 +02:00
tests :
- unique
- not_null
- name : id_payment
data_type : bigint
description : Unique ID for the payment itself.
tests :
- unique
- not_null
- name : is_refundable
data_type : boolean
- name : created_at_utc
data_type : timestamp without time zone
- name : updated_at_utc
data_type : timestamp without time zone
- name : payment_due_at_utc
data_type : timestamp without time zone
tests :
- not_null
- name : payment_due_date_utc
data_type : date
tests :
- not_null
- name : payment_paid_at_utc
data_type : timestamp without time zone
- name : payment_paid_date_utc
data_type : date
- name : payment_reference
data_type : character varying
- name : refund_due_at_utc
data_type : timestamp without time zone
- name : refund_due_date_utc
data_type : date
- name : payment_refunded_at_utc
data_type : timestamp without time zone
- name : payment_refunded_date_utc
data_type : date
- name : refund_payment_reference
data_type : character varying
Merged PR 2689: KPIs by Billing Country
# Description
Adds Billing Country dimension in KPIs, but does not expose them to reporting yet.
Silly thing, based on the macros I built, I cannot make incremental changes unless changing all models. This will need to be adapted, happy to hear your thoughts on how we do it.
Additionally, I have lack of performance of the model `mtd_guest_payments_metrics`. It takes around 5 min to execute, but technically the end-to-end runs in one shoot without breaking.
It's a complex PR because it changes many files, but you will see that:
* It mostly changes the join conditions for the dimensions or the schema tests,
* I tried to be very careful and add things step-by-step in the commits.
Goal is NOT to complete the PR yet until we see how we can improve performance. I can say though that data end-to-end looks ok to me, but would benefit from checking with production data for the new dimension
Update 30th Aug
* Added a new commit that includes `id_user_host` in `int_core__verification_payments`. Happy to discuss if it makes sense or not. But it changes the execution from ~600 sec to ~6 sec because it avoids a massive repeated join with `verification_requests`.
# 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.
- [ ] I've picked the right materialization for the affected models. **To check because of performance issues**
# Other
- [ ] Check if a full-refresh is required after this PR is merged.
Related work items: #19082
2024-09-04 10:17:12 +00:00
- name : id_user_host
data_type : character varying
description : |
UUID of the Host linked to the Verification Request
that has a payment. It's included here to speed up
KPIs execution, even though the host itself has nothing
to do with the guest payments.
2024-06-18 13:10:47 +02:00
- name : id_guest_user
data_type : character varying
- name : id_verification
data_type : bigint
- name : id_verification_request
data_type : bigint
- name : verification_payment_type
data_type : character varying
- name : currency
data_type : character varying
tests :
- not_null
2024-09-06 17:22:52 +02:00
- name : amount_in_txn_currency
data_type : numeric
tests :
- not_null
2024-06-18 13:10:47 +02:00
- name : amount_in_gbp
data_type : numeric
tests :
- not_null
- name : payment_status
data_type : character varying
- name : notes
data_type : character varying
2024-09-06 17:22:52 +02:00
versions :
- v : 2
columns :
- name : total_amount_in_txn_currency
data_type : numeric
description : |
The total amount due created by the interaction, in the currency
of the transaction.
Should we refund the payment, this is also the amount we will give
back to the guest.
tests :
- not_null
- name : total_amount_in_gbp
data_type : numeric
description : |
The total amount due created by the interaction, in GBP.
2024-09-13 13:09:01 +02:00
Should we refund the payment, this is the GBP equivalent of the
amount we will give back to the guest, but we won't be paying in
GBP unless the original payment was in GBP.
2024-09-06 17:22:52 +02:00
tests :
- not_null
- name : tax_amount_in_txn_currency
data_type : numeric
description : |
The tax amount applicable to this transaction, in the currency of
the transaction.
If the transaction accrues no taxes, will be 0.
tests :
- not_null
- name : tax_amount_in_gbp
data_type : numeric
description : |
The tax amount applicable to this transaction, in GBP.
If the transaction accrues no taxes, will be 0.
tests :
- not_null
- name : amount_without_taxes_in_txn_currency
data_type : numeric
description : |
The total amount minus taxes, in the currency of the transaction.
This is what should be considered net-of-taxes revenue for
Superhog.
If the transaction accrues no taxes, will be equal to the field
total_amount_in_txn_currency.
tests :
- not_null
- name : amount_without_taxes_in_gbp
data_type : numeric
description : |
The total amount minus taxes, in GBP.
This is what should be considered net-of-taxes revenue for
Superhog.
If the transaction accrues no taxes, will be equal to the field
total_amount_in_txn_currency.
tests :
- not_null
2024-09-10 17:10:37 +02:00
- name : vat_rate
data_type : numeric
description : |
The applicable VAT rate to this payment. This is inferred from (1)
which service is the payment related to and (2) what's the billing
country of the guest.
tests :
- not_null
2024-09-13 15:14:32 +02:00
- dbt_expectations.expect_column_values_to_be_between :
min_value : 0
max_value : 0.99 # If we ever have a 100% tax rate... Let's riot working please
strictly : false
2024-09-10 17:10:37 +02:00
- name : is_service_subject_to_vat
data_type : boolean
description : |
Whether the related payment is subject to VAT. For instance,
deposit payments are not.
tests :
- not_null
2024-09-12 14:37:45 +02:00
- name : is_vat_taxed
2024-09-10 17:10:37 +02:00
data_type : boolean
description : |
2024-09-13 13:09:01 +02:00
Syntactic sugar to indicate if there's any VAT on this payment.
2024-09-10 17:10:37 +02:00
Will be true if so, false if not for any reason (guest country has
no VAT, the payment is for a deposit, etc.)
tests :
2024-09-12 14:37:45 +02:00
- not_null
- name : is_missing_user_country
data_type : boolean
description : |
True if, for some reason, the user doesn't have an informed
country.
The only known, justified reason for this is that the user was
deleted, along with the billing details.
If this turns true in any other case, you should really find out
why the guest doesn't have a billing country.
2024-09-27 16:11:34 +02:00
tests :
- not_null
- accepted_values :
values :
- false
where : (are_user_details_deleted != true and are_user_details_deleted is not null)
2024-09-12 14:37:45 +02:00
- name : is_missing_vat_rate_for_country
data_type : boolean
description : |
True if the user country is informed, but no VAT rates were found
for it.
This has to be a joining issue, since our database for VAT rates
covers all the countries in the world. We simply assign a 0% rate
to countries where we don't collect taxes.
If this turns true in any other case, you should really find out
what's happening.
2024-10-02 09:09:18 +00:00
tests :
- not_null
- accepted_values :
values :
- false
where : (are_user_details_deleted != true and are_user_details_deleted is not null)
2024-09-12 14:37:45 +02:00
- name : are_user_details_deleted
data_type : boolean
description : |
True if the user has been deleted, which is a possible explanation
for why there might be no country informed.
2024-09-13 13:09:01 +02:00
2024-09-12 14:37:45 +02:00
- name : is_missing_vat_details_without_known_cause
data_type : boolean
description : |
True if the VAT rate is missing as a fallback for any
other reason beyond the other one specified in the table.
If this turns true, you have an unhandled problem and you should
fix it.
tests :
2024-09-13 13:09:01 +02:00
- not_null
2024-09-12 14:37:45 +02:00
- accepted_values :
values :
- false
2024-09-06 17:22:52 +02:00
- include : all
exclude : [ amount_in_txn_currency, amount_in_gbp]
2024-06-19 15:34:15 +00:00
- name : int_core__country
description : |
This model contains information regarding countries, such as codes,
names and preferred currencies
2024-09-12 15:38:50 +02:00
2024-06-19 15:34:15 +00:00
columns :
- name : id_country
data_type : bigint
description : id of the country. It's the unique key for this model.
tests :
- not_null
- unique
- name : iso_2
data_type : char(2)
description : ISO 3166-1 alpha-2 country code. Cannot be null.
tests :
- not_null
- name : iso_3
data_type : char(3)
2024-09-12 15:38:50 +02:00
description : |
2024-06-19 15:34:15 +00:00
ISO 3166-1 alpha-3 country code. Some countries can have this value as not set,
therefore it's nullable.
2024-09-12 15:38:50 +02:00
2024-06-19 15:34:15 +00:00
- name : country_name
data_type : character varying
description : name of the country. Cannot be null.
tests :
- not_null
- name : iso_num_code
data_type : int
description : |
ISO 3166-1 numeric code. Usually it's 3 digits, but since it's categorised as
an integer, the preceding zeros are removed. Nullable.
- name : phone_code
data_type : int
2024-09-12 15:38:50 +02:00
description : |
2024-06-19 15:34:15 +00:00
Phone code prefix for a given country. Can contain default / duplicated values.
- name : id_preferred_currency
data_type : int
description : |
Id of the preferred currency for a given country. Might not be the only currency
used in the country, it's just the preferred one.
tests :
- not_null
- name : preferred_currency_name
data_type : character varying
description : |
Currency name of the preferred currency for a given country.
tests :
- not_null
- name : preferred_iso4217_code
data_type : char(3)
description : |
Three-letter code assigned to the preferred currency for a given country by the ISO.
These codes are part of the ISO 4217 standard.
tests :
- not_null
2024-09-12 15:38:50 +02:00
2024-06-20 16:02:16 +00:00
- name : int_core__accommodation
description : |
This model contains information regarding accommodations, also known as listings.
It contains information regarding the host this accommodation is linked to,
the geographic details, the preferred currency according to the country, details about
the listing itself (floors, bedrooms, etc) and time-related information of when the
2024-06-21 14:13:42 +00:00
listing was created.
2024-06-20 16:02:16 +00:00
columns :
- name : id_accommodation
data_type : bigint
description : Id of the accommodation or listing. It's the unique key for this model.
tests :
- not_null
- unique
- name : id_user_host
data_type : character varying
description : The unique ID for the host. Can be null.
- name : id_payment_validation_set
data_type : bigint
description : Id of the payment validation set linked to a listing. Can be null.
- name : friendly_name
data_type : character varying
- name : country_iso_2
data_type : char(2)
2024-09-12 15:38:50 +02:00
description : ISO 3166-1 alpha-2 country code where the listing is located.
2024-06-20 16:02:16 +00:00
- name : country_name
data_type : character varying
description : Name of the country where the listing is located.
- name : country_preferred_currency_code
data_type : char(3)
description : |
Three-letter code assigned to the preferred currency for a given country by the ISO.
These codes are part of the ISO 4217 standard. Keep in mind this are preferred, not
necessarily the actual currency.
- name : is_active
data_type : boolean
description : |
Boolean to indicate if the listing is active or not. If false, this is considered as a
hard deactivation - meaning no more bookings can be assigned to this listing. However,
even if a listing is active, that does not necessarily mean that it's receiving bookings.
2024-11-08 12:05:40 +00:00
Do not confuse this column with the lifecycle activity of a listing.
2024-06-20 16:02:16 +00:00
- name : town
data_type : character varying
- name : postcode
data_type : character varying
- name : address_line_1
data_type : character varying
- name : address_line_2
data_type : character varying
- name : verification_level
data_type : integer
- name : floor_area
data_type : integer
- name : number_of_floors
data_type : integer
- name : number_of_bedrooms
data_type : integer
- name : number_of_bathrooms
data_type : integer
- name : number_of_other_rooms
data_type : integer
- name : construction_details
data_type : character varying
- name : created_at_utc
data_type : timestamp
description : Timestamp of when the listing was created. Cannot be null.
tests :
- not_null
- name : created_date_utc
data_type : date
description : Date of when the listing was created
- name : updated_at_utc
data_type : timestamp
description : Timestamp of when the listing was last updated according to the backend.
- name : updated_date_utc
data_type : date
description : Date of when the listing was last updated according to the backend.
- name : dwh_extracted_at_utc
data_type : timestamp
description : Timestamp of when the accommodation record was extracted from the backend into the DWH.
2024-06-18 13:10:47 +02:00
2024-06-27 10:18:29 +02:00
- name : int_core__check_in_cover_users
2024-09-12 15:38:50 +02:00
description :
2024-06-27 10:40:44 +02:00
This model contains information about hosts that offer check in cover.
It has basic information on the users like name, phone, email or joined date.
2024-06-27 12:13:27 +02:00
This model is restricted to active user so it doesn't include historical data
like users that had check-in cover but are currently inactive.
2024-06-27 08:40:25 +02:00
columns :
2024-07-04 16:41:41 +02:00
- name : id_user_host
2024-06-27 08:40:25 +02:00
data_type : character varying
2024-06-27 10:40:44 +02:00
description : Unique id value for the user
tests :
- not_null
- unique
2024-06-27 08:40:25 +02:00
2024-07-01 10:48:00 +02:00
- name : id_deal
data_type : character varying
description : ""
2024-06-27 10:18:29 +02:00
- name : last_name
2024-06-27 08:40:25 +02:00
data_type : character varying
2024-06-27 10:40:44 +02:00
description : Last name of the user
2024-06-27 08:40:25 +02:00
2024-06-27 10:18:29 +02:00
- name : user_name
2024-06-27 08:40:25 +02:00
data_type : character varying
2024-06-27 10:40:44 +02:00
description : User name of the user
2024-06-27 08:40:25 +02:00
2024-06-27 10:18:29 +02:00
- name : first_name
2024-06-27 08:40:25 +02:00
data_type : character varying
2024-06-27 10:40:44 +02:00
description : First name of the user
2024-06-27 08:40:25 +02:00
2024-07-04 16:41:41 +02:00
- name : host_email
2024-06-27 08:40:25 +02:00
data_type : character varying
2024-06-27 10:40:44 +02:00
description : Email of the user
2024-06-27 10:18:29 +02:00
- name : phone_number
data_type : character varying
2024-06-27 10:40:44 +02:00
description : Phone number of the user
2024-06-27 08:40:25 +02:00
- name : joined_at_utc
data_type : timestamp without time zone
2024-06-27 10:40:44 +02:00
description : Date and time the user joined
2024-06-27 08:40:25 +02:00
- name : joined_date_utc
data_type : date
2024-06-27 10:40:44 +02:00
description : Date the user joined
2024-06-27 08:40:25 +02:00
2024-07-04 08:24:23 +02:00
- name : check_in_cover_added_date_utc
2024-07-03 15:05:12 +02:00
data_type : date
2024-09-12 15:38:50 +02:00
description : Date the user first included check-in cover
2024-07-03 15:05:12 +02:00
2024-06-27 10:18:29 +02:00
- name : billing_town
2024-06-27 08:40:25 +02:00
data_type : character varying
description : ""
2024-06-27 10:18:29 +02:00
- name : company_name
2024-06-27 08:40:25 +02:00
data_type : character varying
2024-07-03 12:29:01 +02:00
description : ""
- name : int_core__guest_satisfaction_responses
2024-09-12 15:38:50 +02:00
description :
2024-07-03 12:29:01 +02:00
This model contains information on guests satisfaction survey responses,
it contains some basic information on the guests, a rating of their experience
and some comments on it.
It also includes information on the services provided by Superhog that they payed for.
columns :
- name : id_verification_request
data_type : bigint
description : Unique id value for the verification request
tests :
- not_null
- unique
2024-07-03 15:18:05 +02:00
- name : id_user_guest
2024-07-03 12:29:01 +02:00
data_type : character varying
description : Unique id value for the guest
2024-07-03 15:18:05 +02:00
- name : guest_email
2024-07-03 12:29:01 +02:00
data_type : character varying
description : Guest email
2024-07-12 12:38:52 +02:00
- name : verification_request_booking_source
data_type : text
2024-09-12 15:38:50 +02:00
description : Source type of host of the booking, this could be either;
2024-07-12 12:38:52 +02:00
- PMS
- OSL
- API/MANUAL
tests :
- not_null
- accepted_values :
2024-09-12 15:38:50 +02:00
values :
- "PMS"
- "OSL"
- "API/MANUAL"
2024-07-12 12:38:52 +02:00
2024-07-03 12:29:01 +02:00
- name : experience_rating
data_type : bigint
2024-09-12 15:38:50 +02:00
description : Guest rating of their experience with Superhog from 1 to 5
2024-07-03 12:29:01 +02:00
- name : guest_comments
data_type : character varying
2024-09-12 15:38:50 +02:00
description : Guest comments on their experience with Superhog
2024-07-03 12:29:01 +02:00
- name : is_contactable
data_type : boolean
description : |
True if the guest allows to be contacted for more feedback
- name : created_at_utc
data_type : timestamp without time zone
2024-09-12 15:38:50 +02:00
description : Date and time of response creation
2024-07-03 12:29:01 +02:00
- name : updated_at_utc
data_type : timestamp without time zone
2024-09-12 15:38:50 +02:00
description : Date and time of last update of response
2024-07-03 12:29:01 +02:00
2024-07-03 15:18:05 +02:00
- name : selected_payment_option
2024-07-03 12:29:01 +02:00
data_type : character varying
description : ""
2024-07-03 15:18:05 +02:00
- name : date_of_birth
2024-07-03 12:29:01 +02:00
data_type : numeric
description : ""
2024-07-03 15:18:05 +02:00
- name : age_of_guest
data_type : numeric
description : ""
2024-07-03 16:23:52 +02:00
- name : has_check_in_cover_payment
2024-07-03 12:29:01 +02:00
data_type : boolean
2024-07-03 16:23:52 +02:00
description : |
True if guest payed for check-in cover
2024-07-03 12:29:01 +02:00
2024-07-03 16:23:52 +02:00
- name : has_waiver_payment
2024-07-03 12:29:01 +02:00
data_type : boolean
2024-07-03 16:23:52 +02:00
description : |
True if guest payed the waiver
2024-07-03 12:29:01 +02:00
2024-07-03 16:23:52 +02:00
- name : has_deposit_payment
2024-07-03 12:29:01 +02:00
data_type : boolean
2024-07-03 16:23:52 +02:00
description : |
True if guest payed the deposit
2024-07-03 12:29:01 +02:00
2024-07-03 16:23:52 +02:00
- name : has_fee_payment
2024-07-03 12:29:01 +02:00
data_type : boolean
2024-07-03 16:23:52 +02:00
description : |
2024-07-11 15:36:32 +02:00
True if guest payed the fee
- name : int_core__verification_request_booking_source
2024-09-12 15:38:50 +02:00
description : This model contains information on verification requests
2024-07-11 15:36:32 +02:00
and the category type of host that manages the associated
booking.
2024-09-12 15:38:50 +02:00
For PMS (Property Manager System) we use the id_integration
2024-07-11 16:26:41 +02:00
from stg_core__booking, if it isn't Null then the host is PMS type.
2024-09-12 15:38:50 +02:00
For OSL (One Step Link) we use the id_one_step_link from
stg_core__verification_request, similarly if it isn't Null then
2024-07-11 16:26:41 +02:00
the host is OSL type.
2024-07-11 16:19:33 +02:00
Finally if both id_integration and id_one_step_link are Null,
then we classify them as API/MANUAL. (At this point we can't
differentiate between these 2 categories so for now we keep
them together)
2024-07-11 15:36:32 +02:00
columns :
- name : id_verification_request
data_type : bigint
2024-09-12 15:38:50 +02:00
description : Id value for the verification request, there can be more
2024-07-11 15:36:32 +02:00
than 1 record for each verification request since they can
be associated to more than 1 booking
tests :
- not_null
2024-07-11 16:19:33 +02:00
- unique
2024-07-11 15:36:32 +02:00
- name : created_at_utc
data_type : timestamp without time zone
2024-09-12 15:38:50 +02:00
description : Date and time of creation of the verification request
2024-07-11 15:36:32 +02:00
- name : created_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : Date of creation of the verification request
2024-07-11 15:36:32 +02:00
2024-07-11 16:49:24 +02:00
- name : verification_request_booking_source
2024-07-11 15:36:32 +02:00
data_type : text
2024-09-12 15:38:50 +02:00
description : Source type of host of the booking, this could be either;
2024-07-11 15:36:32 +02:00
- PMS
- OSL
2024-07-11 16:19:33 +02:00
- API/MANUAL
tests :
2024-07-11 16:49:24 +02:00
- not_null
2024-07-11 16:19:33 +02:00
- accepted_values :
2024-09-12 15:38:50 +02:00
values :
- "PMS"
- "OSL"
- "API/MANUAL"
2024-07-12 10:11:51 +02:00
- name : int_core__verification_requests
2024-09-12 15:38:50 +02:00
description :
2024-07-12 10:11:51 +02:00
This is a table that shows all guest journey from our guests users with
each record matching each guest journey.
It holds information about the guests like name, email, phone, etc.., as
2024-09-12 15:38:50 +02:00
well as dates regarding the process of the guest journey like when it
2024-07-12 10:11:51 +02:00
was started or finished.
columns :
- name : id_verification_request
data_type : bigint
2024-09-12 15:38:50 +02:00
description :
Unique, incremental, internal ID for the related verification
2024-07-12 10:11:51 +02:00
request.
- name : uuid_verification_request
data_type : text
description : uuid for the related verification request.
- name : id_verification_set
data_type : bigint
description : ""
- name : id_superhog_verified_set
data_type : bigint
description : ""
- name : id_payment_validation_set
data_type : bigint
description : ""
- name : id_user_guest
data_type : character varying
description : Unique, incremental, internal ID for the guest user.
- name : id_user_host
data_type : character varying
description : Unique, incremental, internal ID for the host user.
- name : is_verification_request_complete
data_type : boolean
2024-09-12 15:38:50 +02:00
description : True if the verification request is considered
2024-07-12 10:11:51 +02:00
complete, AKA the guest has finished the full guest journey.
- name : verification_url
data_type : character varying
description : ""
- name : callback_url
data_type : character varying
description : ""
- name : redirect_url
data_type : character varying
description : ""
- name : logo
data_type : character varying
description : ""
- name : guest_email
data_type : character varying
description : The email of the guest.
- name : last_name
data_type : character varying
description : The last name of the guest.
- name : first_name
data_type : character varying
description : The first name of the guest.
- name : guest_phone_number
data_type : character varying
description : The phone number of the guest.
- name : telephone_code
data_type : character varying
description : The telephone code of the guest.
- name : guest_phone_number_2
data_type : character varying
description : ""
2024-07-12 11:06:09 +02:00
- name : verification_estimated_started_at_utc
2024-07-12 10:11:51 +02:00
data_type : timestamp without time zone
2024-09-12 15:38:50 +02:00
description : The estimated date and time at which the guest started the guest journey.
2024-07-12 10:11:51 +02:00
2024-07-12 11:06:09 +02:00
- name : verification_estimated_started_date_utc
2024-07-12 10:11:51 +02:00
data_type : date
2024-09-12 15:38:50 +02:00
description : The estimated date on which the guest started the guest journey.
2024-07-12 10:11:51 +02:00
2024-07-12 11:06:09 +02:00
- name : verification_estimated_completed_at_utc
2024-07-12 10:11:51 +02:00
data_type : timestamp without time zone
2024-09-12 15:38:50 +02:00
description : The estimated date and time at which the guest finished the guest journey.
2024-07-12 10:11:51 +02:00
2024-07-12 11:06:09 +02:00
- name : verification_estimated_completed_date_utc
2024-07-12 10:11:51 +02:00
data_type : date
2024-09-12 15:38:50 +02:00
description : The estimated date on which the guest finished the guest journey.
2024-07-12 10:11:51 +02:00
- name : link_used_at_utc
data_type : timestamp without time zone
2024-09-12 15:38:50 +02:00
description : The date and time at which the guest used the link for the verification.
2024-07-12 10:11:51 +02:00
- name : link_used_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : The date on which the guest used the link for the verification.
2024-07-12 10:11:51 +02:00
- name : expire_at_utc
data_type : timestamp without time zone
2024-09-12 15:38:50 +02:00
description : The date and time at which the link for the verification expires.
2024-07-12 10:11:51 +02:00
- name : expire_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : The date on which the link for the verification expires.
2024-07-12 10:11:51 +02:00
- name : is_deleted
data_type : boolean
description : |
True if the link for verification expired before finishing the
verification.
- name : redirect_name
data_type : character varying
description : ""
- name : id_one_step_link
data_type : bigint
description : ""
- name : verification_request_booking_source
data_type : text
2024-09-12 15:38:50 +02:00
description : Source type of host of the booking, this could be either;
2024-07-12 10:11:51 +02:00
- PMS
- OSL
- API/MANUAL
tests :
- not_null
- accepted_values :
2024-09-12 15:38:50 +02:00
values :
- "PMS"
- "OSL"
- "API/MANUAL"
2024-07-12 10:11:51 +02:00
- name : success_message
data_type : character varying
description : ""
- name : summary
data_type : character varying
description : ""
- name : rejection_reason
data_type : character varying
2024-09-12 15:38:50 +02:00
description : Reason as to why the guest was rejected.
2024-07-12 10:11:51 +02:00
- name : has_switched_to_mobile
data_type : boolean
description : |
True if the guest changed has switched to mobile
during the verification process.
- name : is_verifier_rejected
data_type : boolean
description : ""
- name : config
data_type : character varying
description : ""
- name : metadata
data_type : character varying
description : ""
- name : created_at_utc
data_type : timestamp without time zone
2024-09-12 15:38:50 +02:00
description : The date and time at which the verification process was created.
2024-07-12 10:11:51 +02:00
- name : created_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : The date on which the verification process was created.
2024-07-12 10:11:51 +02:00
- name : updated_at_utc
data_type : timestamp without time zone
2024-09-12 15:38:50 +02:00
description : The date and time at which the last update on the entry happened.
2024-07-12 10:11:51 +02:00
- name : updated_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : The date on which the last update on the entry happened.
2024-07-12 10:11:51 +02:00
- name : dwh_extracted_at_utc
data_type : timestamp with time zone
description : ""
- name : int_core__bookings
description : ""
columns :
- name : id_booking
data_type : bigint
description : "The unique, Superhog generated id for this booking."
tests :
- unique
- not_null
- name : id_user_guest
data_type : character varying
description : "The unique, Superhog generated id for the guest"
- name : id_user_host
data_type : character varying
description : "The unique, Superhog generated id for the host"
- name : id_integration
data_type : character varying
description : ""
- name : id_accommodation
data_type : bigint
description : "The ID of the booked listing."
- name : id_booking_source
data_type : bigint
description : ""
- name : id_verification_request
data_type : bigint
description : "Id value for the verification request, there can be more than 1 record for each verification request since they can be associated to more than 1 booking"
- name : verification_request_booking_source
data_type : text
2024-09-12 15:38:50 +02:00
description : Source type of host of the booking, this could be either;
2024-07-12 10:11:51 +02:00
- PMS
- OSL
- API/MANUAL
2024-08-27 15:45:22 +02:00
- null (bookings without verification request)
2024-07-12 10:11:51 +02:00
tests :
- accepted_values :
2024-09-12 15:38:50 +02:00
values :
- "PMS"
- "OSL"
- "API/MANUAL"
2024-07-12 10:11:51 +02:00
- name : id_staging_host_booking
data_type : bigint
description : ""
- name : is_duplicate_booking
data_type : boolean
2024-09-12 15:38:50 +02:00
description : A flag that identifies whether the booking is a duplicate.
2024-07-12 10:11:51 +02:00
A booking is considered a duplicate if there's an older booking with the same user,
accomodation and check-in date. If there are two or more bookings with the same user,
accomodation and check-in date, the oldest one will have False as a value in this field,
and the other ones will have True as a value in this Failed."
2024-07-31 12:44:54 +02:00
Put simply, if you don't want to receive duplicates, filter this field to False.
2024-07-12 10:11:51 +02:00
- name : is_duplicating_booking_with_id
data_type : bigint
2024-09-12 15:38:50 +02:00
description : "If is_duplicate_booking is True then gives id_booking"
2024-07-12 10:11:51 +02:00
- name : booking_state
data_type : character varying
description : ""
- name : check_in_at_utc
data_type : timestamp without time zone
description : ""
- name : check_in_date_utc
data_type : date
description : ""
- name : check_out_at_utc
data_type : timestamp without time zone
description : ""
- name : check_out_date_utc
data_type : date
description : ""
- name : check_in_sits_in_future
data_type : boolean
description : ""
- name : check_out_sits_in_future
data_type : boolean
description : ""
- name : booking_fee_local
data_type : numeric
description : "The fee to apply to the booking, in host currency."
- name : booking_fee_charge_at_utc
data_type : timestamp without time zone
description : The point in time in which the booking should be invoiced.
This could be the check-in date of the booking or the date in which the guest verification
started, depending on the billing settings of the host.
- name : booking_fee_charge_date_utc
data_type : date
description : The date in which the booking should be invoiced.
This could be the check-in date of the booking or the date in which the guest verification
started, depending on the billing settings of the host.
- name : summary
data_type : character varying
description : ""
- name : guest_email
data_type : character varying
description : ""
- name : guest_last_name
data_type : character varying
description : ""
- name : guest_first_name
data_type : character varying
description : ""
- name : guest_telephone
data_type : character varying
description : ""
- name : additional_guests
data_type : character varying
description : ""
- name : unsubscribe_verification_reminder
data_type : boolean
description : ""
- name : created_at_utc
data_type : timestamp without time zone
description : "Date and time of creation of the verification request"
- name : created_date_utc
data_type : date
description : "Date of creation of the verification request"
- name : updated_at_utc
data_type : timestamp without time zone
description : ""
- name : updated_date_utc
data_type : date
description : ""
- name : dwh_extracted_at_utc
data_type : timestamp with time zone
2024-07-24 16:53:16 +02:00
description : ""
- name : int_core__check_in_cover_listings
2024-09-12 15:38:50 +02:00
description : This model contains information about hosts and their listings
2024-07-24 16:53:16 +02:00
that offer check in cover.
It has basic information on the users and listings like country,
town, address and if they are active or not.
2024-09-12 15:38:50 +02:00
This model is restricted to active user so it doesn't include historical
2024-07-24 16:53:16 +02:00
data like users that had check-in cover but are currently inactive.
columns :
- name : id_user_host
data_type : character varying
description : Unique id value for the user
tests :
- not_null
- name : id_deal
data_type : character varying
description : ""
- name : last_name
data_type : character varying
description : Last name of the user
- name : user_name
data_type : character varying
description : User name of the user
- name : first_name
data_type : character varying
description : First name of the user
- name : host_email
data_type : character varying
description : Email of the user
- name : phone_number
data_type : character varying
description : Phone number of the user
- name : joined_at_utc
data_type : timestamp without time zone
description : Date and time the user joined
- name : joined_date_utc
data_type : date
description : Date the user joined
- name : check_in_cover_added_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : Date the user first included check-in cover
2024-07-24 16:53:16 +02:00
- name : billing_town
data_type : character varying
description : ""
- name : company_name
data_type : character varying
description : ""
- name : id_accommodation
data_type : bigint
description : "Id of the accommodation or listing. It's the unique key for this model."
tests :
- not_null
- unique
- name : is_active
data_type : boolean
description : "Boolean to indicate if the accommodation is active or not"
- name : friendly_name
data_type : character varying
description : "Name of the accommodation"
- name : country_name
data_type : character varying
description : "Name of the country where the accommodation is located."
- name : town
data_type : character varying
description : "Town in which the accommodation is located"
- name : postcode
data_type : character varying
description : ""
- name : address_line_1
data_type : character varying
description : ""
- name : check_in_cover_purchased
data_type : bigint
2024-09-12 15:38:50 +02:00
description : "Count of how many Check-in covers have been
2024-07-31 15:16:15 +02:00
purchased for this accommodation"
- name : int_core__host_booking_fees
2024-09-12 15:38:50 +02:00
description : Bookings that have been processed by the Superhog backend.
2024-07-31 15:16:15 +02:00
Each record matches one booking and has information on host
2024-09-12 15:38:50 +02:00
booking fees, when they were charged and the currency used by
2024-07-31 15:16:15 +02:00
the host.
columns :
- name : id_booking
data_type : bigint
description : "The unique, Superhog generated id for this booking."
tests :
- unique
- not_null
- name : id_user_guest
data_type : character varying
description : The UUID of the Superhog user playing the guest role in the booking.
- name : id_user_host
data_type : character varying
description : The UUID of the Superhog user playing the host role in the booking.
tests :
- not_null
- name : id_accommodation
data_type : bigint
description : The ID of the booked listing.
- name : booking_state
data_type : character varying
2024-09-12 15:38:50 +02:00
description :
2024-07-31 15:16:15 +02:00
"State in which the booking is, could be either of the following:
- Approved
- NotApproved
- Cancelled
- Rejected
- NoFlags
- Flagged
- IncompleteInformation"
2024-09-12 15:38:50 +02:00
tests :
2024-07-31 15:16:15 +02:00
- accepted_values :
2024-09-12 15:38:50 +02:00
values :
- "Approved"
- "NotApproved"
- "Cancelled"
- "Rejected"
- "NoFlags"
- "Flagged"
- "IncompleteInformation"
2024-07-31 15:16:15 +02:00
- name : is_duplicate_booking
data_type : boolean
2024-09-12 15:38:50 +02:00
description : |
2024-07-31 15:16:15 +02:00
A flag that identifies whether the booking is a duplicate.
A booking is considered a duplicate if there's an older booking with the same user,
accomodation and check-in date. If there are two or more bookings with the same user,
accomodation and check-in date, the oldest one will have False as a value in this field,
and the other ones will have True as a value in this Failed."
Put simply, if you don't want to receive duplicates, filter this field to False.
- name : booking_fee_local
data_type : numeric
description : "The fee to apply to the booking, in host currency."
- name : account_currency_iso4217
data_type : character varying
description : "Currency used by host/pm/platform users."
2024-08-01 14:32:45 +02:00
- name : booking_fee_in_gbp
2024-08-01 12:58:36 +02:00
data_type : numeric
2024-08-01 14:32:45 +02:00
description : "The fee to apply to the booking, in GBP"
2024-08-01 12:58:36 +02:00
2024-07-31 15:16:15 +02:00
- name : booking_fee_charge_at_utc
data_type : timestamp without time zone
description : |
The point in time in which the booking should be invoiced.
This could be the check-in date of the booking or the date in which the guest verification
started, depending on the billing settings of the host.
- name : booking_fee_charge_date_utc
data_type : date
description : |
The date in which the booking should be invoiced.
This could be the check-in date of the booking or the date in which the guest verification
2024-08-07 14:28:34 +00:00
started, depending on the billing settings of the host.
- name : int_core__user_role
description : |
This model contains the relationship of user has a role.
A User in this table can have 1 or more than 1 roles.
Not all Users in this table appear in the standard user table,
meaning that not all users have a role assigned.
The possible roles are :
- Host
- Platform
- EDeposit
- Guest
- Admin
- KnowYourGuest
2024-11-26 09:12:09 +00:00
- ScreeningApi
2024-08-07 14:28:34 +00:00
- PropertyVerificationManager
2024-09-27 09:55:37 +02:00
- CheckInHeroApi
2024-10-09 08:58:36 +02:00
- CancellationApi
2024-11-26 09:12:09 +00:00
- ScreenAndProtectApi
- ResolutionApi
2024-09-12 15:38:50 +02:00
tests :
2024-08-07 14:28:34 +00:00
- dbt_utils.unique_combination_of_columns :
combination_of_columns :
- id_user
- role_name
2024-09-12 15:38:50 +02:00
2024-08-07 14:28:34 +00:00
columns :
- name : id_user
data_type : string
description : |
The identifier of the user. Can be duplicated if it has multiple roles.
tests :
- not_null
2024-09-12 15:38:50 +02:00
2024-08-07 14:28:34 +00:00
- name : role_name
data_type : string
description : The name of the role a user has.
tests :
- accepted_values :
2024-09-12 15:38:50 +02:00
values :
2024-08-07 14:28:34 +00:00
- Host
- Platform
- EDeposit
- Guest
- Admin
- KnowYourGuest
- ScreeningApi
- PropertyVerificationManager
2024-09-27 09:55:37 +02:00
- CheckInHeroApi
2024-10-09 08:58:36 +02:00
- CancellationApi
2024-11-20 09:02:22 +00:00
- ScreenAndProtectApi
2024-11-26 09:12:09 +00:00
- ResolutionApi
2024-08-07 14:28:34 +00:00
- name : int_core__user_host
2024-09-12 15:38:50 +02:00
description : |
This table provides information of the users that act as Hosts.
A Host needs to be understood in the broad sense of the term. Here host means any
user that acts as a "B2B" client.
The categorisation as a Host is based on two possibilities : the role of the user or if
the user comes from Know Your Guest (KYG) within the claim table. Any user that has
any of the following roles will be considered as a Host in this table :
- Host
- Platform
- EDeposit
- KnowYourGuest
- ScreeningAPI
- PropertyVerificationManager
2024-11-20 09:02:22 +00:00
- CancellationApi
- CheckInHeroApi
- ScreenAndProtectApi
2024-09-12 15:38:50 +02:00
Additionally, any user that has any of these claim types will be considered as a Host :
- KygRegistrationSignUpType
- KygRegistrationIntegrationTypeName
- KygMvp
2024-11-20 09:02:22 +00:00
- NewDashVersion
2024-09-12 15:38:50 +02:00
Lastly, in case a user satisfies multiple conditions, it will only appear once in this table.
2024-08-07 14:28:34 +00:00
columns :
- name : id_user_host
data_type : character varying
description : The unique user ID for the Host.
tests :
- not_null
- unique
- name : id_account_type
data_type : integer
description : |
Account type ID. Can be null and might be not up-to-date.
- name : id_billing_country
data_type : integer
description : |
ID of the country in which the Host is billed.
In some cases it's null.
2024-08-29 08:25:05 +00:00
- name : billing_country_name
data_type : string
description : |
Name of the country in which the Host is billed.
In some cases it's null.
- name : billing_country_iso_2
data_type : string
description : |
ISO 3166-1 alpha-2 country code in which the Host is billed.
In some cases it's null.
- name : billing_country_iso_3
data_type : string
description : |
ISO 3166-1 alpha-3 country code in which the Host is billed.
2024-09-12 15:38:50 +02:00
In some cases it's null.
2024-08-07 14:28:34 +00:00
- name : account_currency_iso4217
data_type : string
description : |
3 character currency code linked to the account.
2024-09-12 15:38:50 +02:00
In some cases it's null.
2024-08-07 14:28:34 +00:00
- name : user_code
data_type : integer
description : |
A code identifying users.
- name : first_name
data_type : string
description : |
First name of the Host.
- name : last_name
data_type : string
description : |
Last name of the Host.
- name : company_name
data_type : string
description : |
Name of the company. In some cases, it's the same
as the first_name, the last_name, a concatenation of
both, or something different. Can be null and empty.
- name : email
data_type : string
description : |
Electronic mail of the Host.
- name : id_deal
data_type : string
description : |
Main identifier of the B2B clients. A Deal can have multiple Hosts.
A Host can have only 1 Deal or no Deal at all. This field can be null.
Merged PR 2743: Fixes deal-based issues on the billing country dimension
# Description
Before deploying KPIs by Billing Country, we spotted some issues that were basically increases on the volumes of any metric on the by billing country dimension that was based on Deal. This means, `int_core__mtd_deal_metrics` and `int_xero__mtd_invoicing_metrics`.
This PR changes the following:
* Now the 2 abovementioned models depend on the `int_core__deal` model, instead of `int_core__user_host` (thus removing duplicated stuff)
* Now all models use the main billing country at deal level, instead of doing it so at host level. The reason is that some small amount of hosts that share the same deal can have a different billing country. To avoid weird stuff, everything points to this simplification - that in general, it's not a massive change in the output.
* In order to do so easily, the 3 main billing country per deal fields have been propagated to `int_core__user_host`
To exemplify the solution, find here a snapshot of the differences in behavior:
```
select
dimension,
sum(deals_booked_in_month) as deals_booked_1,
sum(deals_booked_in_6_months) as deals_booked_6,
sum(deals_booked_in_12_months) as deals_booked_12,
sum(total_revenue_in_gbp) as total_revenue,
sum(xero_operator_net_fees_in_gbp) as operator_revenue,
sum(xero_booking_net_fees_in_gbp) as booking_fees,
sum(xero_listing_net_fees_in_gbp) as listing_fees,
sum(xero_verification_net_fees_in_gbp) as verification_fees,
sum(total_guest_revenue_in_gbp) as guest_revenue,
sum(xero_waiver_paid_back_to_host_in_gbp) as waiver_paid_back_to_hosts,
sum(waiver_net_fees_in_gbp) as waiver_net_fees
from intermediate.int_mtd_vs_previous_year_metrics
where date in ('2024-01-31')
group by 1
order by 1
```
Production:

vs.
Local:

Keep in mind that still Global dimension can be greater than any other dimension aggregated since not all users have a deal. Mismatches between the other 2 dimensions might be linked to the dump.
Commits are meaningful and help navigate in the changes.
# 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: #20823
2024-09-05 09:53:16 +00:00
- name : main_billing_country_name_per_deal
data_type : string
description : |
Name of the main country in which the Deal is billed.
It's a simplification of the billing country that is common to all users
that share the same Deal. It can be null.
- name : main_billing_country_iso_2_per_deal
data_type : string
description : |
ISO 3166-1 alpha-2 main country code in which the Deal is billed.
It's a simplification of the billing country that is common to all users
that share the same Deal. It can be null.
- name : main_billing_country_iso_3_per_deal
data_type : string
description : |
ISO 3166-1 alpha-3 main country code in which the Deal is billed.
It's a simplification of the billing country that is common to all users
that share the same Deal. It can be null.
2024-08-07 14:28:34 +00:00
- name : joined_at_utc
data_type : timestamp
description : |
Timestamp of when the Host user joined Superhog.
- name : joined_date_utc
data_type : date
description : |
2024-09-12 15:38:50 +02:00
Date of when the Host user joined Superhog.
2024-08-07 14:28:34 +00:00
- name : created_date_utc
data_type : date
description : |
Date of when the Host user was created in our systems.
- name : updated_date_utc
data_type : date
description : |
Date of the last time the information of the Host was updated
2024-08-19 11:43:54 +02:00
in our systems.
2024-11-21 16:30:47 +00:00
- name : is_missing_id_deal
data_type : boolean
description : |
Flag to identify if a user is missing the id_deal (true) or
not (false).
2024-10-31 15:45:28 +00:00
- name : is_user_in_new_dash
2024-08-22 12:10:25 +00:00
data_type : boolean
2024-09-12 15:38:50 +02:00
description : |
2024-10-31 15:45:28 +00:00
Flag to determine if this user host is in New Dash or not.
- name : has_user_moved_from_old_dash
data_type : boolean
description : |
Flag to determine if this user host is in New Dash and has
been moved from the old dash.
- name : new_dash_version
2024-08-22 12:10:25 +00:00
data_type : string
2024-09-12 15:38:50 +02:00
description : |
2024-10-31 15:45:28 +00:00
For users that are in New Dash, specifies the New Dash Version
in which these users were moved or joined.
- name : new_dash_move_date_utc
2024-08-22 12:10:25 +00:00
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-10-31 15:45:28 +00:00
For users that are in New Dash and have been moved from
Old Dash, specifies the date in which users switched.
- name : new_dash_move_at_utc
data_type : timestamp
description : |
For users that are in New Dash and have been moved from
Old Dash, specifies the timestamp in which users switched.
This is an estimate since we don't know for sure the exact
timestamp. Currently defaulting to 00:00:00h of given move
date.
- name : user_in_new_dash_since_date_utc
data_type : date
description : |
For users that are in New Dash, the effective date since
these users can be considered in New Dash. It the user
has moved from Old Dash, it will be the new_dash_move_date_utc.
If not, it will correspond to the joined_date_utc.
- name : user_in_new_dash_since_timestamp_at_utc
data_type : timestamp
description : |
For users that are in New Dash, the effective date since
2024-11-19 16:42:34 +00:00
these users can be considered in New Dash. If the user
2024-10-31 15:45:28 +00:00
has moved from Old Dash, it will be the new_dash_move_at_utc.
If not, it will correspond to the joined_at_utc.
2024-08-22 12:10:25 +00:00
2024-10-31 15:45:28 +00:00
- name : int_core__new_dash_users
2024-09-12 15:38:50 +02:00
description : |
2024-10-31 15:45:28 +00:00
This table provides information of the host users that are in New Dash.
Users can be in New Dash because 1) have moved (migrated) from Old Dash
or 2) have been directly created within New Dash.
2024-08-22 12:10:25 +00:00
columns :
- name : id_user_host
data_type : character varying
description : The unique user ID for the Host.
tests :
- not_null
- unique
2024-10-31 15:45:28 +00:00
- name : new_dash_version
2024-08-22 12:10:25 +00:00
data_type : string
2024-09-12 15:38:50 +02:00
description : |
2024-10-31 15:45:28 +00:00
The name of the New Dash version this user appeared firstly.
2024-08-22 12:10:25 +00:00
tests :
- not_null
2024-10-31 15:45:28 +00:00
- name : has_user_moved_from_old_dash
data_type : boolean
description : |
Flag to determine if this user host is in New Dash and has
been moved from the old dash.
- name : new_dash_move_date_utc
2024-08-22 12:10:25 +00:00
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-10-31 15:45:28 +00:00
For users that are in New Dash and have been moved from
Old Dash, specifies the date in which users switched.
- name : new_dash_move_at_utc
data_type : timestamp
2024-10-04 07:16:52 +00:00
description : |
2024-10-31 15:45:28 +00:00
For users that are in New Dash and have been moved from
Old Dash, specifies the timestamp in which users switched.
This is an estimate since we don't know for sure the exact
timestamp. Currently defaulting to 00:00:00h of given move
date.
- name : user_in_new_dash_since_date_utc
data_type : date
description : |
For users that are in New Dash, the effective date since
these users can be considered in New Dash. It the user
has moved from Old Dash, it will be the new_dash_move_date_utc.
If not, it will correspond to the joined_date_utc.
- name : user_in_new_dash_since_timestamp_at_utc
data_type : timestamp
2024-10-04 07:16:52 +00:00
description : |
2024-10-31 15:45:28 +00:00
For users that are in New Dash, the effective date since
2024-11-19 16:42:34 +00:00
these users can be considered in New Dash. If the user
2024-10-31 15:45:28 +00:00
has moved from Old Dash, it will be the new_dash_move_at_utc.
If not, it will correspond to the joined_at_utc.
2024-08-19 11:43:54 +02:00
2024-08-26 09:18:56 +00:00
- name : int_core__user_product_bundle
description : |
This model contains the relationship of a User has a Product Bundle. It contains
both the active Product Bundles as well as inactive, past ones, for each user,
with the dates in which it was active. If a Product Bundle is active, then the
end date is null.
2024-09-12 15:38:50 +02:00
2024-08-26 09:18:56 +00:00
In the initiatives of "new pricing" and "new dashboard" (2024), a User that
has been migrated into this setup can have one or many Product Bundles active.
This table won't display Product Bundles from users that have not been migrated.
A Product Bundle is a bundle of one or many Product Services. In other words,
different combinations of Product Services (Basic Screening, Id Verification,
Screening Plus, Basic Damage Deposit, Damage Deposit Plus, Waiver Pro, etc)
) would result into different Product Bundles.
For instance, for the New Dashboard MVP, we only have 2 Product Bundles :
- Basic Screening : only contains one service, which is Basic Screening
- Basic Program : contains 2 services, which are Basic Screening and
Waiver Pro.
Important :
A User having an active Product Bundle does NOT mean that the bundle is in use.
2024-08-27 08:57:23 +00:00
In order to be in use, the Product Bundle needs to be applied to a Listing.
2024-08-26 09:18:56 +00:00
Thus, the relationship in this table only shows, from user point of view, what
Product Bundles she/he can apply into a Listing.
columns :
- name : id_user_product_bundle
data_type : bigint
description : |
2024-08-27 12:51:55 +00:00
The unique identifier of this table.
2024-08-26 09:18:56 +00:00
tests :
- not_null
- unique
- name : id_user_host
data_type : string
description : |
The identifier of the User. Can be duplicated if it has many Product Bundles.
tests :
- not_null
2024-09-12 15:38:50 +02:00
2024-08-26 09:18:56 +00:00
- name : id_product_bundle
data_type : int
description : |
The identifier of the Product Bundle associated to the user. The same Product
2024-10-31 15:45:28 +00:00
Bundle can be applied into many users. Can be null if the bundle is custom.
2024-08-26 09:18:56 +00:00
- name : id_protection_plan
data_type : int
description : |
The identifier of the Protection Plan. There's a 1 to 1 relationship between
2024-09-12 15:38:50 +02:00
a Product Bundle and a Protection Plan.
2024-08-26 09:18:56 +00:00
- name : product_bundle_name
data_type : string
description : |
2024-11-15 10:04:02 +00:00
The name of the Product Bundle.
2024-08-26 09:18:56 +00:00
- name : product_bundle_display_name
data_type : string
description : |
The name of the Product Bundle, better fit for visualisations.
2024-10-07 17:21:52 +02:00
- name : protection_name
data_type : string
description : |
The name of the Protection Plan associated to the Product Bundle.
- name : protection_display_name
data_type : string
description : |
The name of the Protection Plan, better fit for visualisations.
2024-08-26 09:18:56 +00:00
- name : display_on_front_end
data_type : boolean
description : |
Flag that accounts for the capacity of a Host being able to modify the Product Bundle.
- name : chosen_product_services
data_type : int
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Identifier of the combination of Services that apply to a Product Bundle. In essence,
the sum of Service Ids applied return the number displayed in this column. For example,
a chosen_product_services = 257 means it has the services 1 + 256, which are the
2024-09-12 15:38:50 +02:00
Basic Screening and the Waiver Pro.
2024-08-26 09:18:56 +00:00
- name : original_starts_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Timestamp of when this User has Product Bundle was active for the first time, according to
the Backend.
Keep in mind that this timestamp can be before the migration of the user, thus
effective_start_date_utc might be better for reporting and analysis purposes.
tests :
- not_null
- name : original_ends_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Timestamp of when this User has Product Bundle was active for the last time, according to
the Backend. If null it means that it's currently active.
Keep in mind that this timestamp can be before the migration of the user, thus
effective_end_date_utc might be better for reporting and analysis purposes.
- name : effective_start_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Effective date of when this User has Product Bundle was active for the first time.
It takes into account the fact that a User needs to be migrated in order for
the Product Bundle to be active. In case of doubt, use this date.
tests :
- not_null
- name : effective_end_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Effective date of when this User has Product Bundle was active for the last time.
If null it means that it's currently active.
It takes into account the fact that a User needs to be migrated in order for
the Product Bundle to be active. In case of doubt, use this date.
- name : has_no_end_date
data_type : boolean
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Flag to determine if the end date is filled or not.
- name : created_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Timestamp of when this User has Product Bundle was created in the Backend.
- name : created_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Date of when this User has Product Bundle was created in the Backend.
- name : updated_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Timestamp of when this User has Product Bundle was last updated in the Backend.
- name : updated_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-08-26 09:18:56 +00:00
Date of when this User has Product Bundle was last updated in the Backend.
- name : dwh_extracted_at
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when this record was ingested from the Backend to the DWH.
2024-08-27 12:51:55 +00:00
- name : int_core__booking_to_product_bundle
description : |
This model contains the information of which booking is linked to a
specific product bundle. It's a subset of all bookings since it only
applies to bookings that come from hosts that have been migrated into
2024-10-04 10:32:15 +02:00
the New Dash. Only the latest product bundle associated to the booking
is shown.
2024-08-27 12:51:55 +00:00
Note : at this moment, it's not straight-forward to know which product service
is applied in the booking. We only know that a booking is linked to a product
bundle, but not the service that applies from those available within the
product bundle. Likely this is not an issue for the MVP since there's only 2
bundles and 2 services, and the only bundle that has a paid service is Basic
Program.
Note : to improve data quality, there's an inner join with
int_core__user_product_bundle to ensure that bookings need to 1) come from
hosts that appear in the table and 2) be created after the user's effective
start of the product bundle. This is because there's some previous booking
data that it's before the New Dash MVP start date.
columns :
- name : id_booking_to_product_bundle
data_type : bigint
description : |
The unique identifier of this table.
tests :
- not_null
- unique
- name : id_booking
data_type : bigint
description : |
The identifier of the booking that has a product bundle.
A booking appearing here would mean it's under the New Dash &
the New Pricing structure. It is expected that bookings are
unique within this model.
tests :
- not_null
- unique
- name : id_user_product_bundle
data_type : bigint
description : |
The identifier of the user product bundle. This allows the retrieval
of the information of the product bundle associated at the user level.
tests :
- not_null
- name : id_user_host
data_type : string
description : |
The identifier of the user that acts as a host. Only Hosts that have
New Pricing in the New Dash structure that have had bookings will
appear in this model.
tests :
- not_null
- name : product_bundle_name
data_type : string
description : |
2024-11-15 10:04:02 +00:00
The name of the Product Bundle.
2024-08-27 12:51:55 +00:00
- name : created_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when this Booking to Product Bundle record was created in the Backend.
2024-08-27 12:51:55 +00:00
- name : created_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Date of when this Booking to Product Bundle record was created in the Backend.
2024-08-27 12:51:55 +00:00
- name : updated_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when this Booking to Product Bundle record was last updated in the Backend.
2024-08-27 12:51:55 +00:00
- name : updated_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Date of when this Booking to Product Bundle record was last updated in the Backend.
2024-08-27 12:51:55 +00:00
2024-08-27 14:05:24 +00:00
- name : dwh_extracted_at
data_type : timestamp with timezone
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when this record was ingested from the Backend to the DWH.
2024-08-27 14:05:24 +00:00
- name : int_core__accommodation_to_product_bundle
description : |
This model contains the information of which product bundle is assigned
into an accommodation, also known as listing.
It's a subset of all accommodations since it only applies to listings that
come from hosts that have been migrated into the New Dash.
Note : to improve data quality, there's an inner join with
int_core__user_product_bundle to ensure that accommodations need to be linked
to hosts that appear in the table.
2024-09-12 15:38:50 +02:00
2024-08-27 14:05:24 +00:00
Important note : the lack of entries in this table does NOT mean that the
users do not have Product Bundles in an Accommodation. A migrated user in New
Dash have by default the Product Bundle "Basic Screening", which only contains
the Product Service "Basic Screening". This is a free, default service at the
moment of creating this model, but according to Dash Product Manager, it is
likely that this service will at some point be charged - though likely 2025.
In the meantime, it's possible an quite frequent that users that have been
migrated have Bookings without the respective Accommodation appearing in this
table. For these cases, keep in mind that this Basic Screening has this default
behavior, so it has to be modelised differently.
columns :
- name : id_accommodation_to_product_bundle
data_type : bigint
description : |
The unique identifier of this table.
tests :
- not_null
- unique
- name : id_accommodation
data_type : bigint
description : |
The identifier of the accommodation that has a product bundle.
An accommodation appearing here would mean it's under the New Dash &
the New Pricing structure; as well as having a product bundle different
than the default "Basic Screening".
Accommodations can have several entries in this table for each time
there's a change on the bundle assigned into it.
tests :
- not_null
- name : id_user_product_bundle
data_type : bigint
description : |
The identifier of the user product bundle. This allows the retrieval
of the information of the product bundle associated at the user level.
tests :
- not_null
- name : id_user_host
data_type : string
description : |
The identifier of the user that acts as a host. Only Hosts that have
New Pricing in the New Dash structure that have an accommodation with
a product bundle different than the default "Basic Screening" assigned
into it will appear in this model.
tests :
- not_null
- name : product_bundle_name
data_type : string
description : |
2024-11-15 10:04:02 +00:00
The name of the Product Bundle.
2024-08-27 14:05:24 +00:00
- name : original_starts_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-08-27 14:05:24 +00:00
Timestamp of when this Product Bundle is assigned into an Accommodation was
active for the first time, according to the Backend.
Keep in mind that this timestamp can be before the migration of the user, thus
effective_start_date_utc might be better for reporting and analysis purposes.
tests :
- not_null
- name : original_ends_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-08-27 14:05:24 +00:00
Timestamp of when this Product Bundle is assigned into an Accommodation was
active for the last time, according to the Backend. If null it means that
it's currently active.
Keep in mind that this timestamp can be before the migration of the user, thus
effective_end_date_utc might be better for reporting and analysis purposes.
- name : effective_start_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-08-27 14:05:24 +00:00
Effective date of when this Product Bundle is assigned into an Accommodation was
active for the first time.
It takes into account the fact that a User needs to be migrated in order for
the Product Bundle to be active in the Accommodation. In case of doubt, use this date.
tests :
- not_null
- name : effective_end_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-08-27 14:05:24 +00:00
Effective date of when this Product Bundle is assigned into an Accommodation was
active for the last time. If null it means that it's currently active.
It takes into account the fact that a User needs to be migrated in order for
the Product Bundle to be active in the Accommodation. In case of doubt, use this date.
- name : has_no_end_date
data_type : boolean
2024-09-12 15:38:50 +02:00
description : |
2024-08-27 14:05:24 +00:00
Flag to determine if the end date is filled or not.
- name : created_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when this Accommodation to Product Bundle record was created in the Backend.
2024-08-27 14:05:24 +00:00
- name : created_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Date of when this Accommodation to Product Bundle record was created in the Backend.
2024-08-27 14:05:24 +00:00
- name : updated_at_utc
data_type : timestamp
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when this Accommodation to Product Bundle record was last updated in the Backend.
2024-08-27 14:05:24 +00:00
- name : updated_date_utc
data_type : date
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Date of when this Accommodation to Product Bundle record was last updated in the Backend.
2024-08-27 14:05:24 +00:00
2024-08-27 12:51:55 +00:00
- name : dwh_extracted_at
data_type : timestamp with timezone
2024-09-12 15:38:50 +02:00
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when this record was ingested from the Backend to the DWH.
2024-08-28 10:09:08 +00:00
- name : int_core__new_dash_user_overview
description : |
This model allows for minimum tracking of how the new dash initative is
performing in the different migrations.
It's a user-centric model in which, for each user, we retrieve some
basic performance indicators in the form of listings and bookings.
columns :
- name : id_user_host
data_type : string
description : |
The unique identifier of this table. It corresponds to the host users
that have been migrated to the New Dashboard.
tests :
- not_null
- unique
2024-11-12 17:10:42 +01:00
- name : id_deal
data_type : character varying
description : The ID for the Deal.
2024-08-28 10:09:08 +00:00
- name : user_migration_phase
data_type : string
description : |
The migration phase in which this user was migrated, for informative
purposes.
tests :
- not_null
- name : user_estimated_migration_date_utc
data_type : date
description : |
The estimated date in which this user was migrated.
tests :
- not_null
- name : company_name
data_type : string
description : |
Information about the host user.
- name : first_name
data_type : string
description : |
Information about the host user.
- name : last_name
data_type : string
description : |
Information about the host user.
2024-11-12 16:33:55 +01:00
- name : email
data_type : string
description : |
Information about the host user.
2024-08-28 10:09:08 +00:00
- name : account_currency
data_type : string
description : |
Currency associated to the host user.
- name : total_user_product_bundles
data_type : integer
description : |
Count of product bundles that this user has or has had.
It contains both active and historic cases.
- name : total_active_user_product_bundles
data_type : integer
description : |
Count of product bundles that this user currently has.
It contains only currently active cases.
- name : total_listings
data_type : integer
description : |
Count of listings that the user owns or has owned.
- name : total_active_listings
data_type : integer
description : |
Count of listings that the user owns.
It contains only those that can accept bookings (hard
activation - not to be confused with activity-based
2024-09-12 15:38:50 +02:00
segmentation).
2024-08-28 10:09:08 +00:00
- name : total_listings_with_product_bundle_with_paid_service
data_type : integer
description : |
Count of listings that have, or have had, a paid service
product bundle activated.
- name : total_listings_with_active_product_bundle_with_paid_service
data_type : integer
description : |
Count of listings that currently have an active paid service
product bundle.
- name : has_active_listings
data_type : integer
description : |
Integer-based flag version of total_active_listings.
- name : has_listings_with_paid_service_applied
data_type : integer
description : |
Integer-based flag version of total_listings_with_product_bundle_with_paid_service.
- name : has_listings_with_active_paid_service_applied
data_type : integer
description : |
Integer-based flag version of total_listings_with_active_product_bundle_with_paid_service.
- name : total_bookings_with_product_bundle
data_type : integer
description : |
Count of bookings that have a product bundle associated.
- name : total_bookings_with_product_bundle_with_paid_service
data_type : integer
description : |
Count of bookings that have a product bundle associated that contain
a paid service.
- name : has_bookings_with_product_bundle
data_type : integer
description : |
Integer-based flag version of total_bookings_with_product_bundle.
2024-09-12 15:38:50 +02:00
2024-08-28 10:09:08 +00:00
- name : has_bookings_with_product_bundle_with_paid_service
data_type : integer
description : |
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
Integer-based flag version of total_bookings_with_product_bundle_with_paid_service.
- name : int_core__invoicing_price_plans_per_month
description : |
This model contains the price plans that were considered as active
for the invoicing process each month. This is, given that more than
one plan coexist within the same month, we take the price plan that
was active at the end of the month. This price plan is the one that
should apply for the invoicing of that month, indisctintly of the
fact that there was other plans active before.
2024-09-12 15:38:50 +02:00
tests :
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
- dbt_utils.unique_combination_of_columns :
combination_of_columns :
- id_user_host
- id_price_plan
- active_in_month_start_date_utc
2024-09-12 15:38:50 +02:00
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
columns :
- name : id_price_plan
data_type : bigint
description : |
The unique identifier of this table, representing
the identifier of the price plan.
tests :
- not_null
- name : id_user_host
data_type : string
description : |
The unique identifier of the user host that has
a price plan.
tests :
- not_null
- name : price_plan_charged_by_type
data_type : string
description : |
Type of price plan that determines that will affect
the billing logic applied.
tests :
- not_null
- name : price_plan_start_at_utc
data_type : timestamp
description : |
Original timestamp of when a given price plan
started to be active.
tests :
- not_null
- name : price_plan_end_at_utc
data_type : timestamp
description : |
Original timestamp of when a given price plan
ended to be active. If it's currently active,
a default end date on 2099 will apply.
tests :
- not_null
- name : price_plan_created_at_utc
data_type : timestamp
description : |
Original timestamp of when a given price plan
was created.
tests :
2024-09-12 15:38:50 +02:00
- not_null
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
- name : active_in_month_start_date_utc
data_type : date
description : |
Date that refers to the first day of the
month on which we will consider a price plan
as active.
If we're interested in retrieving the information from
June, this date will be the 1st of June.
tests :
2024-09-12 15:38:50 +02:00
- not_null
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
- name : active_in_month_end_date_utc
data_type : date
description : |
Date that refers to the last day of the
month on which we will consider a price plan
as active.
If we're interested in retrieving the information from
June, this date will be the 30th of June.
tests :
2024-09-12 15:38:50 +02:00
- not_null
Merged PR 2642: Booking Charge Events to have a similar logic as invoicing
# Description
Based on the Notion page [here](https://www.notion.so/knowyourguest-superhog/Data-quality-assessment-Billable-Bookings-97008b7f1cbb4beb98295a22528acd03), this PR mainly adds:
- Charge at verification depends on when the Guest joined or the VR was updated (depending on if the verification request associated exists does not exists or it does, respectively)
- Add the logic to retrieve the last plan that is available at the beginning of each month.
- Additional where conditions, relatively documented, to imitate was is available in the invoicing process. This includes removal of duplicated bookings, guest verification and guest user existing.
Additional changes:
- Remove select star :)
- Added dbt tests that didn't exist before
- Add informative fields on 1) how many price plans were active in a given month, even though we just keep the last one and 2) cases in which bookings are created after the booking is supposed to be charged.
Data quality:´
- I have mixed feelings. This does not correspond 100% to the volumes provided by the exporter, though are quite close. For April, May and June 2024, this logic has more than 95% of accuracy. Still, the fact of using the guest joined, and especially the updated date, I feel like this will make past data "disappear" if the guest has another journey. I don't know for sure since we do not store incremental updates of user information.
I'd propose to move forward to have an estimated metric available anyway - with this or a similar logic, even the previous one based on the used link at but fixing the cases in which there's no VR associated.
Let's discuss it!
# 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: #18111
2024-09-03 13:15:40 +00:00
- name : price_plans_active_in_month
data_type : integer
description : |
Integer that refers to how many price plans
have been active in a given month for a user
host. The price plan retrieved will be the
last one that was active, so this is just an
informative field of how many changes of price
plans happened during that month.
tests :
2024-09-12 15:38:50 +02:00
- not_null
2024-09-17 15:47:45 +02:00
- name : int_core__payaway_per_month_user
description : |
This model contains the payaway plans that were considered as active
for the invoicing process each month. This is, given that more than
one plan coexist within the same month, we take the one plan that
was active at the end of the month. This is the one that should apply for
the invoicing of that month, indisctintly of the fact that there was other
plans active before.
The time scope of the model is limited to the current month. This means
that, even though some plans will end in future dates or have no planned
2024-09-17 16:12:38 +02:00
end date, this table will only reflect activeness within months up to the
current month.
2024-09-17 15:47:45 +02:00
tests :
- dbt_utils.unique_combination_of_columns :
combination_of_columns :
- id_user_host
- id_payaway_plan
- active_in_month_start_date_utc
columns :
- name : id_payaway_plan
data_type : bigint
description : |
The unique identifier of this table, representing
the identifier of the payaway plan.
tests :
- not_null
- name : id_user_host
data_type : string
description : |
The unique identifier of the user host that has
a price plan.
tests :
- not_null
- name : start_at_utc
data_type : timestamp
description : |
Original timestamp of when a given plan started to be active.
tests :
- not_null
- name : end_at_utc
data_type : timestamp
description : |
Original timestamp of when a given plan stopped being active. If it's
null , it means the plan is open ended (has no planned end date yet).
- name : created_at_utc
data_type : timestamp
description : |
Original timestamp of when a given plan was created.
tests :
- not_null
- name : active_in_month_start_date_utc
data_type : date
description : |
Date that refers to the first day of the month on which we will
consider a plan as active. If we're interested in retrieving the
information from June, this date will be the 1st of June.
tests :
- not_null
- name : active_in_month_end_date_utc
data_type : date
description : |
Date that refers to the last day of the month on which we will
consider a plan as active. If we're interested in retrieving the
information from June, this date will be the 30th of June.
tests :
- not_null
2024-09-12 15:38:50 +02:00
2024-09-04 16:03:36 +00:00
- name : int_core__deal
2024-09-12 15:38:50 +02:00
description : |
This table provides information about the unique entity that identifies a
client, which is a Deal.
A Deal is a common way to match information between Core, Xero and Hubspot
data sources. It's different from the typical User Host in the sense that
a Deal can have multiple User accounts (usually referred to as Platform
accounts). This is because in the past, different Host configurations could
only be done if multiple users were created.
It can happen that a Deal has 1 or multiple hosts, as mentioned above. At
the same time, not all users that act as hosts have a deal associated. One
example is Know Your Guest (KYG) Lite accounts. However, there's also historical
cases that for whatever reason there's no Deal associated.
For this model, the billing country and the deal name are estimated based on
the information available in int_core__unified_user.
2024-09-06 17:08:50 +02:00
2024-09-04 16:03:36 +00:00
columns :
- name : id_deal
data_type : character varying
2024-11-19 08:24:32 +00:00
description : The unique ID for the Deal. One record per id_deal.
2024-09-04 16:03:36 +00:00
tests :
- not_null
- unique
2024-09-06 17:08:50 +02:00
- name : main_deal_name
data_type : string
description : |
Main name for this ID deal. It's a clean version of
the most repeated name within the user tables in the
fields of first_name, last_name and company name.
This field should be modified at the moment we have
a proper way to retrieve a common account name per deal.
It can contain duplicates.
tests :
- not_null
2024-09-04 16:03:36 +00:00
- name : main_id_billing_country_per_deal
data_type : integer
description : |
ID of the main country in which the Deal is billed.
It's an estimation since in some cases, a Deal can have
different User Hosts and these are not forced to be billed
within the same country. However, the volume of these cases
is very low, thus we proceed with this estimation.
2024-09-12 15:38:50 +02:00
In some cases it's null.
2024-09-04 16:03:36 +00:00
- name : main_billing_country_name_per_deal
data_type : string
description : |
Name of the main country in which the Deal is billed.
In some cases it's null.
- name : main_billing_country_iso_2_per_deal
data_type : string
description : |
ISO 3166-1 alpha-2 main country code in which the Deal is billed.
In some cases it's null.
- name : main_billing_country_iso_3_per_deal
data_type : string
description : |
ISO 3166-1 alpha-3 main country code in which the Deal is billed.
In some cases it's null.
- name : users_with_this_id_deal
data_type : integer
2024-09-12 15:38:50 +02:00
description : |
2024-09-04 16:03:36 +00:00
Informative field of how many Users have this same Deal associated.
- name : billing_countries_for_this_id_deal
data_type : integer
2024-09-12 15:38:50 +02:00
description : |
2024-09-04 16:03:36 +00:00
Informative field of how many different billing countries are
2024-09-12 15:38:50 +02:00
associated to this Deal based on the user account configuration.
2024-09-17 12:16:52 +02:00
- name : int_core__payaway
description : |
Contains all the PayAway plans, which are basically the settings for
host-takes-waiver plans with our host customers. All plans have a start
and end point in time, which means that any waivers that happen during
the range of plan should use the settings of this plan as a reference.
Plans can be open ended, as in not having a specified end in time. This
just means they are indefinitely active until someone changes it.
Plans can also have a planned end time which sits in the future.
columns :
- name : id_payaway_plan
data_type : bigint
description : "The unique id for this plan."
tests :
- not_null
- unique
- name : id_user_host
data_type : character varying
description : "The Superhog ID of the host user this record applies to."
- name : start_at_utc
data_type : timestamp without time zone
description :
The point in time in which this plan became active. It can never be
null .
- name : end_at_utc
data_type : timestamp without time zone
description :
The point in time in which this plan will stop being active. It can
be null, which means the plan has no planned end date yet. Should this
column have a value, it should always be after the start time of the
plan.
- name : has_no_end_date
data_type : boolean
description : Syntactic sugar for checking if the plan has a specified end date.
- name : payaway_percentage
data_type : numeric
description : |
The percentage of the Waiver payments that Superhog will keep as a
a fee. Should be between 0% and a 100%. 0% is a valid amount.
This means that the Superhog fee is computed as :
Waiver Amount * payaway_percentage.
If the amount that comes out of this calculation is smaller than the
amount in column payaway_minimum_commission_local_curr, then the
Superhog fee becomes payaway_minimum_commission_local_curr instead.
So, the final logic becomes :
MAX(
Waiver Amount * payaway_percentage,
payaway_minimum_commission_local_curr
)
- name : payaway_minimum_commission_local_curr
data_type : numeric
description :
The minimum fee that we take from each waiver payment, specified in
the currency of the guest payment (so if this record is in dollars, it
means it applies to guest payments made in dollars). We will never
charge less than this. This can be 0.
- name : currency
data_type : character varying
description :
The ISO 4217 code for the currency of this record. Must always be
filled, otherwise the records is meaningless.
tests :
- not_null
- name : created_at_utc
data_type : timestamp without time zone
description : Timestamp of when the pay away plan was created.
- name : updated_at_utc
data_type : timestamp without time zone
description : Timestamp of when the pay away plan to currency was last updated
- name : dwh_extracted_at_utc
data_type : timestamp with time zone
description : Timestamp of when this data was extracted into DWH.
Merged PR 3028: Adding int_core__user_product_bundle_contains_services
# Description
This PR adds a new table named `user_product_bundle_contains_services` in intermediate core.
Mainly, this table serves as a bridge between `user_product_bundle` and `product_services`. A `product_bundle` within `user_product_bundle` can contain 1 or several services, and this was stated in the field `contains_product_services`. The value of this field corresponds to the sum of `product_service_binary_tier` from the services that apply within that bundle. Even though the information is quite concise using this format, it adds extra complexity for analytical purposes, so this new table just duplicates the `user_product_bundle` main attributes as many times as services are contained.
For example:
`id_user_product_bundle` = 383 contains one unique bundle named Basic Program. This bundle has the `chosen_product_services` = 257, which can only be decomposed in power of 2 as of the sum of 256 + 1. This bundle therefore contains 2 services, Basic Screening (`product_service_binary_tier` = 1) and Waiver Pro (`product_service_binary_tier` = 256). Thus, in the new table, we will have 2 records and remove all this logic to something more standard, as seen in this screenshot:

# Checklist
- [X] The edited models and dependants run properly with production data.
- [X] The edited models are sufficiently documented.
- [ ] The edited models contain PK tests, and I've ran and passed them. *N/A - there's no PK in this table, but the combination of columns that should be unique is tested*
- [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: #20809
2024-10-02 14:54:03 +00:00
- name : int_core__user_product_bundle_contains_services
description : |
This table contains the information of "this user has a certain product bundle which
contains these services."
It's a denormalised relationship to break the power of 2 link between chosen_product_services
and product_service_binary_tier, which allows standard joins using the ids.
tests :
- dbt_utils.unique_combination_of_columns :
combination_of_columns :
- id_user_product_bundle
- id_product_service
columns :
- name : id_user_product_bundle
data_type : bigint
description : |
The identifier of the record for a user having a product bundle. It's the foreign key
pointing to user_product_bundle.
tests :
- not_null
- name : id_user_host
data_type : string
description : |
The Superhog ID of the host user this record applies to.
tests :
- not_null
- name : id_product_bundle
data_type : bigint
description : |
2024-10-31 15:45:28 +00:00
The identifier of the product bundle. Can be null if it's a custom bundle.
Merged PR 3028: Adding int_core__user_product_bundle_contains_services
# Description
This PR adds a new table named `user_product_bundle_contains_services` in intermediate core.
Mainly, this table serves as a bridge between `user_product_bundle` and `product_services`. A `product_bundle` within `user_product_bundle` can contain 1 or several services, and this was stated in the field `contains_product_services`. The value of this field corresponds to the sum of `product_service_binary_tier` from the services that apply within that bundle. Even though the information is quite concise using this format, it adds extra complexity for analytical purposes, so this new table just duplicates the `user_product_bundle` main attributes as many times as services are contained.
For example:
`id_user_product_bundle` = 383 contains one unique bundle named Basic Program. This bundle has the `chosen_product_services` = 257, which can only be decomposed in power of 2 as of the sum of 256 + 1. This bundle therefore contains 2 services, Basic Screening (`product_service_binary_tier` = 1) and Waiver Pro (`product_service_binary_tier` = 256). Thus, in the new table, we will have 2 records and remove all this logic to something more standard, as seen in this screenshot:

# Checklist
- [X] The edited models and dependants run properly with production data.
- [X] The edited models are sufficiently documented.
- [ ] The edited models contain PK tests, and I've ran and passed them. *N/A - there's no PK in this table, but the combination of columns that should be unique is tested*
- [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: #20809
2024-10-02 14:54:03 +00:00
- name : id_product_service
data_type : bigint
description : |
The identifier of the product service.
tests :
- not_null
- name : product_bundle_name
data_type : string
description : |
2024-11-15 10:04:02 +00:00
The name of the product bundle.
Merged PR 3028: Adding int_core__user_product_bundle_contains_services
# Description
This PR adds a new table named `user_product_bundle_contains_services` in intermediate core.
Mainly, this table serves as a bridge between `user_product_bundle` and `product_services`. A `product_bundle` within `user_product_bundle` can contain 1 or several services, and this was stated in the field `contains_product_services`. The value of this field corresponds to the sum of `product_service_binary_tier` from the services that apply within that bundle. Even though the information is quite concise using this format, it adds extra complexity for analytical purposes, so this new table just duplicates the `user_product_bundle` main attributes as many times as services are contained.
For example:
`id_user_product_bundle` = 383 contains one unique bundle named Basic Program. This bundle has the `chosen_product_services` = 257, which can only be decomposed in power of 2 as of the sum of 256 + 1. This bundle therefore contains 2 services, Basic Screening (`product_service_binary_tier` = 1) and Waiver Pro (`product_service_binary_tier` = 256). Thus, in the new table, we will have 2 records and remove all this logic to something more standard, as seen in this screenshot:

# Checklist
- [X] The edited models and dependants run properly with production data.
- [X] The edited models are sufficiently documented.
- [ ] The edited models contain PK tests, and I've ran and passed them. *N/A - there's no PK in this table, but the combination of columns that should be unique is tested*
- [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: #20809
2024-10-02 14:54:03 +00:00
tests :
- not_null
- name : product_service_name
data_type : string
description : |
2024-11-15 10:04:02 +00:00
The name of the product service.
Merged PR 3028: Adding int_core__user_product_bundle_contains_services
# Description
This PR adds a new table named `user_product_bundle_contains_services` in intermediate core.
Mainly, this table serves as a bridge between `user_product_bundle` and `product_services`. A `product_bundle` within `user_product_bundle` can contain 1 or several services, and this was stated in the field `contains_product_services`. The value of this field corresponds to the sum of `product_service_binary_tier` from the services that apply within that bundle. Even though the information is quite concise using this format, it adds extra complexity for analytical purposes, so this new table just duplicates the `user_product_bundle` main attributes as many times as services are contained.
For example:
`id_user_product_bundle` = 383 contains one unique bundle named Basic Program. This bundle has the `chosen_product_services` = 257, which can only be decomposed in power of 2 as of the sum of 256 + 1. This bundle therefore contains 2 services, Basic Screening (`product_service_binary_tier` = 1) and Waiver Pro (`product_service_binary_tier` = 256). Thus, in the new table, we will have 2 records and remove all this logic to something more standard, as seen in this screenshot:

# Checklist
- [X] The edited models and dependants run properly with production data.
- [X] The edited models are sufficiently documented.
- [ ] The edited models contain PK tests, and I've ran and passed them. *N/A - there's no PK in this table, but the combination of columns that should be unique is tested*
- [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: #20809
2024-10-02 14:54:03 +00:00
tests :
- not_null
2024-10-08 11:39:34 +00:00
- name : int_core__product_service_to_price
description : |
This model provides the information related to the prices of the different
product services in the scope of New Pricing. Each product service can have
prices in different currencies. Each price is storified and applies in the range
of starts to end. If the end date is null, then the price is currently active.
There is no possibility to allow custom pricing at user level.
tests :
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : ends_at_utc
column_B : starts_at_utc
or_equal : True
columns :
- name : id_product_service_to_price
data_type : integer
description : |
Identifier of the product service to price. Acts as the primary key for this table.
tests :
- unique
- not_null
- name : id_product_service
data_type : integer
description : |
Identifier of the product service.
tests :
- not_null
- name : payment_type
data_type : string
description : |
Type of the payment, namely if the price represents a
percentage or an amount.
tests :
- not_null
- accepted_values :
values :
- "AMOUNT"
- "PERCENTAGE"
- name : price_base_unit
data_type : string
description : |
Represents how the price value should be taken into account, either
if the price is representing the total amount at booking level or
it's a nightly fee.
tests :
- not_null
- accepted_values :
values :
- "PER BOOKING"
- "PER NIGHT"
- name : invoicing_trigger
data_type : string
description : |
Represents at which moment in time this service should be invoiced.
tests :
- not_null
- accepted_values :
values :
- "PRE-BOOKING"
- "POST-CHECKOUT"
- "AT WAIVER PAYMENT"
- "AT DEPOSIT PAYMENT"
- "N/A"
- name : currency_code
data_type : string
description :
Currency iso4217 code. It identifies the currency for the amount stated in
amount_local_curr.
tests :
- not_null
- name : amount_local_curr
data_type : decimal
description : |
Price amount of a given product service in the currency stated in id_currency.
tests :
- not_null
- name : product_service_price_name
data_type : string
description : |
The name given to a product service to price, for example "Waiver Pro Default Price".
- name : product_service_name
data_type : string
description : |
The name of the product service, for example "Waiver Pro".
2024-11-19 08:24:32 +00:00
- name : is_default_service
data_type : boolean
description : |
Flag that determines if the service is a default one (True)
or an upgraded service (False).
tests :
- not_null
2024-10-08 11:39:34 +00:00
- name : starts_at_utc
data_type : timestamp
description : |
Timestamp of when this product service to price starts to be active.
tests :
- not_null
- name : ends_at_utc
data_type : timestamp
description : |
Timestamp of when this product service to price ends to be active.
It can be null, thus meaning it's currently active.
- name : has_no_end_date
data_type : boolean
description : |
True when ends_at_utc is not set, false otherwise.
- name : created_at_utc
data_type : timestamp
description : |
Timestamp of when this product service to price was created.
- name : created_date_utc
data_type : date
description : |
Date of when this product service to price was created.
- name : updated_at_utc
data_type : timestamp
description : |
Timestamp of when this product service to price was last updated.
- name : updated_date_utc
data_type : date
description : |
Date of when this product service to price was last updated.
- name : dwh_extracted_at_utc
data_type : timestamp
description : |
Timestamp of when this data was extracted into DWH.
tests :
- not_null
2024-10-08 11:44:52 +00:00
- name : int_core__protection_plan_to_price
description : |
This model provides the information related to the prices of the different
protection plans in the scope of New Pricing. It does not contain the amounts being
protected, just how much it costs to purchase a given protection.
Each protection plan can have prices in different currencies. Each price is
storified and applies in the range of starts to end. If the end date is null,
then the price is currently active.
There is no possibility to allow custom pricing at user level.
tests :
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : ends_at_utc
column_B : starts_at_utc
or_equal : True
columns :
- name : id_protection_plan_to_price
data_type : integer
description : |
Identifier of the protection plan to price. Acts as the primary key for this table.
tests :
- unique
- not_null
- name : id_protection_plan
data_type : integer
description : |
Identifier of the protection plan.
tests :
- not_null
- name : payment_type
data_type : string
description : |
Type of the payment, namely if the price represents a
percentage or an amount.
tests :
- not_null
- accepted_values :
values :
- "AMOUNT"
- "PERCENTAGE"
- name : price_base_unit
data_type : string
description : |
Represents how the price value should be taken into account, either
if the price is representing the total amount at booking level or
it's a nightly fee.
tests :
- not_null
- accepted_values :
values :
- "PER BOOKING"
- "PER NIGHT"
- name : invoicing_trigger
data_type : string
description : |
Represents at which moment in time this service should be invoiced.
tests :
- not_null
- accepted_values :
values :
- "PRE-BOOKING"
- "POST-CHECKOUT"
- "AT WAIVER PAYMENT"
- "AT DEPOSIT PAYMENT"
- "N/A"
- name : currency_code
data_type : string
description :
Currency iso4217 code. It identifies the currency for the amount stated in
amount_local_curr.
tests :
- not_null
- name : amount_local_curr
data_type : decimal
description : |
Price amount of a given protection plan in the currency stated in id_currency.
tests :
- not_null
- name : protection_plan_price_name
data_type : string
description : |
The name given to a protection plan to price, for example "ProtectionPlus Default Price".
2024-11-19 08:24:32 +00:00
- name : protection_plan_name
2024-10-08 11:44:52 +00:00
data_type : string
description : |
The name of the protection plan, for example "ProtectionPlus".
2024-11-19 08:24:32 +00:00
- name : is_default_service
data_type : boolean
description : |
Flag that determines if the service is a default one (True)
or an upgraded service (False).
tests :
- not_null
2024-10-08 11:44:52 +00:00
- name : starts_at_utc
data_type : timestamp
description : |
Timestamp of when this protection plan to price starts to be active.
tests :
- not_null
- name : ends_at_utc
data_type : timestamp
description : |
Timestamp of when this protection plan to price ends to be active.
It can be null, thus meaning it's currently active.
- name : has_no_end_date
data_type : boolean
description : |
True when ends_at_utc is not set, false otherwise.
- name : created_at_utc
data_type : timestamp
description : |
Timestamp of when this protection plan to price was created.
- name : created_date_utc
data_type : date
description : |
Date of when this protection plan to price was created.
- name : updated_at_utc
data_type : timestamp
description : |
Timestamp of when this protection plan to price was last updated.
- name : updated_date_utc
data_type : date
description : |
Date of when this protection plan to price was last updated.
- name : dwh_extracted_at_utc
data_type : timestamp
description : |
Timestamp of when this data was extracted into DWH.
tests :
- not_null
- name : int_core__protection_plan_cover
description : |
This model provides the information related to the cover, or amount protected,
of the different protection plans in the scope of New Pricing.
Each protection plan can have amounts protected in different currencies.
There is no possibility to allow custom protection amounts at user level.
columns :
- name : id_protection_plan_cover
data_type : integer
description : |
Identifier of the protection plan cover. Acts as the primary key for this table.
tests :
- unique
- not_null
- name : id_protection_plan
data_type : integer
description : |
Identifier of the protection plan.
tests :
- not_null
- name : currency_code
data_type : string
description : Currency iso4217 code. It identifies the currency for the different protection covers.
tests :
- not_null
- name : baseline_protection_cover_local_curr
data_type : decimal
description : |
Baseline cover amount of a given protection plan in the currency stated in currency_code.
tests :
- not_null
- name : lower_protection_cover_local_curr
data_type : decimal
description : |
Lower cover amount of a given protection plan in the currency stated in currency_code.
tests :
- not_null
- name : maximum_protection_cover_local_curr
data_type : decimal
description : |
Maximum cover amount of a given protection plan in the currency stated in currency_code.
tests :
- not_null
- name : protection_plan_cover_name
data_type : string
description : |
The name given to a protection plan cover, for example "Basic Protection £50K".
- name : protection_plan_name
data_type : string
description : |
The name given to a protection plan, for example "Basic Protection".
- name : created_at_utc
data_type : timestamp
description : |
Timestamp of when this protection plan cover was created.
- name : created_date_utc
data_type : date
description : |
Date of when this protection plan cover was created.
- name : updated_at_utc
data_type : timestamp
description : |
Timestamp of when this protection plan cover was last updated.
- name : updated_date_utc
data_type : date
description : |
Date of when this protection plan cover was last updated.
- name : dwh_extracted_at_utc
data_type : timestamp
description : |
Timestamp of when this data was extracted into DWH.
tests :
- not_null
2024-11-15 10:04:02 +00:00
- name : int_core__booking_to_service
description : |
This model contains the information of which booking has a certain
service applied. It's a subset of all bookings since it only
applies to bookings that come from hosts that have been migrated into
the New Dash or New Pricing.
tests :
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : booking_check_out_at_utc
column_B : booking_check_in_at_utc
or_equal : True
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : service_detail_created_at_utc
column_B : booking_created_at_utc
or_equal : True
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : service_detail_updated_at_utc
column_B : service_detail_created_at_utc
or_equal : True
columns :
- name : id_booking
data_type : bigint
description : |
The identifier of the booking. Acts as Foreign Key to Booking table.
Cannot be null.
tests :
- not_null
- name : id_booking_service_detail
data_type : bigint
description : |
The identifier of the booking that has a certain service applied.
The same booking can have multiple services applied and would
have distinct id_booking_service_detail.
tests :
- not_null
- unique
2024-11-19 16:42:34 +00:00
- name : id_verification_request
data_type : bigint
description :
The identifier of the verification request. It acts as Foreign Key to
Verification Request table. It can be null.
2024-11-25 15:03:38 +00:00
- name : id_accommodation
data_type : bigint
description :
The identifier of the accommodation or listing. It acts as Foreign Key
to the Accommodation table. It cannot be null.
tests :
- not_null
- name : id_user_product_bundle
data_type : bigint
description :
The identifier of the Product Bundle, or program, that a User has applied
to the Booking. It acts as Foreign Key to the User Product Bundle table.
It cannot be null.
tests :
- not_null
2024-11-15 10:04:02 +00:00
- name : id_verification
data_type : bigint
description : |
The identifier of the verification. It acts as Foreign Key to Verification
table. It can be null.
- name : id_product_service
data_type : bigint
description : |
The identifier of the product service. It acts as Foreign Key to Product
Service table. It can be null.
- name : id_protection_plan
data_type : bigint
description : |
The identifier of the protection plan, aka protection service. It acts as
Foreign Key to Product Plan table. It can be null.
2024-11-19 16:42:34 +00:00
- name : id_deal
data_type : string
description : |
Unique identifier of the account. It can be null.
2024-11-19 08:24:32 +00:00
- name : id_user_host
2024-11-15 10:04:02 +00:00
data_type : string
description : |
2024-11-19 08:24:32 +00:00
Unique identifier of the user that acts as a Host.
2024-11-15 10:04:02 +00:00
tests :
- not_null
2024-11-19 08:24:32 +00:00
- name : id_user_guest
data_type : string
description : |
Unique identifier of the user that acts as a Guest.
Can be null if Superhog does not interact with the Guest.
2024-11-25 15:03:38 +00:00
- name : program_name
data_type : string
description : |
The name of the program, or product bundle, applied to the booking.
Cannot be null.
tests :
- not_null
2024-11-15 10:04:02 +00:00
- name : service_name
data_type : string
description : |
The name of the service applied within the booking. Cannot be null.
tests :
- not_null
2024-11-19 08:24:32 +00:00
- name : service_status
data_type : string
description : |
The status of the service applied within the booking. Cannot be null.
tests :
- not_null
- name : booking_status
data_type : string
description : |
The status of the overall booking. Cannot be null.
tests :
- not_null
2024-11-15 10:04:02 +00:00
- name : service_protection_amount
data_type : string
description : |
The amount protected given for the service applied within the booking.
Cannot be null.
tests :
- not_null
- name : service_detail_created_at_utc
data_type : timestamp
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when this Service record was created in the Backend.
2024-11-15 10:04:02 +00:00
tests :
- not_null
- name : service_detail_updated_at_utc
data_type : timestamp
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when this Service record was last updated in the Backend.
2024-11-15 10:04:02 +00:00
tests :
- not_null
- name : booking_created_at_utc
data_type : timestamp
description : |
2024-11-19 08:24:32 +00:00
Timestamp of when the Booking record was created in the Backend.
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : booking_created_date_utc
data_type : date
description : |
Date of when the Booking record was created in the Backend.
tests :
- not_null
2024-11-19 08:24:32 +00:00
- name : booking_updated_at_utc
data_type : timestamp
description : |
Timestamp of when the Booking record was last updated in the Backend.
2024-11-15 10:04:02 +00:00
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : booking_updated_date_utc
data_type : date
description : |
Date of when the Booking record was last updated in the Backend.
tests :
- not_null
2024-11-15 10:04:02 +00:00
- name : booking_check_in_at_utc
data_type : timestamp
description : |
Timestamp of the Check-in of the Booking.
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : booking_check_in_date_utc
data_type : timestamp
description : |
Date of the Check-in of the Booking.
tests :
- not_null
2024-11-15 10:04:02 +00:00
- name : booking_check_out_at_utc
data_type : timestamp
description : |
Timestamp of the Check-out of the Booking.
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : booking_check_out_date_utc
data_type : date
description : |
Date of the Check-out of the Booking.
tests :
- not_null
- name : booking_number_of_nights
data_type : integer
description : |
Number of nights between Check-in date and Check-out date.
2024-11-19 08:24:32 +00:00
- name : host_currency_code
2024-11-15 10:04:02 +00:00
data_type : string
description : |
2024-11-19 08:24:32 +00:00
Iso 4217 currency code for the account of the Host.
It can be null.
2024-11-22 13:50:30 +00:00
- name : is_missing_id_deal
data_type : boolean
description : |
Flag to identify if the Host for this booking is missing
the Id Deal or not.
2024-11-19 16:42:34 +00:00
- name : is_user_in_new_dash
data_type : boolean
description : |
Flag to determine if this user host is in New Dash or not.
tests :
- not_null
- name : new_dash_version
data_type : string
description : |
For users that are in New Dash, specifies the New Dash Version
in which these users were moved or joined. It can be null if
the user is not in new dash.
- name : user_in_new_dash_since_timestamp_at_utc
data_type : timestamp
description : |
For users that are in New Dash, the effective date since
these users can be considered in New Dash. If the user
has moved from Old Dash, it will be the new_dash_move_at_utc.
If not, it will correspond to the joined_at_utc. It can be null
if the user is not in new dash.
2024-11-19 08:24:32 +00:00
- name : is_missing_host_currency_code
data_type : boolean
description : |
Flag to identify if the host is missing the currency code.
- name : is_booking_cancelled
data_type : boolean
description : |
Flag to identify if the booking has been cancelled or not.
- name : int_core__booking_service_detail
description : |
This model contains enriched information of the services that are applied within
a Booking. Specifically, contains both Booking and Services attributes, as well
as the unit and total prices at this specific moment in time. In other words,
it's the snapshot of the current status of the services applied to a Booking.
It's a subset of all bookings since it only applies to bookings that come from
hosts that have been migrated into the New Dash or New Pricing.
tests :
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : booking_check_out_at_utc
column_B : booking_check_in_at_utc
or_equal : True
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : service_detail_created_at_utc
column_B : booking_created_at_utc
or_equal : True
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : service_detail_updated_at_utc
column_B : service_detail_created_at_utc
or_equal : True
columns :
- name : id_booking
data_type : bigint
description : |
The identifier of the booking. Acts as Foreign Key to Booking table.
Cannot be null.
2024-11-15 10:04:02 +00:00
tests :
- not_null
2024-11-19 08:24:32 +00:00
- name : id_booking_service_detail
data_type : bigint
description : |
The identifier of the booking that has a certain service applied.
The same booking can have multiple services applied and would
have distinct id_booking_service_detail.
tests :
- not_null
- unique
- name : service_detail_created_at_utc
data_type : timestamp
description : |
Timestamp of when this Service record was created in the Backend.
tests :
- not_null
- name : service_detail_updated_at_utc
data_type : timestamp
description : |
Timestamp of when this Service record was last updated in the Backend.
tests :
- not_null
- name : booking_created_at_utc
data_type : timestamp
description : |
Timestamp of when the Booking record was created in the Backend.
tests :
- not_null
- name : booking_updated_at_utc
data_type : timestamp
description : |
Timestamp of when the Booking record was last updated in the Backend.
tests :
- not_null
- name : booking_check_in_at_utc
data_type : timestamp
description : |
Timestamp of the Check-in of the Booking.
tests :
- not_null
- name : booking_check_out_at_utc
data_type : timestamp
description : |
Timestamp of the Check-out of the Booking.
tests :
- not_null
- name : service_business_scope
2024-11-15 10:04:02 +00:00
data_type : string
description : |
2024-11-19 08:24:32 +00:00
Identifies the main business scope (Platform, Guest Products, APIs)
according to New Pricing documentation. Cannot be null.
tests :
- not_null
- accepted_values :
values :
- PLATFORM
- name : service_business_type
data_type : string
description : |
Identifies the service type (Screening, Deposit Management, Protection)
according to New Pricing documentation.
Cannot be null.
tests :
- not_null
- accepted_values :
values :
- SCREENING
- PROTECTION
- DEPOSIT_MANAGEMENT
- UNKNOWN
- name : service_source
data_type : string
description : |
Identifies the source of the information used (Product or Protection
based on how backend is modelled).
tests :
- not_null
- accepted_values :
values :
- PRODUCT
- PROTECTION
- UNKNOWN
- name : service_status
data_type : string
description : |
The status of the service applied within the booking. Cannot be null.
tests :
- not_null
- name : booking_status
data_type : string
description : |
The status of the overall booking. Cannot be null.
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : program_name
data_type : string
description : |
The name of the program, or product bundle, applied to the booking.
Cannot be null.
tests :
- not_null
2024-11-19 08:24:32 +00:00
- name : service_name
data_type : string
description : |
The name of the service applied within the booking. Cannot be null.
tests :
- not_null
- name : payment_type
data_type : string
description : |
Identifies if the service price unit is an actual amount or a percentage
of another value. It can be null if the host currency is not populated.
tests :
- accepted_values :
values :
- "AMOUNT"
- "PERCENTAGE"
- "UNKNOWN"
- name : price_base_unit
data_type : string
description : |
Identifies if the service price unit needs to be applied per booking or
per number of nights between check-in and check-out.
It can be null if the host currency is not populated.
tests :
- accepted_values :
values :
- "PER BOOKING"
- "PER NIGHT"
- "UNKNOWN"
- name : invoicing_trigger
data_type : string
description : |
Identifies the moment in time in which this service needs to be charged.
It can be null if the host currency is not populated.
tests :
- accepted_values :
values :
- "PRE-BOOKING"
- "POST-CHECKOUT"
- "AT WAIVER PAYMENT"
- "AT DEPOSIT PAYMENT"
- "N/A"
- "UNKNOWN"
- name : currency_code
data_type : string
description : |
Iso 4217 currency code that applies to the Service within the Booking.
2024-11-15 10:04:02 +00:00
It can be null.
2024-11-19 08:24:32 +00:00
- name : service_unit_price_local_curr
data_type : decimal
description : |
Identifies the service unit price in the local currency. Can be null.
- name : service_unit_price_in_gbp
data_type : decimal
description : |
2024-11-22 13:50:30 +00:00
This is an informative field, use at your own risk.
Identifies the service unit price converted to GBP. If the date of
the charge exists, it will use the latest charge date for the exchange
rate computation. If not, it will use the moment this service detail line
was created. It can be null. It can vary over time due to the currency rate
estimation in the future for charge dates, and can vary also because of
changes in the date used.
2024-11-19 08:24:32 +00:00
- name : service_total_price_in_gbp
data_type : decimal
description : |
Identifies the current total price of that service in a given
booking converted in GBP. Can be null. Can vary over time depending
on the service status, payments, etc, as well as it can vary over
time until the charge date due to the currency rate estimation in
the future.
2024-11-22 13:50:30 +00:00
- name : service_first_charge_date_utc
2024-11-19 08:24:32 +00:00
data_type : date
description : |
2024-11-22 13:50:30 +00:00
Identifies the first date in which the billing item for this service
is supposed to be charged. It can be null if no billing item is
available. If there's only one billing item, this field will contain
the same value as service_last_charge_date_utc.
- name : service_last_charge_date_utc
data_type : date
description : |
Identifies the last date in which the billing item for this service
is supposed to be charged. It can be null if no billing item is
available. If there's only one billing item, this field will contain
the same value as service_first_charge_date_utc.
2024-11-19 08:24:32 +00:00
- name : is_missing_currency_code
2024-11-15 10:04:02 +00:00
data_type : boolean
description : |
2024-11-19 08:24:32 +00:00
Flag to identify if the applied service is missing the currency code.
2024-11-22 13:50:30 +00:00
Cannot be null.
2024-11-19 08:24:32 +00:00
tests :
- not_null
- name : is_booking_cancelled
data_type : boolean
description : |
Flag to identify if the booking has been cancelled or not.
2024-11-22 13:50:30 +00:00
Cannot be null.
2024-11-19 08:24:32 +00:00
tests :
- not_null
- name : is_paid_service
data_type : boolean
description : |
2024-11-22 13:50:30 +00:00
Flag to identify it the service unit price is strictly
greater than 0 or not. Cannot be null.
2024-11-19 08:24:32 +00:00
tests :
- not_null
- name : is_upgraded_service
data_type : boolean
description : |
Flag to identify if the service is an upgraded version,
2024-11-22 13:50:30 +00:00
meaning, it's not a Basic Screening. Cannot be null.
tests :
- not_null
- name : is_missing_charge_date
data_type : boolean
description : |
Flag to identify if the service has no charge date.
Cannot be null.
2024-11-19 08:24:32 +00:00
tests :
- not_null
2024-11-19 16:42:34 +00:00
2024-11-22 13:50:30 +00:00
- name : is_service_charged_in_a_single_date
data_type : boolean
description : |
Flag to identify if the service is charged in a single date.
If True, it means that service_first_charge_date_utc contains
the same date as service_last_charge_date_utc. If False, these
fields will contain different dates. It can be null, thus meaning
there's no charge date at all.
2024-11-19 16:42:34 +00:00
- name : int_core__booking_summary
description : |
This model contains enriched information aggregated at Booking level regarding
the services that are applied within a Booking.
Specifically, contains both Booking and Services attributes (aggregated), as well
as the total price in GBP at this specific moment in time. In other words,
it's the snapshot of the current status of the Booking.
It's a subset of all bookings since it only applies to bookings that come from
hosts that have been migrated into the New Dash or New Pricing.
tests :
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : booking_check_out_at_utc
column_B : booking_check_in_at_utc
or_equal : True
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : number_of_applied_services
column_B : number_of_applied_paid_services
or_equal : True
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B :
column_A : number_of_applied_services
column_B : number_of_applied_upgraded_services
or_equal : True
columns :
- name : id_booking
data_type : bigint
description : |
The identifier of the booking. Acts as Primary Key to this table.
Cannot be null.
tests :
- not_null
- unique
- name : id_verification_request
data_type : bigint
description :
The identifier of the verification request. It acts as Foreign Key to
Verification Request table. It can be null.
2024-11-25 15:03:38 +00:00
- name : id_accommodation
data_type : bigint
description :
The identifier of the accommodation or listing. It acts as Foreign Key
to the Accommodation table. It cannot be null.
tests :
- not_null
- name : id_user_product_bundle
data_type : bigint
description :
The identifier of the Product Bundle, or program, that a User has applied
to the Booking. It acts as Foreign Key to the User Product Bundle table.
It cannot be null.
tests :
- not_null
2024-11-19 16:42:34 +00:00
- name : id_deal
data_type : string
description : |
Unique identifier of the account. It can be null.
- name : id_user_host
data_type : string
description : |
Unique identifier of the user that acts as a Host. Cannot be null.
tests :
- not_null
- name : id_user_guest
data_type : string
description : |
Unique identifier of the user that acts as a Guest.
Can be null if Superhog does not interact with the Guest.
- name : booking_status
data_type : string
description : |
The current status of the booking. Cannot be null.
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : program_name
data_type : string
description : |
The name of the program, or product bundle, applied to the booking.
Cannot be null.
tests :
- not_null
2024-11-19 16:42:34 +00:00
- name : booking_created_at_utc
data_type : timestamp
description : |
Timestamp of when the Booking record was created in the Backend.
Cannot be null.
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : booking_created_date_utc
data_type : date
description : |
Date of when the Booking record was created in the Backend.
Cannot be null.
tests :
- not_null
2024-11-19 16:42:34 +00:00
- name : booking_updated_at_utc
data_type : timestamp
description : |
Timestamp of when the Booking record was last updated in the Backend.
Cannot be null.
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : booking_updated_date_utc
data_type : date
description : |
Date of when the Booking record was last updated in the Backend.
Cannot be null.
tests :
- not_null
2024-11-19 16:42:34 +00:00
- name : booking_check_in_at_utc
data_type : timestamp
description : |
Timestamp of the Check-in of the Booking.
Cannot be null.
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : booking_check_in_date_utc
data_type : timestamp
description : |
Date of the Check-in of the Booking.
Cannot be null.
tests :
- not_null
2024-11-19 16:42:34 +00:00
- name : booking_check_out_at_utc
data_type : timestamp
description : |
2024-11-25 15:03:38 +00:00
Timestamp of the Check-out of the Booking.
2024-11-19 16:42:34 +00:00
Cannot be null.
tests :
- not_null
2024-11-25 15:03:38 +00:00
- name : booking_check_out_date_utc
data_type : date
description : |
Date of the Check-out of the Booking.
tests :
- not_null
- name : booking_number_of_nights
data_type : integer
description : |
Number of nights between Check-in date and Check-out date.
2024-11-19 16:42:34 +00:00
- name : host_currency_code
data_type : string
description : |
Iso 4217 currency code for the account of the Host.
It can be null.
- name : is_user_in_new_dash
data_type : boolean
description : |
Flag to determine if this user host is in New Dash or not.
tests :
- not_null
- name : new_dash_version
data_type : string
description : |
For users that are in New Dash, specifies the New Dash Version
in which these users were moved or joined. It can be null if
the user is not in new dash.
- name : user_in_new_dash_since_timestamp_at_utc
data_type : timestamp
description : |
For users that are in New Dash, the effective date since
these users can be considered in New Dash. If the user
has moved from Old Dash, it will be the new_dash_move_at_utc.
If not, it will correspond to the joined_at_utc. It can be null
if the user is not in new dash.
- name : booking_total_price_in_gbp
data_type : decimal
description : |
Identifies the current total price of the booking by adding up the
prices of each service applied to this booking, converted in GBP.
Can be null. Can vary over time depending on the service status,
payments, etc, as well as it can vary over time until the charge
date due to the currency rate estimation in the future.
- name : first_service_charge_date_utc
data_type : date
description : |
Identifies the first moment in time in which the first
service applied to this booking is charged.
- name : last_service_charge_date_utc
data_type : date
description : |
Identifies the last moment in time in which the last
service applied to this booking is charged.
- name : first_service_detail_created_at_utc
data_type : timestamp
description : |
Timestamp corresponding to the first creation of a Service
record applied to this Booking, according to the Backend.
tests :
- not_null
- name : last_service_detail_created_at_utc
data_type : timestamp
description : |
Timestamp corresponding to the latest creation of a Service
record applied to this Booking, according to the Backend.
tests :
- not_null
- name : last_service_detail_updated_at_utc
data_type : timestamp
description : |
Timestamp corresponding to the latest update on any Service
record applied to this Booking, according to the Backend.
tests :
- not_null
- name : number_of_applied_services
data_type : integer
description : |
Total number of Services applied to this Booking.
- name : number_of_applied_paid_services
data_type : integer
description : |
Total number of Services that require a monetary
income to Superhog applied to this Booking.
- name : number_of_applied_upgraded_services
data_type : integer
description : |
Total number of Services different from Basic Screening
applied to this Booking.
2024-11-22 13:50:30 +00:00
- name : is_booking_charged
data_type : boolean
description : |
Flag to identify it the Booking is charged or not.
In essence, it solves the question : are we getting money out
of this booking, or not?
To be considered as charged, a charge date needs to exist as
well as the total price converted to GBP needs to be strictly
greater than 0. The fact that a booking is not charged does
not necessarily mean that it won't be in the future. It cannot
be null.
tests :
- not_null
2024-11-19 16:42:34 +00:00
- name : is_missing_currency_code_in_service_detail
data_type : boolean
description : |
Flag to identify if the currency code is missing in any
Booking Service Detail record for this Booking.
- name : is_booking_cancelled
data_type : boolean
description : |
Flag to identify if the booking has been cancelled or not.
- name : has_paid_services
data_type : boolean
description : |
Flag to identify if the booking has any paid service or not.
- name : has_upgraded_services
data_type : boolean
description : |
Flag to identify if the booking has any service different from
Basic Screening or not.
- name : has_screening_service_business_type
data_type : boolean
description : |
Flag to identify if the booking contains any Screening service
or not.
- name : has_deposit_management_service_business_type
data_type : boolean
description : |
Flag to identify if the booking contains any Deposit
Management service or not.
- name : has_protection_service_business_type
data_type : boolean
description : |
Flag to identify if the booking contains any Protection
service or not.
- name : is_missing_id_deal
data_type : boolean
description : |
Flag to identify if the Host for this booking is missing
the Id Deal or not.
- name : is_missing_host_currency_code
data_type : boolean
description : |
Flag to identify if the Host for this booking is missing
the currency code or not.
2024-11-22 10:28:42 +00:00
- name : int_core__product_service_billing_item
description : |
Provides the Billing Items for Product Services in the scope of
New Dashboard and New Pricing initiative.
columns :
- name : id_product_service_billing_item
data_type : integer
description : |
Identifier of the Product Service Billing Item. Acts as the primary key for this table.
tests :
- unique
- not_null
- name : id_booking
data_type : integer
description : |
Identifier of the booking. Acts as foreign key for the Booking table.
A Booking can have multiple Billing Items applied. Cannot be null.
tests :
- not_null
- name : id_product_service_to_price
data_type : integer
description : |
Identifier of the product service to price. Acts as foreign key for the
Product Service To Price table. Cannot be null.
tests :
- not_null
- name : id_product_service
data_type : integer
description : |
Identifier of the product service. Acts as foreign key for the
Product Service table. Cannot be null.
tests :
- not_null
- name : service_name
data_type : string
description : |
The name of the service billed for this booking. Cannot be null.
For example : WAIVER PRO.
tests :
- not_null
- name : service_price_name
data_type : string
description : |
The name given to the price for the service billed for this booking.
For example : WAIVER PRO DEFAULT PRICE.
- name : booking_status
data_type : string
description : |
The current status of the booking. Cannot be null.
tests :
- not_null
- name : currency_code
data_type : string
description :
Currency iso4217 code. It identifies the currency for the amount stated in
amount_local_curr. It cannot be null.
tests :
- not_null
- name : amount_local_curr
data_type : decimal
description : |
Price of the Billing Item, in local currency. It can be positive or negative,
depending on if the line aims to add or remove a previously created amount.
tests :
- not_null
2024-11-22 13:50:30 +00:00
- name : amount_in_gbp
data_type : decimal
description : |
Price of the Billing Item, in GBP. It uses the exchange rate according to
chargeable date. It can be positive or negative, depending on if the
line aims to add or remove a previously created amount.
tests :
- not_null
2024-11-22 10:28:42 +00:00
- name : chargeable_at_utc
data_type : timestamp
description : |
Timestamp of when this Product Service Billing Item can be charged.
tests :
- not_null
- name : chargeable_date_utc
data_type : date
description : |
Date of when this Product Service Billing Item can be charged.
tests :
- not_null
- name : created_at_utc
data_type : timestamp
description : |
Timestamp of when this Product Service Billing Item record was created.
tests :
- not_null
- name : created_date_utc
data_type : date
description : |
Date of when this Product Service Billing Item record was created.
tests :
- not_null
- name : updated_at_utc
data_type : timestamp
description : |
Timestamp of when this Product Service Billing Item record was last updated.
tests :
- not_null
- name : updated_date_utc
data_type : date
description : |
Date of when this Product Service Billing Item record was last updated.
tests :
- not_null
- name : int_core__protection_plan_billing_item
description : |
Provides the Billing Items for Protection Plans in the scope of
New Dashboard and New Pricing initiative.
columns :
- name : id_protection_plan_billing_item
data_type : integer
description : |
Identifier of the Protection Plan Billing Item. Acts as the primary key for this table.
tests :
- unique
- not_null
- name : id_booking
data_type : integer
description : |
Identifier of the booking. Acts as foreign key for the Booking table.
A Booking can have multiple Billing Items applied. Cannot be null.
tests :
- not_null
- name : id_protection_plan_to_price
data_type : integer
description : |
Identifier of the protection plan to price. Acts as foreign key for the
Protection Plan To Price table. Cannot be null.
tests :
- not_null
- name : id_protection_plan
data_type : integer
description : |
Identifier of the protection plan. Acts as foreign key for the
Protection Plan table. Cannot be null.
tests :
- not_null
- name : service_name
data_type : string
description : |
The name of the service billed for this booking. Cannot be null.
For example : BASIC PROTECTION.
tests :
- not_null
- name : service_price_name
data_type : string
description : |
The name given to the price for the service billed for this booking.
For example : BASIC PROTECTION DEFAULT PRICE.
- name : booking_status
data_type : string
description : |
The current status of the booking. Cannot be null.
tests :
- not_null
- name : currency_code
data_type : string
description :
Currency iso4217 code. It identifies the currency for the amount stated in
amount_local_curr. It cannot be null.
tests :
- not_null
- name : amount_local_curr
data_type : decimal
description : |
Price of the Billing Item, in local currency. It can be positive or negative,
depending on if the line aims to add or remove a previously created amount.
tests :
- not_null
2024-11-22 13:50:30 +00:00
- name : amount_in_gbp
data_type : decimal
description : |
Price of the Billing Item, in GBP. It uses the exchange rate according to
chargeable date. It can be positive or negative, depending on if the
line aims to add or remove a previously created amount.
tests :
- not_null
2024-11-22 10:28:42 +00:00
- name : chargeable_at_utc
data_type : timestamp
description : |
Timestamp of when this Protection Plan Billing Item can be charged.
tests :
- not_null
- name : chargeable_date_utc
data_type : date
description : |
Date of when this Protection Plan Billing Item can be charged.
tests :
- not_null
- name : created_at_utc
data_type : timestamp
description : |
Timestamp of when this Protection Plane Billing Item record was created.
tests :
- not_null
- name : created_date_utc
data_type : date
description : |
Date of when this Protection Plan Billing Item record was created.
tests :
- not_null
- name : updated_at_utc
data_type : timestamp
description : |
Timestamp of when this Protection Plan Billing Item record was last updated.
tests :
- not_null
- name : updated_date_utc
data_type : date
description : |
Date of when this Protection Plan Billing Item record was last updated.
tests :
- not_null