Skip to content

Workflow orchestration for Snowflake

Prefect helps data teams get more out of Snowflake and everything connected to it. Orchestrate ingestion, dbt, Snowpark, reverse ETL, and the APIs and SaaS tools Snowflake alone doesn’t reach.

Python-native orchestration

Add a decorator. Get orchestration.

A decorator on any Python function turns it into an observable, retried, production flow, whether it’s a Snowflake query, model training, or an API call.

From Snowflake

Customers are increasingly looking to move from AI experimentation to real production outcomes. Prefect helps streamline how teams orchestrate data and agentic workflows... Together, we’re helping organizations like HNI Corporation turn data into action faster.
Prasanna KrishnanHead of Horizon Catalog and Collaboration, Snowflake

What teams build

From routine ELT to AI-ready pipelines

If a workflow touches Snowflake, Prefect can run it.

Automation

Pipelines on autopilot

Schedule ELT, dbt, Snowpark, and reverse ETL with retries and concurrency built in.

Reliability

Cut pipeline failures

Automatic retries and concurrency limits keep pipelines running and protect Snowflake credits.

Snowflake visibility

Track every Snowflake run

Live state on every Snowflake run, with alerts and direct links to the failing SQL.

How it works

Built for the Snowflake stack

The prefect-snowflake library connects to your warehouse out of the box.

Connector

Native Snowflake connector

SnowflakeCredentials and SnowflakeConnector blocks for queries and bulk loads, sync or async.

Orchestration

Ingest to reverse ETL

Ingest, dbt, Snowpark, ML training, reverse ETL, and the external APIs that sit next to Snowflake, in a single workflow graph.

Observability

One view, every run

Retries, alerts, and run history for every Snowflake workflow. Triage failures fast.

snowflake_etl.py
1from prefect import flow, task
2from prefect_snowflake import SnowflakeConnector
3
4
5@task(retries=3, retry_delay_seconds=30)
6def load_raw_events(block_name: str) -> None:
7 with SnowflakeConnector.load(block_name) as connector:
8 connector.execute(
9 """
10 COPY INTO raw.events
11 FROM @events_stage
12 FILE_FORMAT = (TYPE = 'JSON')
13 """
14 )
15
16
17@task
18def transform_daily(block_name: str) -> None:
19 with SnowflakeConnector.load(block_name) as connector:
20 connector.execute(
21 """
22 INSERT INTO analytics.daily_events
23 SELECT event_date, event_type, COUNT(*) AS count
24 FROM raw.events
25 WHERE event_date = CURRENT_DATE
26 GROUP BY 1, 2
27 """
28 )
29
30
31@flow(name="snowflake-daily-etl")
32def snowflake_daily_etl(block_name: str = "prod-warehouse") -> None:
33 load_raw_events(block_name)
34 transform_daily(block_name)
35
36
37if __name__ == "__main__":
38 snowflake_daily_etl()
From data to AI

From raw data to production AI, on one governed path

Prefect’s orchestration plus Snowflake’s AI Data Cloud and Snowflake Intelligence give teams a single, governed path from data ingestion to production AI and agentic workflows.

  • Snowflake stores and governs structured, semi-structured, and AI data under your existing policies.
  • Prefect orchestrates data movement, external tools, and AI agent workflows across the rest of your stack.
  • Agents reach internal APIs, SaaS tools, and databases while treating Snowflake as a first-class governed resource.

Agents, beyond Snowflake

Agents that reach Snowflake and beyond

Snowflake Intelligence gives agents a governed window into your data. Prefect’s open-source MCP framework and enterprise platform let those same agents reach the internal APIs, SaaS tools, and databases that run the rest of the business.

Run more on Snowflake, reliably

Bring Python-native orchestration to your Snowflake AI Data Cloud and everything connected to it.