Skip to content

Commit b10f7a4

Browse files
committed
more demo files
1 parent 56bd911 commit b10f7a4

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
-- Demo: JSON parsing and VARIANT field access
2+
-- Covers: get_json_object, from_json, json_tuple → PARSE_JSON + bracket access
3+
4+
CREATE TABLE IF NOT EXISTS raw_events (
5+
event_id STRING NOT NULL,
6+
event_type STRING,
7+
payload STRING,
8+
occurred_at TIMESTAMP,
9+
CONSTRAINT raw_events_pk PRIMARY KEY (event_id)
10+
)
11+
USING DELTA;
12+
13+
CREATE TABLE IF NOT EXISTS user_profiles (
14+
user_id STRING NOT NULL,
15+
metadata STRING,
16+
CONSTRAINT user_profiles_pk PRIMARY KEY (user_id)
17+
)
18+
USING DELTA;
19+
20+
-- Extract typed fields from a JSON payload column
21+
CREATE OR REPLACE TEMP VIEW parsed_events AS
22+
SELECT
23+
event_id,
24+
event_type,
25+
occurred_at,
26+
get_json_object(payload, '$.user_id') AS user_id,
27+
get_json_object(payload, '$.amount') AS amount_str,
28+
CAST(get_json_object(payload, '$.amount') AS DOUBLE) AS amount,
29+
get_json_object(payload, '$.currency') AS currency,
30+
get_json_object(payload, '$.items[0]') AS first_item
31+
FROM raw_events;
32+
33+
-- Aggregate per user, parsing nested JSON
34+
CREATE OR REPLACE TEMP VIEW user_event_summary AS
35+
SELECT
36+
get_json_object(payload, '$.user_id') AS user_id,
37+
COUNT(*) AS event_count,
38+
SUM(CAST(get_json_object(payload, '$.amount') AS DOUBLE)) AS total_amount,
39+
MIN(occurred_at) AS first_event,
40+
MAX(occurred_at) AS last_event
41+
FROM raw_events
42+
WHERE event_type = 'purchase'
43+
GROUP BY get_json_object(payload, '$.user_id');
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
-- Demo: TopK pattern, QUALIFY clause, and TIMESTAMPDIFF
2+
-- Covers: ROW_NUMBER/RANK in subquery (TopK), QUALIFY, DATEDIFF → TIMESTAMPDIFF
3+
4+
CREATE TABLE IF NOT EXISTS employee (
5+
emp_id STRING NOT NULL,
6+
dept STRING,
7+
salary DECIMAL(12, 2),
8+
hire_date TIMESTAMP,
9+
CONSTRAINT employee_pk PRIMARY KEY (emp_id)
10+
)
11+
USING DELTA;
12+
13+
CREATE TABLE IF NOT EXISTS review (
14+
emp_id STRING NOT NULL,
15+
review_date TIMESTAMP NOT NULL,
16+
score INT,
17+
CONSTRAINT review_pk PRIMARY KEY (emp_id, review_date)
18+
)
19+
USING DELTA;
20+
21+
-- Top 3 earners per department using ROW_NUMBER subquery (TopK pattern)
22+
CREATE OR REPLACE TEMP VIEW top_earners_per_dept AS
23+
SELECT dept, emp_id, salary, rank_in_dept
24+
FROM (
25+
SELECT
26+
dept,
27+
emp_id,
28+
salary,
29+
ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) AS rank_in_dept
30+
FROM employee
31+
) ranked
32+
WHERE rank_in_dept <= 3;
33+
34+
-- Latest review per employee using QUALIFY
35+
CREATE OR REPLACE TEMP VIEW latest_review AS
36+
SELECT
37+
emp_id,
38+
review_date,
39+
score
40+
FROM review
41+
QUALIFY ROW_NUMBER() OVER (PARTITION BY emp_id ORDER BY review_date DESC) = 1;
42+
43+
-- Employee tenure in years using DATEDIFF
44+
CREATE OR REPLACE TEMP VIEW employee_tenure AS
45+
SELECT
46+
emp_id,
47+
dept,
48+
hire_date,
49+
DATEDIFF(year, hire_date, CURRENT_TIMESTAMP) AS tenure_years
50+
FROM employee;

0 commit comments

Comments
 (0)