Rijtracering gebruiken voor Delta-tabellen
Met Het bijhouden van Delta Lake-rijen kan Azure Databricks gegevensherkomst op rijniveau bijhouden in een Delta-tabel. Deze functie is vereist voor sommige incrementele updates voor gerealiseerde weergaven.
Belangrijk
Delta Lake-rijtracking is beschikbaar in Databricks Runtime 14.1 en hoger.
Rijtracering is een tabelfunctie en maakt gebruik van een hoger protocol voor tabelschrijvers dan sommige Delta Lake-clients. Tabelprotocolversies kunnen niet worden gedowngraded en tabellen waarvoor rijtracering is ingeschakeld, kunnen niet worden geschreven door Delta Lake-clients die niet alle ingeschakelde Delta Writer-protocoltabelfuncties ondersteunen. Zie Hoe beheert Azure Databricks de compatibiliteit van Delta Lake-functies?
Rijtracering inschakelen
U moet het bijhouden van rijen expliciet inschakelen door de tabeleigenschap delta.enableRowTracking = true
in te stellen.
U kunt dit doen tijdens het maken van een tabel, zoals in het volgende voorbeeld:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
U kunt een bestaande tabel wijzigen om rijtracking in te schakelen, zoals in het volgende voorbeeld:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Belangrijk
Als u het bijhouden van rijen voor bestaande tabellen inschakelt, worden rij-id's en rijdoorvoeringsversies automatisch toegewezen aan alle bestaande rijen in de tabel. Dit proces kan leiden tot het maken van meerdere nieuwe versies van de tabel en kan veel tijd in beslag nemen.
Als u een Delta-tabel kloont, wordt er een afzonderlijke geschiedenis gemaakt, zodat de rij-id's en rijdoorvoeringsversies op gekloonde tabellen niet overeenkomen met die in de oorspronkelijke tabel.
Wat is het schema van de velden met metagegevens voor het bijhouden van rijen?
Rijtracering voegt twee verborgen metagegevensvelden toe aan de tabel. U kunt deze velden expliciet toevoegen aan uw query om de waarden te retourneren.
Kolomnaam | Type | Waarden | Uitleg |
---|---|---|---|
_metadata.row_id |
Lang | De unieke id van de rij. | Een rij behoudt dezelfde id wanneer deze wordt gewijzigd met behulp van een MERGE of-instructie UPDATE . |
_metadata.row_commit_version |
Lang | Het Delta-logboek of de tabelversie waarop de rij voor het laatst is ingevoegd of bijgewerkt. | Aan een rij wordt een nieuwe versie toegewezen wanneer deze wordt gewijzigd met behulp van een MERGE of-instructie UPDATE . |
Sommige bewerkingen slaan deze metagegevensvelden op met behulp van het transactielogboek. Als u een tabel uitvoert OPTIMIZE
of REORG
bewerkingen uitvoert waarvoor het bijhouden van rijen is ingeschakeld, worden gegevensbestanden opnieuw geschreven om deze velden op te slaan.
Rijtracering uitschakelen
U kunt het bijhouden van rijen uitschakelen door de tabeleigenschap in te stellen op false
.
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Belangrijk
Als u het bijhouden van rijen uitschakelt, wordt de bijbehorende tabelfunctie niet verwijderd en wordt de versie van het tabelprotocol niet gedegradeerd. De metagegevensvelden worden ook niet uit de doeltabel verwijderd.
Als het bijhouden van rijen is uitgeschakeld, zijn de gegenereerde rij-id's niet langer betrouwbaar voor het bijhouden van unieke rijen.
Beperkingen
De metagegevensvelden voor rij-id's en rijdoorvoerversies kunnen niet worden geopend tijdens het lezen van de wijzigingengegevensfeed. Zie Delta Lake-wijzigingsgegevensfeed gebruiken in Azure Databricks.