Administrer semantiske modeller med XMLA-endpointet
Versionskontrol sporer ændringer i dine semantiske modeller, men den verificerer ikke, at modellen er korrekt. En omdøbt spalte kan ødelægge forhold. En modificeret foranstaltning kan give uventede resultater. XMLA-endpointet giver programmatisk adgang til semantiske modeller, så du kan inspicere, validere og teste dem gennem kode og eksterne værktøjer.
Hvad er XMLA-endpointet?
XMLA (XML for Analysis) endepunktet er den protokol, som Power BI bruger til kommunikation mellem klientapplikationer og motoren, der håndterer semantiske modeller. Hver Fabric- eller Power BI Premium-arbejdsområde eksponerer et XMLA-endpoint. Alle data, der sendes over XMLA-protokollen, er fuldt krypterede.
Som standard er endpointet aktiveret til skrivebeskyttet adgang, hvilket lader dig forespørge modeldata og metadata. Kapacitetsadministratorer kan også aktivere læse-skrive-adgang for et arbejdsområde. Read-write låser op for yderligere funktioner som implementering af modelændringer, kørsel af scriptede operationer og udløsning af opdatering fra eksterne værktøjer. Denne enhed fokuserer på opgaver, du kan udføre med skrivebeskyttet adgang.
XMLA-endpoint-forbindelsesstreng følger dette format:
powerbi://api.powerbi.com/v1.0/[tenant name]/[workspace name]
forbindelsesstreng sigter mod arbejdsområdet. Efter forbindelsen specificerer du, hvilken semantisk model der skal forespørges. I SemPy sender du modelnavnet som parameter. I desktopværktøjer som DAX Studio eller Tabular Editor vælger du modellen som database eller initialkatalog.
Applikationer, der arbejder med Azure Analysis Services eller SQL Server Analysis Services, arbejder typisk med Power BI via XMLA med minimale konfigurationsændringer.
SemPy in Fabric-notesbøger
SemPy er Python-biblioteket i Fabric-notebooks, som forbinder til semantiske modeller via XMLA-endpointet. Det giver en Python-native måde at inspicere metadata, validere strukturer og teste beregninger uden at forlade notebook-miljøet. SemPy er inkluderet i Fabric Runtime 1.2 og senere, så du behøver ikke installere det separat.
Inspektér modelmetadata
Brug SemPy-funktioner til at udforske strukturen af en offentliggjort semantisk model. Disse funktioner returnerer DataFrames, som du kan filtrere, sortere og analysere programmatisk:
import sempy.fabric as fabric
# List all tables in a semantic model
tables = fabric.list_tables("Sales Model", workspace="Sales Workspace")
# List columns for all tables
columns = fabric.list_columns("Sales Model", workspace="Sales Workspace")
# List all measures defined in the model
measures = fabric.list_measures("Sales Model", workspace="Sales Workspace")
Metadata-inspektion hjælper dig med hurtigt at forstå en ukendt model. Du kan tjekke, hvor mange tabeller en model indeholder, hvilke kolonner der er tilgængelige, og hvilke mål der er defineret, alt sammen fra en notesbogscelle i stedet for at åbne Power BI Desktop.
Validere relationer
Relationsfejl er en almindelig kilde til forkerte rapportresultater. Fremmede nøgleværdier, der ikke matcher primære nøgleværdier, skaber forældreløse rækker, hvilket kan forårsage tomme rækker i rapporter eller forkerte aggregeringer:
# List all relationships in the model
relationships = fabric.list_relationships("Sales Model", workspace="Sales Workspace")
# Read tables into DataFrames and check for relationship violations (orphaned keys)
tables = {table: fabric.read_table("Sales Model", table, workspace="Sales Workspace")
for table in fabric.list_tables("Sales Model", workspace="Sales Workspace")["Name"]}
violations = fabric.list_relationship_violations(tables)
Funktionen list_relationship_violations() tager en ordbog over tabeller DataFrames og bruger relationsmetadata fra den semantiske model til at validere dataintegritet. Den returnerer rækker, hvor en fremmednøgleværdi i en tabel ikke har en matchende primær nøgleværdi i den relaterede tabel. Hvis resultatet er tomt, er alle relationer intakte. Hvis der findes overtrædelser, ved du præcis, hvilke tabeller og nøgler der skal behandles, før modellen går i produktion.
Beregninger af testmål
Verificér, at DAX-målinger returnerer forventede resultater ved at evaluere dem programmatisk. Dette er nyttigt efter ændringer for at sikre, at intet går i stykker:
# Evaluate a specific measure grouped by dimensions
result = fabric.evaluate_measure(
"Sales Model",
measure="Total Revenue",
groupby_columns=["Date[Year]", "Product[Category]"],
workspace="Sales Workspace"
)
# Run a custom DAX query
dax_result = fabric.evaluate_dax(
"Sales Model",
'EVALUATE SUMMARIZECOLUMNS(Date[Year], "Revenue", [Total Revenue])',
workspace="Sales Workspace"
)
Ved at sammenligne outputtet med kendte værdier skaber du en simpel valideringskontrol. For eksempel, hvis den samlede omsætning for 2024 skal være et bestemt beløb, kan du angive den værdi i Python og automatisk markere uoverensstemmelser.
Tjek datakvaliteten
Læs tabeldata ind i en FabricDataFrame for at inspicere datakvaliteten. En FabricDataFrame er en pandas DataFrame, der bevarer semantiske metadata fra modellen:
# Read a table and check for quality issues
df = fabric.read_table("Sales Model", "Customers", workspace="Sales Workspace")
# Check for null values in key columns
null_counts = df[["CustomerKey", "CustomerName"]].isnull().sum()
print(null_counts)
# Verify unique keys
duplicate_keys = df["CustomerKey"].duplicated().sum()
print(f"Duplicate customer keys: {duplicate_keys}")
Datakvalitetskontroller i notesbøger kan gentages. Du kan køre den samme notebook før hver udrulning for at opdage problemer, som visuel inspektion måske overser. Med tiden bliver disse notesbøger en valideringssuite for dine semantiske modeller.
Valider med eksterne værktøjer
Eksterne skrivebordsværktøjer forbinder også til semantiske modeller via XMLA-endpointet. Disse værktøjer tilbyder interaktive funktioner, der supplerer SemPys automatiserede tilgang:
- DAX Studio lader dig skrive og teste DAX-forespørgsler interaktivt mod publicerede semantiske modeller. Brug det til at verificere, at målingerne giver forventede resultater før implementering.
- Tabular Editor lader dig inspicere og redigere modelstrukturen gennem et visuelt objekttræ. Dets Best Practice Analyzer (BPA) kører konfigurerbare regler for at fange strukturelle problemer som skjulte kolonner refereret til i målinger, ubrugte tabeller eller manglende beskrivelser.
- ALM Toolkit sammenligner skemaer mellem to semantiske modeller, for eksempel udvikling og produktion, så du kan gennemgå forskelle før implementering.
Fabric-tjenesten inkluderer også en indbygget Best Practice Analyzer, som du kan køre direkte fra en semantisk models kontekstmenu. Den genererer en notesbog, der tjekker mere end 60 regler på tværs af fem kategorier: Ydeevne, DAX-udtryk, fejlforebyggelse, vedligeholdelse og formatering. Der kræves ingen installation af eksternt værktøj.
Alle tre eksterne værktøjer bruger den samme XMLA-forbindelsesstreng, som du ville bruge i en notesbog. Forskellen er interaktiviteten: vælg disse værktøjer, når du har brug for visuel feedback i realtid, i stedet for SemPys scriptede, gentagelige validering.
Vælg den rigtige tilgang
Både SemPy og eksterne værktøjer tilgår semantiske modeller via XMLA, men de betjener forskellige arbejdsgange:
| Opgave | SemPy i notesbøger | Eksterne værktøjer |
|---|---|---|
| Inspektér modelmetadata |
list_tables(), list_measures(), list_columns() |
Tabeleditor |
| Validere relationer | list_relationship_violations() |
Tabeleditor |
| Beregninger af testmål |
evaluate_measure(), evaluate_dax() |
DAX Studio |
| Tjek datakvaliteten |
read_table() med Python påstande |
– |
| Best practice revision | Indbygget BPA fra semantisk modelmenu | Tabular Editor BPA |
| Skema-sammenligning | – | ALM værktøjskasse |
Brug SemPy, når du har brug for automatiseret, gentagelig validering — kør den samme notebook før hver udrulning for at opdage strukturelle problemer programmatisk. Brug eksterne værktøjer, når du har brug for interaktiv udforskning og feedback i realtid på skrivebordet.
Note
Både SemPy og eksterne værktøjer er afhængige af XMLA-endpointet. Hvis endpointet er deaktiveret, virker ingen af metoderne. Kontroller at endpointet er aktiveret i kapacitetsadministrationsportalen, før du starter.
Med programmatisk validering på plads er valideringsfasen fuldført. Dernæst går du videre til Deploy-fasen — hvor du promoverer testet indhold til produktion gennem deployment-pipelines.