Skip to content

Commit 804d06b

Browse files
feat: standardize warehouse data and improve inventory cleaning pipeline
1 parent d6d96f4 commit 804d06b

1 file changed

Lines changed: 63 additions & 2 deletions

File tree

explore_database/inventory/inventory.sql

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,64 @@ SELECT
534534
stock_on_hand * unit_price as inventory_value
535535
FROM calc_inventory_value ;
536536

537+
--=============================================================================================
538+
--=============================== warehouse_location column cleaning =========================
539+
--=============================================================================================
540+
-- warehouse_location data overview
541+
SELECT
542+
warehouse_location
543+
FROM bronze.inventory_snapshots ;
544+
545+
-- warehouse_location unique data overview
546+
SELECT DISTINCT
547+
warehouse_location
548+
FROM bronze.inventory_snapshots ;
549+
550+
-- warehouse_location case-sensitive data profiling
551+
SELECT DISTINCT
552+
UPPER(warehouse_location) COLLATE Latin1_General_CS_AS as warehouse_location
553+
FROM bronze.inventory_snapshots ;
554+
555+
-- warehouse_location data profiling and standardization
556+
SELECT
557+
CASE
558+
WHEN warehouse_location IS NULL OR warehouse_location = '' THEN 'Unknown'
559+
ELSE UPPER(warehouse_location)
560+
END as warehouse_location
561+
FROM bronze.inventory_snapshots ;
562+
563+
--=============================================================================================
564+
--================================= store_id column cleaning =================================
565+
--=============================================================================================
566+
-- store_id data overview
567+
SELECT
568+
store_id
569+
FROM bronze.inventory_snapshots ;
570+
571+
-- store_id data profiling
572+
SELECT
573+
store_id
574+
FROM bronze.inventory_snapshots
575+
WHERE store_id IS NULL OR store_id = ''
576+
OR TRY_CONVERT(INT, store_id) IS NULL ;
577+
578+
-- store id distribution analysis
579+
SELECT
580+
store_id,
581+
COUNT(*) store_id_count,
582+
CAST(ROUND(COUNT(*)*100.0/SUM(COUNT(*)) OVER(), 2) AS NVARCHAR) + '%' as percentages
583+
FROM bronze.inventory_snapshots
584+
GROUP BY store_id
585+
ORDER BY store_id_count DESC ;
586+
587+
-- store_id cleaning and standardization
588+
SELECT
589+
CASE
590+
WHEN store_id IS NULL OR store_id = '' THEN NULL
591+
ELSE TRY_CONVERT(INT, store_id)
592+
END as store_id
593+
FROM bronze.inventory_snapshots ;
594+
537595
--#############################################################################################
538596
--############################## EMPLOYEE CLEAN DATA ##########################################
539597
--#############################################################################################
@@ -614,7 +672,7 @@ FROM
614672
END as reorder_level
615673

616674
,CASE
617-
WHEN unit_cost LIKE '$%' THEN SUBSTRING(unit_cost, 2, LEN(unit_cost))
675+
WHEN unit_cost LIKE '$%' THEN TRY_CONVERT(DECIMAL(10, 2), SUBSTRING(unit_cost, 2, LEN(unit_cost)))
618676
ELSE TRY_CONVERT(DECIMAL(10, 2), unit_cost)
619677
END as unit_cost
620678

@@ -623,7 +681,10 @@ FROM
623681
ELSE TRY_CONVERT(DECIMAL(10, 2), unit_price)
624682
END as unit_price
625683

626-
,[warehouse_location]
684+
,CASE
685+
WHEN warehouse_location IS NULL OR warehouse_location = '' THEN 'Unknown'
686+
ELSE UPPER(warehouse_location)
687+
END as warehouse_location
627688

628689
,[store_id]
629690

0 commit comments

Comments
 (0)