Optimer Lakehouse-tabeller baseret på sundhedstjek

Gælder for:✅ SQL analytics endpoint i Microsoft Fabric

I denne vejledning lærer du, hvordan du bygger en Microsoft Fabric Pipeline til at udføre intelligent tabelvedligeholdelse.

Denne løsning kalder T-SQL sys.sp_get_table_health_metrics stored procedure på Lakehouse SQL-analyseendpointet, evaluerer resultatet og kører OPTIMIZE kun, når tabellen faktisk har brug for vedligeholdelse. Dette "check-then-act"-mønster forhindrer unødvendigt beregningsforbrug på sunde tabeller, samtidig med at det sikrer, at forringede tabeller vedligeholdes automatisk.

Hvorfor vedligeholdelse er nødvendig

Lakehouse-tabeller kan samle for mange små Parquet-filer over tid, hvilket går ud over forespørgselsydelsen på SQL-analyse-endpointet.

I stedet for at køre OPTIMIZE på en fast tidsplan uanset tabellens tilstand, træffer denne pipeline en informeret beslutning: den tjekker først tabellens helbred og udløser kun optimering, når en anomali opdages.

Forudsætninger

Før du begynder, skal du sørge for, at du har:

Løsningsstruktur

Den færdige rørledning har denne struktur:

  1. Scriptaktivitet: Udfører sp_get_table_health_metrics mod måltabellen og returnerer tabel-sundhedsmetrikker som struktureret output.
  2. Hvis Condition-aktivitet: Læser PotentialAnomalyType direkte fra scriptoutputtet og tjekker, om det er større end nul. For mere information om PotentialAnomalyType, se Potentielle anomalitypekoder.
  3. Notesbogsaktivitet (inde i True-grenen ): Kører OPTIMIZE på tabellen fra en Spark-notesbog.

I slutningen af denne tutorial har du en notesbog, der tager parametre fra pipelinen og optimerer en tabel, når den aktiveres.

Trin 1: Opret optimeringsnotesbogen

Notebooken accepterer mål-Lakehouse-, skemaet og tabelnavnet som parametre fra pipelinen og kører OPTIMIZE derefter med Spark SQL.

  1. I dit Fabric-arbejdsområde vælger du + Ny genstand>Notesbog.
  2. Navngiv notesbogen Optimize-Table.
  3. Under Lokation vælger du det søhus, hvor de borde, du tjekker, opbevares. Denne øvelse bruger et søhus ved navn SalesDataLakehouse.
  4. Vælg Opret.

Tilføj parametercellen

Den første celle definerer de variable, som pipelinen overskriver ved kørsel.

  1. I den første celle indtastes følgende parametre. Værdierne er ikke vigtige, og pipelinen overskriver dem under kørsel.

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

    Vigtig

    Sådan fungerer parameterisering i Fabric-notebooks: Ved kørsel indsætter Fabric en ny celle umiddelbart efter parametercellen, som tildeler disse variable med de værdier, der sendes af pipelinen. De værdier, du sætter her, initialiserer kun variablerne og forbedrer læsbarheden.

  2. Vælg cellemenuen (...) >Skift parametercelle for at markere denne celle som en parametercelle.

Tilføj OPTIMALISEER-cellen

Kommandoen OPTIMIZE er en Spark SQL-kommando, ikke en T-SQL-kommando. Du skal køre det i Spark-miljøer som notesbøger, Spark-jobdefinitioner eller Lakehouse Maintenance-grænsefladen. SQL analytics-endpointet og Warehouse SQL-forespørgselseditoren understøtter ikke denne kommando direkte.

  1. I den anden celle indtastes:

    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. Tilføj Markdown-celler efter behov for korrekt at dokumentere notesbogen for andre brugere. Din færdige notesbog skal se nogenlunde sådan ud:

    Skærmbillede af en Fabric-notesbog med titlen 'Optimer en Lakehouse-tabel når sundhedstjek viser, at den er nødvendig', med to PySpark-celler: den ene sætter pipeline-leverede lakehouse-, skema- og tabelparametre, og den anden kører en OPTIMER-kommando for den valgte Lakehouse-tabel.

Note

Dette eksempel betragter et Lakehouse med skemaer aktiveret. Juster det tredelte navn derefter full_name , hvis du ikke bruger Lakehouse-skemaer.

Trin 2: Opret pipelinen

  1. I dit Fabric-arbejdsområde vælger du + Ny vare-pipeline>.

  2. Navngiv pipelinen Check-and-Optimize-Table.

  3. Vælg pipeline-lærredets baggrund, og åbn derefter fanen Parametre . Tilføj tre parametre:

    Name Type Standardværdi
    lakehouse_name Streng SalesDataLakehouse
    schema_name Streng dbo
    table_name Streng FactSales

Trin 3: Tilføj Script-aktiviteten

Script-aktiviteten kører sys.sp_get_table_health_metrics på SQL-analyse-endpointet og fanger resultatet.

Vigtig

Brug Script-aktiviteten , ikke Stored procedure-aktiviteten . Kun scriptaktiviteten eksponerer resultatsættet som struktureret JSON-output, som downstream-aktiviteter kan parse.

  1. Fra fanen Aktiviteter , vælg Script for at tilføje det til lærredet.
  2. Giv det et navn: Tjek Table Health.
  3. I fanen Indstillinger :
    • Forbindelse: Vælg SQL-analyse-endpointet til din Lakehouse. Hvis det ikke er opført, vælg Gennemse alle nederst i rullemenuen, og find derefter din Lakehouses SQL-analyse-endpoint.

    • Scripttype: Vælg forespørgsel.

    • Script: Vælg Tilføj dynamisk indhold og indtast følgende udtryk:

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

Dette udtryk producerer SQL-kommandoen, der udfører den lagrede procedure mod din måltabel, for eksempel: EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'.

Verificér scriptoutputtet

Kør pipelinen én gang og inspicer outputtet af scriptaktiviteten . Du ser et JSON-objekt, der ligner som:

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

Vigtig

Dit faktiske resultat kan variere afhængigt af tilstanden på dit bord. Nøglen er, at den returnerer de kolonner, der er eksponeret af sys.sp_get_table_health_metrics.

Trin 4: Tilføj if-tilstandsaktiviteten

Hvis betingelse-aktiviteten læser PotentialAnomalyType direkte fra scriptaktivitetens output og træffer en beslutning baseret på resultatet. Benyt følgende fremgangsmåde:

  1. Fra fanen Aktiviteter vælger du Hvis Betingelse for at tilføje en aktivitet til lærredet.

  2. Navngiv det Tjek Anomalien.

  3. Tegn en Succespil (grøn) fra Tjek Tabel Sundhed til Tjek Anomali.

  4. I fanen Aktiviteter under Hvis Betingelse-aktiviteten skal du sætte Udtrykket til:

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

Dette udtryk læser den første række, der returneres af sys.sp_get_table_health_metrics, kastes PotentialAnomalyType til et heltal og evaluerer til true , når værdien er større end nul, hvilket indikerer en anomali opdaget i måltabellen.

Trin 5: Tilføj Notebook-aktiviteten (True-grenen)

Med aktiviteten Hvis betingelse valgt, vælg Rediger (blyantikon) ved siden af Sand. Lærredet skifter til et under-lærred med scopet til True-grenen .

  1. Træk en Notesbogsaktivitet over på True-underlærredet.

  2. Kald det Kør OPTIMIZE.

  3. Under fanen Indstillinger:

    • Notesbog: Vælg den Optimize-Table-notesbog , du har oprettet i trin 1.

    • Udvid basisparametre, og tilføj derefter tre rækker:

      Name Type Værdi
      lakehouse_name Streng @pipeline().parameters.lakehouse_name
      schema_name Streng @pipeline().parameters.schema_name
      table_name Streng @pipeline().parameters.table_name

De tre navne-kolonneværdier skal matche variablenavnene i notesbogens parametercelle nøjagtigt.

Note

Du kan lade Falske-aktiviteter stå tomme. If-betingelsesaktiviteten behandler en tom Falsk-gren som en no-op og rapporterer pipelinen som fuldført.

Din færdige pipeline bør se sådan ud:

Skærmbillede af en Fabric-datapipeline med en Check Table Health-scriptaktivitet forbundet til en betinget aktivitet for Check Anomaly. Den sande gren kører en OPTIMIZE notebook-aktivitet, mens den falske gren ikke har aktiviteter.

Trin 6: Valider og kør

  1. Vælg Valider på pipeline-værktøjslinjen for at tjekke for konfigurationsfejl.

  2. Vælg Kør for manuelt at udføre pipelinen.

  3. Overvåg løbet og bekræft:

    1. Tjek tabelens sundhed: inspicer outputtet fra denne aktivitet, når den kører. Du burde se outputtet fra stored sys.sp_get_table_health_metrics procedure i JSON-format.
    2. Tjek Anomalien: evaluerer korrekt ved at læse PotentialAnomalyType direkte fra scriptoutputtet.
    3. Kør OPTIMIZE (kun hvis PotentialAnomalyType > 0): hvis aktiviteten Check Anomaly evaluerer True, gennemgå inputtet fra Run OPTIMIZE-aktiviteten for at bekræfte, at den bruger de korrekte parametre (Lakehouse-navn, skema og tabelnavn) og tjek outputtet for at gennemgå beskederne fra operationen OPTIMIZE .

Fjerne ressourcer

Hvis du kun har oprettet ressourcer til denne vejledning og ikke længere har brug for dem, så slet følgende elementer fra dit arbejdsområde:

  • Check-and-Optimize-Table pipelinen.
  • Optimize-Table notesbogen.