Esquema do histórico da tabela e métricas de operações
O comando DESCRIBE HISTORY retorna 14 colunas para tabelas Apache Iceberg e Delta Lake que descrevem a história das operações da tabela. Use esta referência para interpretar cada coluna.
Para obter orientações sobre como recuperar o histórico da tabela, consultar versões anteriores da tabela e restaurar uma tabela, consulte Trabalhar com o histórico da tabela.
Esquema de história
A saída da operação history tem as seguintes colunas.
Coluna | Tipo | Descrição |
|---|---|---|
version |
| A versão da tabela gerada pela operação. |
carimbo de data/hora |
| Quando essa versão foi confirmada. |
userId |
| O ID do usuário que executou a operação. |
userName |
| O nome do usuário que executou a operação. |
operation |
| O nome da operação. |
operationParameters |
| Os parâmetros da operação (por exemplo, predicados.) Para operações |
Job |
| Os detalhes do Lakeflow job que executou a operação. Preenchido apenas para commits gravados a partir de um LakeFlow Job. Caso contrário, |
notebook |
| Os detalhes do notebook do Databricks a partir do qual a operação foi executada. Preenchido somente para commits gravados a partir de um notebook do Databricks. Caso contrário, |
clusterId |
| O ID do cluster no qual a operação foi executada. |
readVersion |
| Versão da tabela que foi lida para realizar a operação de gravação. |
isolationLevel |
| Nível de isolamento usado para esta operação. |
isBlindAppend |
| Se essa operação anexou dados. |
operationMetrics |
| As métricas da operação (por exemplo, número de linhas e arquivos modificados). |
userMetadata |
| Os metadados de commit definidos pelo usuário, se tiverem 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...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
-
Se você gravar em uma tabela usando os seguintes métodos, algumas colunas não estarão disponíveis:
-
As colunas adicionadas no futuro serão sempre adicionadas após a última coluna.
Compreendendo partitionBy nos parâmetros de operação
O campo partitionBy na história da tabela só é significativo para operações CREATE e OVERWRITE que definem ou alteram o esquema de partição de uma tabela.
Para operações de append em 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()).
Essa inconsistência é um comportamento esperado e não afeta a forma como os dados são gravados nas partições. Você não deve usá-lo para validar operações de append.
Exemplo
Considere uma tabela particionada pela coluna date. Quando você cria a tabela, partitionBy é preenchido:
df.write.format("delta") \
.partitionBy("date") \
.saveAsTable("sales_data")
A operações CREATE no história mostra:
operationParameters: {
"mode": "ErrorIfExists",
"partitionBy": "[\"date\"]"
}
Ao adicionar 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 partitionBy vazio é 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 neste 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 operação history retorna uma coleção de métricas de operação no mapa de colunas operationMetrics.
As tabelas a seguir listam as principais definições 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 |
|---|---|
| O número de arquivos gravados. |
| O tamanho em bytes do conteúdo gravado. |
| 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 |
|---|---|
| Número de arquivos adicionados. |
| O número de arquivos removidos. |
| O número de linhas gravadas. |
| O tamanho da gravação em bytes. |
DELETE
As seguintes métricas estão disponíveis para esta operação:
Nome da métrica | Descrição |
|---|---|
| O número de arquivos adicionados. Não fornecido quando as partições da tabela são excluídas. |
| O número de arquivos removidos. |
| O número de linhas removidas. Não fornecido quando as partições da tabela são excluídas. |
| Número de linhas copiadas no processo de exclusão de arquivos. |
| O tempo gasto para executar toda a operação. |
| O tempo gasto para verificar os arquivos em busca de correspondências. |
| O tempo gasto para regravar os arquivos correspondentes. |
TRUNCATE
As seguintes métricas estão disponíveis para esta operação:
Nome da métrica | Descrição |
|---|---|
| O número de arquivos removidos. |
| O tempo gasto 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 |
|---|---|
| O número de linhas no DataFrame de origem. |
| O número de linhas inseridas na tabela de destino. |
| O número de linhas atualizadas na tabela de destino. |
| O número de linhas excluídas na tabela de destino. |
| O número de linhas de destino copiadas. |
| Número total de linhas gravadas. |
| O número de arquivos adicionados ao coletor (destino). |
| O número de arquivos removidos do coletor (destino). |
| O tempo gasto para executar toda a operação. |
| O tempo gasto para verificar os arquivos em busca de correspondências. |
| O tempo gasto para regravar os arquivos correspondentes. |
UPDATE
As seguintes métricas estão disponíveis para esta operação:
Nome da métrica | Descrição |
|---|---|
| Número de arquivos adicionados. |
| O número de arquivos removidos. |
| O número de linhas atualizadas. |
| O número de linhas que acabaram de ser copiadas no processo de atualização de arquivos. |
| O tempo gasto para executar toda a operação. |
| O tempo gasto para verificar os arquivos em busca de correspondências. |
| O tempo gasto para regravar os arquivos correspondentes. |
FSCK
As seguintes métricas estão disponíveis para esta operação:
Nome da métrica | Descrição |
|---|---|
| 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 |
|---|---|
| O número de arquivos Parquet que foram convertidos. |
OPTIMIZE
As seguintes métricas estão disponíveis para esta operação:
Nome da métrica | Descrição |
|---|---|
| Número de arquivos adicionados. |
| O número de arquivos otimizados. |
| O número de bytes adicionados depois que a tabela foi otimizada. |
| O número de bytes removidos. |
| O tamanho do menor arquivo após a tabela ser otimizada. |
| O tamanho do arquivo do 25º percentil após a tabela ser otimizada. |
| O tamanho mediano do arquivo após a tabela ser otimizada. |
| O tamanho do arquivo do 75º percentil após a tabela ser otimizada. |
| O tamanho do maior arquivo após a tabela ser otimizada. |
CLONE
As seguintes métricas estão disponíveis para esta operação:
Nome da métrica | Descrição |
|---|---|
| O tamanho em bytes da tabela de origem na versão clonada. |
| Número de arquivos na tabela de origem na versão clonada. |
| O número de arquivos removidos da tabela de destino se uma tabela anterior tiver sido substituída. |
| O tamanho total em bytes dos arquivos removidos da tabela de destino se uma tabela anterior tiver sido substituída. |
| Número de arquivos que foram copiados para o novo local. 0 para clones rasos. |
| O tamanho total em bytes dos arquivos que foram copiados para o novo local. 0 para clones rasos. |
RESTORE
As seguintes métricas estão disponíveis para esta operação:
Nome da métrica | Descrição |
|---|---|
| O tamanho da tabela em bytes após a restauração. |
| O número de arquivos na tabela após a restauração. |
| Número de arquivos removidos pela operação de restauração. |
| O número de arquivos que foram adicionados como resultado da restauração. |
| O tamanho em bytes dos arquivos removidos pela restauração. |
| O tamanho em bytes dos arquivos adicionados pela restauração. |
VACUUM
As seguintes métricas estão disponíveis para esta operação:
Nome da métrica | Descrição |
|---|---|
| Número de arquivos excluídos. |
| O número de diretórios submetidos ao vacuum. |
| O número de arquivos a serem excluídos. |