Snowflake Basic Usage

View as Markdown

The Snowflake adapter is built on the official snowflake-connector-python driver, so everything the connector can do, the adapter can do: every authenticator, connections.toml, session parameters, proxies, and Arrow result sets.

Installation

You must install the harlequin-snowflake package into the same environment as harlequin. The best and easiest way to do this is to use uv:

uv tool install harlequin --with harlequin-snowflake

To add the adapter to an existing Harlequin installation:

uv tool install --upgrade harlequin --with harlequin-snowflake

Harlequin finds the adapter through its harlequin.adapter entry point; there is nothing else to configure.

Using Harlequin with Snowflake

To connect to Snowflake, run Harlequin with the -a snowflake option:

harlequin -a snowflake 

There are three ways to say which account to connect to, and they can be mixed; an option always overrides what the connection string said.

A connections.toml Entry, by Name

This is the recommended way, and it uses the same file that the Snowflake CLI and every other Snowflake tool reads. Put this in ~/.snowflake/connections.toml:

[my_account]
account = "myorg-myaccount"
user = "me@example.com"
authenticator = "externalbrowser"
warehouse = "COMPUTE_WH"
role = "ANALYST"
database = "ANALYTICS"
schema = "PUBLIC"

then:

harlequin -a snowflake my_account

A connection string with no :// in it names an entry this way. The --connection-name option does the same thing, and --connections-file-path points at a file somewhere other than ~/.snowflake/connections.toml.

The Default Connection

With no connection string and no account options, the adapter uses the connector’s own default connection — the entry named by default_connection_name in config.toml, or by the SNOWFLAKE_DEFAULT_CONNECTION_NAME environment variable:

harlequin -a snowflake

A Connection String

Connection strings are spelled the way snowflake-sqlalchemy spells them:

harlequin -a snowflake "snowflake://me:my-password@myorg-myaccount/ANALYTICS/PUBLIC?warehouse=COMPUTE_WH&role=ANALYST"

The path is /database/schema, and any connector parameter can go in the query string.

Connection Options

Every connection parameter is also a CLI option, which Harlequin will also read from HARLEQUIN_* environment variables:

harlequin -a snowflake --account myorg-myaccount --user me --warehouse COMPUTE_WH

For descriptions of each option, run:

harlequin --help

Using a Profile

Anything you would pass at the command line can live in a profile instead, in ~/.config/harlequin/config.toml or in a .harlequin.toml beside the project you are working in. With a default_profile, harlequin on its own is the whole command:

default_profile = "dev"

[profiles.dev]
adapter = "snowflake"
theme = "harlequin"
keymap_name = ["vscode"]
viewer_max_rows = 100_000

account = "myorg-myaccount"
user = "me@example.com"
role = "ANALYST"
warehouse = "COMPUTE_WH"
database = "ANALYTICS"
schema = "PUBLIC"

# key-pair auth; private_key_file selects it on its own
private_key_file = "~/.snowflake/rsa_key.p8"
private_key_file_pwd = "..."

[profiles.sso]
adapter = "snowflake"
account = "myorg-myaccount"
user = "me@example.com"
authenticator = "externalbrowser"
client_store_temporary_credential = true
warehouse = "COMPUTE_WH"
harlequin              # the default profile
harlequin -P sso       # a named one

Interactions

Right-click (or press .) on an item in the Data Catalog to run an interaction against it:

  • Database — Use Database, List Objects, Show DDL, Show Grants, Drop Database
  • Schema — Use Schema, List Objects, Show DDL, Show Grants, Drop Schema
  • Relation — Insert Columns at Cursor, Preview Data, Describe Relation, Show Grants, plus per-kind items: Sample Data, Count Rows, Show DDL, Show View Definition, Show Refresh History (dynamic tables), and the matching Drop
  • Column — Show Value Counts