Pular para o conteúdo principal

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.

nota

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:

SQL
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:

SQL
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
importante

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.

atenção

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

_metadata.row_id

Long

O identificador exclusivo da linha.

Uma linha mantém o mesmo ID sempre que é modificada usando uma instrução MERGE ou UPDATE.

_metadata.row_commit_version

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 MERGE ou UPDATE.

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.

SQL
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
importante

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.