In private development
Planned, with no date. Nothing on this page is released; the Snowflake connector is built and tested only against simulated Snowflake services and has not run on a real account.
Snowflake
Emolysis for Snowflake.
Snowflake comes after Databricks. On Snowflake, Emolysis writes pipelines for streams, tasks and dynamic tables, follows Snowflake's identifier rules and tests every change on your machine first.
Planned
Connect
Key pair or programmatic access token
Sample
The Snowflake connector, or a Parquet unload
Prove
Golden tests on DuckDB
Deploy
Tables, streams, tasks and dynamic tables
Overview
What it does on Snowflake.
Snowflake comes after Databricks, and there is no date yet. The profile below is drafted; the connector is built and tested only against simulated Snowflake services; it has not run on a real account.
Connecting an account loads a Snowflake profile: Snowflake SQL and Snowpark, native and Iceberg tables, MERGE fed by streams, tasks and dynamic tables, and the traps that catch people, such as unquoted identifiers folding to uppercase.
Templates for the ten pipeline shapes are written for Snowflake and tested on DuckDB on your machine, then translated into Snowflake SQL at deploy time. A green run deploys as SQL that creates or alters what the pipeline needs, run under your role on your warehouse.
If you run Snowflake, the local parts work the same way: golden tests on DuckDB do not need a platform. Snowflake support is announced on the news page, together with the shapes whose templates pass their tests there.
Platform profile
What the profile captures.
Drafted, not yet checked on a real account: what Emolysis loads when you connect a Snowflake account, so the agent writes code the way Snowflake expects.
- Dialects
- Snowflake SQL and Snowpark
- Table format
- Native Snowflake tables or Iceberg tables
- Merge idiom
- MERGE fed by streams, and dynamic tables
- Incremental tools
- Streams and tasks, and dynamic tables
- Deployment unit
- SQL scripts applied with the Snowflake CLI, or Terraform if your team uses it
- Compute
- Virtual warehouses and Snowpark Container Services
- Sign-in
- Key-pair authentication or a programmatic access token
- Known traps
- Unquoted identifiers fold to uppercase, and warehouse auto-suspend affects schedules and cost
- Sampling
- The Snowflake connector, or COPY INTO a stage as Parquet
Connect
Connecting an account.
How connecting Snowflake works, step by step. The connector has run only against simulated Snowflake services.
Choose Snowflake
Sign in to Emolysis, then choose Snowflake in the app. From a terminal, the command is emo connect snowflake.
Authorize
Authorize with a key pair or a programmatic access token. The credentials are kept in your machine's credential store and never sent to Emolysis.
Pick where deploys run
Emolysis lists the warehouses, databases and schemas your role can reach, and you pick where deploys run.
Sample on request
When you ask for a sample, Emolysis reads a small slice of a table with the Snowflake connector, or as a Parquet unload from a stage, into DuckDB on your machine. That query runs on your platform; the tests that follow do not.
emo connect snowflakeDeploy
Deploys as Snowflake SQL.
A green run deploys as SQL that creates or alters the tables, streams, tasks and dynamic tables the pipeline needs, run under your role on your warehouse.
Native objects
Streams and tasks for change-driven work, dynamic tables with a target lag for derived tables, and MERGE where the shape needs it.
Identifier rules built in
Unquoted identifiers fold to uppercase in Snowflake. The profile records it, so naming rules and lint account for case.
Applied your way
SQL scripts applied with the Snowflake CLI, or Terraform if your team already manages Snowflake that way.
Cost in the review
Warehouse auto-suspend affects schedules and cost. Each template carries a cost note, and emo check adds an estimate.
Tagged for Snowflake
Every generated file carries its platform and profile version, so it is never deployed to another platform without an explicit translation step.
Your role, your warehouse
Deployed objects run under your role on your warehouse, with your account's permissions and no more.
Known traps
Traps the profile knows.
Four mistakes that are easy to make on Snowflake, and what the Snowflake profile is drafted to record about them.
Identifier case
Unquoted identifiers fold to uppercase, while quoted ones keep their case. Code that mixes the two can create columns that differ only by case. Naming rules and lint account for it.
Warehouse auto-suspend
Auto-suspend affects schedules and cost. Each template carries a cost note that says what drives its cost on Snowflake, and emo check adds an estimate.
Time Travel is not business history
Time Travel retention is separate from your business retention. The Snapshot template keeps dated snapshots instead of relying on it.
Outbound calls
Calling an application's API from a task needs your account's external network access to be set up first. The Reverse ETL platform notes call it out.
Shapes
Ten shapes on Snowflake.
Each shape has a template written for Snowflake, with fixtures and expected outputs. Their golden tests pass on DuckDB; none has run on a real Snowflake account.
- Ingest (batch)COPY INTO from a stage into a native or Iceberg table.
- Incremental appendStreams and tasks, or a dynamic table.
- CDC mergeMERGE fed by a stream, or a dynamic table.
- SCD Type 2MERGE fed by a stream on the staging table, run by a task.
- SnapshotINSERT OVERWRITE or dated inserts. Time Travel retention is separate from your business retention.
- BackfillDelete and insert per date range inside one transaction, with a warehouse size chosen for the run.
- Late-arrivingA stream on the fact table drives a task that recomputes the affected dates.
- Dedupe / conformQUALIFY with ROW_NUMBER. Unquoted identifiers fold to uppercase, so naming rules must account for case.
- Aggregation / goldDynamic tables with a target lag, or tables refreshed by tasks.
- Reverse ETLA task with a stream on the gold table. Outbound calls need your account's external network access set up.
All ten shapes, with their templates and golden tests, are on the pipeline shapes page.
Read next
Questions
Snowflake questions.
Answers about Snowflake and how it fits. More in the FAQ.
Is there a date for Snowflake support?
There is no date yet. Snowflake comes after Databricks. Its platform profile is drafted: the dialects, table formats, merge idioms, incremental tools, deployment units, sign-in methods and known traps the agent needs to know. The connector is built and tested only against simulated Snowflake services; it has not run on a real account. Support is announced on the news page, with the shapes whose templates pass their tests on Snowflake.
Can I use Emolysis with Snowflake today?
Not yet: nothing is released, and early access is by invitation. Connecting Snowflake, sampling from it and deploying to it are built and tested against simulated Snowflake services, not yet on a real account. Golden tests on DuckDB need no platform.
Why does identifier case matter on Snowflake?
Snowflake folds unquoted identifiers to uppercase, while quoted ones keep their case. Code that mixes the two can create columns that differ only by case, or fail to find a table it just created. The Snowflake profile records this trap, so the agent and the lint rules avoid it.
Does Emolysis use dynamic tables or streams and tasks?
Both, depending on the shape. A CDC merge can be MERGE fed by a stream, or a dynamic table. An Aggregation / gold table can be a dynamic table with a target lag, or a table refreshed by a task. The template for each shape records which it uses on Snowflake.
Can I move a pipeline from Databricks to Snowflake?
Not by accident. Every file Emolysis generates is tagged with its platform and profile version, so a Databricks pipeline cannot be deployed to Snowflake by mistake. Moving one is an explicit step: the SQL is translated into the target platform's dialect, that platform's template for the same shape is filled, and the golden tests run again on the target.
Nothing is released yet
Tell us what you run.
Snowflake comes after Databricks, with no date yet. Early access starts with Databricks teams. If you run Snowflake, tell us what you would need first.