Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:✅ Koncový bod analýzy SQL v Microsoft Fabric
V tomto kurzu se dozvíte, jak vytvořit kanál Microsoft Fabric pro provádění inteligentní údržby tabulek.
Toto řešení volá uloženou proceduru sys.sp_get_table_health_metrics T-SQL na koncovém bodu Lakehouse SQL Analytics, vyhodnotí výsledek a spustí OPTIMIZE se pouze v případě, že tabulka skutečně potřebuje údržbu. Tento model "check-then-act" zabraňuje zbytečným výdajům na výpočetní prostředky na tabulky, které jsou v pořádku, a současně zajišťuje automatické udržování degradovaných tabulek.
Proč je potřeba údržba
Tabulky Lakehouse můžou v průběhu času hromadit příliš mnoho malých souborů Parquet, což snižuje výkon dotazů na koncovém bodu analýzy SQL.
Namísto spouštění OPTIMIZE podle pevně stanoveného plánu bez ohledu na stav tabulky tento proces učiní informované rozhodnutí: nejprve zkontroluje stav tabulky a optimalizaci spustí pouze tehdy, když je zjištěna anomálie.
Předpoklady
Než začnete, ujistěte se, že máte:
- Pracovní prostor Microsoft Fabric s oprávněními přispěvatele nebo vyššími oprávněními.
- Lakehouse v daném pracovním prostoru obsahující alespoň jednu tabulku Delta, kterou chcete monitorovat. Tento kurz používá Lakehouse s názvem
SalesDataLakehouse. - Znalost datových kanálů Fabric.
- Znalost poznámkových bloků Fabric.
Struktura řešení
Dokončený kanál má tuto strukturu:
-
Aktivita skriptu: Spustí
sp_get_table_health_metricsnad cílovou tabulkou a vrátí metriky stavu tabulky jako strukturovaný výstup. -
Aktivita If Condition: Přečte
PotentialAnomalyTypepřímo z výstupu skriptu a zkontroluje, jestli je větší než nula. Další informace najdete vPotentialAnomalyTypetématu Potenciální kódy typů anomálií. -
Aktivita poznámkového bloku (uvnitř větve True): Spustí
OPTIMIZEnad tabulkou v poznámkovém bloku Spark.
Na konci tohoto kurzu budete mít notebook, který bude přijímat parametry z pipeline a po spuštění optimalizuje tabulku.
Krok 1: Vytvoření poznámkového bloku optimalizace
Poznámkový sešit přijímá z pipeline jako parametry cílový objekt Lakehouse, schéma a název tabulky a poté pomocí Spark SQL spustí OPTIMIZE.
- V pracovním prostoru Fabric vyberte možnost + Nová položka>Poznámkový blok.
- Pojmenujte poznámkový blok Optimize-Table.
- V části Umístění vyberte Lakehouse, kde jsou uloženy tabulky, které zkontrolujete. V tomto cvičení se používá lakehouse s názvem
SalesDataLakehouse. - Vyberte Vytvořit.
Přidat buňku parametru
První buňka definuje proměnné, které kanál přepíše za běhu.
Do první buňky zadejte následující parametry. Hodnoty nejsou důležité a pipeline je za běhu přepíše.
# Parameters lakehouse_name = "<LakehouseName>" schema_name = "<SchemaName>" table_name = "<TableName>"Important
Jak funguje parametrizace v poznámkových blocích Fabric: Za běhu Fabric vloží novou buňku hned za buňku parametrů, která těmto proměnným znovu přiřadí hodnoty předané pipeline. Hodnoty, které zde nastavíte, inicializují pouze proměnné a zlepšují čitelnost.
V nabídce buňky (...) vyberte možnost >Přepnout buňku na parametr a označíte tak tuto buňku jako buňku parametru.
Přidejte buňku OPTIMIZE
Příkaz OPTIMIZE je příkaz Spark SQL, nikoli příkaz T-SQL. Musíte ho spustit v prostředích Sparku, jako jsou poznámkové bloky, definice úloh Sparku nebo rozhraní údržby Lakehouse. Koncový bod SQL Analytics a editor dotazů SQL Warehouse tento příkaz přímo nepodporují.
Do druhé buňky zadejte:
full_name = f"{lakehouse_name}.{schema_name}.{table_name}" print(f"Optimizing {full_name} ...") result = spark.sql(f"OPTIMIZE {full_name}") result.show(truncate=False)Podle potřeby přidejte buňky Markdownu pro správné zdokumentování poznámkového bloku pro ostatní uživatele. Dokončený poznámkový blok by měl vypadat přibližně takto:
Note
Tento příklad uvažuje Lakehouse s povolenými schématy. Pokud nepoužíváte schémata Lakehouse, upravte název full_name třídílné části odpovídajícím způsobem.
Krok 2: Vytvoření kanálu
V pracovním prostoru Fabric vyberte + Nová položka>Kanál.
Pojmenujte kanál Check-and-Optimize-Table.
Vyberte pozadí plátna kanálu a otevřete kartu Parametry . Přidejte tři parametry:
Name Typ Výchozí hodnota lakehouse_nameString SalesDataLakehouseschema_nameString dbotable_nameString FactSales
Krok 3: Přidání aktivity skriptu
Aktivita Skript běží sys.sp_get_table_health_metrics na koncovém bodu analýzy SQL a zaznamenává výsledek.
Important
Použijte aktivitu Skript , nikoli aktivitu Uložená procedura . Pouze aktivita Skriptu zveřejňuje sadu výsledků jako strukturovaný výstup JSON, který můžou podřízené aktivity analyzovat.
- Na kartě Aktivity vyberte Skript a přidejte jej na plátno.
- Pojmenujte ji Kontrola stavu tabulky.
- Na kartě Nastavení :
Připojení: Vyberte koncový bod analýzy SQL pro váš Lakehouse. Pokud není uvedena, vyberte ve spodní části rozevíracího seznamu možnost Procházet vše a potom vyhledejte koncový bod SQL analýzy vašeho Lakehouse.
Typ skriptu: Výběr dotazu
Skript: Vyberte Přidat dynamický obsah a zadejte následující výraz:
@concat('EXEC sys.sp_get_table_health_metrics ''', pipeline().parameters.schema_name, '.', pipeline().parameters.table_name, '''')
Tento výraz vytvoří příkaz SQL, který spustí uloženou proceduru pro cílovou tabulku, například: EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'.
Ověření výstupu skriptu
Spusťte kanál jednou a zkontrolujte výstup aktivity skriptu. Zobrazí se objekt JSON podobný následujícímu:
{
"resultSetCount": 1,
"resultSets": [
{
"rowCount": 1,
"rows": [
{
"PotentialAnomalyType": 3,
"PotentialAnomalyDescription": "Too many small files...",
"FileCount": 2688,
"...": "..."
}
]
}
]
}
Important
Skutečný výsledek se může lišit v závislosti na stavu tabulky. Důležité je, že vrací sloupce zpřístupněné prvkem sys.sp_get_table_health_metrics.
Krok 4: Přidání aktivity podmínky If
Aktivita Podmínky If čte PotentialAnomalyType přímo z výstupu aktivity skriptu a na základě výsledku přijímá rozhodnutí. Použijte následující kroky:
Na kartě Aktivity vyberte Podmínku If a přidejte aktivitu na plátno.
Pojmenujte ji Kontrola anomálií.
Nakreslete Úspěch (zelenou) šipku z Zkontrolovat stav tabulky do Zkontrolovat anomálii.
Na kartě Aktivity aktivity If Condition nastavte výraz na:
@greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
Tento výraz přečte první řádek vrácený výrazem sys.sp_get_table_health_metrics, přetypuje PotentialAnomalyType na celé číslo a vyhodnotí se jako true, když je hodnota větší než nula, což značí anomálii zjištěnou v cílové tabulce.
Krok 5: Přidejte aktivitu Poznámkový blok (větev True)
Pokud je vybraná aktivita Podmínka If , vyberte Upravit (ikona tužky) vedle hodnoty True. Plátno se přepne na dílčí plátno vymezené pro větev True.
Přetáhněte aktivitu Poznámkový blok na dílčí plátno True.
Pojmenujte ji Run OPTIMIZE.
Na kartě Nastavení :
Poznámkový blok: Vyberte poznámkový blok Optimize-Table, který jste vytvořili v kroku 1.
Rozbalte základní parametry a přidejte tři řádky:
Name Typ Hodnota lakehouse_nameString @pipeline().parameters.lakehouse_nameschema_nameString @pipeline().parameters.schema_nametable_nameString @pipeline().parameters.table_name
Tři hodnoty sloupce názvů musí přesně odpovídat názvům proměnných v buňce parametru poznámkového bloku.
Note
Pole Neplatné aktivity můžete nechat prázdné. Aktivita If Condition považuje prázdnou větev False za no-op a hlásí kanál jako úspěšný.
Dokončený kanál by měl vypadat takto:
Krok 6: Ověření a spuštění
Vyberte na panelu nástrojů kanálu možnost Ověřit a zkontrolujte chyby v konfiguraci.
Vyberte Spustit a spusťte kanál ručně.
Sledujte běh a potvrďte:
-
Zkontrolujte stav tabulky: Zkontrolujte výstup z této aktivity při spuštění. Měl by se zobrazit výstup uložené
sys.sp_get_table_health_metricsprocedury ve formátu JSON. -
Zkontrolovat anomálie: vyhodnotí se správně čtením
PotentialAnomalyTypepřímo z výstupu skriptu. -
Spusťte příkaz OPTIMIZE (pouze pokud
PotentialAnomalyType > 0): Pokud aktivita Kontrola anomálií vyhodnotí hodnotu True, zkontrolujte vstup aktivity Run OPTIMIZE a ověřte, že používá správné parametry (název Lakehouse, schéma a název tabulky) a zkontrolujte výstup a zkontrolujte zprávy zOPTIMIZEoperace.
-
Zkontrolujte stav tabulky: Zkontrolujte výstup z této aktivity při spuštění. Měl by se zobrazit výstup uložené
Vyčistěte zdroje
Pokud jste vytvořili prostředky pouze pro tento kurz a už je nepotřebujete, odstraňte z pracovního prostoru následující položky:
- Pipeline Check-and-Optimize-Table.
- Poznámkový blok Optimize-Table