mirror of
https://gitlab.com/cief-data/dbt_cloud.git
synced 2026-08-19 04:14:00 +00:00
replaced fct transaction orders
This commit is contained in:
@@ -1,16 +1,8 @@
|
||||
-- IMPORT
|
||||
WITH transaction_orders AS (
|
||||
WITH orders AS (
|
||||
SELECT * FROM {{ ref('fct_exchange__transaction_orders') }}
|
||||
),
|
||||
|
||||
bookings AS (
|
||||
SELECT * FROM {{ ref('fct_exchange__bookings') }}
|
||||
),
|
||||
|
||||
transaction_costs AS (
|
||||
SELECT * FROM {{ ref('fct_exchange__transaction_costs') }}
|
||||
),
|
||||
|
||||
companies AS (
|
||||
SELECT * FROM {{ ref('dim_exchange__companies') }}
|
||||
),
|
||||
@@ -23,23 +15,18 @@ dates AS (
|
||||
SELECT * FROM {{ ref('dim__dates') }}
|
||||
),
|
||||
|
||||
|
||||
--LOGIC
|
||||
transaction_orders_get_next_order_created_datetime AS (
|
||||
SELECT
|
||||
*,
|
||||
LEAD(order_created_datetime) OVER (PARTITION BY company_id ORDER BY order_created_datetime, transaction_order_id) AS next_order_created_datetime
|
||||
|
||||
FROM
|
||||
transaction_orders
|
||||
users AS (
|
||||
SELECT * FROM {{ ref('dim_exchange__users') }}
|
||||
),
|
||||
|
||||
--LOGIC
|
||||
fct_and_dim_joins AS (
|
||||
SELECT
|
||||
bookings.booking_id,
|
||||
bookings.booking_marking_id,
|
||||
bookings.company_id,
|
||||
orders.booking_id,
|
||||
orders.booking_marking_id,
|
||||
orders.company_id,
|
||||
|
||||
companies.name AS company_name,
|
||||
companies.company_marking_id AS company_marking_id,
|
||||
companies.autocount_id AS company_autocount_id,
|
||||
companies.company_type AS company_type,
|
||||
@@ -54,8 +41,8 @@ fct_and_dim_joins AS (
|
||||
companies.latitude AS company_latitude,
|
||||
companies.longitude AS company_longitude,
|
||||
|
||||
bookings.user_id,
|
||||
bookings.bank_id,
|
||||
orders.user_id,
|
||||
orders.bank_id,
|
||||
|
||||
fix_currencies.currency_name AS fix_currency_name,
|
||||
|
||||
@@ -63,98 +50,153 @@ fct_and_dim_joins AS (
|
||||
|
||||
base_currencies.currency_name AS base_currency_name,
|
||||
|
||||
bookings.service_type,
|
||||
bookings.status AS booking_status,
|
||||
bookings.is_first_time_company AS is_first_time_booking_company,
|
||||
bookings.is_first_time_company_completed AS is_first_time_booking_company_completed,
|
||||
bookings.is_first_time_user AS is_first_time_booking_user,
|
||||
bookings.is_first_time_user_completed AS is_first_time_booking_user_completed,
|
||||
bookings.estimate_base_to_quote_currency_exchange_rate AS estimate_booking_base_to_quote_currency_exchange_rate,
|
||||
bookings.estimate_quote_value AS estimate_booking_quote_value,
|
||||
bookings.estimate_base_value AS estimate_booking_base_value,
|
||||
bookings.estimate_value_rm AS estimate_booking_value_rm,
|
||||
bookings.booking_created_datetime,
|
||||
bookings.booking_approved_datetime,
|
||||
bookings.booking_completed_datetime,
|
||||
bookings.booking_suspended_datetime,
|
||||
orders.service_type,
|
||||
orders.booking_status,
|
||||
orders.is_first_time_booking_company,
|
||||
orders.is_first_time_booking_company_completed,
|
||||
orders.is_first_time_booking_user,
|
||||
orders.is_first_time_booking_user_completed,
|
||||
orders.estimate_booking_base_to_quote_currency_exchange_rate,
|
||||
orders.estimate_booking_quote_value,
|
||||
orders.estimate_booking_base_value,
|
||||
orders.estimate_booking_value_rm,
|
||||
orders.booking_created_datetime,
|
||||
orders.booking_approved_datetime,
|
||||
orders.booking_completed_datetime,
|
||||
orders.booking_suspended_datetime,
|
||||
|
||||
transaction_orders_get_next_order_created_datetime.transaction_order_id AS order_id,
|
||||
transaction_orders_get_next_order_created_datetime.payment_method AS order_payment_method,
|
||||
transaction_orders_get_next_order_created_datetime.order_status,
|
||||
transaction_orders_get_next_order_created_datetime.payment_reference AS order_payment_reference,
|
||||
transaction_orders_get_next_order_created_datetime.bill_number AS order_bill_number,
|
||||
transaction_orders_get_next_order_created_datetime.is_first_time_company AS is_first_time_order_company,
|
||||
transaction_orders_get_next_order_created_datetime.is_first_time_company_completed AS is_first_time_order_company_completed,
|
||||
transaction_orders_get_next_order_created_datetime.is_first_time_user AS is_first_time_order_user,
|
||||
transaction_orders_get_next_order_created_datetime.is_first_time_user_completed AS is_first_time_order_user_completed,
|
||||
transaction_orders_get_next_order_created_datetime.base_to_quote_currency_exchange_rate AS order_base_to_quote_currency_exchange_rate ,
|
||||
transaction_orders_get_next_order_created_datetime.base_value AS order_base_value ,
|
||||
transaction_orders_get_next_order_created_datetime.base_service_charge AS order_base_service_charge ,
|
||||
transaction_orders_get_next_order_created_datetime.base_tax AS order_base_tax ,
|
||||
transaction_orders_get_next_order_created_datetime.quote_value AS order_quote_value ,
|
||||
transaction_orders_get_next_order_created_datetime.value_rm AS order_value_rm ,
|
||||
transaction_orders_get_next_order_created_datetime.service_charge_rm AS order_service_charge_rm ,
|
||||
transaction_orders_get_next_order_created_datetime.tax_rm AS order_tax_rm ,
|
||||
transaction_orders_get_next_order_created_datetime.total_value_rm AS total_order_value_rm,
|
||||
orders.order_id,
|
||||
orders.order_payment_method,
|
||||
orders.order_status,
|
||||
orders.order_payment_reference,
|
||||
orders.order_bill_number,
|
||||
orders.is_first_time_order_company,
|
||||
orders.is_first_time_order_company_completed,
|
||||
orders.is_first_time_order_user,
|
||||
orders.is_first_time_order_user_completed,
|
||||
orders.order_base_to_quote_currency_exchange_rate,
|
||||
orders.order_base_value,
|
||||
orders.order_base_service_charge,
|
||||
orders.order_base_tax,
|
||||
orders.order_quote_value,
|
||||
orders.order_value_rm,
|
||||
orders.order_service_charge_rm,
|
||||
orders.order_tax_rm,
|
||||
orders.total_order_value_rm,
|
||||
|
||||
transaction_orders_get_next_order_created_datetime.order_created_datetime,
|
||||
order_created_dates.first_day_of_week AS order_created_week,
|
||||
orders.order_created_datetime,
|
||||
orders.order_pending_submission_datetime,
|
||||
orders.order_pending_verification_datetime,
|
||||
|
||||
transaction_orders_get_next_order_created_datetime.order_pending_submission_datetime,
|
||||
transaction_orders_get_next_order_created_datetime.order_pending_verification_datetime,
|
||||
transaction_orders_get_next_order_created_datetime.order_approved_datetime,
|
||||
transaction_orders_get_next_order_created_datetime.order_completed_datetime,
|
||||
transaction_orders_get_next_order_created_datetime.order_rejected_datetime,
|
||||
transaction_orders_get_next_order_created_datetime.order_suspended_datetime,
|
||||
transaction_orders_get_next_order_created_datetime.next_order_created_datetime,
|
||||
-- Estimated delivery datetime based on CIEF internal SLA (cutoff time 4pm)
|
||||
CASE
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1 DAY TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_included_base_date || ' 23:59:59 +08:00')
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1 DAY TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_excluded_base_date || ' 23:59:59 +08:00')
|
||||
|
||||
transaction_costs.transaction_cost_id AS cost_id,
|
||||
transaction_costs.bank_id AS currency_vendor_bank_id,
|
||||
transaction_costs.transaction_type AS cost_transaction_type,
|
||||
transaction_costs.payment_method AS cost_payment_method,
|
||||
transaction_costs.status AS cost_status,
|
||||
transaction_costs.payment_reference AS cost_payment_reference,
|
||||
transaction_costs.bill_number AS cost_bill_number,
|
||||
transaction_costs.base_value AS cost_base_value,
|
||||
transaction_costs.quote_value AS cost_quote_value,
|
||||
transaction_costs.base_to_quote_currency_exchange_rate AS cost_base_to_quote_currency_exchange_rate,
|
||||
transaction_costs.base_tax AS cost_base_tax,
|
||||
transaction_costs.base_service_charge AS cost_base_service_charge,
|
||||
transaction_costs.value_rm AS cost_value_rm,
|
||||
transaction_costs.tax_rm AS cost_tax_rm,
|
||||
transaction_costs.service_charge_rm AS cost_service_charge_rm,
|
||||
transaction_costs.total_value_rm AS total_cost_value_rm,
|
||||
transaction_costs.cost_created_datetime,
|
||||
transaction_costs.cost_pending_submission_datetime,
|
||||
transaction_costs.cost_pending_verification_datetime,
|
||||
transaction_costs.cost_approved_datetime,
|
||||
transaction_costs.cost_completed_datetime,
|
||||
transaction_costs.cost_rejected_datetime,
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '3 DAYS TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_3_working_day_included_base_date || ' 23:59:59 +08:00')
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '3 DAYS TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_3_working_day_excluded_base_date || ' 23:59:59 +08:00')
|
||||
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1688 PAYMENT' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_included_base_date || ' 23:59:59 +08:00')
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1688 PAYMENT' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_excluded_base_date || ' 23:59:59 +08:00')
|
||||
|
||||
ELSE null
|
||||
END AS estimated_order_delivery_datetime_website_sla,
|
||||
|
||||
--- Estimated delivery datetime based on customer expectation
|
||||
CASE
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1 DAY TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_included_base_date)
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1 DAY TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_excluded_base_date)
|
||||
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '3 DAYS TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_3_working_day_included_base_date)
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '3 DAYS TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_3_working_day_excluded_base_date)
|
||||
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1688 PAYMENT' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_included_base_date)
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1688 PAYMENT' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_excluded_base_date)
|
||||
|
||||
ELSE null
|
||||
END AS estimated_order_delivery_datetime_customer_expectation,
|
||||
|
||||
-- On time delivery boolean (CIEF internal SLA)
|
||||
CASE
|
||||
WHEN order_completed_datetime IS NULL THEN NULL
|
||||
WHEN estimated_order_delivery_datetime_website_sla > order_completed_datetime THEN 1
|
||||
ELSE 0
|
||||
END AS is_on_time_delivery_website_sla,
|
||||
|
||||
-- On time delivery boolean (Customer Expectation)
|
||||
CASE
|
||||
WHEN order_completed_datetime IS NULL THEN NULL
|
||||
WHEN estimated_order_delivery_datetime_customer_expectation > order_completed_datetime THEN 1
|
||||
ELSE 0
|
||||
END AS is_on_time_delivery_customer_expectation,
|
||||
|
||||
orders.order_approved_datetime,
|
||||
orders.order_completed_datetime,
|
||||
orders.order_rejected_datetime,
|
||||
orders.order_suspended_datetime,
|
||||
orders.next_order_created_datetime,
|
||||
orders.order_expected_expired_datetime,
|
||||
orders.order_expired_datetime,
|
||||
|
||||
orders.cost_id,
|
||||
orders.supplier_company_id,
|
||||
supplier_companies.name AS supplier_company_name,
|
||||
orders.currency_vendor_bank_id,
|
||||
orders.cost_transaction_type,
|
||||
orders.cost_payment_method,
|
||||
orders.cost_status,
|
||||
orders.cost_payment_reference,
|
||||
orders.cost_bill_number,
|
||||
orders.cost_base_value,
|
||||
orders.cost_quote_value,
|
||||
orders.cost_base_to_quote_currency_exchange_rate,
|
||||
orders.cost_base_tax,
|
||||
orders.cost_base_service_charge,
|
||||
orders.cost_value_rm,
|
||||
orders.cost_tax_rm,
|
||||
orders.cost_service_charge_rm,
|
||||
orders.total_cost_value_rm,
|
||||
orders.cost_created_datetime,
|
||||
orders.cost_pending_submission_datetime,
|
||||
orders.cost_pending_verification_datetime,
|
||||
orders.cost_approved_datetime,
|
||||
orders.cost_completed_datetime,
|
||||
orders.cost_rejected_datetime,
|
||||
|
||||
'{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime
|
||||
|
||||
FROM bookings
|
||||
|
||||
RIGHT JOIN transaction_orders_get_next_order_created_datetime
|
||||
ON (bookings.booking_id = transaction_orders_get_next_order_created_datetime.booking_id)
|
||||
|
||||
LEFT JOIN transaction_costs
|
||||
ON (transaction_orders_get_next_order_created_datetime.transaction_order_id = transaction_costs.transaction_order_id)
|
||||
FROM orders
|
||||
|
||||
LEFT JOIN companies
|
||||
ON (bookings.company_id = companies.company_id)
|
||||
ON (orders.company_id = companies.company_id)
|
||||
|
||||
LEFT JOIN companies AS supplier_companies
|
||||
ON (orders.supplier_company_id = supplier_companies.company_id)
|
||||
|
||||
LEFT JOIN dates AS order_created_dates
|
||||
ON (DATE(transaction_orders_get_next_order_created_datetime.order_created_datetime) = order_created_dates.date_day)
|
||||
ON (DATE(orders.order_created_datetime) = order_created_dates.date_day)
|
||||
|
||||
LEFT JOIN currencies AS fix_currencies
|
||||
ON (bookings.fix_currency_id = fix_currencies.currency_id)
|
||||
ON (orders.fix_currency_id = fix_currencies.currency_id)
|
||||
|
||||
LEFT JOIN currencies AS quote_currencies
|
||||
ON (bookings.quote_currency_id = quote_currencies.currency_id)
|
||||
ON (orders.quote_currency_id = quote_currencies.currency_id)
|
||||
|
||||
LEFT JOIN currencies AS base_currencies
|
||||
ON (bookings.base_currency_id = base_currencies.currency_id)
|
||||
ON (orders.base_currency_id = base_currencies.currency_id)
|
||||
),
|
||||
|
||||
--FINAL
|
||||
@@ -168,11 +210,14 @@ final__rep_exchange__daily_orders AS (
|
||||
company_autocount_id,
|
||||
user_id,
|
||||
cost_id,
|
||||
supplier_company_id,
|
||||
currency_vendor_bank_id,
|
||||
booking_id,
|
||||
booking_marking_id,
|
||||
|
||||
-- dimensions
|
||||
company_name,
|
||||
supplier_company_name,
|
||||
fix_currency_name,
|
||||
quote_currency_name,
|
||||
base_currency_name,
|
||||
@@ -206,6 +251,8 @@ final__rep_exchange__daily_orders AS (
|
||||
is_first_time_booking_company_completed,
|
||||
is_first_time_booking_user,
|
||||
is_first_time_booking_user_completed,
|
||||
is_on_time_delivery_website_sla,
|
||||
is_on_time_delivery_customer_expectation,
|
||||
|
||||
-- measures
|
||||
order_base_to_quote_currency_exchange_rate,
|
||||
@@ -234,12 +281,14 @@ final__rep_exchange__daily_orders AS (
|
||||
-- date/times
|
||||
order_created_datetime,
|
||||
order_created_week,
|
||||
order_expected_expired_datetime,
|
||||
order_pending_submission_datetime,
|
||||
order_pending_verification_datetime,
|
||||
order_approved_datetime,
|
||||
order_completed_datetime,
|
||||
order_rejected_datetime,
|
||||
order_suspended_datetime,
|
||||
order_expired_datetime,
|
||||
next_order_created_datetime,
|
||||
cost_created_datetime,
|
||||
cost_pending_submission_datetime,
|
||||
@@ -251,11 +300,14 @@ final__rep_exchange__daily_orders AS (
|
||||
booking_approved_datetime,
|
||||
booking_completed_datetime,
|
||||
booking_suspended_datetime,
|
||||
estimated_order_delivery_datetime_website_sla,
|
||||
estimated_order_delivery_datetime_customer_expectation,
|
||||
|
||||
-- metadata
|
||||
_dbt_ran_datetime
|
||||
|
||||
FROM fct_and_dim_joins
|
||||
|
||||
)
|
||||
|
||||
SELECT * FROM final__rep_exchange__daily_orders
|
||||
Reference in New Issue
Block a user