Renomear e soltar colunas com o mapeamento de colunas do Delta Lake
O Databricks oferece suporte ao mapeamento de colunas para tabelas do Delta Lake, o que permite que alterações somente de metadados marquem colunas como excluídas ou renomeadas sem reescrever os arquivos de dados. Ele também permite que os usuários nomeiem colunas da 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 no Delta sem a necessidade de renomear colunas devido a restrições de caracteres anteriores.
Importante
As tabelas com mapeamento de coluna ativado só podem ser lidas em Databricks Runtime 10.4 LTS e acima.
A ativação do mapeamento de colunas nas tabelas pode interromper as operações downstream que dependem do feed de dados de alteração do Delta. Consulte Alterar limitações do feed de dados para tabelas com mapeamento de coluna ativado.
A ativação do mapeamento de colunas nas tabelas pode interromper as leituras de transmissão da tabela Delta como uma fonte, inclusive em Delta Live Tables. Veja a transmissão com mapeamento de colunas e alterações no esquema.
Habilitar o mapeamento de colunas
O mapeamento de colunas requer os seguintes protocolos Delta:
Leitor versão 2 ouacima.
Writer versão 5 ouacima.
Para uma tabela Delta com as versões de protocolo necessárias, o senhor pode ativar o mapeamento de colunas definindo delta.columnMapping.mode
como name
.
O senhor pode usar o seguinte comando para ativar o mapeamento de colunas:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
Consulte Desativar mapeamento de coluna.
Renomear uma coluna
Observação
Disponível em Databricks Runtime 10.4 LTS e acima.
Quando o mapeamento de colunas está ativado para uma tabela Delta, o senhor pode renomear uma coluna:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Para obter mais exemplos, consulte Atualizar o esquema da tabela Delta Lake.
Colunas suspensas
Observação
Disponível em Databricks Runtime 11.3 LTS e acima.
Quando o mapeamento de coluna está ativado para uma tabela Delta, o senhor pode eliminar 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 o esquema da tabela Delta Lake.
Caracteres suportados em nomes de colunas
Quando o mapeamento de colunas está ativado para uma tabela Delta, o senhor pode incluir espaços e qualquer um desses caracteres nos nomes das colunas da tabela: ,;{}()\n\t=
.
transmissão com mapeamento de colunas e alterações de esquema
Importante
Esse recurso está em Public Preview em Databricks Runtime 13.3 LTS e acima.
O senhor pode fornecer um local de acompanhamento de esquema para permitir a transmissão de Delta tabelas com mapeamento de coluna ativado. Isso supera um problema em que alterações de esquema não aditivas poderiam resultar em transmissão interrompida.
Cada transmissão lida em uma fonte de dados deve ter seu próprio schemaTrackingLocation
especificado. O schemaTrackingLocation
especificado deve estar contido no diretório especificado para o checkpointLocation
da tabela de destino para gravação de transmissão.
Observação
Para cargas de trabalho de transmissão que combinam dados de várias tabelas de origem Delta, o senhor precisa especificar diretórios exclusivos dentro do checkpointLocation
para cada tabela de origem.
A opção schemaTrackingLocation
é usada para especificar o caminho para o acompanhamento do 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 o mapeamento de colunas
Em Databricks Runtime 15.3 e acima, o senhor pode usar o comando DROP FEATURE
para remover o mapeamento de coluna de uma tabela e fazer downgrade do protocolo da tabela.
Consulte Drop Delta table recurso.