Welcome to Zuora Product Documentation

Explore our rich library of product information

Snowflake as a source

Use a Snowflake source when you want Mediation to ingest data from Snowflake in batch runs. Each run processes a snapshot of the data available when the run starts.

A Snowflake source lets Mediation ingest data from Snowflake and process it through a meter pipeline.

Snowflake source is batch-oriented and does not continuously monitor Snowflake for new records.

Typical use cases include usage ingestion from Snowflake data warehouses, daily or hourly usage processing, billing data preparation, data reconciliation and reporting, and replacing file-based batch integrations.

How data moves through the pipeline

The Snowflake source does not read Snowflake row by row. Instead, Snowflake exports the result of a table or SQL query to a Zuora-managed Amazon S3 staging location, and Mediation reads the exported files into the pipeline.

Each exported row becomes a pipeline event that can be processed by downstream operators such as Filter, Enrichment, Aggregator, Advanced Transformer, Usage Sink, and Event Store Sink.

Runtime flow

  1. Execute the configured Snowflake table or SQL query.
  2. Export the result set to a Zuora-managed Amazon S3 staging location.
  3. Read the exported files into the Mediation pipeline.
  4. Convert each row into a pipeline event and process it through the flow.
  5. Complete the run after all exported files have been processed.

Example query:

SELECT *
FROM CUSTOMER_USAGE
WHERE DATE(event_time) = CURRENT_DATE()

Example Snowflake row:

{
  "accountNumber": "A1001",
  "usageDate": "2026-06-01",
  "quantity": 150
}

The pipeline event uses the same row values as the event payload.

{
  "accountNumber": "A1001",
  "usageDate": "2026-06-01",
  "quantity": 150
}

Important behavior

A Snowflake source does not continuously watch Snowflake for new data. Each run is snapshot-based, so data added after the run starts is not included in that run. To process new data, start a new meter run.

Example:

SELECT *
FROM CUSTOMER_USAGE
WHERE DATE(event_time) = CURRENT_DATE()

If a run starts at 10:00 AM, it processes the rows returned at that time. If additional rows are inserted at 10:15 AM, they are not processed automatically. A new run must be started.