Táblázatelőzményekkel való munka

Apache Iceberg- és Delta Lake-táblák esetén minden olyan művelet, amely módosítja a táblázatot, új táblaverziót hoz létre. Az előzményadatok használatával naplózhatja a műveleteket, visszaállíthat egy táblát, vagy lekérdezhet egy táblát egy adott időpontban időutazással.

Note

A Databricks nem javasolja a táblaelőzmények hosszú távú biztonsági mentési megoldásként való használatát az adatarchiváláshoz. Csak az elmúlt 7 napot használja az időutazási műveletekhez, kivéve, ha az adatok és a naplómegőrzési konfigurációkat nagyobb értékre állította be.

Táblaelőzmények lekérése

DESCRIBE HISTORY A parancs futtatásával lekérheti az adatokat, beleértve a táblákba való írások műveleteit, felhasználószámát és időbélyegét. A rendszer fordított időrendi sorrendben adja vissza a műveleteket.

A táblaelőzmények megőrzését a táblabeállítás logRetentionDurationhatározza meg, amely alapértelmezés szerint 30 nap.

Note

Az időutazást és a táblaelőzményeket különböző megőrzési küszöbértékek szabályozzák. Lásd : Időutazás.

DESCRIBE HISTORY table_name       -- get the full history of the table

DESCRIBE HISTORY table_name LIMIT 1  -- get the last operation only

A Spark SQL szintaxisának részleteiért lásd: DESCRIBE HISTORY.

A Scala, Java és Python szintaxis részleteiért tekintse meg a Delta Lake API dokumentációját.

A Katalóguskezelő vizuálisan jeleníti meg a táblázatelőzményeket az Előzmények lapon.

Előzmények séma

A művelet kimenete az history alábbi oszlopokkal rendelkezik.

Column Típus Description
verzió long A művelet által létrehozott táblaverzió.
timestamp timestamp A verzió véglegesítésekor.
userId string A műveletet futtató felhasználó azonosítója.
userName string A műveletet futtató felhasználó neve.
művelet string A művelet neve.
működési paraméterek map A művelet paraméterei (például predikátumok).) A műveletek esetében OPTIMIZE ezek a paraméterek azonosítják a művelet típusát. Lásd : A művelet típusának OPTIMIZE azonosítása.
feladat struct A műveletet futtató Lakeflow-feladat részletei. Csak a Lakeflow-feladatból írt véglegesítések esetén töltődik fel. Ellenkező esetben null.
jegyzetfüzet struct Annak a Databricks-jegyzetfüzetnek a részletei, amelyből a műveletet futtatták. Csak a Databricks-jegyzetfüzetből írt véglegesítések esetén töltődik fel. Ellenkező esetben null.
clusterId string Annak a klaszternek az azonosítója, amelyen a művelet végrehajtása történt.
verzióolvasás long Az írási művelet végrehajtásához beolvasott tábla verziója.
isolationLevel string A művelethez használt elkülönítési szint.
isBlindAppend boolean Hogy ez a művelet hozzáfűzött-e adatokat.
műveleti metrikák map A művelet metrikái (például a módosított sorok és fájlok száma).)
userMetadata string A felhasználó által megadott véglegesítési metaadatok, ha meg lett adva.
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|version|          timestamp|userId|userName|operation| operationParameters| job|notebook|clusterId|readVersion|   isolationLevel|isBlindAppend|    operationMetrics|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|      5|2019-07-29 14:07:47|   ###|     ###|   DELETE|[predicate -> ["(...|null|     ###|      ###|          4|WriteSerializable|        false|[numTotalRows -> ...|
|      4|2019-07-29 14:07:41|   ###|     ###|   UPDATE|[predicate -> (id...|null|     ###|      ###|          3|WriteSerializable|        false|[numTotalRows -> ...|
|      3|2019-07-29 14:07:29|   ###|     ###|   DELETE|[predicate -> ["(...|null|     ###|      ###|          2|WriteSerializable|        false|[numTotalRows -> ...|
|      2|2019-07-29 14:06:56|   ###|     ###|   UPDATE|[predicate -> (id...|null|     ###|      ###|          1|WriteSerializable|        false|[numTotalRows -> ...|
|      1|2019-07-29 14:04:31|   ###|     ###|   DELETE|[predicate -> ["(...|null|     ###|      ###|          0|WriteSerializable|        false|[numTotalRows -> ...|
|      0|2019-07-29 14:01:40|   ###|     ###|    WRITE|[mode -> ErrorIfE...|null|     ###|      ###|       null|WriteSerializable|         true|[numFiles -> 2, n...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+

Note

A műveleti paraméterek ismertetése partitionBy

A partitionBy táblaelőzmények mezője csak olyan CREATE és OVERWRITE műveletekhez használható, amelyek meghatározzák vagy módosítják a tábla partíciós sémáját.

Meglévő táblákhoz (HOZZÁFŰZÉS, INSERT, UPDATE, TÖRLÉS, EGYBEOLVASZTÁS) fűzési műveletek esetén ez a mező üres tömböt [] vagy partíciós oszlopokat jeleníthet meg a használt írási módszertől függően (.save() vs .saveAsTable()).

Ez az inkonzisztencia elvárt viselkedés, és nem befolyásolja az adatok partíciókba való írását. Nem szabad ezt hozzáfűzési műveletek ellenőrzésére használni.

Példa

Tekintsünk egy, a date oszlop szerint particionált táblát. A tábla létrehozásakor a következő partitionBy adatok lesznek kitöltve:

df.write.format("delta") \
  .partitionBy("date") \
  .saveAsTable("sales_data")

A CREATE művelet az előzményekben a következőt mutatja:

operationParameters: {
  "mode": "ErrorIfExists",
  "partitionBy": "[\"date\"]"
}

Amikor adatokat fűz ehhez a táblához, partitionBy egy üres tömb jelenik meg:

new_df.write.format("delta") \
  .mode("append") \
  .saveAsTable("sales_data")

A APPEND művelet a következőt jeleníti meg:

operationParameters: {
  "mode": "Append",
  "partitionBy": "[]"
}

Az üres partitionBy érték várható. Az adatok továbbra is a megfelelő partíciókra lesznek írva a tábla meglévő partíciós sémája alapján. Vegye figyelembe, hogy .save() az elérési út partícióoszlopokat jeleníthet meg ebben a mezőben, de ez a különbség implementálási részlet, és nem befolyásolja az írási viselkedést.

Műveleti metrikák

A history művelet a műveleti metrikák gyűjteményét adja vissza az operationMetrics oszloptérképen.

Az alábbi táblázatok a térképkulcs-definíciókat művelet szerint sorolják fel.

WRITE, CREATE TABLE AS SELECT, REPLACE TABLE AS SELECT, COPY INTO

Ezekhez a műveletekhez a következő metrikák érhetők el:

A metrika elnevezése Description
numFiles Az írott fájlok száma.
numOutputBytes Az írott tartalom bájtban megadott mérete.
numOutputRows Az írott sorok száma.

STREAMING UPDATE

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
numAddedFiles A hozzáadott fájlok száma.
numRemovedFiles Az eltávolított fájlok száma.
numOutputRows Az írott sorok száma.
numOutputBytes Az írás mérete bájtokban.

DELETE

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
numAddedFiles A hozzáadott fájlok száma. Nincs megadva a tábla partícióinak törlésekor.
numRemovedFiles Az eltávolított fájlok száma.
numDeletedRows Az eltávolított sorok száma. Nincs megadva a tábla partícióinak törlésekor.
numCopiedRows A fájlok törlése során másolt sorok száma.
executionTimeMs A teljes művelet végrehajtásához szükséges idő.
scanTimeMs A fájlok egyezések keresésére történő átvizsgálásához szükséges idő.
rewriteTimeMs A egyeztetett fájlok újraírásához szükséges idő.

TRUNCATE

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
numRemovedFiles Az eltávolított fájlok száma.
executionTimeMs A teljes művelet végrehajtásához szükséges idő.

MERGE

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
numSourceRows A forrásadatkeret sorainak száma.
numTargetRowsInserted A céltáblába beszúrt sorok száma.
numTargetRowsUpdated A céltáblában frissített sorok száma.
numTargetRowsDeleted A céltáblában törölt sorok száma.
numTargetRowsCopied A másolt célsorok száma.
numOutputRows A kiírt sorok teljes száma.
numTargetFilesAdded A nyelőhöz (célhoz) hozzáadott fájlok száma.
numTargetFilesRemoved A célhelyről eltávolított fájlok száma.
executionTimeMs A teljes művelet végrehajtásához szükséges idő.
scanTimeMs A fájlok egyezések keresésére történő átvizsgálásához szükséges idő.
rewriteTimeMs A egyeztetett fájlok újraírásához szükséges idő.

UPDATE

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
numAddedFiles A hozzáadott fájlok száma.
numRemovedFiles Az eltávolított fájlok száma.
numUpdatedRows A frissített sorok száma.
numCopiedRows A fájlok frissítése során átmásolt sorok száma.
executionTimeMs A teljes művelet végrehajtásához szükséges idő.
scanTimeMs A fájlok egyezések keresésére történő átvizsgálásához szükséges idő.
rewriteTimeMs A egyeztetett fájlok újraírásához szükséges idő.

FSCK

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
numRemovedFiles Az eltávolított fájlok száma.

CONVERT

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
numConvertedFiles A konvertált Parquet-fájlok száma.

OPTIMIZE

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
numAddedFiles A hozzáadott fájlok száma.
numRemovedFiles Az optimalizált fájlok száma.
numAddedBytes A tábla optimalizálása után hozzáadott bájtok száma.
numRemovedBytes Az eltávolított bájtok száma.
minFileSize A tábla optimalizálása után a legkisebb fájl mérete.
p25FileSize A tábla optimalizálása után a 25. percentilis fájl mérete.
p50FileSize A tábla optimalizálása után a fájl középmérete.
p75FileSize A táblázat optimalizálása után a 75. percentilisfájl mérete.
maxFileSize A legnagyobb fájl mérete a tábla optimalizálása után.

CLONE

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
sourceTableSize A forrástábla bájtban megadott mérete a klónozott verzióban.
sourceNumOfFiles A forrástáblában lévő fájlok száma a klónozott verzióban.
numRemovedFiles Az előző tábla lecserélése esetén a céltáblából eltávolított fájlok száma.
removedFilesSize A céltáblából eltávolított fájlok bájtban megadott teljes mérete, ha egy korábbi táblát lecseréltek.
numCopiedFiles Az új helyre másolt fájlok száma. 0 a sekély klónok esetében.
copiedFilesSize Az új helyre másolt fájlok bájtban megadott teljes mérete. 0 a sekély klónok esetében.

RESTORE

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
tableSizeAfterRestore A tábla mérete bájtban a visszaállítás után.
numOfFilesAfterRestore A táblában lévő fájlok száma a visszaállítás után.
numRemovedFiles A visszaállítási művelet által eltávolított fájlok száma.
numRestoredFiles A visszaállítás eredményeként hozzáadott fájlok száma.
removedFilesSize A visszaállítás által eltávolított fájlok bájtban megadott mérete.
restoredFilesSize A visszaállítás által hozzáadott fájlok bájtban megadott mérete.

VACUUM

A művelethez a következő metrikák érhetők el:

A metrika elnevezése Description
numDeletedFiles A törölt fájlok száma.
numVacuumedDirectories A kiürített könyvtárak száma.
numFilesToDelete A törölni kívánt fájlok száma.

A művelet típusának OPTIMIZE azonosítása

Az automatikus tömörítés, a folyadékklaszterezés és a Z-rendezés mind OPTIMIZE műveletként jelennek meg a táblatörténetben. Annak megállapításához, hogy melyik futott le, vizsgálja meg a(z) operationParameters oszlopot.

Egy tábla előzményeinek minden OPTIMIZE műveletének besorolásához futtassa a következőt:

SELECT
  version,
  timestamp,
  CASE
    WHEN operationParameters.clusterBy IS NOT NULL AND operationParameters.clusterBy <> '[]' THEN 'Liquid clustering'
    WHEN operationParameters.zOrderBy IS NOT NULL AND operationParameters.zOrderBy <> '[]' THEN 'Z-ordering'
    WHEN operationParameters.auto = 'true' THEN 'Auto compaction'
    ELSE 'Manual OPTIMIZE'
  END AS optimize_type,
  operationParameters.auto AS is_auto_compaction,
  operationParameters.clusterBy AS cluster_by,
  operationParameters.zOrderBy AS z_order_by,
  operationMetrics.numRemovedFiles AS files_compacted,
  operationMetrics.numAddedFiles AS files_added,
  operationMetrics.numRemovedBytes AS bytes_removed,
  operationMetrics.numAddedBytes AS bytes_added
FROM (DESCRIBE HISTORY table_name)
WHERE operation = 'OPTIMIZE'
ORDER BY version DESC;

Az alábbi szakaszok részletesen ismertetik az egyes operationParameters értékeket.

Automatikus tömörítés

Az automatikus tömörítés a auto paramétert true értékre állítja. Azure Databricks automatikus tömörítést aktivál az írás után. Ha a(z) auto értéke false, egy felhasználó vagy egy ütemezett feladat lefuttatta a OPTIMIZE parancsot.

Egy automatikus tömörítési művelet például a következőket mutatja:

operationParameters: {
  "auto": "true"
}

Az automatikus tömörítésről további információt az Automatikus tömörítés című témakörben talál.

Folyékony fürtözés

A dinamikus fürtözés a clusterBy paramétert a fürtözési oszlopok neveivel tölti ki. Az üres clusterBy tömb ([]) csak a fájl tömörítését jelzi.

Például az az művelet, amely az adatokat a date és region oszlopok szerint csoportosította, a következőt mutatja:

operationParameters: {
  "clusterBy": "[\"date\",\"region\"]"
}

A liquid clusteringgel kapcsolatos további információkért lásd: A liquid clustering használata táblák esetén.

Z-rendelés

A Z-ordering során a zOrderBy paraméter a Z-order oszlopneveivel töltődik fel. Egy üres zOrderBy tömb ([]) azt jelzi, hogy a művelet nem alkalmazta a Z-rendezést.

Például egy olyan művelet, amely Z-rendezést alkalmazott az oszlopon, date a következőt mutatja:

operationParameters: {
  "zOrderBy": "[\"date\"]"
}

Művelet hatóköre

A predicate paraméter azt jelzi, hogy a művelet a teljes táblán futott-e, vagy csak egy része:

  • Az üres predicate tömb ([]) azt jelenti, hogy a művelet a teljes táblán futott.
  • A kitöltött predicate tömb azt jelenti, hogy egy célzott OPTIMIZE table_name WHERE <partition_predicate> parancs csak a predikátumnak megfelelő partíciókon fut.

Például a year = 2024 elemnek megfelelő partíciókat célzó művelet a következőket mutatja:

operationParameters: {
  "predicate": "[\"'year = 2024\"]"
}

Időutazás

Az időbeli visszatekintés lehetővé teszi a korábbi táblaverziók lekérdezését az időbélyeg vagy a táblaverzió alapján, ahogy az a tranzakciónaplóban rögzítve van. Az időutazást az alábbi alkalmazásokhoz használhatja:

  • Elemzések, jelentések vagy kimenetek újbóli létrehozása, például egy gépi tanulási modell kimenete. Ez hasznos lehet a hibakereséshez vagy a naplózáshoz, különösen a szabályozott iparágakban.
  • Összetett időbeli lekérdezések írása.
  • Az adatok hibáinak kijavítása.
  • Pillanatkép-elkülönítés biztosítása lekérdezések készletéhez a gyorsan változó táblákhoz.

Note

A Databricks Runtime 18.0-s vagy újabb verzióiban az időutazási lekérdezések le lesznek tiltva, ha a deletedFileRetentionDuration táblatulajdonságnál régebbi verziót kérnek (alapértelmezés szerint 7 nap). A Unity Catalog által felügyelt táblák esetében ez a Databricks Runtime 12.2 és újabb verziókra vonatkozik.

Időutazás szintaxisa

Egy időutazással rendelkező táblát úgy kérdezhet le, hogy hozzáad egy záradékot a táblanév specifikációja után.

  • timestamp_expression az alábbiak bármelyike lehet:
    • '2018-10-18T22:15:12.013Z', azaz olyan karakterlánc, amely időbélyeggé konvertálható.
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', azaz dátumsztring
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • Bármely más kifejezés, amely időbélyegbe van öntve vagy átalakítható
  • version egy hosszú érték, amely a következő kimenetből DESCRIBE HISTORY table_speckérhető le: .

Sem a timestamp_expression, sem a version nem lehet al-lekérdezés.

A rendszer csak dátum- vagy időbélyeg-sztringeket fogad el. Például: "2019-01-01" és "2019-01-01T00:00:00.000Z". Lásd például a következő kódot:

SQL

SELECT * FROM people10m TIMESTAMP AS OF '2018-10-18T22:15:12.013Z';
SELECT * FROM people10m VERSION AS OF 123;

Python

df1 = spark.read.option("timestampAsOf", "2019-01-01").table("people10m")
df2 = spark.read.option("versionAsOf", 123).table("people10m")

A @ szintaxis használatával megadhatja az időbélyeget vagy a verziót a táblanév részeként. Az időbélyegnek formátumban yyyyMMddHHmmssSSS kell lennie. Megadhatja a verziót a használatával @v. Lásd például a következő kódot:

SQL

-- Timestamp version
SELECT * FROM people10m@20190101000000000
-- Version number
SELECT * FROM people10m@v123

Python

# Timestamp version
spark.read.table("people10m@20190101000000000")
# Version number
spark.read.table("people10m@v123")

Adatmegőrzés konfigurálása időutazási lekérdezésekhez

Az előző táblaverzió lekérdezéséhez a naplót és az adott verzió adatfájljait is meg kell őriznie:

  • Az adatfájlok törlésre kerülnek, amikor VACUUM futtatása egy táblán történik.
  • A naplófájlok automatikusan törlődnek a táblaverziók ellenőrzése után.

A táblák adatmegőrzési küszöbértékének növeléséhez konfigurálnia kell a következő táblázattulajdonságokat, és a következőre kell váltania <format>deltaiceberg:

  • <format>.logRetentionDuration = "interval <interval>": azt határozza meg, hogy a tábla előzményei mennyi ideig legyenek megtartva. Az alapértelmezett érték a interval 30 days.
    • A Databricks Runtime 18.0-s vagy újabb verzióban a logRetentionDuration-nek nagyobbnak vagy egyenlőnek kell lennie, mint deletedFileRetentionDuration. A Unity Catalog által felügyelt táblák esetében ez a Databricks Runtime 12.2 és újabb verziókra vonatkozik.
  • <format>.deletedFileRetentionDuration = "interval <interval>": meghatározza az aktuális táblaverzióban már nem hivatkozott adatfájlok eltávolítására használt küszöbértéket VACUUM . Az alapértelmezett érték a interval 7 days.

Ha például 30 nap előzményadatokat szeretne elérni, állítsa be delta.deletedFileRetentionDuration = "interval 30 days"az alapértelmezett beállításnak delta.logRetentionDurationmegfelelőt.

Important

Az adatmegőrzési küszöbérték növelése a tárolási költségek emelkedését okozhatja, mivel a rendszer több adatfájlt tart fenn.

A táblatulajdonságokat a tábla létrehozásakor vagy utasítással ALTER TABLE is megadhatja. Lásd Táblázatulajdonságok hivatkozása.

Időutazási példák

A tábla véletlen törléseinek helyreállítása a(z) 111 felhasználó számára:

INSERT INTO my_table
  SELECT * FROM my_table TIMESTAMP AS OF date_sub(current_date(), 1)
  WHERE userId = 111

Tábla véletlen helytelen frissítésének kijavítása:

MERGE INTO my_table target
  USING my_table TIMESTAMP AS OF date_sub(current_date(), 1) source
  ON source.userId = target.userId
  WHEN MATCHED THEN UPDATE SET *

Az elmúlt héten hozzáadott új ügyfelek számának lekérdezése:

SELECT
(
  SELECT count(distinct userId)
  FROM my_table
)
-
(
  SELECT count(distinct userId)
  FROM my_table TIMESTAMP AS OF date_sub(current_date(), 7)
) AS new_customers

A tranzakciós napló ellenőrzőpontjai

A tranzakciónapló JSON-fájlként rögzíti a táblaverziókat a tranzakciónapló könyvtárában a táblaadatok mellett.

Az ellenőrzőpont-lekérdezés optimalizálása érdekében a táblaverziók parquet ellenőrzőpontfájlokra vannak összesítve, ami javítja a teljesítményt azáltal, hogy nem szükséges elolvasni a táblaelőzmények összes JSON-verzióját. A felhasználóknak nem kell közvetlenül használniuk az ellenőrzőpontokat.

Az Azure Databricks optimalizálja az ellenőrzőpontok gyakoriságát az adatmérethez és a számítási feladathoz. Az ellenőrzőpont gyakorisága értesítés nélkül változhat.

Tábla visszaállítása korábbi állapotba

RESTORE A parancs használatával visszaállíthat egy táblát egy korábbi verzióra vagy időbélyegre, beleértve az alábbi eseteket is:

Vegye figyelembe a következő követelményeket:

  • Egy tábla visszaállításához rendelkeznie kell a táblához tartozó MODIFY jogosultsággal.
  • Az adatfájlok kézi törlése vagy a(z) VACUUM általi törlése után nem állíthat vissza egy táblát egy olyan korábbi verzióra, amely ezekre a fájlokra hivatkozik. Ennek a verziónak a részleges visszaállítása akkor is lehetséges, ha spark.sql.files.ignoreMissingFiles be van állítva true.
  • Az időbélyegek szerinti visszaállításhoz használja a formátumokat yyyy-MM-dd HH:mm:ss vagy yyyy-MM-dda .
RESTORE TABLE target_table TO VERSION AS OF <version>;
RESTORE TABLE target_table TO TIMESTAMP AS OF <timestamp>;

A szintaxis részleteiért lásd: RESTORE.

Streamelési viselkedés

A visszaállítás adatmódosítási művelet, amely duplikált adatokat eredményezhet az alsóbb rétegbeli számítási feladatokhoz. A RESTORE parancs által hozzáadott naplóbejegyzések tartalmazzák, hogy a dataChange értéke igaz.

Az alsóbb rétegbeli számítási feladatok, például a tábla frissítéseit feldolgozó strukturált streamelési feladatok esetében a visszaállítási művelet által hozzáadott adatváltozási naplóbejegyzések új adatfrissítéseknek minősülnek, és a feldolgozásuk duplikált adatokat eredményezhet.

Például:

táblázat verzió Operation Naplófrissítések Adatváltozási naplófrissítések rekordjai
0 INSERT AddFile(/path/to/file-1, dataChange = true) (név = Viktor, kor = 29), (név = György, kor = 55)
1 INSERT AddFile(/path/to/file-2, dataChange = true) (név = György, kor = 39)
2 OPTIMIZE AddFile(/path/to/file-3, dataChange = false), RemoveFile(/path/to/file-1), RemoveFile(/path/to/file-2) Nincsenek rekordok. OPTIMIZE a tömörítés nem módosítja a táblában lévő adatokat.
3 RESTORE(version=1) RemoveFile(/path/to/file-3), AddFile(/path/to/file-1, dataChange = true), AddFile(/path/to/file-2, dataChange = true) (név = Viktor, kor = 29), (név = György, kor = 55), (név = György, kor = 39)

Az előző példában a parancs olyan RESTORE frissítéseket eredményez, amelyek a tábla 0- és 1-es verziójának olvasásakor korábban megjelentek. Ha egy streamelési lekérdezés újra felolvassa ezt a táblát, a rendszer ezeket a fájlokat újonnan hozzáadott adatoknak tekinti, és újra feldolgozzák őket.

Metrikák visszaállítása

A befejezést követően RESTORE a következő metrikákat egy egysoros DataFrame-ként közli:

  • table_size_after_restore: A tábla mérete a visszaállítás után.

  • num_of_files_after_restore: A táblában lévő fájlok száma a visszaállítás után.

  • num_removed_files: A táblából eltávolított (logikailag törölt) fájlok száma.

  • num_restored_files: A fájlok száma, amelyeket visszagörgetés során állítottak vissza.

  • removed_files_size: A táblából eltávolított fájlok teljes mérete bájtban.

  • restored_files_size: A visszaállított fájlok teljes mérete bájtban.

    Példa a visszaállítási metrikákra

Az utolsó véglegesítési verzió megkeresése

Ha le szeretné kérdezni az aktuális SparkSession véglegesítés verziószámát az összes szálon és táblán, kérje le az SQL-konfigurációt spark.databricks.<format>.lastCommitVersionInSession. Cserélje le a <format> elemet a táblázat formátumától függően vagy delta elemre, vagy iceberg elemre.

Például:

SQL

SET spark.databricks.delta.lastCommitVersionInSession

Python

spark.conf.get("spark.databricks.delta.lastCommitVersionInSession")

Scala

spark.conf.get("spark.databricks.delta.lastCommitVersionInSession")

Ha nem történt módosítás SparkSession által véglegesítés formájában, akkor a kulcs lekérdezése üres értéket ad vissza.

Note

Ha ugyanazt SparkSession több szálon is megosztja, az hasonló a változók több szálon való megosztásához. A konfigurációs érték egyidejű frissítései során versenyhelyzetek fordulhatnak elő.