mirror of
https://gitlab.com/cief-data/dbt_cloud.git
synced 2026-08-24 23:04:11 +00:00
Added Model
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
-- VARIABLES
|
||||
{% set order_status = dbt_utils.get_column_values(
|
||||
table=ref('stg_exchange__transaction_order_logs'),
|
||||
column='status')
|
||||
%}
|
||||
|
||||
|
||||
-- IMPORTS
|
||||
WITH transaction_cost_logs AS (
|
||||
SELECT * FROM {{ ref('stg_exchange__transaction_cost_logs') }}
|
||||
),
|
||||
|
||||
transaction_costs AS (
|
||||
SELECT * FROM {{ ref('stg_exchange__transaction_costs') }}
|
||||
),
|
||||
|
||||
|
||||
-- LOGIC
|
||||
transaction_cost_status_datetime AS (
|
||||
|
||||
SELECT
|
||||
transaction_cost_id,
|
||||
company_id,
|
||||
MIN(created_datetime) AS cost_created_datetime,
|
||||
|
||||
{%- for status in order_status %}
|
||||
MAX(CASE WHEN status = '{{status}}' THEN updated_datetime END) AS cost_{{status.lower()}}_datetime {%- if not loop.last %},{% endif -%}
|
||||
{% endfor %}
|
||||
|
||||
FROM transaction_cost_logs
|
||||
|
||||
GROUP BY
|
||||
transaction_cost_id,
|
||||
company_id
|
||||
|
||||
),
|
||||
|
||||
join_cost_and_logs AS (
|
||||
|
||||
SELECT
|
||||
transaction_costs.transaction_cost_id,
|
||||
transaction_costs.transaction_order_id,
|
||||
transaction_costs.supplier_company_id,
|
||||
transaction_costs.bank_id,
|
||||
transaction_costs.base_currency_id,
|
||||
transaction_costs.quote_currency_id,
|
||||
transaction_costs.transaction_type,
|
||||
transaction_costs.payment_method,
|
||||
transaction_costs.status,
|
||||
transaction_costs.payment_reference,
|
||||
transaction_costs.bill_number,
|
||||
transaction_costs.base_value,
|
||||
transaction_costs.quote_value,
|
||||
transaction_costs.base_to_quote_currency_exchange_rate,
|
||||
transaction_costs.base_tax,
|
||||
transaction_costs.base_service_charge,
|
||||
transaction_costs.expired_datetime,
|
||||
transaction_costs.deleted_datetime,
|
||||
transaction_costs.created_datetime,
|
||||
transaction_costs.updated_datetime,
|
||||
|
||||
transaction_cost_status_datetime.company_id,
|
||||
transaction_cost_status_datetime.cost_created_datetime,
|
||||
transaction_cost_status_datetime.cost_completed_datetime,
|
||||
transaction_cost_status_datetime.cost_pending_submission_datetime,
|
||||
transaction_cost_status_datetime.cost_approved_datetime,
|
||||
transaction_cost_status_datetime.cost_pending_verification_datetime,
|
||||
transaction_cost_status_datetime.cost_rejected_datetime,
|
||||
transaction_cost_status_datetime.cost_suspended_datetime,
|
||||
transaction_cost_status_datetime.cost_expired_datetime
|
||||
|
||||
FROM transaction_costs
|
||||
|
||||
LEFT JOIN transaction_cost_status_datetime
|
||||
ON (transaction_costs.transaction_cost_id = transaction_cost_status_datetime.transaction_cost_id)
|
||||
|
||||
),
|
||||
|
||||
remove_deleted_expired_costs AS (
|
||||
|
||||
SELECT
|
||||
*
|
||||
|
||||
FROM join_cost_and_logs
|
||||
|
||||
WHERE
|
||||
deleted_datetime IS NULL
|
||||
AND
|
||||
expired_datetime IS NULL
|
||||
|
||||
),
|
||||
|
||||
-- Omair mentioned a bug in system causing duplicates. Take cost with latest updated_datetime as true.
|
||||
remove_system_error_duplicate_row AS (
|
||||
|
||||
SELECT
|
||||
*,
|
||||
ROW_NUMBER() OVER (PARTITION BY transaction_order_id ORDER BY updated_datetime DESC) AS row_number_index,
|
||||
|
||||
'{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime
|
||||
|
||||
FROM remove_deleted_expired_costs
|
||||
|
||||
QUALIFY
|
||||
row_number_index = 1
|
||||
|
||||
),
|
||||
|
||||
|
||||
-- FINAL
|
||||
final__int_exchange__transaction_cost_get_latest_cost_ids AS (
|
||||
|
||||
SELECT
|
||||
-- ids
|
||||
transaction_cost_id,
|
||||
transaction_order_id,
|
||||
supplier_company_id,
|
||||
company_id,
|
||||
bank_id,
|
||||
base_currency_id,
|
||||
quote_currency_id,
|
||||
|
||||
-- dimensions
|
||||
transaction_type,
|
||||
payment_method,
|
||||
status,
|
||||
payment_reference,
|
||||
bill_number,
|
||||
|
||||
-- measures
|
||||
base_value,
|
||||
quote_value,
|
||||
base_to_quote_currency_exchange_rate,
|
||||
base_tax,
|
||||
base_service_charge,
|
||||
|
||||
-- date/times
|
||||
expired_datetime,
|
||||
deleted_datetime,
|
||||
created_datetime,
|
||||
updated_datetime,
|
||||
cost_created_datetime,
|
||||
cost_completed_datetime,
|
||||
cost_pending_submission_datetime,
|
||||
cost_approved_datetime,
|
||||
cost_pending_verification_datetime,
|
||||
cost_rejected_datetime,
|
||||
cost_suspended_datetime,
|
||||
cost_expired_datetime,
|
||||
|
||||
-- metadata
|
||||
_dbt_ran_datetime
|
||||
|
||||
FROM remove_system_error_duplicate_row
|
||||
|
||||
)
|
||||
|
||||
SELECT * FROM final__int_exchange__transaction_cost_get_latest_cost_ids
|
||||
Reference in New Issue
Block a user