Skip to main content
There are two ways to bring Snowflake into oleander. A connection attaches your Snowflake account so its tables are queryable from the lake. Snowflake Horizon registers Snowflake’s Iceberg catalog so your Iceberg tables are available to every engine, including Spark and Polars. Both are managed in Settings → Lake.

Connection

Authentication uses key-pair signing. No passwords are stored.

Setup

  1. Open Settings → Lake and find Snowflake connections.
  2. Fill in the required fields:
  1. Optionally set a default warehouse, database, and role to scope queries.

Generating a key pair

Paste the contents of snowflake_key.pem into the Private key field. The key is stored encrypted.

Querying

Tables are reachable as connection_name.schema.table:
A Snowflake connection table selects DuckDB. DuckDB is the only engine that attaches external connections, so the query router routes any query naming a connection table here before it considers input size - leave engine on auto. Asking for Bloom, Polars, or Spark on one of these queries returns an engine capability error rather than rerouting silently.A Horizon catalog is different: it is a real Iceberg catalog, so DuckDB and Spark can both read it.

Snowflake Horizon

Snowflake Horizon is Snowflake’s built-in Iceberg catalog, powered by Polaris. Registering it gives you full Iceberg REST catalog access against your Snowflake-managed Iceberg tables - DuckDB queries, Polars workloads, and Spark jobs alike. Unlike a connection, a Horizon catalog is a real Iceberg catalog, so it is not limited to DuckDB.

Setup

  1. Open Settings → Lake and find External catalogs.
  2. Select Snowflake Horizon as the catalog type.
  3. Fill in the required fields:
  1. Choose an authentication method:
Generate a PAT in Snowflake and paste it into the Secret field. This is the simplest option.

Querying

Once registered, the catalog is available under its name everywhere:
Credential vending is handled automatically via the Iceberg REST protocol. No S3 or GCS credentials need to be configured manually.
A catalog other than oleander routes to DuckDB or Spark - Bloom mounts only oleander. See Catalogs for how registered catalogs behave across the platform.