Condividi tramite


Rilevamento delle righe in Databricks

Il rilevamento delle righe consente ad Azure Databricks di tenere traccia della derivazione a livello di riga in una tabella. Alcuni aggiornamenti incrementali per le viste materializzate richiedono questa funzionalità.

Tutte le tabelle Apache Iceberg v3 includono il rilevamento delle righe. Per le tabelle Delta Lake, è necessario abilitare in modo esplicito il rilevamento delle righe.

Importante

Il rilevamento delle righe è disponibile in Databricks Runtime 14.1 e versioni successive.

Il rilevamento delle righe è una funzionalità della tabella e utilizza un protocollo di scrittura più avanzato rispetto ad alcuni client. Non è possibile effettuare il downgrade delle versioni del protocollo di tabella e le tabelle con rilevamento delle righe abilitate non sono scrivibili dai client che non supportano tutte le funzionalità della tabella del protocollo writer abilitate. Vedere Compatibilità e protocolli delle funzionalità delta Lake.

Abilitare il rilevamento delle righe nelle tabelle Delta

Per abilitare il rilevamento delle righe in una tabella Delta Lake, impostare la proprietà delta.enableRowTracking = true della tabella durante la creazione della tabella:

CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;

Per abilitare il rilevamento delle righe in una tabella Delta Lake esistente, usare l'esempio seguente:

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

Importante

L'abilitazione del rilevamento delle righe nelle tabelle esistenti assegna automaticamente gli ID riga e le versioni di riga commit a tutte le righe esistenti nella tabella. Questo processo può comportare la creazione di più nuove versioni della tabella e potrebbe richiedere molto tempo.

La clonazione di una tabella crea una cronologia separata, quindi gli ID riga e le versioni di commit di riga nelle tabelle clonate non corrispondono a quelli della tabella originale.

Qual è lo schema dei campi di metadati di tracciamento delle righe?

Il rilevamento delle righe aggiunge due campi di metadati nascosti alla tabella. È possibile aggiungere in modo esplicito questi campi alla query per restituire i valori.

Nome della colonna Tipo Valori Spiegazione
_metadata.row_id Lungo Identificatore univoco della riga. Una riga mantiene lo stesso ID ogni volta che viene modificato usando un'istruzione MERGE o UPDATE .
_metadata.row_commit_version Lungo Versione del log o della tabella Delta in corrispondenza della quale la riga è stata inserita o aggiornata per l'ultima volta. A una riga viene assegnata una nuova versione ogni volta che viene modificata tramite un'istruzione MERGE o UPDATE .

Alcune operazioni archiviano questi campi di metadati usando il log delle transazioni. L'esecuzione delle operazioni OPTIMIZE o REORG su una tabella con il rilevamento delle righe abilitato riscrive i file di dati per memorizzare questi campi.

Disabilitare il rilevamento delle righe nelle tabelle Delta

Per disabilitare il rilevamento delle righe in una tabella Delta Lake, impostare la proprietà table su false.

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

Importante

La disabilitazione del rilevamento delle righe non rimuove la funzionalità di tabella corrispondente e non effettua il downgrade della versione del protocollo di tabella. Non rimuove anche i campi dei metadati dalla tabella di destinazione.

Con il rilevamento delle righe disabilitato, gli ID di riga generati non sono più affidabili per tenere traccia di righe univoche.

Limiti

Non è possibile accedere agli ID di riga e ai campi dei metadati delle versioni del commit di riga durante la lettura del feed di dati delle modifiche. Consultare Usare il feed di dati delle modifiche Delta Lake in Azure Databricks.