Použití clusteringu dat ve službě Fabric Data Warehouse (Preview)

Platí pro:✅ Koncový bod analýzy SQL a datový sklad v Microsoft Fabric

Důležité

Tato funkce je ve verzi Preview.

Clustering dat v datovém skladu fabric organizuje data pro rychlejší výkon dotazů a snížené využití výpočetních prostředků. Tento kurz vás provede postupem vytvoření tabulek s clusteringem dat, od vytváření clusterovaných tabulek až po kontrolu jejich efektivity.

Požadavky

  • Účet tenanta Microsoft Fabric s aktivním předplatným.
  • Ujistěte se, že máte povolený pracovní prostor Microsoft Fabric: Vytvořte pracovní prostor.
  • Ujistěte se, že jste už vytvořili sklad. Pokud chcete vytvořit nový sklad, přečtěte si článek o vytvoření skladu v Microsoft Fabric.
  • Základní znalost T-SQL a dotazování dat

Import ukázkových dat

Tento kurz používá ukázkovou datovou sadu NY Taxi. Pokud chcete importovat data NY Taxi do vašeho skladu. Kurz k načtení ukázkových dat do datového skladu

Vytvoření tabulky s clusteringem dat

Pro účely tohoto kurzu potřebujeme dvě kopie tabulky NYTaxi: běžnou kopii tabulky, která se naimportuje z kurzu, a kopii, která používá clustering dat. Pomocí následujícího příkazu vytvořte novou tabulku pomocí CREATE TABLE AS SELECT (CTAS) na základě původní tabulky NYTaxi:

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

Poznámka:

V příkladu se předpokládá název tabulky zadané datové sadě NY Taxi v kurzu Načtení ukázkových dat do datového skladu. Pokud jste pro tabulku použili jiný název, upravte příkaz tak, aby se nahradil nyctlc názvem tabulky.

Tento příkaz vytvoří přesnou kopii původní tabulky NYTaxi, ale s clusteringem dat ve sloupci lpepPickupDatetime . V dalším kroku použijeme tento sloupec pro dotazování.

Dotaz k datům

Spusťte dotaz v tabulce NYTaxi a opakujte stejný dotaz v tabulce NYTaxi_With_DataClustering pro porovnání.

Poznámka:

Pro účely této analýzy je užitečné se podívat na výkon studené mezipaměti obou spuštění – to znamená bez použití funkcí ukládání do mezipaměti datového skladu Fabric. Proto před zobrazením výsledků v Přehledech dotazů spusťte každý dotaz přesně jednou.

Používáme dotaz, který se často opakuje ve skladu. Tento dotaz vypočítá průměrnou částku jízdného podle roku mezi daty 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žnost popisku použitá v tomto dotazu je užitečná, když porovnáme podrobnosti dotazu z tabulky Regular s tou, která později využívá clustering dat prostřednictvím zobrazení Query Insights.

V dalším kroku opakujeme stejný dotaz, ale ve verzi tabulky, která používá clustering dat:

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žívá popisek Clustered , který nám umožní později tento dotaz identifikovat pomocí Query Insights.

Kontrola efektivity seskupování dat

Po nastavení clusteringu můžete vyhodnotit jeho efektivitu pomocí Query Insights. Query Insights in Fabric Data Warehouse zachycuje historická data spouštění dotazů a agreguje je do přehledů s možností akce, jako je identifikace dlouhotrvajících nebo často spouštěných dotazů.

V tomto případě pomocí Query Insights porovnáme rozdíly v kontrolách dat mezi běžnými a clusterovanými případy.

Použijte následující 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 načte podrobnosti ze exec_requests_history zobrazení. Další informace najdete v tématu queryinsights.exec_requests_history (Transact-SQL).

Dotaz filtruje výsledky následujícími způsoby:

  • Načte pouze řádky, které obsahují NYTaxi text v názvu příkazu (jak se používalo v testovacích dotazech).
  • Načte pouze řádky, ve kterých byla hodnota štítku běžná nebo seskupená.

Poznámka:

Zpřístupnění podrobností dotazu v Nástroji Query Insights může trvat několik minut. Pokud dotaz Query Insights nevrátí žádné výsledky, zkuste to znovu za několik minut.

Při spuštění tohoto dotazu se podíváme na následující výsledky:

Tabulka porovnávání metrik spouštění dotazů pro dva popisky: Clustered a Regular. Běžný dotaz používal více prostředků.

Oba dotazy mají počet řádků 6 a podobnou dobu odeslání. Dotaz Clustered zobrazuje total_elapsed_time_ms 1794, allocated_cpu_time_ms z 1676 a data_scanned_remote_storage_mb 77,519. Dotaz Regular zobrazuje total_elapsed_time_ms 2651, allocated_cpu_time_ms 2600 a data_scanned_remote_storage_mb 177 700. Tato čísla ukazují, že i když oba dotazy vrátily stejné výsledky, verze Clustered použila přibližně o 36 % méně času CPU než verze Regular a naskenovala přibližně o 56 % méně dat na disku. V každém spuštění dotazu se nepoužívala žádná mezipaměť. Jedná se o významné výsledky, které pomáhají zkrátit dobu provádění dotazů a snížit spotřebu a vytvořit lpepPickupDatetime sloupec silným kandidátem pro clusterizaci dat.

Poznámka:

Jedná se o malou tabulku s přibližně 76 miliony řádků a 2 GB objemu dat. I když tento dotaz vrátí pouze šest řádků agregace (jeden pro každý rok v rozsahu), prohledává přibližně 8,3 milionu řádků v rozsahu kalendářních dat zadaných před agregací výsledků. Skutečná produkční data s většími objemy dat můžou poskytovat významnější výsledky. Výsledky se můžou lišit v závislosti na velikosti kapacity, výsledcích uložených v mezipaměti nebo souběžnosti během dotazů.