New to Kestra?
Use blueprints to kickstart your first workflows.
A green-on-first-run ELT example. Download a public CSV, rank products in embedded DuckDB, log the results, then swap in Snowflake, Postgres, BigQuery, or Redshift.
A getting started ELT pipeline that runs successfully on the very first execution with zero secrets. It downloads a public orders CSV, aggregates it in in-process DuckDB, and logs the top products by revenue. Once you have seen it run green, commented connector blocks let you point the same pipeline at your own warehouse (Snowflake, Postgres, BigQuery, or Redshift) and add a Slack alert. It is the fastest way to see the Extract, Load, Transform pattern working end to end in Kestra before wiring in real credentials.
extract task (io.kestra.plugin.core.http.Download) fetches a public sample orders.csv from the Kestra datasets repository. No authentication is required.transform task (io.kestra.plugin.jdbc.duckdb.Query) loads that CSV into embedded DuckDB via inputFiles and runs a GROUP BY product_id aggregation, ranking products by revenue with fetchType: FETCH. communityExtensions: [] skips a version-mismatched bundled extension so the query runs cleanly.report task (io.kestra.plugin.core.log.Log) logs the processed row count and the top seller so the first run shows a real, human-readable result.notify task posts a Slack summary once you enable it.A one-off script can download a CSV and run SQL, but it cannot version the pipeline, retry a failed load, track execution lineage, or swap the compute engine without a rewrite. Kestra models the whole flow as declarative YAML: the same report step reads outputs.transform no matter which warehouse produces it, so moving from DuckDB to Snowflake is a single task swap. You also get scheduling, event triggers, full logs, and replay out of the box.
The default green path uses no secrets. Optional steps use:
SLACK_WEBHOOK: Slack incoming webhook URL for the notify task.SNOWFLAKE_PASSWORD / POSTGRES_PASSWORD / REDSHIFT_PASSWORD / BQ_SERVICE_ACCOUNT: credentials for whichever warehouse connector you enable.transform task (keep id: transform so report still works).disabled: true from notify and from a trigger to alert and automate.report.