Merged PR 3087: Adding int_core__product_service_to_price

# Description

Adds int_core__product_service_to_price.

This model is the equivalent of staging but just adding currency code, product service name and a few boolean fields to identify if the product service to price is currently active and if it's the default price or not.
Currently it's a view since it has 16 records, likely it can be transformed into a table in the future.

The idea will be to create a similar table for protection_plan.

# 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.
- [NA] I've picked the right materialization for the affected models. -> We will see in the future if needs to be adapted

# Other

- [ ] Check if a full-refresh is required after this PR is merged.

Related work items: #20809
This commit is contained in:
Oriol Roqué Paniagua 2024-10-08 11:39:34 +00:00
parent 9dc1b4b99f
commit bad27ecbc3
2 changed files with 151 additions and 0 deletions

View file

@ -0,0 +1,28 @@
with
stg_core__product_service_to_price as (
select * from {{ ref("stg_core__product_service_to_price") }}
),
stg_core__product_service as (select * from {{ ref("stg_core__product_service") }}),
stg_core__currency as (select * from {{ ref("stg_core__currency") }})
select
pstp.id_product_service_to_price,
pstp.id_product_service,
pstp.payment_type,
pstp.price_base_unit,
pstp.invoicing_trigger,
c.iso4217_code as currency_code,
pstp.amount_local_curr,
pstp.product_service_price_name,
ps.product_service_name,
pstp.starts_at_utc,
pstp.ends_at_utc,
pstp.has_no_end_date,
pstp.created_at_utc,
pstp.created_date_utc,
pstp.updated_at_utc,
pstp.updated_date_utc,
pstp.dwh_extracted_at_utc
from stg_core__product_service_to_price pstp
left join
stg_core__product_service ps on pstp.id_product_service = ps.id_product_service
left join stg_core__currency c on pstp.id_currency = c.id_currency

View file

@ -3495,3 +3495,126 @@ models:
The CamelCase name of the product service.
tests:
- not_null
- name: int_core__product_service_to_price
description: |
This model provides the information related to the prices of the different
product services in the scope of New Pricing. Each product service can have
prices in different currencies. Each price is storified and applies in the range
of starts to end. If the end date is null, then the price is currently active.
There is no possibility to allow custom pricing at user level.
tests:
- dbt_expectations.expect_column_pair_values_A_to_be_greater_than_B:
column_A: ends_at_utc
column_B: starts_at_utc
or_equal: True
columns:
- name: id_product_service_to_price
data_type: integer
description: |
Identifier of the product service to price. Acts as the primary key for this table.
tests:
- unique
- not_null
- name: id_product_service
data_type: integer
description: |
Identifier of the product service.
tests:
- not_null
- name: payment_type
data_type: string
description: |
Type of the payment, namely if the price represents a
percentage or an amount.
tests:
- not_null
- accepted_values:
values:
- "AMOUNT"
- "PERCENTAGE"
- name: price_base_unit
data_type: string
description: |
Represents how the price value should be taken into account, either
if the price is representing the total amount at booking level or
it's a nightly fee.
tests:
- not_null
- accepted_values:
values:
- "PER BOOKING"
- "PER NIGHT"
- name: invoicing_trigger
data_type: string
description: |
Represents at which moment in time this service should be invoiced.
tests:
- not_null
- accepted_values:
values:
- "PRE-BOOKING"
- "POST-CHECKOUT"
- "AT WAIVER PAYMENT"
- "AT DEPOSIT PAYMENT"
- "N/A"
- name: currency_code
data_type: string
description:
Currency iso4217 code. It identifies the currency for the amount stated in
amount_local_curr.
tests:
- not_null
- name: amount_local_curr
data_type: decimal
description: |
Price amount of a given product service in the currency stated in id_currency.
tests:
- not_null
- name: product_service_price_name
data_type: string
description: |
The name given to a product service to price, for example "Waiver Pro Default Price".
- name: product_service_name
data_type: string
description: |
The name of the product service, for example "Waiver Pro".
- name: starts_at_utc
data_type: timestamp
description: |
Timestamp of when this product service to price starts to be active.
tests:
- not_null
- name: ends_at_utc
data_type: timestamp
description: |
Timestamp of when this product service to price ends to be active.
It can be null, thus meaning it's currently active.
- name: has_no_end_date
data_type: boolean
description: |
True when ends_at_utc is not set, false otherwise.
- name: created_at_utc
data_type: timestamp
description: |
Timestamp of when this product service to price was created.
- name: created_date_utc
data_type: date
description: |
Date of when this product service to price was created.
- name: updated_at_utc
data_type: timestamp
description: |
Timestamp of when this product service to price was last updated.
- name: updated_date_utc
data_type: date
description: |
Date of when this product service to price was last updated.
- name: dwh_extracted_at_utc
data_type: timestamp
description: |
Timestamp of when this data was extracted into DWH.
tests:
- not_null