Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
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:
- Et Microsoft Fabric workspace med bidragyder- eller højere tilladelser.
- Et Lakehouse i det arbejdsområde med mindst én Delta-tabel, du vil overvåge. Denne tutorial bruger et søhus ved navn
SalesDataLakehouse. - Fortrolighed med Fabric-datapipelines.
- Fortrolighed med Fabric-notesbøger.
Løsningsstruktur
Den færdige rørledning har denne struktur:
-
Scriptaktivitet: Udfører
sp_get_table_health_metricsmod måltabellen og returnerer tabel-sundhedsmetrikker som struktureret output. -
Hvis Condition-aktivitet: Læser
PotentialAnomalyTypedirekte fra scriptoutputtet og tjekker, om det er større end nul. For mere information omPotentialAnomalyType, se Potentielle anomalitypekoder. -
Notesbogsaktivitet (inde i True-grenen ): Kører
OPTIMIZEpå 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.
- I dit Fabric-arbejdsområde vælger du + Ny genstand>Notesbog.
- Navngiv notesbogen Optimize-Table.
- Under Lokation vælger du det søhus, hvor de borde, du tjekker, opbevares. Denne øvelse bruger et søhus ved navn
SalesDataLakehouse. - Vælg Opret.
Tilføj parametercellen
Den første celle definerer de variable, som pipelinen overskriver ved kørsel.
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.
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.
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)Tilføj Markdown-celler efter behov for korrekt at dokumentere notesbogen for andre brugere. Din færdige notesbog skal se nogenlunde sådan ud:
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
I dit Fabric-arbejdsområde vælger du + Ny vare-pipeline>.
Navngiv pipelinen Check-and-Optimize-Table.
Vælg pipeline-lærredets baggrund, og åbn derefter fanen Parametre . Tilføj tre parametre:
Name Type Standardværdi lakehouse_nameStreng SalesDataLakehouseschema_nameStreng dbotable_nameStreng 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.
- Fra fanen Aktiviteter , vælg Script for at tilføje det til lærredet.
- Giv det et navn: Tjek Table Health.
- 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:
Fra fanen Aktiviteter vælger du Hvis Betingelse for at tilføje en aktivitet til lærredet.
Navngiv det Tjek Anomalien.
Tegn en Succespil (grøn) fra Tjek Tabel Sundhed til Tjek Anomali.
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 .
Træk en Notesbogsaktivitet over på True-underlærredet.
Kald det Kør OPTIMIZE.
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_nameStreng @pipeline().parameters.lakehouse_nameschema_nameStreng @pipeline().parameters.schema_nametable_nameStreng @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:
Trin 6: Valider og kør
Vælg Valider på pipeline-værktøjslinjen for at tjekke for konfigurationsfejl.
Vælg Kør for manuelt at udføre pipelinen.
Overvåg løbet og bekræft:
-
Tjek tabelens sundhed: inspicer outputtet fra denne aktivitet, når den kører. Du burde se outputtet fra stored
sys.sp_get_table_health_metricsprocedure i JSON-format. -
Tjek Anomalien: evaluerer korrekt ved at læse
PotentialAnomalyTypedirekte fra scriptoutputtet. -
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 operationenOPTIMIZE.
-
Tjek tabelens sundhed: inspicer outputtet fra denne aktivitet, når den kører. Du burde se outputtet fra stored
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.