Usar o acompanhamento de linhas para tabelas Delta
O acompanhamento de linhas do Delta Lake permite que o Azure Databricks acompanhe a linhagem de nível de linha em uma tabela Delta. Esse recurso é necessário para algumas atualizações incrementais para exibições materializadas.
Importante
O rastreamento de linhas do Delta Lake está disponível no Databricks Runtime 14.1 e posterior.
O acompanhamento de linhas é um recurso de tabela e usa um protocolo de gravador de tabela mais alto do que alguns clientes do Delta Lake. Não é possível fazer o downgrade das versões do protocolo de tabela, e as tabelas com o acompanhamento de linhas habilitado não podem ser gravadas por clientes do Delta Lake que não dão suporte a todos os recursos de tabela de protocolo do gravador Delta habilitados. Confira Como o Azure Databricks gerencia a compatibilidade de recursos do Delta Lake?
Habilitar o acompanhamento de linhas
Você precisa habilitar explicitamente o acompanhamento de linhas definindo a propriedade delta.enableRowTracking = true
da tabela.
Faça isso durante a criação da tabela, como no seguinte exemplo:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Você pode alterar uma tabela existente para habilitar o acompanhamento de linhas, como no seguinte exemplo:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Importante
A habilitação do acompanhamento de linhas em tabelas existentes atribui automaticamente IDs de linha e versões de confirmação de linha a todas as linhas existentes na tabela. Esse processo pode resultar na criação de várias novas versões da tabela e pode demorar um tempo significativo.
A clonagem de uma tabela Delta cria um histórico separado, de modo que as IDs de linha e as versões de confirmação de linha em tabelas clonadas não correspondam às da tabela original.
Qual é o esquema dos campos de metadados do acompanhamento de linha?
O acompanhamento de linhas adiciona dois campos de metadados ocultos à tabela. Você pode adicionar explicitamente esses campos à consulta para retornar os valores.
Nome da coluna | Type | Valores | Explicação |
---|---|---|---|
_metadata.row_id |
Longo | O identificador exclusivo da linha. | Uma linha mantém a mesma ID sempre que é modificada com uma instrução MERGE ou UPDATE . |
_metadata.row_commit_version |
Longo | A versão da tabela ou o log Delta no qual a linha foi inserida ou atualizada pela última vez. | Uma linha recebe uma nova versão sempre que é modificada com uma instrução MERGE ou UPDATE . |
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 o acompanhamento de linhas habilitado grava novamente os arquivos de dados para armazenar esses campos.
Desabilitar o acompanhamento de linhas
Você pode desabilitar o acompanhamento de linhas definindo a propriedade da tabela como false
.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Importante
A desabilitação do acompanhamento de linhas não remove o recurso de tabela correspondente e não faz o downgrade da versão do protocolo de tabela. Ela também não remove os campos de metadados da tabela de destino.
Com o acompanhamento de linhas desabilitado, as IDs de linha geradas deixam de ser confiáveis para acompanhamento de linhas exclusivas.
Limitações
Os campos de metadados de IDs de linha e de confirmação de linha não podem ser acessados durante a leitura do feed de dados de alteração. Confira Usar o feed de dados de alterações do Delta Lake no Azure Databricks.