> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Polaris カタログ

> このガイドでは、ClickHouse と Snowflake Polaris カタログを使用して データに対してクエリを実行する手順を説明します。

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <Icon />
                <span>ベータ</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                ベータ機能です。 
                <u>
                    <a href="/docs/docs/beta-and-experimental-features#beta-features">
                        詳しくはこちら。
                    </a>
                </u>
            </span>
        </div>;
};

<BetaBadge />

ClickHouse は複数のカタログ (Unity、Glue、Polaris など) とのインテグレーションをサポートしています。このガイドでは、ClickHouse と [Apache Polaris Catalog](https://polaris.apache.org/releases/1.1.0/getting-started/using-polaris/#setup) を使用してデータをクエリする手順を説明します。
Apache Polaris は Iceberg テーブルと Delta Tables (Generic Tables 経由) をサポートしていますが、現時点でこのインテグレーションでサポートされているのは Iceberg テーブルのみです。

<Note>
  この機能は実験的なため、次を使用して有効にする必要があります。
  `SET allow_experimental_database_unity_catalog = 1;`
</Note>

<div id="prerequisites">
  ## 前提条件
</div>

Polaris カタログに接続するには、次のものが必要です。

* Snowflake Open Catalog (ホスト型の Polaris) またはセルフホストの Polaris カタログ
* Polaris カタログの URI (例: `https://<account-id>.<region>.aws.snowflakecomputing.com/polaris/api/catalog/v1` または `http://polaris:8181/api/catalog/v1/oauth/tokens`)
* カタログの認証情報 (client ID と client secret)
* Polaris インスタンスの OAuth トークン URI
* Iceberg データが保存されているオブジェクトストアのストレージエンドポイント (例: S3)
* ClickHouse 26.1 以降

Snowflake のマネージド Polaris である Open Catalog では、URI に `/polaris` が含まれます。一方、セルフホストの場合は含まれないことがあります。

<Steps>
  <Step title="Polaris と ClickHouse の接続を作成する" id="connecting">
    ClickHouse を Polaris カタログに接続するデータベースを作成します。

    ```sql theme={null}
    CREATE DATABASE polaris_catalog
    ENGINE = DataLakeCatalog('https://<catalog_uri>/api/catalog/v1')
    SETTINGS
        catalog_type = 'rest',
        catalog_credential = '<client-id>:<client-secret>',
        warehouse = 'snowflake',
        auth_scope = 'PRINCIPAL_ROLE:ALL',
        oauth_server_uri = 'https://<catalog_uri>/api/catalog/v1/oauth/tokens',
        storage_endpoint = '<storage_endpoint>'
    ```
  </Step>

  <Step title="ClickHouse を使って Polaris カタログをクエリする" id="query-polaris-catalog">
    接続が確立されたら、Polaris に対してクエリを実行できます。

    ```sql title="クエリ" theme={null}
    USE polaris_catalog;
    SHOW TABLES;
    ```

    テーブルをクエリするには、次を実行します。

    ```sql title="クエリ" theme={null}
    SELECT count(*) FROM `polaris_db.my_iceberg_table`;
    ```

    <Note>
      たとえば `schema.table` のように、バッククォートが必要です。
    </Note>

    テーブルの DDL を確認するには、次を実行します。

    ```sql theme={null}
    SHOW CREATE TABLE `polaris_db.my_iceberg_table`;
    ```
  </Step>

  <Step title="Polaris から ClickHouse にデータを読み込む" id="loading-data-into-clickhouse">
    Polaris から ClickHouse のテーブルにデータを読み込むには、まず必要なスキーマでターゲットテーブルを作成し、その後 Polaris のテーブルから INSERT します。

    ```sql title="クエリ" theme={null}
    CREATE TABLE my_clickhouse_table
    (
        -- Iceberg テーブルに合わせてカラムを定義
        `id` Int64,
        `name` String,
        `event_time` DateTime64(3)
    )
    ENGINE = MergeTree
    ORDER BY id;

    INSERT INTO my_clickhouse_table
    SELECT * FROM polaris_catalog.`polaris_db.my_iceberg_table`;
    ```
  </Step>
</Steps>
