Added Model

This commit is contained in:
CIEF ACC1
2023-10-10 05:22:41 +00:00
parent ce381e8c74
commit 48870313ca
@@ -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