From 16428b7acbdcd040fafa43b3a700590854fdbaa7 Mon Sep 17 00:00:00 2001 From: CIEF ACC1 Date: Wed, 27 Mar 2024 07:22:19 +0000 Subject: [PATCH] Refactored shipping dataset and fixed order created datetime from the right column. --- ...booking_delivery_and_billing_addresses.sql | 123 ---- ...house_last_mile_transport_arrangements.sql | 122 ---- ...ing__first_mile_transport_arrangements.sql | 100 +++ ...ping__last_mile_transport_arrangements.sql | 120 ++++ ...pping__mid_mile_transport_arrangements.sql | 150 +++++ ...tainer_shipping_transport_arrangements.sql | 150 ----- ...rehouse_receive_transport_arrangements.sql | 101 --- ...ng__packages_group_by_packing_list_ids.sql | 129 ---- ...ice_payments_group_by_packing_list_ids.sql | 109 ---- ...acking_list_brg_shipping_packing_lists.sql | 18 +- .../rep_shipping__cohort_analysis.sql | 32 +- ...shipping__company_engagement_behaviors.sql | 45 +- .../reporting/rep_shipping__company_lists.sql | 19 +- .../rep_shipping__company_order_usages.sql | 50 +- ...ping__origin_warehouse_shipping_orders.sql | 136 ++-- models/marts/reporting/rep_shipping__rfm.sql | 42 +- .../rep_shipping__survival_analysis.sql | 34 +- .../warehouse/fct_shipping__bookings.sql | 198 ++++++ .../marts/warehouse/fct_shipping__orders.sql | 366 +++++++++++ ...origin_warehouse_receive_packing_lists.sql | 590 ------------------ ...rigin_warehouse_shipping_packing_lists.sql | 360 ----------- ...g__supply_chain_transport_arrangements.sql | 276 ++++++++ ...hipping__packing_list_invoice_payments.sql | 6 +- 23 files changed, 1385 insertions(+), 1891 deletions(-) delete mode 100644 models/intermediate/int_shipping__booking_delivery_and_billing_addresses.sql delete mode 100644 models/intermediate/int_shipping__destination_warehouse_last_mile_transport_arrangements.sql create mode 100644 models/intermediate/int_shipping__first_mile_transport_arrangements.sql create mode 100644 models/intermediate/int_shipping__last_mile_transport_arrangements.sql create mode 100644 models/intermediate/int_shipping__mid_mile_transport_arrangements.sql delete mode 100644 models/intermediate/int_shipping__origin_warehouse_container_shipping_transport_arrangements.sql delete mode 100644 models/intermediate/int_shipping__origin_warehouse_receive_transport_arrangements.sql delete mode 100644 models/intermediate/int_shipping__packages_group_by_packing_list_ids.sql delete mode 100644 models/intermediate/int_shipping__packing_list_invoice_payments_group_by_packing_list_ids.sql create mode 100644 models/marts/warehouse/fct_shipping__bookings.sql create mode 100644 models/marts/warehouse/fct_shipping__orders.sql delete mode 100644 models/marts/warehouse/fct_shipping__origin_warehouse_receive_packing_lists.sql delete mode 100644 models/marts/warehouse/fct_shipping__origin_warehouse_shipping_packing_lists.sql create mode 100644 models/marts/warehouse/fct_shipping__supply_chain_transport_arrangements.sql diff --git a/models/intermediate/int_shipping__booking_delivery_and_billing_addresses.sql b/models/intermediate/int_shipping__booking_delivery_and_billing_addresses.sql deleted file mode 100644 index ada8423..0000000 --- a/models/intermediate/int_shipping__booking_delivery_and_billing_addresses.sql +++ /dev/null @@ -1,123 +0,0 @@ --- IMPORT -WITH booking_addresses AS ( - SELECT * FROM {{ ref('stg_shipping__booking_addresses') }} -), - - --- LOGIC -booking_addresses_clean AS ( - SELECT - *, - ROW_NUMBER() OVER (PARTITION BY booking_id, address_type ORDER BY created_datetime DESC) AS row_number_index - - FROM booking_addresses - - WHERE - deleted_datetime IS NULL - AND - status = 'APPROVED' - - QUALIFY row_number_index = 1 -), - -group_by_booking_id AS ( - SELECT - booking_id, - MAX(IFF(address_type = 'DELIVERY', booking_address_id, NULL)) AS delivery_booking_address_id, - MAX(IFF(address_type = 'DELIVERY', district_id, NULL)) AS delivery_address_district_id, - MAX(IFF(address_type = 'DELIVERY', state_id, NULL)) AS delivery_address_state_id, - MAX(IFF(address_type = 'DELIVERY', country_id, NULL)) AS delivery_address_country_id, - MAX(IFF(address_type = 'DELIVERY', address_reference, NULL)) AS delivery_address_reference, - MAX(IFF(address_type = 'DELIVERY', address_line_one, NULL)) AS delivery_address_line_one, - MAX(IFF(address_type = 'DELIVERY', address_line_two, NULL)) AS delivery_address_line_two, - MAX(IFF(address_type = 'DELIVERY', district_name, NULL)) AS delivery_address_district_name, - MAX(IFF(address_type = 'DELIVERY', state_name, NULL)) AS delivery_address_state_name, - MAX(IFF(address_type = 'DELIVERY', country_name, NULL)) AS delivery_address_country_name, - MAX(IFF(address_type = 'DELIVERY', postcode, NULL)) AS delivery_address_postcode, - MAX(IFF(address_type = 'DELIVERY', address_type, NULL)) AS delivery_address_type, - MAX(IFF(address_type = 'DELIVERY', is_default_address, NULL)) AS is_default_delivery_address, - MAX(IFF(address_type = 'DELIVERY', status, NULL)) AS delivery_address_status, - MAX(IFF(address_type = 'DELIVERY', deleted_datetime, NULL)) AS delivery_address_deleted_datetime, - MAX(IFF(address_type = 'DELIVERY', created_datetime, NULL)) AS delivery_address_created_datetime, - MAX(IFF(address_type = 'DELIVERY', updated_datetime, NULL)) AS delivery_address_updated_datetime, - - MAX(IFF(address_type = 'BILLING', booking_address_id, NULL)) AS billing_booking_address_id, - MAX(IFF(address_type = 'BILLING', district_id, NULL)) AS billing_address_district_id, - MAX(IFF(address_type = 'BILLING', state_id, NULL)) AS billing_address_state_id, - MAX(IFF(address_type = 'BILLING', country_id, NULL)) AS billing_address_country_id, - MAX(IFF(address_type = 'BILLING', address_reference, NULL)) AS billing_address_reference, - MAX(IFF(address_type = 'BILLING', address_line_one, NULL)) AS billing_address_line_one, - MAX(IFF(address_type = 'BILLING', address_line_two, NULL)) AS billing_address_line_two, - MAX(IFF(address_type = 'BILLING', district_name, NULL)) AS billing_address_district_name, - MAX(IFF(address_type = 'BILLING', state_name, NULL)) AS billing_address_state_name, - MAX(IFF(address_type = 'BILLING', country_name, NULL)) AS billing_address_country_name, - MAX(IFF(address_type = 'BILLING', postcode, NULL)) AS billing_address_postcode, - MAX(IFF(address_type = 'BILLING', address_type, NULL)) AS billing_address_type, - MAX(IFF(address_type = 'BILLING', is_default_address, NULL)) AS is_default_billing_address, - MAX(IFF(address_type = 'BILLING', status, NULL)) AS billing_address_status, - MAX(IFF(address_type = 'BILLING', deleted_datetime, NULL)) AS billing_address_deleted_datetime, - MAX(IFF(address_type = 'BILLING', created_datetime, NULL)) AS billing_address_created_datetime, - MAX(IFF(address_type = 'BILLING', updated_datetime, NULL)) AS billing_address_updated_datetime, - - '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - - FROM booking_addresses_clean - - GROUP BY - booking_id -), - - --- FINAL -final__int_shipping__booking_delivery_and_billing_addresses AS ( - SELECT - -- ids - booking_id, - delivery_booking_address_id, - delivery_address_district_id, - delivery_address_state_id, - delivery_address_country_id, - billing_booking_address_id, - billing_address_district_id, - billing_address_state_id, - billing_address_country_id, - - -- dimensions - delivery_address_reference, - delivery_address_line_one, - delivery_address_line_two, - delivery_address_district_name, - delivery_address_state_name, - delivery_address_country_name, - delivery_address_postcode, - delivery_address_type, - is_default_delivery_address, - delivery_address_status, - billing_address_reference, - billing_address_line_one, - billing_address_line_two, - billing_address_district_name, - billing_address_state_name, - billing_address_country_name, - billing_address_postcode, - billing_address_type, - is_default_billing_address, - billing_address_status, - - -- measures - - -- date/times - delivery_address_deleted_datetime, - delivery_address_created_datetime, - delivery_address_updated_datetime, - billing_address_deleted_datetime, - billing_address_created_datetime, - billing_address_updated_datetime, - - -- metadata - _dbt_ran_datetime - - FROM group_by_booking_id -) - -SELECT * FROM final__int_shipping__booking_delivery_and_billing_addresses \ No newline at end of file diff --git a/models/intermediate/int_shipping__destination_warehouse_last_mile_transport_arrangements.sql b/models/intermediate/int_shipping__destination_warehouse_last_mile_transport_arrangements.sql deleted file mode 100644 index 7fbd013..0000000 --- a/models/intermediate/int_shipping__destination_warehouse_last_mile_transport_arrangements.sql +++ /dev/null @@ -1,122 +0,0 @@ --- IMPORT -WITH warehouse_shipping_packing_lists AS ( - SELECT * FROM {{ ref('stg_shipping__warehouse_shipping_packing_lists') }} -), - -packing_list_transport_arrangments AS ( - SELECT * FROM {{ ref('stg_shipping__packing_list_transport_arrangments') }} -), - - --- LOGIC -warehouse_shipping_join_transport_arrangements AS ( - - SELECT - warehouse_shipping_packing_lists.new_warehouse_shipping_packing_list_id, - warehouse_shipping_packing_lists.old_warehouse_shipping_packing_list_id, - warehouse_shipping_packing_lists.warehouse_order_number, - warehouse_shipping_packing_lists.booking_id, - warehouse_shipping_packing_lists.warehouse_sub_company_id, - warehouse_shipping_packing_lists.has_replaced_by_new_id, - warehouse_shipping_packing_lists.packing_list_type, - warehouse_shipping_packing_lists.reference_contract AS destination_warehouse_reference_contract, - warehouse_shipping_packing_lists.status AS destination_warehouse_shipping_status, - warehouse_shipping_packing_lists.deleted_datetime AS destination_warehouse_shipping_deleted_datetime, - - packing_list_transport_arrangments.transport_arrangement_id AS destination_warehouse_transport_arrangement_id, - packing_list_transport_arrangments.transport_mode AS destination_warehouse_transport_transport_mode, - packing_list_transport_arrangments.courier AS destination_warehouse_transport_courier, - packing_list_transport_arrangments.tracking_number AS destination_warehouse_transport_tracking_number, - packing_list_transport_arrangments.status AS destination_warehouse_transport_status, - packing_list_transport_arrangments.number_of_etd_datetime_postpone AS destination_warehouse_transport_number_of_etd_datetime_postpone, - packing_list_transport_arrangments.number_of_eta_datetime_postpone AS destination_warehouse_transport_number_of_eta_datetime_postpone, - packing_list_transport_arrangments.dispatched_datetime AS destination_warehouse_transport_dispatched_datetime, - packing_list_transport_arrangments.droped_datetime AS destination_warehouse_transport_droped_datetime, - packing_list_transport_arrangments.etd_datetimes AS destination_warehouse_transport_etd_datetimes, - packing_list_transport_arrangments.first_etd_datetime AS destination_warehouse_transport_first_etd_datetime, - packing_list_transport_arrangments.last_etd_datetime AS destination_warehouse_transport_last_etd_datetime, - packing_list_transport_arrangments.eta_datetimes AS destination_warehouse_transport_eta_datetimes, - packing_list_transport_arrangments.first_eta_datetime AS destination_warehouse_transport_first_eta_datetime, - packing_list_transport_arrangments.last_eta_datetime AS destination_warehouse_transport_last_eta_datetime, - packing_list_transport_arrangments.first_estimate_schedule_created_datetime AS destination_warehouse_transport_first_estimate_schedule_created_datetime, - packing_list_transport_arrangments.last_estimate_schedule_created_datetime AS destination_warehouse_transport_last_estimate_schedule_created_datetime, - packing_list_transport_arrangments.created_datetime AS destination_warehouse_transport_created_datetime, - packing_list_transport_arrangments.updated_datetime AS destination_warehouse_transport_updated_datetime - - FROM warehouse_shipping_packing_lists - - LEFT JOIN packing_list_transport_arrangments - ON ( - warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id = packing_list_transport_arrangments.packing_list_id - OR - warehouse_shipping_packing_lists.new_origin_warehouse_shipping_packing_list_id = packing_list_transport_arrangments.packing_list_id - ) - -), - -get_lastest_created_row_only AS ( --Because the dataset not accurate, many duplicate withough deleted all those duplicate row - - SELECT - *, - ROW_NUMBER() OVER (PARTITION BY old_origin_warehouse_shipping_packing_list_id ORDER BY destination_warehouse_transport_created_datetime DESC) AS row_number_index, - - '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - - FROM warehouse_shipping_join_transport_arrangements - - QUALIFY - row_number_index = 1 - -), - - --- FINAL -final__int_shipping__destination_warehouse_last_mile_transport_arrangements AS ( - - SELECT - -- ids - new_origin_warehouse_shipping_packing_list_id, - old_origin_warehouse_shipping_packing_list_id, - destination_warehouse_transport_arrangement_id, - destination_warehouse_transport_arrangement_id, - booking_id, - warehouse_sub_company_id, - warehouse_order_number, - - -- dimensions - has_replaced_by_new_id, - reference_contract, - packing_list_type, - destination_warehouse_shipping_status, - destination_warehouse_transport_transport_mode, - destination_warehouse_transport_courier, - destination_warehouse_transport_tracking_number, - destination_warehouse_transport_status, - - -- measures - destination_warehouse_transport_number_of_etd_datetime_postpone, - destination_warehouse_transport_number_of_eta_datetime_postpone, - - -- date/times - destination_warehouse_transport_dispatched_datetime, - destination_warehouse_transport_droped_datetime, - destination_warehouse_transport_etd_datetimes, - destination_warehouse_transport_first_etd_datetime, - destination_warehouse_transport_last_etd_datetime, - destination_warehouse_transport_eta_datetimes, - destination_warehouse_transport_first_eta_datetime, - destination_warehouse_transport_last_eta_datetime, - destination_warehouse_transport_first_estimate_schedule_created_datetime, - destination_warehouse_transport_last_estimate_schedule_created_datetime, - destination_warehouse_transport_created_datetime, - destination_warehouse_transport_updated_datetime, - - -- metadata - _dbt_ran_datetime - - FROM get_lastest_created_row_only - -) - -SELECT * FROM final__int_shipping__destination_warehouse_last_mile_transport_arrangements --- Missing information on last mile delivery due to supplier not giving info. \ No newline at end of file diff --git a/models/intermediate/int_shipping__first_mile_transport_arrangements.sql b/models/intermediate/int_shipping__first_mile_transport_arrangements.sql new file mode 100644 index 0000000..b85c739 --- /dev/null +++ b/models/intermediate/int_shipping__first_mile_transport_arrangements.sql @@ -0,0 +1,100 @@ +-- IMPORT +WITH origin_warehouse_receive_packing_lists AS ( + SELECT * FROM {{ ref('stg_shipping__origin_warehouse_receive_packing_lists') }} +), + +packing_list_transport_arrangments AS ( + SELECT * FROM {{ ref('stg_shipping__packing_list_transport_arrangments') }} +), + + +-- LOGIC +origin_factory_packing_list_join_transport_arrangments AS ( + + SELECT + origin_warehouse_receive_packing_lists.new_origin_warehouse_receive_packing_list_id AS new_first_mile_packing_list_id, + origin_warehouse_receive_packing_lists.old_origin_warehouse_receive_packing_list_id AS old_first_mile_packing_list_id, + origin_warehouse_receive_packing_lists.warehouse_order_number AS first_mile_warehouse_order_number, + origin_warehouse_receive_packing_lists.booking_id AS first_mile_booking_id, + origin_warehouse_receive_packing_lists.warehouse_sub_company_id AS first_mile_warehouse_sub_company_id, + origin_warehouse_receive_packing_lists.has_replaced_by_new_id AS first_mile_has_replaced_by_new_id, + origin_warehouse_receive_packing_lists.reference_contract AS first_mile_reference_contract, + origin_warehouse_receive_packing_lists.status AS first_mile_receive_status, + + packing_list_transport_arrangments.transport_arrangement_id AS first_mile_transport_arrangement_id, + packing_list_transport_arrangments.transport_mode AS first_mile_transport_mode, + packing_list_transport_arrangments.courier AS first_mile_transport_courier, + packing_list_transport_arrangments.tracking_number AS first_mile_transport_tracking_number, + packing_list_transport_arrangments.status AS first_mile_transport_status, + packing_list_transport_arrangments.number_of_etd_datetime_postpone AS first_mile_transport_number_of_etd_datetime_postpone, + packing_list_transport_arrangments.number_of_eta_datetime_postpone AS first_mile_transport_number_of_eta_datetime_postpone, + packing_list_transport_arrangments.dispatched_datetime AS first_mile_dispatched_datetime, + packing_list_transport_arrangments.droped_datetime AS first_mile_received_datetime, + packing_list_transport_arrangments.etd_datetimes AS first_mile_transport_etd_datetimes, + packing_list_transport_arrangments.first_etd_datetime AS first_mile_transport_first_etd_datetime, + packing_list_transport_arrangments.last_etd_datetime AS first_mile_transport_last_etd_datetime, + packing_list_transport_arrangments.eta_datetimes AS first_mile_transport_eta_datetimes, + packing_list_transport_arrangments.first_eta_datetime AS first_mile_transport_first_eta_datetime, + packing_list_transport_arrangments.last_eta_datetime AS first_mile_transport_last_eta_datetime, + packing_list_transport_arrangments.first_estimate_schedule_created_datetime AS first_mile_transport_first_estimate_schedule_created_datetime, + packing_list_transport_arrangments.last_estimate_schedule_created_datetime AS first_mile_transport_last_estimate_schedule_created_datetime, + packing_list_transport_arrangments.created_datetime AS first_mile_transport_created_datetime, + packing_list_transport_arrangments.updated_datetime AS first_mile_transport_updated_datetime, + + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM origin_warehouse_receive_packing_lists + + LEFT JOIN packing_list_transport_arrangments + ON (origin_warehouse_receive_packing_lists.old_origin_warehouse_receive_packing_list_id = packing_list_transport_arrangments.packing_list_id) + +), + + +-- FINAL +final__int_shipping__first_mile_transport_arrangements AS ( + + SELECT + -- ids + new_first_mile_packing_list_id, + old_first_mile_packing_list_id, + first_mile_transport_arrangement_id, + first_mile_booking_id, + first_mile_warehouse_order_number, + first_mile_warehouse_sub_company_id, + + -- dimensions + first_mile_has_replaced_by_new_id, + first_mile_reference_contract, + first_mile_transport_mode, + first_mile_transport_courier, + first_mile_transport_tracking_number, + first_mile_transport_status, + first_mile_receive_status, + + -- measures + first_mile_transport_number_of_etd_datetime_postpone, + first_mile_transport_number_of_eta_datetime_postpone, + + -- date/times + first_mile_dispatched_datetime, + first_mile_received_datetime, + first_mile_transport_etd_datetimes, + first_mile_transport_first_etd_datetime, + first_mile_transport_last_etd_datetime, + first_mile_transport_eta_datetimes, + first_mile_transport_first_eta_datetime, + first_mile_transport_last_eta_datetime, + first_mile_transport_first_estimate_schedule_created_datetime, + first_mile_transport_last_estimate_schedule_created_datetime, + first_mile_transport_created_datetime, + first_mile_transport_updated_datetime, + + -- metadata + _dbt_ran_datetime + + FROM origin_factory_packing_list_join_transport_arrangments + +) + +SELECT * FROM final__int_shipping__first_mile_transport_arrangements \ No newline at end of file diff --git a/models/intermediate/int_shipping__last_mile_transport_arrangements.sql b/models/intermediate/int_shipping__last_mile_transport_arrangements.sql new file mode 100644 index 0000000..acf4002 --- /dev/null +++ b/models/intermediate/int_shipping__last_mile_transport_arrangements.sql @@ -0,0 +1,120 @@ +-- IMPORT +WITH warehouse_shipping_packing_lists AS ( + SELECT * FROM {{ ref('stg_shipping__warehouse_shipping_packing_lists') }} +), + +packing_list_transport_arrangments AS ( + SELECT * FROM {{ ref('stg_shipping__packing_list_transport_arrangments') }} +), + + +-- LOGIC +warehouse_shipping_join_transport_arrangements AS ( + + SELECT + warehouse_shipping_packing_lists.new_warehouse_shipping_packing_list_id AS new_last_mile_packing_list_id, + warehouse_shipping_packing_lists.old_warehouse_shipping_packing_list_id AS old_last_mile_packing_list_id, + warehouse_shipping_packing_lists.warehouse_order_number AS last_mile_warehouse_order_number, + warehouse_shipping_packing_lists.booking_id AS last_mile_booking_id, + warehouse_shipping_packing_lists.warehouse_sub_company_id AS last_mile_warehouse_sub_company_id, + warehouse_shipping_packing_lists.has_replaced_by_new_id AS last_mile_has_replaced_by_new_id, + warehouse_shipping_packing_lists.packing_list_type AS last_mile_packing_list_type, + warehouse_shipping_packing_lists.reference_contract AS last_mile_reference_contract, + warehouse_shipping_packing_lists.status AS last_mile_shipping_status, + warehouse_shipping_packing_lists.deleted_datetime AS last_mile_shipping_deleted_datetime, + + packing_list_transport_arrangments.transport_arrangement_id AS last_mile_transport_arrangement_id, + packing_list_transport_arrangments.transport_mode AS last_mile_transport_mode, + packing_list_transport_arrangments.courier AS last_mile_transport_courier, + packing_list_transport_arrangments.tracking_number AS last_mile_transport_tracking_number, + packing_list_transport_arrangments.status AS last_mile_transport_status, + packing_list_transport_arrangments.number_of_etd_datetime_postpone AS last_mile_transport_number_of_etd_datetime_postpone, + packing_list_transport_arrangments.number_of_eta_datetime_postpone AS last_mile_transport_number_of_eta_datetime_postpone, + packing_list_transport_arrangments.dispatched_datetime AS last_mile_transport_dispatched_datetime, + packing_list_transport_arrangments.droped_datetime AS last_mile_transport_droped_datetime, + packing_list_transport_arrangments.etd_datetimes AS last_mile_transport_etd_datetimes, + packing_list_transport_arrangments.first_etd_datetime AS last_mile_transport_first_etd_datetime, + packing_list_transport_arrangments.last_etd_datetime AS last_mile_transport_last_etd_datetime, + packing_list_transport_arrangments.eta_datetimes AS last_mile_transport_eta_datetimes, + packing_list_transport_arrangments.first_eta_datetime AS last_mile_transport_first_eta_datetime, + packing_list_transport_arrangments.last_eta_datetime AS last_mile_transport_last_eta_datetime, + packing_list_transport_arrangments.first_estimate_schedule_created_datetime AS last_mile_transport_first_estimate_schedule_created_datetime, + packing_list_transport_arrangments.last_estimate_schedule_created_datetime AS last_mile_transport_last_estimate_schedule_created_datetime, + packing_list_transport_arrangments.created_datetime AS last_mile_transport_created_datetime, + packing_list_transport_arrangments.updated_datetime AS last_mile_transport_updated_datetime + + FROM warehouse_shipping_packing_lists + + LEFT JOIN packing_list_transport_arrangments + ON ( + warehouse_shipping_packing_lists.old_warehouse_shipping_packing_list_id = packing_list_transport_arrangments.packing_list_id + OR + warehouse_shipping_packing_lists.new_warehouse_shipping_packing_list_id = packing_list_transport_arrangments.packing_list_id + ) + +), + +get_lastest_created_row_only AS ( --Because the dataset not accurate, many duplicate withough deleted all those duplicate row + + SELECT + *, + ROW_NUMBER() OVER (PARTITION BY old_last_mile_packing_list_id ORDER BY last_mile_transport_created_datetime DESC) AS row_number_index, + + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM warehouse_shipping_join_transport_arrangements + + QUALIFY + row_number_index = 1 + +), + + +-- FINAL +final__int_shipping__last_mile_transport_arrangements AS ( + + SELECT + -- ids + new_last_mile_packing_list_id, + old_last_mile_packing_list_id, + last_mile_transport_arrangement_id, + last_mile_booking_id, + last_mile_warehouse_sub_company_id, + last_mile_warehouse_order_number, + + -- dimensions + last_mile_has_replaced_by_new_id, + last_mile_reference_contract, + last_mile_packing_list_type, + last_mile_shipping_status, + last_mile_transport_mode, + last_mile_transport_courier, + last_mile_transport_tracking_number, + last_mile_transport_status, + + -- measures + last_mile_transport_number_of_etd_datetime_postpone, + last_mile_transport_number_of_eta_datetime_postpone, + + -- date/times + last_mile_transport_dispatched_datetime, + last_mile_transport_droped_datetime, + last_mile_transport_etd_datetimes, + last_mile_transport_first_etd_datetime, + last_mile_transport_last_etd_datetime, + last_mile_transport_eta_datetimes, + last_mile_transport_first_eta_datetime, + last_mile_transport_last_eta_datetime, + last_mile_transport_first_estimate_schedule_created_datetime, + last_mile_transport_last_estimate_schedule_created_datetime, + last_mile_transport_created_datetime, + last_mile_transport_updated_datetime, + + -- metadata + _dbt_ran_datetime + + FROM get_lastest_created_row_only + +) + +SELECT * FROM final__int_shipping__last_mile_transport_arrangements \ No newline at end of file diff --git a/models/intermediate/int_shipping__mid_mile_transport_arrangements.sql b/models/intermediate/int_shipping__mid_mile_transport_arrangements.sql new file mode 100644 index 0000000..b379c79 --- /dev/null +++ b/models/intermediate/int_shipping__mid_mile_transport_arrangements.sql @@ -0,0 +1,150 @@ +-- IMPORT +WITH origin_warehouse_shipping_packing_lists AS ( + SELECT * FROM {{ ref('stg_shipping__warehouse_shipping_packing_lists') }} +), + +containers AS ( + SELECT * FROM {{ ref('stg_shipping__containers') }} +), + +containers_brg_packing_lists AS ( + SELECT * FROM {{ ref('stg_shipping__containers_brg_packing_lists') }} +), + +container_transport_arrangments AS ( + SELECT * FROM {{ ref('stg_shipping__container_transport_arrangments') }} +), + + +-- LOGIC +container_get_packing_list_ids AS ( + + SELECT + containers_brg_packing_lists.packing_list_id, + containers.* + + FROM containers + + LEFT JOIN containers_brg_packing_lists + ON (containers.container_id = containers_brg_packing_lists.container_id) + +), + +container_get_transport_arrangments AS ( + + SELECT + origin_warehouse_shipping_packing_lists.new_warehouse_shipping_packing_list_id AS new_mid_mile_packing_list_id, + origin_warehouse_shipping_packing_lists.old_warehouse_shipping_packing_list_id AS old_mid_mile_packing_list_id, + origin_warehouse_shipping_packing_lists.warehouse_order_number AS mid_mile_warehouse_order_number, + origin_warehouse_shipping_packing_lists.booking_id AS mid_mile_booking_id, + origin_warehouse_shipping_packing_lists.warehouse_sub_company_id AS mid_mile_warehouse_sub_company_id, + origin_warehouse_shipping_packing_lists.has_replaced_by_new_id AS mid_mile_has_replaced_by_new_id, + origin_warehouse_shipping_packing_lists.reference_contract AS mid_mile_reference_contract, + origin_warehouse_shipping_packing_lists.status AS mid_mile_shipping_status, + origin_warehouse_shipping_packing_lists.packing_list_type AS mid_mile_packing_list_type, + + container_get_packing_list_ids.packing_list_id AS mid_mile_container_packing_list_id, + container_get_packing_list_ids.container_id AS mid_mile_container_id, + container_get_packing_list_ids.sub_company_id AS mid_mile_container_warehouse_sub_company_id, + container_get_packing_list_ids.container_reference AS mid_mile_container_reference, + container_get_packing_list_ids.container_number AS mid_mile_container_number, + container_get_packing_list_ids.container_type AS mid_mile_container_type, + container_get_packing_list_ids.seal_reference AS mid_mile_container_seal_reference, + container_get_packing_list_ids.status AS mid_mile_container_status, + container_get_packing_list_ids.loaded_datetime AS mid_mile_container_loaded_datetime, + container_get_packing_list_ids.deleted_datetime AS mid_mile_container_deleted_datetime, + container_get_packing_list_ids.created_datetime AS mid_mile_container_created_datetime, + container_get_packing_list_ids.updated_datetime AS mid_mile_container_updated_datetime, + + container_transport_arrangments.transport_arrangement_id AS mid_mile_transport_arrangement_id, + container_transport_arrangments.dispatched_datetime AS mid_mile_container_departed_datetime, + container_transport_arrangments.droped_datetime AS mid_mile_container_arrived_datetime, + container_transport_arrangments.courier AS mid_mile_container_delivery_courier, + container_transport_arrangments.tracking_number AS mid_mile_container_tracking_number, + container_transport_arrangments.status AS mid_mile_container_transport_arrangment_status, + container_transport_arrangments.number_of_etd_datetime_postpone AS mid_mile_number_of_container_etd_datetime_postpone, + container_transport_arrangments.number_of_eta_datetime_postpone AS mid_mile_number_of_container_eta_datetime_postpone, + container_transport_arrangments.etd_datetimes AS mid_mile_container_etd_datetimes, + container_transport_arrangments.first_etd_datetime AS mid_mile_first_container_etd_datetimes, + container_transport_arrangments.last_etd_datetime AS mid_mile_last_container_etd_datetimes, + container_transport_arrangments.eta_datetimes AS mid_mile_container_eta_datetimes, + container_transport_arrangments.first_eta_datetime AS mid_mile_first_container_eta_datetime, + container_transport_arrangments.last_eta_datetime AS mid_mile_last_container_eta_datetime, + container_transport_arrangments.first_estimate_schedule_created_datetime AS mid_mile_first_container_estimate_schedule_created_datetime, + container_transport_arrangments.last_estimate_schedule_created_datetime AS mid_mile_last_container_estimate_schedule_created_datetime, + + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM origin_warehouse_shipping_packing_lists + + LEFT JOIN container_get_packing_list_ids + ON ( + origin_warehouse_shipping_packing_lists.old_warehouse_shipping_packing_list_id = container_get_packing_list_ids.packing_list_id + OR + origin_warehouse_shipping_packing_lists.new_warehouse_shipping_packing_list_id = container_get_packing_list_ids.packing_list_id + ) + + LEFT JOIN container_transport_arrangments + ON (container_get_packing_list_ids.container_id = container_transport_arrangments.container_id) + +), + + +-- FINAL +final__int_shipping__mid_mile_transport_arrangements AS ( + + SELECT + -- ids + new_mid_mile_packing_list_id, + old_mid_mile_packing_list_id, + mid_mile_transport_arrangement_id, + mid_mile_booking_id, + mid_mile_container_id, + mid_mile_container_warehouse_sub_company_id, + mid_mile_warehouse_sub_company_id, + mid_mile_warehouse_order_number, + + -- dimensions + mid_mile_has_replaced_by_new_id, + mid_mile_shipping_status, + mid_mile_reference_contract, + mid_mile_packing_list_type, + mid_mile_container_reference, + mid_mile_container_number, + mid_mile_container_seal_reference, + mid_mile_container_type, + mid_mile_container_status, + mid_mile_container_transport_arrangment_status, + mid_mile_container_delivery_courier, + mid_mile_container_tracking_number, + + -- measures + mid_mile_number_of_container_etd_datetime_postpone, + mid_mile_number_of_container_eta_datetime_postpone, + + -- date/times + mid_mile_container_loaded_datetime, + mid_mile_container_departed_datetime, + mid_mile_container_arrived_datetime, + mid_mile_container_etd_datetimes, + mid_mile_first_container_etd_datetimes, + mid_mile_last_container_etd_datetimes, + mid_mile_container_eta_datetimes, + mid_mile_first_container_eta_datetime, + mid_mile_last_container_eta_datetime, + mid_mile_first_container_estimate_schedule_created_datetime, + mid_mile_last_container_estimate_schedule_created_datetime, + mid_mile_container_deleted_datetime, + mid_mile_container_created_datetime, + mid_mile_container_updated_datetime, + + -- metadata + _dbt_ran_datetime + + FROM container_get_transport_arrangments + +) +-- -- YAM already do the hardcode clean, but not validate by omair +-- SELECT * FROM container_group_by_packing_list_id WHERE packing_list_id in (21276, 16087) OR packing_list_id IS NULL + +SELECT * FROM final__int_shipping__mid_mile_transport_arrangements \ No newline at end of file diff --git a/models/intermediate/int_shipping__origin_warehouse_container_shipping_transport_arrangements.sql b/models/intermediate/int_shipping__origin_warehouse_container_shipping_transport_arrangements.sql deleted file mode 100644 index a227da8..0000000 --- a/models/intermediate/int_shipping__origin_warehouse_container_shipping_transport_arrangements.sql +++ /dev/null @@ -1,150 +0,0 @@ --- IMPORT -WITH origin_warehouse_shipping_packing_lists AS ( - SELECT * FROM {{ ref('stg_shipping__warehouse_shipping_packing_lists') }} -), - -containers AS ( - SELECT * FROM {{ ref('stg_shipping__containers') }} -), - -containers_brg_packing_lists AS ( - SELECT * FROM {{ ref('stg_shipping__containers_brg_packing_lists') }} -), - -container_transport_arrangments AS ( - SELECT * FROM {{ ref('stg_shipping__container_transport_arrangments') }} -), - - --- LOGIC -container_get_packing_list_ids AS ( - - SELECT - containers_brg_packing_lists.packing_list_id, - containers.* - - FROM containers - - LEFT JOIN containers_brg_packing_lists - ON (containers.container_id = containers_brg_packing_lists.container_id) - -), - -container_get_transport_arrangments AS ( - - SELECT - origin_warehouse_shipping_packing_lists.new_origin_warehouse_shipping_packing_list_id, - origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id, - origin_warehouse_shipping_packing_lists.warehouse_order_number, - origin_warehouse_shipping_packing_lists.booking_id, - origin_warehouse_shipping_packing_lists.warehouse_sub_company_id, - origin_warehouse_shipping_packing_lists.has_replaced_by_new_id, - origin_warehouse_shipping_packing_lists.reference_contract AS origin_warehouse_reference_contract, - origin_warehouse_shipping_packing_lists.status AS origin_warehouse_shipping_status, - origin_warehouse_shipping_packing_lists.packing_list_type, - - container_get_packing_list_ids.packing_list_id AS container_packing_list_id, - container_get_packing_list_ids.container_id, - container_get_packing_list_ids.sub_company_id AS container_warehouse_sub_company_id, - container_get_packing_list_ids.container_reference, - container_get_packing_list_ids.container_number, - container_get_packing_list_ids.container_type, - container_get_packing_list_ids.seal_reference AS container_seal_reference, - container_get_packing_list_ids.status AS container_status, - container_get_packing_list_ids.loaded_datetime AS container_loaded_datetime, - container_get_packing_list_ids.deleted_datetime AS container_deleted_datetime, - container_get_packing_list_ids.created_datetime AS container_created_datetime, - container_get_packing_list_ids.updated_datetime AS container_updated_datetime, - - container_transport_arrangments.transport_arrangement_id AS container_transport_arrangement_id, - container_transport_arrangments.dispatched_datetime AS container_departed_datetime, - container_transport_arrangments.droped_datetime AS container_arrived_datetime, - container_transport_arrangments.courier AS container_deliver_courier, - container_transport_arrangments.tracking_number AS container_tracking_number, - container_transport_arrangments.status AS container_transport_arrangment_status, - container_transport_arrangments.number_of_etd_datetime_postpone AS number_of_container_etd_datetime_postpone, - container_transport_arrangments.number_of_eta_datetime_postpone AS number_of_container_eta_datetime_postpone, - container_transport_arrangments.etd_datetimes AS container_etd_datetimes, - container_transport_arrangments.first_etd_datetime AS first_container_etd_datetimes, - container_transport_arrangments.last_etd_datetime AS last_container_etd_datetimes, - container_transport_arrangments.eta_datetimes AS container_eta_datetimes, - container_transport_arrangments.first_eta_datetime AS first_container_eta_datetime, - container_transport_arrangments.last_eta_datetime AS last_container_eta_datetime, - container_transport_arrangments.first_estimate_schedule_created_datetime AS first_container_estimate_schedule_created_datetime, - container_transport_arrangments.last_estimate_schedule_created_datetime AS last_container_estimate_schedule_created_datetime, - - '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - - FROM origin_warehouse_shipping_packing_lists - - LEFT JOIN container_get_packing_list_ids - ON ( - origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id = container_get_packing_list_ids.packing_list_id - OR - origin_warehouse_shipping_packing_lists.new_origin_warehouse_shipping_packing_list_id = container_get_packing_list_ids.packing_list_id - ) - - LEFT JOIN container_transport_arrangments - ON (container_get_packing_list_ids.container_id = container_transport_arrangments.container_id) - -), - - --- FINAL -final__int_shipping__containers_group_by_packing_list_ids AS ( - - SELECT - -- ids - new_origin_warehouse_shipping_packing_list_id, - old_origin_warehouse_shipping_packing_list_id, - container_transport_arrangement_id, - booking_id, - container_id, - container_warehouse_sub_company_id, - warehouse_sub_company_id, - warehouse_order_number, - - -- dimensions - has_replaced_by_new_id, - origin_warehouse_shipping_status, - origin_warehouse_reference_contract, - packing_list_type, - container_reference, - container_number, - container_seal_reference, - container_type, - container_status, - container_transport_arrangment_status, - container_deliver_courier, - container_tracking_number, - - -- measures - number_of_container_etd_datetime_postpone, - number_of_container_eta_datetime_postpone, - - -- date/times - container_loaded_datetime, - container_departed_datetime, - container_arrived_datetime, - container_etd_datetimes, - first_container_etd_datetimes, - last_container_etd_datetimes, - container_eta_datetimes, - first_container_eta_datetime, - last_container_eta_datetime, - first_container_estimate_schedule_created_datetime, - last_container_estimate_schedule_created_datetime, - container_deleted_datetime, - container_created_datetime, - container_updated_datetime, - - -- metadata - _dbt_ran_datetime - - FROM container_get_transport_arrangments - -) --- -- YAM already do the hardcode clean, but not validate by omair --- SELECT * FROM container_group_by_packing_list_id WHERE packing_list_id in (21276, 16087) OR packing_list_id IS NULL - -SELECT * FROM final__int_shipping__containers_group_by_packing_list_ids \ No newline at end of file diff --git a/models/intermediate/int_shipping__origin_warehouse_receive_transport_arrangements.sql b/models/intermediate/int_shipping__origin_warehouse_receive_transport_arrangements.sql deleted file mode 100644 index 21392da..0000000 --- a/models/intermediate/int_shipping__origin_warehouse_receive_transport_arrangements.sql +++ /dev/null @@ -1,101 +0,0 @@ --- IMPORT -WITH origin_warehouse_receive_packing_lists AS ( - SELECT * FROM {{ ref('stg_shipping__origin_warehouse_receive_packing_lists') }} -), - -packing_list_transport_arrangments AS ( - SELECT * FROM {{ ref('stg_shipping__packing_list_transport_arrangments') }} -), - - --- LOGIC -origin_factory_packing_list_join_transport_arrangments AS ( - - SELECT - origin_warehouse_receive_packing_lists.new_origin_warehouse_receive_packing_list_id, - origin_warehouse_receive_packing_lists.old_origin_warehouse_receive_packing_list_id, - origin_warehouse_receive_packing_lists.warehouse_order_number, - origin_warehouse_receive_packing_lists.booking_id, - origin_warehouse_receive_packing_lists.warehouse_sub_company_id, - origin_warehouse_receive_packing_lists.has_replaced_by_new_id, - origin_warehouse_receive_packing_lists.reference_contract, - origin_warehouse_receive_packing_lists.status AS origin_warehouse_receive_status, - - packing_list_transport_arrangments.transport_arrangement_id AS origin_factory_transport_arrangement_id, - packing_list_transport_arrangments.transport_mode AS origin_factory_transport_transport_mode, - packing_list_transport_arrangments.courier AS origin_factory_transport_courier, - packing_list_transport_arrangments.tracking_number AS origin_factory_transport_tracking_number, - packing_list_transport_arrangments.status AS origin_factory_transport_status, - packing_list_transport_arrangments.number_of_etd_datetime_postpone AS origin_factory_transport_number_of_etd_datetime_postpone, - packing_list_transport_arrangments.number_of_eta_datetime_postpone AS origin_factory_transport_number_of_eta_datetime_postpone, - packing_list_transport_arrangments.dispatched_datetime AS origin_factory_dispatched_datetime, - packing_list_transport_arrangments.droped_datetime AS origin_warehouse_received_datetime, - packing_list_transport_arrangments.etd_datetimes AS origin_factory_transport_etd_datetimes, - packing_list_transport_arrangments.first_etd_datetime AS origin_factory_transport_first_etd_datetime, - packing_list_transport_arrangments.last_etd_datetime AS origin_factory_transport_last_etd_datetime, - packing_list_transport_arrangments.eta_datetimes AS origin_factory_transport_eta_datetimes, - packing_list_transport_arrangments.first_eta_datetime AS origin_factory_transport_first_eta_datetime, - packing_list_transport_arrangments.last_eta_datetime AS origin_factory_transport_last_eta_datetime, - packing_list_transport_arrangments.first_estimate_schedule_created_datetime AS origin_factory_transport_first_estimate_schedule_created_datetime, - packing_list_transport_arrangments.last_estimate_schedule_created_datetime AS origin_factory_transport_last_estimate_schedule_created_datetime, - packing_list_transport_arrangments.created_datetime AS origin_factory_transport_created_datetime, - packing_list_transport_arrangments.updated_datetime AS origin_factory_transport_updated_datetime, - - '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - - FROM origin_warehouse_receive_packing_lists - - LEFT JOIN packing_list_transport_arrangments - ON (origin_warehouse_receive_packing_lists.old_origin_warehouse_receive_packing_list_id = packing_list_transport_arrangments.packing_list_id) - -), - - --- FINAL -final__int_shipping__origin_factory_packing_list_transport_arrangements AS ( - - SELECT - -- ids - new_origin_warehouse_receive_packing_list_id, - old_origin_warehouse_receive_packing_list_id, - origin_factory_transport_arrangement_id, - booking_id, - warehouse_order_number, - warehouse_sub_company_id, - - -- dimensions - has_replaced_by_new_id, - reference_contract, - origin_factory_transport_transport_mode, - origin_factory_transport_courier, - origin_factory_transport_tracking_number, - origin_factory_transport_status, - origin_warehouse_receive_status, - - -- measures - origin_factory_transport_number_of_etd_datetime_postpone, - origin_factory_transport_number_of_eta_datetime_postpone, - - -- date/times - origin_factory_dispatched_datetime, - origin_warehouse_received_datetime, - origin_factory_transport_etd_datetimes, - origin_factory_transport_first_etd_datetime, - origin_factory_transport_last_etd_datetime, - origin_factory_transport_eta_datetimes, - origin_factory_transport_first_eta_datetime, - origin_factory_transport_last_eta_datetime, - origin_factory_transport_first_estimate_schedule_created_datetime, - origin_factory_transport_last_estimate_schedule_created_datetime, - - origin_factory_transport_created_datetime, - origin_factory_transport_updated_datetime, - - -- metadata - _dbt_ran_datetime - - FROM origin_factory_packing_list_join_transport_arrangments - -) - -SELECT * FROM final__int_shipping__origin_factory_packing_list_transport_arrangements \ No newline at end of file diff --git a/models/intermediate/int_shipping__packages_group_by_packing_list_ids.sql b/models/intermediate/int_shipping__packages_group_by_packing_list_ids.sql deleted file mode 100644 index 1dd0eff..0000000 --- a/models/intermediate/int_shipping__packages_group_by_packing_list_ids.sql +++ /dev/null @@ -1,129 +0,0 @@ --- IMPORT -WITH packages AS ( - SELECT * FROM {{ ref('stg_shipping__packages') }} -), - -package_extra_charges AS ( - SELECT * FROM {{ ref('stg_shipping__package_extra_charges') }} -), - --- LOGIC -packages_group_by_packing_list_id AS ( - SELECT - packing_list_id, - COUNT(DISTINCT(package_id)) AS number_of_package_record, - ARRAY_AGG(DISTINCT(package_description)) AS package_descriptions, - SUM(width_cm) AS total_package_width_cm, - SUM(height_cm) AS total_package_height_cm, - SUM(length_cm) AS total_package_length_cm, - sum(weight_kg) AS total_package_weight_kg, - SUM(quantity) AS total_package_item, - SUM(cbm) AS total_package_cbm - - FROM - packages - - GROUP BY - packing_list_id -), - -package_extra_charges_group_by_packing_list_id AS ( - SELECT - packing_list_id, - COUNT(DISTINCT( - IFF(package_type = 'OVER_WEIGHT', - package_id, - null) - )) AS number_of_over_weight_charge_record, - - SUM( - IFF(package_type = 'OVER_WEIGHT', - extra_charge_cbm, - 0) - ) AS over_weight_cbm, - - SUM( - IFF(package_type = 'OVER_WEIGHT', - over_weight_kg, - 0) - ) AS over_weight_kg, - - - COUNT(DISTINCT( - IFF(package_type = 'PALLET', - package_id, - null) - )) AS number_of_pallet_charge_record, - - SUM( - IFF(package_type = 'PALLET', - extra_charge_cbm, - 0) - ) AS pallet_charge_cbm - - FROM package_extra_charges - - GROUP BY - packing_list_id -), - -pakacges_and_package_extra_charges_join_using_packing_list_id AS ( - SELECT - packages_group_by_packing_list_id.packing_list_id, - packages_group_by_packing_list_id.number_of_package_record, - packages_group_by_packing_list_id.package_descriptions, - packages_group_by_packing_list_id.total_package_width_cm, - packages_group_by_packing_list_id.total_package_height_cm, - packages_group_by_packing_list_id.total_package_length_cm, - packages_group_by_packing_list_id.total_package_weight_kg, - packages_group_by_packing_list_id.total_package_item, - packages_group_by_packing_list_id.total_package_cbm, - - package_extra_charges_group_by_packing_list_id.number_of_over_weight_charge_record, - package_extra_charges_group_by_packing_list_id.over_weight_cbm, - package_extra_charges_group_by_packing_list_id.over_weight_kg, - package_extra_charges_group_by_packing_list_id.number_of_pallet_charge_record, - package_extra_charges_group_by_packing_list_id.pallet_charge_cbm, - - '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - - FROM packages_group_by_packing_list_id - - LEFT JOIN package_extra_charges_group_by_packing_list_id - ON (packages_group_by_packing_list_id.packing_list_id = package_extra_charges_group_by_packing_list_id.packing_list_id) -), - --- FINAL -final__int_shipping__packages_group_by_packing_lists AS ( - SELECT - -- ids - packing_list_id, - - -- dimensions - package_descriptions, - - -- measures - number_of_package_record, - total_package_width_cm, - total_package_height_cm, - total_package_length_cm, - total_package_weight_kg, - total_package_item, - total_package_cbm, - - number_of_over_weight_charge_record, - over_weight_cbm, - over_weight_kg, - number_of_pallet_charge_record, - pallet_charge_cbm, - - -- date/times - - -- metadata - _dbt_ran_datetime - - - FROM pakacges_and_package_extra_charges_join_using_packing_list_id -) - -SELECT * FROM final__int_shipping__packages_group_by_packing_lists \ No newline at end of file diff --git a/models/intermediate/int_shipping__packing_list_invoice_payments_group_by_packing_list_ids.sql b/models/intermediate/int_shipping__packing_list_invoice_payments_group_by_packing_list_ids.sql deleted file mode 100644 index 4a7082c..0000000 --- a/models/intermediate/int_shipping__packing_list_invoice_payments_group_by_packing_list_ids.sql +++ /dev/null @@ -1,109 +0,0 @@ --- IMPORT -WITH stg_shipping__packing_list_invoice_payments AS ( - SELECT * FROM {{ ref('stg_shipping__packing_list_invoice_payments') }} -), - --- LOGIC -remove_expired_invoice_payments AS ( - SELECT - * - - FROM stg_shipping__packing_list_invoice_payments - - WHERE - invoice_status != 'EXPIRED' - AND - payment_status NOT IN ('SUSPENDED','REJECTED') -), - -group_by_packing_list_ids AS ( - SELECT - old_origin_warehouse_shipping_packing_list_id, - invoice_sub_company_id, - payment_sub_company_id, - COUNT(DISTINCT(packing_list_invoice_id)) AS number_of_invoice, - COUNT(DISTINCT(packing_list_payment_id)) AS number_of_payment, - - SUM(invoice_number_of_shipping_fee) AS invoice_number_of_shipping_fee, - SUM(invoice_average_shipping_fee_price_per_quantity)/SUM(invoice_number_of_shipping_fee) AS invoice_average_shipping_fee_price_per_quantity, - SUM(invoice_total_shipping_fee_quantity) AS invoice_total_shipping_fee_quantity, - SUM(invoice_total_shipping_fee_value_rm) AS invoice_total_shipping_fee_value_rm, - SUM(invoice_number_of_min_cbm_charge) AS invoice_number_of_min_cbm_charge, - SUM(invoice_average_min_cbm_charge_price_per_quantity)/SUM(invoice_number_of_min_cbm_charge) AS invoice_average_min_cbm_charge_price_per_quantity, - SUM(invoice_total_min_cbm_charge_quantity) AS invoice_total_min_cbm_charge_quantity, - SUM(invoice_total_min_cbm_charge_value_rm) AS invoice_total_min_cbm_charge_value_rm, - SUM(invoice_number_of_over_weight_charge) AS invoice_number_of_over_weight_charge, - SUM(invoice_average_over_weight_charge_price_per_quantity)/SUM(invoice_number_of_over_weight_charge) AS invoice_average_over_weight_charge_price_per_quantity, - SUM(invoice_total_over_weight_charge_quantity) AS invoice_total_over_weight_charge_quantity, - SUM(invoice_total_over_weight_charge_value_rm) AS invoice_total_over_weight_charge_value_rm, - SUM(invoice_number_of_custom_charge) AS invoice_number_of_custom_charge, - SUM(invoice_average_custom_charge_price_per_quantity)/SUM(invoice_number_of_custom_charge) AS invoice_average_custom_charge_price_per_quantity, - SUM(invoice_total_custom_charge_quantity) AS invoice_total_custom_charge_quantity, - SUM(invoice_total_custom_charge_value_rm) AS invoice_total_custom_charge_value_rm, - SUM(invoice_value_rm) AS invoice_value_rm, - SUM(invoice_tax_rm) AS invoice_tax_rm, - SUM(invoice_service_charge) AS invoice_service_charge, - SUM(payment_value_rm) AS payment_value_rm, - SUM(payment_tax_rm) AS payment_tax_rm, - SUM(payment_service_charge_rm) AS payment_service_charge_rm, - MAX(invoice_created_datetime) AS last_invoice_created_datetime, - MAX(payment_created_datetime) AS last_payment_created_datetime, - '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - - - FROM remove_expired_invoice_payments - - GROUP BY - old_origin_warehouse_shipping_packing_list_id, - invoice_sub_company_id, - payment_sub_company_id - -), - --- FINAL -final__int_shipping__packing_list_invoice_payments_group_by_packing_list_ids AS ( - SELECT - -- ids - old_origin_warehouse_shipping_packing_list_id, - invoice_sub_company_id, - payment_sub_company_id, - - -- dimensions - - -- measures - number_of_invoice, - number_of_payment, - invoice_number_of_shipping_fee, - invoice_average_shipping_fee_price_per_quantity, - invoice_total_shipping_fee_quantity, - invoice_total_shipping_fee_value_rm, - invoice_number_of_min_cbm_charge, - invoice_average_min_cbm_charge_price_per_quantity, - invoice_total_min_cbm_charge_quantity, - invoice_total_min_cbm_charge_value_rm, - invoice_number_of_over_weight_charge, - invoice_average_over_weight_charge_price_per_quantity, - invoice_total_over_weight_charge_quantity, - invoice_total_over_weight_charge_value_rm, - invoice_number_of_custom_charge, - invoice_average_custom_charge_price_per_quantity, - invoice_total_custom_charge_quantity, - invoice_total_custom_charge_value_rm, - invoice_value_rm, - invoice_tax_rm, - invoice_service_charge, - payment_value_rm, - payment_tax_rm, - payment_service_charge_rm, - - -- date/times - last_invoice_created_datetime, - last_payment_created_datetime, - - -- metadata - _dbt_ran_datetime - - FROM group_by_packing_list_ids -) - -SELECT * FROM final__int_shipping__packing_list_invoice_payments_group_by_packing_list_ids \ No newline at end of file diff --git a/models/intermediate/int_shipping__vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.sql b/models/intermediate/int_shipping__vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.sql index abc392d..13ec16a 100644 --- a/models/intermediate/int_shipping__vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.sql +++ b/models/intermediate/int_shipping__vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.sql @@ -30,7 +30,7 @@ count_receive_list_booking_id_row AS ( vt_receive_packing_list_remove_booking_id_more_than_one AS ( SELECT - vt_receive_packing_lists.origin_warehouse_receive_packing_list_id, + vt_receive_packing_lists.new_origin_warehouse_receive_packing_list_id, vt_receive_packing_lists.old_origin_warehouse_receive_packing_list_id, vt_receive_packing_lists.booking_id, vt_receive_packing_lists.warehouse_order_number, @@ -65,8 +65,8 @@ count_shipping_list_booking_id_row AS ( vt_shipping_packing_list_remove_booking_id_more_than_one AS ( SELECT - vt_shipping_packing_lists.origin_warehouse_shipping_packing_list_id, - vt_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id, + vt_shipping_packing_lists.new_warehouse_shipping_packing_list_id, + vt_shipping_packing_lists.old_warehouse_shipping_packing_list_id, vt_shipping_packing_lists.booking_id, vt_shipping_packing_lists.warehouse_order_number, count_shipping_list_booking_id_row.number_of_booking_id_occur @@ -82,7 +82,7 @@ vt_shipping_packing_list_remove_booking_id_more_than_one AS ( -- -- create_new_mapping_table receive_and_shipping_packing_list_mapping AS ( SELECT - vt_receive_packing_list_remove_booking_id_more_than_one.origin_warehouse_receive_packing_list_id, + vt_receive_packing_list_remove_booking_id_more_than_one.new_origin_warehouse_receive_packing_list_id, vt_receive_packing_list_remove_booking_id_more_than_one.old_origin_warehouse_receive_packing_list_id, vt_receive_packing_list_remove_booking_id_more_than_one.booking_id, @@ -90,8 +90,8 @@ receive_and_shipping_packing_list_mapping AS ( '/', vt_shipping_packing_list_remove_booking_id_more_than_one.warehouse_order_number) AS warehouse_order_number, - vt_shipping_packing_list_remove_booking_id_more_than_one.origin_warehouse_shipping_packing_list_id, - vt_shipping_packing_list_remove_booking_id_more_than_one.old_origin_warehouse_shipping_packing_list_id, + vt_shipping_packing_list_remove_booking_id_more_than_one.new_warehouse_shipping_packing_list_id, + vt_shipping_packing_list_remove_booking_id_more_than_one.old_warehouse_shipping_packing_list_id, '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime @@ -106,11 +106,11 @@ receive_and_shipping_packing_list_mapping AS ( final__int_shipping__vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists AS ( SELECT -- ids - origin_warehouse_receive_packing_list_id, + new_origin_warehouse_receive_packing_list_id, old_origin_warehouse_receive_packing_list_id, booking_id, - origin_warehouse_shipping_packing_list_id, - old_origin_warehouse_shipping_packing_list_id, + new_warehouse_shipping_packing_list_id, + old_warehouse_shipping_packing_list_id, -- dimensions warehouse_order_number, diff --git a/models/marts/reporting/rep_shipping__cohort_analysis.sql b/models/marts/reporting/rep_shipping__cohort_analysis.sql index a35ffac..c824d57 100644 --- a/models/marts/reporting/rep_shipping__cohort_analysis.sql +++ b/models/marts/reporting/rep_shipping__cohort_analysis.sql @@ -5,8 +5,8 @@ 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') }} +orders AS ( + SELECT * FROM {{ ref('fct_shipping__orders') }} ), @@ -19,7 +19,7 @@ company_register_month_year AS ( companies.sub_company_created_datetime, IFF( - MAX(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime) IS NULL, + MAX(orders.order_created_datetime) IS NULL, 1, 0 ) AS is_never_order_company, @@ -31,13 +31,13 @@ company_register_month_year AS ( DATE(DATE_TRUNC( 'MONTH', - MIN(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime) + MIN(orders.order_created_datetime) )) AS first_order_month_year FROM companies - LEFT JOIN origin_warehouse_shipping_packing_lists - ON (companies.sub_company_id = origin_warehouse_shipping_packing_lists.sub_company_id) + LEFT JOIN orders + ON (companies.sub_company_id = orders.sub_company_id) GROUP BY companies.sub_company_id, @@ -50,21 +50,21 @@ company_register_month_year AS ( company_order_count_from_registration_date AS ( SELECT - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, DATEDIFF( MONTH, company_register_month_year.sub_company_created_datetime, - origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime + orders.order_created_datetime ) AS order_month - FROM origin_warehouse_shipping_packing_lists + FROM orders LEFT JOIN company_register_month_year - ON (origin_warehouse_shipping_packing_lists.sub_company_id = company_register_month_year.sub_company_id) + ON (orders.sub_company_id = company_register_month_year.sub_company_id) GROUP BY - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, order_month ), @@ -72,22 +72,22 @@ company_order_count_from_registration_date AS ( company_first_order_from_registration_date AS ( SELECT - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, DATE(DATE_TRUNC('MONTH', sub_company_created_datetime)) AS sub_company_created_datetime, MIN(DATEDIFF( MONTH, company_register_month_year.sub_company_created_datetime, - origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime + orders.order_created_datetime )) AS first_order_month - FROM origin_warehouse_shipping_packing_lists + FROM orders LEFT JOIN company_register_month_year - ON (origin_warehouse_shipping_packing_lists.sub_company_id = company_register_month_year.sub_company_id) + ON (orders.sub_company_id = company_register_month_year.sub_company_id) GROUP BY - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, sub_company_created_datetime ), diff --git a/models/marts/reporting/rep_shipping__company_engagement_behaviors.sql b/models/marts/reporting/rep_shipping__company_engagement_behaviors.sql index 095da25..95696c8 100644 --- a/models/marts/reporting/rep_shipping__company_engagement_behaviors.sql +++ b/models/marts/reporting/rep_shipping__company_engagement_behaviors.sql @@ -7,8 +7,8 @@ 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') }} +orders AS ( + SELECT * FROM {{ ref('fct_shipping__orders') }} ), @@ -27,10 +27,10 @@ order_date_row_rank AS ( SELECT *, ROW_NUMBER() OVER ( - PARTITION BY sub_company_id ORDER BY origin_warehouse_shipping_order_created_datetime, origin_warehouse_shipping_packing_list_id + PARTITION BY sub_company_id ORDER BY order_created_datetime, old_mid_mile_packing_list_id ) AS row_rank_index - FROM origin_warehouse_shipping_packing_lists + FROM orders ), @@ -41,7 +41,7 @@ get_orders_of_next_and_previous_order_date AS ( companies.sub_company_created_datetime, companies.sub_company_marking_id, companies.is_migrated_company, - previous_order_date_row_rank_clone.origin_warehouse_shipping_order_created_datetime AS previous_order_created_datetime + previous_order_date_row_rank_clone.order_created_datetime AS previous_order_created_datetime FROM order_date_row_rank @@ -69,7 +69,7 @@ company_register_events AS ( 'Register' AS register_event, IFF( - MAX(origin_warehouse_shipping_packing_lists.sub_company_id) IS NULL, + MAX(orders.sub_company_id) IS NULL, 1, 0 ) AS is_never_order_company, @@ -78,7 +78,7 @@ company_register_events AS ( DATEDIFF( DAY, remove_supplier_company.sub_company_created_datetime, - COALESCE(MIN(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime), CURRENT_DATE()) + COALESCE(MIN(orders.order_created_datetime), CURRENT_DATE()) ) >= {{day_use_to_churn}}, 'Churn', NULL @@ -94,8 +94,8 @@ company_register_events AS ( FROM remove_supplier_company - LEFT JOIN origin_warehouse_shipping_packing_lists - ON (remove_supplier_company.sub_company_id = origin_warehouse_shipping_packing_lists.sub_company_id) + LEFT JOIN orders + ON (remove_supplier_company.sub_company_id = orders.sub_company_id) GROUP BY remove_supplier_company.sub_company_id, @@ -112,10 +112,10 @@ first_time_repeat_churn_reactive_order_events AS ( sub_company_id, sub_company_marking_id, is_migrated_company, - 0 AS is_never_order_company, - origin_warehouse_shipping_packing_list_id, - origin_warehouse_shipping_order_status, - origin_warehouse_shipping_order_created_datetime AS event_datetime, + 0 AS is_never_order_company, + old_mid_mile_packing_list_id, + first_mile_receive_status, + order_created_datetime AS event_datetime, service_type, total_package_CBM, @@ -124,8 +124,8 @@ first_time_repeat_churn_reactive_order_events AS ( IFF( DATEDIFF( DAY, - origin_warehouse_shipping_order_created_datetime, - COALESCE(next_origin_warehouse_shipping_order_created_datetime, CURRENT_DATE()) + order_created_datetime, + COALESCE(next_order_created_datetime, CURRENT_DATE()) ) >= {{day_use_to_churn}}, 'Churn', NULL @@ -135,7 +135,7 @@ first_time_repeat_churn_reactive_order_events AS ( DATEDIFF( DAY, COALESCE(previous_order_created_datetime, sub_company_created_datetime), - origin_warehouse_shipping_order_created_datetime + order_created_datetime ) >= {{day_use_to_churn}}, 'Reactive', NULL @@ -151,6 +151,7 @@ first_time_repeat_churn_reactive_order_events AS ( ) AS concat_event FROM get_orders_of_next_and_previous_order_date + ), union_event_tables AS ( @@ -160,8 +161,8 @@ union_event_tables AS ( sub_company_marking_id, is_migrated_company, is_never_order_company, - NULL AS origin_warehouse_shipping_packing_list_id, - NULL AS origin_warehouse_shipping_order_status, + NULL AS old_mid_mile_packing_list_id, + NULL AS first_mile_receive_status, NULL AS service_type, NULL AS total_package_CBM, NULL AS first_time_order_event, @@ -182,8 +183,8 @@ union_event_tables AS ( sub_company_marking_id, is_migrated_company, is_never_order_company, - origin_warehouse_shipping_packing_list_id, - origin_warehouse_shipping_order_status, + old_mid_mile_packing_list_id, + first_mile_receive_status, service_type, total_package_CBM, first_time_order_event, @@ -206,12 +207,12 @@ final__rep_shipping__company_engagement_behaviors AS ( -- id sub_company_id, sub_company_marking_id, - origin_warehouse_shipping_packing_list_id + old_mid_mile_packing_list_id -- dimension is_migrated_company, is_never_order_company, - origin_warehouse_shipping_order_status, + first_mile_receive_status, service_type, first_time_order_event, repeat_event, diff --git a/models/marts/reporting/rep_shipping__company_lists.sql b/models/marts/reporting/rep_shipping__company_lists.sql index dae613b..092a017 100644 --- a/models/marts/reporting/rep_shipping__company_lists.sql +++ b/models/marts/reporting/rep_shipping__company_lists.sql @@ -2,13 +2,14 @@ -- 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') }} +orders AS ( + SELECT * FROM {{ ref('fct_shipping__orders') }} ), @@ -21,18 +22,18 @@ company_agg AS ( 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, + COUNT(orders.old_mid_mile_packing_list_id) AS count_order, + MAX(orders.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, + orders.first_mile_receive_status IN ('APPROVED', 'COMPLETED'), + orders.old_mid_mile_packing_list_id, null )) AS count_approved_completed_order, IFF(MAX( - origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime IS NULL + orders.order_created_datetime IS NULL ), 1, 0 ) AS is_never_order_company, @@ -51,8 +52,8 @@ company_agg AS ( FROM companies - LEFT JOIN origin_warehouse_shipping_packing_lists - ON (companies.sub_company_id = origin_warehouse_shipping_packing_lists.sub_company_id) + LEFT JOIN orders + ON (companies.sub_company_id = orders.sub_company_id) GROUP BY companies.sub_company_id, diff --git a/models/marts/reporting/rep_shipping__company_order_usages.sql b/models/marts/reporting/rep_shipping__company_order_usages.sql index 4cf1d13..4daf923 100644 --- a/models/marts/reporting/rep_shipping__company_order_usages.sql +++ b/models/marts/reporting/rep_shipping__company_order_usages.sql @@ -3,53 +3,60 @@ {% set quarterly_cbm_rank_list = [1.75, 10] %} {% set yearly_cbm_rank_list = [2.5, 20] %} + -- IMPORT WITH shipping_companies AS ( SELECT * FROM {{ ref('dim_shipping__companies') }} ), -origin_warehouse_shipping_packing_lists AS ( - SELECT * FROM {{ ref('fct_shipping__origin_warehouse_shipping_packing_lists') }} +orders AS ( + SELECT * FROM {{ ref('fct_shipping__orders') }} ), dates AS ( SELECT * FROM {{ ref('dim__dates') }} ), + -- LOGIC {% for time_grain in time_grain_list %} + sub_company_first_time_order_{{time_grain}} AS ( + SELECT - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, shipping_companies.sub_company_marking_id, MIN(dates.first_day_of_{{time_grain}}) AS company_first_time_order_{{time_grain}} - FROM origin_warehouse_shipping_packing_lists + FROM orders LEFT JOIN shipping_companies - ON (origin_warehouse_shipping_packing_lists.sub_company_id = shipping_companies.sub_company_id) + ON (orders.sub_company_id = shipping_companies.sub_company_id) LEFT JOIN dates - ON (date(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime) = dates.date_day) + ON (date(orders.order_created_datetime) = dates.date_day) GROUP BY - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, shipping_companies.sub_company_marking_id ), origin_warehouse_shipping_packing_list_{{time_grain}} AS ( + SELECT - origin_warehouse_shipping_packing_lists.*, - dates.first_day_of_{{time_grain}} AS origin_warehouse_shipping_order_created_{{time_grain}} + orders.*, + dates.first_day_of_{{time_grain}} AS order_created_{{time_grain}} - FROM origin_warehouse_shipping_packing_lists + FROM orders LEFT JOIN dates - ON (date(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime) = dates.date_day) + ON (date(orders.order_created_datetime) = dates.date_day) + ), register_date_and_company_id_combination_{{time_grain}} AS ( + SELECT DISTINCT c.company_first_time_order_{{time_grain}} AS event_date, '{{time_grain|upper}}LY' AS time_grain_filter, @@ -63,23 +70,23 @@ dates AS ( WHERE c.company_first_time_order_{{time_grain}} >= c1.company_first_time_order_{{time_grain}} ORDER BY event_date + ), company_sale_by_time_grain_{{time_grain}} AS ( + SELECT register_date_and_company_id_combination_{{time_grain}}.event_date, register_date_and_company_id_combination_{{time_grain}}.time_grain_filter, register_date_and_company_id_combination_{{time_grain}}.sub_company_id, register_date_and_company_id_combination_{{time_grain}}.sub_company_marking_id, - SUM(IFF(origin_warehouse_shipping_order_status = 'APPROVED' OR - origin_warehouse_shipping_order_status = 'COMPLETED', + SUM(IFF(first_mile_receive_status IN ('APPROVED', 'COMPLETED'), total_order_cbm, 0)) AS total_cbm_completed_approved, - COUNT(DISTINCT(IFF(origin_warehouse_shipping_order_status = 'APPROVED' OR - origin_warehouse_shipping_order_status = 'COMPLETED', - old_origin_warehouse_shipping_packing_list_id, + COUNT(DISTINCT(IFF(first_mile_receive_status IN ('APPROVED', 'COMPLETED'), + old_mid_mile_packing_list_id, NULL))) AS total_order_completed_approved, {% if time_grain == "month" -%} @@ -122,26 +129,34 @@ dates AS ( LEFT JOIN origin_warehouse_shipping_packing_list_{{time_grain}} ON (register_date_and_company_id_combination_{{time_grain}}.sub_company_id = origin_warehouse_shipping_packing_list_{{time_grain}}.sub_company_id AND - register_date_and_company_id_combination_{{time_grain}}.event_date = origin_warehouse_shipping_packing_list_{{time_grain}}.origin_warehouse_shipping_order_created_{{time_grain}}) + register_date_and_company_id_combination_{{time_grain}}.event_date = origin_warehouse_shipping_packing_list_{{time_grain}}.order_created_{{time_grain}}) GROUP BY register_date_and_company_id_combination_{{time_grain}}.event_date, register_date_and_company_id_combination_{{time_grain}}.time_grain_filter, register_date_and_company_id_combination_{{time_grain}}.sub_company_id, register_date_and_company_id_combination_{{time_grain}}.sub_company_marking_id + ), {% endfor %} union_all_time_grain AS ( + {% for time_grain in time_grain_list %} + SELECT * FROM company_sale_by_time_grain_{{time_grain}} + {%- if not loop.last %} UNION{% endif -%} + {% endfor %} + ), + --FINAL final__rep_shipping__company_order_usages AS ( + SELECT -- ids {{ dbt_utils.generate_surrogate_key(['event_date', 'time_grain_filter', 'sub_company_id']) }} AS company_order_usage_sk, @@ -164,6 +179,7 @@ final__rep_shipping__company_order_usages AS ( '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime FROM union_all_time_grain + ) SELECT * FROM final__rep_shipping__company_order_usages \ No newline at end of file diff --git a/models/marts/reporting/rep_shipping__origin_warehouse_shipping_orders.sql b/models/marts/reporting/rep_shipping__origin_warehouse_shipping_orders.sql index da07ff8..e53eaac 100644 --- a/models/marts/reporting/rep_shipping__origin_warehouse_shipping_orders.sql +++ b/models/marts/reporting/rep_shipping__origin_warehouse_shipping_orders.sql @@ -1,6 +1,6 @@ --IMPORT -WITH origin_warehouse_shipping_packing_lists AS ( - SELECT * FROM {{ ref('fct_shipping__origin_warehouse_shipping_packing_lists') }} +WITH orders AS ( + SELECT * FROM {{ ref('fct_shipping__orders') }} ), companies AS ( @@ -9,9 +9,11 @@ companies AS ( --LOGIC -join_tables AS ( +orders_join_companies AS ( + SELECT - origin_warehouse_shipping_packing_lists.*, + orders.*, + companies.sub_company_marking_id, companies.is_migrated_company, companies.parent_company_id, @@ -19,117 +21,88 @@ join_tables AS ( companies.sub_company_created_datetime, companies.state_name AS sub_company_state_name - FROM (SELECT * EXCLUDE _dbt_ran_datetime FROM origin_warehouse_shipping_packing_lists) AS origin_warehouse_shipping_packing_lists + FROM (SELECT * EXCLUDE _dbt_ran_datetime FROM orders) AS orders LEFT JOIN companies - ON (origin_warehouse_shipping_packing_lists.sub_company_id = companies.sub_company_id) + ON (orders.sub_company_id = companies.sub_company_id) + ), create_metrics AS ( + SELECT *, CASE - WHEN ROW_NUMBER() OVER (PARTITION BY join_tables.parent_company_id ORDER BY join_tables.origin_warehouse_shipping_order_created_datetime) = 1 THEN 1 + WHEN ROW_NUMBER() OVER (PARTITION BY orders_join_companies.parent_company_id ORDER BY orders_join_companies.order_created_datetime) = 1 THEN 1 ELSE 0 END AS is_first_time_parent_company, CASE - WHEN join_tables.origin_warehouse_shipping_order_status = 'COMPLETED' + WHEN orders_join_companies.first_mile_receive_status IN ('APPROVED', 'COMPLETED') AND - MIN(IFF(join_tables.origin_warehouse_shipping_order_status = 'COMPLETED', join_tables.origin_warehouse_shipping_order_created_datetime, NULL)) - OVER (PARTITION BY join_tables.parent_company_id) - = join_tables.origin_warehouse_shipping_order_created_datetime - THEN 1 + MIN(IFF(orders_join_companies.first_mile_receive_status IN ('APPROVED', 'COMPLETED'), + orders_join_companies.order_created_datetime, + NULL) + ) OVER ( + PARTITION BY orders_join_companies.parent_company_id + ) + = orders_join_companies.order_created_datetime + THEN 1 ELSE 0 END AS is_first_time_parent_company_completed, '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - FROM join_tables + FROM orders_join_companies + ), --FINAL final__rep_shipping__origin_warehouse_shipping_orders AS ( + SELECT -- ids - origin_warehouse_shipping_packing_list_id, - old_origin_warehouse_shipping_packing_list_id, + new_first_mile_packing_list_id, + old_first_mile_packing_list_id, + new_mid_mile_packing_list_id, + old_mid_mile_packing_list_id, booking_id, parent_company_id, sub_company_id, sub_company_marking_id, - warehouse_sub_company_id, invoice_sub_company_id, payment_sub_company_id, - container_id, - container_warehouse_sub_company_id, - container_transport_arrangement_id, - destination_warehouse_transport_arrangement_id, - - -- dimensions warehouse_order_number, - reference_contract, - has_replaced_by_new_origin_warehouse_shipping_packing_list_id, - company_type, + + -- dimensions is_migrated_company, is_first_time_parent_company, is_first_time_parent_company_completed, is_first_time_sub_company, is_first_time_sub_company_completed, + company_type, sub_company_state_name, service_type, - package_descriptions, - delivery_address_reference, - delivery_address_line_one, - delivery_address_line_two, - delivery_address_district_name, - delivery_address_state_name, - delivery_address_country_name, - delivery_address_postcode, - delivery_address_type, - is_default_delivery_address, - delivery_address_status, - billing_address_reference, - billing_address_line_one, - billing_address_line_two, - billing_address_district_name, - billing_address_state_name, - billing_address_country_name, - billing_address_postcode, - billing_address_type, - is_default_billing_address, - container_reference, - container_number, - container_seal_reference, - container_type, - container_deliver_courier, - container_tracking_number, - destination_warehouse_transport_transport_mode, - destination_warehouse_transport_courier, - destination_warehouse_transport_tracking_number, booking_status, - billing_address_status, - origin_warehouse_shipping_order_status, - container_status, - container_transport_arrangment_status, - destination_warehouse_transport_status, + first_mile_receive_status, + package_descriptions, -- measures number_of_package_record, + total_package_item, total_package_width_cm, total_package_height_cm, total_package_length_cm, - total_package_weight_kg, - total_package_item, total_package_cbm, + total_package_weight_kg, + total_order_cbm, number_of_over_weight_charge_record, over_weight_cbm, over_weight_kg, number_of_pallet_charge_record, pallet_charge_cbm, - total_order_cbm, number_of_invoice, number_of_payment, invoice_number_of_shipping_fee, @@ -154,50 +127,21 @@ final__rep_shipping__origin_warehouse_shipping_orders AS ( payment_value_rm, payment_tax_rm, payment_service_charge_rm, - number_of_container_etd_datetime_postpone, - number_of_container_eta_datetime_postpone, - destination_warehouse_transport_number_of_etd_datetime_postpone, - destination_warehouse_transport_number_of_eta_datetime_postpone, -- date/times sub_company_created_datetime, booking_created_datetime, - delivery_address_created_datetime, - billing_address_created_datetime, - origin_warehouse_shipping_order_created_datetime, + booking_updated_datetime, + order_created_datetime, + next_order_created_datetime, last_invoice_created_datetime, last_payment_created_datetime, - container_loaded_datetime, - container_departed_datetime, - container_arrived_datetime, - container_etd_datetimes, - first_container_etd_datetimes, - last_container_etd_datetimes, - container_eta_datetimes, - first_container_eta_datetime, - last_container_eta_datetime, - first_container_estimate_schedule_created_datetime, - last_container_estimate_schedule_created_datetime, - container_deleted_datetime, - container_created_datetime, - container_updated_datetime, - destination_warehouse_transport_dispatched_datetime, - destination_warehouse_transport_droped_datetime, - destination_warehouse_transport_etd_datetimes, - destination_warehouse_transport_first_etd_datetime, - destination_warehouse_transport_last_etd_datetime, - destination_warehouse_transport_eta_datetimes, - destination_warehouse_transport_first_eta_datetime, - destination_warehouse_transport_last_eta_datetime, - destination_warehouse_transport_first_estimate_schedule_created_datetime, - destination_warehouse_transport_last_estimate_schedule_created_datetime, - destination_warehouse_transport_created_datetime, - next_origin_warehouse_shipping_order_created_datetime, - + -- metadata _dbt_ran_datetime FROM create_metrics + ) SELECT * FROM final__rep_shipping__origin_warehouse_shipping_orders \ No newline at end of file diff --git a/models/marts/reporting/rep_shipping__rfm.sql b/models/marts/reporting/rep_shipping__rfm.sql index 95c29c6..7e72d12 100644 --- a/models/marts/reporting/rep_shipping__rfm.sql +++ b/models/marts/reporting/rep_shipping__rfm.sql @@ -14,8 +14,8 @@ -- IMPORT -WITH origin_warehouse_shipping_packing_lists AS ( - SELECT * FROM {{ ref('fct_shipping__origin_warehouse_shipping_packing_lists') }} +WITH orders AS ( + SELECT * FROM {{ ref('fct_shipping__orders') }} ), companies AS ( @@ -27,27 +27,27 @@ companies AS ( company_shipping_order_one_year AS( SELECT - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, companies.sub_company_marking_id, - COUNT(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_packing_list_id) AS number_of_packing_list_one_year, - MAX(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime) AS last_packing_list_created_datetime_one_year, + COUNT(orders.old_mid_mile_packing_list_id) AS number_of_packing_list_one_year, + MAX(orders.order_created_datetime) AS last_packing_list_created_datetime_one_year, DATEDIFF(day, last_packing_list_created_datetime_one_year, CURRENT_DATE()) AS day_after_last_packing_list_one_year, - SUM(origin_warehouse_shipping_packing_lists.total_package_cbm) AS total_package_cbm_one_year + SUM(orders.total_package_cbm) AS total_package_cbm_one_year - FROM origin_warehouse_shipping_packing_lists + FROM orders LEFT JOIN companies - ON (origin_warehouse_shipping_packing_lists.sub_company_id = companies.sub_company_id) + ON (orders.sub_company_id = companies.sub_company_id) WHERE - origin_warehouse_shipping_order_status IN ('COMPLETED','APPROVED') + first_mile_receive_status IN ('COMPLETED','APPROVED') AND - origin_warehouse_shipping_order_created_datetime >= '{{ custom_one_year_from_date }}' + order_created_datetime >= '{{ custom_one_year_from_date }}' AND - origin_warehouse_shipping_order_created_datetime < '{{ custom_one_year_to_date }}' + order_created_datetime < '{{ custom_one_year_to_date }}' GROUP BY - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, companies.sub_company_marking_id ), @@ -55,33 +55,33 @@ company_shipping_order_one_year AS( company_rfm AS ( SELECT - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, companies.sub_company_marking_id, - MAX(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime) AS last_packing_list_created_datetime, + MAX(orders.order_created_datetime) AS last_packing_list_created_datetime, DATEDIFF(day, last_packing_list_created_datetime, CURRENT_DATE() ) AS day_after_last_packing_list_lifetime, MAX(company_shipping_order_one_year.day_after_last_packing_list_one_year) AS day_after_last_packing_list_one_year, - COUNT(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_packing_list_id) AS number_of_packing_list_lifetime, + COUNT(orders.old_mid_mile_packing_list_id) AS number_of_packing_list_lifetime, MAX(company_shipping_order_one_year.number_of_packing_list_one_year) AS number_of_packing_list_one_year, - SUM(origin_warehouse_shipping_packing_lists.total_package_cbm) AS total_package_cbm_lifetime, + SUM(orders.total_package_cbm) AS total_package_cbm_lifetime, MAX(company_shipping_order_one_year.total_package_cbm_one_year) AS total_package_cbm_one_year - FROM origin_warehouse_shipping_packing_lists + FROM orders LEFT JOIN company_shipping_order_one_year - ON (origin_warehouse_shipping_packing_lists.sub_company_id = company_shipping_order_one_year.sub_company_id) + ON (orders.sub_company_id = company_shipping_order_one_year.sub_company_id) LEFT JOIN companies - ON (origin_warehouse_shipping_packing_lists.sub_company_id = companies.sub_company_id) + ON (orders.sub_company_id = companies.sub_company_id) WHERE - origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_status IN ('COMPLETED','APPROVED') + orders.first_mile_receive_status IN ('COMPLETED','APPROVED') GROUP BY - origin_warehouse_shipping_packing_lists.sub_company_id, + orders.sub_company_id, companies.sub_company_marking_id ), diff --git a/models/marts/reporting/rep_shipping__survival_analysis.sql b/models/marts/reporting/rep_shipping__survival_analysis.sql index 78028f6..7687375 100644 --- a/models/marts/reporting/rep_shipping__survival_analysis.sql +++ b/models/marts/reporting/rep_shipping__survival_analysis.sql @@ -10,8 +10,8 @@ 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') }} +orders AS ( + SELECT * FROM {{ ref('fct_shipping__orders') }} ), @@ -22,19 +22,19 @@ duration_table AS ( companies.sub_company_id, companies.sub_company_marking_id, companies.sub_company_created_datetime, - COUNT(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_packing_list_id) AS count_order, + COUNT(orders.old_mid_mile_packing_list_id) AS count_order, 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, + orders.first_mile_receive_status IN ('APPROVED', 'COMPLETED'), + orders.old_mid_mile_packing_list_id, null )) AS count_completed_order, - MAX(origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_order_created_datetime) AS last_order_datetime, + MAX(orders.order_created_datetime) AS last_order_datetime, COALESCE(last_order_datetime, sub_company_created_datetime) AS last_activity_datetime, IFF(last_order_datetime IS NULL, 1, 0) AS is_never_order_company, - -- if is_churn_company = 0, the data will be censored + /* if is_churn_company = 0, the data will be censored */ IFF( DATEDIFF(day, last_activity_datetime, CURRENT_DATE()) >= {{day_use_to_churn}}, 1, @@ -50,8 +50,8 @@ duration_table AS ( FROM companies - LEFT JOIN origin_warehouse_shipping_packing_lists - ON (companies.sub_company_id = origin_warehouse_shipping_packing_lists.sub_company_id) + LEFT JOIN orders + ON (companies.sub_company_id = orders.sub_company_id) GROUP BY companies.sub_company_id, @@ -64,8 +64,10 @@ duration_table AS ( ), --- the daily_tally cte count the total number of observations at each survival_time_day --- and the number of company that have churned at that survival_time_day +/* +The daily_tally cte count the total number of observations at each survival_time_day +and the number of company that have churned at that survival_time_day +*/ daily_observation_tally AS ( SELECT @@ -81,7 +83,9 @@ daily_observation_tally AS ( ), --- the cumulative_tally cte counts the number of subjects still at risk of experiencing churn +/* +The cumulative_tally cte counts the number of subjects still at risk of experiencing churn +*/ cumulative_tally AS ( SELECT @@ -101,8 +105,10 @@ cumulative_tally AS ( ), --- At each survival_time_day, count number of censored subject --- censored subjects = # subject at risk - churned - # subject at risk in the next duration +/* +At each survival_time_day, count number of censored subject +censored subjects = # subject at risk - churned - # subject at risk in the next duration +*/ compute_censored_subjects AS ( SELECT diff --git a/models/marts/warehouse/fct_shipping__bookings.sql b/models/marts/warehouse/fct_shipping__bookings.sql new file mode 100644 index 0000000..5876dc2 --- /dev/null +++ b/models/marts/warehouse/fct_shipping__bookings.sql @@ -0,0 +1,198 @@ +-- can change to dim_booking_addresses +-- IMPORT +WITH bookings AS ( + SELECT * FROM {{ ref('stg_shipping__bookings') }} +), + +booking_addresses AS ( + SELECT * FROM {{ ref('stg_shipping__booking_addresses') }} +), + + +-- LOGIC +booking_addresses_clean AS ( + + SELECT + *, + ROW_NUMBER() OVER (PARTITION BY booking_id, address_type ORDER BY created_datetime DESC) AS row_number_index + + FROM booking_addresses + + WHERE + deleted_datetime IS NULL + AND + status = 'APPROVED' + + QUALIFY + row_number_index = 1 + +), + +booking_address_group_by_booking_id AS ( + + SELECT + booking_id, + MAX(IFF(address_type = 'DELIVERY', booking_address_id, NULL)) AS delivery_booking_address_id, + MAX(IFF(address_type = 'DELIVERY', district_id, NULL)) AS delivery_address_district_id, + MAX(IFF(address_type = 'DELIVERY', state_id, NULL)) AS delivery_address_state_id, + MAX(IFF(address_type = 'DELIVERY', country_id, NULL)) AS delivery_address_country_id, + MAX(IFF(address_type = 'DELIVERY', address_reference, NULL)) AS delivery_address_reference, + MAX(IFF(address_type = 'DELIVERY', address_line_one, NULL)) AS delivery_address_line_one, + MAX(IFF(address_type = 'DELIVERY', address_line_two, NULL)) AS delivery_address_line_two, + MAX(IFF(address_type = 'DELIVERY', district_name, NULL)) AS delivery_address_district_name, + MAX(IFF(address_type = 'DELIVERY', state_name, NULL)) AS delivery_address_state_name, + MAX(IFF(address_type = 'DELIVERY', country_name, NULL)) AS delivery_address_country_name, + MAX(IFF(address_type = 'DELIVERY', postcode, NULL)) AS delivery_address_postcode, + MAX(IFF(address_type = 'DELIVERY', address_type, NULL)) AS delivery_address_type, + MAX(IFF(address_type = 'DELIVERY', is_default_address, NULL)) AS is_default_delivery_address, + MAX(IFF(address_type = 'DELIVERY', status, NULL)) AS delivery_address_status, + MAX(IFF(address_type = 'DELIVERY', deleted_datetime, NULL)) AS delivery_address_deleted_datetime, + MAX(IFF(address_type = 'DELIVERY', created_datetime, NULL)) AS delivery_address_created_datetime, + MAX(IFF(address_type = 'DELIVERY', updated_datetime, NULL)) AS delivery_address_updated_datetime, + + MAX(IFF(address_type = 'BILLING', booking_address_id, NULL)) AS billing_booking_address_id, + MAX(IFF(address_type = 'BILLING', district_id, NULL)) AS billing_address_district_id, + MAX(IFF(address_type = 'BILLING', state_id, NULL)) AS billing_address_state_id, + MAX(IFF(address_type = 'BILLING', country_id, NULL)) AS billing_address_country_id, + MAX(IFF(address_type = 'BILLING', address_reference, NULL)) AS billing_address_reference, + MAX(IFF(address_type = 'BILLING', address_line_one, NULL)) AS billing_address_line_one, + MAX(IFF(address_type = 'BILLING', address_line_two, NULL)) AS billing_address_line_two, + MAX(IFF(address_type = 'BILLING', district_name, NULL)) AS billing_address_district_name, + MAX(IFF(address_type = 'BILLING', state_name, NULL)) AS billing_address_state_name, + MAX(IFF(address_type = 'BILLING', country_name, NULL)) AS billing_address_country_name, + MAX(IFF(address_type = 'BILLING', postcode, NULL)) AS billing_address_postcode, + MAX(IFF(address_type = 'BILLING', address_type, NULL)) AS billing_address_type, + MAX(IFF(address_type = 'BILLING', is_default_address, NULL)) AS is_default_billing_address, + MAX(IFF(address_type = 'BILLING', status, NULL)) AS billing_address_status, + MAX(IFF(address_type = 'BILLING', deleted_datetime, NULL)) AS billing_address_deleted_datetime, + MAX(IFF(address_type = 'BILLING', created_datetime, NULL)) AS billing_address_created_datetime, + MAX(IFF(address_type = 'BILLING', updated_datetime, NULL)) AS billing_address_updated_datetime + + FROM booking_addresses_clean + + GROUP BY + booking_id + +), + +booking_address_join_bookings AS ( + + SELECT + bookings.booking_id, + bookings.sub_company_id, + bookings.reference AS booking_reference, + bookings.reference_contract AS booking_reference_contract, + bookings.service_type AS service_type, + bookings.status AS booking_status, + bookings.deleted_datetime AS booking_deleted_datetime, + bookings.created_datetime AS booking_created_datetime, + bookings.updated_datetime AS booking_updated_datetime, + + booking_address_group_by_booking_id.delivery_booking_address_id, + booking_address_group_by_booking_id.delivery_address_district_id, + booking_address_group_by_booking_id.delivery_address_state_id, + booking_address_group_by_booking_id.delivery_address_country_id, + booking_address_group_by_booking_id.delivery_address_reference, + booking_address_group_by_booking_id.delivery_address_line_one, + booking_address_group_by_booking_id.delivery_address_line_two, + booking_address_group_by_booking_id.delivery_address_district_name, + booking_address_group_by_booking_id.delivery_address_state_name, + booking_address_group_by_booking_id.delivery_address_country_name, + booking_address_group_by_booking_id.delivery_address_postcode, + booking_address_group_by_booking_id.delivery_address_type, + booking_address_group_by_booking_id.is_default_delivery_address, + booking_address_group_by_booking_id.delivery_address_status, + booking_address_group_by_booking_id.delivery_address_deleted_datetime, + booking_address_group_by_booking_id.delivery_address_created_datetime, + booking_address_group_by_booking_id.delivery_address_updated_datetime, + + booking_address_group_by_booking_id.billing_booking_address_id, + booking_address_group_by_booking_id.billing_address_district_id, + booking_address_group_by_booking_id.billing_address_state_id, + booking_address_group_by_booking_id.billing_address_country_id, + booking_address_group_by_booking_id.billing_address_reference, + booking_address_group_by_booking_id.billing_address_line_one, + booking_address_group_by_booking_id.billing_address_line_two, + booking_address_group_by_booking_id.billing_address_district_name, + booking_address_group_by_booking_id.billing_address_state_name, + booking_address_group_by_booking_id.billing_address_country_name, + booking_address_group_by_booking_id.billing_address_postcode, + booking_address_group_by_booking_id.billing_address_type, + booking_address_group_by_booking_id.is_default_billing_address, + booking_address_group_by_booking_id.billing_address_status, + booking_address_group_by_booking_id.billing_address_deleted_datetime, + booking_address_group_by_booking_id.billing_address_created_datetime, + booking_address_group_by_booking_id.billing_address_updated_datetime, + + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM bookings + + LEFT JOIN booking_address_group_by_booking_id + ON (bookings.booking_id = booking_address_group_by_booking_id.booking_id) + +), + + +-- FINAL +final__fct_shipping__bookings AS ( + + SELECT + -- ids + booking_id, + sub_company_id, + delivery_booking_address_id, + delivery_address_district_id, + delivery_address_state_id, + delivery_address_country_id, + billing_booking_address_id, + billing_address_district_id, + billing_address_state_id, + billing_address_country_id, + booking_reference, + booking_reference_contract, + + -- dimensions + service_type, + booking_status, + delivery_address_reference, + delivery_address_line_one, + delivery_address_line_two, + delivery_address_district_name, + delivery_address_state_name, + delivery_address_country_name, + delivery_address_postcode, + delivery_address_type, + is_default_delivery_address, + delivery_address_status, + billing_address_reference, + billing_address_line_one, + billing_address_line_two, + billing_address_district_name, + billing_address_state_name, + billing_address_country_name, + billing_address_postcode, + billing_address_type, + is_default_billing_address, + billing_address_status, + + -- -- date/times + booking_deleted_datetime, + booking_created_datetime, + booking_updated_datetime, + delivery_address_deleted_datetime, + delivery_address_created_datetime, + delivery_address_updated_datetime, + billing_address_deleted_datetime, + billing_address_created_datetime, + billing_address_updated_datetime, + + -- metadata + _dbt_ran_datetime + + FROM booking_address_join_bookings + +) + +SELECT * FROM final__fct_shipping__bookings +-- 10413 \ No newline at end of file diff --git a/models/marts/warehouse/fct_shipping__orders.sql b/models/marts/warehouse/fct_shipping__orders.sql new file mode 100644 index 0000000..91a9b4d --- /dev/null +++ b/models/marts/warehouse/fct_shipping__orders.sql @@ -0,0 +1,366 @@ +-- IMPORT +WITH first_mile_transport_arrangements AS ( + SELECT * FROM {{ ref('int_shipping__first_mile_transport_arrangements') }} +), + +mid_mile_transport_arrangements AS ( + SELECT * FROM {{ ref('int_shipping__mid_mile_transport_arrangements') }} +), + +bookings AS ( + SELECT * FROM {{ ref('stg_shipping__bookings') }} +), + +packages AS ( + SELECT * FROM {{ ref('stg_shipping__packages') }} +), + +package_extra_charges AS ( + SELECT * FROM {{ ref('stg_shipping__package_extra_charges') }} +), + +packing_list_invoice_payments AS ( + SELECT * FROM {{ ref('stg_shipping__packing_list_invoice_payments') }} +), + + +-- LOGIC +-- Packages by packing_list +packages_group_by_packing_list_id AS ( + + SELECT + packing_list_id, + COUNT(DISTINCT(package_id)) AS number_of_package_record, + ARRAY_AGG(DISTINCT(package_description)) AS package_descriptions, + SUM(width_cm) AS total_package_width_cm, + SUM(height_cm) AS total_package_height_cm, + SUM(length_cm) AS total_package_length_cm, + sum(weight_kg) AS total_package_weight_kg, + SUM(quantity) AS total_package_item, + SUM(cbm) AS total_package_cbm + + FROM + packages + + GROUP BY + packing_list_id + +), + +package_extra_charges_group_by_packing_list_id AS ( + + SELECT + packing_list_id, + COUNT(DISTINCT( + IFF(package_type = 'OVER_WEIGHT', + package_id, + null) + )) AS number_of_over_weight_charge_record, + + SUM( + IFF(package_type = 'OVER_WEIGHT', + extra_charge_cbm, + 0) + ) AS over_weight_cbm, + + SUM( + IFF(package_type = 'OVER_WEIGHT', + over_weight_kg, + 0) + ) AS over_weight_kg, + + + COUNT(DISTINCT( + IFF(package_type = 'PALLET', + package_id, + null) + )) AS number_of_pallet_charge_record, + + SUM( + IFF(package_type = 'PALLET', + extra_charge_cbm, + 0) + ) AS pallet_charge_cbm + + FROM package_extra_charges + + GROUP BY + packing_list_id + +), + +total_package_charges AS ( + + SELECT + packages_group_by_packing_list_id.packing_list_id, + packages_group_by_packing_list_id.number_of_package_record, + packages_group_by_packing_list_id.package_descriptions, + packages_group_by_packing_list_id.total_package_width_cm, + packages_group_by_packing_list_id.total_package_height_cm, + packages_group_by_packing_list_id.total_package_length_cm, + packages_group_by_packing_list_id.total_package_weight_kg, + packages_group_by_packing_list_id.total_package_item, + packages_group_by_packing_list_id.total_package_cbm, + + package_extra_charges_group_by_packing_list_id.number_of_over_weight_charge_record, + package_extra_charges_group_by_packing_list_id.over_weight_cbm, + package_extra_charges_group_by_packing_list_id.over_weight_kg, + package_extra_charges_group_by_packing_list_id.number_of_pallet_charge_record, + package_extra_charges_group_by_packing_list_id.pallet_charge_cbm + + FROM packages_group_by_packing_list_id + + LEFT JOIN package_extra_charges_group_by_packing_list_id + ON (packages_group_by_packing_list_id.packing_list_id = package_extra_charges_group_by_packing_list_id.packing_list_id) + +), + +-- Invoices +remove_expired_invoice_payments AS ( + + SELECT + * + + FROM packing_list_invoice_payments + + WHERE + invoice_status != 'EXPIRED' + AND + payment_status NOT IN ('SUSPENDED','REJECTED') + +), + +invoice_group_by_packing_list_ids AS ( + + SELECT + old_warehouse_shipping_packing_list_id, + invoice_sub_company_id, + payment_sub_company_id, + COUNT(DISTINCT(packing_list_invoice_id)) AS number_of_invoice, + COUNT(DISTINCT(packing_list_payment_id)) AS number_of_payment, + + SUM(invoice_number_of_shipping_fee) AS invoice_number_of_shipping_fee, + SUM(invoice_average_shipping_fee_price_per_quantity)/SUM(invoice_number_of_shipping_fee) AS invoice_average_shipping_fee_price_per_quantity, + SUM(invoice_total_shipping_fee_quantity) AS invoice_total_shipping_fee_quantity, + SUM(invoice_total_shipping_fee_value_rm) AS invoice_total_shipping_fee_value_rm, + SUM(invoice_number_of_min_cbm_charge) AS invoice_number_of_min_cbm_charge, + SUM(invoice_average_min_cbm_charge_price_per_quantity)/SUM(invoice_number_of_min_cbm_charge) AS invoice_average_min_cbm_charge_price_per_quantity, + SUM(invoice_total_min_cbm_charge_quantity) AS invoice_total_min_cbm_charge_quantity, + SUM(invoice_total_min_cbm_charge_value_rm) AS invoice_total_min_cbm_charge_value_rm, + SUM(invoice_number_of_over_weight_charge) AS invoice_number_of_over_weight_charge, + SUM(invoice_average_over_weight_charge_price_per_quantity)/SUM(invoice_number_of_over_weight_charge) AS invoice_average_over_weight_charge_price_per_quantity, + SUM(invoice_total_over_weight_charge_quantity) AS invoice_total_over_weight_charge_quantity, + SUM(invoice_total_over_weight_charge_value_rm) AS invoice_total_over_weight_charge_value_rm, + SUM(invoice_number_of_custom_charge) AS invoice_number_of_custom_charge, + SUM(invoice_average_custom_charge_price_per_quantity)/SUM(invoice_number_of_custom_charge) AS invoice_average_custom_charge_price_per_quantity, + SUM(invoice_total_custom_charge_quantity) AS invoice_total_custom_charge_quantity, + SUM(invoice_total_custom_charge_value_rm) AS invoice_total_custom_charge_value_rm, + SUM(invoice_value_rm) AS invoice_value_rm, + SUM(invoice_tax_rm) AS invoice_tax_rm, + SUM(invoice_service_charge) AS invoice_service_charge, + SUM(payment_value_rm) AS payment_value_rm, + SUM(payment_tax_rm) AS payment_tax_rm, + SUM(payment_service_charge_rm) AS payment_service_charge_rm, + MAX(invoice_created_datetime) AS last_invoice_created_datetime, + MAX(payment_created_datetime) AS last_payment_created_datetime + + FROM remove_expired_invoice_payments + + GROUP BY + old_warehouse_shipping_packing_list_id, + invoice_sub_company_id, + payment_sub_company_id + +), + +-- Joined orders +booking_join_package_charges_join_invoice_payments AS ( + + SELECT + bookings.sub_company_id, + bookings.service_type, + bookings.status AS booking_status, + bookings.created_datetime AS booking_created_datetime, + bookings.updated_datetime AS booking_updated_datetime, + + first_mile_transport_arrangements.new_first_mile_packing_list_id, + first_mile_transport_arrangements.old_first_mile_packing_list_id, + first_mile_transport_arrangements.first_mile_receive_status, + first_mile_transport_arrangements.first_mile_received_datetime AS order_created_datetime, + + mid_mile_transport_arrangements.new_mid_mile_packing_list_id, + mid_mile_transport_arrangements.old_mid_mile_packing_list_id, + mid_mile_transport_arrangements.mid_mile_booking_id AS booking_id, + mid_mile_transport_arrangements.mid_mile_warehouse_order_number AS warehouse_order_number, + + total_package_charges.number_of_package_record, + total_package_charges.package_descriptions, + total_package_charges.total_package_item, + total_package_charges.total_package_width_cm, + total_package_charges.total_package_height_cm, + total_package_charges.total_package_length_cm, + total_package_charges.total_package_Weight_kg, + total_package_charges.total_package_cbm, + total_package_charges.number_of_over_weight_charge_record, + total_package_charges.over_weight_cbm, + total_package_charges.over_weight_kg, + total_package_charges.number_of_pallet_charge_record, + total_package_charges.pallet_charge_cbm, + + invoice_group_by_packing_list_ids.invoice_sub_company_id, + invoice_group_by_packing_list_ids.payment_sub_company_id, + invoice_group_by_packing_list_ids.number_of_invoice, + invoice_group_by_packing_list_ids.number_of_payment, + invoice_group_by_packing_list_ids.invoice_number_of_shipping_fee, + invoice_group_by_packing_list_ids.invoice_average_shipping_fee_price_per_quantity, + invoice_group_by_packing_list_ids.invoice_total_shipping_fee_quantity, + invoice_group_by_packing_list_ids.invoice_total_shipping_fee_value_rm, + invoice_group_by_packing_list_ids.invoice_number_of_min_cbm_charge, + invoice_group_by_packing_list_ids.invoice_average_min_cbm_charge_price_per_quantity, + invoice_group_by_packing_list_ids.invoice_total_min_cbm_charge_quantity, + invoice_group_by_packing_list_ids.invoice_total_min_cbm_charge_value_rm, + invoice_group_by_packing_list_ids.invoice_number_of_over_weight_charge, + invoice_group_by_packing_list_ids.invoice_average_over_weight_charge_price_per_quantity, + invoice_group_by_packing_list_ids.invoice_total_over_weight_charge_quantity, + invoice_group_by_packing_list_ids.invoice_total_over_weight_charge_value_rm, + invoice_group_by_packing_list_ids.invoice_number_of_custom_charge, + invoice_group_by_packing_list_ids.invoice_average_custom_charge_price_per_quantity, + invoice_group_by_packing_list_ids.invoice_total_custom_charge_quantity, + invoice_group_by_packing_list_ids.invoice_total_custom_charge_value_rm, + invoice_group_by_packing_list_ids.invoice_value_rm, + invoice_group_by_packing_list_ids.invoice_tax_rm, + invoice_group_by_packing_list_ids.invoice_service_charge, + invoice_group_by_packing_list_ids.payment_value_rm, + invoice_group_by_packing_list_ids.payment_tax_rm, + invoice_group_by_packing_list_ids.payment_service_charge_rm, + invoice_group_by_packing_list_ids.last_invoice_created_datetime, + invoice_group_by_packing_list_ids.last_payment_created_datetime + + FROM mid_mile_transport_arrangements + + LEFT JOIN first_mile_transport_arrangements + ON (mid_mile_transport_arrangements.mid_mile_warehouse_order_number = first_mile_transport_arrangements.first_mile_warehouse_order_number) + + LEFT JOIN total_package_charges + ON (mid_mile_transport_arrangements.new_mid_mile_packing_list_id = total_package_charges.packing_list_id) + + LEFT JOIN invoice_group_by_packing_list_ids + ON (mid_mile_transport_arrangements.old_mid_mile_packing_list_id = invoice_group_by_packing_list_ids.old_warehouse_shipping_packing_list_id) + + LEFT JOIN bookings + ON (mid_mile_transport_arrangements.mid_mile_booking_id = bookings.booking_id) + +), + +create_new_column AS ( + + SELECT + *, + (ZEROIFNULL(total_package_cbm) + + ZEROIFNULL(over_weight_cbm) + + ZEROIFNULL(pallet_charge_cbm)) AS total_order_cbm, + + CASE + WHEN ROW_NUMBER() OVER (PARTITION BY sub_company_id ORDER BY order_created_datetime) = 1 THEN 1 + ELSE 0 + END AS is_first_time_sub_company, + + CASE + WHEN first_mile_receive_status IN ('COMPLETED', 'APPROVED') + AND + MIN(IFF(first_mile_receive_status IN ('COMPLETED', 'APPROVED'), order_created_datetime, NULL)) + OVER (PARTITION BY sub_company_id) + = order_created_datetime + THEN 1 + ELSE 0 + END AS is_first_time_sub_company_completed, + + LEAD(order_created_datetime) OVER ( + PARTITION BY sub_company_id ORDER BY (order_created_datetime, CAST(new_first_mile_packing_list_id AS INT)) + ) AS next_order_created_datetime, + + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM booking_join_package_charges_join_invoice_payments + +), + + +-- FINAL +final__fct_shipping__orders AS ( + + SELECT + --ids + new_first_mile_packing_list_id, + old_first_mile_packing_list_id, + new_mid_mile_packing_list_id, + old_mid_mile_packing_list_id, + booking_id, + sub_company_id, + invoice_sub_company_id, + payment_sub_company_id, + warehouse_order_number, + + --dimensions + service_type, + booking_status, + first_mile_receive_status, + package_descriptions, + is_first_time_sub_company, + is_first_time_sub_company_completed, + + --measures + number_of_package_record, + total_package_item, + total_package_width_cm, + total_package_height_cm, + total_package_length_cm, + total_package_cbm, + total_package_weight_kg, + total_order_cbm, + number_of_over_weight_charge_record, + over_weight_cbm, + over_weight_kg, + number_of_pallet_charge_record, + pallet_charge_cbm, + number_of_invoice, + number_of_payment, + invoice_number_of_shipping_fee, + invoice_average_shipping_fee_price_per_quantity, + invoice_total_shipping_fee_quantity, + invoice_total_shipping_fee_value_rm, + invoice_number_of_min_cbm_charge, + invoice_average_min_cbm_charge_price_per_quantity, + invoice_total_min_cbm_charge_quantity, + invoice_total_min_cbm_charge_value_rm, + invoice_number_of_over_weight_charge, + invoice_average_over_weight_charge_price_per_quantity, + invoice_total_over_weight_charge_quantity, + invoice_total_over_weight_charge_value_rm, + invoice_number_of_custom_charge, + invoice_average_custom_charge_price_per_quantity, + invoice_total_custom_charge_quantity, + invoice_total_custom_charge_value_rm, + invoice_value_rm, + invoice_tax_rm, + invoice_service_charge, + payment_value_rm, + payment_tax_rm, + payment_service_charge_rm, + + --date/times + booking_created_datetime, + booking_updated_datetime, + order_created_datetime, + next_order_created_datetime, + last_invoice_created_datetime, + last_payment_created_datetime, + + --metadata + _dbt_ran_datetime + + FROM create_new_column + +) + +SELECT * FROM final__fct_shipping__orders \ No newline at end of file diff --git a/models/marts/warehouse/fct_shipping__origin_warehouse_receive_packing_lists.sql b/models/marts/warehouse/fct_shipping__origin_warehouse_receive_packing_lists.sql deleted file mode 100644 index 3e1cdbe..0000000 --- a/models/marts/warehouse/fct_shipping__origin_warehouse_receive_packing_lists.sql +++ /dev/null @@ -1,590 +0,0 @@ --- IMPORT -WITH origin_warehouse_receive_packing_lists AS ( - SELECT * FROM {{ ref('stg_shipping__origin_warehouse_receive_packing_lists') }} -), - -origin_warehouse_shipping_packing_lists AS ( - SELECT * FROM {{ ref('stg_shipping__warehouse_shipping_packing_lists') }} -), - -vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists AS ( - SELECT * FROM {{ ref('int_shipping__vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists') }} -), - -bookings AS ( - SELECT * FROM {{ ref('stg_shipping__bookings') }} -), - -booking_delivery_and_billing_addresses AS ( - SELECT * FROM {{ ref('int_shipping__booking_delivery_and_billing_addresses') }} -), - -origin_warehouse_receive_brg_transport_arrangements AS ( - SELECT * FROM {{ ref('int_shipping__origin_warehouse_receive_transport_arrangements') }} -), - -destination_warehouse_packing_list_transport_arrangements AS ( - SELECT * FROM {{ ref('int_shipping__destination_warehouse_last_mile_transport_arrangements') }} -), - -packing_list_invoice_payments_group_by_packing_list_ids AS ( - SELECT * FROM {{ ref('int_shipping__packing_list_invoice_payments_group_by_packing_list_ids') }} -), - -packages_group_by_packing_list_ids AS ( - SELECT * FROM {{ ref('int_shipping__packages_group_by_packing_list_ids') }} -), - -container_group_by_packing_list_ids AS ( - SELECT * FROM {{ ref('int_shipping__origin_warehouse_container_shipping_transport_arrangements') }} -), - - --- LOGIC -origin_warehouse_receive_packing_lists_enrich AS ( - SELECT - origin_warehouse_receive_packing_lists.origin_warehouse_receive_packing_list_id, - origin_warehouse_receive_packing_lists.old_origin_warehouse_receive_packing_list_id, - origin_warehouse_receive_packing_lists.has_replaced_by_new_id AS has_replaced_by_new_origin_warehouse_receive_packing_list_id, - - - IFF(vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.warehouse_order_number is not null, - vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.warehouse_order_number, - origin_warehouse_receive_packing_lists.warehouse_order_number) AS warehouse_order_number, - - origin_warehouse_receive_packing_lists.booking_id, - origin_warehouse_receive_packing_lists.warehouse_sub_company_id, - origin_warehouse_receive_packing_lists.reference_contract, - origin_warehouse_receive_packing_lists.status AS origin_warehouse_receive_order_status, - origin_warehouse_receive_packing_lists.created_datetime AS origin_warehouse_receive_order_created_datetime, - - bookings.sub_company_id, - bookings.service_type, - bookings.status AS booking_status, - bookings.created_datetime AS booking_created_datetime, - - booking_delivery_and_billing_addresses.delivery_address_reference, - booking_delivery_and_billing_addresses.delivery_address_line_one, - booking_delivery_and_billing_addresses.delivery_address_line_two, - booking_delivery_and_billing_addresses.delivery_address_district_name, - booking_delivery_and_billing_addresses.delivery_address_state_name, - booking_delivery_and_billing_addresses.delivery_address_country_name, - booking_delivery_and_billing_addresses.delivery_address_postcode, - booking_delivery_and_billing_addresses.delivery_address_type, - booking_delivery_and_billing_addresses.is_default_delivery_address, - booking_delivery_and_billing_addresses.delivery_address_status, - booking_delivery_and_billing_addresses.billing_address_reference, - booking_delivery_and_billing_addresses.billing_address_line_one, - booking_delivery_and_billing_addresses.billing_address_line_two, - booking_delivery_and_billing_addresses.billing_address_district_name, - booking_delivery_and_billing_addresses.billing_address_state_name, - booking_delivery_and_billing_addresses.billing_address_country_name, - booking_delivery_and_billing_addresses.billing_address_postcode, - booking_delivery_and_billing_addresses.billing_address_type, - booking_delivery_and_billing_addresses.is_default_billing_address, - booking_delivery_and_billing_addresses.billing_address_status, - booking_delivery_and_billing_addresses.delivery_address_created_datetime, - booking_delivery_and_billing_addresses.billing_address_created_datetime, - - packages_group_by_packing_list_ids.package_descriptions, - packages_group_by_packing_list_ids.number_of_package_record, - packages_group_by_packing_list_ids.total_package_width_cm, - packages_group_by_packing_list_ids.total_package_height_cm, - packages_group_by_packing_list_ids.total_package_length_cm, - packages_group_by_packing_list_ids.total_package_weight_kg, - packages_group_by_packing_list_ids.total_package_item, - packages_group_by_packing_list_ids.total_package_cbm, - packages_group_by_packing_list_ids.number_of_over_weight_charge_record, - packages_group_by_packing_list_ids.over_weight_cbm, - packages_group_by_packing_list_ids.over_weight_kg, - packages_group_by_packing_list_ids.number_of_pallet_charge_record, - packages_group_by_packing_list_ids.pallet_charge_cbm, - - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_arrangement_id, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_transport_mode, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_courier, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_tracking_number, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_status, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_number_of_etd_datetime_postpone, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_number_of_eta_datetime_postpone, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_dispatched_datetime, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_droped_datetime, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_etd_datetimes, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_first_etd_datetime, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_last_etd_datetime, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_eta_datetimes, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_first_eta_datetime, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_last_eta_datetime, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_first_estimate_schedule_created_datetime, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_last_estimate_schedule_created_datetime, - origin_warehouse_receive_brg_transport_arrangements.origin_factory_transport_created_datetime - - FROM origin_warehouse_receive_packing_lists - - LEFT JOIN vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists - ON (origin_warehouse_receive_packing_lists.old_origin_warehouse_receive_packing_list_id = vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.old_origin_warehouse_receive_packing_list_id) - - LEFT JOIN bookings - ON (origin_warehouse_receive_packing_lists.booking_id = bookings.booking_id) - - LEFT JOIN booking_delivery_and_billing_addresses - ON (bookings.booking_id = booking_delivery_and_billing_addresses.booking_id) - - LEFT JOIN packages_group_by_packing_list_ids - ON (origin_warehouse_receive_packing_lists.origin_warehouse_receive_packing_list_id = packages_group_by_packing_list_ids.packing_list_id) - - LEFT JOIN origin_warehouse_receive_brg_transport_arrangements - ON (origin_warehouse_receive_packing_lists.old_origin_warehouse_receive_packing_list_id = origin_warehouse_receive_brg_transport_arrangements.old_origin_warehouse_receive_packing_list_id) -), - -origin_warehouse_shipping_packing_lists_enrich AS ( - SELECT - origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_packing_list_id, - origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id, - origin_warehouse_shipping_packing_lists.has_replaced_by_new_id AS has_replaced_by_new_origin_warehouse_shipping_packing_list_id, - - IFF(vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.warehouse_order_number is not null, - vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.warehouse_order_number, - origin_warehouse_shipping_packing_lists.warehouse_order_number) AS warehouse_order_number, - - origin_warehouse_shipping_packing_lists.warehouse_sub_company_id, - origin_warehouse_shipping_packing_lists.reference_contract, - origin_warehouse_shipping_packing_lists.status AS origin_warehouse_shipping_order_status, - origin_warehouse_shipping_packing_lists.created_datetime AS origin_warehouse_shipping_order_created_datetime, - - packing_list_invoice_payments_group_by_packing_list_ids.invoice_sub_company_id, - packing_list_invoice_payments_group_by_packing_list_ids.payment_sub_company_id, - packing_list_invoice_payments_group_by_packing_list_ids.number_of_invoice, - packing_list_invoice_payments_group_by_packing_list_ids.number_of_payment, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_number_of_shipping_fee, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_average_shipping_fee_price_per_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_shipping_fee_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_shipping_fee_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_number_of_min_cbm_charge, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_average_min_cbm_charge_price_per_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_min_cbm_charge_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_min_cbm_charge_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_number_of_over_weight_charge, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_average_over_weight_charge_price_per_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_over_weight_charge_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_over_weight_charge_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_number_of_custom_charge, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_average_custom_charge_price_per_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_custom_charge_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_custom_charge_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_tax_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_service_charge, - packing_list_invoice_payments_group_by_packing_list_ids.payment_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.payment_tax_rm, - packing_list_invoice_payments_group_by_packing_list_ids.payment_service_charge_rm, - packing_list_invoice_payments_group_by_packing_list_ids.last_invoice_created_datetime, - packing_list_invoice_payments_group_by_packing_list_ids.last_payment_created_datetime, - - packages_group_by_packing_list_ids.package_descriptions, - packages_group_by_packing_list_ids.number_of_package_record, - packages_group_by_packing_list_ids.total_package_width_cm, - packages_group_by_packing_list_ids.total_package_height_cm, - packages_group_by_packing_list_ids.total_package_length_cm, - packages_group_by_packing_list_ids.total_package_weight_kg, - packages_group_by_packing_list_ids.total_package_item, - packages_group_by_packing_list_ids.total_package_cbm, - packages_group_by_packing_list_ids.number_of_over_weight_charge_record, - packages_group_by_packing_list_ids.over_weight_cbm, - packages_group_by_packing_list_ids.over_weight_kg, - packages_group_by_packing_list_ids.number_of_pallet_charge_record, - packages_group_by_packing_list_ids.pallet_charge_cbm, - - container_group_by_packing_list_ids.container_id, - container_group_by_packing_list_ids.container_warehouse_sub_company_id, - container_group_by_packing_list_ids.container_transport_arrangement_id, - container_group_by_packing_list_ids.container_reference, - container_group_by_packing_list_ids.container_number, - container_group_by_packing_list_ids.container_seal_reference, - container_group_by_packing_list_ids.container_type, - container_group_by_packing_list_ids.container_status, - container_group_by_packing_list_ids.container_transport_arrangment_status, - container_group_by_packing_list_ids.container_deliver_courier, - container_group_by_packing_list_ids.container_tracking_number, - container_group_by_packing_list_ids.number_of_container_etd_datetime_postpone, - container_group_by_packing_list_ids.number_of_container_eta_datetime_postpone, - container_group_by_packing_list_ids.container_loaded_datetime, - container_group_by_packing_list_ids.container_departed_datetime, - container_group_by_packing_list_ids.container_arrived_datetime, - container_group_by_packing_list_ids.container_etd_datetimes, - container_group_by_packing_list_ids.first_container_etd_datetimes, - container_group_by_packing_list_ids.last_container_etd_datetimes, - container_group_by_packing_list_ids.container_eta_datetimes, - container_group_by_packing_list_ids.first_container_eta_datetime, - container_group_by_packing_list_ids.last_container_eta_datetime, - container_group_by_packing_list_ids.first_container_estimate_schedule_created_datetime, - container_group_by_packing_list_ids.last_container_estimate_schedule_created_datetime, - container_group_by_packing_list_ids.container_deleted_datetime, - container_group_by_packing_list_ids.container_created_datetime, - container_group_by_packing_list_ids.container_updated_datetime, - - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_arrangement_id, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_transport_mode, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_courier, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_tracking_number, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_status, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_number_of_etd_datetime_postpone, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_number_of_eta_datetime_postpone, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_dispatched_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_droped_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_etd_datetimes, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_first_etd_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_last_etd_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_eta_datetimes, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_first_eta_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_last_eta_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_first_estimate_schedule_created_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_last_estimate_schedule_created_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_created_datetime - - - FROM origin_warehouse_shipping_packing_lists - - LEFT JOIN vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists - ON (origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id = vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id) - - LEFT JOIN packing_list_invoice_payments_group_by_packing_list_ids - ON (origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id = packing_list_invoice_payments_group_by_packing_list_ids.old_origin_warehouse_shipping_packing_list_id) - - LEFT JOIN packages_group_by_packing_list_ids - ON (origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_packing_list_id = packages_group_by_packing_list_ids.packing_list_id) - - LEFT JOIN container_group_by_packing_list_ids - ON (origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id = container_group_by_packing_list_ids.packing_list_id) - - LEFT JOIN destination_warehouse_packing_list_transport_arrangements - ON (origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id = destination_warehouse_packing_list_transport_arrangements.old_origin_warehouse_shipping_packing_list_id) -), - - -receive_join_shipping_list AS ( - SELECT - origin_warehouse_receive_packing_lists_enrich.origin_warehouse_receive_packing_list_id AS adjusted_origin_warehouse_receive_id, - origin_warehouse_receive_packing_lists_enrich.old_origin_warehouse_receive_packing_list_id AS origin_warehouse_receive_id, - IFF(origin_warehouse_receive_packing_lists_enrich.has_replaced_by_new_origin_warehouse_receive_packing_list_id = 1 - OR - origin_warehouse_shipping_packing_lists_enrich.has_replaced_by_new_origin_warehouse_shipping_packing_list_id = 1, - 1, - 0) AS has_adjusted_measurment, - origin_warehouse_receive_packing_lists_enrich.warehouse_order_number, - origin_warehouse_receive_packing_lists_enrich.booking_id, - origin_warehouse_receive_packing_lists_enrich.warehouse_sub_company_id AS warehouse_location_sub_company_id, - origin_warehouse_receive_packing_lists_enrich.origin_warehouse_receive_order_status AS origin_warehouse_receive_status, - origin_warehouse_receive_packing_lists_enrich.origin_warehouse_receive_order_created_datetime AS origin_warehouse_receive_created_datetime, - origin_warehouse_receive_packing_lists_enrich.sub_company_id, - origin_warehouse_receive_packing_lists_enrich.service_type, - origin_warehouse_receive_packing_lists_enrich.booking_status, - origin_warehouse_receive_packing_lists_enrich.booking_created_datetime, - origin_warehouse_receive_packing_lists_enrich.delivery_address_reference, - origin_warehouse_receive_packing_lists_enrich.delivery_address_line_one, - origin_warehouse_receive_packing_lists_enrich.delivery_address_line_two, - origin_warehouse_receive_packing_lists_enrich.delivery_address_district_name, - origin_warehouse_receive_packing_lists_enrich.delivery_address_state_name, - origin_warehouse_receive_packing_lists_enrich.delivery_address_country_name, - origin_warehouse_receive_packing_lists_enrich.delivery_address_postcode, - origin_warehouse_receive_packing_lists_enrich.delivery_address_type, - origin_warehouse_receive_packing_lists_enrich.is_default_delivery_address, - origin_warehouse_receive_packing_lists_enrich.delivery_address_status, - origin_warehouse_receive_packing_lists_enrich.billing_address_reference, - origin_warehouse_receive_packing_lists_enrich.billing_address_line_one, - origin_warehouse_receive_packing_lists_enrich.billing_address_line_two, - origin_warehouse_receive_packing_lists_enrich.billing_address_district_name, - origin_warehouse_receive_packing_lists_enrich.billing_address_state_name, - origin_warehouse_receive_packing_lists_enrich.billing_address_country_name, - origin_warehouse_receive_packing_lists_enrich.billing_address_postcode, - origin_warehouse_receive_packing_lists_enrich.billing_address_type, - origin_warehouse_receive_packing_lists_enrich.is_default_billing_address, - origin_warehouse_receive_packing_lists_enrich.billing_address_status, - origin_warehouse_receive_packing_lists_enrich.delivery_address_created_datetime, - origin_warehouse_receive_packing_lists_enrich.billing_address_created_datetime, - CASE - WHEN origin_warehouse_receive_packing_lists_enrich.package_descriptions IS NOT NULL AND origin_warehouse_shipping_packing_lists_enrich.package_descriptions IS NOT NULL - THEN ARRAY_CAT(origin_warehouse_receive_packing_lists_enrich.package_descriptions, origin_warehouse_shipping_packing_lists_enrich.package_descriptions) - WHEN origin_warehouse_receive_packing_lists_enrich.package_descriptions IS NOT NULL - THEN origin_warehouse_receive_packing_lists_enrich.package_descriptions - ELSE origin_warehouse_shipping_packing_lists_enrich.package_descriptions - END AS package_descriptions, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.number_of_package_record],[origin_warehouse_receive_packing_lists_enrich.number_of_package_record])[0]::INT AS number_of_package_record, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.total_package_width_cm],[origin_warehouse_receive_packing_lists_enrich.total_package_width_cm])[0]::FLOAT AS total_package_width_cm, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.total_package_height_cm], [origin_warehouse_receive_packing_lists_enrich.total_package_height_cm])[0]::FLOAT AS total_package_height_cm, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.total_package_length_cm], [origin_warehouse_receive_packing_lists_enrich.total_package_length_cm])[0]::FLOAT AS total_package_length_cm, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.total_package_weight_kg], [origin_warehouse_receive_packing_lists_enrich.total_package_weight_kg])[0]::FLOAT AS total_package_weight_kg, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.total_package_item], [origin_warehouse_receive_packing_lists_enrich.total_package_item])[0]::FLOAT AS total_package_item, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.total_package_cbm], [origin_warehouse_receive_packing_lists_enrich.total_package_cbm])[0]::FLOAT AS total_package_cbm, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.number_of_over_weight_charge_record], [origin_warehouse_receive_packing_lists_enrich.number_of_over_weight_charge_record])[0]::INT AS number_of_over_weight_charge_record, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.over_weight_cbm], [origin_warehouse_receive_packing_lists_enrich.over_weight_cbm])[0]::FLOAT AS over_weight_cbm, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.over_weight_kg], [origin_warehouse_receive_packing_lists_enrich.over_weight_kg])[0]::FLOAT AS over_weight_kg, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.number_of_pallet_charge_record], [origin_warehouse_receive_packing_lists_enrich.number_of_pallet_charge_record])[0]::INT AS number_of_pallet_charge_record, - GREATEST([origin_warehouse_shipping_packing_lists_enrich.pallet_charge_cbm], [origin_warehouse_receive_packing_lists_enrich.pallet_charge_cbm])[0]::FLOAT AS pallet_charge_cbm, - - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_arrangement_id, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_transport_mode, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_courier, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_tracking_number, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_status, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_number_of_etd_datetime_postpone, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_number_of_eta_datetime_postpone, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_dispatched_datetime, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_droped_datetime, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_etd_datetimes, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_first_etd_datetime, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_last_etd_datetime, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_eta_datetimes, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_first_eta_datetime, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_last_eta_datetime, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_first_estimate_schedule_created_datetime, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_last_estimate_schedule_created_datetime, - origin_warehouse_receive_packing_lists_enrich.origin_factory_transport_created_datetime, - - - - origin_warehouse_shipping_packing_lists_enrich.origin_warehouse_shipping_packing_list_id AS adjusted_origin_warehouse_shipping_id, - origin_warehouse_shipping_packing_lists_enrich.old_origin_warehouse_shipping_packing_list_id AS origin_warehouse_shipping_id, - origin_warehouse_shipping_packing_lists_enrich.warehouse_sub_company_id AS warehouse_sub_company_id, - origin_warehouse_shipping_packing_lists_enrich.reference_contract, - origin_warehouse_shipping_packing_lists_enrich.origin_warehouse_shipping_order_status AS origin_warehouse_shipping_status, - origin_warehouse_shipping_packing_lists_enrich.origin_warehouse_shipping_order_created_datetime AS origin_warehouse_shipping_created_datetime, - - origin_warehouse_shipping_packing_lists_enrich.invoice_sub_company_id, - origin_warehouse_shipping_packing_lists_enrich.payment_sub_company_id, - origin_warehouse_shipping_packing_lists_enrich.number_of_invoice, - origin_warehouse_shipping_packing_lists_enrich.number_of_payment, - origin_warehouse_shipping_packing_lists_enrich.invoice_number_of_shipping_fee, - origin_warehouse_shipping_packing_lists_enrich.invoice_average_shipping_fee_price_per_quantity, - origin_warehouse_shipping_packing_lists_enrich.invoice_total_shipping_fee_quantity, - origin_warehouse_shipping_packing_lists_enrich.invoice_total_shipping_fee_value_rm, - origin_warehouse_shipping_packing_lists_enrich.invoice_number_of_min_cbm_charge, - origin_warehouse_shipping_packing_lists_enrich.invoice_average_min_cbm_charge_price_per_quantity, - origin_warehouse_shipping_packing_lists_enrich.invoice_total_min_cbm_charge_quantity, - origin_warehouse_shipping_packing_lists_enrich.invoice_total_min_cbm_charge_value_rm, - origin_warehouse_shipping_packing_lists_enrich.invoice_number_of_over_weight_charge, - origin_warehouse_shipping_packing_lists_enrich.invoice_average_over_weight_charge_price_per_quantity, - origin_warehouse_shipping_packing_lists_enrich.invoice_total_over_weight_charge_quantity, - origin_warehouse_shipping_packing_lists_enrich.invoice_total_over_weight_charge_value_rm, - origin_warehouse_shipping_packing_lists_enrich.invoice_number_of_custom_charge, - origin_warehouse_shipping_packing_lists_enrich.invoice_average_custom_charge_price_per_quantity, - origin_warehouse_shipping_packing_lists_enrich.invoice_total_custom_charge_quantity, - origin_warehouse_shipping_packing_lists_enrich.invoice_total_custom_charge_value_rm, - origin_warehouse_shipping_packing_lists_enrich.invoice_value_rm, - origin_warehouse_shipping_packing_lists_enrich.invoice_tax_rm, - origin_warehouse_shipping_packing_lists_enrich.invoice_service_charge, - origin_warehouse_shipping_packing_lists_enrich.payment_value_rm, - origin_warehouse_shipping_packing_lists_enrich.payment_tax_rm, - origin_warehouse_shipping_packing_lists_enrich.payment_service_charge_rm, - origin_warehouse_shipping_packing_lists_enrich.last_invoice_created_datetime, - origin_warehouse_shipping_packing_lists_enrich.last_payment_created_datetime, - - origin_warehouse_shipping_packing_lists_enrich.container_id, - origin_warehouse_shipping_packing_lists_enrich.container_warehouse_sub_company_id, - origin_warehouse_shipping_packing_lists_enrich.container_transport_arrangement_id, - origin_warehouse_shipping_packing_lists_enrich.container_reference, - origin_warehouse_shipping_packing_lists_enrich.container_number, - origin_warehouse_shipping_packing_lists_enrich.container_seal_reference, - origin_warehouse_shipping_packing_lists_enrich.container_type, - origin_warehouse_shipping_packing_lists_enrich.container_status, - origin_warehouse_shipping_packing_lists_enrich.container_transport_arrangment_status, - origin_warehouse_shipping_packing_lists_enrich.container_deliver_courier, - origin_warehouse_shipping_packing_lists_enrich.container_tracking_number, - origin_warehouse_shipping_packing_lists_enrich.number_of_container_etd_datetime_postpone, - origin_warehouse_shipping_packing_lists_enrich.number_of_container_eta_datetime_postpone, - origin_warehouse_shipping_packing_lists_enrich.container_loaded_datetime, - origin_warehouse_shipping_packing_lists_enrich.container_departed_datetime, - origin_warehouse_shipping_packing_lists_enrich.container_arrived_datetime, - origin_warehouse_shipping_packing_lists_enrich.container_etd_datetimes, - origin_warehouse_shipping_packing_lists_enrich.first_container_etd_datetimes, - origin_warehouse_shipping_packing_lists_enrich.last_container_etd_datetimes, - origin_warehouse_shipping_packing_lists_enrich.container_eta_datetimes, - origin_warehouse_shipping_packing_lists_enrich.first_container_eta_datetime, - origin_warehouse_shipping_packing_lists_enrich.last_container_eta_datetime, - origin_warehouse_shipping_packing_lists_enrich.first_container_estimate_schedule_created_datetime, - origin_warehouse_shipping_packing_lists_enrich.last_container_estimate_schedule_created_datetime, - origin_warehouse_shipping_packing_lists_enrich.container_deleted_datetime, - origin_warehouse_shipping_packing_lists_enrich.container_created_datetime, - origin_warehouse_shipping_packing_lists_enrich.container_updated_datetime, - - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_arrangement_id, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_transport_mode, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_courier, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_tracking_number, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_status, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_number_of_etd_datetime_postpone, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_number_of_eta_datetime_postpone, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_dispatched_datetime, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_droped_datetime, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_etd_datetimes, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_first_etd_datetime, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_last_etd_datetime, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_eta_datetimes, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_first_eta_datetime, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_last_eta_datetime, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_first_estimate_schedule_created_datetime, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_last_estimate_schedule_created_datetime, - origin_warehouse_shipping_packing_lists_enrich.destination_warehouse_transport_created_datetime, - - '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - - FROM origin_warehouse_receive_packing_lists_enrich - - LEFT JOIN origin_warehouse_shipping_packing_lists_enrich - ON (origin_warehouse_receive_packing_lists_enrich.warehouse_order_number = origin_warehouse_shipping_packing_lists_enrich.warehouse_order_number) -), - --- FINAL -final__fct_shipping__origin_warehouse_receive_packing_lists AS ( - SELECT - -- ids - origin_warehouse_receive_id, - adjusted_origin_warehouse_receive_id, - booking_id, - sub_company_id, - invoice_sub_company_id, - payment_sub_company_id, - warehouse_location_sub_company_id, - warehouse_sub_company_id, - origin_factory_transport_arrangement_id, - origin_warehouse_shipping_id, - adjusted_origin_warehouse_shipping_id, - container_id, - container_warehouse_sub_company_id, - container_transport_arrangement_id, - destination_warehouse_transport_arrangement_id, - - -- dimensions - warehouse_order_number, - has_adjusted_measurment, - service_type, - package_descriptions, - reference_contract, - is_default_delivery_address, - delivery_address_reference, - delivery_address_line_one, - delivery_address_line_two, - delivery_address_district_name, - delivery_address_state_name, - delivery_address_country_name, - delivery_address_postcode, - delivery_address_type, - is_default_billing_address, - billing_address_reference, - billing_address_line_one, - billing_address_line_two, - billing_address_district_name, - billing_address_state_name, - billing_address_country_name, - billing_address_postcode, - billing_address_type, - origin_factory_transport_transport_mode, - origin_factory_transport_courier, - origin_factory_transport_tracking_number, - container_type, - container_reference, - container_number, - container_seal_reference, - container_deliver_courier, - container_tracking_number, - destination_warehouse_transport_transport_mode, - destination_warehouse_transport_courier, - destination_warehouse_transport_tracking_number, - origin_factory_transport_status, - booking_status, - delivery_address_status, - billing_address_status, - origin_warehouse_receive_status, - origin_warehouse_shipping_status, - container_status, - container_transport_arrangment_status, - destination_warehouse_transport_status, - - -- measures - number_of_package_record, - total_package_width_cm, - total_package_height_cm, - total_package_length_cm, - total_package_weight_kg, - total_package_item, - total_package_cbm, - number_of_over_weight_charge_record, - over_weight_cbm, - over_weight_kg, - number_of_pallet_charge_record, - pallet_charge_cbm, - number_of_invoice, - number_of_payment, - invoice_number_of_shipping_fee, - invoice_average_shipping_fee_price_per_quantity, - invoice_total_shipping_fee_quantity, - invoice_total_shipping_fee_value_rm, - invoice_number_of_min_cbm_charge, - invoice_average_min_cbm_charge_price_per_quantity, - invoice_total_min_cbm_charge_quantity, - invoice_total_min_cbm_charge_value_rm, - invoice_number_of_over_weight_charge, - invoice_average_over_weight_charge_price_per_quantity, - invoice_total_over_weight_charge_quantity, - invoice_total_over_weight_charge_value_rm, - invoice_number_of_custom_charge, - invoice_average_custom_charge_price_per_quantity, - invoice_total_custom_charge_quantity, - invoice_total_custom_charge_value_rm, - invoice_value_rm, - invoice_tax_rm, - invoice_service_charge, - payment_value_rm, - payment_tax_rm, - payment_service_charge_rm, - origin_factory_transport_number_of_etd_datetime_postpone, - origin_factory_transport_number_of_eta_datetime_postpone, - number_of_container_etd_datetime_postpone, - number_of_container_eta_datetime_postpone, - destination_warehouse_transport_number_of_etd_datetime_postpone, - destination_warehouse_transport_number_of_eta_datetime_postpone, - - -- date/times - booking_created_datetime, - delivery_address_created_datetime, - billing_address_created_datetime, - origin_factory_transport_created_datetime, - origin_factory_transport_etd_datetimes, - origin_factory_transport_first_etd_datetime, - origin_factory_transport_last_etd_datetime, - origin_factory_transport_dispatched_datetime, - origin_factory_transport_droped_datetime, - origin_factory_transport_eta_datetimes, - origin_factory_transport_first_eta_datetime, - origin_factory_transport_last_eta_datetime, - origin_warehouse_receive_created_datetime, - origin_warehouse_shipping_created_datetime, - last_invoice_created_datetime, - last_payment_created_datetime, - container_created_datetime, - container_loaded_datetime, - container_departed_datetime, - container_arrived_datetime, - container_etd_datetimes, - first_container_etd_datetimes, - last_container_etd_datetimes, - container_eta_datetimes, - first_container_eta_datetime, - last_container_eta_datetime, - destination_warehouse_transport_created_datetime, - destination_warehouse_transport_dispatched_datetime, - destination_warehouse_transport_droped_datetime, - destination_warehouse_transport_etd_datetimes, - destination_warehouse_transport_first_etd_datetime, - destination_warehouse_transport_last_etd_datetime, - destination_warehouse_transport_eta_datetimes, - destination_warehouse_transport_first_eta_datetime, - destination_warehouse_transport_last_eta_datetime, - - -- metadata - _dbt_ran_datetime - - FROM receive_join_shipping_list -) - -SELECT * FROM final__fct_shipping__origin_warehouse_receive_packing_lists diff --git a/models/marts/warehouse/fct_shipping__origin_warehouse_shipping_packing_lists.sql b/models/marts/warehouse/fct_shipping__origin_warehouse_shipping_packing_lists.sql deleted file mode 100644 index 2a1fd99..0000000 --- a/models/marts/warehouse/fct_shipping__origin_warehouse_shipping_packing_lists.sql +++ /dev/null @@ -1,360 +0,0 @@ --- IMPORT -WITH origin_warehouse_shipping_packing_lists AS ( - SELECT * FROM {{ ref('stg_shipping__warehouse_shipping_packing_lists') }} -), - -bookings AS ( - SELECT * FROM {{ ref('stg_shipping__bookings') }} -), - -booking_delivery_and_billing_addresses AS ( - SELECT * FROM {{ ref('int_shipping__booking_delivery_and_billing_addresses') }} -), - -destination_warehouse_packing_list_transport_arrangements AS ( - SELECT * FROM {{ ref('int_shipping__destination_warehouse_last_mile_transport_arrangements') }} -), - -packing_list_invoice_payments_group_by_packing_list_ids AS ( - SELECT * FROM {{ ref('int_shipping__packing_list_invoice_payments_group_by_packing_list_ids') }} -), - -packages_group_by_packing_list_ids AS ( - SELECT * FROM {{ ref('int_shipping__packages_group_by_packing_list_ids') }} -), - -container_group_by_packing_list_ids AS ( - SELECT * FROM {{ ref('int_shipping__origin_warehouse_container_shipping_transport_arrangements') }} -), - - --- LOGIC -origin_warehouse_shipping_packing_lists_enrich AS ( - SELECT - origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_packing_list_id, - origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id, - origin_warehouse_shipping_packing_lists.has_replaced_by_new_id AS has_replaced_by_new_origin_warehouse_shipping_packing_list_id, - - origin_warehouse_shipping_packing_lists.warehouse_order_number AS warehouse_order_number, - - origin_warehouse_shipping_packing_lists.warehouse_sub_company_id, - origin_warehouse_shipping_packing_lists.reference_contract, - origin_warehouse_shipping_packing_lists.status AS origin_warehouse_shipping_order_status, - origin_warehouse_shipping_packing_lists.created_datetime AS origin_warehouse_shipping_order_created_datetime, - - origin_warehouse_shipping_packing_lists.booking_id, - bookings.sub_company_id, - bookings.service_type, - bookings.status AS booking_status, - bookings.created_datetime AS booking_created_datetime, - - booking_delivery_and_billing_addresses.delivery_address_reference, - booking_delivery_and_billing_addresses.delivery_address_line_one, - booking_delivery_and_billing_addresses.delivery_address_line_two, - booking_delivery_and_billing_addresses.delivery_address_district_name, - booking_delivery_and_billing_addresses.delivery_address_state_name, - booking_delivery_and_billing_addresses.delivery_address_country_name, - booking_delivery_and_billing_addresses.delivery_address_postcode, - booking_delivery_and_billing_addresses.delivery_address_type, - booking_delivery_and_billing_addresses.is_default_delivery_address, - booking_delivery_and_billing_addresses.delivery_address_status, - booking_delivery_and_billing_addresses.billing_address_reference, - booking_delivery_and_billing_addresses.billing_address_line_one, - booking_delivery_and_billing_addresses.billing_address_line_two, - booking_delivery_and_billing_addresses.billing_address_district_name, - booking_delivery_and_billing_addresses.billing_address_state_name, - booking_delivery_and_billing_addresses.billing_address_country_name, - booking_delivery_and_billing_addresses.billing_address_postcode, - booking_delivery_and_billing_addresses.billing_address_type, - booking_delivery_and_billing_addresses.is_default_billing_address, - booking_delivery_and_billing_addresses.billing_address_status, - booking_delivery_and_billing_addresses.delivery_address_created_datetime, - booking_delivery_and_billing_addresses.billing_address_created_datetime, - - packing_list_invoice_payments_group_by_packing_list_ids.invoice_sub_company_id, - packing_list_invoice_payments_group_by_packing_list_ids.payment_sub_company_id, - packing_list_invoice_payments_group_by_packing_list_ids.number_of_invoice, - packing_list_invoice_payments_group_by_packing_list_ids.number_of_payment, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_number_of_shipping_fee, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_average_shipping_fee_price_per_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_shipping_fee_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_shipping_fee_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_number_of_min_cbm_charge, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_average_min_cbm_charge_price_per_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_min_cbm_charge_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_min_cbm_charge_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_number_of_over_weight_charge, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_average_over_weight_charge_price_per_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_over_weight_charge_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_over_weight_charge_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_number_of_custom_charge, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_average_custom_charge_price_per_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_custom_charge_quantity, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_total_custom_charge_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_tax_rm, - packing_list_invoice_payments_group_by_packing_list_ids.invoice_service_charge, - packing_list_invoice_payments_group_by_packing_list_ids.payment_value_rm, - packing_list_invoice_payments_group_by_packing_list_ids.payment_tax_rm, - packing_list_invoice_payments_group_by_packing_list_ids.payment_service_charge_rm, - packing_list_invoice_payments_group_by_packing_list_ids.last_invoice_created_datetime, - packing_list_invoice_payments_group_by_packing_list_ids.last_payment_created_datetime, - - packages_group_by_packing_list_ids.package_descriptions, - packages_group_by_packing_list_ids.number_of_package_record, - packages_group_by_packing_list_ids.total_package_width_cm, - packages_group_by_packing_list_ids.total_package_height_cm, - packages_group_by_packing_list_ids.total_package_length_cm, - packages_group_by_packing_list_ids.total_package_weight_kg, - packages_group_by_packing_list_ids.total_package_item, - packages_group_by_packing_list_ids.total_package_cbm, - packages_group_by_packing_list_ids.number_of_over_weight_charge_record, - packages_group_by_packing_list_ids.over_weight_cbm, - packages_group_by_packing_list_ids.over_weight_kg, - packages_group_by_packing_list_ids.number_of_pallet_charge_record, - packages_group_by_packing_list_ids.pallet_charge_cbm, - - container_group_by_packing_list_ids.container_id, - container_group_by_packing_list_ids.container_warehouse_sub_company_id, - container_group_by_packing_list_ids.container_transport_arrangement_id, - container_group_by_packing_list_ids.container_reference, - container_group_by_packing_list_ids.container_number, - container_group_by_packing_list_ids.container_seal_reference, - container_group_by_packing_list_ids.container_type, - container_group_by_packing_list_ids.container_status, - container_group_by_packing_list_ids.container_transport_arrangment_status, - container_group_by_packing_list_ids.container_deliver_courier, - container_group_by_packing_list_ids.container_tracking_number, - container_group_by_packing_list_ids.number_of_container_etd_datetime_postpone, - container_group_by_packing_list_ids.number_of_container_eta_datetime_postpone, - container_group_by_packing_list_ids.container_loaded_datetime, - container_group_by_packing_list_ids.container_departed_datetime, - container_group_by_packing_list_ids.container_arrived_datetime, - container_group_by_packing_list_ids.container_etd_datetimes, - container_group_by_packing_list_ids.first_container_etd_datetimes, - container_group_by_packing_list_ids.last_container_etd_datetimes, - container_group_by_packing_list_ids.container_eta_datetimes, - container_group_by_packing_list_ids.first_container_eta_datetime, - container_group_by_packing_list_ids.last_container_eta_datetime, - container_group_by_packing_list_ids.first_container_estimate_schedule_created_datetime, - container_group_by_packing_list_ids.last_container_estimate_schedule_created_datetime, - container_group_by_packing_list_ids.container_deleted_datetime, - container_group_by_packing_list_ids.container_created_datetime, - container_group_by_packing_list_ids.container_updated_datetime, - - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_arrangement_id, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_transport_mode, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_courier, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_tracking_number, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_status, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_number_of_etd_datetime_postpone, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_number_of_eta_datetime_postpone, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_dispatched_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_droped_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_etd_datetimes, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_first_etd_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_last_etd_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_eta_datetimes, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_first_eta_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_last_eta_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_first_estimate_schedule_created_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_last_estimate_schedule_created_datetime, - destination_warehouse_packing_list_transport_arrangements.destination_warehouse_transport_created_datetime - - - FROM origin_warehouse_shipping_packing_lists - - LEFT JOIN bookings - ON (origin_warehouse_shipping_packing_lists.booking_id = bookings.booking_id) - - LEFT JOIN booking_delivery_and_billing_addresses - ON (bookings.booking_id = booking_delivery_and_billing_addresses.booking_id) - - LEFT JOIN packing_list_invoice_payments_group_by_packing_list_ids - ON (origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id = packing_list_invoice_payments_group_by_packing_list_ids.old_origin_warehouse_shipping_packing_list_id) - - LEFT JOIN packages_group_by_packing_list_ids - ON (origin_warehouse_shipping_packing_lists.origin_warehouse_shipping_packing_list_id = packages_group_by_packing_list_ids.packing_list_id) - - LEFT JOIN container_group_by_packing_list_ids - ON (origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id = container_group_by_packing_list_ids.packing_list_id) - - LEFT JOIN destination_warehouse_packing_list_transport_arrangements - ON (origin_warehouse_shipping_packing_lists.old_origin_warehouse_shipping_packing_list_id = destination_warehouse_packing_list_transport_arrangements.old_origin_warehouse_shipping_packing_list_id) -), - -create_new_column AS ( - SELECT - *, - (ZEROIFNULL(total_package_cbm) + - ZEROIFNULL(over_weight_cbm) + - ZEROIFNULL(pallet_charge_cbm)) AS total_order_cbm, - - CASE - WHEN ROW_NUMBER() OVER (PARTITION BY sub_company_id ORDER BY origin_warehouse_shipping_order_created_datetime) = 1 THEN 1 - ELSE 0 - END AS is_first_time_sub_company, - - CASE - WHEN origin_warehouse_shipping_order_status = 'COMPLETED' - AND - MIN(IFF(origin_warehouse_shipping_order_status = 'COMPLETED', origin_warehouse_shipping_order_created_datetime, NULL)) - OVER (PARTITION BY sub_company_id) - = origin_warehouse_shipping_order_created_datetime - THEN 1 - ELSE 0 - END AS is_first_time_sub_company_completed, - - LEAD(origin_warehouse_shipping_order_created_datetime) OVER ( - PARTITION BY sub_company_id ORDER BY (origin_warehouse_shipping_order_created_datetime, CAST(origin_warehouse_shipping_packing_list_id AS INT)) - ) AS next_origin_warehouse_shipping_order_created_datetime, - - '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime - - FROM origin_warehouse_shipping_packing_lists_enrich -), - - --- FINAL -final__fct_shipping__origin_warehouse_shipping_packing_lists AS ( - SELECT - -- ids - origin_warehouse_shipping_packing_list_id, - old_origin_warehouse_shipping_packing_list_id, - booking_id, - sub_company_id, - warehouse_sub_company_id, - invoice_sub_company_id, - payment_sub_company_id, - container_id, - container_warehouse_sub_company_id, - container_transport_arrangement_id, - destination_warehouse_transport_arrangement_id, - - -- dimensions - warehouse_order_number, - reference_contract, - has_replaced_by_new_origin_warehouse_shipping_packing_list_id, - is_first_time_sub_company, - is_first_time_sub_company_completed, - service_type, - package_descriptions, - delivery_address_reference, - delivery_address_line_one, - delivery_address_line_two, - delivery_address_district_name, - delivery_address_state_name, - delivery_address_country_name, - delivery_address_postcode, - delivery_address_type, - is_default_delivery_address, - delivery_address_status, - billing_address_reference, - billing_address_line_one, - billing_address_line_two, - billing_address_district_name, - billing_address_state_name, - billing_address_country_name, - billing_address_postcode, - billing_address_type, - is_default_billing_address, - container_reference, - container_number, - container_seal_reference, - container_type, - container_deliver_courier, - container_tracking_number, - destination_warehouse_transport_transport_mode, - destination_warehouse_transport_courier, - destination_warehouse_transport_tracking_number, - booking_status, - billing_address_status, - origin_warehouse_shipping_order_status, - container_status, - container_transport_arrangment_status, - destination_warehouse_transport_status, - - -- measures - number_of_package_record, - total_package_width_cm, - total_package_height_cm, - total_package_length_cm, - total_package_weight_kg, - total_package_item, - total_package_cbm, - number_of_over_weight_charge_record, - over_weight_cbm, - over_weight_kg, - number_of_pallet_charge_record, - pallet_charge_cbm, - total_order_cbm, - number_of_invoice, - number_of_payment, - invoice_number_of_shipping_fee, - invoice_average_shipping_fee_price_per_quantity, - invoice_total_shipping_fee_quantity, - invoice_total_shipping_fee_value_rm, - invoice_number_of_min_cbm_charge, - invoice_average_min_cbm_charge_price_per_quantity, - invoice_total_min_cbm_charge_quantity, - invoice_total_min_cbm_charge_value_rm, - invoice_number_of_over_weight_charge, - invoice_average_over_weight_charge_price_per_quantity, - invoice_total_over_weight_charge_quantity, - invoice_total_over_weight_charge_value_rm, - invoice_number_of_custom_charge, - invoice_average_custom_charge_price_per_quantity, - invoice_total_custom_charge_quantity, - invoice_total_custom_charge_value_rm, - invoice_value_rm, - invoice_tax_rm, - invoice_service_charge, - payment_value_rm, - payment_tax_rm, - payment_service_charge_rm, - number_of_container_etd_datetime_postpone, - number_of_container_eta_datetime_postpone, - destination_warehouse_transport_number_of_etd_datetime_postpone, - destination_warehouse_transport_number_of_eta_datetime_postpone, - - -- date/times - booking_created_datetime, - delivery_address_created_datetime, - billing_address_created_datetime, - origin_warehouse_shipping_order_created_datetime, - last_invoice_created_datetime, - last_payment_created_datetime, - container_loaded_datetime, - container_departed_datetime, - container_arrived_datetime, - container_etd_datetimes, - first_container_etd_datetimes, - last_container_etd_datetimes, - container_eta_datetimes, - first_container_eta_datetime, - last_container_eta_datetime, - first_container_estimate_schedule_created_datetime, - last_container_estimate_schedule_created_datetime, - container_deleted_datetime, - container_created_datetime, - container_updated_datetime, - destination_warehouse_transport_dispatched_datetime, - destination_warehouse_transport_droped_datetime, - destination_warehouse_transport_etd_datetimes, - destination_warehouse_transport_first_etd_datetime, - destination_warehouse_transport_last_etd_datetime, - destination_warehouse_transport_eta_datetimes, - destination_warehouse_transport_first_eta_datetime, - destination_warehouse_transport_last_eta_datetime, - destination_warehouse_transport_first_estimate_schedule_created_datetime, - destination_warehouse_transport_last_estimate_schedule_created_datetime, - destination_warehouse_transport_created_datetime, - next_origin_warehouse_shipping_order_created_datetime, - - -- metadata - _dbt_ran_datetime - - FROM create_new_column -) - -SELECT * FROM final__fct_shipping__origin_warehouse_shipping_packing_lists \ No newline at end of file diff --git a/models/marts/warehouse/fct_shipping__supply_chain_transport_arrangements.sql b/models/marts/warehouse/fct_shipping__supply_chain_transport_arrangements.sql new file mode 100644 index 0000000..51a789b --- /dev/null +++ b/models/marts/warehouse/fct_shipping__supply_chain_transport_arrangements.sql @@ -0,0 +1,276 @@ +-- IMPORT +WITH first_mile_transport_arrangements AS ( + SELECT * FROM {{ ref('int_shipping__first_mile_transport_arrangements') }} +), + +mid_mile_transport_arrangements AS ( + SELECT * FROM {{ ref('int_shipping__mid_mile_transport_arrangements') }} +), + +last_mile_transport_arrangements AS ( + SELECT * FROM {{ ref('int_shipping__last_mile_transport_arrangements') }} +), + +vt_packing_list_brg AS ( + SELECT * FROM {{ ref('int_shipping__vt_origin_warehouse_receive_packing_list_brg_shipping_packing_lists') }} +), + + +-- LOGIC +vt_transport_arrangements AS ( + + SELECT + first_mile_transport_arrangements.*, + mid_mile_transport_arrangements.*, + last_mile_transport_arrangements.* + + FROM vt_packing_list_brg + + LEFT JOIN (SELECT * EXCLUDE _dbt_ran_datetime FROM first_mile_transport_arrangements) first_mile_transport_arrangements + ON (vt_packing_list_brg.old_origin_warehouse_receive_packing_list_id = first_mile_transport_arrangements.old_first_mile_packing_list_id) + + LEFT JOIN (SELECT * EXCLUDE _dbt_ran_datetime FROM mid_mile_transport_arrangements) mid_mile_transport_arrangements + ON (vt_packing_list_brg.old_warehouse_shipping_packing_list_id = mid_mile_transport_arrangements.old_mid_mile_packing_list_id) + + LEFT JOIN (SELECT * EXCLUDE _dbt_ran_datetime FROM last_mile_transport_arrangements) last_mile_transport_arrangements + ON (vt_packing_list_brg.old_warehouse_shipping_packing_list_id = last_mile_transport_arrangements.old_last_mile_packing_list_id) + +), + +first_mid_last_mile_transport_arrangement_join AS ( + + SELECT + first_mile_transport_arrangements.new_first_mile_packing_list_id, + first_mile_transport_arrangements.old_first_mile_packing_list_id, + first_mile_transport_arrangements.first_mile_transport_arrangement_id, + first_mile_transport_arrangements.first_mile_booking_id, + first_mile_transport_arrangements.first_mile_warehouse_order_number, + first_mile_transport_arrangements.first_mile_warehouse_sub_company_id, + first_mile_transport_arrangements.first_mile_has_replaced_by_new_id, + first_mile_transport_arrangements.first_mile_reference_contract, + first_mile_transport_arrangements.first_mile_transport_mode, + first_mile_transport_arrangements.first_mile_transport_courier, + first_mile_transport_arrangements.first_mile_transport_tracking_number, + first_mile_transport_arrangements.first_mile_transport_status, + first_mile_transport_arrangements.first_mile_receive_status, + first_mile_transport_arrangements.first_mile_transport_number_of_etd_datetime_postpone, + first_mile_transport_arrangements.first_mile_transport_number_of_eta_datetime_postpone, + first_mile_transport_arrangements.first_mile_dispatched_datetime, + first_mile_transport_arrangements.first_mile_received_datetime, + first_mile_transport_arrangements.first_mile_transport_etd_datetimes, + first_mile_transport_arrangements.first_mile_transport_first_etd_datetime, + first_mile_transport_arrangements.first_mile_transport_last_etd_datetime, + first_mile_transport_arrangements.first_mile_transport_eta_datetimes, + first_mile_transport_arrangements.first_mile_transport_first_eta_datetime, + first_mile_transport_arrangements.first_mile_transport_last_eta_datetime, + first_mile_transport_arrangements.first_mile_transport_first_estimate_schedule_created_datetime, + first_mile_transport_arrangements.first_mile_transport_last_estimate_schedule_created_datetime, + first_mile_transport_arrangements.first_mile_transport_created_datetime, + first_mile_transport_arrangements.first_mile_transport_updated_datetime, + + mid_mile_transport_arrangements.new_mid_mile_packing_list_id, + mid_mile_transport_arrangements.old_mid_mile_packing_list_id, + mid_mile_transport_arrangements.mid_mile_transport_arrangement_id, + mid_mile_transport_arrangements.mid_mile_booking_id, + mid_mile_transport_arrangements.mid_mile_container_id, + mid_mile_transport_arrangements.mid_mile_container_warehouse_sub_company_id, + mid_mile_transport_arrangements.mid_mile_warehouse_sub_company_id, + mid_mile_transport_arrangements.mid_mile_warehouse_order_number, + mid_mile_transport_arrangements.mid_mile_has_replaced_by_new_id, + mid_mile_transport_arrangements.mid_mile_shipping_status, + mid_mile_transport_arrangements.mid_mile_reference_contract, + mid_mile_transport_arrangements.mid_mile_packing_list_type, + mid_mile_transport_arrangements.mid_mile_container_reference, + mid_mile_transport_arrangements.mid_mile_container_number, + mid_mile_transport_arrangements.mid_mile_container_seal_reference, + mid_mile_transport_arrangements.mid_mile_container_type, + mid_mile_transport_arrangements.mid_mile_container_status, + mid_mile_transport_arrangements.mid_mile_container_transport_arrangment_status, + mid_mile_transport_arrangements.mid_mile_container_delivery_courier, + mid_mile_transport_arrangements.mid_mile_container_tracking_number, + mid_mile_transport_arrangements.mid_mile_number_of_container_etd_datetime_postpone, + mid_mile_transport_arrangements.mid_mile_number_of_container_eta_datetime_postpone, + mid_mile_transport_arrangements.mid_mile_container_loaded_datetime, + mid_mile_transport_arrangements.mid_mile_container_departed_datetime, + mid_mile_transport_arrangements.mid_mile_container_arrived_datetime, + mid_mile_transport_arrangements.mid_mile_container_etd_datetimes, + mid_mile_transport_arrangements.mid_mile_first_container_etd_datetimes, + mid_mile_transport_arrangements.mid_mile_last_container_etd_datetimes, + mid_mile_transport_arrangements.mid_mile_container_eta_datetimes, + mid_mile_transport_arrangements.mid_mile_first_container_eta_datetime, + mid_mile_transport_arrangements.mid_mile_last_container_eta_datetime, + mid_mile_transport_arrangements.mid_mile_first_container_estimate_schedule_created_datetime, + mid_mile_transport_arrangements.mid_mile_last_container_estimate_schedule_created_datetime, + mid_mile_transport_arrangements.mid_mile_container_deleted_datetime, + mid_mile_transport_arrangements.mid_mile_container_created_datetime, + mid_mile_transport_arrangements.mid_mile_container_updated_datetime, + + new_last_mile_packing_list_id, + old_last_mile_packing_list_id, + last_mile_transport_arrangement_id, + last_mile_booking_id, + last_mile_warehouse_sub_company_id, + last_mile_warehouse_order_number, + last_mile_has_replaced_by_new_id, + last_mile_reference_contract, + last_mile_packing_list_type, + last_mile_shipping_status, + last_mile_transport_mode, + last_mile_transport_courier, + last_mile_transport_tracking_number, + last_mile_transport_status, + last_mile_transport_number_of_etd_datetime_postpone, + last_mile_transport_number_of_eta_datetime_postpone, + last_mile_transport_dispatched_datetime, + last_mile_transport_droped_datetime, + last_mile_transport_etd_datetimes, + last_mile_transport_first_etd_datetime, + last_mile_transport_last_etd_datetime, + last_mile_transport_eta_datetimes, + last_mile_transport_first_eta_datetime, + last_mile_transport_last_eta_datetime, + last_mile_transport_first_estimate_schedule_created_datetime, + last_mile_transport_last_estimate_schedule_created_datetime, + last_mile_transport_created_datetime, + last_mile_transport_updated_datetime + + FROM mid_mile_transport_arrangements + + LEFT JOIN first_mile_transport_arrangements + ON (mid_mile_transport_arrangements.mid_mile_warehouse_order_number = first_mile_transport_arrangements.first_mile_warehouse_order_number) + + LEFT JOIN last_mile_transport_arrangements + ON (mid_mile_transport_arrangements.mid_mile_warehouse_order_number = last_mile_transport_arrangements.last_mile_warehouse_order_number) + +), + +transport_arrangement_joins AS ( + + SELECT * FROM first_mid_last_mile_transport_arrangement_join + + WHERE + new_mid_mile_packing_list_id NOT IN ( + SELECT new_mid_mile_packing_list_id FROM vt_transport_arrangements) + + UNION + + SELECT * FROM vt_transport_arrangements + +), + + +-- FINAL +final__fct_shipping__supply_chain_transport_arrangements AS ( + + SELECT + -- ids + new_first_mile_packing_list_id, + old_first_mile_packing_list_id, + new_mid_mile_packing_list_id, + old_mid_mile_packing_list_id, + new_last_mile_packing_list_id, + old_last_mile_packing_list_id, + first_mile_transport_arrangement_id, + mid_mile_transport_arrangement_id, + last_mile_transport_arrangement_id, + first_mile_booking_id, + mid_mile_booking_id, + last_mile_booking_id, + first_mile_warehouse_sub_company_id, + first_mile_warehouse_order_number, + mid_mile_container_warehouse_sub_company_id, + mid_mile_warehouse_sub_company_id, + mid_mile_warehouse_order_number, + last_mile_warehouse_sub_company_id, + last_mile_warehouse_order_number, + first_mile_reference_contract, + mid_mile_reference_contract, + last_mile_reference_contract, + mid_mile_container_id, + mid_mile_container_reference, + mid_mile_container_number, + mid_mile_container_seal_reference, + first_mile_transport_tracking_number, + mid_mile_container_tracking_number, + last_mile_transport_tracking_number, + + -- dimensions + first_mile_has_replaced_by_new_id, + first_mile_transport_mode, + first_mile_transport_courier, + first_mile_transport_status, + first_mile_receive_status, + + mid_mile_has_replaced_by_new_id, + mid_mile_shipping_status, + mid_mile_packing_list_type, + mid_mile_container_type, + mid_mile_container_status, + mid_mile_container_transport_arrangment_status, + mid_mile_container_delivery_courier, + + last_mile_has_replaced_by_new_id, + last_mile_packing_list_type, + last_mile_shipping_status, + last_mile_transport_mode, + last_mile_transport_courier, + last_mile_transport_status, + + -- measures + first_mile_transport_number_of_etd_datetime_postpone, + first_mile_transport_number_of_eta_datetime_postpone, + mid_mile_number_of_container_etd_datetime_postpone, + mid_mile_number_of_container_eta_datetime_postpone, + last_mile_transport_number_of_etd_datetime_postpone + last_mile_transport_number_of_eta_datetime_postpone, + + -- date/times + first_mile_dispatched_datetime, + first_mile_received_datetime, + first_mile_transport_etd_datetimes, + first_mile_transport_first_etd_datetime, + first_mile_transport_last_etd_datetime, + first_mile_transport_eta_datetimes, + first_mile_transport_first_eta_datetime, + first_mile_transport_last_eta_datetime, + first_mile_transport_first_estimate_schedule_created_datetime, + first_mile_transport_last_estimate_schedule_created_datetime, + first_mile_transport_created_datetime, + first_mile_transport_updated_datetime, + + mid_mile_container_loaded_datetime, + mid_mile_container_departed_datetime, + mid_mile_container_arrived_datetime, + mid_mile_container_etd_datetimes, + mid_mile_first_container_etd_datetimes, + mid_mile_last_container_etd_datetimes, + mid_mile_container_eta_datetimes, + mid_mile_first_container_eta_datetime, + mid_mile_last_container_eta_datetime, + mid_mile_first_container_estimate_schedule_created_datetime, + mid_mile_last_container_estimate_schedule_created_datetime, + mid_mile_container_deleted_datetime, + mid_mile_container_created_datetime, + mid_mile_container_updated_datetime, + + last_mile_transport_dispatched_datetime, + last_mile_transport_droped_datetime, + last_mile_transport_etd_datetimes, + last_mile_transport_first_etd_datetime, + last_mile_transport_last_etd_datetime, + last_mile_transport_eta_datetimes, + last_mile_transport_first_eta_datetime, + last_mile_transport_last_eta_datetime, + last_mile_transport_first_estimate_schedule_created_datetime, + last_mile_transport_last_estimate_schedule_created_datetime, + last_mile_transport_created_datetime, + last_mile_transport_updated_datetime, + + -- metadata + '{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime + + FROM transport_arrangement_joins + +) + +SELECT * FROM final__fct_shipping__supply_chain_transport_arrangements \ No newline at end of file diff --git a/models/staging/shipping/stg_shipping__packing_list_invoice_payments.sql b/models/staging/shipping/stg_shipping__packing_list_invoice_payments.sql index c95eeb4..28276c1 100644 --- a/models/staging/shipping/stg_shipping__packing_list_invoice_payments.sql +++ b/models/staging/shipping/stg_shipping__packing_list_invoice_payments.sql @@ -61,7 +61,7 @@ transactions_mapping AS ( packing_list_invoices_rename AS ( SELECT transaction_id AS packing_list_invoice_id, - owner_id AS old_origin_warehouse_shipping_packing_list_id, + owner_id AS old_warehouse_shipping_packing_list_id, receiver_sub_company_id AS invoice_sub_company_id, status AS invoice_status, bill_number AS invoice_number, @@ -144,7 +144,7 @@ payments_rename AS ( transaction_packing_lists_enrich AS ( SELECT packing_list_invoices_rename.packing_list_invoice_id, - packing_list_invoices_rename.old_origin_warehouse_shipping_packing_list_id, + packing_list_invoices_rename.old_warehouse_shipping_packing_list_id, packing_list_invoices_rename.invoice_sub_company_id, packing_list_invoices_rename.invoice_status, packing_list_invoices_rename.invoice_number, @@ -206,7 +206,7 @@ final__stg_shipping__packing_list_invoice_payments AS ( -- ids packing_list_invoice_id, packing_list_payment_id, - old_origin_warehouse_shipping_packing_list_id, + old_warehouse_shipping_packing_list_id, invoice_sub_company_id, payment_sub_company_id,