Gestire modelli semantici con l'endpoint XMLA
Il controllo della versione tiene traccia delle modifiche apportate ai modelli semantici, ma non verifica che il modello sia corretto. Una colonna rinominata potrebbe interrompere le relazioni. Una misura modificata potrebbe restituire risultati imprevisti. L'endpoint XMLA fornisce l'accesso programmatico ai modelli semantici in modo da poter esaminare, convalidarli e testarli tramite codice e strumenti esterni.
Che cos'è l'endpoint XMLA?
L'endpoint XMLA (XML for Analysis) è il protocollo usato Power BI per la comunicazione tra le applicazioni client e il motore che gestisce i modelli semantici. Ogni area di lavoro di Fabric o Power BI Premium espone un endpoint XMLA. Tutti i dati inviati tramite il protocollo XMLA sono completamente crittografati.
Per impostazione predefinita, l'endpoint è abilitato per l'accesso in sola lettura , che consente di eseguire query su dati e metadati del modello. Gli amministratori della capacità possono anche abilitare l'accesso in lettura/scrittura per uno spazio di lavoro. La lettura/scrittura sblocca funzionalità aggiuntive, ad esempio la distribuzione delle modifiche del modello, l'esecuzione di operazioni con script e l'attivazione dell'aggiornamento da strumenti esterni. Questa unità è incentrata sulle attività che è possibile completare con l'accesso in sola lettura.
La stringa di connessione dell'endpoint XMLA segue questo formato:
powerbi://api.powerbi.com/v1.0/[tenant name]/[workspace name]
La stringa di connessione è indirizzata all'area di lavoro. Dopo la connessione, specificare il modello semantico su cui eseguire la query. In SemPy passare il nome del modello come parametro. Negli strumenti desktop come DAX Studio o Editor tabulare si seleziona il modello come database o catalogo iniziale.
Le applicazioni che funzionano con Azure Analysis Services o SQL Server Analysis Services in genere funzionano con Power BI tramite XMLA con modifiche minime alla configurazione.
SemPy nei notebook Fabric
SemPy è la libreria Python in Fabric notebook che si connette ai modelli semantici tramite l'endpoint XMLA. Offre un modo Python nativo per esaminare i metadati, convalidare la struttura e testare i calcoli senza uscire dall'ambiente notebook. SemPy è incluso in Fabric Runtime 1.2 e versioni successive, quindi non è necessario installarlo separatamente.
Esaminare i metadati del modello
Usare le funzioni SemPy per esplorare la struttura di un modello semantico pubblicato. Queste funzioni restituiscono dataframe che è possibile filtrare, ordinare e analizzare a livello di codice:
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")
L'ispezione dei metadati consente di comprendere rapidamente un modello sconosciuto. È possibile controllare il numero di tabelle che un modello contiene, quali colonne sono disponibili e quali misure sono definite, tutte da una cella del notebook anziché aprire Power BI Desktop.
Convalidare le relazioni
Gli errori di relazione sono una fonte comune di risultati del report non corretti. I valori di chiave esterna che non corrispondono ai valori della chiave primaria creano righe orfane, che possono causare righe vuote nei report o aggregazioni errate:
# 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)
La list_relationship_violations() funzione accetta un dizionario di dataframe di tabella e usa i metadati della relazione del modello semantico per convalidare l'integrità dei dati. Restituisce righe in cui un valore di chiave esterna in una tabella non ha alcun valore di chiave primaria corrispondente nella tabella correlata. Se il risultato è vuoto, tutte le relazioni sono intatte. Se esistono violazioni, è possibile sapere esattamente quali tabelle e chiavi richiedono attenzione prima che il modello venga inserito nell'ambiente di produzione.
Calcoli delle misure di test
Verificare che le misure DAX restituiscano i risultati previsti valutandoli programmaticamente. Ciò è utile dopo aver apportato modifiche per assicurarsi che non si sia verificato alcun problema:
# 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"
)
Confrontando l'output con i valori noti, si crea un semplice controllo di convalida. Ad esempio, se i ricavi totali per il 2024 devono essere un importo specifico, è possibile affermare automaticamente tale valore in Python e contrassegnare automaticamente le discrepanze.
Controllare la qualità dei dati
Leggere i dati della tabella in un FabricDataFrame per controllare la qualità dei dati. FabricDataFrame è un dataframe pandas che mantiene i metadati semantici dal modello:
# 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}")
I controlli di qualità dei dati nei notebook sono ripetibili. È possibile eseguire lo stesso notebook prima di ogni distribuzione per rilevare i problemi che un'ispezione visiva potrebbe non rilevare. Nel corso del tempo, questi notebook diventano una suite di convalida per i modelli semantici.
Convalidare con gli strumenti esterni
Gli strumenti desktop esterni si connettono anche ai modelli semantici tramite l'endpoint XMLA. Questi strumenti offrono funzionalità interattive che integrano l'approccio automatizzato di SemPy:
- DAX Studio consente di scrivere e testare query DAX in modo interattivo su modelli semantici pubblicati. Usarlo per verificare che le misure restituisca i risultati previsti prima della distribuzione.
- L'editor tabulare consente di esaminare e modificare la struttura del modello tramite una struttura ad albero di oggetti visivi. Best Practice Analyzer (BPA) esegue regole configurabili per rilevare problemi strutturali come le colonne nascoste a cui si fa riferimento in misure, tabelle inutilizzate o descrizioni mancanti.
- ALM Toolkit confronta gli schemi tra due modelli semantici, ad esempio sviluppo e produzione, in modo da poter esaminare le differenze prima della distribuzione.
Il servizio Fabric include anche un analizzatore di procedure consigliate predefinito che è possibile eseguire direttamente dal menu di scelta rapida di un modello semantico. Genera un notebook che controlla più di 60 regole in cinque categorie: Prestazioni, Espressioni DAX, Prevenzione errori, Manutenzione e Formattazione. Non è necessaria alcuna installazione degli strumenti esterni.
Tutti e tre gli strumenti esterni usano la stessa stringa di connessione XMLA che useresti in un notebook. La differenza è l'interattività: scegliere questi strumenti quando è necessario feedback visivo in tempo reale rispetto alla convalida ripetibile e con script di SemPy.
Scegliere l'approccio corretto
Sia SemPy che gli strumenti esterni accedono ai modelli semantici tramite XMLA, ma servono flussi di lavoro diversi:
| Attività | SemPy nei notebook | Strumenti esterni |
|---|---|---|
| Esaminare i metadati del modello |
list_tables(), list_measures(), list_columns() |
Tabular Editor |
| Convalidare le relazioni | list_relationship_violations() |
Tabular Editor |
| Calcoli delle misure di test |
evaluate_measure(), evaluate_dax() |
DAX Studio |
| Controllare la qualità dei dati |
read_table() con le asserzioni di Python |
— |
| Controllo delle procedure consigliate | BPA integrato dal menu modello semantico | Tabular Editor BPA |
| Confronto schemi | — | ALM Toolkit |
Usare SemPy quando è necessaria una convalida automatizzata ripetibile, eseguire lo stesso notebook prima di ogni distribuzione per rilevare problemi strutturali a livello di codice. Usa strumenti esterni quando hai bisogno di esplorazione interattiva e feedback in tempo reale sul desktop.
Note
Sia SemPy che gli strumenti esterni si basano sull'endpoint XMLA. Se l'endpoint è disabilitato, nessun approccio funziona. Verificare che l'endpoint sia abilitato nel portale di amministrazione della capacità prima di iniziare.
Con la convalida a livello di codice, la fase Convalida è completata. Passare quindi alla fase Distribuisci , promuovendo il contenuto testato nell'ambiente di produzione tramite pipeline di distribuzione.