Schemat historii tabeli i metryki operacji

Dowództwo DESCRIBE HISTORY zwraca 14 kolumn dla tabel Apache Iceberg i Delta Lake, które opisują historię operacji tabelowych. Użyj tego odniesienia, aby zinterpretować każdą kolumnę.

Aby uzyskać wskazówki dotyczące odzyskiwania historii tabeli, zapytań do wcześniejszych wersji tabeli oraz przywracania tabeli, zobacz Praca z historią tabeli.

Schemat historii

Dane wyjściowe history operacji zawierają następujące kolumny.

Column Typ Description
wersja long Wersja tabeli wygenerowana przez operację.
sygnatura czasowa timestamp Kiedy ta wersja została zatwierdzona.
userId string Identyfikator użytkownika, który uruchomił operację.
userName string Nazwa użytkownika, który uruchomił operację.
operacja string Nazwa operacji.
parametry operacji map Parametry operacji (na przykład predykaty). W przypadku OPTIMIZE operacji te parametry identyfikują typ operacji. Zobacz Identyfikowanie typu OPTIMIZE operacji.
zadanie struct Szczegóły zadania Lakeflow, w ramach którego uruchomiono operację. Jest wypełniane tylko dla commitów utworzonych przez zadanie Lakeflow. W przeciwnym razie null.
notes struct Szczegóły notesu Databricks, z którego uruchomiono operację. Jest wypełniane tylko dla commitów utworzonych w notesniku Databricks. W przeciwnym razie null.
clusterId string Identyfikator klastra, na którym uruchomiono operację.
odczytajWersję long Wersja tabeli odczytanej w celu wykonania operacji zapisu.
isolationLevel string Poziom izolacji używany dla tej operacji.
isBlindAppend boolean Czy ta operacja dołączała dane.
operationMetrics map Metryki operacji (na przykład liczba wierszy i plików zmodyfikowanych).
userMetadata string Metadane zatwierdzenia zdefiniowane przez użytkownika, jeśli zostały określone.
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|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...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+

Uwaga / Notatka

Opis partitionBy parametrów operacji

Pole partitionBy w historii tabeli ma znaczenie tylko w przypadku operacji CREATE i OVERWRITE, które definiują lub zmieniają schemat partycji tabeli.

W przypadku operacji dołączania do istniejących tabel (APPEND, INSERT, , UPDATEDELETE, MERGE) to pole może wyświetlać pustą tablicę [] lub kolumny partycji w zależności od używanej metody zapisu (.save() vs .saveAsTable()).

Ta niespójność jest oczekiwanym zachowaniem i nie wpływa na sposób zapisywania danych w partycjach. Nie należy jej używać do weryfikowania operacji dołączania.

Przykład

Rozważ podzielenie tabeli na partycje według kolumny date . Po utworzeniu tabeli partitionBy zostanie wypełniona:

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

Operacja CREATE w historii pokazuje:

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

Po dołączeniu danych do tej tabeli partitionBy zostanie wyświetlona pusta tablica:

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

Operacja APPEND pokazuje:

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

Oczekuje się, że wartość partitionBy będzie pusta. Dane są nadal zapisywane we poprawnych partycjach na podstawie istniejącego schematu partycji tabeli. Pamiętaj, że w przypadku ścieżki .save() w tym polu mogą być wyświetlane kolumny partycjonowania, ale ta różnica jest szczegółem implementacyjnym i nie wpływa na działanie zapisu.

Metryki operacji

Operacja history zwraca zbiór metryk operacji w mapie kolumnowej operationMetrics .

W poniższych tabelach wymieniono definicje kluczy mapy według operacji.

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

Następujące metryki są dostępne dla tych operacji:

Nazwa metryki Description
numFiles Liczba zapisanych plików.
numOutputBytes Rozmiar w bajtach zapisanej zawartości.
numOutputRows Liczba zapisanych wierszy.

STREAMING UPDATE

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
numAddedFiles Liczba dodanych plików.
numRemovedFiles Liczba usuniętych plików.
numOutputRows Liczba zapisanych wierszy.
numOutputBytes Rozmiar zapisu w bajtach.

DELETE

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
numAddedFiles Liczba dodanych plików. Nie jest dostępne, kiedy partycje tabeli są usuwane.
numRemovedFiles Liczba usuniętych plików.
numDeletedRows Liczba usuniętych wierszy. Nie jest dostępne, kiedy partycje tabeli są usuwane.
numCopiedRows Liczba wierszy skopiowanych w procesie usuwania plików.
executionTimeMs Czas potrzebny na wykonanie całej operacji.
scanTimeMs Czas potrzebny na skanowanie plików pod kątem dopasowań.
rewriteTimeMs Czas potrzebny na ponowne zapisywanie dopasowanych plików.

TRUNCATE

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
numRemovedFiles Liczba usuniętych plików.
executionTimeMs Czas potrzebny na wykonanie całej operacji.

MERGE

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
numSourceRows Liczba wierszy w źródłowej ramce danych.
numTargetRowsInserted Liczba wierszy wstawionych do tabeli docelowej.
numTargetRowsUpdated Liczba wierszy zaktualizowanych w tabeli docelowej.
numTargetRowsDeleted Liczba wierszy usuniętych w tabeli docelowej.
numTargetRowsCopied Liczba skopiowanych wierszy docelowych.
numOutputRows Całkowita liczba zapisanych wierszy.
numTargetFilesAdded Liczba plików dodanych do ujścia (elementu docelowego).
numTargetFilesRemoved Liczba plików usuniętych z ujścia (celu).
executionTimeMs Czas potrzebny na wykonanie całej operacji.
scanTimeMs Czas potrzebny na skanowanie plików pod kątem dopasowań.
rewriteTimeMs Czas potrzebny na ponowne zapisywanie dopasowanych plików.

UPDATE

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
numAddedFiles Liczba dodanych plików.
numRemovedFiles Liczba usuniętych plików.
numUpdatedRows Liczba zaktualizowanych wierszy.
numCopiedRows Liczba wierszy właśnie skopiowanych w procesie aktualizowania plików.
executionTimeMs Czas potrzebny na wykonanie całej operacji.
scanTimeMs Czas potrzebny na skanowanie plików pod kątem dopasowań.
rewriteTimeMs Czas potrzebny na ponowne zapisywanie dopasowanych plików.

FSCK

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
numRemovedFiles Liczba usuniętych plików.

CONVERT

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
numConvertedFiles Liczba przekonwertowanych plików Parquet.

OPTIMIZE

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
numAddedFiles Liczba dodanych plików.
numRemovedFiles Liczba zoptymalizowanych plików.
numAddedBytes Liczba bajtów dodanych po zoptymalizowaniu tabeli.
numRemovedBytes Liczba usuniętych bajtów.
minFileSize Rozmiar najmniejszego pliku po zoptymalizowaniu tabeli.
p25FileSize Rozmiar pliku dla 25. percentyla po zoptymalizowaniu tabeli.
p50FileSize Rozmiar pliku mediany po zoptymalizowaniu tabeli.
p75FileSize Rozmiar pliku z 75. percentyla po optymalizacji tabeli.
maxFileSize Rozmiar największego pliku po zoptymalizowaniu tabeli.

CLONE

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
sourceTableSize Rozmiar w bajtach tabeli źródłowej w sklonowanej wersji.
sourceNumOfFiles Liczba plików w tabeli źródłowej w sklonowanej wersji.
numRemovedFiles Liczba plików usuniętych z tabeli docelowej, jeśli poprzednia tabela została zamieniona.
removedFilesSize Całkowity rozmiar w bajtach plików usuniętych z tabeli docelowej, jeśli poprzednia tabela została zamieniona.
numCopiedFiles Liczba plików, które zostały skopiowane do nowej lokalizacji. 0 dla płytkich klonów.
copiedFilesSize Łączny rozmiar w bajtach plików, które zostały skopiowane do nowej lokalizacji. 0 dla płytkich klonów.

RESTORE

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
tableSizeAfterRestore Rozmiar tabeli w bajtach po przywróceniu.
numOfFilesAfterRestore Liczba plików w tabeli po przywróceniu.
numRemovedFiles Liczba plików usuniętych przez operację przywracania.
numRestoredFiles Liczba plików, które zostały dodane w wyniku przywracania.
removedFilesSize Rozmiar plików usuniętych przez przywracanie w bajtach.
restoredFilesSize Rozmiar w bajtach plików dodanych przez przywracanie.

VACUUM

Dla tej operacji są dostępne następujące metryki:

Nazwa metryki Description
numDeletedFiles Liczba usuniętych plików.
numVacuumedDirectories Liczba katalogów opróżnionych.
numFilesToDelete Liczba plików do usunięcia.