Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa esercitazione illustra come usare un notebook di Jupyter per interagire con Power BI e rilevare le relazioni tra tabelle con la libreria SemPy.
In questa esercitazione apprenderai a:
- Individuare le relazioni in un modello semantico (set di dati di Power BI) usando la libreria Python (SemPy) del collegamento semantico.
- Usare i componenti SemPy che si integrano con Power BI e automatizzare l'analisi della qualità dei dati. Questi componenti includono:
-
FabricDataFrame- una struttura simile a pandas migliorata con informazioni semantiche - Funzioni che estraggono modelli semantici da un'area di lavoro infrastruttura nel notebook
- Funzioni che testano le dipendenze funzionali e identificano le violazioni delle relazioni nei modelli semantici
-
Prerequisiti
Ottenere una sottoscrizione di Microsoft Fabric. In alternativa, iscriversi per ottenere una versione di valutazione di Microsoft Fabric gratuita.
Accedere a Microsoft Fabric.
Usa il selettore di esperienza in basso a sinistra nella tua home page per passare a Fabric.
Passare a Aree di lavoro nel riquadro di spostamento e quindi selezionare l'area di lavoro per impostarla come area di lavoro corrente.
Scaricare i modelli semantici Customer Profitability Sample.pbix e Customer Profitability Sample (auto).pbix dal repository GitHub fabric-samples e quindi caricarli nell'area di lavoro.
Seguire la procedura nel notebook
Usare il notebook powerbi_relationships_tutorial.ipynb per seguire la procedura.
Per aprire il notebook di accompagnamento per questa esercitazione, seguire le istruzioni riportate in Preparare il sistema per le esercitazioni di data science per importare il notebook nell'area di lavoro.
Se si preferisce copiare e incollare il codice da questa pagina, è possibile creare un nuovo notebook.
Assicurati di associare un lakehouse al notebook prima di iniziare a eseguire il codice.
Configurare il notebook
Configurare un ambiente notebook con i moduli e i dati necessari.
Installare il
semantic-linkpacchetto da PyPI usando il%pipcomando inline nel notebook.%pip install semantic-linkImportare i
sempymoduli che verranno usati in un secondo momento.import sempy.fabric as fabric from sempy.relationships import plot_relationship_metadata from sempy.relationships import find_relationships from sempy.fabric import list_relationship_violationsImportare la
pandaslibreria e impostare un'opzione di visualizzazione per la formattazione dell'output.import pandas as pd pd.set_option('display.max_colwidth', None)
## Explore semantic models
This tutorial uses the Customer Profitability Sample semantic model [_Customer Profitability Sample.pbix_](https://github.com/microsoft/fabric-samples/blob/main/docs-samples/data-science/datasets/Customer%20Profitability%20Sample.pbix). Learn about the semantic model in [Customer Profitability sample for Power BI](/power-bi/create-reports/sample-customer-profitability).
- Use SemPy's `list_datasets` function to explore semantic models in your current workspace:
```python
fabric.list_datasets()
Per il resto di questo notebook, usare due versioni del modello semantico Customer Profitability Sample:
- Esempio di redditività dei clienti: modello semantico fornito negli esempi di Power BI, con relazioni di tabella predefinite
- Esempio di redditività dei clienti (auto): gli stessi dati, ma le relazioni sono limitate a quelle rilevate automaticamente da Power BI
Estrarre relazioni predefinite dal modello semantico di esempio
Caricare le relazioni predefinite nel modello semantico Customer Profitability Sample usando la funzione di
list_relationshipsSemPy. La funzione elenca le relazioni dal modello a oggetti tabulare (TOM).dataset = "Customer Profitability Sample" relationships = fabric.list_relationships(dataset) relationshipsVisualizzare il
relationshipsdataframe come grafico usando la funzione diplot_relationship_metadataSemPy.plot_relationship_metadata(relationships)Questo grafico mostra le relazioni tra le tabelle in questo modello semantico, come definito in Power BI da un esperto di materia.
Individuare relazioni aggiuntive
Se si inizia con le relazioni rilevate automaticamente da Power BI, è disponibile un set più piccolo.
Visualizzare le relazioni rilevate automaticamente da Power BI nel modello semantico:
dataset = "Customer Profitability Sample (auto)" autodetected = fabric.list_relationships(dataset) plot_relationship_metadata(autodetected)L'autodetezione di Power BI perde molte relazioni. Inoltre, due delle relazioni rilevate automaticamente non sono semanticamente corrette:
-
Executive[ID]->Industry[ID] -
BU[Executive_id]->Industry[ID]
-
Stampare le relazioni come tabella:
autodetectedLe righe 3 e 4 mostrano relazioni non corrette con la
Industrytabella. Rimuovere queste righe.Eliminare le relazioni identificate in modo non corretto.
# Remove rows 3 and 4 which point incorrectly to Industry[ID] autodetected = autodetected[~autodetected.index.isin([3, 4])]Ora si dispone di relazioni corrette ma incomplete. Visualizzare queste relazioni incomplete usando
plot_relationship_metadata:plot_relationship_metadata(autodetected)Caricare tutte le tabelle dal modello semantico usando le funzioni e
read_tabledilist_tablesSemPy, quindi trovare relazioni tra le tabelle usandofind_relationships. Esaminare l'output del log per ottenere informazioni dettagliate sul funzionamento di questa funzione:suggested_relationships_all = find_relationships( tables, name_similarity_threshold=0.7, coverage_threshold=0.7, verbose=2 )Visualizzare le relazioni appena individuate:
plot_relationship_metadata(suggested_relationships_all)SemPy rileva tutte le relazioni.
Usare il parametro
excludeper limitare la ricerca alle relazioni aggiuntive non identificate in precedenza:additional_relationships = find_relationships( tables, exclude=autodetected, name_similarity_threshold=0.7, coverage_threshold=0.7 ) additional_relationships
Convalidare le relazioni
Prima di tutto, caricare i dati dal modello semantico Customer Profitability Sample .
dataset = "Customer Profitability Sample" tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()Controllare la sovrapposizione della chiave primaria e esterna con la
list_relationship_violationsfunzione . Passare l'output dellalist_relationshipsfunzione alist_relationship_violations.list_relationship_violations(tables, fabric.list_relationships(dataset))I risultati rivelano informazioni utili. Ad esempio, uno dei sette valori in
Fact[Product Key]non è presente inProduct[Product Key]e la chiave mancante è50.L'analisi esplorativa dei dati e la pulizia dei dati sono iterativi. Le informazioni apprese dipendono dalle domande e dal modo in cui si esplorano i dati. Il collegamento semantico aggiunge strumenti che consentono di eseguire altre operazioni con i dati.
Contenuto correlato
Esplorare altre esercitazioni per il collegamento semantico e SemPy:
- Guida: Correggere i dati con dipendenze funzionali
- Esercitazione: Analizzare le dipendenze funzionali in un modello semantico di esempio
- Esercitazione: Estrarre e calcolare le misure di Power BI da un Jupyter Notebook
- Esercitazione: Individuare le relazioni nel set di dati Synthea usando il collegamento semantico
- Esercitazione: Convalidare i dati usando SemPy e Great Expectations (GX)