Schéma de l'historique de la table et métriques des opérations
La commande DESCRIBE HISTORY renvoie 14 colonnes pour les tables Apache Iceberg et Delta Lake qui décrivent l'historique des opérations de table. Utilisez cette référence pour interpréter chaque colonne.
Pour obtenir des conseils sur la récupération de l'historique de table, l'interrogation des versions précédentes de table et la restauration d'une table, consultez Travailler avec l'historique de table.
Schéma d'historique
La sortie de l'opération history comporte les colonnes suivantes.
Colonne | Type | Description |
|---|---|---|
Version |
| La version de table générée par l'opération. |
Horodatage |
| Date de validation de cette version. |
ID utilisateur |
| L'ID de l'utilisateur ayant effectué l'opération. |
Nom d'utilisateur |
| Le nom de l'utilisateur ayant exécuté l'opération. |
Opérations |
| Le nom de l’opération. |
Paramètres d'opération |
| Les paramètres de l'opération (par exemple, les prédicats). Pour les opérations |
Job |
| Les détails du Lakeflow job qui a exécuté l’opération. Se remplit uniquement pour les commits écrits à partir d’un Lakeflow job. Sinon, |
Notebook |
| Les détails du notebook Databricks à partir duquel l'opération a été exécutée. Se remplit uniquement pour les commits écrits à partir d'un notebook Databricks. Sinon, |
clusterId |
| L'identifiant du cluster sur lequel l'opération a été exécutée. |
readVersion |
| La version de la table qui a été lue pour effectuer l'opération d'écriture. |
isolationLevel |
| Le niveau d'isolation utilisé pour cette opération. |
isBlindAppend |
| Indique si cette opération a ajouté des données. |
operationMetrics |
| Les métriques de l'opération (par exemple, le nombre de lignes et de fichiers modifiés.) |
userMetadata |
| 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...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
-
Si vous écrivez dans une table en utilisant les méthodes suivantes, certaines colonnes ne sont pas disponibles :
-
Les colonnes ajoutées ultérieurement seront toujours ajoutées après la dernière colonne.
Comprendre partitionBy dans les paramètres d'opération
Le champ partitionBy dans l'historique de la table 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 sur des tables existantes (APPEND, INSERT, UPDATE, DELETE, MERGE), ce champ peut afficher un tableau vide [] ou des colonnes de partition selon la méthode d'écriture utilisée (.save() ou .saveAsTable()).
Cette incohérence est un comportement attendu et n'affecte pas la manière dont les données sont écrites dans les partitions. Vous ne devriez pas l'utiliser pour valider les opérations d'ajout (append).
Exemple
Considérez une table partitionnée par la colonne date. Lorsque vous créez la table, partitionBy est renseigné :
df.write.format("delta") \
.partitionBy("date") \
.saveAsTable("sales_data")
L’opération CREATE dans l’historique affiche :
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 affiche :
operationParameters: {
"mode": "Append",
"partitionBy": "[]"
}
La valeur partitionBy vide 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 .save() vers un chemin 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 des opérations
L’opération history renvoie une collection de métriques d’opérations dans la carte de colonnes operationMetrics.
Les tableaux suivants listent les définitions des clés 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 |
|---|---|
| Nombre de fichiers écrits. |
| Taille en octets du contenu écrit. |
| Le nombre de lignes écrites. |
STREAMING UPDATE
Les métriques suivantes sont disponibles pour cette opération :
Nom de la métrique | Description |
|---|---|
| Le nombre de fichiers ajoutés. |
| Le nombre de fichiers supprimés. |
| Le nombre de lignes écrites. |
| La taille de l’écriture en octets. |
DELETE
Les métriques suivantes sont disponibles pour cette opération :
Nom de la métrique | Description |
|---|---|
| Le nombre de fichiers ajoutés. Non fourni lorsque les partitions de la table sont supprimées. |
| Le nombre de fichiers supprimés. |
| Le nombre de lignes supprimées. Non fourni lorsque les partitions de la table sont supprimées. |
| Le nombre de lignes copiées lors du processus de suppression de fichiers. |
| Le temps nécessaire à l'exécution de l'opération complète. |
| Le temps nécessaire pour analyser les fichiers à la recherche de correspondances. |
| 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 |
|---|---|
| Le nombre de fichiers supprimés. |
| Le temps nécessaire à l'exécution de l'opération complète. |
MERGE
Les métriques suivantes sont disponibles pour cette opération :
Nom de la métrique | Description |
|---|---|
| Le nombre de lignes dans le DataFrame source. |
| Le nombre de lignes insérées dans la table cible. |
| Le nombre de lignes mises à jour dans la table cible. |
| Le nombre de lignes supprimées dans la table cible. |
| Le nombre de lignes cibles copiées. |
| Le nombre total de lignes écrites. |
| Nombre de fichiers ajoutés au sink (cible). |
| Le nombre de fichiers supprimés du récepteur (cible). |
| Le temps nécessaire à l'exécution de l'opération complète. |
| Le temps nécessaire pour analyser les fichiers à la recherche de correspondances. |
| 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 |
|---|---|
| Le nombre de fichiers ajoutés. |
| Le nombre de fichiers supprimés. |
| Le nombre de lignes mises à jour. |
| Le nombre de lignes qui viennent d'être copiées lors du processus de mise à jour des fichiers. |
| Le temps nécessaire à l'exécution de l'opération complète. |
| Le temps nécessaire pour analyser les fichiers à la recherche de correspondances. |
| 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 |
|---|---|
| Le nombre de fichiers supprimés. |
CONVERT
Les métriques suivantes sont disponibles pour cette opération :
Nom de la métrique | Description |
|---|---|
| Le 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 |
|---|---|
| Le nombre de fichiers ajoutés. |
| Le nombre de fichiers optimisés. |
| Nombre d'octets ajoutés après l'optimisation de la table. |
| Le nombre d'octets supprimés. |
| La taille du plus petit fichier après l'optimisation de la table. |
| La taille du fichier au 25e percentile après l’optimisation de la table. |
| La taille médiane des fichiers après l'optimisation de la table. |
| La taille du fichier au 75e centile après l'optimisation de la table. |
| La taille du plus gros 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 |
|---|---|
| La taille en octets de la table source à la version clonée. |
| Nombre de fichiers dans la table source à la version clonée. |
| Nombre de fichiers supprimés de la table cible si une table précédente a été remplacée. |
| La taille totale en octets des fichiers supprimés de la table cible si une table précédente a été remplacée. |
| Le nombre de fichiers qui ont été copiés vers le nouvel emplacement. 0 pour les clones superficiels. |
| La taille totale en octets des fichiers qui ont été 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 |
|---|---|
| Taille de la table en octets après restauration. |
| Le nombre de fichiers dans la table après la restauration. |
| Le nombre de fichiers supprimés par l'opération de restauration. |
| Le nombre de fichiers ajoutés suite à la restauration. |
| La taille en octets des fichiers supprimés par la restauration. |
| La 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 |
|---|---|
| Le nombre de fichiers supprimés. |
| Le nombre de répertoires ayant fait l'objet d'un VACUUM. |
| Le nombre de fichiers à supprimer. |