Zdieľať cez


Použite dátové zhlukovanie v Fabric Data Warehouse

Vzťahuje sa na:✅ Koncový bod a sklad analýzy SQL v službe Microsoft Fabric

Dátové zhlukovanie v Fabric Data Warehouse organizuje dáta pre rýchlejší výkon dotazov a zníženú výpočtovú náročnosť. Tento tutoriál prechádza krokmi vytvárania tabuliek pomocou dátového zhlukovania, od vytvárania zoskupených tabuliek až po kontrolu ich efektívnosti.

Prerequisites

  • konto nájomníka služby Microsoft Fabric s aktívnym predplatným,
  • Uistite sa, že máte povolený pracovný priestor služby Microsoft Fabric: Vytvorte pracovný priestor.
  • Uistite sa, že ste už vytvorili sklad. Ak chcete vytvoriť nový sklad, pozrite si možnosť Vytvoriť sklad v Microsoft Fabric.
  • Základné pochopenie T-SQL a dotazovania dát.

Importovať vzorové údaje

Tento tutoriál používa vzorkovú dátovú sadu NY Taxi. Importovať dáta z NY Taxi do vášho skladu. Použite tutoriál Load Sample data to Data Warehouse .

Vytvorte tabuľku pomocou dátového zhlukovania

Pre tento tutoriál potrebujeme dve kópie tabuľky NYTaxi: bežnú kópiu tabuľky importovanej z tutoriálu a kópiu, ktorá používa dátové zhlukovanie. Použite nasledujúci príkaz na vytvorenie novej tabuľky pomocou CREATE TABLE AS SELECT (CTAS), založenej na pôvodnej tabuľke NYTaxi:

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

Poznámka

Príklad predpokladá názov tabuľky pridelený datasetu NY Taxi v tutoriáli Load Sample data to Data Warehouse. Ak ste použili iný názov pre svoju tabuľku, upravte príkaz tak, aby nahradil nyctlc názov vašej tabuľky.

Tento príkaz vytvára presnú kópiu pôvodnej tabuľky NYTaxi, ale s dátovým zhlukovaním v stĺpci lpepPickupDatetime . Ďalej používame tento stĺpec na dotazovanie.

Dotazovanie údajov

Spustite dotaz na tabuľke NYTaxi a zopakujte presne ten istý dotaz v tabuľke NYTaxi_With_DataClustering pre porovnanie.

Poznámka

Pre túto analýzu je užitočné pozrieť sa na výkon cold cache oboch behov – teda bez použitia cache funkcií Fabric Data Warehouse. Preto spustite každý dotaz presne raz predtým, než sa pozriete na výsledky v Query Insights.

Používame dotaz, ktorý sa často opakuje v sklade. Tento dotaz vypočíta priemernú sumu cestovného podľa rokov medzi dátumami 2008-12-31 a :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');

Poznámka

Možnosť označenia použitá v tomto dotaze je užitočná, keď porovnávame detaily dotazu tabuľky Regular s tým, ktorý neskôr používa dátové zhlukovanie pomocou zobrazení Query Insights.

Potom opakujeme presne ten istý dotaz, ale na verzii tabuľky, ktorá používa dátové zhlukovanie:

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');

Druhý dotaz používa tento štítok Clustered , aby sme ho mohli neskôr identifikovať pomocou Query Insights.

Skontrolujte efektívnosť zhlukovania dát

Po nastavení klastrovania môžete jeho efektívnosť posúdiť pomocou Query Insights. Query Insights in Fabric Data Warehouse zachytáva historické údaje o vykonávaní dopytov a agreguje ich do použiteľných poznatkov, ako je identifikácia dlhodobo bežiacich alebo často vykonávaných dotazov.

V tomto prípade používame Query Insights na porovnanie rozdielu v skenovaných dátach medzi bežnými a zhlukovanými prípadmi.

Použite nasledujúci dotaz:

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;

Tento dotaz získava podrobnosti z pohľadu exec_requests_history . Pre viac informácií pozri queryinsights.exec_requests_history (Transact-SQL).

Dotaz filtruje výsledky nasledovne:

  • Načíta len riadky, ktoré obsahujú NYTaxi text v názve príkazu (ako bolo použité v testovacích dotazoch)
  • Načíta len riadky, kde bola hodnota štítku buď pravidelná, alebo zoskupená

Poznámka

Môže trvať niekoľko minút, kým sa detaily vášho dotazu zobrazia v Query Insights. Ak váš dotaz Query Insights neprinesie žiadne výsledky, skúste to znova po niekoľkých minútach.

Pri spustení tohto dotazu pozorujeme nasledujúce výsledky:

Tabuľka porovnávajúca metriky vykonávania dotazov pre dva štítky: Clustered a Regular. Bežný dotaz spotreboval viac zdrojov.

Oba dotazy majú počet riadkov 6 a podobné časy odoslania. Dopyt Clustered uvádza total_elapsed_time_ms roky 1794, allocated_cpu_time_ms 1676 a data_scanned_remote_storage_mb 77,519. Dopyt Regular ukazuje total_elapsed_time_ms 2651, allocated_cpu_time_ms 2600 a data_scanned_remote_storage_mb 177 700. Tieto čísla ukazujú, že aj keď oba dotazy vrátili rovnaké výsledky, verzia Clustered spotrebovala približne o 36% menej času CPU než verzia Regular a na disku skenovala približne 56% menej dát. V žiadnom z týchto spustení nebola použitá žiadna cache. Ide o významné výsledky, ktoré pomáhajú znížiť čas vykonávania dotazov a spotrebu a robia stĺpec lpepPickupDatetime silným kandidátom na zhlukovanie dát.

Poznámka

Ide o malú tabuľku s približne 76 miliónmi riadkov a objemom dát 2 GB. Aj keď tento dotaz vráti len šesť riadkov v agregácii (jeden za každý rok v rozsahu), pred agregáciou prehľadá približne 8,3 milióna riadkov v danom časovom rozmedzí. Skutočné výrobné údaje s väčším objemom dát môžu priniesť významnejšie výsledky. Vaše výsledky sa môžu líšiť v závislosti od veľkosti kapacity, uložených výsledkov alebo súbežnosti počas dotazov.