Authors
Martin-Pierre Roset
Snowflake is a leading cloud data platform that delivers scalable, real-time data solutions. Its Snowpipe feature automatically loads files into Snowflake from cloud storage. Though powerful, this is just the beginning. As data architectures become more complex, Snowpipe’s limitations emerge, leading teams to seek orchestration solutions.
This post explores Snowpipe’s limitations and highlights how Kestra helps you gain control, cut costs, and simplify your data operations.
Snowpipe efficiently handles automatic data ingestion into Snowflake. However, its scope ends at ingestion—it lacks tools for managing end-to-end workflows or system integration. Users typically need additional solutions for transformations, validations, and downstream processes.
While Snowpipe works well for simple ingestion tasks, it creates bottlenecks when your data ecosystem needs transformations, validations, or multi-platform integrations.
Kestra fills Snowpipe’s gaps with a robust platform for orchestrating end-to-end workflows. It enables you to design comprehensive workflows—from data transformation to analytics—all through an intuitive interface.
Kestra turns static ingestion processes into dynamic, event-driven pipelines with features like:
Kestra lets you combine data ingestion, transformation, and validation in a single workflow, eliminating the need for multiple tools.
yamlid: snowflake_pipelinenamespace: company.data
tasks: - id: ingest_data type: io.kestra.plugin.jdbc.snowflake.Upload stageName: my_stage prefix: raw_files fileName: data.csv
- id: transform_data type: io.kestra.plugin.jdbc.snowflake.Query sql: | INSERT INTO transformed_data SELECT * FROM raw_data WHERE valid = true;
- id: validate_data type: io.kestra.plugin.core.script.Script script: | echo "Validated records count: {{ outputs.transform_data.count }}"This unified pipeline setup saves time and reduces error potential.
When your sales team needs instant insights from new Snowflake data, Kestra enables you to:
yamlid: sales_insightsnamespace: marketing.analytics
triggers: - type: io.kestra.plugin.jdbc.snowflake.trigger sql: SELECT MAX(updated_at) FROM sales_data;
tasks: - id: calculate_metrics type: io.kestra.plugin.jdbc.snowflake.Query sql: | SELECT campaign_id, SUM(revenue) AS total_revenue FROM sales_data GROUP BY campaign_id;
- id: publish_dashboard type: io.kestra.plugin.core.http.Request url: "https://dashboard.company.com/api/update" method: POST body: "{{ outputs.calculate_metrics }}"This automated workflow eliminates manual reporting steps.
Kestra replaces ad hoc scripts with built-in tasks for conditional file processing, dynamic renaming, and archiving.
yamlid: manage_filesnamespace: company.data
tasks: - id: download_files type: io.kestra.plugin.jdbc.snowflake.Download stageName: raw_stage fileName: raw_data.csv
- id: archive_files type: io.kestra.plugin.core.file.Move from: "{{ outputs.download_files.uri }}" to: "archive/raw_data_{{ execution.time }}"This workflow ensures organized, automated file management.
Kestra integrates Git and dbt to orchestrate version-controlled data transformations, enhancing team collaboration and consistency.
yamlid: dbt_snowflakenamespace: company.team
tasks: - id: git type: io.kestra.plugin.core.flow.WorkingDirectory tasks: - id: clone_repository type: io.kestra.plugin.git.Clone url: https://github.com/kestra-io/dbt-example branch: main
- id: dbt type: io.kestra.plugin.dbt.cli.DbtCLI docker: image: ghcr.io/kestra-io/dbt-snowflake:latest profiles: | my_dbt_project: outputs: dev: type: snowflake account: "{{ secret('SNOWFLAKE_ACCOUNT') }}" user: "{{ secret('SNOWFLAKE_USER') }}" password: "{{ secret('SNOWFLAKE_PASSWORD') }}" role: "{{ secret('SNOWFLAKE_ROLE') }}" database: "{{ secret('SNOWFLAKE_DATABASE') }}" warehouse: COMPUTE_WH schema: public threads: 4 query_tag: dbt commands: - dbt deps - dbt buildThis setup automates everything from repository cloning to dbt command execution.
Kestra expands Snowflake’s possibilities by offering:
Snowpipe remains a valuable tool for lightweight ingestion scenarios, but its scope is limited. For data teams managing complex workflows, Kestra provides the orchestration capabilities to scale, optimize, and simplify operations.
With Kestra, you move beyond basic ingestion to build dynamic, event-driven workflows that integrate with Snowflake. Whether it’s handling complex transformations, responding to real-time events, or managing downstream processes, Kestra ensures your data pipelines are both powerful and future-proof.
If you have any questions, reach out via Slack or open a GitHub issue.
If you like the project, give us a GitHub star and join the community.
Stay up to date with the latest features and changes to Kestra