Snowflake node
The Snowflake node (type DATABASE_SNOWFLAKE) executes SQL queries on a Snowflake warehouse directly from a workflow. It is used to query or feed Snowflake tables (SELECT, INSERT, UPDATE, DELETE, etc.), to enrich the context with analytical data before a business processing, and to integrate the data warehouse without going through an intermediate API.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| App | App | ❌ | — | Application associated with the node. See Apps. |
SQL query (query) | String | ✅ | — | SQL query with Handlebars templating. Dedicated Snowflake editor. |
Binds (binds) | List (jsonpath) | ❌ | — | Values bound to the query, evaluated from the context (jsonpath / expressions). |
Account (account) | String | ✅ | — | Snowflake account identifier. |
| Authentication | Credential / Private key | ✅ | — | Private key (username + private key + optional passphrase) or Ecosystem credential (PRIVATE_KEY, OAUTH2, CUSTOM). |
Snowflake parameters (parameters) | Key-value | ❌ | — | Parameters passed to Snowflake (e.g. MULTI_STATEMENT_COUNT for several instructions). |
Asynchronous execution (asyncExec) | Boolean | ❌ | — | If enabled, the query is submitted without waiting for the result rows. |
Output key (outputKey) | String | ❌ | snowflakeResult | Context key for the result. |
| Stop the workflow on failure | Boolean | ❌ | true | Workflow stop in case of SQL or connection error. |
Query tab
- Enter the SQL query in the editor (Snowflake syntax highlighting).
- Add binds in the order of appearance in the query.
- If
MULTI_STATEMENT_COUNTis greater than1, the binds are not supported (Snowflake multi-statement behavior).
Authentication tab
Two modes:
Private key (PRIVATE_KEY)
- Account: Snowflake account identifier
- Username: Snowflake user
- Private key: private key (PEM)
- Passphrase: optional if the key is encrypted
Credential (CREDENTIALS)
- Account + selection of a compatible authentication method (
PRIVATE_KEY,OAUTH2,CUSTOM)
Parameters tab
- outputKey: name of the output variable in the context
- asyncExec: asynchronous submission (without immediate retrieval of the rows)
- parameters: Snowflake key-value pairs (e.g.
MULTI_STATEMENT_COUNT=2) - Stop the workflow execution on failure: behavior in case of error
Store the private keys and passphrases in dictionaries (masked values). Prefer binds to concatenations in the SQL, and enable asyncExec only if the next node does not need the rows immediately.
Input
The node receives the workflow context values via binds (jsonpath / expressions), evaluated at execution in the order of appearance in the query. The dynamic values are also injected via Handlebars templating in the SQL query.
Output
The result is stored in context.<outputKey> (default snowflakeResult):
| Case | Structure |
|---|---|
| A single instruction | { rows, queryId } |
| Several instructions | Array of { rows, queryId } |
rows: rows returned by the queryqueryId: Snowflake identifier of the execution (useful for support and debugging)
Example of result for outputKey: "snowflakeResult" (a single instruction):
{
"snowflakeResult": {
"rows": [
{ "order_id": 1001, "total": 249.9, "status": "PAID" },
{ "order_id": 1002, "total": 89.5, "status": "PAID" }
],
"queryId": "0192a3b4-5c6d-7e8f-9a0b-1c2d3e4f5a6b"
}
}
The result is consumable in the following nodes via {{snowflakeResult.rows}}, {{snowflakeResult.queryId}}, or {{snowflakeResult.rows[0].order_id}} — for example in a Send an email node or a ForEach loop that iterates over rows.
Errors
In case of SQL or connection error, the node fails and stops the workflow execution (option Stop the workflow on failure, default true). To handle the failure cleanly, add an On Error node to the workflow.
See also: Best practices — Error management.
Limits
- If
MULTI_STATEMENT_COUNTis greater than1, the binds are not supported (Snowflake multi-statement behavior).
Example
Query data and use it in the rest of the workflow:
- A trigger starts the workflow.
- The Snowflake node executes the SQL query configured in the Query tab.
- The result is available via
{{snowflakeResult.rows}}— for example a ForEach loop iterates overrows, or a Send an email node uses{{snowflakeResult.rows[0].order_id}}.