Streaming Transformations¶
Overview¶
Streaming Transformations let you filter, enrich, reshape, and aggregate data in flight while you ingest it with Snowpipe Streaming. You define the logic once, in the CREATE PIPE statement, and every record is transformed before it lands in your table. This shortens the time from raw data to data that is ready for querying, with typically <10s end-to-end latency and even less for simple transformations targeting Interactive tables. It helps from two directions:
- If you run a separate stream processing system in front of Snowflake, you may no longer need it. That lowers total cost of ownership and improves freshness.
- If you transform data after it lands in Snowflake, transforming at ingestion is, in relevant cases, faster and simpler, because there is no separate post-landing transformation layer to build, schedule, and maintain.
Transformations land into standard Snowflake tables, Interactive tables, and managed Iceberg tables and are available in all Snowflake deployments.
Important
Streaming Transformations are supported for Snowpipe Streaming with high-performance architecture only. They are not supported for file-based Snowpipe nor for Snowpipe Streaming classic architecture.
Transformations¶
Streaming Transformations are embedded directly in the COPY INTO part of a CREATE PIPE definition:
- Stream filtering — a
WHEREclause that selectively ingests records matching a predicate. - Stream enrichment — one or more
LEFT OUTER JOINclauses that enrich each ingested record with columns from a dimension table. - Custom scalar logic — SQL and JavaScript scalar UDFs called from the
SELECTlist or theWHEREpredicate, for example to map a site code to its local timezone, normalize a unit, format strings, or classify a raw value into a named tier. - Lateral Flatten — expands an array in the record into one row per element, so a single streamed record lands as multiple rows.
- Insert-triggered materialized views — keep filtered projections or aggregates of ingested rows up to date in separate materialized views that are maintained as data is ingested.
Projection transformations, including XML and JSON processing, continue to work through the pipe subquery described in CREATE PIPE and COPY INTO <table>.
Note
Pricing: No additional charges are applied during Private Preview. Usage is billed as standard Snowpipe Streaming ingestion cost, with no separate charge for Streaming Transformations. Pricing beyond Private Preview has not yet been finalized.
What you can do with Streaming Transformations¶
Each use case below has a scenario that shows the transformations to combine, with SQL, sample input, and result.
- AI agent observability — turn agent telemetry into one row per tool call. Filter out internal traffic, attach model provider and pricing, and estimate the cost of every call.
- Observability and OpenTelemetry — land logs and traces in query-ready tables. Drop noisy debug records, expand attributes into rows, attach the owning team and service, and keep error and count views up to date.
- Industrial IoT telemetry — turn batched device messages into one typed, named reading per row, mapped from raw tag IDs to engineering names and units, with per-minute rollups next to the raw data.
- Security and incident event management (SIEM) — keep only the event types that matter, enrich them with asset and threat-intelligence context, classify severity with a UDF, and fan out one row per owning team for alert routing.
- Clickstream and product analytics — tie each event to account tier and region, parse user agents and URLs with a UDF, and keep fresh event counts per tier and region.
- Privacy and compliance — hash or mask personal data before it lands, and ingest only records with consent, so raw identifiers never reach the table.
Pages in this section¶
See also¶
- CREATE PIPE
- COPY INTO <table>
- Snowpipe Streaming with high-performance architecture
- Transform data during a load
- Querying metadata for staged files
- NOT NULL, PRIMARY KEY, UNIQUE, and FOREIGN KEY constraints
Documentation update history¶
| Date or status | Documentation update |
|---|---|
| Oct 16, 2026 | Added Scenarios. |
| Oct 8, 2026 | Added (1) LATERAL FLATTEN, (2) additional dimension table types, (3) insert-triggered materialized views. |
| Aug 25, 2026 | Added SQL and JavaScript scalar UDF syntax and examples. |
| Aug 21, 2026 | Added the initial Private Preview page covering stream filtering and dimension-table enrichment. |