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 choose Add connection → Snowflake.
  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. Bloom doesn’t federate Snowflake, so the query router sends these queries to DuckDB - leave engine on auto.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. Provide a key pair under KeyPair Authentication:
The same key pair used for a Snowflake connection can be reused here.

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.
Bloom reads S3 Tables catalogs and Horizon catalogs registered with key-pair authentication; other catalogs route to DuckDB or Spark. See Catalogs for how registered catalogs behave across the platform.