Tabellhistorikschema och operationsmått

Kommandot DESCRIBE HISTORY returnerar 14 kolumner för Apache Iceberg- och Delta Lake-tabeller som beskriver historiken för tabelloperationerna. Använd denna referens för att tolka varje kolumn.

För vägledning om hur man hämtar tabellhistorik, förfrågar tidigare tabellversioner och återställer en tabell, se Arbeta med tabellhistorik.

Historikschema

Utdata för åtgärden history har följande kolumner.

Column Type Description
version long Tabellversionen som genereras av åtgärden.
timestamp timestamp När den här versionen har sparats.
userId string ID:t för användaren som körde åtgärden.
userName string Namnet på den användare som körde åtgärden.
operation string Operationens namn
driftparametrar map Parametrarna för åtgärden (till exempel predikat.) För OPTIMIZE åtgärder identifierar dessa parametrar typen av åtgärd. Se Identifiera typ av OPTIMIZE åtgärd.
job struct Detaljer om Lakeflow-jobbet som körde operationen. Fylls endast i för commitar som skapats av ett Lakeflow-jobb. Annars, null.
notebook struct Detaljer om den Databricks-notebook som åtgärden utfördes från. Fylls endast i för incheckningar som skapats i en Databricks-notebook. Annars, null.
clusterId string ID:t för klustret som operationen kördes på.
readVersion long Den version av tabellen som lästes för att utföra skrivåtgärden.
isolationLevel string Isoleringsnivån som används för den här åtgärden.
isBlindAppend boolean Om denna operation lade till data.
operationMetrics map Måtten för åtgärden (till exempel antal rader och filer som ändrats.)
userMetadata string Användardefinierade incheckningsmetadata om de har angetts.
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|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...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+

Anmärkning

Förstå partitionBy driftsparametrar

Fältet partitionBy i tabellhistoriken är bara meningsfullt för CREATE- och OVERWRITE-åtgärder som definierar eller ändrar en tabells partitionsschema.

För tilläggsåtgärder i befintliga tabeller (APPEND, INSERT, UPDATEDELETE, MERGE) kan det här fältet visa en tom matris [] eller partitionskolumner beroende på vilken skrivmetod som används (.save() vs .saveAsTable()).

Den här inkonsekvensen är förväntat och påverkar inte hur data skrivs till partitioner. Du bör inte använda den för att verifiera tilläggsåtgärder.

Exempel

Överväg en tabell som partitionerats av date kolumnen. När du skapar tabellen partitionBy fylls den i:

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

Create-åtgärden i historiken visar:

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

När du lägger till data i den här tabellen partitionBy visas en tom matris:

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

Operationen APPEND visar:

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

Det tomma partitionBy värdet förväntas. Data skrivs fortfarande till rätt partitioner baserat på tabellens befintliga partitionsschema. Observera att när du skriver .save() till en sökväg kan partitionskolumner visas i det här fältet, men denna skillnad är en implementeringsdetalj och påverkar inte skrivbeteendet.

Åtgärdsmått

Operationen history returnerar en samling operationsmått i kolumnkartan operationMetrics .

I följande tabeller visas mappningsnyckeldefinitionerna efter åtgärd.

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

Följande mått är tillgängliga för dessa åtgärder:

Metriknamn Description
numFiles Antalet filer som skrivits.
numOutputBytes Storleken i byte för det skriftliga innehållet.
numOutputRows Antalet rader som skrivits.

STREAMING UPDATE

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
numAddedFiles Antalet filer som har lagts till.
numRemovedFiles Antalet filer som har tagits bort.
numOutputRows Antalet rader som skrivits.
numOutputBytes Storleken på skrivningen i bytes.

DELETE

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
numAddedFiles Antalet filer som har lagts till. Tillhandahålls inte när partitioner i tabellen tas bort.
numRemovedFiles Antalet filer som har tagits bort.
numDeletedRows Antalet borttagna rader. Tillhandahålls inte när partitioner i tabellen tas bort.
numCopiedRows Antalet rader som kopieras i processen för att ta bort filer.
executionTimeMs Tiden det tar att genomföra hela operationen.
scanTimeMs Den tid det tar att söka igenom filerna efter matchningar.
rewriteTimeMs Den tid det tar att skriva om de matchade filerna.

TRUNCATE

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
numRemovedFiles Antalet filer som har tagits bort.
executionTimeMs Tiden det tar att genomföra hela operationen.

MERGE

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
numSourceRows Antalet rader i källdataramen.
numTargetRowsInserted Antalet rader som infogats i måltabellen.
numTargetRowsUpdated Antalet rader som har uppdaterats i måltabellen.
numTargetRowsDeleted Antalet rader som tagits bort i måltabellen.
numTargetRowsCopied Antalet kopierade målrader.
numOutputRows Det totala antalet rader som skrivits ut.
numTargetFilesAdded Antalet filer som har lagts till i mottagaren (målet).
numTargetFilesRemoved Antalet filer som tagits bort från mottagaren (målet).
executionTimeMs Tiden det tar att genomföra hela operationen.
scanTimeMs Den tid det tar att söka igenom filerna efter matchningar.
rewriteTimeMs Den tid det tar att skriva om de matchade filerna.

UPDATE

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
numAddedFiles Antalet filer som har lagts till.
numRemovedFiles Antalet filer som har tagits bort.
numUpdatedRows Antalet rader har uppdaterats.
numCopiedRows Antalet rader som precis kopierats över i processen för att uppdatera filer.
executionTimeMs Tiden det tar att genomföra hela operationen.
scanTimeMs Den tid det tar att söka igenom filerna efter matchningar.
rewriteTimeMs Den tid det tar att skriva om de matchade filerna.

FSCK

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
numRemovedFiles Antalet filer som har tagits bort.

CONVERT

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
numConvertedFiles Antalet Parquet-filer som har konverterats.

OPTIMIZE

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
numAddedFiles Antalet filer som har lagts till.
numRemovedFiles Antalet filer som optimerats.
numAddedBytes Antalet byte som lagts till efter att tabellen har optimerats.
numRemovedBytes Antalet borttagna byte.
minFileSize Storleken på den minsta filen efter att tabellen har optimerats.
p25FileSize Storleken på den 25:e percentilfilen efter att tabellen har optimerats.
p50FileSize Medianfilens storlek efter att tabellen optimerats.
p75FileSize Storleken på den 75:e percentilfilen efter att tabellen optimerats.
maxFileSize Storleken på den största filen efter att tabellen har optimerats.

CLONE

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
sourceTableSize Storleken i byte för källtabellen i den version som klonas.
sourceNumOfFiles Antalet filer i källtabellen i den version som klonas.
numRemovedFiles Antalet filer som tagits bort från måltabellen om en tidigare tabell ersattes.
removedFilesSize Den totala storleken i byte för de filer som tagits bort från måltabellen om en tidigare tabell ersattes.
numCopiedFiles Antalet filer som kopierades till den nya platsen. 0 för grunda kloner.
copiedFilesSize Den totala storleken i byte för de filer som kopierades till den nya platsen. 0 för grunda kloner.

RESTORE

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
tableSizeAfterRestore Tabellstorleken i byte efter återställningen.
numOfFilesAfterRestore Antalet filer i tabellen efter återställningen.
numRemovedFiles Antalet filer som tagits bort av återställningsåtgärden.
numRestoredFiles Antalet filer som lades till som ett resultat av återställningen.
removedFilesSize Storleken i byte av filer som tagits bort av återställningen.
restoredFilesSize Storleken i byte för filer som återställningen har lagt till.

VACUUM

Följande mått är tillgängliga för den här åtgärden:

Metriknamn Description
numDeletedFiles Antalet borttagna filer.
numVacuumedDirectories Antalet dammsugna kataloger.
numFilesToDelete Antalet filer som ska tas bort.