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.
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.
Untuk membuka buku catatan yang menyertai tutorial ini, ikuti instruksi di Menyiapkan sistem Anda untuk tutorial ilmu data mengimpor buku catatan ke ruang kerja Anda.
Jika Anda lebih suka menyalin dan menempelkan kode dari halaman ini, Anda bisa membuat buku catatan baru.
Pastikan untuk melampirkan lakehouse ke notebook sebelum Anda mulai menjalankan kode.
Menyiapkan buku catatan
Di bagian ini, Anda menyiapkan lingkungan notebook dengan modul dan data yang diperlukan.
Instal
SemPy
dari PyPI dengan kemampuan penginstalan sebaris%pip
di dalam notebook:%pip install semantic-link
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
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
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
Visualisasikan
relationships
DataFrame sebagai grafik, menggunakan fungsiplot_relationship_metadata
SemPy:plot_relationship_metadata(relationships)
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.
Visualisasikan hubungan yang dietteksi otomatis Power BI dalam model semantik:
dataset = "Customer Profitability Sample (auto)" autodetected = fabric.list_relationships(dataset) plot_relationship_metadata(autodetected)
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]
-
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.Buang hubungan yang diidentifikasi secara salah.
autodetected.drop(index=[3,4], inplace=True) autodetected
Sekarang Anda memiliki hubungan yang benar, tetapi tidak lengkap.
Visualisasikan hubungan yang tidak lengkap ini, menggunakan
plot_relationship_metadata
:plot_relationship_metadata(autodetected)
Muat semua tabel dari model semantik, menggunakan fungsi
list_tables
danread_table
SemPy:tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
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 )
Visualisasikan hubungan yang baru ditemukan:
plot_relationship_metadata(suggested_relationships_all)
SemPy mampu mendeteksi semua hubungan.
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
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()
Periksa tumpang tindih nilai kunci primer dan asing dengan menggunakan fungsi
list_relationship_violations
. Berikan output fungsilist_relationships
sebagai input kelist_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 diProduct[Product Key]
, dan kunci yang hilang ini50
.
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.
Konten terkait
Lihat tutorial lain untuk tautan semantik / SemPy:
- Tutorial : Membersihkan Data dengan Ketergantungan Fungsional
- tutorial : Menganalisis dependensi fungsi dalam contoh model semantik
- Tutorial : Mengekstrak dan menghitung pengukuran Power BI dari notebook Jupyter
- Tutorial
: Menemukan hubungan dalam himpunan data Synthea , menggunakan tautan semantik - Tutorial : Memvalidasi data menggunakan SemPy dan Great Expectations (GX)