You are asked to design the data model (and supporting pipelines at a high level) to represent ads demand for an ads platform.
“Demand” here refers to what advertisers want to buy/spend, and what inventory they are eligible to serve on.
Requirements
-
Support reporting for:
-
Booked budget, remaining budget, and spend to date
-
Delivery (impressions, clicks, conversions)
-
Pacing vs time (e.g., under/over-delivering)
-
Breakdown by advertiser, campaign, ad group/line item, creative, targeting, geo, device, day
-
Handle campaign lifecycle changes:
-
Budget edits, start/end date edits, pause/resume
-
Creative swaps and targeting updates
-
Data sources (assume): impression/click logs (high volume), conversion events, campaign configuration service (slow-changing)
-
Output: propose a warehouse schema (tables + keys), and outline ETL/ELT steps and key validations.
Deliverables
-
Core entities and relationships
-
Fact and dimension tables (grain matters)
-
How you track slowly changing campaign configuration
-
Example queries/KPIs the model supports