Partager via


Découvrir des relations dans un modèle sémantique à l’aide d’un lien sémantique

Ce tutoriel montre comment utiliser un notebook Jupyter pour interagir avec Power BI et détecter les relations entre les tables avec la bibliothèque SemPy.

Dans ce tutoriel, vous allez apprendre à :

  • Découvrez les relations dans un modèle sémantique (jeu de données Power BI) à l’aide de la bibliothèque Python de lien sémantique (SemPy).
  • Utilisez des composants SemPy qui s’intègrent à Power BI et automatisent l’analyse de la qualité des données. Ces composants sont les suivants :
    • FabricDataFrame - une structure de type pandas améliorée avec des informations sémantiques
    • Fonctions qui extrayent des modèles sémantiques d’un espace de travail Fabric dans votre bloc-notes
    • Fonctions qui testent les dépendances fonctionnelles et identifient les violations de relation dans vos modèles sémantiques

Prérequis

  • Accédez aux espaces de travail dans le volet de navigation, puis sélectionnez votre espace de travail pour le définir comme espace de travail actif.

  • Téléchargez les modèles sémantiques Customer Profitability Sample.pbix et Customer Profitability Sample (auto).pbix à partir du référentiel GitHub fabric-samples, puis chargez-les dans votre espace de travail.

Suivre le notebook

Utilisez le bloc-notes powerbi_relationships_tutorial.ipynb pour suivre.

Configurer le notebook

Configurez un environnement de notebook avec les modules et les données dont vous avez besoin.

  1. Installez le semantic-link package à partir de PyPI à l’aide de la %pip commande inline dans le notebook.

    %pip install semantic-link
    
  2. Importez les sempy modules que vous utiliserez ultérieurement.

    import sempy.fabric as fabric
    
    from sempy.relationships import plot_relationship_metadata
    from sempy.relationships import find_relationships
    from sempy.fabric import list_relationship_violations
    
  3. Importez la pandas bibliothèque et définissez une option d’affichage pour la mise en forme de sortie.

    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()

Pour le reste de ce notebook, utilisez deux versions du modèle sémantique Customer Profitability Sample :

  • Exemple de rentabilité du client : modèle sémantique fourni dans les exemples Power BI, avec des relations de table prédéfinies
  • Exemple de rentabilité du client (auto) : les mêmes données, mais les relations sont limitées à celles que power BI détecte automatiquement

Extraire des relations prédéfinies à partir de l’exemple de modèle sémantique

  1. Chargez les relations prédéfinies dans le modèle sémantique Customer Profitability Sample à l’aide de la list_relationships fonction SemPy. La fonction répertorie les relations à partir du modèle objet tabulaire (TOM).

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Visualisez le relationships DataFrame en tant que graphique à l’aide de la fonction semPy plot_relationship_metadata .

    plot_relationship_metadata(relationships)
    

    Capture d’écran du graphique des relations entre les tables du modèle sémantique.

    Ce graphique montre les relations entre les tables de ce modèle sémantique tel que défini dans Power BI par un expert en matière.

Découvrir des relations supplémentaires

Si vous commencez par des relations que Power BI détecte automatiquement, vous disposez d’un ensemble plus petit.

  1. Visualisez les relations détectées automatiquement par Power BI dans le modèle sémantique :

    dataset = "Customer Profitability Sample (auto)"
    autodetected = fabric.list_relationships(dataset)
    plot_relationship_metadata(autodetected)
    

    Capture d’écran des relations détectées automatiquement par Power BI dans le modèle sémantique.

    La détection automatique de Power BI manque de nombreuses relations. En outre, deux des relations détectées automatiquement sont sémantiquement incorrectes :

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. Imprimez les relations dans une table :

    autodetected
    

    Les lignes 3 et 4 affichent des relations incorrectes avec la Industry table. Supprimez ces lignes.

  3. Ignorez les relations identifiées de manière incorrecte.

    # Remove rows 3 and 4 which point incorrectly to Industry[ID]
    autodetected = autodetected[~autodetected.index.isin([3, 4])]
    

    Vous avez maintenant des relations correctes mais incomplètes. Visualisez ces relations incomplètes à l’aide de plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Capture d’écran d’une visualisation des relations après avoir supprimé des relations incorrectes.

  4. Chargez toutes les tables à partir du modèle sémantique, à l’aide des fonctions et list_tables des read_table fonctions SemPy, puis recherchez les relations entre les tables à l’aide find_relationshipsde . Passez en revue la sortie du journal pour obtenir des informations sur le fonctionnement de cette fonction :

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  5. Visualisez les relations nouvellement découvertes :

    plot_relationship_metadata(suggested_relationships_all)
    

    Capture d’écran d’une visualisation des relations nouvellement découvertes.

    SemPy détecte toutes les relations.

  6. Utilisez le paramètre exclude pour limiter la recherche aux relations supplémentaires qui n’ont pas été identifiées précédemment :

    additional_relationships = find_relationships(
        tables,
        exclude=autodetected,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7
    )
    
    additional_relationships
    

Valider les relations

  1. Tout d’abord, chargez des données à partir du modèle sémantique Customer Profitability Sample .

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Vérifiez que la clé primaire et la clé étrangère se chevauchent avec la list_relationship_violations fonction. Passez la sortie de la list_relationships fonction à list_relationship_violations.

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Les résultats révèlent des insights utiles. Par exemple, l’une des sept valeurs dans Fact[Product Key] n’est pas présente dans Product[Product Key], et la clé manquante est 50.

    L’analyse exploratoire des données et le nettoyage des données sont itératifs. Ce que vous apprenez dépend de vos questions et de la façon dont vous explorez les données. Le lien sémantique ajoute des outils qui vous aident à effectuer davantage de travail avec vos données.

Explorez d’autres tutoriels pour le lien sémantique et SemPy :

\n\n