Tabellengeschichtsschema und Operationsmetriken

Der Befehl DESCRIBE HISTORY liefert 14 Spalten für Apache Iceberg- und Delta Lake-Tabellen, die die Geschichte der Tabellenoperationen beschreiben. Verwenden Sie diese Referenz, um jede Spalte zu interpretieren.

Für Hinweise zum Abruf der Tabellenhistorie, zum Abfragen früherer Tabellenversionen und zur Wiederherstellung einer Tabelle siehe Arbeit mit Tabellengeschichte.

Verlaufsschema

Die Ausgabe des Vorgangs history enthält die folgenden Spalten.

Column Typ Beschreibung
version long Die vom Vorgang generierte Tabellenversion.
timestamp timestamp Zeitpunkt, zu dem diese Version committet wurde.
userId string Die ID des Benutzers, der den Vorgang ausgeführt hat.
userName string Der Name des Benutzers, der den Vorgang ausgeführt hat.
Betrieb string Der Name des Vorgangs.
Betriebsparameter map Die Parameter des Vorgangs (z. B. Prädikate.) Bei OPTIMIZE Vorgängen identifizieren diese Parameter den Typ des Vorgangs. Siehe Identifizieren des VorgangstypsOPTIMIZE.
job struct Die Details des Lakeflow-Auftrags, der den Vorgang ausgeführt hat. Füllt nur für Commits, die aus einem Lakeflow-Auftrag geschrieben wurden. Andernfalls, null.
Notebook struct Die Details des Databricks-Notizbuchs, aus dem der Vorgang ausgeführt wurde. Wird nur für Commits ausgefüllt, die in einem Databricks-Notebook erstellt wurden. Andernfalls, null.
clusterId string Die ID des Clusters, auf dem der Vorgang ausgeführt wurde.
Version lesen long Die Version der Tabelle, die zum Ausführen des Schreibvorgangs gelesen wurde.
isolationLevel string Die für diesen Vorgang verwendete Isolationsstufe.
isBlindAppend boolean Gibt an, ob dieser Vorgang Daten angefügt hat.
operationMetrics map Die Metriken des Vorgangs (z. B. Anzahl von Zeilen und Dateien geändert.)
Benutzermetadaten string Die benutzerdefinierten Commit-Metadaten, falls angegeben.
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|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...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+

Hinweis

Verständnis partitionBy für Betriebsparameter

Das partitionBy Feld im Tabellenverlauf ist nur für CREATE- und OVERWRITE-Vorgänge sinnvoll, die das Partitionsschema einer Tabelle definieren oder ändern.

Bei Anfügevorgängen an vorhandene Tabellen (APPEND, INSERT, , UPDATEDELETE, MERGE) kann in diesem Feld je nach verwendeter Schreibmethode ([] vs .save()) ein leeres Array .saveAsTable() oder Partitionsspalten angezeigt werden.

Diese Inkonsistenz ist ein erwartetes Verhalten und wirkt sich nicht darauf aus, wie Daten in Partitionen geschrieben werden. Sie sollten sie nicht zum Überprüfen von Anfügevorgängen verwenden.

Beispiel

Betrachten Sie eine Tabelle, die von der date Spalte partitioniert wird. Wenn Sie die Tabelle erstellen, wird partitionBy mit folgenden Werten gefüllt:

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

Der CREATE-Vorgang im Verlauf zeigt Folgendes:

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

Wenn Sie Daten an diese Tabelle anhängen, zeigt partitionBy ein leeres Array an:

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

Der APPEND-Vorgang zeigt:

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

Es wird erwartet, dass der partitionBy Wert leer ist. Die Daten werden weiterhin basierend auf dem vorhandenen Partitionsschema der Tabelle in die richtigen Partitionen geschrieben. Beachten Sie, dass beim Schreiben in einen Pfad .save() in diesem Feld möglicherweise Partitionsspalten angezeigt werden, dieser Unterschied jedoch ein Implementierungsdetail ist und keine Auswirkungen auf das Schreibverhalten hat.

Vorgangsmetriken

Die Operation history liefert eine Sammlung von Operationsmetriken in der Spaltenabbildung operationMetrics .

In den folgenden Tabellen sind die Kartenschlüsseldefinitionen pro Vorgang aufgeführt.

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

Die folgenden Metriken sind für diese Vorgänge verfügbar:

Metrikname Beschreibung
numFiles Die Anzahl der geschriebenen Dateien.
numOutputBytes Die Größe in Byte des geschriebenen Inhalts.
numOutputRows Die Anzahl der geschriebenen Zeilen.

STREAMING UPDATE

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
numAddedFiles Die Anzahl der hinzugefügten Dateien.
numRemovedFiles Die Anzahl der entfernten Dateien.
numOutputRows Die Anzahl der geschriebenen Zeilen.
numOutputBytes Die Größe des Schreibens in Bytes.

DELETE

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
numAddedFiles Die Anzahl der hinzugefügten Dateien. Wird nicht angegeben, wenn Partitionen der Tabelle gelöscht werden.
numRemovedFiles Die Anzahl der entfernten Dateien.
numDeletedRows Die Anzahl der entfernten Zeilen. Wird nicht angegeben, wenn Partitionen der Tabelle gelöscht werden.
numCopiedRows Die Anzahl der Zeilen, die beim Löschen von Dateien kopiert wurden.
executionTimeMs Die Zum Ausführen des gesamten Vorgangs benötigte Zeit.
scanTimeMs Die zum Scannen der Dateien auf Übereinstimmungen benötigte Zeit.
rewriteTimeMs Die Zeit, die zum Umschreiben der übereinstimmenden Dateien gedauert hat.

TRUNCATE

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
numRemovedFiles Die Anzahl der entfernten Dateien.
executionTimeMs Die Zum Ausführen des gesamten Vorgangs benötigte Zeit.

MERGE

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
numSourceRows Die Anzahl der Zeilen im Quelldatenframe.
numTargetRowsInserted Die Anzahl der Zeilen, die in die Zieltabelle eingefügt wurden.
numTargetRowsUpdated Die Anzahl der Zeilen, die in der Zieltabelle aktualisiert wurden.
numTargetRowsDeleted Die Anzahl der in der Zieltabelle gelöschten Zeilen.
numTargetRowsCopied Die Anzahl der kopierten Zielzeilen.
numOutputRows Die Gesamtzahl der geschriebenen Zeilen.
numTargetFilesAdded Die Anzahl der Dateien, die der Spüle (Ziel) hinzugefügt wurden.
numTargetFilesRemoved Die Anzahl der Dateien, die aus der Spüle (Ziel) entfernt wurden.
executionTimeMs Die Zum Ausführen des gesamten Vorgangs benötigte Zeit.
scanTimeMs Die zum Scannen der Dateien auf Übereinstimmungen benötigte Zeit.
rewriteTimeMs Die Zeit, die zum Umschreiben der übereinstimmenden Dateien gedauert hat.

UPDATE

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
numAddedFiles Die Anzahl der hinzugefügten Dateien.
numRemovedFiles Die Anzahl der entfernten Dateien.
numUpdatedRows Die Anzahl der aktualisierten Zeilen.
numCopiedRows Die Anzahl der Zeilen, die während der Dateiaktualisierung kopiert wurden.
executionTimeMs Die Zum Ausführen des gesamten Vorgangs benötigte Zeit.
scanTimeMs Die zum Scannen der Dateien auf Übereinstimmungen benötigte Zeit.
rewriteTimeMs Die Zeit, die zum Umschreiben der übereinstimmenden Dateien gedauert hat.

FSCK

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
numRemovedFiles Die Anzahl der entfernten Dateien.

CONVERT

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
numConvertedFiles Die Anzahl der Parquet-Dateien, die konvertiert wurden.

OPTIMIZE

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
numAddedFiles Die Anzahl der hinzugefügten Dateien.
numRemovedFiles Die Anzahl der optimierten Dateien.
numAddedBytes Die Anzahl der Bytes, die nach der Optimierung der Tabelle hinzugefügt wurden.
numRemovedBytes Die Anzahl der entfernten Bytes.
minFileSize Die Größe der kleinsten Datei, nachdem die Tabelle optimiert wurde.
p25FileSize Die Dateigröße im 25. Perzentil nach der Optimierung der Tabelle.
p50FileSize Die Mediandateigröße, nachdem die Tabelle optimiert wurde.
p75FileSize Die Größe der Datei am 75. Perzentil nach der Optimierung der Tabelle.
maxFileSize Die Größe der größten Datei nach der Optimierung der Tabelle.

CLONE

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
sourceTableSize Die Größe in Byte der Quelltabelle in der Version, die geklont wird.
sourceNumOfFiles Die Anzahl der Dateien in der Quelltabelle in der Version, die geklont wird.
numRemovedFiles Die Anzahl der Dateien, die aus der Zieltabelle entfernt wurden, wenn eine vorherige Tabelle ersetzt wurde.
removedFilesSize Die Gesamtgröße in Byte der Dateien, die aus der Zieltabelle entfernt wurden, wenn eine vorherige Tabelle ersetzt wurde.
numCopiedFiles Die Anzahl der Dateien, die an den neuen Speicherort kopiert wurden. „0“ für flache Klone.
copiedFilesSize Die Gesamtgröße in Byte der Dateien, die an den neuen Speicherort kopiert wurden. „0“ für flache Klone.

RESTORE

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
tableSizeAfterRestore Die Tabellengröße in Byte nach der Wiederherstellung.
numOfFilesAfterRestore Die Anzahl der Dateien in der Tabelle nach der Wiederherstellung.
numRemovedFiles Die Anzahl der Dateien, die vom Wiederherstellungsvorgang entfernt wurden.
numRestoredFiles Die Anzahl der Dateien, die als Ergebnis der Wiederherstellung hinzugefügt wurden.
removedFilesSize Die Größe in Bytes von Dateien, die von der Wiederherstellung entfernt wurden.
restoredFilesSize Die Größe in Bytes von Dateien, die durch die Wiederherstellung hinzugefügt wurden.

VACUUM

Die folgenden Metriken sind für diesen Vorgang verfügbar:

Metrikname Beschreibung
numDeletedFiles Die Anzahl der gelöschten Dateien.
numVacuumedDirectories Die Anzahl der vakuumierten Verzeichnisse.
numFilesToDelete Die Anzahl der zu löschenden Dateien.