Tutorial: Menganalisis dependensi fungsi dalam model semantik
Dalam tutorial ini, Anda membangun pekerjaan sebelumnya yang dilakukan oleh analis Power BI dan disimpan dalam bentuk model semantik (himpunan data Power BI). Dengan menggunakan SemPy (pratinjau) di pengalaman Synapse Data Science dalam Microsoft Fabric, Anda dapat menganalisis dependensi fungsional yang ada pada kolom-kolom DataFrame. Analisis ini membantu menemukan masalah kualitas data nontrivial untuk mendapatkan wawasan yang lebih akurat.
Dalam tutorial ini, Anda mempelajari cara:
- Terapkan pengetahuan domain untuk merumuskan hipotesis tentang dependensi fungsi dalam model semantik.
- Biasakan diri dengan komponen pustaka Python dari tautan semantik (SemPy) yang mendukung integrasi dengan Power BI dan membantu mengotomatisasi analisis kualitas data. Komponen-komponen ini meliputi:
- FabricDataFrame - struktur seperti panda yang ditingkatkan dengan informasi semantik tambahan.
- Fungsi yang berguna untuk menarik model semantik dari ruang kerja Fabric ke notebook Anda.
- Fungsi yang berguna 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 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 model semantik Customer Profitability Sample.pbix dari repositori GitHub fabric-samples.
Di ruang kerja Anda, pilih Impor>Laporan atau Laporan Berhalaman>Dari komputer ini untuk mengunggah file Customer Profitability Sample.pbix ke ruang kerja Anda.
Ikuti di buku catatan
Notebook powerbi_dependencies_tutorial.ipynb
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 memasang lakehouse ke dalam 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 menggunakan kemampuan pemasangan sebaris%pip
di dalam notebook:%pip install semantic-link
Lakukan impor modul yang diperlukan yang akan Anda butuhkan nanti:
import sempy.fabric as fabric from sempy.dependencies import plot_dependency_metadata
Memuat dan memproses data sebelumnya
Tutorial ini menggunakan model semantik sampel standar Customer Profitability Sample.pbix. Untuk deskripsi model semantik, lihat sampel Profitabilitas Pelanggan untuk Power BI.
Muat data Power BI ke FabricDataFrames, menggunakan fungsi
read_table
SemPy:dataset = "Customer Profitability Sample" customer = fabric.read_table(dataset, "Customer") customer.head()
Muat tabel
State
ke dalam FabricDataFrame:state = fabric.read_table(dataset, "State") state.head()
Meskipun output kode ini terlihat seperti pandas DataFrame, Anda sebenarnya telah menginisialisasi struktur data yang disebut
FabricDataFrame
yang mendukung beberapa operasi berguna yang melengkapi pandas.Periksa jenis data
customer
:type(customer)
Output mengonfirmasi bahwa
customer
berjenissempy.fabric._dataframe._fabric_dataframe.FabricDataFrame
.'Gabungkan
customer
danstate
DataFrames:customer_state_df = customer.merge(state, left_on="State", right_on="StateCode", how='left') customer_state_df.head()
Mengidentifikasi dependensi fungsi
Dependensi fungsi ini memanifestasikan dirinya sebagai hubungan satu-ke-banyak antara nilai dalam dua kolom (atau lebih) dalam DataFrame. Hubungan ini dapat digunakan untuk mendeteksi masalah kualitas data secara otomatis.
Jalankan fungsi
find_dependencies
SemPy pada DataFrame gabungan untuk mengidentifikasi dependensi fungsional yang ada di antara nilai dalam kolom:dependencies = customer_state_df.find_dependencies() dependencies
Visualisasikan dependensi yang diidentifikasi dengan menggunakan fungsi
plot_dependency_metadata
SemPy:plot_dependency_metadata(dependencies)
Seperti yang diharapkan, grafik dependensi fungsian menunjukkan bahwa kolom
Customer
menentukan beberapa kolom sepertiCity
,Postal Code
, danName
.Anehnya, grafik tidak menunjukkan dependensi fungsi antara
City
danPostal Code
, mungkin karena ada banyak pelanggaran dalam hubungan antara kolom. Anda dapat menggunakan fungsiplot_dependency_violations
SemPy untuk memvisualisasikan pelanggaran dependensi antara kolom tertentu.
Menjelajahi data untuk masalah kualitas
Buat grafik dengan fungsi visualisasi
plot_dependency_violations
SemPy.customer_state_df.plot_dependency_violations('Postal Code', 'City')
Plot pelanggaran dependensi menunjukkan nilai untuk
Postal Code
di sebelah kiri, dan nilai untukCity
di sebelah kanan. Jika ada baris yang berisi nilai-nilai ini, maka tepi akan menyambungkanPostal Code
di sisi kiri denganCity
di sisi kanan. Tepi ditandai dengan jumlah baris yang sesuai. Misalnya, ada dua baris dengan kode pos 20004, satu dengan kota "Menara Utara" dan yang lainnya dengan kota "Washington".Selain itu, plot menunjukkan beberapa pelanggaran dan banyak nilai kosong.
Konfirmasikan jumlah nilai kosong untuk
Postal Code
:customer_state_df['Postal Code'].isna().sum()
50 baris memiliki NA untuk kode pos.
Hapus baris dengan nilai kosong. Kemudian, temukan dependensi menggunakan fungsi
find_dependencies
. Perhatikan parameter tambahanverbose=1
yang menawarkan sekilas ke dalam pekerjaan internal SemPy:customer_state_df2=customer_state_df.dropna() customer_state_df2.find_dependencies(verbose=1)
Entropi kondisi untuk
Postal Code
danCity
adalah 0,049. Nilai ini menunjukkan bahwa ada pelanggaran dependensi fungsi. Sebelum Anda memperbaiki pelanggaran, naikkan ambang batas pada entropi kondisional dari nilai default0.01
ke0.05
, hanya untuk melihat dependensi. Ambang batas yang lebih rendah menghasilkan lebih sedikit dependensi (atau selektivitas yang lebih tinggi).Naikkan ambang batas pada entropi kondisional dari nilai default
0.01
ke0.05
:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
Jika Anda menerapkan pengetahuan domain tentang entitas mana yang menentukan nilai entitas lain, grafik dependensi ini tampaknya akurat.
Jelajahi lebih banyak masalah kualitas data yang terdeteksi. Misalnya, panah putus-putus menghubungkan
City
danRegion
, yang menunjukkan bahwa ketergantungannya hanya perkiraan. Perkiraan hubungan ini dapat menyiratkan bahwa ada dependensi fungsi sebagian.customer_state_df.list_dependency_violations('City', 'Region')
Lihat lebih dekat setiap kasus di mana nilai
Region
yang tidak ada menyebabkan pelanggaran:customer_state_df[customer_state_df.City=='Downers Grove']
Hasilnya menunjukkan kota Downers Grove terjadi di Illinois dan Nebraska. Namun, Downer's Grove adalah kota di Illinois, bukan Nebraska.
Lihatlah kota Fremont:
customer_state_df[customer_state_df.City=='Fremont']
Ada sebuah kota bernama Fremont di California. Namun, untuk Texas, mesin pencari mengembalikan Premont, bukan Fremont.
Ini juga mencurigakan melihat pelanggaran dependensi antara
Name
danCountry/Region
, seperti yang ditandai oleh garis putus-putus dalam grafik asli pelanggaran dependensi (sebelum menghilangkan baris dengan nilai kosong).customer_state_df.list_dependency_violations('Name', 'Country/Region')
Tampaknya satu pelanggan, SDI Design hadir di dua wilayah - Amerika Serikat dan Kanada. Kejadian ini mungkin bukan pelanggaran semantik, tetapi mungkin hanya kasus yang jarang terjadi. Namun, ada baiknya melihat lebih dekat:
Harap periksa lebih dekat pelanggan Desain SDI:
customer_state_df[customer_state_df.Name=='SDI Design']
Inspeksi lebih lanjut menunjukkan bahwa sebenarnya dua pelanggan yang berbeda (dari industri yang berbeda) dengan nama yang sama.
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 : Mengekstrak dan menghitung pengukuran Power BI dari notebook Jupyter
- Tutorial : Menemukan hubungan dalam model semantik, menggunakan tautan semantik
- Tutorial
: Menemukan hubungan dalam himpunan data Synthea , menggunakan tautan semantik - Tutorial : Memvalidasi data menggunakan SemPy dan Great Expectations (GX)