Skip to main content

Snowflake Horizon Iceberg catalog with OLake Go

Snowflake Horizon Catalog takes writes from external engines over the Iceberg REST (representational state transfer) API. External writes became generally available on 2026-05-26.

Short answer. To write Iceberg tables to Horizon, create an OLake Go destination with catalog_type: horizon and one of four sign-in methods: a programmatic access token, a key-pair JWT (JSON Web Token), external OAuth, or workload identity federation. The tables become Snowflake-managed Iceberg tables. Spark, DuckDB, Trino and ClickHouse read them through the Horizon REST endpoint.

Key takeaways

  • OLake Go writes Snowflake-managed Iceberg tables through the Horizon Catalog Iceberg REST API.
  • Snowflake sees the tables with no extra registration, and Spark, DuckDB, Trino and ClickHouse read them over REST.
  • Nine guides ran end to end on Horizon, for example Postgres to Snowflake.

Last reviewed October 2026.

How OLake Go writes to Snowflake Horizon​

OLake Go uses change data capture (CDC) where the source has it. It commits Iceberg tables through Horizon. Snowflake sees them with no extra registration, and other engines read the same tables over REST.

The nine Snowflake guides ran end to end on Horizon. The REST catalog page holds the destination fields.

When to use it​

  • Snowflake is the main reader and the tables should appear there with no extra registration.
  • Spark, DuckDB or Trino should read the same tables.

When not to use it​

  • The job writes equality deletes. Snowflake does not read them.
  • Redshift is a reader. It reaches Horizon only through Lake Formation catalog federation.

What OLake Go needs

  • catalog_type: horizon
  • Authentication OLake Go offers: Programmatic access token (PAT), Key-pair JWT, External OAuth, Workload identity federation.
  • Full destination reference: Snowflake Horizon setup.

Engines that read Snowflake Horizon

EngineReadsHow
Amazon RedshiftPartialLake Formation catalog federation only
Apache SparkYestype=rest with a Snowflake token
ClickHouseYesDataLakeCatalog with catalog_type horizon
DuckDBYesATTACH to the Horizon REST endpoint with a Snowflake token
SnowflakeYesnative: tables are Snowflake-managed Iceberg tables
TrinoYesREST catalog

Each engine row comes from that engine's vendor documentation. The dated sources are on the engine's page, linked in the first column.

Guides that use Snowflake Horizon

Frequently asked questions​

How does OLake Go authenticate to Horizon?

With a programmatic access token, a key-pair JSON Web Token, external OAuth, or workload identity federation.

Which delete formats work with Horizon?

Snowflake reads positional deletes on v2 tables and deletion vectors on v3 tables, so OLake Go writes one of those when Snowflake is a target query engine.

Is there a tested guide on Horizon?

Yes. The nine Snowflake guides listed below ran on Horizon.