Condividi tramite


Usare il raggruppamento dei dati nel Fabric Data Warehouse

Si applica a:✅ endpoint di analisi SQL e magazzino dati in Microsoft Fabric

Il clustering di dati in Fabric Data Warehouse organizza i dati per ottenere prestazioni di query più veloci e ridurre l'utilizzo di calcolo. Questa esercitazione illustra i passaggi per creare tabelle con clustering di dati, dalla creazione di tabelle in cluster a una verifica dell'efficacia.

Prerequisiti

  • Un account tenant Microsoft Fabric con una sottoscrizione attiva.
  • Assicurarsi di disporre di un'area di lavoro abilitata per Microsoft Fabric: Creare un'area di lavoro.
  • Assicurarsi di aver già creato un warehouse. Per creare un nuovo warehouse, vedere Creare un warehouse in Microsoft Fabric.
  • Conoscenza di base di T-SQL ed esecuzione di query sui dati.

Importare i dati di esempio

Questa esercitazione usa il set di dati di esempio NY Taxi. Per importare i dati di NY Taxi nel magazzino. Usare l'esercitazione Caricare dati di esempio in Data Warehouse .

Crea una tabella con il clustering dei dati

Per questa esercitazione sono necessarie due copie della tabella NYTaxi: la copia regolare della tabella come importata dall'esercitazione e una copia che usa il clustering di dati. Usare il comando seguente per creare una nuova tabella usando CREATE TABLE AS SELECT (CTAS), in base alla tabella NYTaxi originale:

CREATE TABLE nyctlc_With_DataClustering 
WITH (CLUSTER BY (lpepPickupDatetime)) 
AS SELECT * FROM nyctlc

Annotazioni

Nell'esempio si presuppone il nome della tabella assegnato al set di dati NY Taxi nell'esercitazione "Caricare dati di esempio nel Data Warehouse". Se è stato usato un nome diverso per la tabella, modificare il comando in modo da sostituire nyctlc con il nome della tabella.

Questo comando crea una copia esatta della tabella NYTaxi originale, ma con il clustering dei dati nella colonna lpepPickupDatetime. Verrà quindi usata questa colonna per l'esecuzione di query.

Dati di query

Eseguire una query sulla tabella NYTaxi e ripetere la stessa query nella tabella NYTaxi_With_DataClustering per il confronto.

Annotazioni

Per questa analisi, è utile esaminare le prestazioni della cache a freddo di entrambe le esecuzioni, ovvero senza usare le funzionalità di memorizzazione nella cache di Fabric Data Warehouse. Pertanto, esegui ogni query esattamente una volta prima di esaminare i risultati in Query Insights.

Viene usata una query che viene spesso ripetuta nel warehouse. Questa query calcola l'importo medio della tariffa per anno tra le date 2008-12-31 e 2014-06-30:

SELECT
    YEAR(lpepPickupDatetime), 
    AVG(fareAmount) as [Average Fare]
FROM 
    NYTaxi
WHERE 
    lpepPickupDatetime BETWEEN '2008-12-31' AND '2014-06-30'
GROUP BY 
    YEAR(lpepPickupDatetime)
ORDER BY 
    YEAR(lpepPickupDatetime) DESC
OPTION (LABEL = 'Regular');

Annotazioni

L'opzione etichetta usata in questa query è utile quando si confrontano i dettagli della query della tabella Regular con quelli di un'altra che utilizza il clustering dei dati, usata successivamente attraverso le viste di Query Insights.

Ripetiamo quindi esattamente la stessa query, ma sulla versione della tabella che utilizza il clustering dei dati:

SELECT 
    YEAR(lpepPickupDatetime), 
    AVG(fareAmount) as [Average Fare]
FROM 
    NYTaxi_With_DataClustering
WHERE 
    lpepPickupDatetime BETWEEN '2008-12-31' AND '2014-06-30'
GROUP BY 
    YEAR(lpepPickupDatetime)
ORDER BY 
    YEAR(lpepPickupDatetime) DESC
OPTION (LABEL = 'Clustered');

La seconda query usa l'etichetta Clustered per consentire di identificare questa query in un secondo momento con Informazioni dettagliate query.

Controllare l'efficacia del clustering dei dati

Dopo aver configurato il clustering, è possibile valutarne l'efficacia usando Query Insights. Query Insights in Fabric Data Warehouse acquisisce i dati cronologici di esecuzione delle query e lo aggrega in informazioni dettagliate utilizzabili, ad esempio l'identificazione di query a esecuzione prolungata o eseguite di frequente.

In questo caso, si usa Query Insights per confrontare la differenza nei dati analizzati tra i casi normali e i casi in cluster.

Usare la query seguente:

SELECT 
    label, 
    submit_time, 
    row_count,
    total_elapsed_time_ms, 
    allocated_cpu_time_ms, 
    result_cache_hit, 
    data_scanned_disk_mb, 
    data_scanned_memory_mb, 
    data_scanned_remote_storage_mb, 
    command 
FROM 
    queryinsights.exec_requests_history 
WHERE 
    command LIKE '%NYTaxi%' 
    AND label IN ('Regular','Clustered')
ORDER BY 
    submit_time DESC;

Questa query recupera dettagli dalla vista exec_requests_history. Per altre informazioni, vedere queryinsights.exec_requests_history (Transact-SQL).

La query filtra i risultati nei modi seguenti:

  • Recupera solo le righe che contengono il NYTaxi testo nel nome del comando (come è stato usato nelle query di test)
  • Recupera solo le righe in cui il valore dell'etichetta era normale o raggruppato.

Annotazioni

La disponibilità dei dettagli della query in Query Insights potrebbe richiedere alcuni minuti. Se la query di Query Insights non restituisce risultati, riprovare dopo alcuni minuti.

L'esecuzione di questa query consente di osservare i risultati seguenti:

Tabella che confronta le metriche di esecuzione delle query per due etichette: Clustered e Regular. La query Regolare ha usato più risorse.

Entrambe le query hanno un numero di righe pari a 6 e tempi di invio simili. La Clustered query mostra total_elapsed_time_ms di 1794, allocated_cpu_time_ms di 1676 e data_scanned_remote_storage_mb di 77.519. La Regular query mostra total_elapsed_time_ms 2651, allocated_cpu_time_ms 2600 e data_scanned_remote_storage_mb 177.700. Questi numeri mostrano che anche se entrambe le query hanno restituito gli stessi risultati, la Clustered versione ha usato circa 36% meno tempo di CPU rispetto alla Regular versione e analizzato circa 56% meno dati su disco. Nessuna cache è stata usata in nessuna delle due esecuzioni di query. Si tratta di risultati significativi per ridurre i tempi di esecuzione delle query e il consumo di risorse e rendere la colonna lpepPickupDatetime un candidato ideale per il clustering di dati.

Annotazioni

Si tratta di una tabella di piccole dimensioni, con circa 76 milioni di righe e 2 GB di volume di dati. Anche se questa query restituisce solo sei righe sull'aggregazione (una per ogni anno nell'intervallo), analizza circa 8,3 milioni di righe nell'intervallo di date fornito prima che i risultati vengano aggregati. I dati di produzione effettivi con volumi di dati di dimensioni maggiori possono offrire risultati più significativi. I risultati possono variare in base alle dimensioni della capacità, ai risultati memorizzati nella cache o alla concorrenza durante le query.