Usar o rastreamento de linhas para tabelas Delta
O rastreamento de linhas do Lago Delta permite que o Azure Databricks rastreie a linhagem em 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 Delta Lake está disponível no Databricks Runtime 14.1 e superior.
O rastreamento de linhas é um recurso de tabela e usa um protocolo de gravador de tabela mais alto do que alguns clientes Delta Lake. As versões de protocolo de tabela não podem ser rebaixadas e as tabelas com rastreamento de linha habilitado não podem ser gravadas por clientes Delta Lake que não suportam todos os recursos de tabela de protocolo de gravador Delta habilitados. Consulte Como o Azure Databricks gerencia a compatibilidade de recursos do Delta Lake?.
Ativar rastreamento de linha
Você deve habilitar explicitamente o controle de linha definindo a propriedade delta.enableRowTracking = true
table .
Você pode fazer isso durante a criação da tabela, como no exemplo a seguir:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Você pode alterar uma tabela existente para habilitar o rastreamento de linhas, como no exemplo a seguir:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Importante
A habilitação do rastreamento 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 levar uma quantidade significativa de tempo.
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 correspondem às da tabela original.
Qual é o esquema dos campos de metadados de rastreamento de linha?
O controle de linha adiciona dois campos de metadados ocultos à tabela. Você pode adicionar explicitamente esses campos à sua 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 o mesmo ID sempre que é modificada usando uma MERGE instrução or UPDATE . |
_metadata.row_commit_version |
Longo | A versão do log ou tabela Delta na qual a linha foi inserida ou atualizada pela última vez. | Uma linha recebe uma nova versão sempre que é modificada usando uma MERGE instrução or UPDATE . |
Algumas operações armazenam esses campos de metadados usando o log de transações. A execução OPTIMIZE
ou REORG
operações em uma tabela com o rastreamento de linhas habilitado regrava arquivos de dados para armazenar esses campos.
Desativar o rastreamento de linhas
Você pode desabilitar o rastreamento de linhas definindo a propriedade table como false
.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Importante
A desativação do rastreamento de linhas não remove o recurso de tabela correspondente e não faz downgrade da versão do protocolo de tabela. Também não remove os campos de metadados da tabela de destino.
Com o rastreamento de linhas desativado, os IDs de linha gerados não são mais confiáveis para rastrear linhas exclusivas.
Limitações
Os campos de metadados IDs de linha e versões de confirmação de linha não podem ser acessados durante a leitura do feed de dados de alteração. Consulte Usar feed de dados de alteração do Delta Lake no Azure Databricks.