How It Works

Four steps from stream to feature

Link data sources, write standard SQL, deploy an incremental pipeline, and deliver fresh features to your models.

1

Connect your sources

Set Kafka topics, Postgres replication slots, MySQL binlog connections, or S3 paths as inputs. Credentials stay encrypted and never enter query configs.

YAML
sources:
  - name: transactions
    type: kafka
    config:
      bootstrap_servers: "broker-host:9092"
      topic: "txn-events"
      group_id: "feldera-pipeline-1"
      schema_format: json
      # credentials resolved from secrets store
2

Write your SQL

Write SELECT, GROUP BY, JOIN, and window functions as usual. Feldera parses the query into an incremental operator plan, with no new DSL.

SQL
CREATE VIEW fraud_features AS
SELECT
  card_id,
  SUM(amount) AS spend_1h,
  COUNT(*) AS txn_count_1h,
  AVG(amount) AS avg_txn
FROM transactions
WHERE event_time > NOW() - INTERVAL '1 hour'
GROUP BY card_id;
3

Deploy incrementally

Run one CLI command or use the web UI to push the pipeline. Feldera initializes operator state from current data, then changes to incremental mode. No downtime required.

Shell
$ feldera pipeline deploy fraud-features.yaml

Bootstrapping operator state...  [████████████████] 100%
Switching to incremental mode...  done
Pipeline live. Latency: <100ms
4

Serve features to models

Call the feature API endpoint from model serving. Features remain current within the pipeline's update latency. Lookups stay point-in-time correct for training and inference.

Shell
$ curl -s \
  -H "Authorization: Bearer $FELDERA_API_KEY" \
  "https://api.example.com/features/fraud-features/card_1234"

{
  "card_id": "card_1234",
  "spend_1h": 360.22,
  "txn_count_1h": 2,
  "avg_txn": 180.11,
  "updated_at": "2026-08-07T14:23:09Z"
}

Full Walkthrough

Pipeline config reference

A full pipeline uses one YAML config file and a SQL query. Below is the structure for a fraud-feature pipeline with Kafka input and REST API output.

YAML
pipeline:
  name: fraud-features
  description: Transaction velocity features for fraud scoring

sources:
  - name: transactions
    type: kafka
    config:
      bootstrap_servers: "$KAFKA_BROKERS"
      topic: "txn-events"
      group_id: "feldera-fraud"

queries:
  - name: fraud_features
    sql: |
      SELECT card_id,
             SUM(amount) AS spend_1h,
             COUNT(*) AS txn_count
      FROM transactions
      WHERE event_time > NOW() - INTERVAL '1 hour'
      GROUP BY card_id

outputs:
  - name: feature-api
    type: rest
    config:
      key_field: card_id
      latency_slo_ms: 100

Get started

Build your first pipeline?

The quickstart guide gets you to a working pipeline in under 10 minutes. Open-source self-hosting needs no credit card.

Get started free Read the quickstart