AD/Marketing Tech

A DSP (demand-side platform) processes 2M bid requests/second across 15 ad exchanges. Each bid decision must happen in under 100ms. The ML model's bid price needs continuous recalibration based on win rates, CPAs, and remaining campaign budgets.

⚠Campaign CAMP-8812's CPA drifted from target $4.20 to $7.80 over 3 hours because the bidding model wasn't recalibrated against real-time win/conversion data.
LIVEbid_events
bid_idcampaign_idexchangebid_pricewonimpressionclickconversionts
bid_9a3f01CAMP-8812google_adx2.4truetruefalsefalse2024-03-15T14:00:01.112Z
bid_9a3f02CAMP-8812google_adx2.55truetruetruetrue2024-03-15T14:00:01.445Z
bid_9a3f03CAMP-8812openx2.2falsefalsefalsefalse2024-03-15T14:00:01.667Z
bid_9a3f04CAMP-8812pubmatic2.8truetruetruefalse2024-03-15T14:00:02.001Z
bid_7b2e01CAMP-4455google_adx1.9truetruefalsefalse2024-03-15T14:00:01.230Z
bid_7b2e02CAMP-4455index_exchange1.75truetruetruetrue2024-03-15T14:00:01.890Z
Streaming SQLRunning
▶Compute rolling win rate, CTR, and CPA per campaign in 5-min windows✓
CREATE SOURCE bid_events WITH (
  connector = 'kafka',
  topic = 'dsp.bid_events',
  properties.bootstrap.server = 'broker:9092'
) FORMAT PLAIN ENCODE JSON;

CREATE MATERIALIZED VIEW campaign_metrics AS
SELECT
  campaign_id,
  window_start,
  COUNT(*) AS total_bids,
  COUNT(*) FILTER (WHERE won) AS wins,
  ROUND(
    COUNT(*) FILTER (WHERE won)::NUMERIC
    / NULLIF(COUNT(*), 0) * 100, 1
  ) AS win_rate_pct,
  COUNT(*) FILTER (WHERE click) AS clicks,
  ROUND(
    COUNT(*) FILTER (WHERE click)::NUMERIC
    / NULLIF(COUNT(*) FILTER (WHERE impression), 0) * 100, 2
  ) AS ctr_pct,
  COUNT(*) FILTER (WHERE conversion) AS conversions,
  CASE
    WHEN COUNT(*) FILTER (WHERE conversion) = 0 THEN NULL
    ELSE ROUND(
      SUM(bid_price) FILTER (WHERE won)::NUMERIC
      / COUNT(*) FILTER (WHERE conversion), 2
    )
  END AS effective_cpa,
  ROUND(AVG(bid_price) FILTER (WHERE won), 2) AS avg_win_price
FROM TUMBLE(bid_events, ts, INTERVAL '5 MINUTES')
GROUP BY campaign_id, window_start;
▶Generate bid adjustment signals when CPA deviates >15% from target✓
bid_adjustmentsauto-updating
campaign_idcurrent_cpatarget_cpadeviation_pctbid_modifierwin_rateaction
CAMP-88125.14.221.40.8568.2REDUCE_MODERATE
CAMP-44552.853.5-18.61.1572.1INCREASE_MODERATE
CAMP-21906.354.832.30.755.4REDUCE_AGGRESSIVE
✓RisingWave recalculates effective CPA per campaign every 60 seconds. When CAMP-8812's CPA hits $5.10 (21% above target), bid prices auto-reduce by 15% — CPA returns to $4.40 within 20 minutes.
Best-in-Class Event Streaming
for Agents, Apps, and Analytics
GitHubXLinkedInSlackYouTube
Sign up for our to stay updated.