Skip to main content
ClickHouse can connect to Snowflake Horizon Catalog through the Iceberg REST API that Horizon exposes (powered by Apache Polaris). This lets you read and write Snowflake-managed Iceberg tables from ClickHouse using the DataLakeCatalog database engine with catalog_type = 'horizon'. Horizon is related to, but not the same as, Snowflake Open Catalog / self-hosted Polaris:
As this feature is beta, enable it with: SET allow_experimental_database_iceberg = 1; (or SET allow_database_iceberg = 1; depending on your ClickHouse version).

Prerequisites

  • A Snowflake account with Snowflake-managed Iceberg tables
  • Horizon Iceberg REST endpoint: https://<organization>-<account>.snowflakecomputing.com/polaris/api/catalog
  • A Snowflake role with privileges on the Iceberg tables (and write privileges if you will INSERT)
  • Authentication via one of:
    • Programmatic Access Token (PAT)
    • Key-pair JWT exchanged for an access token
    • External OAuth access token (as bearer auth_header)
  • Object storage reachable from ClickHouse (vended credentials are recommended)
  • ClickHouse with DataLakeCatalog Iceberg support

Creating a connection

warehouse must be the Snowflake database name (not a Snowflake virtual warehouse). Unquoted Snowflake identifiers are uppercase.

Option B: Pre-exchanged bearer access token

Query Iceberg tables

Namespace (schema) and table are typically addressed as `SCHEMA.table` unless experimental table namespaces are enabled.

Write path

With a role that has INSERT/UPDATE/DELETE (and CREATE ICEBERG TABLE when creating tables), ClickHouse can write through the same catalog:
Exact CREATE TABLE syntax follows ClickHouse Iceberg / DataLakeCatalog write support for REST catalogs on your version; privilege failures from Snowflake surface as catalog HTTP errors.

Loading into MergeTree

Last modified on August 13, 2026