Udostępnij przez


Odnajdywanie relacji w modelu semantycznym przy użyciu linku semantycznego

W tym samouczku pokazano, jak używać notesu Jupyter do interakcji z usługą Power BI i wykrywania relacji między tabelami z biblioteką SemPy.

Z tego samouczka dowiesz się, jak wykonywać następujące działania:

  • Odnajdywanie relacji w modelu semantycznym (zestawie danych usługi Power BI) przy użyciu biblioteki języka Python linku semantycznego (SemPy).
  • Użyj składników SemPy, które integrują się z usługą Power BI i automatyzują analizę jakości danych. Te składniki obejmują:
    • FabricDataFrame - struktura podobna do biblioteki pandas rozszerzona o informacje semantyczne
    • Funkcje ściągające modele semantyczne z obszaru roboczego usługi Fabric do notesu
    • Funkcje testujące zależności funkcjonalne i identyfikujące naruszenia relacji w modelach semantycznych

Warunki wstępne

  • Przejdź do obszaru Robocze w okienku nawigacji, a następnie wybierz obszar roboczy, aby ustawić go jako bieżący obszar roboczy.

  • Pobierz przykład Customer Profitability Sample.pbix i Customer Profitability Sample (auto).pbix semantyczne modele z repozytorium GitHub fabric-samples, a następnie przekaż je do obszaru roboczego.

Postępuj zgodnie z instrukcjami w notesie

Użyj notesu powerbi_relationships_tutorial.ipynb , aby postępować zgodnie z instrukcjami.

Konfigurowanie notesu

Skonfiguruj środowisko notesu przy użyciu potrzebnych modułów i danych.

  1. semantic-link Zainstaluj pakiet z PyPI przy użyciu wbudowanego %pip polecenia w notesie.

    %pip install semantic-link
    
  2. Zaimportuj sempy moduły, których będziesz używać później.

    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. Zaimportuj bibliotekę pandas i ustaw opcję wyświetlania dla formatowania danych wyjściowych.

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

W pozostałej części tego notesu użyj dwóch wersji semantycznego modelu semantycznego Customer Profitability Sample:

  • Przykład Customer Profitability: model semantyczny podany w przykładach usługi Power BI ze wstępnie zdefiniowanymi relacjami tabeli
  • Przykład Customer Profitability (auto): te same dane, ale relacje są ograniczone do tych, które są automatycznie wykrywane przez usługę Power BI

Wyodrębnianie wstępnie zdefiniowanych relacji z przykładowego modelu semantycznego

  1. Załaduj wstępnie zdefiniowane relacje w modelu semantycznym Customer Profitability Sample przy użyciu funkcji SemPy list_relationships . Funkcja wyświetla listę relacji z tabelarycznego modelu obiektów (TOM).

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Wizualizowanie relationships ramki danych jako grafu przy użyciu funkcji SemPy plot_relationship_metadata .

    plot_relationship_metadata(relationships)
    

    Zrzut ekranu przedstawiający wykres relacji między tabelami w modelu semantycznym.

    Na tym wykresie przedstawiono relacje między tabelami w tym modelu semantycznym zgodnie z definicją w usłudze Power BI przez eksperta w tej dziedzinie.

Odnajdywanie dodatkowych relacji

Jeśli zaczniesz od relacji, które są automatycznie wykrywane przez usługę Power BI, masz mniejszy zestaw.

  1. Wizualizuj relacje automatycznie wykrywane przez usługę Power BI w modelu semantycznym:

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

    Zrzut ekranu przedstawiający relacje automatycznie wykrywane przez usługę Power BI w modelu semantycznym.

    Autodetection usługi Power BI pomija wiele relacji. Ponadto dwie relacje automatycznie wykrywane są semantycznie niepoprawne:

    • Executive[ID] —>Industry[ID]
    • BU[Executive_id] —>Industry[ID]
  2. Wydrukuj relacje jako tabelę:

    autodetected
    

    Wiersze 3 i 4 pokazują nieprawidłowe relacje z tabelą Industry . Usuń te wiersze.

  3. Odrzuć nieprawidłowo zidentyfikowane relacje.

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

    Teraz masz poprawne, ale niekompletne relacje. Wizualizowanie tych niekompletnych relacji przy użyciu polecenia plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Zrzut ekranu przedstawiający wizualizację relacji po usunięciu nieprawidłowych.

  4. Załaduj wszystkie tabele z modelu semantycznego przy użyciu funkcji I list_tables biblioteki read_table SemPy, a następnie znajdź relacje między tabelami przy użyciu polecenia find_relationships. Przejrzyj dane wyjściowe dziennika, aby uzyskać szczegółowe informacje na temat działania tej funkcji:

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  5. Wizualizowanie nowo odnalezionych relacji:

    plot_relationship_metadata(suggested_relationships_all)
    

    Zrzut ekranu przedstawiający wizualizację nowo odnalezionych relacji.

    Usługa SemPy wykrywa wszystkie relacje.

  6. Użyj parametru exclude, aby ograniczyć wyszukiwanie do dodatkowych relacji, które nie zostały wcześniej zidentyfikowane:

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

Weryfikowanie relacji

  1. Najpierw załaduj dane z modelu semantycznego przykładu Customer Profitability .

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Sprawdź, czy klucz podstawowy i obcy nakładają się na list_relationship_violations funkcję . Przekaż dane wyjściowe list_relationships funkcji do list_relationship_violations.

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Wyniki ujawniają przydatne szczegółowe informacje. Na przykład jedna z siedmiu wartości w Fact[Product Key] pliku nie jest obecna w elemecie Product[Product Key], a brak klucza to 50.

    Eksploracyjna analiza danych i czyszczenie danych są iteracyjne. To, czego się uczysz, zależy od pytań i sposobu eksplorowania danych. Link semantyczny dodaje narzędzia, które ułatwiają wykonywanie większej ilości danych.

Zapoznaj się z innymi samouczkami dotyczącymi linków semantycznych i biblioteki SemPy:

\n\n