Maintained features
Per-entity counts, sums and last-seen values kept current by transformations.
Serve the latest features per entity in one read, and train on exactly the values that were true at the time, from the same tables.
The problem
Feature pipelines usually run twice: once as a batch job for training and once as a streaming job for serving. The two drift apart, and the model learns from values the serving path never produced.
Point-in-time correctness is the hard part. A training row must see the features as they stood when the label happened, not what a later backfill overwrote, and rebuilding that from logs is slow and fragile.
The fit is one engine that maintains per-entity features from the event stream, serves the latest row per key, and can read any table exactly as it was at a past commit.
Architecture
Events append; transformations fold them into per-entity feature tables kept current from every committed write; the latest row per key is served from the same engine, and AS OF COMMIT reads give training the exact past state.
Raw events append through SQL, write batches or native bulk frames.
Grouped transformations maintain counts, sums and last-seen values per entity in a keyed table.
A keyed read returns the latest features per entity, and a committed write is visible to the next statement.
SELECT … AS OF COMMIT returns the features as they stood at a past commit, for point-in-time training sets.
Examples
CREATE TRANSFORMATION balance_activity INTO balances ATTRIBUTE GROUP activity ASSELECT chain_id, recipient AS address, token, COUNT(*) AS transfer_count, MAX(transferred_at) AS last_transfer_at, MAX(_index) AS activity_indexFROM transfersGROUP BY chain_id, recipient, token;SELECT address, token, transfer_count, last_transfer_atFROM balances AS OF COMMIT 42WHERE chain_id = 1;The examples use the same two tables on every page. See the SQL reference for full syntax.
Capabilities
Per-entity counts, sums and last-seen values kept current by transformations.
The latest features per key, served from the same table the pipeline writes.
Training sets read the exact past state, with AS OF COMMIT.
Feature changes pushed to online consumers as they commit, with STREAM SELECT.
Learn more
Run a node and maintain your first feature table.