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

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

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

Esquema de história

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

Coluna Tipo Descrição
versão long A versão da tabela gerada pela operação.
carimbo de data/hora timestamp Quando esta versão foi comprometida.
userId string A ID do usuário que executou a operação.
nome do usuário string O nome do usuário 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, esses parâmetros identificam o tipo de operação. Consulte Identificar o tipo de OPTIMIZE operação.
cargo struct Os detalhes da tarefa Lakeflow que executou a operação. É preenchido somente para commits gerados por um job do Lakeflow. Caso contrário, null.
notebook struct Os detalhes do notebook do Databricks a partir do qual a operação foi executada. É preenchido somente para commits feitos a partir de um notebook do Databricks. Caso contrário, null.
clusterId string A ID do cluster no qual a operação foi executada.
lerVersão long A versão da tabela que foi lida para executar a operação de gravação.
isolationLevel string O nível de isolamento usado para esta operação.
isBlindAppend boolean Se essa operação acrescenta dados.
operationMetrics map As métricas da operação (por exemplo, número de linhas e arquivos modificados).)
userMetadata string Os metadados de confirmação definidos pelo usuário se forem 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

Noções básicas partitionBy sobre parâmetros de operação

O partitionBy campo no histórico de tabelas só é significativo 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), esse campo pode mostrar uma matriz [] vazia ou colunas de partição dependendo do método de gravação usado (.save() vs .saveAsTable()).

Essa inconsistência é o comportamento esperado e não afeta a forma como os dados são gravados em partições. Você não deve usá-lo para validar operações de acréscimo.

Exemplo

Considere uma tabela particionada pela date coluna. Quando você cria a tabela, partitionBy é populada:

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

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

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

Quando você acrescenta dados a esta tabela, partitionBy mostra uma matriz vazia:

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. Observe que .save() para um caminho pode mostrar colunas de partição nesse campo, mas essa diferença é um detalhe de implementação e não afeta o comportamento de gravação.

Métricas de operação

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

As tabelas a seguir listam as definições essenciais 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 Descrição
numFiles O número de arquivos gravados.
numOutputBytes O tamanho em bytes do conteúdo escrito.
numOutputRows O número de linhas gravadas.

STREAMING UPDATE

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

Nome da métrica Descrição
numAddedFiles O número de arquivos adicionados.
numRemovedFiles O número de arquivos removidos.
numOutputRows O número de linhas gravadas.
numOutputBytes O tamanho da escrita em bytes.

DELETE

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

Nome da métrica Descrição
numAddedFiles O número de arquivos adicionados. Não fornecido quando as partições da tabela são excluídas.
numRemovedFiles O número de arquivos 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 exclusão de arquivos.
executionTimeMs O tempo necessário para executar toda a operação.
scanTimeMs O tempo necessário para verificar os arquivos em busca de correspondências.
rewriteTimeMs O tempo necessário para reescrever os arquivos correspondentes.

TRUNCATE

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

Nome da métrica Descrição
numRemovedFiles O número de arquivos 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 Descrição
numSourceRows O número de linhas no DataFrame de origem.
numTargetRowsInserted O número de linhas inseridas na tabela de destino.
numTargetRowsUpdated O número de linhas atualizadas na tabela de destino.
numTargetRowsDeleted O número de linhas excluídas na tabela de destino.
numTargetRowsCopied O número de linhas de destino copiadas.
numOutputRows O número total de linhas gravadas.
numTargetFilesAdded O número de arquivos adicionados ao coletor (destino).
numTargetFilesRemoved O número de arquivos removidos do coletor (destino).
executionTimeMs O tempo necessário para executar toda a operação.
scanTimeMs O tempo necessário para verificar os arquivos em busca de correspondências.
rewriteTimeMs O tempo necessário para reescrever os arquivos correspondentes.

UPDATE

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

Nome da métrica Descrição
numAddedFiles O número de arquivos adicionados.
numRemovedFiles O número de arquivos removidos.
numUpdatedRows O número de linhas atualizadas.
numCopiedRows O número de linhas que acabaram de ser copiadas durante o processo de atualização de arquivos.
executionTimeMs O tempo necessário para executar toda a operação.
scanTimeMs O tempo necessário para verificar os arquivos em busca de correspondências.
rewriteTimeMs O tempo necessário para reescrever os arquivos correspondentes.

FSCK

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

Nome da métrica Descrição
numRemovedFiles O número de arquivos removidos.

CONVERT

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

Nome da métrica Descrição
numConvertedFiles O número de arquivos Parquet convertidos.

OPTIMIZE

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

Nome da métrica Descrição
numAddedFiles O número de arquivos adicionados.
numRemovedFiles O número de arquivos otimizados.
numAddedBytes O número de bytes adicionados após a otimização da tabela.
numRemovedBytes O número de bytes removidos.
minFileSize O tamanho do menor arquivo depois que a tabela foi otimizada.
p25FileSize O tamanho do arquivo do 25º percentil após a otimização da tabela.
p50FileSize O tamanho mediano do arquivo depois que a tabela foi otimizada.
p75FileSize O tamanho do 75º arquivo de percentil depois que a tabela foi otimizada.
maxFileSize O tamanho do maior arquivo após a otimização da tabela.

CLONE

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

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

RESTORE

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

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

VACUUM

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

Nome da métrica Descrição
numDeletedFiles O número de arquivos excluídos.
numVacuumedDirectories O número de diretórios limpos.
numFilesToDelete O número de arquivos a serem excluídos.