Snowflake Action Block
What it does: Runs SQL against your Snowflake data warehouse through the Snowflake SQL REST API v2 and returns the rows as ready-to-use JSON objects.
❄️
In simple terms: Point the block at a warehouse, write a SELECT, and get back an array of row objects keyed by column name — feed them into an LLM, a report, an email, or a Google Sheet.
Credentials
Snowflake connections use key-pair (JWT) authentication — no password is stored. Follow the Snowflake key-pair auth guide (opens in a new tab), then assign the public key with ALTER USER <user> SET RSA_PUBLIC_KEY='...'.
| Field | Required | Description |
|---|---|---|
| Account Identifier | Yes | e.g. xy12345.eu-central-1. A pasted https://…snowflakecomputing.com URL is stripped automatically. |
| User | Yes | The Snowflake user the RSA public key is registered on. |
| Private Key (PEM) | Yes | The matching RSA private key, including the -----BEGIN PRIVATE KEY----- lines. |
| Private Key Passphrase | No | Only if the private key is encrypted. |
| Default Warehouse / Database / Schema / Role | No | Used whenever the block leaves the matching field empty. |
Actions
| Action | What it does | Output |
|---|---|---|
| Run Query | Executes a SQL statement, optionally with bindings; polls automatically if Snowflake replies asynchronously | rows, rowCount, statementHandle, raw |
| Get Statement Status | Fetches an in-flight or finished statement by its handle | isRunning, rows, rowCount, raw |
| Cancel Statement | Cancels a running statement | cancelled, statementHandle |
| List Databases | Runs SHOW DATABASES | rows |
| List Schemas | Runs SHOW SCHEMAS IN DATABASE <db> | rows |
| List Tables | Runs SHOW TABLES IN SCHEMA <db>.<schema> | rows |
| Describe Table | Runs DESCRIBE TABLE <db>.<schema>.<table> | rows |
Tips
- Bindings keep queries safe. Write
WHERE created_at > ?and pass either the Snowflake format{"1":{"type":"TEXT","value":"2026-01-01"}}or a plain array["2026-01-01", 10]— arrays are converted for you. - Rows are flattened from Snowflake's positional arrays into objects keyed by column name, so
{{snowflake.rows[0].EMAIL}}just works. The untouched API response is still available underraw. - Async Mode =
truereturns thestatementHandleright away. Pair it with a Wait block and Get Statement Status for very long queries. - Timeout sets the server-side statement timeout and also caps how long the block polls a 202 (asynchronous) response.
- Identifiers used by the metadata actions accept only letters, digits,
_and$(plus dots for qualified table names) — anything else is rejected before it reaches Snowflake. - Use Max Rows to keep large result sets from bloating the workflow context before passing them to an LLM.