Historique de table, schéma et métriques d’opération

La DESCRIBE HISTORY commande retourne 14 colonnes pour les tables Apache Iceberg et Delta Lake qui décrivent l’histoire des opérations de table. Utilisez cette référence pour interpréter chaque colonne.

Pour des conseils sur la récupération de l’historique des tables, la requête des versions antérieures des tables et la restauration d’une table, voir Travail avec l’historique des tables.

Schéma de l’historique

La sortie de l'opération history contient les colonnes suivantes.

Colonne Type Description
version long Version de table générée par l’opération.
timestamp timestamp Moment de validation de cette version.
userId string ID de l’utilisateur qui a exécuté l’opération.
userName string Nom de l’utilisateur qui a exécuté l’opération.
fonctionnement string Nom de l’opération.
paramètres d'opération map Paramètres de l’opération (par exemple, prédicats.) Pour OPTIMIZE les opérations, ces paramètres identifient le type d’opération. Consultez Identifier le type d’opérationOPTIMIZE.
tâche struct Détails du travail Lakeflow qui a exécuté l’opération. Remplit uniquement les validations écrites à partir d’un travail Lakeflow. Sinon, null.
notebook struct Détails du notebook Databricks depuis lequel l’opération a été exécutée. Remplit uniquement les validations écrites à partir d’un notebook Databricks. Sinon, null.
clusterId string ID du cluster sur lequel l’opération s’est exécutée.
lireVersion long Version de la table qui a été lue pour effectuer l’opération d’écriture.
isolationLevel string Niveau d’isolation utilisé pour cette opération.
isBlindAppend boolean Indique si cette opération a ajouté des données.
operationMetrics map Métriques de l’opération (par exemple, nombre de lignes et de fichiers modifiés.)
UserMetadata string Les métadonnées de commit définies par l’utilisateur, si elles ont été spécifiées.
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|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

Présentation des partitionBy paramètres d’opération

Le partitionBy champ de l’historique des tables n’est significatif que pour les opérations CREATE et OVERWRITE qui définissent ou modifient le schéma de partition d’une table.

Pour les opérations d’ajout à des tables existantes (APPEND, INSERT, DELETE UPDATE, MERGE), ce champ peut afficher un tableau [] ou des colonnes de partition vides en fonction de la méthode d’écriture utilisée (.save() vs .saveAsTable()).

Cette incohérence est attendue et n’affecte pas la façon dont les données sont écrites dans des partitions. Vous ne devez pas l’utiliser pour valider les opérations d’ajout.

Exemple

Considérez une table partitionnée par la date colonne. Lorsque vous créez la table, partitionBy est renseignée :

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

L’opération CREATE dans l’historique montre :

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

Lorsque vous ajoutez des données à cette table, partitionBy affiche un tableau vide :

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

L’opération APPEND montre :

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

La valeur vide partitionBy est attendue. Les données sont toujours écrites dans les partitions correctes en fonction du schéma de partition existant de la table. Notez que la référence .save() à un chemin d’accès peut afficher des colonnes de partition dans ce champ, mais cette différence est un détail d’implémentation et n’affecte pas le comportement d’écriture.

Métriques d’opération

L’opération history retourne une collection de métriques d’opération dans la operationMetrics carte de colonnes.

Les tableaux suivants répertorient les définitions de clé de mappage par opération.

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

Les métriques suivantes sont disponibles pour ces opérations :

Nom de la métrique Description
numFiles Nombre de fichiers écrits.
numOutputBytes Taille en octets du contenu écrit.
numOutputRows Nombre de lignes écrites.

STREAMING UPDATE

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
numAddedFiles Nombre de fichiers ajoutés.
numRemovedFiles Nombre de fichiers supprimés.
numOutputRows Nombre de lignes écrites.
numOutputBytes La taille des octets d’écriture.

DELETE

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
numAddedFiles Nombre de fichiers ajoutés. Non fourni lorsque les partitions de la table sont supprimées.
numRemovedFiles Nombre de fichiers supprimés.
numDeletedRows Nombre de lignes supprimées. Non fourni lorsque les partitions de la table sont supprimées.
numCopiedRows Nombre de lignes copiées dans le processus de suppression de fichiers.
executionTimeMs Temps nécessaire pour exécuter l’ensemble de l’opération.
scanTimeMs Le temps nécessaire pour analyser les fichiers afin de trouver des correspondances.
rewriteTimeMs Temps nécessaire pour réécrire les fichiers correspondants.

TRUNCATE

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
numRemovedFiles Nombre de fichiers supprimés.
executionTimeMs Temps nécessaire pour exécuter l’ensemble de l’opération.

MERGE

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
numSourceRows Nombre de lignes dans le DataFrame source.
numTargetRowsInserted Nombre de lignes insérées dans la table cible.
numTargetRowsUpdated Nombre de lignes mises à jour dans la table cible.
numTargetRowsDeleted Nombre de lignes supprimées dans la table cible.
numTargetRowsCopied Nombre de lignes cibles copiées.
numOutputRows Nombre total de lignes écrites.
numTargetFilesAdded Nombre de fichiers ajoutés au récepteur (cible).
numTargetFilesRemoved Nombre de fichiers supprimés du récepteur (cible).
executionTimeMs Temps nécessaire pour exécuter l’ensemble de l’opération.
scanTimeMs Le temps nécessaire pour analyser les fichiers afin de trouver des correspondances.
rewriteTimeMs Temps nécessaire pour réécrire les fichiers correspondants.

UPDATE

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
numAddedFiles Nombre de fichiers ajoutés.
numRemovedFiles Nombre de fichiers supprimés.
numUpdatedRows Nombre de lignes mises à jour.
numCopiedRows Nombre de lignes copiées dans le processus de mise à jour des fichiers.
executionTimeMs Temps nécessaire pour exécuter l’ensemble de l’opération.
scanTimeMs Le temps nécessaire pour analyser les fichiers afin de trouver des correspondances.
rewriteTimeMs Temps nécessaire pour réécrire les fichiers correspondants.

FSCK

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
numRemovedFiles Nombre de fichiers supprimés.

CONVERT

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
numConvertedFiles Nombre de fichiers Parquet qui ont été convertis.

OPTIMIZE

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
numAddedFiles Nombre de fichiers ajoutés.
numRemovedFiles Nombre de fichiers optimisés.
numAddedBytes Nombre d’octets ajoutés après l’optimisation de la table.
numRemovedBytes Nombre d’octets supprimés.
minFileSize Taille du fichier le plus petit après l’optimisation de la table.
p25FileSize La taille du fichier du 25e percentile après l’optimisation du tableau.
p50FileSize Taille médiane du fichier après l’optimisation de la table.
p75FileSize Taille du fichier du 75e percentile après l’optimisation de la table.
maxFileSize Taille du plus grand fichier après l’optimisation de la table.

CLONE

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
sourceTableSize Taille en octets de la table source dans la version clonée.
sourceNumOfFiles Le nombre de fichiers dans la table source dans la version qui est clonée.
numRemovedFiles Nombre de fichiers supprimés de la table cible si une table précédente a été remplacée.
removedFilesSize Taille totale en octets des fichiers supprimés de la table cible si une table précédente a été remplacée.
numCopiedFiles Nombre de fichiers copiés vers le nouvel emplacement. 0 pour les clones superficiels.
copiedFilesSize Taille totale en octets des fichiers copiés vers le nouvel emplacement. 0 pour les clones superficiels.

RESTORE

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
tableSizeAfterRestore Taille de la table en octets après la restauration.
numOfFilesAfterRestore Nombre de fichiers dans la table après la restauration.
numRemovedFiles Nombre de fichiers supprimés par l’opération de restauration.
numRestoredFiles Nombre de fichiers ajoutés à la suite de la restauration.
removedFilesSize Taille en octets des fichiers supprimés par la restauration.
restoredFilesSize Taille en octets des fichiers ajoutés par la restauration.

VACUUM

Les métriques suivantes sont disponibles pour cette opération :

Nom de la métrique Description
numDeletedFiles Nombre de fichiers supprimés.
numVacuumedDirectories Nombre de répertoires vides.
numFilesToDelete Nombre de fichiers à supprimer.