Udostępnij za pośrednictwem


Samouczek: odnajdywanie relacji w modelu semantycznym przy użyciu linku semantycznego

W tym samouczku przedstawiono sposób interakcji z usługą Power BI z notesu Jupyter i wykrywania relacji między tabelami za pomocą biblioteki SemPy.

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

  • Odkrywanie relacji w modelu semantycznym (zestawie danych Power BI) przy użyciu biblioteki Pythona SemPy (SemPy).
  • Użyj składników biblioteki SemPy, które obsługują integrację z usługą Power BI i pomagają zautomatyzować analizę jakości danych. Te składniki obejmują:
    • FabricDataFrame — struktura podobna do struktury pandas, rozszerzona o dodatkowe informacje semantyczne.
    • Funkcje służące do ściągania modeli semantycznych z obszaru roboczego usługi Fabric do notesu.
    • Funkcje automatyzujące ocenę hipotez dotyczących zależności funkcjonalnych i identyfikujące naruszenia relacji w modelach semantycznych.

Warunki wstępne

  • Pobierz subskrypcję usługi Microsoft Fabric . Możesz też utworzyć bezpłatne konto wersji próbnej usługi Microsoft Fabric.

  • Zaloguj się do usługi Microsoft Fabric.

  • Użyj przełącznika środowiska w lewej dolnej części strony głównej, aby przełączyć się na Fabric.

    Zrzut ekranu przedstawiający menu przełącznika doświadczeń, pokazujące, gdzie wybrać Nauka o danych.

  • Wybierz pozycję Obszary robocze w okienku nawigacji po lewej stronie, aby znaleźć i wybrać obszar roboczy. Ten obszar roboczy staje się twoim aktualnym obszarem roboczym.

  • Pobierz Customer Profitability Sample.pbix i Customer Profitability Sample (auto).pbix z repozytorium GitHub fabric-samples i przekaż te semantyczne modele do Twojego obszaru roboczego.

Podążaj za treścią w notesie

Notes powerbi_relationships_tutorial.ipynb jest dołączony do tego samouczka.

Konfigurowanie notesu

W tej sekcji skonfigurujesz środowisko notesu z niezbędnymi modułami i danymi.

  1. Zainstaluj SemPy z PyPI przy użyciu wbudowanej funkcji instalacyjnej %pip w notesie:

    %pip install semantic-link
    
  2. Wykonaj niezbędne importy modułów SemPy, które będą potrzebne 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 do wymuszania opcji konfiguracji, która ułatwia formatowanie danych wyjściowych:

    import pandas as pd
    pd.set_option('display.max_colwidth', None)
    

Eksplorowanie modeli semantycznych

W tym samouczku użyto standardowego przykładowego modelu semantycznego Customer Profitability Sample.pbix. Aby zapoznać się z opisem modelu semantycznego, zobacz Przykład Customer Profitability dla usługi Power BI.

  • Użyj funkcji list_datasets SemPy, aby eksplorować modele semantyczne w bieżącym obszarze roboczym:

    fabric.list_datasets()
    

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

  • "Customer Profitability Sample": semantyczny model pochodzący z przykładów Power BI ze wstępnie zdefiniowanymi relacjami tabel
  • Przykład Rentowności Klienta (automatyczny): te same dane, ale relacje są ograniczone do tych, które Power BI wykrywa za pomocą autodetekcji.

Wyodrębnij model semantyczny przykładowy wraz z jego wstępnie zdefiniowanym modelem semantycznym

  1. Załaduj relacje, które są wstępnie zdefiniowane i przechowywane w modelu semantycznym Customer Profitability Sample przy użyciu funkcji list_relationships SemPy. Ta funkcja wyświetla listę z tabelarycznego modelu obiektów:

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

    plot_relationship_metadata(relationships)
    

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

Ten wykres przedstawia "podstawy prawdy" dla relacji między tabelami w tym modelu semantycznym, ponieważ odzwierciedla sposób ich definiowania w usłudze Power BI przez eksperta w tej dziedzinie.

Odkrywanie relacji komplementarnych

Jeśli zaczniesz od relacji automatycznie wykrywanych 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, które usługa Power BI wykryła automatycznie w modelu semantycznym.

    Automatyczne wykrywanie w usłudze Power BI pominęło wiele relacji. Co więcej, dwie relacje automatycznie wykrywane są semantycznie niepoprawne:

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

    autodetected
    

    Niepoprawne relacje z tabelą Industry są wyświetlane w wierszach z indeksem 3 i 4. Użyj tych informacji, aby usunąć te wiersze.

  3. Odrzuć nieprawidłowo zidentyfikowane relacje.

    autodetected.drop(index=[3,4], inplace=True)
    autodetected
    

    Teraz masz poprawne, ale niekompletne relacje.

  4. Zwizualizuj te niekompletne relacje przy użyciu plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

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

  5. Załaduj wszystkie tabele z modelu semantycznego przy użyciu funkcji list_tables i read_table SemPy:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. Znajdź relacje między tabelami przy użyciu find_relationshipsi 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
    )
    
  7. Wizualizowanie nowo odnalezionych relacji:

    plot_relationship_metadata(suggested_relationships_all)
    

    Zrzut ekranu przedstawiający wizualizację nowo odnalezionych relacji.

    Oprogramowanie SemPy było w stanie wykryć wszystkie relacje.

  8. 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 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. Sprawdź nakładanie się wartości klucza podstawowego i obcego przy użyciu funkcji list_relationship_violations. Podaj dane wyjściowe funkcji list_relationships jako dane wejściowe do list_relationship_violations:

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Naruszenia związków dostarczają kilku interesujących wniosków. Na przykład jedna z siedmiu wartości w Fact[Product Key] jest nieobecna w Product[Product Key], a brakujący klucz to 50.

Eksploracyjna analiza danych to ekscytujący proces, a także czyszczenie danych. Zawsze jest coś, co ukrywa dane, w zależności od tego, jak patrzysz na to, co chcesz zapytać itd. Link semantyczny dostarcza nowe narzędzia, które można użyć, aby osiągnąć więcej dzięki swoim danym.

Zapoznaj się z innymi samouczkami dotyczącymi linku semantycznego /SemPy: