Histórico de tabelas, esquema e métricas de operação

O DESCRIBE HISTORY comando devolve 14 colunas para tabelas Apache Iceberg e Delta Lake que descrevem a história das operações de tabelas. Use esta referência para interpretar cada coluna.

Para orientações sobre como recuperar o histórico das tabelas, consultar versões anteriores das tabelas e restaurar uma tabela, consulte Trabalhar com histórico de tabelas.

Esquema do histórico

A saída da operação history tem as seguintes colunas.

Coluna Tipo Description
versão long A versão da tabela gerada pela operação.
carimbo de data/hora timestamp Quando esta versão foi cometida.
userId string O ID do utilizador que executou a operação.
userName string O nome do utilizador que executou a operação.
operação string O nome da operação.
parâmetros de operação map Os parâmetros da operação (por exemplo, predicados.) Para OPTIMIZE operações, estes parâmetros identificam o tipo de operação. Consulte Identificar o tipo de operação OPTIMIZE.
tarefa struct Os detalhes da tarefa do Lakeflow que executou a operação. É preenchido apenas para commits efetuados por uma tarefa do Lakeflow. Caso contrário, null.
bloco de notas struct Os detalhes do caderno Databricks a partir do qual a operação foi executada. É preenchido apenas para commits efetuados a partir de um notebook do Databricks. Caso contrário, null.
clusterId string O ID do cluster onde a operação decorria.
lerVersão long A versão da tabela que foi lida para realizar a operação de escrita.
isolationLevel string O nível de isolamento utilizado nesta operação.
isBlindAppend boolean Se esta operação anexou dados.
operationMetrics map As métricas da operação (por exemplo, número de linhas e ficheiros modificados.)
userMetadata string Os metadados de commit definidos pelo utilizador, caso tenham sido especificados.
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|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...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+

Observação

Compreensão partitionBy dos parâmetros de operação

O partitionBy campo no histórico da tabela só tem significado para operações CREATE e OVERWRITE que definem ou alteram o esquema de partição de uma tabela.

Para operações de acréscimo a tabelas existentes (APPEND, INSERT, UPDATE, DELETE, MERGE), este campo pode mostrar uma matriz [] vazia ou colunas de partição, dependendo do método de gravação usado (.save() vs .saveAsTable()).

Esta inconsistência é um comportamento esperado e não afeta a forma como os dados são escritos nas partições. Não deves usá-lo para validar operações de anexação.

Exemplo

Considere uma tabela particionada pela date coluna. Quando crias a tabela, partitionBy é preenchido:

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

A operação CREATE no histórico mostra:

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

Quando adiciona dados a esta tabela, partitionBy mostra um array vazio:

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

A operação APPEND mostra:

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

O valor vazio partitionBy é esperado. Os dados ainda são gravados nas partições corretas com base no esquema de partição existente da tabela. Tenha em atenção que .save() para um caminho pode mostrar colunas de partição neste campo, mas esta diferença é um detalhe de implementação e não afeta o comportamento de escrita.

Métricas de operação

A history operação devolve uma coleção de métricas de operação no operationMetrics mapa de colunas.

As tabelas a seguir listam as definições de chave do mapa por operação.

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

As seguintes métricas estão disponíveis para estas operações:

Nome da métrica Description
numFiles O número de ficheiros escritos.
numOutputBytes O tamanho em bytes do conteúdo escrito.
numOutputRows O número de linhas escritas.

STREAMING UPDATE

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
numAddedFiles O número de ficheiros adicionados.
numRemovedFiles O número de ficheiros removidos.
numOutputRows O número de linhas escritas.
numOutputBytes O tamanho dos bytes de escrita.

DELETE

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
numAddedFiles O número de ficheiros adicionados. Não fornecido quando as partições da tabela são excluídas.
numRemovedFiles O número de ficheiros removidos.
numDeletedRows O número de linhas removidas. Não fornecido quando as partições da tabela são excluídas.
numCopiedRows O número de linhas copiadas no processo de eliminação de ficheiros.
executionTimeMs O tempo necessário para executar toda a operação.
scanTimeMs O tempo necessário para analisar os ficheiros à procura de correspondências.
rewriteTimeMs O tempo necessário para reescrever os ficheiros correspondentes.

TRUNCATE

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
numRemovedFiles O número de ficheiros removidos.
executionTimeMs O tempo necessário para executar toda a operação.

MERGE

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
numSourceRows O número de linhas no DataFrame de origem.
numTargetRowsInserted O número de linhas inseridas na tabela alvo.
numTargetRowsUpdated O número de linhas atualizadas na tabela alvo.
numTargetRowsDeleted O número de linhas eliminadas na tabela alvo.
numTargetRowsCopied O número de linhas alvo copiadas.
numOutputRows O número total de linhas escritas.
numTargetFilesAdded O número de ficheiros adicionados ao sumidouro (alvo).
numTargetFilesRemoved O número de ficheiros removidos do lavatório (alvo).
executionTimeMs O tempo necessário para executar toda a operação.
scanTimeMs O tempo necessário para analisar os ficheiros à procura de correspondências.
rewriteTimeMs O tempo necessário para reescrever os ficheiros correspondentes.

UPDATE

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
numAddedFiles O número de ficheiros adicionados.
numRemovedFiles O número de ficheiros removidos.
numUpdatedRows O número de linhas atualizadas.
numCopiedRows O número de linhas foi simplesmente copiado durante o processo de atualização dos ficheiros.
executionTimeMs O tempo necessário para executar toda a operação.
scanTimeMs O tempo necessário para analisar os ficheiros à procura de correspondências.
rewriteTimeMs O tempo necessário para reescrever os ficheiros correspondentes.

FSCK

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
numRemovedFiles O número de ficheiros removidos.

CONVERT

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
numConvertedFiles O número de ficheiros Parquet que foram convertidos.

OPTIMIZE

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
numAddedFiles O número de ficheiros adicionados.
numRemovedFiles O número de ficheiros otimizados.
numAddedBytes O número de bytes adicionados após a tabela foi otimizado.
numRemovedBytes O número de bytes removidos.
minFileSize O tamanho do ficheiro mais pequeno após a tabela foi otimizado.
p25FileSize O tamanho do ficheiro no 25.º percentil depois de a tabela ter sido otimizada.
p50FileSize O tamanho mediano do ficheiro após a tabela foi otimizado.
p75FileSize O tamanho do ficheiro do percentil 75 depois de a tabela ter sido otimizada.
maxFileSize O tamanho do maior ficheiro após a tabela foi otimizado.

CLONE

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
sourceTableSize O tamanho em bytes da tabela de origem na versão que foi clonada.
sourceNumOfFiles O número de ficheiros na tabela de origem na versão que foi clonada.
numRemovedFiles O número de ficheiros removidos da tabela de destino se uma tabela anterior fosse substituída.
removedFilesSize O tamanho total em bytes dos ficheiros removidos da tabela de destino se uma tabela anterior foi substituída.
numCopiedFiles O número de ficheiros que foram copiados para a nova localização. 0 para clones superficiais.
copiedFilesSize O tamanho total em bytes dos ficheiros que foram copiados para a nova localização. 0 para clones superficiais.

RESTORE

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
tableSizeAfterRestore O tamanho da tabela em bytes após a restauração.
numOfFilesAfterRestore O número de ficheiros na tabela após a restauração.
numRemovedFiles O número de ficheiros removidos pela operação de restauro.
numRestoredFiles O número de ficheiros adicionados como resultado da restauração.
removedFilesSize O tamanho em bytes dos ficheiros removidos pela restauração.
restoredFilesSize O tamanho em bytes dos ficheiros adicionados pela restauração.

VACUUM

As seguintes métricas estão disponíveis para esta operação:

Nome da métrica Description
numDeletedFiles O número de ficheiros apagados.
numVacuumedDirectories O número de diretórios limpos com o aspirador.
numFilesToDelete O número de ficheiros a apagar.