Skip to content

Commit 7759724

Browse files
feat(dbt): add intermediate returns transformation models
1 parent e247ce9 commit 7759724

3 files changed

Lines changed: 107 additions & 20 deletions

File tree

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,39 @@
11
SELECT
22
return_id,
3-
return_reason,
4-
return_channel,
5-
restocked,
6-
return_status,
7-
handled_by_emp_id,
8-
notes
9-
FROM {{ ref('stg_returns') }} ;
3+
4+
CASE
5+
WHEN return_reason IS NULL OR TRIM(return_reason) = '' THEN 'Unknown'
6+
ELSE TRIM(dbo.TitleCase(return_reason))
7+
END as return_reason,
8+
9+
CASE
10+
WHEN TRIM(LOWER(return_channel)) IN ('app', 'mobile app', 'mobile') THEN 'Mobile App'
11+
WHEN TRIM(LOWER(return_channel)) IN ('in store', 'in-store', 'store') THEN 'In Store'
12+
WHEN TRIM(LOWER(return_channel)) IN ('online', 'web') THEN 'Online'
13+
WHEN TRIM(LOWER(return_channel)) = 'phone' THEN 'Phone Call'
14+
WHEN TRIM(LOWER(return_channel)) = 'catalog' THEN 'Catalog'
15+
ELSE 'Unknown'
16+
END AS return_channel,
17+
18+
CASE
19+
WHEN TRIM(LOWER(restocked)) IN ('yes', 'y', '1') THEN 'Yes'
20+
WHEN TRIM(LOWER(restocked)) IN ('no', 'n', '0') THEN 'No'
21+
ELSE 'Unknown'
22+
END AS restocked,
23+
24+
CASE
25+
WHEN return_status IS NULL THEN 'Unknown'
26+
ELSE TRIM(dbo.TitleCase(return_status))
27+
END as return_status,
28+
29+
CASE
30+
WHEN handled_by_emp_id IS NULL OR TRY_CONVERT(INT, handled_by_emp_id) IS NULL THEN NULL
31+
ELSE TRY_CONVERT(INT, handled_by_emp_id)
32+
END as handled_by_emp_id,
33+
34+
CASE
35+
WHEN notes IS NULL OR LEN(TRIM(notes)) < 3 OR TRIM(notes) = '' THEN 'Unknown'
36+
ELSE TRIM(dbo.TitleCase(REPLACE(REPLACE(notes, CHAR(10), ''), CHAR(13), '')))
37+
END as notes
38+
FROM {{ ref('stg_returns') }} ;
39+
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
SELECT
22
return_id,
3-
refund_amount,
4-
refund_method
5-
FROM {{ ref('stg_returns') }} ;
3+
4+
CASE
5+
WHEN TRY_CONVERT(DECIMAL(10, 2), REPLACE(REPLACE(refund_amount, ',', ''), '$', '')) IS NULL THEN NULL
6+
WHEN refund_amount IS NULL OR TRY_CONVERT(DECIMAL(10, 2), REPLACE(REPLACE(refund_amount, ',', ''), '$', '')) < 0 THEN NULL
7+
ELSE TRY_CONVERT(DECIMAL(10, 2), REPLACE(REPLACE(refund_amount, ',', ''), '$', ''))
8+
END as refund_amount,
9+
10+
CASE
11+
WHEN refund_method IS NULL OR TRIM(refund_method) = '' THEN 'Unknown'
12+
ELSE TRIM(dbo.TitleCase(refund_method))
13+
END as refund_method
14+
FROM {{ ref('stg_returns') }} ;
15+
Lines changed: 57 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,58 @@
11
SELECT
2-
return_id,
3-
original_txn_id,
4-
original_order_id,
5-
customer_id,
6-
customer_name,
7-
product_id,
8-
product_name,
9-
quantity_returned,
10-
return_date
11-
FROM {{ ref('stg_returns') }} ;
2+
CASE
3+
WHEN TRY_CONVERT(INT, return_id) < 1 OR TRY_CONVERT(INT, return_id) IS NULL THEN NULL
4+
ELSE TRY_CONVERT(INT, return_id)
5+
END as return_id,
6+
7+
CASE
8+
WHEN original_txn_id IS NULL THEN NULL
9+
WHEN UPPER(TRIM(original_txn_id)) NOT LIKE 'TXN-%' THEN NULL
10+
WHEN LEN(UPPER(TRIM(original_txn_id))) < 10 THEN NULL
11+
ELSE UPPER(TRIM(original_txn_id))
12+
END as original_txn_id,
13+
14+
CASE
15+
WHEN original_order_id IS NULL OR TRY_CONVERT(INT, original_order_id) < 1 OR TRY_CONVERT(INT, original_order_id) IS NULL THEN NULL
16+
ELSE TRY_CONVERT(INT, original_order_id)
17+
END as original_order_id,
18+
19+
CASE
20+
WHEN customer_id IS NULL OR TRY_CONVERT(INT, customer_id) IS NULL THEN NULL
21+
ELSE TRY_CONVERT(INT, customer_id)
22+
END as customer_id,
23+
24+
CASE
25+
WHEN customer_name IS NULL OR TRIM(customer_name) = '' THEN 'Unknown'
26+
ELSE dbo.TitleCase(TRIM(customer_name))
27+
END as customer_name,
28+
29+
CASE
30+
WHEN product_id IS NULL OR TRY_CONVERT(INT, product_id) IS NULL THEN NULL
31+
ELSE TRY_CONVERT(INT, product_id)
32+
END as product_id,
33+
34+
CASE
35+
WHEN product_name IS NULL OR TRIM(product_name) = '' THEN 'Unknown'
36+
ELSE dbo.TitleCase(TRIM(product_name))
37+
END as product_name,
38+
39+
CASE
40+
WHEN quantity_returned IS NULL OR TRY_CONVERT(INT, quantity_returned) IS NULL OR TRY_CONVERT(INT, quantity_returned) < 1 THEN NULL
41+
ELSE TRY_CONVERT(INT, quantity_returned)
42+
END as quantity_returned,
43+
44+
CASE
45+
WHEN return_date LIKE '[A-Z][a-z][a-z][a-z] __, ____' THEN TRY_CONVERT(DATE ,return_date)
46+
WHEN return_date LIKE '[A-Z][a-z][a-z] __, ____' THEN TRY_CONVERT(DATE ,return_date)
47+
WHEN return_date LIKE '____/__/__' THEN TRY_CONVERT(DATE ,return_date)
48+
WHEN return_date LIKE '____-__-__' THEN TRY_CONVERT(DATE ,return_date)
49+
50+
WHEN return_date LIKE '__/__/____' AND TRY_CONVERT(INT, SUBSTRING(return_date, 4, 2)) > 12 THEN TRY_CONVERT(DATE, return_date, 101)
51+
WHEN return_date LIKE '__/__/____' AND TRY_CONVERT(INT, LEFT(return_date, 2)) > 12 THEN TRY_CONVERT(DATE, return_date, 103)
52+
WHEN return_date LIKE '__-__-____' AND TRY_CONVERT(INT, SUBSTRING(return_date, 4, 2)) > 12 THEN TRY_CONVERT(DATE, return_date, 110)
53+
WHEN return_date LIKE '__-__-____' AND TRY_CONVERT(INT, LEFT(return_date, 2)) > 12 THEN TRY_CONVERT(DATE, return_date, 105)
54+
ELSE TRY_CONVERT(DATE, return_date)
55+
END as return_date
56+
FROM {{ ref('stg_returns') }} ;
57+
58+

0 commit comments

Comments
 (0)