Pular para o conteúdo principal

Acompanhamento de linha no Databricks

O acompanhamento de linha permite que o Databricks rastreie a linhagem no nível da linha em uma tabela. 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.

importante

Acompanhamento de linhas está disponível no Databricks Runtime 14.1 e acima.

Acompanhamento de linhas é um recurso de tabela e usa um protocolo de gravação de tabela mais alto do que alguns clientes. Não é possível fazer downgrade das versões do protocolo de tabela, e tabelas com acompanhamento de linha habilitado não podem ser gravadas por clientes que não suportam todos os recursos de tabela do protocolo de gravação habilitados. 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 pode levar um tempo considerável.

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.

Qual é o esquema dos campos de metadados de acompanhamento da linha?

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.

Desabilitar o acompanhamento de linhas nas tabelas Delta Lake

Para desabilitar o acompanhamento de linha em uma tabela Delta Lake, defina a propriedade da tabela para 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 são removidos os campos de metadados da tabela de destino.

Com o acompanhamento de linha desativado, os IDs de linha gerados não são mais confiáveis para acompanhar 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.