Condividi tramite


Usare il rilevamento delle righe per Delta tables

Il rilevamento delle righe delta Lake consente ad Azure Databricks di tenere traccia della derivazione a livello di riga in un delta table. Questa funzionalità è necessaria per alcuni aggiornamenti incrementali per i viewsmaterializzati.

Importante

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

Il rilevamento delle righe è una funzionalità di table e utilizza un protocollo di scrittura di table superiore rispetto ad alcuni client Delta Lake. Non è possibile effettuare il downgrade delle versioni del protocollo Table, e i protocolli tables con il rilevamento delle righe abilitato non sono scrivibili dai client Delta Lake che non supportano tutte le funzionalità del protocollo Delta Writer table abilitate. Si veda In che modo Azure Databricks gestisce la compatibilità delle funzionalità di Delta Lake?.

Abilitare il rilevamento delle righe

È necessario abilitare in modo esplicito il rilevamento delle righe impostando la proprietà tabledelta.enableRowTracking = true.

Questa operazione si può fare durante la creazione di table, come nell'esempio seguente:

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

È possibile modificare un table esistente per consentire il tracciamento delle righe, come nell'esempio seguente:

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

Importante

L'abilitazione del tracciamento delle righe nei tables esistenti assegna automaticamente gli ID riga e le versioni di commit di riga a tutte le righe esistenti nei table. Questo processo può comportare la creazione di più nuove versioni del table e potrebbe richiedere molto tempo.

La clonazione di un Delta table crea una cronologia separata, quindi gli ID delle righe e le versioni di commit delle righe nel tables clonato non corrispondono a quelli nell'tableoriginale.

Qual è la schema dei campi dei metadati di rilevamento delle righe?

Il rilevamento righe aggiunge due campi di metadati nascosti al table. È possibile aggiungere in modo esplicito questi campi alla query per restituire il values.

nome Column Type Values Spiegazione
_metadata.row_id Lungo Il identifier 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 Log Delta o versione table in cui 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 di operazioni di OPTIMIZE o di REORG in un table con il rilevamento delle righe abilitato riscrive i file di dati per memorizzare questi campi.

Disabilitare il rilevamento delle righe

È possibile disabilitare il rilevamento delle righe impostando la proprietà table su false.

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

Importante

La disabilitazione del rilevamento delle righe non remove la funzionalità di table corrispondente e non effettua il downgrade della versione del protocollo table. Non remove anche i campi dei metadati del tabledi 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. Vedere Usare il feed di dati delle modifiche delta Lake in Azure Databricks.