From cfc1e36d9a1885b1687985612eee5c35e26018ff Mon Sep 17 00:00:00 2001 From: CIEF ACC1 Date: Fri, 29 Dec 2023 09:42:08 +0000 Subject: [PATCH] Shipping data model - company lists --- .../reporting/rep_shipping__company_lists.sql | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 models/marts/reporting/rep_shipping__company_lists.sql diff --git a/models/marts/reporting/rep_shipping__company_lists.sql b/models/marts/reporting/rep_shipping__company_lists.sql new file mode 100644 index 0000000..dae613b --- /dev/null +++ b/models/marts/reporting/rep_shipping__company_lists.sql @@ -0,0 +1,96 @@ +-- AVAILABLE FILTER VALUE +-- SOURCE: preset_custom_filter Column: day_use_to_churn +{% set day_use_to_churn = 120 %} + +-- IMPORT +WITH companies AS ( + SELECT * FROM {{ ref('dim_shipping__companies') }} +), + +origin_warehouse_shipping_packing_lists AS ( + SELECT * FROM {{ ref('fct_shipping__origin_warehouse_shipping_packing_lists') }} +), + + +-- LOGIC +company_agg AS ( + + SELECT + companies.sub_company_id, + companies.sub_company_marking_id, + companies.is_migrated_company, + companies.sub_company_created_datetime, + + COUNT(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_packing_list_id) AS count_order, + MAX(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime) AS last_order_created_datetime, + COALESCE(last_order_created_datetime, sub_company_created_datetime) AS last_activity_datetime, + + COUNT(IFF( + origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_status IN ('APPROVED', 'COMPLETED'), + origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_packing_list_id, + null + )) AS count_approved_completed_order, + + IFF(MAX( + origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime IS NULL + ), 1, 0 + ) AS is_never_order_company, + + IFF(DATEDIFF( + day, last_activity_datetime, CURRENT_DATE() + ) >= {{day_use_to_churn}}, + 1, 0 + ) AS is_churn_company, + + IFF(is_churn_company = 1, + DATEDIFF(day, sub_company_created_datetime, last_activity_datetime) + {{day_use_to_churn}}, + null + ) AS create_to_churn_day, + + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM companies + + LEFT JOIN origin_warehouse_shipping_packing_lists + ON (companies.sub_company_id = origin_warehouse_shipping_packing_lists.sub_company_id) + + GROUP BY + companies.sub_company_id, + companies.sub_company_marking_id, + companies.is_migrated_company, + companies.sub_company_created_datetime + +), + + +-- FINAL +final__rep_shipping__company_lists AS ( + + SELECT + -- id + sub_company_id, + sub_company_marking_id, + + -- dimensions + is_migrated_company, + is_never_order_company, + is_churn_company, + + -- measures + count_order, + count_approved_completed_order, + create_to_churn_day, + + -- date/time + sub_company_created_datetime, + last_order_created_datetime, + last_activity_datetime, + + -- metadata + _dbt_ran_datetime + + FROM company_agg + +) + +SELECT * FROM final__rep_shipping__company_lists \ No newline at end of file