Alargamento do tipo

Importante

Esse recurso está no Public Preview no Databricks Runtime 15.2 e superior.

As tabelas com alargamento de tipo ativado permitem alterar os tipos de dados de coluna para um tipo mais amplo sem reescrever arquivos de dados subjacentes. Você pode alterar os tipos de coluna manualmente ou usar a evolução do esquema para evoluir os tipos de coluna.

O alargamento do tipo requer Delta Lake. Todas as tabelas gerenciadas pelo Unity Catalog usam Delta Lake por padrão.

Alterações de tipo suportadas

Você pode ampliar os tipos de acordo com as seguintes regras:

Source type Tipos mais amplos suportados
byte short, int, long
short int, long
int long
float double
decimal decimal com maior precisão e a mesma escala
date timestampNTZ

Há suporte para alterações de tipo para colunas de nível superior e campos aninhados dentro de estruturas, mapas e matrizes.

Ativar alargamento de tipo

Você pode habilitar o alargamento de tipo em uma tabela existente definindo a delta.enableTypeWidening propriedade table como true:

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'true')

Você também pode habilitar o alargamento de tipo durante a criação da tabela:

  CREATE TABLE T(c1 INT) TBLPROPERTIES('delta.enableTypeWidening' = 'true')

Importante

Quando você habilita o alargamento de tipo, ele define o recurso typeWidening-previewde tabela , que atualiza os protocolos de leitor e gravador. Você deve usar o Databricks Runtime 15.2 ou superior para interagir com tabelas com alargamento de tipo habilitado. Se os clientes externos também interagirem com a tabela, verifique se eles oferecem suporte a esse recurso de tabela. Consulte Como o Azure Databricks gerencia a compatibilidade de recursos do Delta Lake?.

Aplicar manualmente uma alteração de tipo

Use o comando para alterar manualmente os ALTER COLUMN tipos:

ALTER TABLE <table_name> ALTER COLUMN <col_name> TYPE <new_type>

Esta operação atualiza o esquema de tabela sem reescrever os arquivos de dados subjacentes.

Amplie os tipos com evolução automática do esquema

A evolução do esquema funciona com ampliação de tipo para atualizar tipos de dados em tabelas de destino para corresponder ao tipo de dados recebidos.

Nota

Sem a ampliação de tipo habilitada, a evolução do esquema sempre tenta fazer downcast de dados com segurança para corresponder aos tipos de coluna na tabela de destino. Se você não quiser ampliar automaticamente os tipos de dados em suas tabelas de destino, desative a ampliação de tipos antes de executar cargas de trabalho com a evolução do esquema habilitada.

Para usar a evolução do esquema para ampliar o tipo de dados de uma coluna, você deve atender às seguintes condições:

  • O comando usa INSERT ou MERGE INTO.
  • O comando é executado com a evolução automática do esquema ativada.
  • A tabela de destino tem o alargamento de tipo habilitado.
  • O tipo de coluna de origem é maior do que o tipo de coluna de destino.
  • O alargamento de tipo suporta a alteração de tipo.

Incompatibilidades de tipo que não atendem a todas essas condições seguem as regras normais de imposição de esquema. Consulte Aplicação do esquema.

Desativar o recurso de tabela de alargamento de tipo

Você pode evitar o alargamento acidental de tipos em tabelas habilitadas definindo a propriedade como false:

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'false')

Essa configuração impede futuras alterações de tipo na tabela, mas não remove o recurso de ampliação de tipo da tabela nem desfaz os tipos que foram alterados.

Se você precisar remover completamente os recursos de tabela de alargamento de tipo, você pode usar o DROP FEATURE comando como mostrado no exemplo a seguir:

 ALTER TABLE <table-name> DROP FEATURE 'typeWidening-preview' [TRUNCATE HISTORY]

Ao descartar a ampliação de tipo, todos os arquivos de dados que não estão em conformidade com o esquema de tabela atual são reescritos. Consulte Recursos da tabela Drop Delta.