Partilhar via


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, decimal, double
short int, long, decimal, double
int long, decimal, double
long decimal
float double
decimal decimal com maior precisão e escala
date timestampNTZ

Para evitar a promoção acidental de valores inteiros para decimais, você deve confirmar manualmente as alterações de tipo de byte, short, intou long para decimal ou double.

Nota

Ao alterar qualquer tipo numérico para decimal, a precisão total deve ser igual ou superior à precisão inicial. Se aumentar também a escala, a precisão total deve aumentar em uma quantidade correspondente.

O objetivo mínimo para os tipos byte, shorte int é decimal(10,0). A meta mínima para long é decimal(20,0).

Se você quiser adicionar duas casas decimais a um campo com decimal(10,1), o destino mínimo é decimal(12,3).

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 a ampliação de tipo em uma tabela existente definindo a propriedade da tabela delta.enableTypeWidening como true.

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

Você também pode habilitar a ampliação de tipos durante a criação da tabela.

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

Importante

Quando se ativa o alargamento de tipo, define o recurso de tabela typeWidening-preview, que melhora os protocolos de leitura e escrita. 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 gere a compatibilidade de funcionalidades 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 alargamento de tipos para atualizar os tipos de dados nas tabelas de destino para corresponder ao tipo de dados recebidos.

Nota

Sem a ampliação de tipo ativada, a evolução do esquema tenta sempre converter os dados para um tipo mais específico, de forma segura, 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 a expansão de tipo ativada.
  • 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 estas condições seguem as regras normais de aplicação do esquema. Consulte imposição de esquema.

Desativar a função de alargamento de tipos na tabela

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 precisa remover completamente as funcionalidades da tabela de alargamento de tipo, pode usar o comando DROP FEATURE, conforme demonstrado 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 os recursos da tabela Drop Delta .