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
| Engine | Reads | How |
|---|---|---|
| Amazon Redshift | Partial | Lake Formation catalog federation only |
| Apache Spark | Yes | type=rest with a Snowflake token |
| ClickHouse | Yes | DataLakeCatalog with catalog_type horizon |
| DuckDB | Yes | ATTACH to the Horizon REST endpoint with a Snowflake token |
| Snowflake | Yes | native: tables are Snowflake-managed Iceberg tables |
| Trino | Yes | REST 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
- Postgres to Snowflake
- MySQL to Snowflake
- MongoDB to Snowflake
- Oracle to Snowflake
- SQL Server to Snowflake
- DB2 to Snowflake
- MariaDB to Snowflake
- Kafka to Snowflake
- S3 to Snowflake
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.