Ignora dati per Delta Lake

I dati ignorati vengono raccolti automaticamente quando si scrivono dati in una tabella Delta. Delta Lake in Azure Databricks sfrutta queste informazioni (valori minimi e massimi, conteggi null e record totali per file) in fase di query per offrire query più veloci.

Nota

In Databricks Runtime 13.3 e versioni successive Databricks consiglia di usare il clustering per il layout di tabella Delta. Il clustering non è compatibile con l'ordinamento Z. Vedere Usare il clustering liquido per le tabelle Delta.

È necessario disporre di statistiche raccolte per le colonne usate nelle ZORDER istruzioni . Vedere Che cos'è l'ordinamento Z?.

Specificare le colonne statistiche delta

Per impostazione predefinita, Delta Lake raccoglie statistiche sulle prime 32 colonne definite nello schema della tabella. Per questa raccolta, ogni campo in una colonna nidificata viene considerato una singola colonna. È possibile modificare questo comportamento impostando una delle proprietà della tabella seguenti:

Proprietà Table Databricks Runtime supportato Descrizione
delta.dataSkippingNumIndexedCols Tutte le versioni supportate di Databricks Runtime Aumentare o diminuire il numero di colonne in cui Delta raccoglie statistiche. Dipende dall'ordine delle colonne.
delta.dataSkippingStatsColumns Databricks Runtime 13.3 LTS e versioni successive Specificare un elenco di nomi di colonna per cui Delta Lake raccoglie le statistiche. dataSkippingNumIndexedColsSostituisce .

Le proprietà della tabella possono essere impostate durante la creazione di tabelle o con ALTER TABLE istruzioni . Vedere Informazioni di riferimento sulle proprietà della tabella Delta.

L'aggiornamento di questa proprietà non ricompila automaticamente le statistiche per i dati esistenti. Influisce invece sul comportamento della raccolta di statistiche future durante l'aggiunta o l'aggiornamento dei dati nella tabella. Delta Lake non sfrutta le statistiche per le colonne non incluse nell'elenco corrente di colonne statistiche.

In Databricks Runtime 14.3 LTS e versioni successive è possibile attivare manualmente la ricomputazione delle statistiche per una tabella Delta usando il comando seguente:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Nota

Le stringhe lunghe vengono troncate durante la raccolta di statistiche. È possibile scegliere di escludere colonne stringa lunghe dalla raccolta di statistiche, soprattutto se le colonne non vengono usate di frequente per filtrare le query.

Che cos'è l'ordinamento Z?

L'ordinamento Z è una tecnica per la colocazione di informazioni correlate nello stesso set di file. Questa co-località viene usata automaticamente da Delta Lake in algoritmi di data-skipping di Azure Databricks. Questo comportamento riduce notevolmente la quantità di dati necessari per la lettura di Delta Lake in Azure Databricks. Per ordinare i dati Z, specificare le colonne da ordinare nella ZORDER BY clausola :

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

Se si prevede che una colonna venga comunemente usata nei predicati di query e se tale colonna ha cardinalità elevata , ovvero un numero elevato di valori distinti, usare ZORDER BY.

È possibile specificare più colonne per ZORDER BY come elenco delimitato da virgole. Tuttavia, l'efficacia della località scende con ogni colonna aggiuntiva. L'ordinamento Z sulle colonne che non dispongono di statistiche raccolte su di esse sarebbe inefficace e uno spreco di risorse. Ciò è dovuto al fatto che il conteggio dei dati richiede statistiche locali di colonna, ad esempio min, max e count. È possibile configurare la raccolta di statistiche per determinate colonne riordinando le colonne nello schema oppure aumentando il numero di colonne per raccogliere statistiche.

Nota

  • 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 ordinata da Z, un altro ordinamento Z di tale partizione non avrà alcun effetto.

  • L'ordinamento Z 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à.

    Ad esempio, se si ZORDER BYdata e i record più recenti sono tutti molto più ampi (ad esempio matrici o valori stringa più lunghi) rispetto a quelli precedenti, è previsto che OPTIMIZE le durate dell'attività del processo saranno asimmetriche, nonché le dimensioni dei file risultanti. Si tratta, tuttavia, solo di un problema per il OPTIMIZE comando stesso. Non deve avere alcun impatto negativo sulle query successive.