Acompanhamento de linha no Databricks
Disponível no Databricks Runtime 14.1 e acima, o acompanhamento de linha atribui IDs de linha estáveis e versões de commit de linha a cada linha, permitindo o acompanhamento de linhagem no nível da linha. Algumas atualizações incrementais para views materializadas exigem este recurso.
Todas as tabelas Apache Iceberg v3 incluem acompanhamento de linhas. Veja Usar recursos do Apache Iceberg v3. Para tabelas Delta Lake, é preciso ativar explicitamente o acompanhamento de linhas.
Habilitar o acompanhamento de linhas atualiza o protocolo do gravador de tabela e pode afetar a compatibilidade com clientes externos do Delta Lake. Consulte a compatibilidade de recursos e protocolos do Delta Lake.
Habilitar acompanhamento de linha em tabelas Delta Lake
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 linha em uma tabela Delta Lake existente, use o seguinte exemplo:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
A habilitação do acompanhamento de linha em tabelas existentes atribui automaticamente IDs de linha e versões de commit de linha a todas as linhas existentes na tabela. Este processo pode resultar na criação de várias novas versões da tabela e levar um tempo significativo para ser concluído.
Se sua tabela é um alvo para gravações contínuas, como cargas de trabalho de transmissão estructurada, faça uma pausa nas operações de gravação antes de habilitar o acompanhamento de linha e retome após a conclusão da operação. Usar ALTER TABLE para habilitar o acompanhamento de linha atualiza os metadados da tabela, fazendo com que quaisquer operações de gravação concorrentes falhem com um MetadataChangedException pela duração da operação. Consulte Exceções de conflito.
A clonagem de uma tabela cria um histórico separado; portanto, os IDs de linha e as versões de commit de linha em tabelas clonadas não correspondem aos da tabela original.
Campos de metadados
O acompanhamento de linhas adiciona dois campos de metadados ocultos à tabela. Você pode adicionar esses campos explicitamente à 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 log Delta ou a versão da tabela em que a linha foi inserida ou atualizada pela última vez. | Uma linha é atribuída a uma nova versão sempre que for modificada usando uma instrução |
Algumas operações armazenam estes campos de metadados usando o log de transações. A execução de OPTIMIZE ou REORG operações em uma tabela com o acompanhamento de linha habilitado regrava os arquivos de dados para armazenar esses campos.
Desative o acompanhamento de linha em tabelas do Delta Lake
Para desativar o acompanhamento de linhas em uma tabela do Delta Lake, defina a propriedade da tabela como false.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
A desativação do acompanhamento de linha não remove o recurso de tabela correspondente e não faz downgrade da versão do protocolo da tabela. Também não remove os campos de metadados da tabela de destino. Para remover totalmente o recurso de tabela e fazer downgrade do protocolo, use DROP FEATURE. Consulte Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo de tabela.
Após desativar o acompanhamento de linha, os IDs de linha gerados não são mais confiáveis para rastrear linhas exclusivas.
Limitações
Os IDs de linha e os campos de metadados das versões de commit de linha não podem ser acessados ao ler o feed de dados de alteração. Consulte Usar o feed de dados de alteração no Databricks.