Refactored shipping dataset and fixed order created datetime from the right column.

This commit is contained in:
CIEF ACC1
2024-03-27 07:22:19 +00:00
parent c778e4ec5c
commit 16428b7acb
23 changed files with 1385 additions and 1891 deletions
@@ -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
@@ -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.
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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,
@@ -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
),
@@ -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,
@@ -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,
@@ -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
@@ -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
+21 -21
View File
@@ -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
),
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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,