Remover ou substituir uma tabela

O Azure Databricks dá suporte a comandos DDL padrão do SQL para remover e substituir tabelas registradas pelo Catálogo do Unity ou pelo metastore do Hive. O comportamento de excluir e substituir difere de acordo com o tipo de tabela e o metastore. Escolha o comando certo para evitar falhas de operação simultâneas ou de perda de dados.

Quando remover uma tabela

O Databricks recomenda que você use DROP TABLE para remover uma tabela do metastore quando quiser excluir permanentemente a tabela e não tiver intenção de criar uma nova tabela no mesmo local. Por exemplo:

DROP TABLE table_name

DROP TABLE tem comportamentos diferentes dependendo do tipo de tabela e se a tabela está registrada no Catálogo do Unity ou no metastore do Hive herdado.

Tipo de tabela Metastore Behavior
Managed Catálogo do Unity A tabela é removida do metastore e os dados subjacentes são marcados para exclusão. Você pode UNDROP uma tabela gerenciada durante o período de recuperação configurado (o padrão é 7 dias). Consulte Descartar uma tabela gerenciada.
Managed Hive A tabela é removida do metastore e os dados subjacentes são excluídos.
External Catálogo do Unity A tabela é removida do metastore, mas os dados subjacentes permanecem. Os privilégios de acesso de URI agora são regidos pelo local externo que contém os dados.
External Hive A tabela é removida do metastore, mas os dados subjacentes permanecem. Nenhum privilégio de acesso a URI é alterado.

O Catálogo do Unity mantém um histórico de tabelas usando uma ID de tabela interna. Para todos os tipos de tabela, após a conclusão da operação de exclusão, o nome da tabela registrado anteriormente deixa de ter um vínculo ativo com os dados e o histórico da tabela no metastore.

Consulte DROP TABLE.

Note

O Databricks não recomenda que você descarte e recrie uma tabela usando o mesmo nome para pipelines ou sistemas de produção, pois isso pode resultar em resultados inesperados para operações simultâneas. Consulte Substituir dados por operações simultâneas.

Quando substituir uma tabela

O Databricks recomenda usar instruções CREATE OR REPLACE TABLE para casos de uso em que você deseja substituir totalmente a tabela de destino com novos dados. Por exemplo, para substituir uma tabela com todos os dados de um diretório Parquet, execute o seguinte comando:

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

CREATE OR REPLACE TABLE tem a mesma semântica, independentemente do tipo de tabela ou metastore em uso. As seguintes vantagens do CREATE OR REPLACE TABLE são importantes:

  • O conteúdo da tabela é substituído, mas a identidade da tabela é mantida.
  • O histórico da tabela é mantido e você pode reverter a tabela para uma versão anterior com o comando RESTORE.
  • A operação é uma única transação, portanto, nunca há um momento em que a tabela não exista.
  • As consultas simultâneas que lêem da tabela podem continuar ininterruptamente. Como a versão antes e depois da substituição ainda existe no histórico da tabela, as consultas simultâneas podem referenciar qualquer versão da tabela conforme necessário.
  • Se a tabela original incluir máscaras de coluna, essas máscaras serão retidas para todas as colunas que ainda existem na nova tabela. Isso garante que as políticas de acesso a dados sejam preservadas.

Consulte CREATE TABLE [USING].

Substituir dados por operações simultâneas

Quando você deseja executar uma substituição completa de dados em uma tabela que pode ser usada em operações simultâneas, você deve usar CREATE OR REPLACE TABLE.

Você não deve usar o seguinte antipadrão:

DROP TABLE IF EXISTS table_name;

CREATE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`;

Para todos os tipos de tabela, se você estiver usando ou não o Catálogo do Unity, usar esse padrão pode resultar em um erro, registros descartados ou resultados corrompidos.

Em vez disso, o Databricks recomenda sempre usar CREATE OR REPLACE TABLE, como no seguinte exemplo:

CREATE OR REPLACE TABLE table_name
AS SELECT * FROM parquet.`/path/to/files`

Como a substituição atômica preserva o histórico da tabela, as transações simultâneas podem validar a versão da tabela de origem que fazem referência e falhar ou reconciliar transações simultâneas sem comportamento inesperado.