Skip to main content

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​

ParameterTypeRequiredDefaultDescription
AppApp❌—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.
AuthenticationCredential / 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❌snowflakeResultContext key for the result.
Stop the workflow on failureBoolean❌trueWorkflow 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_COUNT is greater than 1, 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)

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
Secrets and binds

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):

CaseStructure
A single instruction{ rows, queryId }
Several instructionsArray of { rows, queryId }
  • rows: rows returned by the query
  • queryId: 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_COUNT is greater than 1, the binds are not supported (Snowflake multi-statement behavior).

Example​

Query data and use it in the rest of the workflow:

  1. A trigger starts the workflow.
  2. The Snowflake node executes the SQL query configured in the Query tab.
  3. The result is available via {{snowflakeResult.rows}} — for example a ForEach loop iterates over rows, or a Send an email node uses {{snowflakeResult.rows[0].order_id}}.

See also​