Marketing Campaign and Sales Impact (ASIA)

CPGMKT995· 96K records · 8 tables · v1.0.0 · Updated 2026-08-11
Marketing & Advertising Marketing & Advertising Dataset API
CSV JSON SQLmarketingcampaignsmedia-mixsales-liftattributionconsumer-goodsasiaweeklytime-series

Overview

A decade of marketing and sales at weekly grain, where the product is the lift mechanism itself. Twelve invented consumer-goods brands sell through ten invented Asian retailers; 472 campaigns buy television, digital, social, retailer media networks and print across 548 weeks; and every week's actual units are built as baseline plus seasonality plus per-channel lift plus residual. The decomposition ships as its own table and the build asserts it sums exactly, row by row, except one documented brand-quarter whose attribution window is double counted: the digital and social columns both claim an overlapping conversion window, the rows sum above actuals by the recorded excess, and finding the quarter is the exercise. Lift carries diminishing returns, asserted on the shipped rows: lift per dollar falls as spend rises. The channel mix moves the way the Asian markets moved, asserted: social becomes the biggest line on the plan while print collapses and retailer media networks double, the seasonal peak sits in the early-year festival quarter, and the 2020 commerce shift lifts an online channel that was already big and keeps growing. Retailer sales split the brand-week actual exactly; one retailer reports weeks starting Sunday while everyone else starts Monday, so a date join silently drops it, and one campaign's tracking failed in flight, spending money against zero measured impressions. Built for media-mix modelling, attribution teaching, incrementality analytics, retail analytics, ETL pipelines and BI logic, with ground truth included. The licence and disclosure sections state the provenance of the data.

Row Counts by Table

Counted from the files that ship, not estimated.

TableRows
mka_brands12
mka_retailers10
mka_channels5
mka_weeks548
mka_campaigns472
mka_media_weekly22,995
mka_weekly_sales65,760
mka_lift_decomposition6,576

Table Relationships

One parent record and seven child tables, each joined back on the same key.

70%
Loading diagram

Schema

Every table ships with typed columns, referential integrity, and documentation.

mka_brands· Rows: 12
ColumnTypeDescription
brand_idvarchar(8)Brand key. Primary key.
brand_namevarchar(16)Generated brand name. Collisions with real manufacturers and famous brands are a build failure.
categoryvarchar(24)beverages, snacks, home_care, personal_care, packaged_food or pet_care.
base_weekly_unitsintegerThe brand base weekly volume the lift mechanism builds on.
launch_price_usdnumeric(6,2)Unit price at the start of the decade, in dollars.
demand_patternvarchar(24)seasonal_peaked or steady.
mka_retailers· Rows: 10
ColumnTypeDescription
retailer_idvarchar(8)Retailer key. Primary key.
retailer_namevarchar(24)Generated retailer name. Collisions with real retailers are a build failure.
retailer_formatvarchar(24)The retailer format the split weights follow.
week_conventionvarchar(16)monday_start, or sunday_start for the one documented defect retailer whose week dates sit one day early.
mka_channels· Rows: 5
ColumnTypeDescription
channel_codevarchar(16)Channel key. Primary key: TV, DIGITAL, SOCIAL, RETAIL_MEDIA or PRINT.
channel_namevarchar(32)The channel in words.
typical_cpm_usdintegerTypical cost per thousand impressions in dollars, the invented planning figure.
saturation_lift_pctnumeric(5,1)The lift ceiling of the channel as percent of brand base volume, the diminishing-returns asymptote.
mka_weeks· Rows: 548
ColumnTypeDescription
week_idvarchar(8)Week row key. Primary key.
week_indexintegerThe week number every table joins on, 1 to 548.
week_start_datedateThe Monday the week starts, the spine convention.
yearintegerCalendar year of the week start.
quartervarchar(16)Calendar quarter of the week start.
mka_campaigns· Rows: 472
ColumnTypeDescription
campaign_idvarchar(8)Campaign key. Primary key.
brand_idvarchar(8)The brand the campaign belongs to.
campaign_namevarchar(40)Generated campaign name.
objectivevarchar(24)always_on, awareness, conversion, seasonal_push or launch_support.
start_week_indexintegerFirst week of the campaign.
end_week_indexintegerLast week of the campaign.
channel_listvarchar(48)The channels the campaign buys, pipe separated.

+1 more columns in mka_campaigns. The full schema ships with the download.

mka_media_weekly· Rows: 22,995
ColumnTypeDescription
media_idvarchar(16)Media row key. Primary key.
campaign_idvarchar(8)The campaign the row belongs to.
brand_idvarchar(8)The brand, denormalised.
channel_codevarchar(16)The channel bought.
week_indexintegerThe week of the activity.
spend_usdintegerSpend in dollars for the campaign-channel-week.
impressionsintegerMeasured impressions. Zero only in the one documented tracking-failure campaign.

+2 more columns in mka_media_weekly. The full schema ships with the download.

mka_weekly_sales· Rows: 65,760
ColumnTypeDescription
sale_idvarchar(16)Sales row key. Primary key.
brand_idvarchar(8)The brand.
retailer_idvarchar(8)The retailer.
week_indexintegerThe week. Join on this, not on the date.
week_start_datedateThe week start in the RETAILER own convention: one documented retailer reports Sunday-start dates one day before the spine.
units_soldintegerUnits sold. Retailer units sum exactly to the brand-week actual in the decomposition.
avg_unit_price_usdnumeric(6,2)Average unit price in dollars that week.

+2 more columns in mka_weekly_sales. The full schema ships with the download.

mka_lift_decomposition· Rows: 6,576
ColumnTypeDescription
decomposition_idvarchar(8)Decomposition row key. Primary key.
brand_idvarchar(8)The brand.
week_indexintegerThe week.
baseline_unitsintegerUnpromoted base demand, including the documented 2020 pantry effects.
seasonality_unitsintegerSeasonal swing around the baseline, signed.
tv_lift_unitsintegerUnits attributed to television that week.
digital_lift_unitsintegerUnits attributed to digital. In the documented double-counted brand-quarter this column claims part of an overlapping conversion window.

+6 more columns in mka_lift_decomposition. The full schema ships with the download.

Sample Data

A snapshot of real rows from the dataset (values are fully synthetic).

decomposition_idbrand_idweek_indexbaseline_unitsseasonality_unitstv_lift_unitsdigital_lift_unitssocial_lift_unitsretail_media_lift_unitsprint_lift_unitsactual_units
DC0001BR011224970562135274440000967292181
DC0002BR012225093653975539525300896299675
DC0003BR013225314744295954435100970308270

Version History

v1.0.02026-08-11First release. 12 brands, 10 Asian retailers, 472 campaigns, five channels, 548 weeks, with the exact lift decomposition shipped as the answer key, 2016-01-04 to 2026-06-29.

Related Datasets