Adds a master table for guest products price plans

This commit is contained in:
uri 2025-03-17 16:35:50 +01:00
parent b518c536f2
commit cba4b97082
3 changed files with 249 additions and 0 deletions

View file

@ -0,0 +1,71 @@
with
stg_core__guest_product_configuration_status as (
select * from {{ ref("stg_core__guest_product_configuration_status") }}
),
stg_core__guest_product_configuration_price_plan as (
select * from {{ ref("stg_core__guest_product_configuration_price_plan") }}
),
stg_core__currency as (select * from {{ ref("stg_core__currency") }}),
stg_core__guest_product_configuration as (
select * from {{ ref("stg_core__guest_product_configuration") }}
),
int_core__guest_products as (select * from {{ ref("int_core__guest_products") }}),
ranked_configuration_status as (
select
id_guest_product_configuration,
is_enabled,
is_enabled_for_guest_journey,
starts_at_utc,
row_number() over (
partition by id_guest_product_configuration order by starts_at_utc desc
) as status_rank
from stg_core__guest_product_configuration_status
),
ranked_price_plans as (
select
id_guest_product_configuration_price_plan,
id_guest_product_configuration,
id_currency,
product_price_in_local_currency,
protection_limit_in_local_currency,
starts_at_utc,
start_date_utc,
created_at_utc,
created_date_utc,
updated_at_utc,
updated_date_utc,
row_number() over (
partition by id_guest_product_configuration, id_currency
order by starts_at_utc desc
) as price_plan_rank
from stg_core__guest_product_configuration_price_plan
)
select
rpp.id_guest_product_configuration_price_plan,
icgp.guest_product_name,
icgp.guest_product_latest_display_name,
scgpc.configuration_level as configuration_level,
scgpc.id_user_host,
rks.is_enabled as is_currently_enabled,
rks.is_enabled_for_guest_journey as is_currently_enabled_for_guest_journey,
scc.iso4217_code as currency_code,
rpp.product_price_in_local_currency,
rpp.protection_limit_in_local_currency,
rpp.starts_at_utc,
rpp.start_date_utc,
case when rpp.price_plan_rank = 1 then true else false end as is_latest_price_plan,
rpp.created_at_utc,
rpp.created_date_utc,
rpp.updated_at_utc,
rpp.updated_date_utc
from ranked_price_plans rpp
left join stg_core__currency scc on rpp.id_currency = scc.id_currency
left join
stg_core__guest_product_configuration scgpc
on rpp.id_guest_product_configuration = scgpc.id_guest_product_configuration
left join
ranked_configuration_status rks
on scgpc.id_guest_product_configuration = rks.id_guest_product_configuration
and rks.status_rank = 1 -- Get only latest status
left join
int_core__guest_products icgp on scgpc.id_guest_product = icgp.id_guest_product

View file

@ -5914,3 +5914,173 @@ models:
description: | description: |
Date of when the guest product display name started Date of when the guest product display name started
to be in use. This is purely for information purposes. 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: 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: is_currently_enabled
data_type: boolean
description: |
Indicates if the product is currently enabled or not.
- If true, then the product is visible everywhere.
- If false, then the product is disabled. Therefore,
the product is NOT visible anywhere.
It cannot be null.
data_tests:
- not_null
- name: is_currently_enabled_for_guest_journey
data_type: boolean
description: |
Indicates if the product, for a given user, is currently
enabled for the guest journey.
- If true, then the product is visible in the guest journey.
It cannot be null.
data_tests:
- not_null
- 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: start_date_utc
data_type: date
description: |
Date of when this configuration price plan starts.
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

View file

@ -2035,6 +2035,14 @@ models:
- DEFAULT - DEFAULT
- ACCOUNT - ACCOUNT
- name: id_user_host
data_type: character varying
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: created_at_utc - name: created_at_utc
data_type: timestamp data_type: timestamp
description: | description: |