Renomeie e remova columns com o mapeamento do Delta Lake column
O Azure Databricks dá suporte ao mapeamento de column para o Delta Lake tables, que permite alterações somente de metadados para marcar columns como excluídas ou renomeadas sem reescrever arquivos de dados. Ele também permite que os usuários nomeiem tablecolumns 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 columns devido a restrições de caracteres anteriores.
Importante
Tables com o mapeamento column ativado só pode ser lido no Databricks Runtime 10.4 LTS e versões superiores.
Habilitar o mapeamento de column em tables pode interromper as operações downstream que dependem do feed de dados de alteração Delta. Consulte Alterar limitações do feed de dados para tables com mapeamento column ativado.
Habilitar o mapeamento de column em tables pode interromper as leituras de streaming do Delta table como uma fonte, incluindo no Delta Live Tables. Veja Streaming com o mapeamento de column e as alterações schema.
Habilitar mapeamento de column
Column mapeamento requer os seguintes protocolos Delta:
- Leitor versão 2 ou superior.
- Writer versão 5 ou superior.
Para um table Delta com as versões de protocolo necessárias, você pode habilitar o mapeamento de column definindo delta.columnMapping.mode
como name
.
Você pode usar o seguinte comando para habilitar o mapeamento column:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
Consulte . Desativar column mapeamento.
Renomear um column
Nota
Disponível em Databricks Runtime 10.4 LTS e superior.
Quando o mapeamento column está habilitado para Delta table, você pode renomear um column:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Para obter mais exemplos, consulte Update Delta Lake tableschema.
Soltar columns
Nota
Disponível em Databricks Runtime 11.3 LTS e superior.
Quando o mapeamento column está habilitado para um Delta table, você pode soltar uma ou mais columns:
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 Update Delta Lake tableschema.
Caracteres suportados em nomes de column
Quando o mapeamento column está habilitado para um tableDelta, você pode incluir espaços e qualquer um desses caracteres nos nomes column do table: ,;{}()\n\t=
.
Streaming com mapeamento de column e alterações de schema
Importante
Esse recurso está no Public Preview no Databricks Runtime 13.3 LTS e superior.
Você pode fornecer um local de monitorização schema para ativar a transmissão do Delta tables com mapeamento column ativo. Isso resolve um problema em que mudanças de schema não aditivas podem resultar em fluxos interrompidos.
Cada fluxo lido em relação a uma fonte de dados deve ter sua própria schemaTrackingLocation
especificação. O schemaTrackingLocation
especificado deve estar contido no diretório especificado para o checkpointLocation
do table de destino para gravação de streaming.
Nota
Para cargas de trabalho de streaming que combinam dados de várias fontes Delta tables, deve-se especificar diretórios exclusivos dentro do checkpointLocation
para cada fonte table.
A opção schemaTrackingLocation
é utilizada para especificar o caminho para o seguimento de schema, 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 column
No Databricks Runtime 15.3 e superior, você pode usar o comando DROP FEATURE
para removecolumn o mapeamento de um table e rebaixar o protocolo table.
Veja os recursos do Drop Delta