Storia, schema della tabella e metriche operative

Il DESCRIBE HISTORY comando restituisce 14 colonne per le tabelle Apache Iceberg e Delta Lake che descrivono la storia delle operazioni delle tabelle. Usa questo riferimento per interpretare ogni colonna.

Per indicazioni su come recuperare la cronologia delle tabelle, interrogare versioni precedenti e ripristinare una tabella, vedi Lavoro con la cronologia delle tabelle.

Schema cronologia

L'output dell'operazione history include le colonne seguenti.

colonna Tipo Description
version long Versione della tabella generata dall'operazione.
Marca temporale timestamp Quando è stato effettuato il commit di questa versione.
userId string ID dell'utente che ha eseguito l'operazione.
userName string Nome dell'utente che ha eseguito l'operazione.
operation string Nome dell'operazione.
parametri di operazione map Parametri dell'operazione, ad esempio predicati. Per OPTIMIZE le operazioni, questi parametri identificano il tipo di operazione. Vedi Identificare il tipo di OPTIMIZE operazione.
attività struct I dettagli del job Lakeflow che ha eseguito l'operazione. Si popola solo per i commit creati da un job Lakeflow. In caso contrario, null.
notebook struct Dettagli del notebook di Databricks da cui è stata eseguita l'operazione. Viene popolato solo per i commit creati da un notebook Databricks. In caso contrario, null.
clusterId string ID del cluster in cui è stata eseguita l'operazione.
leggiVersione long Versione della tabella letta per eseguire l'operazione di scrittura.
isolationLevel string Livello di isolamento utilizzato per questa operazione.
isBlindAppend boolean Indica se questa operazione ha accodato dati.
operationMetrics map Metriche dell'operazione(ad esempio, numero di righe e file modificati).
metadati dell'utente string Metadati di commit definiti dall'utente, se specificati.
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+
|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...|
+-------+-------------------+------+--------+---------+--------------------+----+--------+---------+-----------+-----------------+-------------+--------------------+

Annotazioni

Informazioni sui partitionBy parametri dell'operazione

Il partitionBy campo nella cronologia tabelle è significativo solo per le operazioni CREATE e OVERWRITE che definiscono o modificano lo schema di partizione di una tabella.

Per le operazioni di accodamento alle tabelle esistenti (APPEND, INSERT, , UPDATEDELETE, MERGE), questo campo potrebbe mostrare una matrice [] vuota o colonne di partizione a seconda del metodo di scrittura usato (.save() vs .saveAsTable()).

Questa incoerenza è un comportamento previsto e non influisce sul modo in cui i dati vengono scritti nelle partizioni. Non è consigliabile usarlo per convalidare le operazioni di accodamento.

Esempio

Si consideri una tabella partizionata dalla date colonna . Quando si crea la tabella, partitionBy viene popolata:

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

L'operazione CREATE nella cronologia mostra:

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

Quando si aggiungono dati a questa tabella, partitionBy viene visualizzata una matrice vuota:

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

L'operazione APPEND mostra:

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

È previsto il valore vuoto partitionBy . I dati vengono comunque scritti nelle partizioni corrette in base allo schema di partizione esistente della tabella. Si noti che .save() a un percorso potrebbe mostrare colonne di partizione in questo campo, ma questa differenza è un dettaglio di implementazione e non influisce sul comportamento di scrittura.

Metriche operative

L'operazione history restituisce una raccolta di metriche operative nella operationMetrics mappa a colonne.

Le tabelle seguenti elencano le definizioni delle chiavi della mappa in base all'operazione.

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

Per queste operazioni sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numFiles Numero di file scritti.
numOutputBytes Dimensione in byte del contenuto scritto.
numOutputRows Numero di righe scritte.

STREAMING UPDATE

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numAddedFiles Numero di file aggiunti.
numRemovedFiles Numero di file rimossi.
numOutputRows Numero di righe scritte.
numOutputBytes La dimensione dei byte di scrittura.

DELETE

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numAddedFiles Numero di file aggiunti. Non specificato quando vengono eliminate le partizioni della tabella.
numRemovedFiles Numero di file rimossi.
numDeletedRows Numero di righe rimosse. Non specificato quando vengono eliminate le partizioni della tabella.
numCopiedRows Numero di righe copiate nel processo di eliminazione dei file.
executionTimeMs Tempo impiegato per eseguire l'intera operazione.
scanTimeMs Tempo impiegato per analizzare i file e individuare le corrispondenze.
rewriteTimeMs Tempo impiegato per riscrivere i file corrispondenti.

TRUNCATE

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numRemovedFiles Numero di file rimossi.
executionTimeMs Tempo impiegato per eseguire l'intera operazione.

MERGE

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numSourceRows Numero di righe nel dataframe di origine.
numTargetRowsInserted Numero di righe inserite nella tabella di destinazione.
numTargetRowsUpdated Numero di righe aggiornate nella tabella di destinazione.
numTargetRowsDeleted Numero di righe eliminate nella tabella di destinazione.
numTargetRowsCopied Numero di righe di destinazione copiate.
numOutputRows Numero totale di righe scritte.
numTargetFilesAdded Il numero di file aggiunti al sink (destinazione).
numTargetFilesRemoved Numero dei file rimossi dal sink (destinazione).
executionTimeMs Tempo impiegato per eseguire l'intera operazione.
scanTimeMs Tempo impiegato per analizzare i file e individuare le corrispondenze.
rewriteTimeMs Tempo impiegato per riscrivere i file corrispondenti.

UPDATE

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numAddedFiles Numero di file aggiunti.
numRemovedFiles Numero di file rimossi.
numUpdatedRows Numero di righe aggiornate.
numCopiedRows Numero di righe appena copiate nel processo di aggiornamento dei file.
executionTimeMs Tempo impiegato per eseguire l'intera operazione.
scanTimeMs Tempo impiegato per analizzare i file e individuare le corrispondenze.
rewriteTimeMs Tempo impiegato per riscrivere i file corrispondenti.

FSCK

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numRemovedFiles Numero di file rimossi.

CONVERT

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numConvertedFiles Numero di file Parquet convertiti.

OPTIMIZE

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numAddedFiles Numero di file aggiunti.
numRemovedFiles Numero dei file ottimizzati.
numAddedBytes Numero di byte aggiunti dopo l'ottimizzazione della tabella.
numRemovedBytes Il numero di byte rimossi.
minFileSize Dimensioni del file più piccolo dopo l'ottimizzazione della tabella.
p25FileSize La dimensione del file al 25° percentile dopo l'ottimizzazione della tabella.
p50FileSize Dimensioni del file mediano dopo l'ottimizzazione della tabella.
p75FileSize La dimensione del file al 75° percentile dopo l'ottimizzazione della tabella.
maxFileSize Dimensioni del file più grande dopo l'ottimizzazione della tabella.

CLONE

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
sourceTableSize Dimensioni in byte della tabella di origine nella versione clonata.
sourceNumOfFiles Numero di file nella tabella di origine nella versione clonata.
numRemovedFiles Numero di file rimossi dalla tabella di destinazione se è stata sostituita una tabella precedente.
removedFilesSize Dimensioni totali in byte dei file rimossi dalla tabella di destinazione se è stata sostituita una tabella precedente.
numCopiedFiles Numero di file copiati nel nuovo percorso. 0 per cloni superficiali.
copiedFilesSize Le dimensioni totali in byte dei file copiati nel nuovo percorso. 0 per cloni superficiali.

RESTORE

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
tableSizeAfterRestore Dimensioni della tabella in byte dopo il ripristino.
numOfFilesAfterRestore Numero di file nella tabella dopo il ripristino.
numRemovedFiles Numero di file rimossi dall'operazione di ripristino.
numRestoredFiles Numero di file aggiunti in seguito al ripristino.
removedFilesSize Dimensioni in byte dei file rimossi dal ripristino.
restoredFilesSize Dimensioni in byte dei file aggiunti dal ripristino.

VACUUM

Per questa operazione sono disponibili le metriche seguenti:

Nome della metrica di misura Description
numDeletedFiles Numero di file eliminati.
numVacuumedDirectories Il numero di directory sottoposte a vacuum.
numFilesToDelete Numero di file da eliminare.