Query Snowflake Horizon Tables on the Right Compute

WL

Willy Lulciuc

staff
Tags
snowflakehorizonicebergquery-routingduckdbsparklake

Snowflake Horizon Catalog makes Snowflake-managed Iceberg tables available to external compute via the Iceberg REST API. This API allows engines outside of Snowflake to query those Iceberg tables.

Today, we're excited to announce Snowflake Horizon Catalog is now supported in oleander. Connect your catalog and run each workload on the right compute, without managing the infrastructure yourself.

SnowflakeApache Iceberg
  • Bring Horizon: Connect your existing catalog.
  • Query without a copy: Run against your existing Iceberg tables.
  • Automatically optimized compute: oleander intelligently routes each workload to the right engine and compute size.
  • Traceable by default: Lineage, cost, performance, and routing decisions on every run.

Keep your data in Snowflake Horizon. oleander handles the compute. 🌸

Register Your Horizon Catalog

Add a Horizon catalog under Settings → Lake:

  1. Catalog URI: Your Horizon Iceberg REST endpoint (for example, https://<account>.snowflakecomputing.com/polaris/api/catalog).
  2. Database, role, and region: Match the Horizon catalog database and session role.
  3. Auth: Personal access token (PAT), or key-pair with username and private key.
  4. Name: For example, snowflake_horizon_prod. Tables show up as snowflake_horizon_prod.<namespace>.<table>.

Once connected, namespaces and tables appear in the Lake sidebar catalog view.

Query Horizon Tables with Intelligent Compute Routing

Query Horizon tables directly using their catalog.<namespace>.<table> path. Not every query needs to run on Snowflake. Different workloads benefit from different compute. With engine: 'auto', oleander intelligently routes each query to the right engine and compute size, then surfaces the decision, cost, and latency with the result.

Snowflake Horizon
Iceberg REST
oleander

Intelligent compute routing

Query · Data · Cost · Latency · History

Serverless compute
DuckDB
Bloom
Polars
Spark
Keep your catalog in Snowflake. oleander chooses the compute.

Let oleander select the right compute, or override the engine when you need to.

Auto

bash
oleander query run "
SELECT
COUNT(*) AS events
FROM snowflake_horizon_prod.analytics.events
WHERE event_time >= CURRENT_DATE - INTERVAL '7' DAY
" --engine auto

Or, override

bash
oleander query run "
SELECT COUNT(*) FROM snowflake_horizon_prod.analytics.events
" --engine duckdb