## TL;DR
Use Snowflake Tasks when the work is SQL-only and lives entirely inside Snowflake: they are serverless, need no infrastructure, and chain with AFTER clauses. Use an external scheduler like Airflow when the pipeline touches systems outside Snowflake, needs complex branching, or your team already standardizes on it. Mixing both without a clear rule creates two scheduling systems to debug at 3am.

## The query
```text
snowflake task vs external scheduler
```

## Use this when
- You are deciding where to schedule a recurring SQL pipeline in Snowflake
- Someone proposes moving Airflow DAGs into native Snowflake Tasks
- You want to cut orchestrator cost for simple, self-contained ELT

## Not for
- Pipelines with API calls, file moves, or ML training outside Snowflake
- Cross-cloud orchestration where Snowflake is one of several systems
- Teams without Snowflake expertise who already run Airflow reliably

## Steps

1. List every step of the pipeline and mark which ones are pure Snowflake SQL. If every step is SQL and the chain is linear, Tasks are a good fit. If any step calls an API, moves files, or needs Python, lean external.

Expected output: a step list where each step is tagged SQL-only or external. Mostly SQL-only means Tasks are viable.

2. Check scheduling needs. Tasks support cron schedules and AFTER dependencies between tasks, plus error integration. They do not do conditional branching, dynamic fan-out, or cross-account triggers. If your logic needs if/then branching, you need the external scheduler.

Expected output: a yes/no on branching and dynamic behavior. Branching required means external scheduler wins.

3. Compare cost and ops. Tasks run on serverless compute billed per second of execution plus a small overhead. An external scheduler means running Airflow workers or paying for a managed service, plus maintaining the Snowflake connection and secrets.

Expected output: a rough monthly cost for both, and a named owner for each system. No orphan schedulers.

4. Decide on one rule and write it down, e.g. "SQL-only chains under 10 steps live in Tasks; everything else in Airflow." Enforce the boundary in code review so the split does not drift.

Expected output: a one-paragraph scheduling policy the team actually follows.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_UQFvuSKsX22ei62c3SXkCQ
