Esquema histórico de tablas y métricas de operación

El DESCRIBE HISTORY comando devuelve 14 columnas para tablas Apache, Iceberg y Delta Lake que describen la historia de las operaciones de tablas. Utiliza esta referencia para interpretar cada columna.

Para orientación sobre cómo recuperar el historial de tablas, consultar versiones anteriores de las tablas y restaurar una tabla, véase Trabajar con historial de tablas.

Esquema del historial

La salida de la operación history tiene las columnas siguientes.

Columna Tipo Descripción
version long La versión de la tabla generada por la operación.
timestamp timestamp Cuándo se confirmó esta versión.
ID de usuario string Identificador del usuario que ejecutó la operación.
userName string Nombre del usuario que ejecutó la operación.
operation string Nombre de la operación.
parámetros de operación map Parámetros de la operación (por ejemplo, predicados). En el caso OPTIMIZE de las operaciones, estos parámetros identifican el tipo de operación. Consulte Identificación del tipo de OPTIMIZE operación.
trabajo struct Detalles del trabajo de Lakeflow que ejecutó la operación. Rellena solo las confirmaciones escritas desde un trabajo de Lakeflow. En caso contrario, es null.
notebook struct Detalles del cuaderno de Databricks desde el que se ejecutó la operación. Rellena solo las confirmaciones escritas desde un cuaderno de Databricks. En caso contrario, es null.
clusterId string Identificador del clúster en el que se ejecutó la operación.
versión de lectura long Versión de la tabla que se leyó para realizar la operación de escritura.
isolationLevel string Nivel de aislamiento usado para esta operación.
isBlindAppend boolean Indica si esta operación ha anexado datos.
operationMetrics map Métricas de la operación (por ejemplo, número de filas y archivos modificados).
userMetadata string Metadatos de confirmación definidos por el usuario si se especificó.
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|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...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+

Nota:

Descripción partitionBy de los parámetros de operación

El partitionBy campo del historial de tablas solo es significativo para las operaciones CREATE y OVERWRITE que definen o cambian el esquema de partición de una tabla.

Para las operaciones de anexión a tablas existentes (APPEND, INSERT, , UPDATEDELETE, MERGE), este campo podría mostrar una matriz [] vacía o columnas de partición en función del método de escritura usado (.save() frente .saveAsTable()a ).

Esta incoherencia es el comportamiento esperado y no afecta a cómo se escriben los datos en las particiones. No debe usarlo para validar las operaciones de anexión.

Ejemplo

Considere una tabla particionada por la columna date. Al crear la tabla, partitionBy se rellena:

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

La operación CREATE en el historial muestra:

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

Al anexar datos a esta tabla, partitionBy se muestra una matriz vacía:

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

La operación APPEND muestra:

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

Se espera el valor vacío partitionBy. Los datos se siguen escribiendo en las particiones correctas según el esquema de partición existente de la tabla. Tenga en cuenta que .save() para una ruta podría mostrar columnas de partición en este campo, pero esta diferencia es un detalle de implementación y no afecta al comportamiento al escribir.

Métricas de operación

La history operación devuelve una colección de métricas de operación en el operationMetrics mapa de columnas.

En las tablas siguientes, se muestran las definiciones de clave del mapa según la operación.

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

Las métricas siguientes están disponibles para estas operaciones:

Nombre de la medida Descripción
numFiles Número de archivos escritos.
numOutputBytes Tamaño en bytes del contenido escrito.
numOutputRows Número de filas escritas.

STREAMING UPDATE

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
numAddedFiles Número de archivos agregados.
numRemovedFiles Número de archivos eliminados.
numOutputRows Número de filas escritas.
numOutputBytes El tamaño de los bytes de escritura.

DELETE

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
numAddedFiles Número de archivos agregados. No se proporciona cuando se eliminan las particiones de la tabla.
numRemovedFiles Número de archivos eliminados.
numDeletedRows Número de filas eliminadas. No se proporciona cuando se eliminan las particiones de la tabla.
numCopiedRows Número de filas copiadas en el proceso de eliminación de archivos.
executionTimeMs Tiempo necesario para ejecutar toda la operación.
scanTimeMs Tiempo necesario para examinar los archivos para buscar coincidencias.
rewriteTimeMs Tiempo necesario para volver a escribir los archivos coincidentes.

TRUNCATE

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
numRemovedFiles Número de archivos eliminados.
executionTimeMs Tiempo necesario para ejecutar toda la operación.

MERGE

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
numSourceRows Número de filas del dataframe de origen.
numTargetRowsInserted Número de filas insertadas en la tabla de destino.
numTargetRowsUpdated Número de filas actualizadas en la tabla de destino.
numTargetRowsDeleted Número de filas eliminadas en la tabla de destino.
numTargetRowsCopied Número de filas de destino copiadas.
numOutputRows Número total de filas escritas.
numTargetFilesAdded El número de archivos añadidos al sumidero (destino).
numTargetFilesRemoved El número de archivos eliminados del sumidero (destino).
executionTimeMs Tiempo necesario para ejecutar toda la operación.
scanTimeMs Tiempo necesario para examinar los archivos para buscar coincidencias.
rewriteTimeMs Tiempo necesario para volver a escribir los archivos coincidentes.

UPDATE

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
numAddedFiles Número de archivos agregados.
numRemovedFiles Número de archivos eliminados.
numUpdatedRows Número de filas actualizadas.
numCopiedRows Número de filas que se acaban de copiar durante el proceso de actualización de archivos.
executionTimeMs Tiempo necesario para ejecutar toda la operación.
scanTimeMs Tiempo necesario para examinar los archivos para buscar coincidencias.
rewriteTimeMs Tiempo necesario para volver a escribir los archivos coincidentes.

FSCK

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
numRemovedFiles Número de archivos eliminados.

CONVERT

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
numConvertedFiles Número de archivos Parquet que se han convertido.

OPTIMIZE

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
numAddedFiles Número de archivos agregados.
numRemovedFiles Número de archivos optimizados.
numAddedBytes Número de bytes agregados después de optimizar la tabla.
numRemovedBytes Número de bytes quitados.
minFileSize Tamaño del archivo más pequeño después de optimizar la tabla.
p25FileSize El tamaño del archivo del percentil 25 después de optimizar la tabla.
p50FileSize Tamaño medio del archivo después de optimizar la tabla.
p75FileSize El tamaño del archivo correspondiente al percentil 75 tras la optimización de la tabla.
maxFileSize Tamaño del archivo más grande después de optimizar la tabla.

CLONE

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
sourceTableSize Tamaño en bytes de la tabla de origen en la versión clonada.
sourceNumOfFiles Número de archivos de la tabla de origen en la versión que se clona.
numRemovedFiles Número de archivos quitados de la tabla de destino si se reemplazó una tabla anterior.
removedFilesSize Tamaño total en bytes de los archivos quitados de la tabla de destino si se reemplazó una tabla anterior.
numCopiedFiles Número de archivos que se copiaron en la nueva ubicación. 0 para clones superficiales.
copiedFilesSize Tamaño total en bytes de los archivos que se copiaron en la nueva ubicación. 0 para clones superficiales.

RESTORE

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
tableSizeAfterRestore Tamaño de tabla en bytes después de la restauración.
numOfFilesAfterRestore Número de archivos de la tabla después de la restauración.
numRemovedFiles Número de archivos eliminados por la operación de restauración.
numRestoredFiles Número de archivos que se agregaron como resultado de la restauración.
removedFilesSize Tamaño en bytes de archivos quitados por la restauración.
restoredFilesSize Tamaño en bytes de archivos agregados por la restauración.

VACUUM

Las métricas siguientes están disponibles para esta operación:

Nombre de la medida Descripción
numDeletedFiles Número de archivos eliminados.
numVacuumedDirectories Número de directorios vacíos.
numFilesToDelete Número de archivos que se van a eliminar.