Repository navigation
Expand file tree
/
Copy pathcontent_moderation_queue.sql
More file actions
90 lines (79 loc) · 3.21 KB
/
Copy pathcontent_moderation_queue.sql
File metadata and controls
90 lines (79 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
* Content Moderation Queue Demo
*
* Scenario:
* Managing a queue of user-generated content flagged for review (AI + Human loop).
* Architecture: Medallion (Bronze -> Silver -> Gold)
* Goal: Prioritize high-risk content and measure moderator throughput.
*/
-------------------------------------------------------------------------------
-- 0. SETUP
-------------------------------------------------------------------------------
CREATE FOLDER IF NOT EXISTS SocialMediaDB;
CREATE FOLDER IF NOT EXISTS SocialMediaDB.Bronze;
CREATE FOLDER IF NOT EXISTS SocialMediaDB.Silver;
CREATE FOLDER IF NOT EXISTS SocialMediaDB.Gold;
-------------------------------------------------------------------------------
-- 1. BRONZE LAYER
-------------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS SocialMediaDB.Bronze.Content (
ContentID INT,
UserID INT,
Type VARCHAR, -- 'Post', 'Comment', 'Image'
TextBody VARCHAR,
PostTime TIMESTAMP,
AIScore DOUBLE -- 0.0 to 1.0 (1.0 = High prob of violation)
);
CREATE TABLE IF NOT EXISTS SocialMediaDB.Bronze.ModerationLog (
ActionID INT,
ContentID INT,
ModeratorID INT,
ActionTime TIMESTAMP,
Decision VARCHAR -- 'Approve', 'Remove', 'Escalate'
);
INSERT INTO SocialMediaDB.Bronze.Content VALUES
(1, 101, 'Post', 'Hello world!', '2025-01-01 10:00:00', 0.01),
(2, 102, 'Comment', 'Spam link: click here', '2025-01-01 10:05:00', 0.95),
(3, 103, 'Image', 'Binary data...', '2025-01-01 10:10:00', 0.88),
(4, 104, 'Post', 'Controversial opinion', '2025-01-01 10:15:00', 0.45);
INSERT INTO SocialMediaDB.Bronze.ModerationLog VALUES
(1, 2, 501, '2025-01-01 10:10:00', 'Remove'),
(2, 3, 502, '2025-01-01 10:12:00', 'Escalate');
-------------------------------------------------------------------------------
-- 2. SILVER LAYER
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW SocialMediaDB.Silver.ModerationQueue AS
SELECT
c.ContentID,
c.Type,
c.AIScore,
c.PostTime,
CASE
WHEN m.Decision IS NULL THEN 'Pending'
ELSE 'Reviewed'
END AS Status,
m.Decision,
m.ModeratorID
FROM SocialMediaDB.Bronze.Content c
LEFT JOIN SocialMediaDB.Bronze.ModerationLog m ON c.ContentID = m.ContentID;
-------------------------------------------------------------------------------
-- 3. GOLD LAYER
-------------------------------------------------------------------------------
CREATE OR REPLACE VIEW SocialMediaDB.Gold.ComplianceMetrics AS
SELECT
CAST(PostTime AS DATE) AS PostDate,
COUNT(*) AS TotalContent,
-- Auto-flagged by AI (>0.8)
SUM(CASE WHEN AIScore > 0.8 THEN 1 ELSE 0 END) AS HighRiskItems,
-- Moderator Action Rate
SUM(CASE WHEN Status = 'Reviewed' THEN 1 ELSE 0 END) AS ReviewedItems,
AVG(CASE WHEN Status = 'Reviewed' THEN AIScore ELSE NULL END) AS AvgRiskOfReviewed
FROM SocialMediaDB.Silver.ModerationQueue
GROUP BY CAST(PostTime AS DATE);
-------------------------------------------------------------------------------
-- 4. AGENT PROMPTS
-------------------------------------------------------------------------------
/*
PROMPT:
"Show me pending items in SocialMediaDB.Silver.ModerationQueue sorted by AIScore descending."
*/