1- SELECT TOP (1000 ) [return_id]
1+ -- #############################################################################################
2+ -- #################################### RETURNS DATA ###########################################
3+ -- #############################################################################################
4+
5+ -- =============================================================================================
6+ -- ================================== return table overview ====================================
7+ -- =============================================================================================
8+ SELECT
9+ [return_id]
210 ,[original_txn_id]
311 ,[original_order_id]
412 ,[customer_id]
@@ -17,3 +25,251 @@ SELECT TOP (1000) [return_id]
1725 ,[notes]
1826 FROM [bronze].[returns]
1927
28+ -- =============================================================================================
29+ -- ================================== return_id table overview =================================
30+ -- =============================================================================================
31+ -- return id data profiling
32+ SELECT
33+ return_id
34+ FROM bronze .returns
35+ WHERE return_id IS NULL
36+ OR TRY_CONVERT(INT , return_id) IS NULL ;
37+
38+ -- duplicate check in return_id
39+ SELECT
40+ *
41+ FROM
42+ (
43+ SELECT
44+ return_id ,
45+ ROW_NUMBER() OVER(PARTITION BY return_id ORDER BY return_id DESC ) as flag
46+ FROM bronze.[returns]
47+ )t WHERE flag > 1 ;
48+
49+ -- return_id cleaning and standerdazition
50+ SELECT
51+ CASE
52+ WHEN return_id < 1 OR TRY_CONVERT(INT , return_id) IS NULL THEN NULL
53+ ELSE TRY_CONVERT(INT , return_id)
54+ END as return_id
55+ FROM bronze.[returns] ;
56+
57+ -- =============================================================================================
58+ -- =============================== original_txn_id table overview ==============================
59+ -- =============================================================================================
60+ -- original_txn_id data profiling
61+ SELECT
62+ original_txn_id
63+ FROM bronze.[returns]
64+ WHERE original_txn_id IS NULL
65+ OR original_txn_id NOT LIKE ' TXN-%'
66+ OR original_txn_id != TRIM (original_txn_id)
67+ OR original_txn_id != UPPER (original_txn_id)
68+ OR LEN(original_txn_id) < 10 ;
69+
70+ -- original_txn_id check in return_id
71+ SELECT
72+ *
73+ FROM
74+ (
75+ SELECT
76+ original_txn_id ,
77+ ROW_NUMBER() OVER(PARTITION BY original_txn_id ORDER BY original_txn_id DESC ) as flag
78+ FROM bronze.[returns]
79+ )t WHERE flag > 1 ;
80+
81+ -- original_txn_id cleaning and standardization
82+ WITH cleaned_txn_ids AS
83+ (
84+ SELECT
85+ CASE
86+ WHEN original_txn_id IS NULL OR original_txn_id NOT LIKE ' TXN-%' OR LEN(original_txn_id) < 10 THEN NULL
87+ ELSE UPPER (TRIM (original_txn_id))
88+ END as original_txn_id
89+ FROM bronze.[returns]
90+ )
91+ SELECT
92+ original_txn_id
93+ FROM cleaned_txn_ids
94+ WHERE original_txn_id IS NULL ;
95+ -- =============================================================================================
96+ -- =============================== original_order_id table overview ============================
97+ -- =============================================================================================
98+ -- original_order_id data profiling
99+ SELECT
100+ original_order_id
101+ FROM bronze.[returns]
102+ WHERE original_order_id IS NULL
103+ OR TRY_CONVERT(INT , original_order_id) IS NULL ;
104+
105+ -- duplicate check in original_order_id
106+ SELECT
107+ *
108+ FROM
109+ (
110+ SELECT
111+ original_order_id ,
112+ ROW_NUMBER() OVER(PARTITION BY original_order_id ORDER BY original_order_id DESC ) as flag
113+ FROM bronze.[returns]
114+ )t WHERE flag > 1 ;
115+
116+ -- original_order_id cleaning and standardization
117+ WITH cleaned_order_ids AS
118+ (
119+ SELECT
120+ CASE
121+ WHEN original_order_id IS NULL OR TRY_CONVERT(INT , original_order_id) IS NULL THEN NULL
122+ ELSE TRY_CONVERT(INT , original_order_id)
123+ END as original_order_id
124+ FROM bronze.[returns]
125+ )
126+ SELECT
127+ original_order_id
128+ FROM cleaned_order_ids
129+ WHERE original_order_id IS NULL ;
130+
131+ -- =============================================================================================
132+ -- =============================== customer_id table overview ==================================
133+ -- =============================================================================================
134+ -- customer_id data profiling
135+ SELECT
136+ customer_id
137+ FROM bronze.[returns]
138+ WHERE customer_id IS NULL
139+ OR TRY_CONVERT(INT , customer_id) IS NULL ;
140+
141+ -- duplicate check in customer_id
142+ SELECT
143+ *
144+ FROM
145+ (
146+ SELECT
147+ customer_id ,
148+ ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY customer_id DESC ) as flag
149+ FROM bronze.[returns]
150+ )t WHERE flag > 1 ;
151+
152+ -- customer_id cleaning and standardization
153+ WITH cleaned_customer_ids AS
154+ (
155+ SELECT
156+ CASE
157+ WHEN customer_id IS NULL OR TRY_CONVERT(INT , customer_id) IS NULL THEN NULL
158+ ELSE TRY_CONVERT(INT , customer_id)
159+ END as customer_id
160+ FROM bronze.[returns]
161+ )
162+ SELECT
163+ customer_id
164+ FROM cleaned_customer_ids
165+ WHERE customer_id IS NULL ;
166+ -- =============================================================================================
167+ -- =============================== customer_name table overview ================================
168+ -- =============================================================================================
169+ -- customer_name data profiling
170+ SELECT
171+ customer_name
172+ FROM bronze.[returns]
173+ WHERE customer_name IS NULL
174+ OR customer_name != TRIM (customer_name)
175+ OR customer_name != dbo .TitleCase (customer_name)
176+ OR LEN(customer_name) < 3 ;
177+
178+ -- customer_name cleaning and standardization
179+ WITH cleaned_customer_names AS
180+ (
181+ SELECT
182+ CASE
183+ WHEN customer_name IS NULL OR customer_name != TRIM (dbo .TitleCase (customer_name)) OR LEN(customer_name) < 3 THEN ' Unknown'
184+ ELSE dbo .TitleCase (TRIM (customer_name))
185+ END as customer_name
186+ FROM bronze.[returns]
187+ )
188+ SELECT
189+ customer_name
190+ FROM cleaned_customer_names
191+ WHERE customer_name = ' Unknown' ;
192+ -- =============================================================================================
193+ -- ==================================== product_id table overview ==============================
194+ -- =============================================================================================
195+
196+ -- =============================================================================================
197+ -- =============================== product_name table overview =================================
198+ -- =============================================================================================
199+
200+ -- =============================================================================================
201+ -- =============================== quantity_returned table overview ============================
202+ -- =============================================================================================
203+
204+ -- =============================================================================================
205+ -- =============================== return_date table overview ==================================
206+ -- =============================================================================================
207+
208+ -- =============================================================================================
209+ -- =============================== return_reason table overview ================================
210+ -- =============================================================================================
211+
212+ -- #############################################################################################
213+ -- ############################## RETURNS CLEAN DATA ###########################################
214+ -- #############################################################################################
215+
216+ SELECT
217+ return_id
218+ ,original_txn_id
219+ ,original_order_id
220+ ,customer_id
221+ ,customer_name
222+ ,product_id
223+ ,product_name
224+ ,quantity_returned
225+ ,return_date
226+ ,return_reason
227+ ,refund_amount
228+ ,refund_method
229+ ,return_channel
230+ ,restocked
231+ ,return_status
232+ ,handled_by_emp_id
233+ ,notes
234+ FROM
235+ (
236+ SELECT
237+ CASE
238+ WHEN return_id < 1 OR TRY_CONVERT(INT , return_id) IS NULL THEN NULL
239+ ELSE TRY_CONVERT(INT , return_id)
240+ END as return_id
241+
242+ ,CASE
243+ WHEN original_txn_id IS NULL OR original_txn_id NOT LIKE ' TXN-%' OR LEN(original_txn_id) < 10 THEN NULL
244+ ELSE UPPER (TRIM (original_txn_id))
245+ END as original_txn_id
246+
247+ ,CASE
248+ WHEN original_order_id IS NULL OR TRY_CONVERT(INT , original_order_id) IS NULL THEN NULL
249+ ELSE TRY_CONVERT(INT , original_order_id)
250+ END as original_order_id
251+
252+ ,CASE
253+ WHEN customer_id IS NULL OR TRY_CONVERT(INT , customer_id) IS NULL THEN NULL
254+ ELSE TRY_CONVERT(INT , customer_id)
255+ END as customer_id
256+
257+ ,CASE
258+ WHEN customer_name IS NULL OR customer_name != TRIM (dbo .TitleCase (customer_name)) OR LEN(customer_name) < 3 THEN ' Unknown'
259+ ELSE dbo .TitleCase (TRIM (customer_name))
260+ END as customer_name
261+
262+ ,[product_id]
263+ ,[product_name]
264+ ,[quantity_returned]
265+ ,[return_date]
266+ ,[return_reason]
267+ ,[refund_amount]
268+ ,[refund_method]
269+ ,[return_channel]
270+ ,[restocked]
271+ ,[return_status]
272+ ,[handled_by_emp_id]
273+ ,[notes]
274+ FROM [bronze].[returns]
275+ )t ;
0 commit comments