Renomear e soltar colunas com mapeamento de colunas Delta Lake

O Azure Databricks dá suporte ao mapeamento de colunas para tabelas Delta Lake, o que permite alterações somente de metadados para marcar colunas como excluídas ou renomeadas sem reescrever arquivos de dados. Ele também permite que os usuários nomeiem colunas de tabela Delta usando caracteres que não são permitidos pelo Parquet, como espaços, para que os usuários possam ingerir diretamente dados CSV ou JSON em Delta sem a necessidade de renomear colunas devido a restrições de caracteres anteriores.

Importante

As tabelas com mapeamento de colunas ativado só podem ser lidas no Databricks Runtime 10.4 LTS e superior.

Habilitar o mapeamento de colunas em tabelas pode quebrar operações downstream que dependem do feed de dados de alteração Delta. Consulte Alterar limitações do feed de dados para tabelas com mapeamento de colunas habilitado.

Habilitar o mapeamento de colunas em tabelas pode interromper leituras de streaming da tabela Delta como fonte, inclusive em Delta Live Tables. Consulte Transmissão em fluxo com mapeamento de colunas e alterações de esquema.

Ativar mapeamento de colunas

O mapeamento de colunas requer os seguintes protocolos Delta:

  • Leitor versão 2 ou superior.
  • Writer versão 5 ou superior.

Para uma tabela Delta com as versões de protocolo necessárias, você pode habilitar o mapeamento de colunas definindo delta.columnMapping.mode como name.

Você pode usar o seguinte comando para habilitar o mapeamento de coluna:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.columnMapping.mode' = 'name'
  )

Consulte Desativar mapeamento de colunas.

Renomear uma coluna

Nota

Disponível em Databricks Runtime 10.4 LTS e superior.

Quando o mapeamento de colunas está habilitado para uma tabela Delta, você pode renomear uma coluna:

ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name

Para obter mais exemplos, consulte Atualizar esquema de tabela Delta Lake.

Remover colunas

Nota

Disponível em Databricks Runtime 11.3 LTS e superior.

Quando o mapeamento de colunas está habilitado para uma tabela Delta, você pode soltar uma ou mais colunas:

ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)

Para obter mais detalhes, consulte Atualizar esquema de tabela Delta Lake.

Caracteres suportados em nomes de colunas

Quando o mapeamento de colunas está habilitado para uma tabela Delta, você pode incluir espaços e qualquer um desses caracteres nos nomes de coluna da tabela: ,;{}()\n\t=.

Streaming com mapeamento de colunas e alterações de esquema

Importante

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

Você pode fornecer um local de rastreamento de esquema para habilitar o streaming de tabelas Delta com o mapeamento de colunas habilitado. Isso supera um problema no qual alterações de esquema não aditivas podem resultar em fluxos quebrados.

Cada fluxo lido em relação a uma fonte de dados deve ter sua própria schemaTrackingLocation especificação. O especificado schemaTrackingLocation deve estar contido no diretório especificado para a checkpointLocation tabela de destino para gravação de streaming.

Nota

Para cargas de trabalho de streaming que combinam dados de várias tabelas Delta de origem, você precisa especificar diretórios exclusivos dentro da checkpointLocation tabela para cada origem.

A opção schemaTrackingLocation é usada para especificar o caminho para o rastreamento de esquema, conforme mostrado no exemplo de código a seguir:

checkpoint_path = "/path/to/checkpointLocation"

(spark.readStream
  .option("schemaTrackingLocation", checkpoint_path)
  .table("delta_source_table")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .toTable("output_table")
)

Desativar mapeamento de colunas

No Databricks Runtime 15.3 e superior, você pode usar o comando para remover o DROP FEATURE mapeamento de colunas de uma tabela e fazer downgrade do protocolo da tabela.

Consulte Recursos da tabela Drop Delta.