Skip to main content
What this does: Maintains feature vectors as materialized views over live event streams. At inference time, queries return pre-computed, always-current features — no aggregation triggered at query time. When to use this: Your ML model or scoring system needs fresh features at low latency, computed over a rolling window of recent events.

Setup

1. Ingest events from Kafka

2. Define features as a materialized view

RisingWave maintains this view incrementally as events arrive. The result is always current — no recomputation on read.

3. Query features at inference time

Point queries against the MV return in milliseconds — the work is already done.

4. Chain a UDF for live inference (optional)

Key points

  • The MV is maintained incrementally — a new event triggers an incremental update, not a full recompute
  • WHERE event_time >= NOW() - INTERVAL '1 day' creates a rolling window: old data falls out automatically
  • For multi-entity features, add more columns to GROUP BY; for cross-entity features, use a JOIN between two sources

Next steps