mirror of
https://gitlab.com/cief-data/dbt_cloud.git
synced 2026-08-27 00:04:06 +00:00
366 lines
14 KiB
SQL
366 lines
14 KiB
SQL
-- 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 |