Bagikan melalui


Tutorial: Menemukan hubungan dalam model semantik, menggunakan tautan semantik

Tutorial ini menggambarkan cara berinteraksi dengan Power BI dari buku catatan Jupyter dan mendeteksi hubungan antar tabel dengan bantuan pustaka SemPy.

Dalam tutorial ini, Anda mempelajari cara:

  • Temukan hubungan dalam model semantik (himpunan data Power BI), menggunakan pustaka Python tautan semantik (SemPy).
  • Gunakan komponen SemPy yang mendukung integrasi dengan Power BI dan membantu mengotomatiskan analisis kualitas data. Komponen-komponen ini meliputi:
    • FabricDataFrame - struktur seperti panda yang ditingkatkan dengan informasi semantik tambahan.
    • Fungsi untuk menarik model semantik dari ruang kerja Fabric ke notebook Anda.
    • Fungsi yang mengotomatiskan evaluasi hipotesis tentang dependensi fungsi dan yang mengidentifikasi pelanggaran hubungan dalam model semantik Anda.

Prasyarat

  • Dapatkan langganan Microsoft Fabric . Atau, daftar untuk uji coba Microsoft Fabric gratis.

  • Masuk ke dalam Microsoft Fabric.

  • Gunakan pengalih pengalaman di sisi kiri bawah halaman beranda Anda untuk beralih ke Fabric.

    Cuplikan layar menu pengalih pengalaman, memperlihatkan tempat untuk memilih Ilmu Data.

  • Pilih Ruang Kerja dari panel navigasi kiri untuk menemukan dan memilih ruang kerja Anda. Ruang kerja ini menjadi ruang kerja Anda saat ini.

  • Unduh Customer Profitability Sample.pbix dan Customer Profitability Sample (auto).pbix model semantik dari repositori GitHub fabric-samples dan unggah ke ruang kerja Anda.

Ikuti di buku catatan

Notebook powerbi_relationships_tutorial.ipynb menyertai tutorial ini.

Menyiapkan buku catatan

Di bagian ini, Anda menyiapkan lingkungan notebook dengan modul dan data yang diperlukan.

  1. Instal SemPy dari PyPI dengan kemampuan penginstalan sebaris %pip di dalam notebook:

    %pip install semantic-link
    
  2. Lakukan impor modul SemPy yang diperlukan nanti:

    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. Impor pandas untuk menerapkan opsi konfigurasi yang membantu dalam pemformatan output:

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

Menjelajahi model semantik

Tutorial ini menggunakan model semantik sampel standar Customer Profitability Sample.pbix. Untuk deskripsi model semantik, lihat sampel Profitabilitas Pelanggan untuk Power BI.

  • Gunakan fungsi list_datasets SemPy untuk menjelajahi model semantik di ruang kerja Anda saat ini:

    fabric.list_datasets()
    

Untuk sisa buku catatan ini, Anda menggunakan dua versi model semantik Sampel Profitabilitas Pelanggan:

  • Sampel Profitabilitas Pelanggan: model semantik yang berasal dari sampel Power BI dengan hubungan tabel yang telah ditentukan sebelumnya
  • Sampel Profitabilitas Pelanggan (otomatis): data yang sama, tetapi hubungan terbatas pada data yang akan dideteksi secara otomatis oleh Power BI.

Mengekstrak contoh model semantik dengan model semantik yang telah ditentukan sebelumnya

  1. Memuat hubungan yang telah ditentukan sebelumnya dan disimpan dalam model semantik Customer Profitability Sample, menggunakan fungsi SemPy list_relationships. Fungsi ini mencantumkan item dari Model Objek Tabular.

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Visualisasikan relationships DataFrame sebagai grafik, menggunakan fungsi plot_relationship_metadata SemPy:

    plot_relationship_metadata(relationships)
    

    Cuplikan layar memperlihatkan plot hubungan antar tabel dalam model semantik.

Grafik ini memperlihatkan "kebenaran dasar" untuk hubungan antara tabel dalam model semantik ini, karena mencerminkan bagaimana mereka didefinisikan di Power BI oleh pakar materi pelajaran.

Penemuan hubungan pelengkap

Jika Anda mulai dengan hubungan yang dideteksi otomatis Power BI, Anda akan memiliki set yang lebih kecil.

  1. Visualisasikan hubungan yang dietteksi otomatis Power BI dalam model semantik:

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

    Cuplikan layar memperlihatkan hubungan yang dietteksi otomatis Power BI dalam model semantik.

    Deteksi otomatis Power BI melewatkan banyak hubungan. Selain itu, dua hubungan yang terdeteksi secara otomatis salah secara semantik:

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. Cetak hubungan sebagai tabel:

    autodetected
    

    Hubungan yang salah dengan tabel Industry muncul dalam baris dengan indeks 3 dan 4. Gunakan informasi ini untuk menghapus baris ini.

  3. Buang hubungan yang diidentifikasi secara salah.

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

    Sekarang Anda memiliki hubungan yang benar, tetapi tidak lengkap.

  4. Visualisasikan hubungan yang tidak lengkap ini, menggunakan plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Cuplikan layar yang memperlihatkan visualisasi hubungan setelah menghapus hubungan yang salah.

  5. Muat semua tabel dari model semantik, menggunakan fungsi list_tables dan read_table SemPy:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. Temukan hubungan antara tabel, menggunakan find_relationships, dan tinjau output log untuk mendapatkan beberapa wawasan tentang cara kerja fungsi ini:

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  7. Visualisasikan hubungan yang baru ditemukan:

    plot_relationship_metadata(suggested_relationships_all)
    

    Cuplikan layar yang memperlihatkan visualisasi hubungan yang baru ditemukan.

    SemPy mampu mendeteksi semua hubungan.

  8. Gunakan parameter exclude untuk membatasi pencarian ke hubungan tambahan yang sebelumnya tidak diidentifikasi:

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

Memvalidasi hubungan

  1. Pertama, muat data dari Sampel Profitabilitas Pelanggan model semantik:

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Periksa tumpang tindih nilai kunci primer dan asing dengan menggunakan fungsi list_relationship_violations. Berikan output fungsi list_relationships sebagai input ke list_relationship_violations:

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Pelanggaran hubungan memberikan beberapa wawasan yang menarik. Misalnya, salah satu dari tujuh nilai dalam Fact[Product Key] tidak ada di Product[Product Key], dan kunci yang hilang ini 50.

Analisis data eksploratif adalah proses yang menarik, dan begitu juga pembersihan data. Selalu ada sesuatu yang disembunyikan data, tergantung pada bagaimana Anda melihatnya, apa yang ingin Anda tanyakan, dan sebagainya. Tautan semantik memberi Anda alat baru yang dapat Anda gunakan untuk mencapai lebih banyak hal dengan data Anda.

Lihat tutorial lain untuk tautan semantik / SemPy: