Skip to content

Commit 23c4abf

Browse files
Merge pull request #26 from Ritik574-coder/dbt_branch
"feat(dbt): add intermediate transformation models and applying business logic "
2 parents 0d88098 + 3ec0fae commit 23c4abf

6 files changed

Lines changed: 167 additions & 25 deletions

File tree

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
11
SELECT
22
review_id,
3+
34
helpful_votes,
4-
review_channel,
5-
review_title
5+
6+
CASE
7+
WHEN TRIM(LOWER(review_channel)) IN ('app', 'mobile app', 'mobile') THEN 'Mobile App'
8+
WHEN TRIM(LOWER(review_channel)) IN ('in store', 'in-store', 'store') THEN 'In Store'
9+
WHEN TRIM(LOWER(review_channel)) IN ('online', 'web') THEN 'Online'
10+
WHEN TRIM(LOWER(review_channel)) = 'phone' THEN 'Phone Call'
11+
WHEN TRIM(LOWER(review_channel)) = 'catalog' THEN 'Catalog'
12+
ELSE 'Unknown'
13+
END AS review_channel,
14+
15+
CASE
16+
WHEN REPLACE(REPLACE(TRIM(dbo.TitleCase(review_title)), CHAR(13), ''), CHAR(10), '') = '' THEN 'Unknown'
17+
ELSE REPLACE(REPLACE(TRIM(dbo.TitleCase(review_title)), CHAR(13), ''), CHAR(10), '')
18+
END as review_title
619
FROM {{ ref('stg_reviews') }} ;
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
SELECT
22
review_id,
3-
rating,
3+
4+
CASE
5+
WHEN TRY_CONVERT(INT, rating) BETWEEN 1 AND 5
6+
THEN TRY_CONVERT(INT, rating)
7+
ELSE NULL
8+
END AS rating,
9+
410
rating_text
511
FROM {{ ref('stg_reviews') }} ;
Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,29 @@
11
SELECT
22
review_id,
33
txn_id,
4+
45
customer_id,
56
customer_name,
7+
68
product_id,
79
product_name,
8-
review_date,
9-
verified_purchase
10+
11+
CASE
12+
WHEN review_date LIKE '[A-Z][a-z][a-z][a-z] __, ____' THEN TRY_CONVERT(DATE ,review_date)
13+
WHEN review_date LIKE '[A-Z][a-z][a-z] __, ____' THEN TRY_CONVERT(DATE ,review_date)
14+
WHEN review_date LIKE '____/__/__' THEN TRY_CONVERT(DATE ,review_date)
15+
WHEN review_date LIKE '____-__-__' THEN TRY_CONVERT(DATE ,review_date)
16+
17+
WHEN review_date LIKE '__/__/____' AND TRY_CONVERT(INT, SUBSTRING(review_date, 4, 2)) > 12 THEN TRY_CONVERT(DATE, review_date, 101)
18+
WHEN review_date LIKE '__/__/____' AND TRY_CONVERT(INT, LEFT(review_date, 2)) > 12 THEN TRY_CONVERT(DATE, review_date, 103)
19+
WHEN review_date LIKE '__-__-____' AND TRY_CONVERT(INT, SUBSTRING(review_date, 4, 2)) > 12 THEN TRY_CONVERT(DATE, review_date, 110)
20+
WHEN review_date LIKE '__-__-____' AND TRY_CONVERT(INT, LEFT(review_date, 2)) > 12 THEN TRY_CONVERT(DATE, review_date, 105)
21+
ELSE TRY_CONVERT(DATE, review_date)
22+
END as review_date,
23+
24+
CASE
25+
WHEN TRIM(LOWER(verified_purchase)) IN ('1', 'y', 'yes', 'true', 'verified') THEN 'Verified'
26+
WHEN TRIM(LOWER(verified_purchase)) IN ('0', 'n', 'no', 'false') THEN 'Not Verified'
27+
ELSE 'Unknown'
28+
END AS verified_purchase
1029
FROM {{ ref('stg_reviews') }} ;
Lines changed: 63 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,65 @@
11
SELECT
22
store_id,
3-
address,
4-
city,
5-
state,
6-
state_full,
7-
zip_code,
8-
country,
9-
region,
10-
district,
11-
phone
12-
FROM {{ ref('stg_stores') }} ;
3+
4+
CASE
5+
WHEN address IS NULL OR TRIM(address) = '' OR LEN(address) < 5 THEN 'Unknown'
6+
ELSE TRIM(dbo.TitleCase(address))
7+
END address,
8+
9+
CASE
10+
WHEN city IS NULL OR TRIM(city) = '' OR LEN(TRIM(city)) < 3 THEN 'Unknown'
11+
ELSE TRIM(dbo.TitleCase(city))
12+
END as city,
13+
14+
CASE
15+
WHEN TRIM(state) = 'California' THEN 'CA'
16+
WHEN TRIM(state) = 'Texas' THEN 'TX'
17+
WHEN TRIM(state) = 'Arizona' THEN 'AZ'
18+
WHEN TRIM(state) = 'Colorado' THEN 'CO'
19+
WHEN TRIM(state) = 'Maryland' THEN 'MD'
20+
WHEN TRIM(state) = 'Wisconsin' THEN 'WI'
21+
WHEN TRIM(state) = 'Illinois' THEN 'IL'
22+
WHEN TRIM(state) = 'Georgia' THEN 'GA'
23+
WHEN TRIM(state) = 'Tennessee' THEN 'TN'
24+
WHEN TRIM(state) = 'New Mexico' THEN 'NM'
25+
WHEN TRIM(state) = 'Ohio' THEN 'OH'
26+
WHEN state IS NULL OR TRIM(state) = '' OR LEN(TRIM(state)) < 2 THEN 'Unknown'
27+
ELSE state
28+
END as state,
29+
30+
CASE
31+
WHEN state_full IS NULL OR TRIM(state_full) = '' OR LEN(TRIM(state_full)) < 4 THEN 'Unknown'
32+
ELSE TRIM(dbo.TitleCase(state_full))
33+
END as state_full,
34+
35+
CASE
36+
WHEN zip_code IS NULL OR TRY_CONVERT(INT, zip_code) IS NULL OR LEN(zip_code) < 5 THEN NULL
37+
ELSE TRY_CONVERT(INT, zip_code)
38+
END as zip_code,
39+
40+
CASE
41+
WHEN TRIM(LOWER(country)) IN ('us', 'usa', 'united states', 'u.s.a', 'u.s') THEN 'United States'
42+
WHEN country IS NULL OR TRIM(country) = '' OR LEN(TRIM(country)) < 2 THEN 'Unknown'
43+
ELSE TRIM(dbo.TitleCase(country))
44+
END as country,
45+
46+
CASE
47+
WHEN region IS NULL OR TRIM(region) = '' OR LEN(TRIM(region)) < 2 THEN 'Unknown'
48+
ELSE TRIM(dbo.TitleCase(region))
49+
END as region,
50+
51+
CASE
52+
WHEN district IS NULL OR TRIM(district) = '' OR LEN(TRIM(district)) < 2 THEN 'Unknown'
53+
ELSE TRIM(dbo.TitleCase(district))
54+
END as district,
55+
56+
CASE
57+
WHEN TRIM(phone) LIKE '(___) ___-____' THEN CONCAT('+1 ', SUBSTRING(TRIM(phone), 1, 14))
58+
WHEN TRIM(phone) LIKE '+___________' THEN CONCAT('+1 (', SUBSTRING(TRIM(phone), 3, 3), ') ', SUBSTRING(TRIM(phone), 6, 3),'-', SUBSTRING(TRIM(phone), 9,4))
59+
WHEN TRIM(phone) LIKE '___-___-____' THEN CONCAT('+1 (', SUBSTRING(TRIM(phone), 1, 3), ') ', SUBSTRING(TRIM(phone), 5, 8))
60+
WHEN TRIM(phone) LIKE '___.___.____' THEN CONCAT('+1 (', SUBSTRING(TRIM(phone), 1, 3), ') ', SUBSTRING(TRIM(phone), 5, 3), '-', SUBSTRING(TRIM(phone), 9, 4))
61+
WHEN TRIM(phone) LIKE '__________' THEN CONCAT('+1 (', SUBSTRING(TRIM(phone), 1, 3), ') ', SUBSTRING(TRIM(phone), 4, 3), '-', SUBSTRING(TRIM(phone), 7, 4))
62+
ELSE TRIM(phone)
63+
END as phone
64+
FROM {{ ref('stg_stores') }} ;
65+
Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,36 @@
11
SELECT
22
store_id,
3-
sq_footage,
4-
num_employees,
5-
annual_rent_usd,
6-
is_active,
7-
has_parking,
8-
has_cafe
3+
4+
CASE
5+
WHEN sq_footage IS NULL OR sq_footage < 0 THEN NULL
6+
ELSE TRY_CONVERT(INT, sq_footage)
7+
END as sq_footage,
8+
9+
CASE
10+
WHEN num_employees IS NULL OR num_employees < 0 THEN NULL
11+
ELSE TRY_CONVERT(INT, num_employees)
12+
END as num_employees,
13+
14+
CASE
15+
WHEN annual_rent_usd < 1 OR annual_rent_usd IS NULL THEN NULL
16+
ELSE TRY_CONVERT(INT, annual_rent_usd)
17+
END as annual_rent_usd,
18+
19+
CASE
20+
WHEN TRIM(LOWER(is_active)) IN ('true', 'yes', 'y', '1', 'active') THEN 'True'
21+
WHEN TRIM(LOWER(is_active)) IN ('false', 'no', 'n', '0', 'not active') THEN 'False'
22+
ELSE 'Unknown'
23+
END as is_active,
24+
25+
CASE
26+
WHEN TRIM(LOWER(has_parking)) IN ('true', 'yes', 'y', '1') THEN 'True'
27+
WHEN TRIM(LOWER(has_parking)) IN ('false', 'no', 'n', '0') THEN 'False'
28+
ELSE 'Unknown'
29+
END as has_parking,
30+
31+
CASE
32+
WHEN REPLACE(REPLACE(TRIM(LOWER(has_cafe)), CHAR(13), ''),CHAR(10), '') IN ('1', 'yes', 'y','true') THEN 'True'
33+
WHEN REPLACE(REPLACE(TRIM(LOWER(has_cafe)), CHAR(13), ''),CHAR(10), '') IN ('0', 'no', 'n','false') THEN 'False'
34+
ELSE 'Unknown'
35+
END as has_cafe
936
FROM {{ ref('stg_stores') }} ;
Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,31 @@
11
SELECT
22
store_id,
3-
store_name,
4-
store_type,
5-
opened_date,
6-
manager_name
3+
4+
CASE
5+
WHEN manager_name IS NULL OR TRIM(manager_name) = '' OR LEN(TRIM(manager_name)) < 2 THEN 'Unknown'
6+
ELSE TRIM(dbo.TitleCase(manager_name))
7+
END as manager_name,
8+
9+
CASE
10+
WHEN store_name IS NULL OR LEN(TRIM(store_name)) < 3 THEN 'Unknown'
11+
ELSE TRIM(dbo.TitleCase(store_name))
12+
END as store_name,
13+
14+
CASE
15+
WHEN store_type IS NULL OR LEN(TRIM(store_type)) < 3 THEN 'Unknown'
16+
ELSE TRIM(dbo.TitleCase(store_type))
17+
END as store_type,
18+
19+
CASE
20+
WHEN opened_date LIKE '[A-Z][a-z][a-z][a-z] __, ____' THEN TRY_CONVERT(DATE ,opened_date)
21+
WHEN opened_date LIKE '[A-Z][a-z][a-z] __, ____' THEN TRY_CONVERT(DATE ,opened_date)
22+
WHEN opened_date LIKE '____/__/__' THEN TRY_CONVERT(DATE ,opened_date)
23+
WHEN opened_date LIKE '____-__-__' THEN TRY_CONVERT(DATE ,opened_date)
24+
25+
WHEN opened_date LIKE '__/__/____' AND TRY_CONVERT(INT, SUBSTRING(opened_date, 4, 2)) > 12 THEN TRY_CONVERT(DATE, opened_date, 101)
26+
WHEN opened_date LIKE '__/__/____' AND TRY_CONVERT(INT, LEFT(opened_date, 2)) > 12 THEN TRY_CONVERT(DATE, opened_date, 103)
27+
WHEN opened_date LIKE '__-__-____' AND TRY_CONVERT(INT, SUBSTRING(opened_date, 4, 2)) > 12 THEN TRY_CONVERT(DATE, opened_date, 110)
28+
WHEN opened_date LIKE '__-__-____' AND TRY_CONVERT(INT, LEFT(opened_date, 2)) > 12 THEN TRY_CONVERT(DATE, opened_date, 105)
29+
ELSE TRY_CONVERT(DATE, opened_date)
30+
END as opened_date
731
FROM {{ ref('stg_stores') }} ;

0 commit comments

Comments
 (0)