Optimalizujte tabulky Lakehouse na základě kontrol stavu

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:

Struktura řešení

Dokončený kanál má tuto strukturu:

  1. Aktivita skriptu: Spustí sp_get_table_health_metrics nad cílovou tabulkou a vrátí metriky stavu tabulky jako strukturovaný výstup.
  2. Aktivita If Condition: Přečte PotentialAnomalyType přímo z výstupu skriptu a zkontroluje, jestli je větší než nula. Další informace najdete v PotentialAnomalyTypetématu Potenciální kódy typů anomálií.
  3. Aktivita poznámkového bloku (uvnitř větve True): Spustí OPTIMIZE nad 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.

  1. V pracovním prostoru Fabric vyberte možnost + Nová položka>Poznámkový blok.
  2. Pojmenujte poznámkový blok Optimize-Table.
  3. 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.
  4. Vyberte Vytvořit.

Přidat buňku parametru

První buňka definuje proměnné, které kanál přepíše za běhu.

  1. 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.

  2. 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í.

  1. 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)
    
  2. 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:

    Snímek obrazovky poznámkového bloku Fabric s názvem „Optimalizace tabulky Lakehouse, když kontroly stavu ukážou, že je to potřeba“, se dvěma buňkami PySpark: jedna nastavuje parametry lakehouse, schématu a tabulky poskytnuté kanálem a druhá spouští příkaz OPTIMIZE pro vybranou tabulku Lakehouse.

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

  1. V pracovním prostoru Fabric vyberte + Nová položka>Kanál.

  2. Pojmenujte kanál Check-and-Optimize-Table.

  3. Vyberte pozadí plátna kanálu a otevřete kartu Parametry . Přidejte tři parametry:

    Name Typ Výchozí hodnota
    lakehouse_name String SalesDataLakehouse
    schema_name String dbo
    table_name String 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.

  1. Na kartě Aktivity vyberte Skript a přidejte jej na plátno.
  2. Pojmenujte ji Kontrola stavu tabulky.
  3. 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:

  1. Na kartě Aktivity vyberte Podmínku If a přidejte aktivitu na plátno.

  2. Pojmenujte ji Kontrola anomálií.

  3. Nakreslete Úspěch (zelenou) šipku z Zkontrolovat stav tabulky do Zkontrolovat anomálii.

  4. 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.

  1. Přetáhněte aktivitu Poznámkový blok na dílčí plátno True.

  2. Pojmenujte ji Run OPTIMIZE.

  3. 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_name String @pipeline().parameters.lakehouse_name
      schema_name String @pipeline().parameters.schema_name
      table_name String @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:

Snímek obrazovky datové pipeline Fabric s aktivitou skriptu Check Table Health připojenou k podmíněné aktivitě Check Anomaly. Větev true spouští aktivitu notebooku OPTIMIZE, zatímco větev false neobsahuje žádné aktivity.

Krok 6: Ověření a spuštění

  1. Vyberte na panelu nástrojů kanálu možnost Ověřit a zkontrolujte chyby v konfiguraci.

  2. Vyberte Spustit a spusťte kanál ručně.

  3. Sledujte běh a potvrďte:

    1. 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_metrics procedury ve formátu JSON.
    2. Zkontrolovat anomálie: vyhodnotí se správně čtením PotentialAnomalyType přímo z výstupu skriptu.
    3. 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 z OPTIMIZE operace.

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