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.
In questa esercitazione si baserà sul lavoro di un analista di Power BI archiviato come modelli semantici (set di dati di Power BI). Usando SemPy (anteprima) nell'esperienza di data science di Synapse in Microsoft Fabric, si analizzano le dipendenze funzionali nelle colonne del dataframe. Questa analisi consente di individuare problemi di qualità dei dati sottili per ottenere informazioni più accurate.
In questa esercitazione apprenderai a:
- Applicare le conoscenze del dominio per formulare ipotesi sulle dipendenze funzionali in un modello semantico.
- Acquisire familiarità con i componenti della libreria Python (SemPy) di Semantic Link che si integrano con Power BI e consentono di automatizzare l'analisi della qualità dei dati. Questi componenti includono:
- FabricDataFrame: struttura simile a pandas migliorata con informazioni semantiche aggiuntive
- Funzioni che estraggono modelli semantici da un'area di lavoro infrastruttura nel notebook
- Funzioni che valutano le ipotesi di dipendenza funzionale 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 commutatore dell'esperienza in basso a sinistra della tua home page per passare a Fabric.
Selezionare Aree di lavoro nel riquadro di spostamento per trovare e selezionare l'area di lavoro. Questa area di lavoro diventa l'area di lavoro corrente.
Scaricare il file Customer Profitability Sample.pbix dal repository GitHub fabric-samples.
Nella tua area di lavoro, seleziona Importa>Report o Report impaginato>da questo computer per caricare il file Customer Profitability Sample.pbix nell'area di lavoro.
Seguire la procedura nel notebook
Il notebook powerbi_dependencies_tutorial.ipynb accompagna questa esercitazione.
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 collegare un lakehouse al notebook prima di iniziare a eseguire codice.
Configurare il notebook
Configurare un ambiente notebook con i moduli e i dati necessari.
Usare
%pipper installare SemPy da PyPI nel notebook.%pip install semantic-linkImportare i moduli necessari.
import sempy.fabric as fabric from sempy.dependencies import plot_dependency_metadata
Caricare e pre-elaborare i dati
Questa esercitazione usa un modello semantico di esempio standard Customer Profitability Sample.pbix. Per una descrizione del modello semantico, vedere Esempio di redditività dei clienti per Power BI.
Caricare i dati di Power BI in un
FabricDataFrameusando lafabric.read_tablefunzione .dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()Caricare la
Statetabella in un oggettoFabricDataFrame.state = fabric.read_table(dataset, "State") state.head()Anche se l'output è simile a un dataframe pandas, questo codice inizializza una struttura di dati denominata che
FabricDataFrameaggiunge operazioni su pandas.Controllare il tipo di dati di
customer.type(customer)L'output mostra che
customerèsempy.fabric._dataframe._fabric_dataframe.FabricDataFrame.Unire gli
customeroggetti estateDataFrame.customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left') customer_state_df.head()
Identificare le dipendenze funzionali
Una dipendenza funzionale è una relazione uno-a-molti tra i valori in due o più colonne di un oggetto DataFrame. Usare queste relazioni per rilevare automaticamente i problemi di qualità dei dati.
Eseguire la funzione semPy nell'oggetto unito
DataFrameper identificare le dipendenze funzionali tra i valori difind_dependenciescolonna.dependencies = customer_state_df.find_dependencies() dependenciesVisualizzare le dipendenze usando la funzione di
plot_dependency_metadataSemPy.plot_dependency_metadata(dependencies)Il grafico delle dipendenze funzionali mostra che la
Customercolonna determina colonne comeCity,Postal CodeeName.Il grafico non mostra una dipendenza funzionale tra
CityePostal Code, probabilmente perché sono presenti molte violazioni nella relazione tra le colonne. Usare la funzione diplot_dependency_violationsSemPy per visualizzare le violazioni delle dipendenze tra colonne specifiche.
Esplorare i dati per i problemi di qualità
Disegnare un grafico con la funzione di visualizzazione
plot_dependency_violationsdi SemPy.customer_state_df.plot_dependency_violations('Postal Code', 'City')
Il grafico delle violazioni delle dipendenze mostra i valori per
Postal Codesul lato sinistro e i valori perCitysul lato destro. Una linea collega unPostal Codesul lato sinistro del tracciato a unaCitysul lato destro dello stesso, se esiste almeno una riga che contiene entrambi i valori. I bordi sono annotati con il conteggio di tali righe. Ad esempio, ci sono due righe con codice postale 20004, una con città "North Tower" e l'altra con città "Washington".Il tracciato mostra anche alcune violazioni e molti valori vuoti.
Confermare il numero di valori vuoti per
Postal Code:customer_state_df['Postal Code'].isna().sum()50 righe hanno NA per
Postal Code.Eliminare righe con valori vuoti. Trovare quindi le dipendenze usando la funzione
find_dependencies. Si noti il parametro aggiuntivoverbose=1che offre un'occhiata ai lavori interni di SemPy:customer_state_df2=customer_state_df.dropna() customer_state_df2.find_dependencies(verbose=1)L'entropia condizionale per
Postal CodeeCityè 0,049. Questo valore indica che sono presenti violazioni delle dipendenze funzionali. Prima di correggere le violazioni, aumentare la soglia sull'entropia condizionale dal valore predefinito di0.01a0.05, solo per visualizzare le dipendenze. Le soglie inferiori comportano un minor numero di dipendenze (o una selettività superiore).Aumentare la soglia per l'entropia condizionale dal valore predefinito di
0.01a0.05:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))Se si applica la conoscenza del dominio di quale entità determina i valori di altre entità, questo grafico delle dipendenze sembra accurato.
Esplorare altri problemi di qualità dei dati rilevati. Ad esempio, una freccia tratteggiata unisce
CityeRegion, il che indica che la dipendenza è solo approssimativa. Questa relazione approssimativa potrebbe implicare che esiste una dipendenza funzionale parziale.customer_state_df.list_dependency_violations('City', 'Region')Esaminare in modo più approfondito ognuno dei casi in cui un valore nonempty
Regioncausa una violazione:customer_state_df[customer_state_df.City=='Downers Grove']Il risultato mostra la città di Downers Grove in Illinois e Nebraska. Tuttavia, Downers Grove è una città dell'Illinois, non nebraska.
Dai un'occhiata alla città di Fremont:
customer_state_df[customer_state_df.City=='Fremont']C'è una città chiamata Fremont in California. Tuttavia, per il Texas, il motore di ricerca restituisce Premont, non Fremont.
È anche sospetto vedere le violazioni della dipendenza tra
NameeCountry/Region, come indicato dalla linea punteggiata nel grafico originale delle violazioni delle dipendenze (prima di eliminare le righe con valori vuoti).customer_state_df.list_dependency_violations('Name', 'Country/Region')Un cliente, SDI Design, viene visualizzato in due aree: Stati Uniti e Canada. Questo caso potrebbe non essere una violazione semantica, solo insolito. Comunque, vale la pena un aspetto da vicino:
Dare uno sguardo più approfondito al cliente SDI Design:
customer_state_df[customer_state_df.Name=='SDI Design']Un'ulteriore ispezione mostra due clienti diversi di settori diversi con lo stesso nome.
L'analisi esplorativa dei dati e la pulizia dei dati sono iterativi. Ciò che trovi dipende dalle tue domande e dalla tua prospettiva. Il collegamento semantico offre nuovi strumenti per ottenere di più dai dati.
Contenuto correlato
Vedere altre esercitazioni per il collegamento semantico e SemPy:
- Guida: Correggere i dati con dipendenze funzionali
- Esercitazione: Estrarre e calcolare le misure di Power BI da un Jupyter Notebook
- Esercitazione: Individuare le relazioni in un modello semantico usando il collegamento semantico
- Esercitazione: Individuare le relazioni nel set di dati Synthea usando il collegamento semantico
- Esercitazione: Validare i dati utilizzando SemPy e Great Expectations (GX)