mirror of
https://gitlab.com/cief-data/dbt_cloud.git
synced 2026-08-19 04:14:00 +00:00
replaced new fct orders table
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
-- AVAILALE FILTER VALUE
|
||||
{% set day_use_to_churn = 61 %}
|
||||
|
||||
|
||||
-- IMPORT
|
||||
WITH companies AS (
|
||||
SELECT * FROM {{ ref('dim_exchange__companies') }}
|
||||
),
|
||||
|
||||
transaction_orders AS (
|
||||
SELECT * FROM {{ ref('fct_exchange__transaction_orders') }}
|
||||
SELECT * FROM {{ ref('fct_exchange__daily_orders') }}
|
||||
),
|
||||
|
||||
|
||||
@@ -18,15 +19,15 @@ remove_supplier_company AS (
|
||||
FROM companies
|
||||
|
||||
WHERE business_type = 'IMPORTER'
|
||||
|
||||
),
|
||||
|
||||
|
||||
order_date_row_rank AS (
|
||||
SELECT
|
||||
*,
|
||||
row_number() OVER
|
||||
(PARTITION BY transaction_orders.company_id
|
||||
ORDER BY transaction_orders.order_created_datetime) AS row_rank_index
|
||||
(PARTITION BY company_id
|
||||
ORDER BY order_created_datetime, order_id) AS row_rank_index
|
||||
|
||||
FROM
|
||||
transaction_orders
|
||||
@@ -36,54 +37,54 @@ get_next_and_previous_order_date_orders AS (
|
||||
SELECT
|
||||
order_date_row_rank.*,
|
||||
companies.is_migrated_company,
|
||||
next_order_date_row_rank_clone.order_created_datetime AS next_order_created_datetime,
|
||||
previous_order_date_row_rank_clone.order_created_datetime AS previous_order_created_datetime,
|
||||
previous_order_date_row_rank_clone.order_created_datetime AS previous_order_created_datetime,
|
||||
companies.company_marking_id,
|
||||
companies.company_created_datetime
|
||||
companies.company_created_datetime
|
||||
|
||||
FROM order_date_row_rank
|
||||
|
||||
LEFT JOIN companies
|
||||
ON (order_date_row_rank.company_id = companies.company_id)
|
||||
|
||||
LEFT JOIN order_date_row_rank AS next_order_date_row_rank_clone
|
||||
LEFT JOIN order_date_row_rank AS next_order_date_row_rank_clone
|
||||
ON order_date_row_rank.row_rank_index = next_order_date_row_rank_clone.row_rank_index - 1
|
||||
AND order_date_row_rank.company_id = next_order_date_row_rank_clone.company_id
|
||||
|
||||
LEFT JOIN order_date_row_rank AS previous_order_date_row_rank_clone
|
||||
LEFT JOIN order_date_row_rank AS previous_order_date_row_rank_clone
|
||||
ON order_date_row_rank.row_rank_index = previous_order_date_row_rank_clone.row_rank_index + 1
|
||||
AND order_date_row_rank.company_id = previous_order_date_row_rank_clone.company_id
|
||||
AND order_date_row_rank.company_id = previous_order_date_row_rank_clone.company_id
|
||||
),
|
||||
|
||||
-- Register / Churn / Register; Churn
|
||||
company_register_events AS (
|
||||
SELECT
|
||||
remove_supplier_company.company_id AS company_id,
|
||||
remove_supplier_company.company_id AS company_id,
|
||||
remove_supplier_company.is_migrated_company,
|
||||
IFF(MAX(transaction_orders.company_id) IS NULL, 1, 0) AS is_never_order_company,
|
||||
IFF(MAX(transaction_orders.company_id) IS NULL, 1, 0) AS is_never_order_company,
|
||||
remove_supplier_company.company_marking_id,
|
||||
'Register' AS register_event,
|
||||
'Register' AS register_event,
|
||||
IFF(
|
||||
DATEDIFF(
|
||||
day,
|
||||
remove_supplier_company.company_created_datetime,
|
||||
COALESCE(MIN(transaction_orders.order_created_datetime), CURRENT_DATE())
|
||||
)
|
||||
>= {{day_use_to_churn}},
|
||||
'Churn',
|
||||
NULL) AS churn_event,
|
||||
|
||||
RTRIM(CONCAT(
|
||||
CASE WHEN register_event IS NOT NULL THEN 'Register, ' ELSE '' END,
|
||||
CASE WHEN churn_event IS NOT NULL THEN 'Churn, ' ELSE '' END ),', ' ) AS concat_event,
|
||||
|
||||
remove_supplier_company.company_created_datetime AS event_datetime
|
||||
>= {{day_use_to_churn}}, 'Churn', NULL
|
||||
) AS churn_event,
|
||||
|
||||
RTRIM(
|
||||
CONCAT(
|
||||
CASE WHEN register_event IS NOT NULL THEN 'Register, ' ELSE '' END,
|
||||
CASE WHEN churn_event IS NOT NULL THEN 'Churn, ' ELSE '' END ),', '
|
||||
) AS concat_event,
|
||||
|
||||
remove_supplier_company.company_created_datetime AS event_datetime
|
||||
|
||||
FROM remove_supplier_company
|
||||
|
||||
|
||||
LEFT JOIN transaction_orders
|
||||
ON (remove_supplier_company.company_id = transaction_orders.company_id)
|
||||
|
||||
ON (remove_supplier_company.company_id = transaction_orders.company_id)
|
||||
|
||||
GROUP BY
|
||||
remove_supplier_company.company_id,
|
||||
remove_supplier_company.company_marking_id,
|
||||
@@ -98,7 +99,65 @@ firsttime_repeat_churn_reactive_order_events AS (
|
||||
company_id,
|
||||
company_marking_id,
|
||||
is_migrated_company,
|
||||
0 AS is_never_order_company,
|
||||
0 AS is_never_order_company,
|
||||
order_id AS transaction_order_id,
|
||||
order_status,
|
||||
order_payment_method AS payment_method,
|
||||
base_currency_id,
|
||||
quote_currency_id,
|
||||
order_base_to_quote_currency_exchange_rate AS base_to_quote_currency_exchange_rate,
|
||||
order_value_rm AS value_rm,
|
||||
order_tax_rm AS tax_rm,
|
||||
order_service_charge_rm AS service_charge_rm,
|
||||
|
||||
IFF(is_first_time_order_company = 1, 'First Time Order', NULL) AS first_time_order_event,
|
||||
IFF(is_first_time_order_company = 0, 'Repeat', NULL) AS repeat_event,
|
||||
IFF(DATEDIFF(day, order_created_datetime, COALESCE(next_order_created_datetime, CURRENT_DATE())) >= {{day_use_to_churn}}, 'Churn', NULL ) AS churn_event,
|
||||
IFF(DATEDIFF(day, COALESCE(previous_order_created_datetime, company_created_datetime), order_created_datetime) >= {{day_use_to_churn}}, 'Reactive', NULL) AS reactive_event,
|
||||
|
||||
RTRIM(CONCAT(
|
||||
CASE WHEN first_time_order_event IS NOT NULL THEN 'First Time Order, ' ELSE '' END,
|
||||
CASE WHEN repeat_event IS NOT NULL THEN 'Repeat, ' ELSE '' END,
|
||||
CASE WHEN reactive_event IS NOT NULL THEN 'Reactive, ' ELSE '' END,
|
||||
CASE WHEN churn_event IS NOT NULL THEN 'Churn, ' ELSE '' END ),', ' ) AS concat_event,
|
||||
|
||||
order_created_datetime AS event_datetime
|
||||
|
||||
FROM get_next_and_previous_order_date_orders
|
||||
),
|
||||
|
||||
union_event_tables AS (
|
||||
SELECT
|
||||
company_id,
|
||||
company_marking_id,
|
||||
is_migrated_company,
|
||||
is_never_order_company,
|
||||
NULL AS transaction_order_id,
|
||||
NULL AS order_status,
|
||||
NULL AS payment_method,
|
||||
NULL AS base_currency_id,
|
||||
NULL AS quote_currency_id,
|
||||
NULL AS base_to_quote_currency_exchange_rate,
|
||||
NULL AS value_rm,
|
||||
NULL AS tax_rm,
|
||||
NULL AS service_charge_rm,
|
||||
register_event,
|
||||
NULL AS first_time_order_event,
|
||||
NULL AS repeat_event,
|
||||
churn_event,
|
||||
NULL AS reactive_event,
|
||||
concat_event,
|
||||
event_datetime
|
||||
|
||||
FROM company_register_events
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
company_id,
|
||||
company_marking_id,
|
||||
is_migrated_company,
|
||||
is_never_order_company,
|
||||
transaction_order_id,
|
||||
order_status,
|
||||
payment_method,
|
||||
@@ -108,72 +167,15 @@ firsttime_repeat_churn_reactive_order_events AS (
|
||||
value_rm,
|
||||
tax_rm,
|
||||
service_charge_rm,
|
||||
IFF(is_first_time_company = 1, 'First Time Order', NULL) AS first_time_order_event,
|
||||
IFF(is_first_time_company = 0, 'Repeat', NULL) AS repeat_event,
|
||||
IFF(DATEDIFF(day, order_created_datetime, COALESCE(next_order_created_datetime, CURRENT_DATE())) >= {{day_use_to_churn}}, 'Churn', NULL ) AS churn_event,
|
||||
IFF(DATEDIFF(day, COALESCE(previous_order_created_datetime, company_created_datetime), order_created_datetime) >= {{day_use_to_churn}}, 'Reactive', NULL) AS reactive_event,
|
||||
|
||||
RTRIM(CONCAT(
|
||||
CASE WHEN first_time_order_event IS NOT NULL THEN 'First Time Order, ' ELSE '' END,
|
||||
CASE WHEN repeat_event IS NOT NULL THEN 'Repeat, ' ELSE '' END,
|
||||
CASE WHEN reactive_event IS NOT NULL THEN 'Reactive, ' ELSE '' END,
|
||||
CASE WHEN churn_event IS NOT NULL THEN 'Churn, ' ELSE '' END ),', ' ) AS concat_event,
|
||||
NULL AS register_event,
|
||||
first_time_order_event,
|
||||
repeat_event,
|
||||
churn_event,
|
||||
reactive_event,
|
||||
concat_event,
|
||||
event_datetime
|
||||
|
||||
order_created_datetime AS event_datetime
|
||||
|
||||
FROM get_next_and_previous_order_date_orders
|
||||
),
|
||||
|
||||
union_event_tables AS (
|
||||
SELECT
|
||||
company_id,
|
||||
company_marking_id,
|
||||
is_migrated_company,
|
||||
is_never_order_company,
|
||||
NULL AS transaction_order_id,
|
||||
NULL AS order_status,
|
||||
NULL AS payment_method,
|
||||
NULL AS base_currency_id,
|
||||
NULL AS quote_currency_id,
|
||||
NULL AS base_to_quote_currency_exchange_rate,
|
||||
NULL AS value_rm,
|
||||
NULL AS tax_rm,
|
||||
NULL AS service_charge_rm,
|
||||
register_event,
|
||||
NULL AS first_time_order_event,
|
||||
NULL AS repeat_event,
|
||||
churn_event,
|
||||
NULL AS reactive_event,
|
||||
concat_event,
|
||||
event_datetime
|
||||
|
||||
FROM company_register_events
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
company_id,
|
||||
company_marking_id,
|
||||
is_migrated_company,
|
||||
is_never_order_company,
|
||||
transaction_order_id,
|
||||
order_status,
|
||||
payment_method,
|
||||
base_currency_id,
|
||||
quote_currency_id,
|
||||
base_to_quote_currency_exchange_rate,
|
||||
value_rm,
|
||||
tax_rm,
|
||||
service_charge_rm,
|
||||
NULL AS register_event,
|
||||
first_time_order_event,
|
||||
repeat_event,
|
||||
churn_event,
|
||||
reactive_event,
|
||||
concat_event,
|
||||
event_datetime
|
||||
|
||||
FROM firsttime_repeat_churn_reactive_order_events
|
||||
FROM firsttime_repeat_churn_reactive_order_events
|
||||
),
|
||||
|
||||
-- FINAL
|
||||
@@ -209,7 +211,7 @@ final__rep_exchange__company_engagement_behaviors AS (
|
||||
|
||||
-- metadata
|
||||
'{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime
|
||||
|
||||
|
||||
FROM union_event_tables
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user