Envio de linha no Databricks
O recurso de acompanhamento de linhas permite que Databricks rastreie a linhagem em nível de linha em uma tabela. Algumas atualizações incrementais para visualizações materializadas requerem este recurso.
Todas as tabelas Apache Iceberg v3 incluem acompanhamento de linha. Para tabelas Delta Lake , você deve habilitar explicitamente o acompanhamento de linhas.
O acompanhamento da linha está disponível no Databricks Runtime 14.1 e acima.
Acompanhamento de linha é um recurso de tabela e usa um protocolo de gravação de tabela superior ao de alguns clientes. As versões do protocolo de tabela não podem ser rebaixadas e as tabelas com acompanhamento de linha ativado não podem ser gravadas por clientes que não suportam todos os recursos de tabela do protocolo de gravação ativado. Consulte a compatibilidade e os protocolos de recursosDelta Lake.
Habilitar envio de linhas em tabelas Delta
Para habilitar o acompanhamento de linhas em uma tabela Delta Lake , defina a propriedade da tabela delta.enableRowTracking = true durante a criação da tabela:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Para habilitar o acompanhamento de linhas em uma tabela existente Delta Lake , use o seguinte exemplo:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
A ativação do acompanhamento de linha em tabelas existentes atribui automaticamente IDs de linha e versões de linha commit a todas as linhas existentes na tabela. Esse processo pode resultar na criação de várias novas versões da tabela e pode levar um tempo significativo.
Clonar uma tabela cria um histórico separado, portanto, os IDs das linhas e as versões commit das linhas nas tabelas clonadas não correspondem aos da tabela original.
Qual é o esquema dos campos de metadados de acompanhamento de linha?
O acompanhamento de linha adiciona dois campos de metadados ocultos à tabela. Você pode adicionar explicitamente esses campos à sua consulta para retornar os valores.
Nome da coluna | Tipo | Valores | Explicação |
|---|---|---|---|
| Long | O identificador exclusivo da linha. | Uma linha mantém o mesmo ID sempre que é modificada usando uma instrução |
| Long | O endereço Delta log ou a versão da tabela em que a linha foi inserida ou atualizada pela última vez. | Uma linha recebe uma nova versão sempre que é modificada usando uma instrução |
Algumas operações armazenam esses campos de metadados usando o log de transações. A execução das operações OPTIMIZE ou REORG em uma tabela com acompanhamento de linha ativado reescreve os arquivos de dados para armazenar esses campos.
Desativar linha em tabelas Delta
Para desativar o acompanhamento de linha em uma tabela Delta Lake , defina a propriedade da tabela como false.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Desativar o acompanhamento de linhas não remove o recurso de tabela correspondente nem faz downgrade da versão do protocolo da tabela. Além disso, não remove os campos de metadados da tabela de destino.
Com o acompanhamento de linhas desativado, os IDs de linha gerados não são mais confiáveis para acompanhar linhas exclusivas.
Limitações
Os campos de metadados de IDs de linha e versões de commit de linha não podem ser acessados durante a leitura do feed de dados de alterações. Consulte a seção "Usar o feed de dados de alterações do Delta Lake" no Databricks.