# Description This PR adds a new version to `int_core__check_in_cover_users`. The new version respectes the public interface of V1, but changes the strategy to determine which users get included in the list. Instead of relying on their account configuration (v1), v2 simply looks at whether they had any VR created offering CIH in the past 30 days. This approach changes the semantic of the model, but we deem the new one reasonable. The motivation behind this change is to ensure this models (1) keeps working after the activation of the Guest Products FF and (2) stays simple. Trying to follow a strategy where we look at both old and new configs was deemed very complex and didn't add much value. # 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: #30165
6500 lines
221 KiB
YAML
6500 lines
221 KiB
YAML
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.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: int_core__booking_charge_events
|
|
description: |
|
|
|
|
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
|
|
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.
|
|
|
|
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.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- name: id_price_plan
|
|
data_type: bigint
|
|
description: The id of the price plan that relates to this booking.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
|
|
- name: booking_fee_in_gbp
|
|
data_type: numeric
|
|
description: The fee to apply to the booking, in GBP.
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
|
|
- name: int_core__check_in_cover_prices
|
|
description: |
|
|
|
|
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.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
- name: checkin_cover_guest_fee_local_curr
|
|
data_type: numeric
|
|
description: |
|
|
The fee that the guest user must pay if he wants to purchase the
|
|
cover. This fee is tax inclusive if happen in a country in which
|
|
taxes are to be applied
|
|
|
|
- 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.
|
|
|
|
- name: int_core__unified_user
|
|
columns:
|
|
- name: id_user
|
|
data_type: character varying
|
|
description: The unique ID for the user.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
- name: id_account_type
|
|
data_type: bigint
|
|
description: |
|
|
The ID of the account type. Might be null and not necessarily up to date.
|
|
- name: account_type
|
|
data_type: character varying
|
|
description: |
|
|
The name of the account type. Might be null and not necessarily up to date.
|
|
- name: id_billing_country
|
|
data_type: bigint
|
|
description: The ID of the billing country. Can be null.
|
|
- name: billing_country_name
|
|
data_type: character varying
|
|
description: The name of the billing country. Can be null.
|
|
- name: billing_country_iso_2
|
|
data_type: char(2)
|
|
description: The ISO 3166-1 alpha-2 code of the billing country. Can be null.
|
|
- name: billing_country_iso_3
|
|
data_type: char(3)
|
|
description: The ISO 3166-1 alpha-3 code of the billing country. Can be null.
|
|
- name: account_currency_iso4217
|
|
data_type: char(3)
|
|
description: The ISO 4217 code of the account currency. Can be null.
|
|
- name: user_code
|
|
data_type: bigint
|
|
description: The user code.
|
|
- name: first_name
|
|
data_type: character varying
|
|
description: The first name of the user.
|
|
- name: last_name
|
|
data_type: character varying
|
|
description: The last name of the user.
|
|
- name: email
|
|
data_type: character varying
|
|
description: The email of the user.
|
|
- name: phone_number
|
|
data_type: character varying
|
|
description: The phone number of the user.
|
|
- name: title
|
|
data_type: character varying
|
|
description: The title of the user.
|
|
- name: id_deal
|
|
data_type: character varying
|
|
description: |
|
|
The ID of the deal of the user. It only applies to client accounts.
|
|
Can be null.
|
|
- name: is_deleted
|
|
data_type: boolean
|
|
description: |
|
|
True if the user has been deleted. False otherwise.
|
|
- name: joined_at_utc
|
|
data_type: timestamp
|
|
description: The timestamp when the user joined.
|
|
- name: joined_date_utc
|
|
data_type: date
|
|
description: The date when the user joined.
|
|
- name: user_name
|
|
data_type: character varying
|
|
description: The user name.
|
|
- name: code_prefix
|
|
data_type: character varying
|
|
description: The code prefix.
|
|
- name: billing_town
|
|
data_type: character varying
|
|
description: The billing town.
|
|
- name: company_name
|
|
data_type: character varying
|
|
description: The company name.
|
|
- name: is_email_confirmed
|
|
data_type: boolean
|
|
description: |
|
|
True if the email of the user has been confirmed. False otherwise.
|
|
- name: is_lockout_enabled
|
|
data_type: boolean
|
|
description: |
|
|
True if the lockout has been enabled. False otherwise.
|
|
- name: billing_postcode
|
|
data_type: character varying
|
|
description: The billing postcode.
|
|
- name: is_twofactor_enabled
|
|
data_type: boolean
|
|
description: |
|
|
True if the two-factor authentication has been enabled. False otherwise.
|
|
- name: access_failed_count
|
|
data_type: bigint
|
|
description: The access failed count.
|
|
- name: lockout_end_date_utc
|
|
data_type: timestamp
|
|
description: The lockout end date.
|
|
- name: avatar
|
|
data_type: character varying
|
|
description: The avatar of the user.
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: The timestamp when the user was created.
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: The date when the user was created.
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: The timestamp when the user was updated.
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: The date when the user was updated.
|
|
- name: verified_at_utc
|
|
data_type: timestamp
|
|
description: The timestamp when the user was verified.
|
|
- name: verified_date_utc
|
|
data_type: date
|
|
description: The date when the user was verified.
|
|
- name: number_of_properties
|
|
data_type: bigint
|
|
description: |
|
|
The number of properties according to the backend. For a better
|
|
figure we recommend using Hubspot data. For a real figure
|
|
of properties actually being active in our business, we recommend
|
|
using other sources of data.
|
|
- name: id_superhog_verified_set
|
|
data_type: bigint
|
|
description: The ID of the Superhog verified set.
|
|
- name: id_user_verification_status
|
|
data_type: bigint
|
|
description: The ID of the user verification status.
|
|
- name: is_test_account
|
|
data_type: boolean
|
|
description: |
|
|
True if the user is a test account. False otherwise.
|
|
Note that there might be other users that are test accounts
|
|
that are not controlled by this field. However it provides
|
|
a first level of filtering.
|
|
|
|
- name: int_core__vr_check_in_cover
|
|
description: |
|
|
This tables holds information on verification requests with Ckeck-in Hero
|
|
available for the guests.
|
|
|
|
The query has logic paths that cover both the Guest Products data model,
|
|
which started on June 2025, and the previous "CIH is a verification step"
|
|
model.
|
|
|
|
columns:
|
|
- name: id_verification_request
|
|
data_type: bigint
|
|
description:
|
|
"Unique, incremental, internal ID for the related verification
|
|
request."
|
|
data_tests:
|
|
- unique
|
|
- 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
|
|
description: "True if the verification request is considered
|
|
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
|
|
description: "Boolean to indicate if the cover was purchased by the guest or not."
|
|
|
|
- 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
|
|
description:
|
|
"The payment amount in the currency in which the transaction actually happened.
|
|
If the guest paid in Australian Dollars, this is measured in AUD."
|
|
|
|
- name: currency
|
|
data_type: text
|
|
description: "The currency in which the transaction actually happened."
|
|
|
|
- name: amount_in_gbp
|
|
data_type: numeric
|
|
description:
|
|
"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
|
|
description: "The status of the payment. It can be one of: Paid, Refunded, Refund Failed."
|
|
|
|
- name: payment_paid_date_utc
|
|
data_type: date
|
|
description: ""
|
|
|
|
- name: checkin_cover_limit_amount_local_curr
|
|
data_type: numeric
|
|
description:
|
|
"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
|
|
description:
|
|
"The amount for which the guest user is covered if he faces problems
|
|
during check-in in GBP."
|
|
|
|
- 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.
|
|
|
|
columns:
|
|
- name: id_verification_request
|
|
data_type: bigint
|
|
description: id of the verification request. It's the unique key for this model.
|
|
data_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
|
|
description: |
|
|
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
|
|
description: |
|
|
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
|
|
description: |
|
|
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
|
|
description: |
|
|
if the verification request can be considered as completed and all confirmed verifications are from
|
|
previous verification requests.
|
|
|
|
- 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.
|
|
|
|
columns:
|
|
- name: id_verification_request
|
|
data_type: bigint
|
|
description: id of the completed verification request. It's the unique key for this model.
|
|
data_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
|
|
data_type: date
|
|
description: estimated date from the timestamp of when the verification request was completed.
|
|
|
|
- name: is_completed_at_overriden_with_used_link_at
|
|
data_type: boolean
|
|
description: >
|
|
boolean indicating if the estimated dates have been overriden with the
|
|
used link since the initial computation was still considering an end
|
|
date before a starting date.
|
|
|
|
- name: int_core__country
|
|
description: |
|
|
This model contains information regarding countries, such as codes,
|
|
names and preferred currencies
|
|
|
|
columns:
|
|
- name: id_country
|
|
data_type: bigint
|
|
description: id of the country. It's the unique key for this model.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- name: iso_2
|
|
data_type: char(2)
|
|
description: ISO 3166-1 alpha-2 country code. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: iso_3
|
|
data_type: char(3)
|
|
description: |
|
|
ISO 3166-1 alpha-3 country code. Some countries can have this value as not set,
|
|
therefore it's nullable.
|
|
|
|
- name: country_name
|
|
data_type: character varying
|
|
description: name of the country. Cannot be null.
|
|
data_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
|
|
description: |
|
|
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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: preferred_currency_name
|
|
data_type: character varying
|
|
description: |
|
|
Currency name of the preferred currency for a given country.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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
|
|
listing was created.
|
|
|
|
columns:
|
|
- name: id_accommodation
|
|
data_type: bigint
|
|
description: Id of the accommodation or listing. It's the unique key for this model.
|
|
data_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)
|
|
description: ISO 3166-1 alpha-2 country code where the listing is located.
|
|
|
|
- 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.
|
|
Do not confuse this column with the lifecycle activity of a listing.
|
|
|
|
- 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: number_of_bedrooms
|
|
data_type: integer
|
|
|
|
- name: number_of_bathrooms
|
|
data_type: integer
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: Timestamp of when the listing was created. Cannot be null.
|
|
data_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.
|
|
|
|
- name: int_core__check_in_cover_users
|
|
latest_version: 1
|
|
|
|
description:
|
|
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.
|
|
|
|
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.
|
|
|
|
The new candidate version for this model, v2, changes the strategy to
|
|
define which hosts are offering check in cover. v1 used to look at
|
|
the verification set configurations and added hosts which had the cover in
|
|
it. v2 instead simply assumes that hosts that have had Guest Journeys
|
|
which offer the cover in the last 30 natural days are relevant. This is
|
|
simpler, but considered good enough. This decision was made as part of the
|
|
migration to the Guest Products data model, which would have made sticking
|
|
to the old way extremely complex and error prone.
|
|
|
|
versions:
|
|
- v: 1
|
|
- v: 2
|
|
columns:
|
|
- include: all
|
|
|
|
columns:
|
|
- name: id_user_host
|
|
data_type: character varying
|
|
description: Unique id value for the user
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- 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
|
|
description: Date the user first included check-in cover
|
|
|
|
- name: billing_town
|
|
data_type: character varying
|
|
description: ""
|
|
|
|
- name: company_name
|
|
data_type: character varying
|
|
description: ""
|
|
|
|
- name: int_core__guest_satisfaction_responses
|
|
description:
|
|
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
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- name: id_user_guest
|
|
data_type: character varying
|
|
description: Unique id value for the guest
|
|
|
|
- name: guest_email
|
|
data_type: character varying
|
|
description: Guest email
|
|
|
|
- name: verification_request_booking_source
|
|
data_type: text
|
|
description: Source type of host of the booking, this could be either;
|
|
- PMS
|
|
- OSL
|
|
- API/MANUAL
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- "PMS"
|
|
- "OSL"
|
|
- "API/MANUAL"
|
|
|
|
- name: experience_rating
|
|
data_type: bigint
|
|
description: Guest rating of their experience with Superhog from 1 to 5
|
|
|
|
- name: guest_comments
|
|
data_type: character varying
|
|
description: Guest comments on their experience with Superhog
|
|
|
|
- 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
|
|
description: Date and time of response creation
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp without time zone
|
|
description: Date and time of last update of response
|
|
|
|
- name: selected_payment_option
|
|
data_type: character varying
|
|
description: ""
|
|
|
|
- name: date_of_birth
|
|
data_type: numeric
|
|
description: ""
|
|
|
|
- name: age_of_guest
|
|
data_type: numeric
|
|
description: ""
|
|
|
|
- name: has_check_in_cover_payment
|
|
data_type: boolean
|
|
description: |
|
|
True if guest payed for check-in cover
|
|
|
|
- name: has_waiver_payment
|
|
data_type: boolean
|
|
description: |
|
|
True if guest payed the waiver
|
|
|
|
- name: has_deposit_payment
|
|
data_type: boolean
|
|
description: |
|
|
True if guest payed the deposit
|
|
|
|
- name: has_fee_payment
|
|
data_type: boolean
|
|
description: |
|
|
True if guest payed the fee
|
|
|
|
- name: int_core__verification_request_booking_source
|
|
description: This model contains information on verification requests
|
|
and the category type of host that manages the associated
|
|
booking.
|
|
For PMS (Property Manager System) we use the id_integration
|
|
from stg_core__booking, if it isn't Null then the host is PMS type.
|
|
For OSL (One Step Link) we use the id_one_step_link from
|
|
stg_core__verification_request, similarly if it isn't Null then
|
|
the host is OSL type.
|
|
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)
|
|
|
|
columns:
|
|
- 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
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- 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: verification_request_booking_source
|
|
data_type: text
|
|
description: Source type of host of the booking, this could be either;
|
|
- PMS
|
|
- OSL
|
|
- API/MANUAL
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- "PMS"
|
|
- "OSL"
|
|
- "API/MANUAL"
|
|
|
|
- name: int_core__verification_requests
|
|
description:
|
|
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
|
|
well as dates regarding the process of the guest journey like when it
|
|
was started or finished.
|
|
columns:
|
|
- name: id_verification_request
|
|
data_type: bigint
|
|
description:
|
|
Unique, incremental, internal ID for the related verification
|
|
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
|
|
description: True if the verification request is considered
|
|
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: ""
|
|
|
|
- name: verification_estimated_started_at_utc
|
|
data_type: timestamp without time zone
|
|
description: The estimated date and time at which the guest started the guest journey.
|
|
|
|
- name: verification_estimated_started_date_utc
|
|
data_type: date
|
|
description: The estimated date on which the guest started the guest journey.
|
|
|
|
- name: verification_estimated_completed_at_utc
|
|
data_type: timestamp without time zone
|
|
description: The estimated date and time at which the guest finished the guest journey.
|
|
|
|
- name: verification_estimated_completed_date_utc
|
|
data_type: date
|
|
description: The estimated date on which the guest finished the guest journey.
|
|
|
|
- name: link_used_at_utc
|
|
data_type: timestamp without time zone
|
|
description: The date and time at which the guest used the link for the verification.
|
|
|
|
- name: link_used_date_utc
|
|
data_type: date
|
|
description: The date on which the guest used the link for the verification.
|
|
|
|
- name: expire_at_utc
|
|
data_type: timestamp without time zone
|
|
description: The date and time at which the link for the verification expires.
|
|
|
|
- name: expire_date_utc
|
|
data_type: date
|
|
description: The date on which the link for the verification expires.
|
|
|
|
- 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
|
|
description: Source type of host of the booking, this could be either;
|
|
- PMS
|
|
- OSL
|
|
- API/MANUAL
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- "PMS"
|
|
- "OSL"
|
|
- "API/MANUAL"
|
|
|
|
- name: success_message
|
|
data_type: character varying
|
|
description: ""
|
|
|
|
- name: summary
|
|
data_type: character varying
|
|
description: ""
|
|
|
|
- name: rejection_reason
|
|
data_type: character varying
|
|
description: Reason as to why the guest was rejected.
|
|
|
|
- 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
|
|
description: The date and time at which the verification process was created.
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: The date on which the verification process was created.
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp without time zone
|
|
description: The date and time at which the last update on the entry happened.
|
|
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: The date on which the last update on the entry happened.
|
|
|
|
- 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."
|
|
data_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
|
|
description: Source type of host of the booking, this could be either;
|
|
- PMS
|
|
- OSL
|
|
- API/MANUAL
|
|
- null (bookings without verification request)
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- "PMS"
|
|
- "OSL"
|
|
- "API/MANUAL"
|
|
|
|
- name: is_duplicate_booking
|
|
data_type: boolean
|
|
description: 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: is_duplicating_booking_with_id
|
|
data_type: bigint
|
|
description: "If is_duplicate_booking is True then gives id_booking"
|
|
|
|
- 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: 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
|
|
description: ""
|
|
|
|
- name: int_core__check_in_cover_listings
|
|
description: This model contains information about hosts and their listings
|
|
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.
|
|
|
|
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.
|
|
columns:
|
|
- name: id_user_host
|
|
data_type: character varying
|
|
description: Unique id value for the user
|
|
data_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
|
|
description: Date the user first included check-in cover
|
|
|
|
- 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."
|
|
data_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
|
|
description: "Count of how many Check-in covers have been
|
|
purchased for this accommodation"
|
|
|
|
- name: int_core__host_booking_fees
|
|
description: Bookings that have been processed by the Superhog backend.
|
|
Each record matches one booking and has information on host
|
|
booking fees, when they were charged and the currency used by
|
|
the host.
|
|
|
|
columns:
|
|
- name: id_booking
|
|
data_type: bigint
|
|
description: "The unique, Superhog generated id for this booking."
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_accommodation
|
|
data_type: bigint
|
|
description: The ID of the booked listing.
|
|
|
|
- name: booking_state
|
|
data_type: character varying
|
|
description:
|
|
"State in which the booking is, could be either of the following:
|
|
- Approved
|
|
- NotApproved
|
|
- Cancelled
|
|
- Rejected
|
|
- NoFlags
|
|
- Flagged
|
|
- IncompleteInformation"
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- "Approved"
|
|
- "NotApproved"
|
|
- "Cancelled"
|
|
- "Rejected"
|
|
- "NoFlags"
|
|
- "Flagged"
|
|
- "IncompleteInformation"
|
|
|
|
- name: is_duplicate_booking
|
|
data_type: boolean
|
|
description: |
|
|
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."
|
|
|
|
- name: booking_fee_in_gbp
|
|
data_type: numeric
|
|
description: "The fee to apply to the booking, in GBP"
|
|
|
|
- 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: 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
|
|
- ScreeningApi
|
|
- PropertyVerificationManager
|
|
- CheckInHeroApi
|
|
- CancellationApi
|
|
- ScreenAndProtectApi
|
|
- ResolutionApi
|
|
- StayDisruptApi
|
|
|
|
data_tests:
|
|
- dbt_utils.unique_combination_of_columns:
|
|
combination_of_columns:
|
|
- id_user
|
|
- role_name
|
|
|
|
columns:
|
|
- name: id_user
|
|
data_type: string
|
|
description: |
|
|
The identifier of the user. Can be duplicated if it has multiple roles.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: role_name
|
|
data_type: string
|
|
description: The name of the role a user has.
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- Host
|
|
- Platform
|
|
- EDeposit
|
|
- Guest
|
|
- Admin
|
|
- KnowYourGuest
|
|
- ScreeningApi
|
|
- PropertyVerificationManager
|
|
- CheckInHeroApi
|
|
- CancellationApi
|
|
- ScreenAndProtectApi
|
|
- ResolutionApi
|
|
- StayDisruptApi
|
|
|
|
- name: int_core__user_host
|
|
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
|
|
- CancellationApi
|
|
- CheckInHeroApi
|
|
- ScreenAndProtectApi
|
|
Additionally, any user that has any of these claim types will be considered as a Host:
|
|
- KygRegistrationSignUpType
|
|
- KygRegistrationIntegrationTypeName
|
|
- KygMvp
|
|
- NewDashVersion
|
|
Lastly, in case a user satisfies multiple conditions, it will only appear once in this table.
|
|
|
|
columns:
|
|
- name: id_user_host
|
|
data_type: character varying
|
|
description: The unique user ID for the Host.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
- name: account_type
|
|
data_type: string
|
|
description: |
|
|
Name of the account type. Can be null and might be not up-to-date.
|
|
- name: is_test_account
|
|
data_type: boolean
|
|
description: |
|
|
Flag to identify if the user is a test account.
|
|
Can be null and might be not up-to-date. Be aware that
|
|
this might not include all test accounts, but it provides
|
|
a first level of filtering.
|
|
- name: id_billing_country
|
|
data_type: integer
|
|
description: |
|
|
ID of the country in which the Host is billed.
|
|
In some cases it's null.
|
|
- 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.
|
|
In some cases it's null.
|
|
- name: account_currency_iso4217
|
|
data_type: string
|
|
description: |
|
|
3 character currency code linked to the account.
|
|
In some cases it's null.
|
|
- 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.
|
|
- name: has_active_pms
|
|
data_type: boolean
|
|
description: |
|
|
Does the host have an active associated PMS.
|
|
data_tests:
|
|
- not_null
|
|
- name: active_pms_list
|
|
data_type: string
|
|
description: |
|
|
Name of the active PMS associated with the host. It can have more than
|
|
one PMS associated with it. It can be null if it doesn't have any PMS associated.
|
|
- 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.
|
|
- name: joined_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when the Host user joined Superhog.
|
|
- name: joined_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the Host user joined Superhog.
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: The timestamp when the user was created.
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: The date when the user was created.
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: The timestamp when the user was updated.
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: The date when the user was updated.
|
|
- name: is_missing_id_deal
|
|
data_type: boolean
|
|
description: |
|
|
Flag to identify if a user is missing the id_deal (true) or
|
|
not (false).
|
|
- name: is_user_in_new_dash
|
|
data_type: boolean
|
|
description: |
|
|
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
|
|
data_type: string
|
|
description: |
|
|
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
|
|
data_type: date
|
|
description: |
|
|
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
|
|
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.
|
|
|
|
- name: int_core__new_dash_users
|
|
description: |
|
|
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.
|
|
|
|
columns:
|
|
- name: id_user_host
|
|
data_type: character varying
|
|
description: The unique user ID for the Host.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
- name: new_dash_version
|
|
data_type: string
|
|
description: |
|
|
The name of the New Dash version this user appeared firstly.
|
|
data_tests:
|
|
- not_null
|
|
- 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
|
|
data_type: date
|
|
description: |
|
|
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
|
|
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.
|
|
|
|
- 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.
|
|
|
|
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.
|
|
In order to be in use, the Product Bundle needs to be applied to a Listing.
|
|
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: |
|
|
The unique identifier of this table.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_product_bundle
|
|
data_type: int
|
|
description: |
|
|
The identifier of the Product Bundle associated to the user. The same Product
|
|
Bundle can be applied into many users. Can be null if the bundle is custom.
|
|
|
|
- name: id_protection_plan
|
|
data_type: int
|
|
description: |
|
|
The identifier of the Protection Plan. There's a 1 to 1 relationship between
|
|
a Product Bundle and a Protection Plan.
|
|
|
|
- name: product_bundle_name
|
|
data_type: string
|
|
description: |
|
|
The name of the Product Bundle.
|
|
|
|
- name: product_bundle_display_name
|
|
data_type: string
|
|
description: |
|
|
The name of the Product Bundle, better fit for visualisations.
|
|
|
|
- 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.
|
|
|
|
- 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
|
|
description: |
|
|
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
|
|
Basic Screening and the Waiver Pro.
|
|
|
|
- name: product_bundle_services
|
|
data_type: string
|
|
description: |
|
|
List of services that are included in this bundle, separated by "|", ordered alphabetically.
|
|
|
|
- name: original_starts_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: original_ends_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
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
|
|
description: |
|
|
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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: effective_end_date_utc
|
|
data_type: date
|
|
description: |
|
|
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
|
|
description: |
|
|
Flag to determine if the end date is filled or not.
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this User has Product Bundle was created in the Backend.
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this User has Product Bundle was created in the Backend.
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this User has Product Bundle was last updated in the Backend.
|
|
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this User has Product Bundle was last updated in the Backend.
|
|
|
|
- name: is_custom_bundle
|
|
data_type: boolean
|
|
description: |
|
|
True if the bundle or program is custom, false if it's a default one.
|
|
|
|
- name: has_billable_services
|
|
data_type: boolean
|
|
description: |
|
|
True if the bundle or program contains at least one billable service, false
|
|
otherwise.
|
|
|
|
- name: has_upgraded_services
|
|
data_type: boolean
|
|
description: |
|
|
True if the bundle or program contains at least one service different than
|
|
the default one, false otherwise.
|
|
|
|
- name: dwh_extracted_at
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this record was ingested from the Backend to the DWH.
|
|
|
|
- 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
|
|
the New Dash. Only the latest product bundle associated to the booking
|
|
is shown.
|
|
|
|
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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: product_bundle_name
|
|
data_type: string
|
|
description: |
|
|
The name of the Product Bundle.
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Booking to Product Bundle record was created in the Backend.
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Booking to Product Bundle record was created in the Backend.
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Booking to Product Bundle record was last updated in the Backend.
|
|
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Booking to Product Bundle record was last updated in the Backend.
|
|
|
|
- name: dwh_extracted_at
|
|
data_type: timestamp with timezone
|
|
description: |
|
|
Timestamp of when this record was ingested from the Backend to the DWH.
|
|
|
|
- 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.
|
|
|
|
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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: user_product_bundle_name
|
|
data_type: string
|
|
description: |
|
|
The name of the Product Bundle.
|
|
|
|
- name: original_starts_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: original_ends_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
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
|
|
description: |
|
|
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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: effective_end_date_utc
|
|
data_type: date
|
|
description: |
|
|
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
|
|
description: |
|
|
Flag to determine if the end date is filled or not.
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Accommodation to Product Bundle record was created in the Backend.
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Accommodation to Product Bundle record was created in the Backend.
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Accommodation to Product Bundle record was last updated in the Backend.
|
|
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Accommodation to Product Bundle record was last updated in the Backend.
|
|
|
|
- name: product_bundle_services
|
|
data_type: string
|
|
description: |
|
|
List of services that are included in the bundle applied to the listing,
|
|
separated by "|", ordered alphabetically.
|
|
|
|
- name: is_custom_bundle
|
|
data_type: boolean
|
|
description: |
|
|
True if the bundle or program applied to the listing is custom, false if it's a default one.
|
|
|
|
- name: has_billable_services
|
|
data_type: boolean
|
|
description: |
|
|
True if the bundle or program applied to the listing contains at least one billable service,
|
|
false otherwise.
|
|
|
|
- name: has_upgraded_services
|
|
data_type: boolean
|
|
description: |
|
|
True if the bundle or program applied to the listing contains at least one service different
|
|
than the default one, false otherwise.
|
|
|
|
- name: dwh_extracted_at
|
|
data_type: timestamp with timezone
|
|
description: |
|
|
Timestamp of when this record was ingested from the Backend to the DWH.
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- name: id_deal
|
|
data_type: character varying
|
|
description: The ID for the Deal.
|
|
|
|
- name: user_migration_phase
|
|
data_type: string
|
|
description: |
|
|
The migration phase in which this user was migrated, for informative
|
|
purposes.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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: user_estimated_migration_date_utc
|
|
data_type: date
|
|
description: |
|
|
The estimated date in which this user was migrated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: deal_lifecycle_state
|
|
data_type: character varying
|
|
description: |
|
|
Contains the lifecycle state of a deal. The accepted values are:
|
|
01-New, 02-Never Booked, 04-Active, 05-Churning, 06-Inactive,
|
|
07-Reactivated, 99-Not in Husbpot.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- 01-New
|
|
- 02-Never Booked
|
|
- 04-Active
|
|
- 05-Churning
|
|
- 06-Inactive
|
|
- 07-Reactivated
|
|
- 99-Not in HubSpot
|
|
|
|
- name: has_active_pms
|
|
data_type: boolean
|
|
description: |
|
|
Does the host have an active associated PMS.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: active_pms_list
|
|
data_type: string
|
|
description: |
|
|
Name of the active PMS associated with the host. It can have more than
|
|
one PMS associated with it. It can be null if it doesn't have any PMS associated.
|
|
|
|
- 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.
|
|
|
|
- name: email
|
|
data_type: string
|
|
description: |
|
|
Information about the host user.
|
|
|
|
- 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
|
|
segmentation).
|
|
|
|
- name: total_active_listings_with_active_product_bundle
|
|
data_type: integer
|
|
description: |
|
|
Count of active listings that currently have an active product bundle.
|
|
|
|
- name: total_active_listings_with_active_product_bundle_with_paid_service
|
|
data_type: integer
|
|
description: |
|
|
Count of active 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_active_listings_with_active_product_bundle_applied
|
|
data_type: integer
|
|
description: |
|
|
Integer-based flag version of
|
|
total_active_listings_with_active_product_bundle.
|
|
|
|
- name: has_active_listings_with_active_paid_service_applied
|
|
data_type: integer
|
|
description: |
|
|
Integer-based flag version of
|
|
total_active_listings_with_active_product_bundle_with_paid_service.
|
|
|
|
# To be deleted from here
|
|
- 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_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.
|
|
# To be deleted until here
|
|
- 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.
|
|
|
|
- name: has_bookings_with_product_bundle_with_paid_service
|
|
data_type: integer
|
|
description: |
|
|
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.
|
|
|
|
data_tests:
|
|
- dbt_utils.unique_combination_of_columns:
|
|
combination_of_columns:
|
|
- id_user_host
|
|
- id_price_plan
|
|
- active_in_month_start_date_utc
|
|
|
|
columns:
|
|
- name: id_price_plan
|
|
data_type: bigint
|
|
description: |
|
|
The unique identifier of this table, representing
|
|
the identifier of the price plan.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_user_host
|
|
data_type: string
|
|
description: |
|
|
The unique identifier of the user host that has
|
|
a price plan.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: price_plan_created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Original timestamp of when a given price plan
|
|
was created.
|
|
data_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 price plan
|
|
as active.
|
|
If we're interested in retrieving the information from
|
|
June, this date will be the 1st of June.
|
|
data_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 price plan
|
|
as active.
|
|
If we're interested in retrieving the information from
|
|
June, this date will be the 30th of June.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
- 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
|
|
end date, this table will only reflect activeness within months up to the
|
|
current month.
|
|
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_user_host
|
|
data_type: string
|
|
description: |
|
|
The unique identifier of the user host that has
|
|
a price plan.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: start_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Original timestamp of when a given plan started to be active.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: int_core__deal
|
|
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.
|
|
|
|
columns:
|
|
- name: id_deal
|
|
data_type: character varying
|
|
description: The unique ID for the Deal. One record per id_deal.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
- 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.
|
|
In some cases it's null.
|
|
- 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: has_active_pms
|
|
data_type: boolean
|
|
description: |
|
|
Does the deal have an active associated PMS.
|
|
data_tests:
|
|
- not_null
|
|
- name: active_pms_list
|
|
data_type: string
|
|
description: |
|
|
Name of the active PMS associated with the deal. It can have more than
|
|
one PMS associated with it. It can be null if it doesn't have any PMS associated.
|
|
- name: users_with_this_id_deal
|
|
data_type: integer
|
|
description: |
|
|
Informative field of how many Users have this same Deal associated.
|
|
- name: billing_countries_for_this_id_deal
|
|
data_type: integer
|
|
description: |
|
|
Informative field of how many different billing countries are
|
|
associated to this Deal based on the user account configuration.
|
|
- name: first_created_date_utc
|
|
data_type: date
|
|
description: |
|
|
First date corresponding to the user creation date for the users
|
|
that have this Deal associated.
|
|
- 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."
|
|
data_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.
|
|
data_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.
|
|
|
|
- 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 and protections."
|
|
It's a denormalised relationship to break the power of 2 link between
|
|
chosen_product_services/protection and product_binary_tier,
|
|
which allows standard joins using the ids.
|
|
|
|
data_tests:
|
|
- dbt_utils.unique_combination_of_columns:
|
|
combination_of_columns:
|
|
- id_user_product_bundle
|
|
- service_name
|
|
|
|
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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_user_host
|
|
data_type: string
|
|
description: |
|
|
The Superhog ID of the host user this record applies to.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_product_bundle
|
|
data_type: bigint
|
|
description: |
|
|
The identifier of the product bundle. Can be null if it's a custom bundle.
|
|
|
|
- name: id_service
|
|
data_type: bigint
|
|
description: |
|
|
The identifier of the service.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: service_source
|
|
data_type: string
|
|
description: |
|
|
The type of the service, which can be either "product" or "protection".
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- "PRODUCT"
|
|
- "PROTECTION"
|
|
|
|
- name: product_bundle_name
|
|
data_type: string
|
|
description: |
|
|
The name of the product bundle.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: service_business_type
|
|
data_type: string
|
|
description: |
|
|
Identifies the service type (Screening, Deposit Management, Protection
|
|
or Guest Agreement) according to New Pricing documentation.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- SCREENING
|
|
- DEPOSIT_MANAGEMENT
|
|
- GUEST_AGREEMENT
|
|
- PROTECTION
|
|
|
|
- name: is_default_service
|
|
data_type: boolean
|
|
description: |
|
|
Flag that determines if the service is a default one (True)
|
|
or an upgraded service (False).
|
|
|
|
- name: service_name
|
|
data_type: string
|
|
description: |
|
|
The display name of the service.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_billable_service
|
|
data_type: boolean
|
|
description: |
|
|
Flag that determines if the service is billable to the
|
|
host (True) or not (False).
|
|
|
|
- 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.
|
|
|
|
data_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.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
- name: id_product_service
|
|
data_type: integer
|
|
description: |
|
|
Identifier of the product service.
|
|
data_tests:
|
|
- not_null
|
|
- name: payment_type
|
|
data_type: string
|
|
description: |
|
|
Type of the payment, namely if the price represents a
|
|
percentage or an amount.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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".
|
|
- name: is_default_service
|
|
data_type: boolean
|
|
description: |
|
|
Flag that determines if the service is a default one (True)
|
|
or an upgraded service (False).
|
|
data_tests:
|
|
- not_null
|
|
- name: starts_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this product service to price starts to be active.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
data_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.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
- name: id_protection_plan
|
|
data_type: integer
|
|
description: |
|
|
Identifier of the protection plan.
|
|
data_tests:
|
|
- not_null
|
|
- name: payment_type
|
|
data_type: string
|
|
description: |
|
|
Type of the payment, namely if the price represents a
|
|
percentage or an amount.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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".
|
|
- name: protection_plan_name
|
|
data_type: string
|
|
description: |
|
|
The name of the protection plan, for example "ProtectionPlus".
|
|
- name: is_default_service
|
|
data_type: boolean
|
|
description: |
|
|
Flag that determines if the service is a default one (True)
|
|
or an upgraded service (False).
|
|
data_tests:
|
|
- not_null
|
|
- name: starts_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this protection plan to price starts to be active.
|
|
data_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.
|
|
data_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.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
- name: id_protection_plan
|
|
data_type: integer
|
|
description: |
|
|
Identifier of the protection plan.
|
|
data_tests:
|
|
- not_null
|
|
- name: currency_code
|
|
data_type: string
|
|
description: Currency iso4217 code. It identifies the currency for the different protection covers.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
|
|
- 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.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
data_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: program_name
|
|
data_type: string
|
|
description: |
|
|
The name of the program, or product bundle, applied to the booking.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: service_name
|
|
data_type: string
|
|
description: |
|
|
The name of the service applied within the booking. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: service_status
|
|
data_type: string
|
|
description: |
|
|
The status of the service applied within the booking. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_status
|
|
data_type: string
|
|
description: |
|
|
The status of the overall booking. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: service_protection_amount
|
|
data_type: string
|
|
description: |
|
|
The amount protected given for the service applied within the booking.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: service_detail_created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Service record was created in the Backend.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when the Booking record was created in the Backend.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_created_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the Booking record was created in the Backend.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when the Booking record was last updated in the Backend.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_updated_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the Booking record was last updated in the Backend.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_check_in_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of the Check-in of the Booking.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_check_in_date_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Date of the Check-in of the Booking.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_check_out_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of the Check-out of the Booking.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_check_out_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of the Check-out of the Booking.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_number_of_nights
|
|
data_type: integer
|
|
description: |
|
|
Number of nights between Check-in date and Check-out date.
|
|
|
|
- name: host_currency_code
|
|
data_type: string
|
|
description: |
|
|
Iso 4217 currency code for the account of the Host.
|
|
It can be null.
|
|
|
|
- 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_user_in_new_dash
|
|
data_type: boolean
|
|
description: |
|
|
Flag to determine if this user host is in New Dash or not.
|
|
data_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: 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.
|
|
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when the Booking record was created in the Backend.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when the Booking record was last updated in the Backend.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_check_in_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of the Check-in of the Booking.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_check_out_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of the Check-out of the Booking.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: service_business_scope
|
|
data_type: string
|
|
description: |
|
|
Identifies the main business scope (Platform, Guest Products, APIs)
|
|
according to New Pricing documentation. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- PLATFORM
|
|
|
|
- name: service_business_type
|
|
data_type: string
|
|
description: |
|
|
Identifies the service type (Screening, Deposit Management, Protection
|
|
or Guest Agreement) according to New Pricing documentation.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- SCREENING
|
|
- PROTECTION
|
|
- DEPOSIT_MANAGEMENT
|
|
- GUEST_AGREEMENT
|
|
- UNKNOWN
|
|
|
|
- name: service_source
|
|
data_type: string
|
|
description: |
|
|
Identifies the source of the information used (Product or Protection
|
|
based on how backend is modelled).
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: booking_status
|
|
data_type: string
|
|
description: |
|
|
The status of the overall booking. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: program_name
|
|
data_type: string
|
|
description: |
|
|
The name of the program, or product bundle, applied to the booking.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: service_name
|
|
data_type: string
|
|
description: |
|
|
The name of the service applied within the booking. Cannot be null.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
It can be null.
|
|
|
|
- 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: |
|
|
This is an informative field, use at your own risk.
|
|
Identifies the service unit price converted to GBP. If the date of
|
|
the chargeable exists, it will use the latest chargeable 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 chargeable dates, and can vary also because of
|
|
changes in the date used.
|
|
|
|
- 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 chargeable date due to the currency rate estimation in
|
|
the future.
|
|
|
|
- name: service_first_chargeable_date_utc
|
|
data_type: date
|
|
description: |
|
|
Identifies the first date in which the billing item for this service
|
|
is supposed to be charged or when the guest payment happens.
|
|
It can be null if no service supposed to be charged is available.
|
|
If there's only one chargeable service, this field will contain
|
|
the same value as service_last_chargeable_date_utc.
|
|
|
|
- name: service_last_chargeable_date_utc
|
|
data_type: date
|
|
description: |
|
|
Identifies the last date in which the billing item for this service
|
|
is supposed to be charged or when the guest payment happens.
|
|
It can be null if no service supposed to be charged is available.
|
|
If there's only one chargeable service, this field will contain
|
|
the same value as service_first_chargeable_date_utc.
|
|
|
|
- name: service_first_billable_date_utc
|
|
data_type: date
|
|
description: |
|
|
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_billable_date_utc.
|
|
It's similar to Chargeable Services logic but it only considers
|
|
Billable Services to the Host (excluding Guest Payments and free services).
|
|
|
|
- name: service_last_billable_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_billable_date_utc.
|
|
It's similar to Chargeable Services logic but it only considers
|
|
Billable Services to the Host (excluding Guest Payments and free services).
|
|
|
|
- name: is_missing_currency_code
|
|
data_type: boolean
|
|
description: |
|
|
Flag to identify if the applied service is missing the currency code.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_booking_cancelled
|
|
data_type: boolean
|
|
description: |
|
|
Flag to identify if the booking has been cancelled or not.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_paid_service
|
|
data_type: boolean
|
|
description: |
|
|
Flag to identify it the service unit price is strictly
|
|
greater than 0 or not. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_upgraded_service
|
|
data_type: boolean
|
|
description: |
|
|
Flag to identify if the service is an upgraded version,
|
|
meaning, it's not a Basic Screening. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_billable_service
|
|
data_type: boolean
|
|
description: |
|
|
Flag that determines if the service is billable or not.
|
|
If the service is billable, it is supposed to be included in the
|
|
invoice to the host.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_missing_chargeable_date
|
|
data_type: boolean
|
|
description: |
|
|
Flag to identify if the service has no chargeable date.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_service_chargeable_in_a_single_date
|
|
data_type: boolean
|
|
description: |
|
|
Flag to identify if the service is chargeable in a single date.
|
|
If True, it means that service_first_chargeable_date_utc contains
|
|
the same date as service_last_chargeable_date_utc. If False, these
|
|
fields will contain different dates. It can be null, thus meaning
|
|
there's no chargeable date at all.
|
|
|
|
- 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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: chargeable_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Product Service Billing Item can be charged.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: chargeable_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Product Service Billing Item can be charged.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Product Service Billing Item record was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Product Service Billing Item record was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Product Service Billing Item record was last updated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Product Service Billing Item record was last updated.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: chargeable_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Protection Plan Billing Item can be charged.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: chargeable_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Protection Plan Billing Item can be charged.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Protection Plane Billing Item record was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Protection Plan Billing Item record was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this Protection Plan Billing Item record was last updated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this Protection Plan Billing Item record was last updated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: int_core__ab_test_tracking_guest_journey
|
|
description: |
|
|
Provides the A/B test tracking of a given Verification Request, aka Guest Journey.
|
|
For those Guest Journeys that are subject to A/B testing through Feature Flagging,
|
|
this table will provide the id of the verification request, the A/B test name in
|
|
which is in and the variation, as well as additional metadata.
|
|
|
|
This table already contains cleaning of multi-variant guest journeys and disablement
|
|
of the feature flag (A/B test) itself, so should be quite ready to use.
|
|
|
|
data_tests:
|
|
- dbt_utils.unique_combination_of_columns:
|
|
combination_of_columns:
|
|
- id_verification_request
|
|
- ab_test_name
|
|
|
|
columns:
|
|
- name: id_verification_request
|
|
data_type: integer
|
|
description: |
|
|
Identifier of the Verification Request. Acts as foreign key to the Verification Request table.
|
|
It can be duplicated across different Feature Flags - meaning the same verification request
|
|
can be part of none, one, or several A/B tests.
|
|
In this table, a Verification Request or Guest Journey can only appear once per A/B test.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: ab_test_name
|
|
data_type: string
|
|
description: |
|
|
Name of the Guest Journey A/B test. It corresponds to the Feature Flag Name in the
|
|
backend. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: variation
|
|
data_type: string
|
|
description: |
|
|
Identifier of the variation a given Verification Request is in, within a
|
|
given Guest Journey A/B test. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: first_appearance_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of the first Verification Request Feature Flag record created
|
|
with the same verification request and A/B test name. Mostly for information
|
|
purposes. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: last_appearance_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of the last Verification Request Feature Flag record created
|
|
with the same verification request and A/B test name. Mostly for information
|
|
purposes. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: int_core__ab_test_monitoring_guest_journey
|
|
description: |
|
|
Provides the Guest Journey A/B test key information to build metric monitoring on top.
|
|
|
|
The purpose of this table is not to compute the metrics themselves, but rather leave
|
|
a bit of open possibilities for whenever we're analysing results later on. This is
|
|
already materialised to avoid running long queries in the notebooks.
|
|
|
|
data_tests:
|
|
- dbt_utils.unique_combination_of_columns:
|
|
combination_of_columns:
|
|
- id_verification_request
|
|
- ab_test_name
|
|
|
|
columns:
|
|
- name: id_verification_request
|
|
data_type: integer
|
|
description: |
|
|
Identifier of the Verification Request. Acts as foreign key to the Verification Request table.
|
|
It can be duplicated across different Feature Flags - meaning the same verification request
|
|
can be part of none, one, or several A/B tests.
|
|
In this table, a Verification Request or Guest Journey can only appear once per A/B test.
|
|
Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: ab_test_name
|
|
data_type: string
|
|
description: |
|
|
Name of the Guest Journey A/B test. It corresponds to the Feature Flag Name in the
|
|
backend. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: variation
|
|
data_type: string
|
|
description: |
|
|
Identifier of the variation a given Verification Request is in, within a
|
|
given Guest Journey A/B test. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: first_appearance_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of the first Verification Request Feature Flag record created
|
|
with the same verification request and A/B test name. Mostly for information
|
|
purposes. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: first_appearance_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of the first Verification Request Feature Flag record created
|
|
with the same verification request and A/B test name. Mostly for information
|
|
purposes. Cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: verification_started_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the Guest Journey was started. Can be null.
|
|
|
|
- name: verification_completed_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the Guest Journey was completed. Can be null.
|
|
|
|
- name: experience_rating
|
|
data_type: integer
|
|
description: |
|
|
CSAT score value for the Guest Journey. Can be null.
|
|
|
|
- name: last_payment_paid_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the last paid payment on this Guest Journey
|
|
happened. Can be null.
|
|
|
|
- name: guest_revenue_without_taxes_in_gbp
|
|
data_type: float
|
|
description: |
|
|
Total guest revenue paid without taxes in GBP, including Deposit
|
|
Fees, Waiver Fees and Check-In Cover fees. Can be null.
|
|
|
|
- name: deposit_fees_without_taxes_in_gbp
|
|
data_type: float
|
|
description: |
|
|
Deposit fees revenue paid without taxes in GBP.
|
|
Can be null.
|
|
|
|
- name: waiver_fees_without_taxes_in_gbp
|
|
data_type: float
|
|
description: |
|
|
Waiver fees revenue paid without taxes in GBP.
|
|
Can be null.
|
|
|
|
- name: check_in_cover_fees_without_taxes_in_gbp
|
|
data_type: float
|
|
description: |
|
|
Check-in Cover fees revenue paid without taxes in GBP.
|
|
Can be null.
|
|
|
|
- name: int_core__screen_and_protect_users
|
|
description: |
|
|
"Contains information about Screen & Protect API users.
|
|
It includes all user details related with the service."
|
|
columns:
|
|
- name: id_apim_user
|
|
data_type: character varying
|
|
description: "Identifier of the User. Acts as primary
|
|
key for this table."
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- name: id_apim_user_type
|
|
data_type: bigint
|
|
description: "Identifier of the type of user."
|
|
|
|
- name: id_currency
|
|
data_type: bigint
|
|
description: "Id of the currency, works as a foreign key to the
|
|
currency table"
|
|
data_tests:
|
|
- not_null
|
|
- relationships:
|
|
to: ref('stg_core__currency')
|
|
field: id_currency
|
|
|
|
- name: id_deal
|
|
data_type: text
|
|
description: ""
|
|
|
|
- name: account_type
|
|
data_type: text
|
|
description: ""
|
|
|
|
- name: client_markup
|
|
data_type: text
|
|
description: ""
|
|
|
|
- name: tech_email_address
|
|
data_type: text
|
|
description: ""
|
|
|
|
- name: invoicing_email_address
|
|
data_type: text
|
|
description: ""
|
|
|
|
- name: is_protected
|
|
data_type: boolean
|
|
description: |
|
|
Indicates if the user's bookings are protected or not.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: price_increase_percentage
|
|
data_type: numeric
|
|
description: The percentage or value of the price increase
|
|
applied to the user's account.
|
|
data_tests:
|
|
- dbt_expectations.expect_column_values_to_be_between:
|
|
min_value: 0
|
|
strictly: true
|
|
|
|
- name: price_increase_start_date_utc
|
|
data_type: date
|
|
description: The date when the price increase becomes effective.
|
|
This is the first day of the month.
|
|
data_tests:
|
|
- is_first_day_of_month
|
|
|
|
- name: monthly_volume_discount_percentage
|
|
data_type: numeric
|
|
description: The discount percentage or value offered based on the
|
|
volume of bookings achieved within a month.
|
|
No user can have more than one discount per month.
|
|
data_tests:
|
|
- dbt_expectations.expect_column_values_to_be_between:
|
|
min_value: 0
|
|
max_value: 100
|
|
strictly: true
|
|
|
|
- name: threshold_approved_or_flagged_booking_volume
|
|
data_type: numeric
|
|
description: The minimum number of bookings required to qualify for
|
|
the monthly volume discount.
|
|
data_tests:
|
|
- dbt_expectations.expect_column_values_to_be_between:
|
|
min_value: 0
|
|
strictly: true
|
|
|
|
- name: monthly_volume_discount_start_date_utc
|
|
data_type: date
|
|
description: The date when the monthly volume discount period begins.
|
|
This is the first day of the month.
|
|
data_tests:
|
|
- is_first_day_of_month
|
|
|
|
- name: monthly_volume_discount_end_date_utc
|
|
data_type: date
|
|
description: The date when the monthly volume discount period ends.
|
|
This is the last day of the month.
|
|
data_tests:
|
|
- is_last_day_of_month
|
|
|
|
- name: monthly_general_discount_percentage
|
|
data_type: numeric
|
|
description: The general discount percentage or value applied to all
|
|
bookings within the applicable period.
|
|
No user can have more than one discount per month.
|
|
data_tests:
|
|
- dbt_expectations.expect_column_values_to_be_between:
|
|
min_value: 0
|
|
max_value: 100
|
|
strictly: true
|
|
|
|
- name: monthly_general_discount_start_date_utc
|
|
data_type: date
|
|
description: The date when the general discount period begins.
|
|
This is the first day of the month.
|
|
data_tests:
|
|
- is_first_day_of_month
|
|
|
|
- name: monthly_general_discount_end_date_utc
|
|
data_type: date
|
|
description: The date when the general discount period ends.
|
|
This is the last day of the month.
|
|
data_tests:
|
|
- is_last_day_of_month
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this user was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this user was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this user was last updated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this user was last updated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: int_core__check_in_hero_users
|
|
description: |
|
|
"Contains information about CheckIn Hero API users.
|
|
It includes all user details related with the service."
|
|
columns:
|
|
- name: id_apim_user
|
|
data_type: character varying
|
|
description: "Identifier of the User. Acts as primary
|
|
key for this table."
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- name: id_apim_user_type
|
|
data_type: bigint
|
|
description: "Identifier of the type of user."
|
|
|
|
- name: id_currency
|
|
data_type: bigint
|
|
description: "Id of the currency, works as a foreign key to the
|
|
currency table"
|
|
data_tests:
|
|
- not_null
|
|
- relationships:
|
|
to: ref('stg_core__currency')
|
|
field: id_currency
|
|
|
|
- name: currency_code
|
|
data_type: character varying
|
|
description: Currency ISO 4217 code used by user.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_deal
|
|
data_type: text
|
|
description: ""
|
|
|
|
- name: account_type
|
|
data_type: text
|
|
description: ""
|
|
|
|
- name: client_markup
|
|
data_type: text
|
|
description: ""
|
|
|
|
- name: booking_fee_in_local_currency
|
|
data_type: numeric
|
|
description: "Fee charged to the user for each booking in the local currency."
|
|
data_tests:
|
|
- dbt_expectations.expect_column_values_to_be_between:
|
|
min_value: 0
|
|
max_value: 1000
|
|
strictly: true
|
|
|
|
- name: company_name
|
|
data_type: text
|
|
description: Company name of partner user.
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this user was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this user was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this user was last updated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this user was last updated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: int_core__accommodations_activity
|
|
description: |
|
|
This model provides a detailed information on listings, including their hosts,
|
|
and related booking activity. It contains identifiers, geographic information,
|
|
host details, and booking counts categorized by status.
|
|
|
|
columns:
|
|
- name: id_accommodation
|
|
data_type: bigint
|
|
description: "The unique identifier of the listing."
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- name: id_user_host
|
|
data_type: text
|
|
description: "The unique identifier of the host associated with the listing."
|
|
|
|
- name: id_deal
|
|
data_type: character varying
|
|
description: |
|
|
The primary identifier of the B2B client (deal). A deal can be linked to multiple hosts,
|
|
while a host can have at most one deal or none. This field can be null if there is no deal.
|
|
|
|
- name: company_name
|
|
data_type: character varying
|
|
description: |
|
|
The name of the company associated with the host. This value may sometimes match
|
|
the host's first name, last name, a combination of both, or be entirely different.
|
|
It can also be null or empty.
|
|
|
|
- name: email
|
|
data_type: character varying
|
|
description: "The email address of the host."
|
|
|
|
- name: first_name
|
|
data_type: character varying
|
|
description: "The first name of the host."
|
|
|
|
- name: last_name
|
|
data_type: character varying
|
|
description: "The last name of the host."
|
|
|
|
- name: is_active
|
|
data_type: boolean
|
|
description: |
|
|
Indicates whether the listing is currently active.
|
|
|
|
- name: friendly_name
|
|
data_type: character varying
|
|
description: "A user-friendly name assigned to the listing."
|
|
|
|
- name: country_name
|
|
data_type: character varying
|
|
description: "The full name of the country where the listing is located."
|
|
|
|
- name: town
|
|
data_type: character varying
|
|
description: "The town or city where the listing is located."
|
|
|
|
- name: address_line_1
|
|
data_type: character varying
|
|
description: "The first line of the listing's address."
|
|
|
|
- name: address_line_2
|
|
data_type: character varying
|
|
description: "The second line of the listing's address, if applicable."
|
|
|
|
- name: country_iso_2
|
|
data_type: character varying
|
|
description: "The two-letter ISO 3166-1 country code representing the listing's country."
|
|
|
|
- name: postcode
|
|
data_type: character varying
|
|
description: "The postal code of the listing's location."
|
|
|
|
- name: currency_iso4217
|
|
data_type: character varying
|
|
description: "The three-letter ISO 4217 currency code for transactions related to the listing."
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: "The date when the listing was first created."
|
|
|
|
- name: approved_bookings
|
|
data_type: bigint
|
|
description: "The total number of bookings with status approved for this accommodation."
|
|
|
|
- name: cancelled_bookings
|
|
data_type: bigint
|
|
description: "The total number of bookings with status cancelled for this accommodation."
|
|
|
|
- name: flagged_bookings
|
|
data_type: bigint
|
|
description: "The total number of bookings with status flagged for this accommodation."
|
|
|
|
- name: incomplete_information_bookings
|
|
data_type: bigint
|
|
description: "The total number of bookings with status incomplete information for this accommodation."
|
|
|
|
- name: no_flags_bookings
|
|
data_type: bigint
|
|
description: "The total number of bookings with status no flags for this accommodation."
|
|
|
|
- name: not_approved_bookings
|
|
data_type: bigint
|
|
description: "The total number of bookings with status not approved for this accommodation."
|
|
|
|
- name: rejected_bookings
|
|
data_type: bigint
|
|
description: "The total number of bookings with status rejected for this accommodation."
|
|
|
|
- name: total_bookings
|
|
data_type: bigint
|
|
description: "The total number of bookings for this accommodation."
|
|
|
|
- name: int_core__booking_details
|
|
description: |
|
|
"Contains detailed information about each booking, including host
|
|
and guest details, accommodation, and verification request data."
|
|
|
|
columns:
|
|
- name: id_booking
|
|
data_type: bigint
|
|
description: "The unique, Superhog generated id for this booking."
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- name: id_user_host
|
|
data_type: text
|
|
description: "The unique user ID for the Host."
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_deal
|
|
data_type: character varying
|
|
description:
|
|
"The ID of the deal of the user. It only applies to client accounts.
|
|
Can be null."
|
|
|
|
- name: id_user_guest
|
|
data_type: text
|
|
description: "The unique, Superhog generated id for the guest"
|
|
|
|
- name: id_accommodation
|
|
data_type: bigint
|
|
description: "Id of the accommodation or listing."
|
|
|
|
- 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.
|
|
|
|
- name: booking_state
|
|
data_type: character varying
|
|
description:
|
|
"State in which the booking is, could be either of the following:
|
|
- Approved
|
|
- NotApproved
|
|
- Cancelled
|
|
- Rejected
|
|
- NoFlags
|
|
- Flagged
|
|
- IncompleteInformation"
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- "Approved"
|
|
- "NotApproved"
|
|
- "Cancelled"
|
|
- "Rejected"
|
|
- "NoFlags"
|
|
- "Flagged"
|
|
- "IncompleteInformation"
|
|
|
|
- name: is_accommodation_active
|
|
data_type: boolean
|
|
description: "Boolean value indicating if the accommodation is active."
|
|
|
|
- name: checkin_date_utc
|
|
data_type: date
|
|
description: "Date of check-in of the booking."
|
|
|
|
- name: checkout_date_utc
|
|
data_type: date
|
|
description: "Date of check-out of the booking."
|
|
|
|
- name: booking_nights
|
|
data_type: integer
|
|
description: "Number of nights of the booking."
|
|
|
|
- name: created_date_utc
|
|
data_type: timestamp without time zone
|
|
description: "Date when the booking was created."
|
|
|
|
- name: host_first_name
|
|
data_type: character varying
|
|
description: "First name of the host."
|
|
|
|
- name: host_last_name
|
|
data_type: character varying
|
|
description: "Last name of the host."
|
|
|
|
- name: host_email
|
|
data_type: character varying
|
|
description: "Email of the host."
|
|
|
|
- name: company_name
|
|
data_type: character varying
|
|
description: "The company name."
|
|
|
|
- name: guest_first_name
|
|
data_type: character varying
|
|
description: "First name of the guest."
|
|
|
|
- name: guest_last_name
|
|
data_type: character varying
|
|
description: "Last name of the guest."
|
|
|
|
- name: guest_email
|
|
data_type: character varying
|
|
description: "Email of the guest."
|
|
|
|
- name: guest_billing_country
|
|
data_type: character varying
|
|
description: "Billing country of the guest."
|
|
|
|
- name: guest_billing_town
|
|
data_type: character varying
|
|
description: "Billing town of the guest."
|
|
|
|
- name: friendly_name
|
|
data_type: character varying
|
|
description: "Name of the listing."
|
|
|
|
- name: accommodation_country
|
|
data_type: character varying
|
|
description: "Country of the listing"
|
|
|
|
- name: accommodation_address
|
|
data_type: character varying
|
|
description: "Address of the listing"
|
|
|
|
- name: is_verification_request_complete
|
|
data_type: boolean
|
|
description: "True if the verification request is considered complete,
|
|
AKA the guest has finished the full guest journey."
|
|
|
|
- name: verification_estimated_started_date_utc
|
|
data_type: date
|
|
description: "The estimated date on which the guest started the guest journey."
|
|
|
|
- name: verification_estimated_completed_date_utc
|
|
data_type: date
|
|
description: "The estimated date on which the guest finished the guest journey."
|
|
|
|
- name: days_to_complete_verification
|
|
data_type: numeric
|
|
description: "Number of days it took to complete the verification."
|
|
|
|
- name: link_used_date_utc
|
|
data_type: date
|
|
description: "The date on which the guest used the link for the verification."
|
|
|
|
- name: verification_request_booking_source
|
|
data_type: text
|
|
description: Source type of host of the booking, this could be either;
|
|
- PMS
|
|
- OSL
|
|
- API/MANUAL
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- "PMS"
|
|
- "OSL"
|
|
- "API/MANUAL"
|
|
|
|
- name: chose_deposit
|
|
data_type: boolean
|
|
description: "Boolean value indicating if the guest chose Deposit payment validation."
|
|
|
|
- name: chose_fee
|
|
data_type: boolean
|
|
description: "Boolean value indicating if the guest chose Fee payment validation."
|
|
|
|
- name: chose_waiver
|
|
data_type: boolean
|
|
description: "Boolean value indicating if the guest chose Waiver payment validation."
|
|
|
|
- name: chose_no_cover
|
|
data_type: boolean
|
|
description: "Boolean value indicating if the guest chose No Cover payment validation."
|
|
|
|
- name: chose_checkin_cover
|
|
data_type: boolean
|
|
description: "Boolean value indicating if the guest chose CheckIn Cover."
|
|
|
|
- name: int_core__payments
|
|
description: |
|
|
A table holding payment details for guest journeys, including amounts in both
|
|
transaction currency and GBP, host and guest information, and payment status.
|
|
Currency conversions are done using using data from xexe.com.
|
|
|
|
columns:
|
|
- name: id_payment
|
|
data_type: bigint
|
|
description: Unique identifier for the payment.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_reference
|
|
data_type: character varying
|
|
description: Unique reference code associated with the payment.
|
|
|
|
- name: product_name
|
|
data_type: character varying
|
|
description: Type of payment verification, categorizing the transaction.
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- "WAIVER"
|
|
- "DEPOSIT"
|
|
- "CHECKINCOVER"
|
|
- "FEE"
|
|
- "UNKNOWN"
|
|
|
|
- name: is_host_taking_waiver_risk
|
|
data_type: boolean
|
|
description: Boolean indicating whether the host is taking the risk
|
|
|
|
- name: payaway_percentage
|
|
data_type: numeric
|
|
description: Percentage of the payment that goes to Superhog.
|
|
|
|
- name: payaway_minimum_commission_in_txn_curr
|
|
data_type: numeric
|
|
description: Minimum commission amount in transaction currency.
|
|
|
|
- name: payment_status
|
|
data_type: character varying
|
|
description: Current status of the payment (e.g., pending, paid, refunded).
|
|
|
|
- name: payment_due_date_utc
|
|
data_type: date
|
|
description: The due date for the payment, in UTC.
|
|
|
|
- name: payment_paid_date_utc
|
|
data_type: date
|
|
description: The date when the payment was successfully made, in UTC.
|
|
|
|
- name: refund_payment_reference
|
|
data_type: date
|
|
description: The reference code associated with the refund payment.
|
|
|
|
- name: refund_due_date_utc
|
|
data_type: date
|
|
description: The due date for the refund payment, in UTC.
|
|
|
|
- name: payment_refunded_date_utc
|
|
data_type: date
|
|
description: The date when the payment was refunded, in UTC.
|
|
|
|
- name: total_amount_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The total amount of the payment in local currency.
|
|
This includes taxes if applicable.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: total_amount_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The total amount of the payment in GBP.
|
|
This includes taxes if applicable.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: amount_without_taxes_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The net amount of the payment without taxes, in local currency.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: amount_without_taxes_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The net amount of the payment without taxes, in GBP.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: tax_amount_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The tax portion of the payment, in local currency.
|
|
Will be 0 if no taxes apply.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: tax_amount_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The tax portion of the payment, in GBP. Will be 0 if no
|
|
taxes apply.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: amount_due_to_host_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host with taxes, in local currency.
|
|
|
|
- name: amount_due_to_host_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host with taxes, in GBP.
|
|
|
|
- name: amount_due_to_host_without_taxes_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host without taxes, in local currency.
|
|
|
|
- name: amount_due_to_host_without_taxes_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host without taxes, in GBP.
|
|
|
|
- name: superhog_fee_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Superhog with taxes, in local currency.
|
|
|
|
- name: superhog_fee_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Superhog with taxes, in GBP.
|
|
|
|
- name: superhog_fee_without_taxes_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Superhog without taxes, in local currency.
|
|
|
|
- name: superhog_fee_without_taxes_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Superhog without taxes, in GBP.
|
|
|
|
- name: currency
|
|
data_type: text
|
|
description: |
|
|
The ISO 4217 currency code (e.g., GBP, USD, EUR) in which the payment
|
|
was originally made.
|
|
|
|
- name: exchange_rate_to_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The exchange rate used to convert the payment amount from local currency
|
|
to GBP.
|
|
|
|
- name: id_booking
|
|
data_type: bigint
|
|
description: The unique, Superhog generated id for this booking.
|
|
Can be null for verification request not related to a booking.
|
|
|
|
- name: booking_state
|
|
data_type: character varying
|
|
description: "State in which the booking is"
|
|
|
|
- name: is_verification_request_complete
|
|
data_type: boolean
|
|
description: "True if the verification request is considered
|
|
complete, AKA the guest has finished the full guest journey."
|
|
|
|
- name: id_user_host
|
|
data_type: character varying
|
|
description: |
|
|
The unique identifier of the host receiving the payment.
|
|
|
|
- name: id_deal
|
|
data_type: character varying
|
|
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.
|
|
|
|
- name: host_first_name
|
|
data_type: character varying
|
|
description: First name of the host receiving the payment.
|
|
|
|
- name: host_last_name
|
|
data_type: character varying
|
|
description: Last name of the host receiving the payment.
|
|
|
|
- name: host_email
|
|
data_type: character varying
|
|
description: Email address of the host receiving the payment.
|
|
|
|
- name: company_name
|
|
data_type: character varying
|
|
description: |
|
|
The company name of the host.
|
|
|
|
- name: host_country
|
|
data_type: character varying
|
|
description: |
|
|
The country name of the host.
|
|
|
|
- name: guest_first_name
|
|
data_type: character varying
|
|
description: First name of the guest making the payment.
|
|
|
|
- name: guest_last_name
|
|
data_type: character varying
|
|
description: Last name of the guest making the payment.
|
|
|
|
- name: guest_email
|
|
data_type: character varying
|
|
description: Email address of the guest making the payment.
|
|
|
|
- name: guest_billing_country
|
|
data_type: text
|
|
description: |
|
|
The country name of the guest's billing address.
|
|
|
|
- name: guest_billing_town
|
|
data_type: text
|
|
description: |
|
|
The town or city name of the guest's billing address.
|
|
|
|
- name: id_accommodation
|
|
data_type: character varying
|
|
description: |
|
|
"Id of the accommodation or listing."
|
|
|
|
- name: accommodation_name
|
|
data_type: character varying
|
|
description: |
|
|
A user-friendly name for the booking or transaction, often used for
|
|
display purposes.
|
|
|
|
- name: accommodation_country
|
|
data_type: text
|
|
description: |
|
|
The country name of the accommodation.
|
|
|
|
- name: accommodation_town
|
|
data_type: text
|
|
description: |
|
|
The town or city name of the accommodation.
|
|
|
|
- name: accommodation_address
|
|
data_type: character varying
|
|
description: |
|
|
The first line of the property address associated with the payment.
|
|
|
|
- name: accommodation_postcode
|
|
data_type: character varying
|
|
description: |
|
|
The postal code of the property address associated with the payment
|
|
for the booking.
|
|
|
|
- name: check_in_date_utc
|
|
data_type: date
|
|
description: The scheduled check-in date of the guest, in UTC.
|
|
|
|
- name: check_out_date_utc
|
|
data_type: date
|
|
description: The scheduled check-out date of the guest, in UTC.
|
|
|
|
- name: host_currency
|
|
data_type: character varying
|
|
description: |
|
|
The currency in which the host receives their payment (may differ from
|
|
the transaction currency).
|
|
|
|
- name: int_core__waiver_fees
|
|
description: |
|
|
"This model contains the fees charged for the Waiver service. It includes
|
|
the percentage of the payment that goes to Superhog, the minimum fee around
|
|
the amount charged in both local currency and GBP"
|
|
columns:
|
|
- name: id_payment
|
|
data_type: bigint
|
|
description: Unique identifier for the payment.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payaway_percentage
|
|
data_type: numeric
|
|
description: Percentage of the payment that goes to Superhog.
|
|
data_tests:
|
|
- dbt_expectations.expect_column_values_to_be_between:
|
|
min_value: 0
|
|
max_value: 0.99
|
|
strictly: false
|
|
|
|
- name: payaway_minimum_commission_local_curr
|
|
data_type: numeric
|
|
description: Minimum commission amount in local currency.
|
|
|
|
- name: is_host_taking_waiver_risk
|
|
data_type: boolean
|
|
description: Boolean indicating whether the host is taking the risk
|
|
|
|
- name: amount_due_to_host_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host with taxes, in local currency.
|
|
|
|
- name: amount_due_to_host_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host with taxes, in GBP.
|
|
|
|
- name: superhog_fee_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Superhog with taxes, in local currency.
|
|
|
|
- name: superhog_fee_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Superhog with taxes, in GBP.
|
|
|
|
- name: int_core__new_dash_deal_since_date
|
|
description: |
|
|
This model contains the deals that correspond to user hosts in New Dash.
|
|
While not the usual case, it's possible that a deal has more than one user
|
|
host. Thus this model aims to aggregate the first and last migration or
|
|
appearances dates for each deal. This is specially useful for KPIs purposes.
|
|
|
|
columns:
|
|
- name: id_deal
|
|
data_type: character varying
|
|
description: |
|
|
The unique identifier of the deal that is in New Dash.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- name: min_user_in_new_dash_since_date_utc
|
|
data_type: date
|
|
description: |
|
|
The date when the first user host appeared in New Dash for this deal.
|
|
|
|
- name: max_user_in_new_dash_since_date_utc
|
|
data_type: date
|
|
description: |
|
|
The date when the last user host appeared in New Dash for this deal.
|
|
|
|
- name: total_new_dash_users
|
|
data_type: bigint
|
|
description: |
|
|
The total number of user hosts that have appeared in New Dash for this deal.
|
|
|
|
- name: int_core__active_property_managers_system
|
|
description: |
|
|
This model contains information about active property managers systems (PMS)
|
|
and their associated hosts.
|
|
It includes details about the host, their account type, company,
|
|
billing information, and the number of accommodations they manage.
|
|
columns:
|
|
- name: active_pms_name
|
|
data_type: text
|
|
description: |
|
|
The name of the active property management system.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_user_host
|
|
data_type: character varying
|
|
description: |
|
|
The unique ID for the host.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- name: id_deal
|
|
data_type: character varying
|
|
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.
|
|
|
|
- name: account_type
|
|
data_type: character varying
|
|
description: |
|
|
Name of the account type. Can be null and might be not up-to-date.
|
|
|
|
- name: first_name
|
|
data_type: character varying
|
|
description: |
|
|
First name of the Host.
|
|
|
|
- name: last_name
|
|
data_type: character varying
|
|
description: |
|
|
Last name of the Host.
|
|
|
|
- name: company_name
|
|
data_type: character varying
|
|
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: character varying
|
|
description: |
|
|
Email of the Host.
|
|
|
|
- name: billing_country_name
|
|
data_type: character varying
|
|
description: |
|
|
Name of the country in which the Host is billed.
|
|
In some cases it's null.
|
|
|
|
- name: billing_country_iso_3
|
|
data_type: character varying
|
|
description: |
|
|
ISO 3166-1 alpha-3 country code in which the Host is billed.
|
|
In some cases it's null.
|
|
|
|
- name: joined_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the Host user joined Superhog.
|
|
|
|
- name: booking_count
|
|
data_type: bigint
|
|
description: |
|
|
The number of bookings from the host made through the PMS.
|
|
|
|
- name: accommodation_count
|
|
data_type: bigint
|
|
description: |
|
|
The number of accommodations managed by the host.
|
|
|
|
- name: int_core__guest_products
|
|
description: |
|
|
Master table of Guest Products. Contains very simple information,
|
|
namely the Id of the Guest Product with its name, as well as
|
|
the latest display name and since when the latest display name
|
|
is available.
|
|
|
|
columns:
|
|
- name: id_guest_product
|
|
data_type: bigint
|
|
description: |
|
|
Identifier of the guest product.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: guest_product_name
|
|
data_type: character varying
|
|
description: |
|
|
Internal name of the guest product. This is the
|
|
name used in internal configurations within our
|
|
systems. Only a single guest product name can exist
|
|
for a given product, opposite to the guest product display
|
|
name.
|
|
Recommended for building dedicated guest product logic.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: guest_product_latest_display_name
|
|
data_type: character varying
|
|
description: |
|
|
Latest display name of the guest product. This is the
|
|
commercial or client-facing name.
|
|
If multiple commercial names exist for a given guest
|
|
product, then only the last one is available.
|
|
Recommended for reporting purposes.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: guest_product_latest_display_name_starts_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when the guest product display name started
|
|
to be in use. This is purely for information purposes.
|
|
|
|
- name: guest_product_latest_display_name_starts_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the guest product display name started
|
|
to be in use. This is purely for information purposes.
|
|
|
|
- name: int_core__guest_product_price_plans
|
|
description: |
|
|
Master table of Pricing for Guest Products.
|
|
Contains the information of the guest product, whether if it corresponds
|
|
to a default pricing or a custom pricing for a given host and
|
|
whether the product itself is currently available and if it is available
|
|
for Guest Journey purposes or not. For each case, a specific product price
|
|
and protection limit is displayed for all working currencies.
|
|
Historical price plans are also reflected here, so keep this in mind
|
|
when querying this model.
|
|
|
|
columns:
|
|
- name: id_guest_product_configuration_price_plan
|
|
data_type: bigint
|
|
description: |
|
|
Unique identifier of the guest product configuration price plan.
|
|
Acts as the primary key for this table.
|
|
data_tests:
|
|
- not_null
|
|
- unique
|
|
|
|
- name: id_guest_product_configuration
|
|
data_type: bigint
|
|
description: |
|
|
Identifier of the guest product configuration.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: guest_product_name
|
|
data_type: character varying
|
|
description: |
|
|
Internal name of the guest product. This is the
|
|
name used in internal configurations within our
|
|
systems. Only a single guest product name can exist
|
|
for a given product, opposite to the guest product display
|
|
name.
|
|
Recommended for building dedicated guest product logic.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: guest_product_latest_display_name
|
|
data_type: character varying
|
|
description: |
|
|
Latest display name of the guest product. This is the
|
|
commercial or client-facing name.
|
|
If multiple commercial names exist for a given guest
|
|
product, then only the last one is available.
|
|
Recommended for reporting purposes.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: configuration_level
|
|
data_type: string
|
|
description: |
|
|
Level of the configuration. It can correspond to
|
|
an account-based configuration (custom) or the
|
|
default configuration.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- DEFAULT
|
|
- ACCOUNT
|
|
|
|
- name: id_user_host
|
|
data_type: text
|
|
description: |
|
|
Id of the user that acts as Host.
|
|
This field can be null if the configuration is the
|
|
default configuration. If it's set, it means this
|
|
configuration is a custom configuration.
|
|
|
|
- name: currency_code
|
|
data_type: text
|
|
description:
|
|
Currency iso4217 code. It identifies the currency for the amount stated in
|
|
product_price_in_local_currency and protection_limit_in_local_currency.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: product_price_in_local_currency
|
|
data_type: numeric
|
|
description: |
|
|
Price of the guest product in local currency.
|
|
data_tests:
|
|
- not_null
|
|
- dbt_expectations.expect_column_values_to_be_between:
|
|
min_value: 0
|
|
strictly: true
|
|
|
|
- name: protection_limit_in_local_currency
|
|
data_type: numeric
|
|
description: |
|
|
Protection limit in local currency, or covered amount.
|
|
data_tests:
|
|
- not_null
|
|
- dbt_expectations.expect_column_values_to_be_between:
|
|
min_value: 0
|
|
strictly: true
|
|
|
|
- name: starts_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this configuration price plan starts.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: ends_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this configuration price plan ends.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: start_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this configuration price plan starts.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: end_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this configuration price plan ends.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_latest_price_plan
|
|
data_type: boolean
|
|
description: |
|
|
If true, it means this is the latest price plan for a given
|
|
configuration. If false, then this is an historical price plan
|
|
that has been overriden with a new plan.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this record was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: created_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this record was created.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp
|
|
description: |
|
|
Timestamp of when this record was last updated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when this record was last updated.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: int_core__guest_product_payments
|
|
latest_version: 2
|
|
description: |
|
|
A model that holds guest products 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.
|
|
Only amounts with taxes are included in this model.
|
|
|
|
(!) At this moment, this model only includes Check In Cover payments made
|
|
as Verification Payments.
|
|
|
|
versions:
|
|
- v: 1
|
|
- v: 2
|
|
columns:
|
|
- include: all
|
|
|
|
columns:
|
|
- name: id_guest_product_payment
|
|
data_type: text
|
|
description: |
|
|
Unique identifier for the guest product payment.
|
|
It's a built-in ID that concatenates the original ID with a prefix
|
|
depending on the source, to avoid clashes. This ID does not make
|
|
sense outside of DWH.
|
|
The prefix used is "leg_" for "legacy" Verification To Payment,
|
|
which corresponds to the historical CheckInCover that were considered
|
|
as verification payment, rather than Guest Products.
|
|
For the Guest Product Payments that follow the usual Guest Product
|
|
flow, no prefix is added. However, keep in mind that the field is
|
|
in text format.
|
|
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- name: id_payment
|
|
data_type: bigint
|
|
description: |
|
|
Unique ID for the payment itself.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was created.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was last updated.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_due_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment is due.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_due_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the payment is due.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_paid_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was paid.
|
|
It can be null if the payment has not been paid yet.
|
|
|
|
- name: payment_paid_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the payment was paid.
|
|
It can be null if the payment has not been paid yet.
|
|
|
|
- name: payment_reference
|
|
data_type: character varying
|
|
description: |
|
|
Reference code associated with the payment.
|
|
It can be null if the payment has not been paid yet.
|
|
|
|
- name: refund_due_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the refund is due.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: refund_due_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the refund is due.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: payment_refunded_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was refunded.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: payment_refunded_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the payment was refunded.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: refund_payment_reference
|
|
data_type: character varying
|
|
description: |
|
|
Reference code associated with the refund payment.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: id_user_host
|
|
data_type: character varying
|
|
description: |
|
|
Unique identifier of the Host linked to the Verification
|
|
Request that has a payment.
|
|
It can be null for same-day payments due to different freshness
|
|
of the sources used to build this model.
|
|
data_tests:
|
|
- not_null:
|
|
where: "date(created_at_utc) < current_date"
|
|
|
|
- name: id_user_guest
|
|
data_type: character varying
|
|
description: |
|
|
Unique identifier of the Guest linked to the Verification
|
|
Request that has a payment.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_verification_request
|
|
data_type: bigint
|
|
description: |
|
|
Unique identifier of the Verification Request that has a payment.
|
|
It can be null if the payment is not related to a verification.
|
|
|
|
- name: guest_product_name
|
|
data_type: character varying
|
|
description: |
|
|
Name of the Guest Product associated with the payment.
|
|
This corresponds to the internal name, rather than the display name.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- CHECKINCOVER
|
|
- STAYDISRUPT
|
|
|
|
- name: guest_product_payment_source
|
|
data_type: character varying
|
|
description: |
|
|
Backend source of the Guest Product payment.
|
|
This helps identify the backend tables that are used to track this
|
|
payment.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- VERIFICATION_PAYMENT
|
|
- GUEST_PRODUCT_PAYMENT
|
|
|
|
- name: currency
|
|
data_type: character varying
|
|
description: |
|
|
The ISO 4217 currency code (e.g., GBP, USD, EUR) in which the payment
|
|
was originally made.
|
|
It can be null for same-day payments due to different freshness
|
|
of the sources used to build this model.
|
|
data_tests:
|
|
- not_null:
|
|
where: "date(created_at_utc) < current_date"
|
|
|
|
- name: total_amount_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The total amount of the payment in local currency.
|
|
This includes taxes if applicable.
|
|
|
|
- name: total_amount_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The total amount of the payment in GBP.
|
|
This includes taxes if applicable.
|
|
|
|
- name: payment_status
|
|
data_type: character varying
|
|
description: |
|
|
Current status of the payment (e.g., PAID).
|
|
It cannot be null.
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- PAID
|
|
- REFUNDED
|
|
- REFUND FAILED
|
|
- FAILED WITH RETRY
|
|
- FAILED
|
|
- UNKNOWN
|
|
|
|
- name: notes
|
|
data_type: character varying
|
|
description: |
|
|
Notes or comments associated with the payment.
|
|
It can be null if there are no notes.
|
|
|
|
- name: int_core__verification_product_payments
|
|
description: |
|
|
A model that holds verification products payments (Waiver, Deposit)
|
|
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.
|
|
Only amounts with taxes are included in this model.
|
|
|
|
Note that Guest Products are excluded from this model, as they are not
|
|
considered verification products.
|
|
|
|
columns:
|
|
- name: id_verification_product_payment
|
|
data_type: bigint
|
|
description: |
|
|
Unique identifier for the verification product payment.
|
|
It corresponds to the id_verification_to_payment.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- name: id_payment
|
|
data_type: bigint
|
|
description: |
|
|
Unique ID for the payment itself.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- name: id_verification_to_payment
|
|
data_type: bigint
|
|
description: |
|
|
Identifier for the relation between the payment verification
|
|
and the payment.
|
|
|
|
- name: is_refundable
|
|
data_type: boolean
|
|
description: |
|
|
Indicates whether the payment is refundable or not.
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was created.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was last updated.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_due_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment is due.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_due_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the payment is due.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_paid_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was paid.
|
|
It can be null if the payment has not been paid yet.
|
|
|
|
- name: payment_paid_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the payment was paid.
|
|
It can be null if the payment has not been paid yet.
|
|
|
|
- name: payment_reference
|
|
data_type: character varying
|
|
description: |
|
|
Reference code associated with the payment.
|
|
It can be null if the payment has not been paid yet.
|
|
|
|
- name: refund_due_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the refund is due.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: refund_due_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the refund is due.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: payment_refunded_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was refunded.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: payment_refunded_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the payment was refunded.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: refund_payment_reference
|
|
data_type: character varying
|
|
description: |
|
|
Reference code associated with the refund payment.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: id_user_host
|
|
data_type: character varying
|
|
description: |
|
|
Unique identifier of the Host linked to the Verification
|
|
Request that has a payment.
|
|
It can be null for same-day payments due to different freshness
|
|
of the sources used to build this model.
|
|
data_tests:
|
|
- not_null:
|
|
where: "date(created_at_utc) < current_date"
|
|
|
|
- name: id_user_guest
|
|
data_type: character varying
|
|
description: |
|
|
Unique identifier of the Guest linked to the Verification
|
|
Request that has a payment.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_verification
|
|
data_type: bigint
|
|
description: |
|
|
Unique identifier of the Verification that has a payment.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: id_verification_request
|
|
data_type: bigint
|
|
description: |
|
|
Unique identifier of the Verification Request that has a payment.
|
|
It can be null for same-day payments due to different freshness
|
|
of the sources used to build this model.
|
|
data_tests:
|
|
- not_null:
|
|
where: "date(created_at_utc) < current_date"
|
|
|
|
- name: verification_product_name
|
|
data_type: character varying
|
|
description: |
|
|
Name of the Verification Product associated with the payment.
|
|
This corresponds to the internal name, rather than the display name.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- DEPOSIT
|
|
- FEE
|
|
- WAIVER
|
|
- UNKNOWN
|
|
|
|
- name: currency
|
|
data_type: character varying
|
|
description: |
|
|
The ISO 4217 currency code (e.g., GBP, USD, EUR) in which the payment
|
|
was originally made.
|
|
It can be null for same-day payments due to different freshness
|
|
of the sources used to build this model.
|
|
data_tests:
|
|
- not_null:
|
|
where: "date(created_at_utc) < current_date"
|
|
|
|
- name: total_amount_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The total amount of the payment in the payment currency.
|
|
This includes taxes if applicable.
|
|
|
|
- name: total_amount_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The total amount of the payment in GBP.
|
|
This includes taxes if applicable.
|
|
|
|
- name: is_host_taking_waiver_risk
|
|
data_type: boolean
|
|
description: |
|
|
Boolean indicating whether the host is taking the risk.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "verification_product_name <> 'WAIVER'"
|
|
|
|
- name: payaway_percentage
|
|
data_type: numeric
|
|
description: |
|
|
Percentage of the payment that goes to Truvi.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "verification_product_name <> 'WAIVER'"
|
|
|
|
- name: payaway_minimum_commission_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
Minimum commission amount in the payment currency.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "verification_product_name <> 'WAIVER'"
|
|
|
|
- name: amount_due_to_host_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host in the payment currency.
|
|
This includes taxes if applicable.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "verification_product_name <> 'WAIVER'"
|
|
|
|
- name: amount_due_to_host_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host in GBP.
|
|
This includes taxes if applicable.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "verification_product_name <> 'WAIVER'"
|
|
|
|
- name: superhog_fee_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Truvi in the payment currency.
|
|
This includes taxes if applicable.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "verification_product_name <> 'WAIVER'"
|
|
|
|
- name: superhog_fee_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Truvi in GBP.
|
|
This includes taxes if applicable.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "verification_product_name <> 'WAIVER'"
|
|
|
|
- name: payment_status
|
|
data_type: character varying
|
|
description: |
|
|
Current status of the payment (e.g., PAID).
|
|
It cannot be null.
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- PAID
|
|
- PAID MANUALLY
|
|
- CANCELLED
|
|
- REFUNDED
|
|
- REFUND FAILED
|
|
- FAILED WITH RETRY
|
|
- FAILED
|
|
- UNKNOWN
|
|
|
|
- name: notes
|
|
data_type: character varying
|
|
description: |
|
|
Notes or comments associated with the payment.
|
|
It can be null if there are no notes.
|
|
|
|
- name: int_core__guest_journey_payments
|
|
description: |
|
|
A model that provides all payments that go through a Guest Journey.
|
|
This model unifies both Verification Product Payments (Waiver, Deposit)
|
|
and Guest Product Payments (Check In Cover, etc).
|
|
|
|
The different amounts are available in the transaction currency (the currency
|
|
used by the guest to pay) and in GBP. Additionally, this model provides tax
|
|
logic computation to convert amounts with taxes to amounts without taxes.
|
|
|
|
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
|
|
|
|
columns:
|
|
- name: id_guest_journey_payment
|
|
data_type: text
|
|
description: |
|
|
Unique identifier for the guest journey payment.
|
|
It's a built-in unique ID that means nothing outside DWH.
|
|
It combines the id_verification_product_payment and the
|
|
id_guest_journey_payment into a unique ID by adding the prefix
|
|
"gpp" for Guest Product Payments and "vpp" for Verification Product
|
|
Payments.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- name: guest_journey_product_type
|
|
data_type: text
|
|
description: |
|
|
Type of the product, either GUEST_PRODUCT or
|
|
VERIFICATION_PRODUCT.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- GUEST_PRODUCT
|
|
- VERIFICATION_PRODUCT
|
|
|
|
- name: product_name
|
|
data_type: text
|
|
description: |
|
|
Name of the guest journey product that has a
|
|
payment.
|
|
It cannot be null. Some old historical values
|
|
might be categorised as UNKNOWN.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- FEE
|
|
- DEPOSIT
|
|
- WAIVER
|
|
- CHECKINCOVER
|
|
- STAYDISRUPT
|
|
- UNKNOWN
|
|
|
|
- name: id_verification_product_payment
|
|
data_type: bigint
|
|
description: |
|
|
The ID for Verification Product Payments.
|
|
It cannot be null for Product Types equal to VERIFICATION_PRODUCT.
|
|
It's null for Product Types equal to GUEST_PRODUCT.
|
|
data_tests:
|
|
- not_null:
|
|
where: "guest_journey_product_type = 'VERIFICATION_PRODUCT'"
|
|
- is_null:
|
|
where: "guest_journey_product_type = 'GUEST_PRODUCT'"
|
|
|
|
- name: id_guest_product_payment
|
|
data_type: text
|
|
description: |
|
|
The ID for Guest Product Payments.
|
|
It's a built-in ID that concatenates the original ID with a prefix
|
|
depending on the source, to avoid clashes. This ID does not make
|
|
sense outside of DWH.
|
|
The prefix used is "leg_" for "legacy" Verification To Payment,
|
|
which corresponds to the historical CheckInCover that were considered
|
|
as verification payment, rather than Guest Products.
|
|
For the Guest Product Payments that follow the usual Guest Product
|
|
flow, no prefix is added. However, keep in mind that the field is
|
|
in text format.
|
|
It cannot be null for Product Types equal to GUEST_PRODUCT.
|
|
It's null for Product Types equal to VERIFICATION_PRODUCT.
|
|
data_tests:
|
|
- not_null:
|
|
where: "guest_journey_product_type = 'GUEST_PRODUCT'"
|
|
- is_null:
|
|
where: "guest_journey_product_type = 'VERIFICATION_PRODUCT'"
|
|
|
|
- name: id_payment
|
|
data_type: bigint
|
|
description: |
|
|
Unique ID for the payment itself.
|
|
data_tests:
|
|
- unique
|
|
- not_null
|
|
|
|
- name: id_verification_request
|
|
data_type: bigint
|
|
description: |
|
|
Unique identifier of the Verification Request that has a payment.
|
|
Since a Guest Journey is uniquely attributed to a single Verification
|
|
Request, this ID exists for any type of product payment.
|
|
It can be null for same-day payments due to different freshness
|
|
of the sources used to build this model.
|
|
data_tests:
|
|
- not_null:
|
|
where: "date(created_at_utc) < current_date"
|
|
|
|
- name: is_refundable
|
|
data_type: boolean
|
|
description: |
|
|
Indicates whether the payment is refundable or not.
|
|
This does NOT mean that the payment is actually refunded.
|
|
At the moment, this is not implemented for Guest Products
|
|
in the backend.
|
|
|
|
- name: created_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was created.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: updated_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was last updated.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_due_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment is due.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_due_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the payment is due.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: payment_paid_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was paid.
|
|
It can be null if the payment has not been paid yet.
|
|
If the payment is in PAID status, then this field
|
|
needs to be filled.
|
|
data_tests:
|
|
- not_null:
|
|
where: "is_paid_status = True"
|
|
|
|
- name: payment_paid_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the payment was paid.
|
|
It can be null if the payment has not been paid yet.
|
|
If the payment is in PAID status, then this field
|
|
needs to be filled.
|
|
data_tests:
|
|
- not_null:
|
|
where: "is_paid_status = True"
|
|
|
|
- name: payment_reference
|
|
data_type: character varying
|
|
description: |
|
|
Reference code associated with the payment.
|
|
It can be null if the payment has not been paid yet.
|
|
|
|
- name: refund_due_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the refund is due.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: refund_due_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the refund is due.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: payment_refunded_at_utc
|
|
data_type: timestamp without time zone
|
|
description: |
|
|
Timestamp of when the payment was refunded.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: payment_refunded_date_utc
|
|
data_type: date
|
|
description: |
|
|
Date of when the payment was refunded.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: refund_payment_reference
|
|
data_type: character varying
|
|
description: |
|
|
Reference code associated with the refund payment.
|
|
It can be null if the payment has not been refunded.
|
|
|
|
- name: id_user_host
|
|
data_type: character varying
|
|
description: |
|
|
Unique identifier of the Host linked to the Verification
|
|
Request that has a payment.
|
|
It can be null for same-day payments due to different freshness
|
|
of the sources used to build this model.
|
|
data_tests:
|
|
- not_null:
|
|
where: "date(created_at_utc) < current_date"
|
|
|
|
- name: id_user_guest
|
|
data_type: character varying
|
|
description: |
|
|
Unique identifier of the Guest linked to the Verification
|
|
Request that has a payment.
|
|
It cannot be null.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: currency
|
|
data_type: character varying
|
|
description: |
|
|
The ISO 4217 currency code (e.g., GBP, USD, EUR) in which the payment
|
|
was originally made.
|
|
It can be null for same-day payments due to different freshness
|
|
of the sources used to build this model.
|
|
data_tests:
|
|
- not_null:
|
|
where: "date(created_at_utc) < current_date"
|
|
|
|
- name: payment_status
|
|
data_type: character varying
|
|
description: |
|
|
Current status of the payment (e.g., PAID).
|
|
It cannot be null.
|
|
data_tests:
|
|
- accepted_values:
|
|
values:
|
|
- PAID
|
|
- PAID MANUALLY
|
|
- CANCELLED
|
|
- REFUNDED
|
|
- REFUND FAILED
|
|
- FAILED WITH RETRY
|
|
- FAILED
|
|
- UNKNOWN
|
|
|
|
- name: notes
|
|
data_type: character varying
|
|
description: |
|
|
Notes or comments associated with the payment.
|
|
It can be null if there are no notes.
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: total_amount_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The total amount due created by the interaction, in GBP.
|
|
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.
|
|
data_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.
|
|
data_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.
|
|
data_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
|
|
Truvi.
|
|
If the transaction accrues no taxes, will be equal to the field
|
|
total_amount_in_txn_currency.
|
|
data_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
|
|
Truvi.
|
|
If the transaction accrues no taxes, will be equal to the field
|
|
total_amount_in_txn_currency.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
- dbt_expectations.expect_column_values_to_be_between:
|
|
min_value: 0
|
|
max_value: 0.99
|
|
strictly: false
|
|
|
|
- name: is_service_subject_to_vat
|
|
data_type: boolean
|
|
description: |
|
|
Whether the related payment is subject to VAT. For instance,
|
|
deposit payments are not.
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_vat_taxed
|
|
data_type: boolean
|
|
description: |
|
|
Syntactic sugar to indicate if there's any VAT on this payment.
|
|
Will be true if so, false if not for any reason (guest country has
|
|
no VAT, the payment is for a deposit, etc.)
|
|
data_tests:
|
|
- not_null
|
|
|
|
- name: is_host_taking_waiver_risk
|
|
data_type: boolean
|
|
description: |
|
|
Boolean indicating whether the host is taking the risk.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: payaway_percentage
|
|
data_type: numeric
|
|
description: |
|
|
Percentage of the payment that goes to Truvi.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: payaway_minimum_commission_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
Minimum commission amount in the payment currency.
|
|
Note that this is converted from Host currency to the payment
|
|
currency for information purposes, but that the Host always gets
|
|
paid in its own currency.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: amount_due_to_host_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host in the payment currency.
|
|
Note that this is converted from Host currency to the payment
|
|
currency for information purposes, but that the Host always gets
|
|
paid in its own currency.
|
|
This includes taxes if applicable.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: amount_due_to_host_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host in GBP.
|
|
Note that this is converted from Host currency to GBP for
|
|
information purposes, but that the Host always gets paid
|
|
in its own currency.
|
|
This includes taxes if applicable.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: superhog_fee_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Truvi in the payment currency.
|
|
This includes taxes if applicable.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: superhog_fee_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Truvi in GBP.
|
|
This includes taxes if applicable.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: amount_due_to_host_without_taxes_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host in the payment currency, without taxes.
|
|
Note that this is converted from Host currency to the payment
|
|
currency for information purposes, but that the Host always gets
|
|
paid in its own currency.
|
|
If the transaction accrues no taxes, will be equal to the field
|
|
amount_due_to_host_in_txn_currency.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: amount_due_to_host_without_taxes_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The amount payable to the host in GBP, without taxes.
|
|
Note that this is converted from Host currency to GBP for
|
|
information purposes, but that the Host always gets paid in
|
|
its own currency.
|
|
If the transaction accrues no taxes, will be equal to the field
|
|
amount_due_to_host_in_gbp.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: superhog_fee_without_taxes_in_txn_currency
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Truvi in the payment currency,
|
|
without taxes.
|
|
If the transaction accrues no taxes, will be equal to the field
|
|
superhog_fee_in_txn_currency.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- name: superhog_fee_without_taxes_in_gbp
|
|
data_type: numeric
|
|
description: |
|
|
The service fee charged by Truvi in GBP, without taxes.
|
|
If the transaction accrues no taxes, will be equal to the field
|
|
superhog_fee_in_gbp.
|
|
It is always null if the payment is not a Waiver payment.
|
|
data_tests:
|
|
- is_null:
|
|
where: "product_name <> 'WAIVER'"
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- false
|
|
where: (are_user_details_deleted != true and are_user_details_deleted is not null)
|
|
|
|
- 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.
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- false
|
|
where: (are_user_details_deleted != true and are_user_details_deleted is not null)
|
|
|
|
- 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.
|
|
|
|
- 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.
|
|
|
|
data_tests:
|
|
- not_null
|
|
- accepted_values:
|
|
values:
|
|
- false
|
|
|
|
- name: is_paid_status
|
|
data_type: boolean
|
|
description: |
|
|
A handy boolean that just considers payments that are
|
|
currently in the PAID status. Keep in mind that if the
|
|
payment gets paid and then refunded, this boolean will
|
|
be false as status only reflects the latest transition.
|
|
data_tests:
|
|
- not_null
|