> ## 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.

# Catálogo Polaris

> Neste guia, vamos mostrar as etapas para consultar seus dados usando ClickHouse e o catálogo Polaris da Snowflake.

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>Beta</span>
            </a>;
  }
  return <div className="betaBadge">
            <Icon />
            <span>
                Funcionalidade Beta. 
                <u>
                    <a href="/docs/docs/beta-and-experimental-features#beta-features">
                        Saiba mais.
                    </a>
                </u>
            </span>
        </div>;
};

<BetaBadge />

O ClickHouse oferece suporte à integração com vários catálogos (Unity, Glue, Polaris,
etc.). Neste guia, mostraremos as etapas para consultar seus dados
usando o ClickHouse e o [Apache catálogo Polaris](https://polaris.apache.org/releases/1.1.0/getting-started/using-polaris/#setup).
O Apache Polaris oferece suporte a tabelas Iceberg e Delta Tables (por meio de Generic Tables). No momento, esta integração oferece suporte apenas a tabelas Iceberg.

<Note>
  Como este recurso é experimental, você precisará ativá-lo usando:
  `SET allow_experimental_database_unity_catalog = 1;`
</Note>

<div id="prerequisites">
  ## Pré-requisitos
</div>

Para se conectar ao catálogo Polaris, você precisará de:

* Snowflake Open Catalog (Polaris hospedado) ou catálogo Polaris self-hosted
* O URI do seu catálogo Polaris (por exemplo, `https://<account-id>.<region>.aws.snowflakecomputing.com/polaris/api/catalog/v1` ou `http://polaris:8181/api/catalog/v1/oauth/tokens`)
* Credenciais do catálogo (ID do cliente e segredo do cliente)
* O URI dos tokens OAuth da sua instância do Polaris
* Endpoint de armazenamento do armazenamento de objetos onde seus dados Iceberg estão (por exemplo, S3)
* ClickHouse versão 26.1+

Para o Open Catalog, a oferta gerenciada Polaris da Snowflake, seu URI incluirá `/polaris`, enquanto na versão self-hosted isso pode não ocorrer.

<Steps>
  <Step title="Criando uma conexão entre Polaris e ClickHouse" id="connecting">
    Crie um banco de dados que conecte o ClickHouse ao seu catálogo 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="Consulte o catálogo Polaris usando o ClickHouse" id="query-polaris-catalog">
    Depois que a conexão estiver estabelecida, você poderá consultar o Polaris:

    ```sql title="Consulta" theme={null}
    USE polaris_catalog;
    SHOW TABLES;
    ```

    Para consultar uma tabela:

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

    <Note>
      Os backticks são obrigatórios, por exemplo, `schema.table`.
    </Note>

    Para inspecionar o DDL da tabela:

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

  <Step title="Carregando dados do Polaris para o ClickHouse" id="loading-data-into-clickhouse">
    Para carregar dados do Polaris em uma tabela do ClickHouse, crie a tabela de destino com o schema desejado e depois faça a inserção a partir da tabela do Polaris:

    ```sql title="Consulta" theme={null}
    CREATE TABLE my_clickhouse_table
    (
        -- defina as colunas para corresponder à sua tabela 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>
