> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> O mecanismo de banco de dados DataLakeCatalog permite conectar o ClickHouse a catálogos de dados externos e consultar dados em formatos abertos de tabela

# DataLakeCatalog

O mecanismo de banco de dados `DataLakeCatalog` permite conectar o ClickHouse a catálogos de dados externos
e consultar dados em formatos abertos de tabela sem a necessidade de duplicação de dados.
Isso transforma o ClickHouse em um poderoso motor de consulta que se integra perfeitamente
à sua infraestrutura de lago de dados existente.

## Catálogos compatíveis

O mecanismo `DataLakeCatalog` oferece suporte aos seguintes catálogos de dados:

* **AWS Glue Catalog** - Para tabelas Iceberg em ambientes AWS
* **Databricks Unity Catalog** - Para tabelas Delta Lake e Iceberg
* **Hive Metastore** - Catálogo tradicional do ecossistema Hadoop
* **REST Catalogs** - Qualquer catálogo compatível com a especificação REST do Iceberg

## Criando um banco de dados

Para usar o mecanismo `DataLakeCatalog`, você precisará habilitar as configurações relevantes abaixo:

```sql theme={null}
SET allow_database_iceberg = 1;
SET allow_database_unity_catalog = 1;
SET allow_database_glue_catalog = 1;
SET allow_experimental_database_hms_catalog = 1;
SET allow_experimental_database_paimon_rest_catalog = 1;
```

Bancos de dados com o mecanismo `DataLakeCatalog` podem ser criados usando a sintaxe a seguir:

```sql theme={null}
CREATE DATABASE database_name
ENGINE = DataLakeCatalog(catalog_endpoint[, user, password])
SETTINGS
catalog_type,
[...]
```

As configurações a seguir são suportadas:

| Configuração | Descrição |
| - | - |
| `catalog_type` | Tipo de catálogo: `glue`, `unity` (Delta), `rest` (Iceberg), `hive`, `onelake` (Iceberg), `delta_sharing` (Iceberg, espaços de nomes simples), `horizon` (Snowflake Horizon Iceberg REST) |
| `warehouse` | Nome do warehouse/banco de dados a ser usado no catálogo. |
| `catalog_credential` | Credencial de autenticação para o catálogo (por exemplo, chave de API ou token) |
| `auth_header` | Cabeçalho HTTP personalizado para autenticação com o serviço de catálogo |
| `auth_scope` | Escopo OAuth2 para autenticação (se estiver usando OAuth) |
| `storage_endpoint` | URL do endpoint para o armazenamento subjacente |
| `oauth_server_uri` | URI do servidor de autorização OAuth2 para autenticação |
| `vended_credentials` | Booleano que indica se devem ser usadas credenciais fornecidas pelo catálogo (compatível com AWS S3 e Azure ADLS Gen2) |
| `aws_access_key_id` | ID da chave de acesso da AWS para acesso ao S3/Glue (se não estiver usando credenciais fornecidas) |
| `aws_secret_access_key` | Chave secreta de acesso da AWS para acesso ao S3/Glue (se não estiver usando credenciais fornecidas) |
| `aws_role_arn` | ARN da IAM role a ser assumida para acesso ao AWS/Glue. Quando definida, o ClickHouse usa AWS STS `AssumeRole` com credenciais base de `aws_access_key_id` e `aws_secret_access_key` quando ambas são fornecidas, ou da cadeia de credenciais padrão da AWS, caso contrário (a role deve confiar na identidade sob a qual o servidor é executado). |
| `aws_role_session_name` | Nome da sessão usado para a chamada AWS STS `AssumeRole`. Opcional; o padrão é `ClickHouseSession`. |
| `aws_external_id` | ID externo passado para AWS STS `AssumeRole`, correspondendo à condição `sts:ExternalId` na trust policy da role. Use isso quando a role pertencer a terceiros, como o ClickHouse Cloud. |
| `region` | Região da AWS para o serviço (por exemplo, `us-east-1`) |
| `dlf_access_key_id` | ID da chave de acesso para o DLF |
| `dlf_access_key_secret` | Chave secreta de acesso para o DLF |
| `force_add_bucket` | Ao construir URLs de armazenamento de objetos a partir da localização da tabela fornecida pelo catálogo e de `storage_endpoint`, adicione o nome do bucket/container no início, mesmo que o endpoint já o contenha. Padrão: `false`. Defina como `true` para catálogos que retornam paths sem o bucket e exigem que ele seja adicionado na etapa de construção da URL (paths no estilo Polaris). |

## Exemplos

Consulte as seções abaixo para ver exemplos de uso do mecanismo `DataLakeCatalog`:

* [Unity Catalog](/pt-BR/guides/use-cases/data-warehousing/unity-catalog)
* [Glue Catalog](/pt-BR/guides/use-cases/data-warehousing/glue-catalog)
* OneLake Catalog
  Pode ser usado ao habilitar `allow_database_iceberg`.

```sql theme={null}
CREATE DATABASE database_name
ENGINE = DataLakeCatalog(catalog_endpoint)
SETTINGS
    catalog_type = 'onelake',
    warehouse = warehouse,
    onelake_tenant_id = tenant_id,
    oauth_server_uri = server_uri,
    auth_scope = auth_scope,
    onelake_client_id = client_id,
    onelake_client_secret = client_secret;
SHOW TABLES IN database_name;
SELECT count() from database_name.table_name;
```

Para autenticar sem compartilhar um segredo do cliente, defina `onelake_bearer_token` como um
Bearer token obtido previamente (com escopo para [https://storage.azure.com](https://storage.azure.com)) em vez de
`onelake_client_id`/`onelake_client_secret`. O ClickHouse não renova o token, portanto o
banco de dados deve ser recriado após sua expiração.
