Pular para o conteúdo principal

Clonar uma tabela Iceberg gerenciada

info

Pré-lançamento público

Tabelas Iceberg gerenciadas pelo Unity Catalog estão disponíveis em Public Preview no Databricks Runtime 16.4 LTS e acima.

É possível criar uma cópia completa e independente de uma tabela Iceberg gerenciada usando DEEP CLONE. Um clone profundo copia tanto os arquivos de dados quanto os metadados da tabela para uma nova tabela Iceberg gerenciada no Unity Catalog.

Tabelas Iceberg gerenciadas suportam apenas clonagem profunda. Clonagem rasa e conversão de formato durante a clonagem não são suportadas.

Clonar métodos para tabelas Iceberg

A operação de clonagem que você usa depende dos tipos de tabela de origem e de destino:

Origem

Destino

Operação

Iceberg gerenciado

Iceberg gerenciado

DEEP CLONE.

Iceberg externo

Iceberg gerenciado

DEEP CLONEConsulte Clonar uma tabela Iceberg externa para Iceberg gerenciado.

Parquet ou Iceberg externo

Delta Lake gerenciado ou externo

Clone incremental. Consulte Clonar incrementalmente tabelas Parquet e Apache Iceberg para Delta Lake.

Para criar uma tabela Iceberg gerenciada a partir de resultados de consulta em vez de clonar uma tabela existente, use CREATE TABLE ... AS SELECT. Consulte CREATE TABLE [USING].

SHALLOW CLONE não é compatível com tabelas Iceberg. Consulte Limitações.

Requisitos

Para clonar profundamente uma tabela Iceberg gerenciada, é necessário:

  • Databricks Runtime 16.4 LTS ou superior.
  • SELECT Privilégios na tabela de origem.
  • Se for substituir uma tabela existente, privilégios CREATE TABLE no esquema de destino ou privilégios MODIFY na tabela de destino.
  • Otimização preditiva ativada no catálogo ou esquema de destino.

Clonar profundamente uma tabela Iceberg gerenciada

Usar CREATE TABLE ... DEEP CLONE para copiar uma tabela Iceberg gerenciada:

SQL
CREATE TABLE <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;

Para substituir uma tabela de destino existente:

SQL
CREATE OR REPLACE TABLE <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;

Criar o destino somente se ele ainda não existir:

SQL
CREATE TABLE IF NOT EXISTS <catalog>.<schema>.<target-table>
DEEP CLONE <catalog>.<schema>.<source-table>;

Para a sintaxe completa de CREATE TABLE CLONE, consulte CREATE TABLE CLONE.

Arquivar uma tabela de produção

Para criar um Snapshot independente de uma tabela de produção para fins de arquivamento ou compliance:

SQL
CREATE TABLE prod_catalog.archive.orders_snapshot_may2026
DEEP CLONE prod_catalog.main.orders;

Copiar uma tabela para um ambiente de desenvolvimento

Para clonar uma tabela de produção em um catálogo de desenvolvimento para experimentação segura sem afetar os dados de produção:

SQL
CREATE OR REPLACE TABLE dev_catalog.test.orders
DEEP CLONE prod_catalog.main.orders;

Clonar uma tabela Iceberg externa para Iceberg gerenciado

É possível usar DEEP CLONE para migrar uma tabela Iceberg externa para o Unity Catalog como uma tabela Iceberg gerenciada. O clone copia todos os dados e metadados para o armazenamento do Unity Catalog. Os arquivos originais gerenciados pelo catálogo externo não são reutilizados.

SQL
CREATE TABLE <uc-catalog>.<schema>.<target-table>
DEEP CLONE <foreign-catalog>.<schema>.<source-table>;

Depois que o clone for concluído, a tabela de destino será uma tabela Iceberg totalmente gerenciada no Unity Catalog, independente do catálogo de origem.

nota

Migração sem cópia de um catálogo externo não é suportada. Consulte Limitações.

Definir propriedades da tabela em um clone profundo

Não é possível definir propriedades da tabela Iceberg na instrução DEEP CLONE. Para adicionar ou substituir propriedades na tabela clonada, use ALTER TABLE SET TBLPROPERTIES após a conclusão da clonagem.

Por exemplo, para definir propriedades personalizadas para registrar a origem de um clone usado como um Snapshot:

SQL
CREATE TABLE prod_catalog.archive.orders_snapshot
DEEP CLONE prod_catalog.main.orders;

ALTER TABLE prod_catalog.archive.orders_snapshot
SET TBLPROPERTIES (
'archive.source' = 'prod_catalog.main.orders',
'archive.created_date' = '2026-05-11'
);

Comportamento de Clonagem

Considerações importantes para o comportamento de clone profundo:

  • Um clone profundo é uma cópia completa e independente da tabela de origem. Alterações no clone não afetam a origem, e alterações na origem não afetam o clone.
  • Um clone profundo possui uma história de Snapshot independente. A viagem do tempo no clone usa o histórico do clone, não o histórico da origem.
  • O esquema, as informações de particionamento e as propriedades da tabela são copiados para o clone profundo. Tags do Unity Catalog não são copiadas.
  • Após a criação, o Unity Catalog gerencia o clone de forma independente com otimização preditiva.

Limitações

  • A clonagem rasa não é compatível com tabelas Iceberg gerenciadas.
  • O Unity Catalog não oferece suporte à conversão de cópia zero de tabelas Iceberg externas para tabelas Iceberg gerenciadas. Você deve usar DEEP CLONE. Todos os dados são copiados para o armazenamento do Unity Catalog durante a operação de clonagem.
  • Clones profundos não copiam o histórico da tabela, o que afeta as consultas de viagem do tempo.
  • Não é possível alterar o formato da tabela durante a clonagem. O alvo é sempre uma tabela Iceberg gerenciada.
  • Não é possível definir as propriedades da tabela durante a clonagem. Utilize ALTER TABLE SET TBLPROPERTIES após a conclusão do clone profundo. Consulte Definir propriedades da tabela em um clone profundo.