Optimalizujte tabuľky Lakehouse na základe zdravotných kontrol

Platí na: ✅ SQL analytics endpoint v Microsoft Fabric

V tomto tutoriáli sa naučíte, ako vytvoriť Microsoft Fabric Pipeline na inteligentnú údržbu tabuliek.

Toto riešenie volá uloženú procedúru sys.sp_get_table_health_metrics T-SQL na Lakehouse SQL analytics endpointe, vyhodnocuje výsledok a spustí sa OPTIMIZE len vtedy, keď tabuľka skutočne potrebuje údržbu. Tento vzor "skontroluj a konaj" zabraňuje zbytočným výdavkom na zdravé tabuľky a zároveň zabezpečuje, že degradované tabuľky sa udržiavajú automaticky.

Prečo je údržba nevyhnutná

Lakehouse tabuľky môžu časom nahromadiť príliš veľa malých Parquet súborov, čo znižuje výkon dotazov na SQL analytickom endpointe.

Namiesto toho OPTIMIZE , aby bežal podľa pevného harmonogramu bez ohľadu na stav tabuľky, tento pipeline robí informované rozhodnutie: najprv kontroluje stav tabuľky a optimalizáciu spustí až pri detekcii anomálie.

Požiadavky

Predtým, ako začnete, sa uistite, že máte:

  • Pracovný priestor Microsoft Fabric s povoleniami prispievateľa alebo vyššími.
  • Lakehouse v tomto pracovnom priestore, ktorý obsahuje aspoň jeden Delta stôl, ktorý chcete monitorovať. Tento tutoriál používa jazerný dom menom SalesDataLakehouse.
  • Znalosť Fabric dátových pipeline.
  • Znalosť Fabric zápisníkov.

Štruktúra riešenia

Dokončený pipeline má túto štruktúru:

  1. Skriptová aktivita: Vykoná sp_get_table_health_metrics sa na cieľovej tabuľke a vracia metriky zdravia tabuľky ako štruktúrovaný výstup.
  2. Aktivita podmienky: Číta PotentialAnomalyType priamo z výstupu skriptu a kontroluje, či je väčšia ako nula. Pre viac informácií o , PotentialAnomalyTypepozri Potenciálne kódy typov anomálií.
  3. Aktivita v zápisníku (vo vnútri vetvy Pravdy ): Beží OPTIMIZE na stole zo Spark zápisníka.

Na konci tohto tutoriálu budete mať zápisník, ktorý berie parametre z pipeline a optimalizuje tabuľku pri spustení.

Krok 1: Vytvorte optimalizačný zápisník

Notebook prijíma cieľový Lakehouse, schému a názov tabuľky ako parametre z pipeline, potom vykonáva OPTIMIZE v Spark SQL.

  1. Vo vašom pracovnom priestore Fabric vyberte +Nový zápisníkpoložky>.
  2. Nazvite zápisník Optimize-Table.
  3. V sekcii Lokalita vyberte Lakehouse, kde sú uložené tabuľky, ktoré kontrolujete. Toto cvičenie využíva jazerný dom s názvom SalesDataLakehouse.
  4. Vyberte položku Vytvoriť.

Pridaj parametrickú bunku

Prvá bunka definuje premenné, ktoré pipeline prepisuje počas behu.

  1. V prvej bunke zadajte nasledujúce parametre. Hodnoty nie sú dôležité a pipeline ich počas behu prepíše.

    # Parameters 
    lakehouse_name = "<LakehouseName>"
    schema_name    = "<SchemaName>"
    table_name     = "<TableName>"
    

    Dôležité

    Ako funguje parametrizácia v Fabric notebookoch: Počas behu Fabric vstrekne novú bunku hneď po parametrickej bunke, ktorá tieto premenné znovu priradí s hodnotami odovzdanými pipeline. Hodnoty, ktoré tu nastavíte, inicializujú len premenné a zlepšujú čitateľnosť.

  2. Vyberte menu buniek (...) >Prepnite parameter bunku na označenie tejto bunky ako parameter bunky.

Pridajte bunku OPTIMIZE

Príkaz OPTIMIZE je príkaz Spark SQL, nie T-SQL. Musíte ho spustiť v prostredí Spark, ako sú notebooky, definície úloh Spark alebo rozhranie údržby Lakehouse. SQL analytics endpoint a Warehouse SQL query editor tento príkaz priamo nepodporujú.

  1. V druhej bunke vložíme:

    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. Pridávajte Markdown bunky podľa potreby, aby ste správne zdokumentovali zápisník pre ostatných používateľov. Váš finálny zápisník by mal vyzerať približne takto:

    Snímka obrazovky zápisníka Fabric s názvom 'Optimalizujte Lakehouse stôl, keď zdravotné kontroly ukážu, že je potrebný', s dvoma PySpark bunkami: jedna nastavuje parametre pipeline pre lakehouse, schému a tabuľku a druhá spustí príkaz OPTIMIZE pre vybranú Lakehouse tabuľku.

Nota

Tento príklad uvažuje Lakehouse s povolenými schémami. Ak nepoužívate schémy Lakehouse, upravte podľa toho trojdielny názov full_name .

Krok 2: Vytvorte pipeline

  1. Vo vašom pracovnom priestore Fabric vyberte + Pipeline nových položiek>.

  2. Nazvite pipeline Check-and-Optimize-Table.

  3. Vyberte pozadie pipeline canvas a potom otvorte kartu Parametre . Pridajte tri parametre:

    Meno Zadať Predvolená hodnota
    lakehouse_name Povrázok SalesDataLakehouse
    schema_name Povrázok dbo
    table_name Povrázok FactSales

Krok 3: Pridajte aktivitu Script

Skriptová aktivita beží sys.sp_get_table_health_metrics na SQL analytickom endpointe a zachytáva výsledok.

Dôležité

Použite skriptovú aktivitu, nie uloženú procedúru . Iba skriptová aktivita zobrazuje výslednú množinu ako štruktúrovaný JSON výstup, ktorý môžu následné aktivity analyzovať.

  1. Na karte Aktivity vyberte Script , aby ste ho pridali na plátno.
  2. Nazvite to Check Table Health.
  3. V záložke Nastavenia :
    • Pripojenie: Vyberte SQL analytics endpoint pre váš Lakehouse. Ak to nie je uvedené, vyberte možnosť Prehliadať všetko v spodnej časti rozbaľovacieho zoznamu a potom nájdite SQL analytics endpoint vášho Lakehouse.

    • Typ skriptu: Vyberte Query.

    • Skript: VybertePridať dynamický obsah a zadajte nasledujúci výraz:

      @concat('EXEC sys.sp_get_table_health_metrics ''',
              pipeline().parameters.schema_name, '.',
              pipeline().parameters.table_name, '''')
      

Tento výraz vytvára SQL príkaz, ktorý vykoná uloženú procedúru na vašej cieľovej tabuľke, napríklad: EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'.

Overte výstup skriptu

Spustite pipeline raz a skontrolujte výstup aktivity skriptu . Vidíte objekt JSON podobný tomu:

{
  "resultSetCount": 1,
  "resultSets": [
    {
      "rowCount": 1,
      "rows": [
        {
          "PotentialAnomalyType": 3,
          "PotentialAnomalyDescription": "Too many small files...",
          "FileCount": 2688,
          "...": "..."
        }
      ]
    }
  ]
}

Dôležité

Váš skutočný výsledok sa môže líšiť v závislosti od stavu vášho stola. Kľúčové je, že vracia stĺpce zobrazené .sys.sp_get_table_health_metrics

Krok 4: Pridajte aktivitu If Condition

Aktivita If Condition číta PotentialAnomalyType priamo z výstupu aktivity Script a prijíma rozhodnutie na základe svojho výsledku. Postupujte takto:

  1. Na karte Aktivity vyberte Ak podmienku , aby ste pridali aktivitu na plátno.

  2. Nazvite to Check Anomaly.

  3. Nakreslite šípku Úspech (zelená) z Zdravia na kontrolu tabuľky na anomáliu.

  4. V záložke Aktivity v aktivite If Condition nastavte výraz na:

    @greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
    

Tento výraz číta prvý riadok vrátený , sys.sp_get_table_health_metricsprechádza PotentialAnomalyType na celé číslo a vyhodnocuje sa na true , keď je hodnota väčšia ako nula, čo naznačuje anomáliu zistenú v cieľovej tabuľke.

Krok 5: Pridaj aktivitu Zápisník (vetva True)

S vybranou aktivitou If Condition vyberte Upraviť (ikona ceruzky) vedľa True. Plátno sa prepína na pod-plátno zamerané na vetvu True .

  1. Pretiahnite aktivitu Notebook na pod-canvas True.

  2. Nazvite to Run OPTIMIZE.

  3. Na karte Nastavenia :

    • Zápisník: Vyberte zápisník Optimize-Table , ktorý ste vytvorili v kroku 1.

    • Rozbalte základné parametre a pridajte tri riadky:

      Meno Zadať Hodnota
      lakehouse_name Povrázok @pipeline().parameters.lakehouse_name
      schema_name Povrázok @pipeline().parameters.schema_name
      table_name Povrázok @pipeline().parameters.table_name

Hodnoty troch menových stĺpcov musia presne zodpovedať názvom premenných v parametrickej bunke zápisníka.

Nota

Aktivity False môžete nechať prázdne. Aktivita If Condition považuje prázdnu vetvu False za no-op a hlási pipeline ako úspešné.

Váš dokončený pipeline by mal vyzerať nasledovne:

Snímka obrazovky Fabric dátového pipeline s aktivitou skriptu Check Table Health pripojenou k podmienenej aktivite Check Anomaly. Pravá vetva vykonáva aktivitu OPTIMIZE zápisníka, zatiaľ čo falošná vetva nemá žiadne aktivity.

Krok 6: Validujte a spustite

  1. Na paneli nástrojov pipeline vyberte Validate , aby ste skontrolovali chyby v konfigurácii.

  2. Vyberte Spustiť na manuálne spustenie pipeline.

  3. Sledujte beh a potvrďte:

    1. Skontrolujte stav stola: skontrolujte výstup z tejto aktivity, keď beží. Mali by ste vidieť výstup z uloženej procedúry sys.sp_get_table_health_metrics vo formáte JSON.
    2. Check Anomaly: správne vyhodnocuje čítaním PotentialAnomalyType priamo zo skriptového výstupu.
    3. Spustiť OPTIMIZE (len ak PotentialAnomalyType > 0): ak aktivita Check Anomaly vyhodnotí True, skontrolujte vstup aktivity Run OPTIMIZATE , aby ste overili, že používa správne parametre (názov Lakehouse, schéma a názov tabuľky) a skontrolujte výstup na preštudovanie správ z operácie OPTIMIZE .

Vyčistenie zdrojov

Ak ste vytvorili zdroje len pre tento tutoriál a už ich nepotrebujete, vymažte nasledujúce položky zo svojho pracovného priestoru:

  • Pipeline Check-and-Optimize-Table .
  • Zošit Optimize-Table .