OPTIMIZE

Si applica a:check marked yes Databricks SQL check marked yes Databricks Runtime

Ottimizza il layout dei dati Delta Lake. Facoltativamente, ottimizzare un subset di dati o collocare i dati per colonna. Se non si specifica la collocazione e la tabella non è definita con il clustering liquido, viene eseguita l'ottimizzazione della compressione bin.

Sintassi

OPTIMIZE table_name [WHERE predicate]
  [ZORDER BY (col_name1 [, ...] ) ]

Nota

  • L'ottimizzazione della compressione bin è idempotente, ovvero se viene eseguita due volte nello stesso set di dati, la seconda esecuzione non ha alcun effetto. Mira a produrre file di dati uniformemente bilanciati in relazione alle dimensioni del disco, ma non necessariamente al numero di tuple per ogni file. Tuttavia, le due misure sono più spesso correlate.
  • L'ordinamento Z non è idempotente , ma mira a essere un'operazione incrementale. Il tempo necessario per l'ordinamento Z non è garantito per ridurre le esecuzioni multiple. Tuttavia, se non sono stati aggiunti nuovi dati a una partizione appena Z-Ordered, un altro ordinamento Z di tale partizione non avrà alcun effetto. Mira a produrre file di dati uniformemente bilanciati rispetto al numero di tuple, ma non necessariamente alle dimensioni dei dati su disco. Le due misure sono più spesso correlate, ma possono verificarsi situazioni in cui non è questo il caso, causando un'asimmetria nei tempi di ottimizzazione delle attività.

Nota

Durante l'uso di Databricks Runtime, per controllare le dimensioni del file di output, impostare la configurazionespark.databricks.delta.optimize.maxFileSize di Spark. Il valore predefinito è 1073741824, che imposta le dimensioni su 1 GB. Se si specifica il valore 104857600 , le dimensioni del file vengono impostate su 100 MB.

Parametri

  • table_name

    Identifica una tabella Delta esistente. Il nome non deve includere una specifica temporale.

  • WHERE

    Ottimizzare il subset di righe corrispondenti al predicato di partizione specificato. Sono supportati solo i filtri che coinvolgono gli attributi della chiave di partizione.

    Non è possibile utilizzare questa clausola nelle tabelle che usano clustering liquido.

  • ZORDER BY

    Collocare le informazioni sulle colonne nello stesso set di file. La co-località viene usata dagli algoritmi di data-skipping di Delta Lake per ridurre drasticamente la quantità di dati che devono essere letti. È possibile specificare più colonne per ZORDER BY come elenco delimitato da virgole. Tuttavia, l'efficacia della località diminuisce con ogni colonna aggiuntiva.

    Non è possibile utilizzare questa clausola nelle tabelle che usano clustering liquido.

Esempi

> OPTIMIZE events;

> OPTIMIZE events WHERE date >= '2017-01-01';

> OPTIMIZE events
    WHERE date >= current_timestamp() - INTERVAL 1 day
    ZORDER BY (eventType);

Per altre informazioni sul OPTIMIZE comando, vedere Compattare i file di dati con Optimize in Delta Lake.