Öğretici: Anlamsal bağlantıyı kullanarak anlamsal modeldeki ilişkileri bulma
Bu öğreticide, Bir Jupyter not defterinden Power BI ile etkileşim kurma ve SemPy kitaplığının yardımıyla tablolar arasındaki ilişkileri algılama gösterilmektedir.
Bu öğreticide şunların nasıl yapılacağını öğreneceksiniz:
- Anlamsal bağlantının Python kitaplığını (SemPy) kullanarak anlamsal modeldeki (Power BI veri kümesi) ilişkileri keşfedin.
- SemPy'nin Power BI ile tümleştirmeyi destekleyen ve veri kalitesi analizini otomatikleştirmeye yardımcı olan bileşenlerini kullanın. Bu bileşenler şunlardır:
- FabricDataFrame - ek anlam bilgileriyle geliştirilmiş pandas benzeri bir yapı.
- Fabric çalışma alanından not defterinize anlamsal modeller çekmek için işlevler.
- İşlevsel bağımlılıklar hakkındaki hipotezlerin değerlendirilmesini otomatik hale getiren ve anlamsal modellerinizdeki ilişki ihlallerini tanımlayan işlevler.
Önkoşullar
Microsoft Fabric aboneliği alın. Ya da, ücretsiz Microsoft Fabric deneme sürümünekaydolun.
Oturum açın Microsoft Fabric.
Ana sayfanızın sol alt tarafındaki deneyim değiştiriciyi kullanarak Fabric'e geçiş yapın.
Çalışma alanınızı bulmak ve seçmek için sol gezinti bölmesinden çalışma alanları
seçin. Bu çalışma alanı, geçerli çalışma alanınız olur. Customer Profitability Sample.pbix ve Customer Profitability Sample (auto).pbix anlam modellerini fabric-samples GitHub deposundan indirin ve çalışma alanınıza yükleyin.
Not defterinde birlikte izleyin
powerbi_relationships_tutorial.ipynb not defteri bu öğreticiye eşlik eder.
Bu öğreticiye eşlik eden not defterini açmak için, "Sisteminizi veri bilimi öğreticilerine hazırlama" bölümünde belirtilen "" yönergeleri izleyerek not defterini çalışma alanınıza aktarın.
Bu sayfadaki kodu kopyalayıp yapıştırmayı tercih ederseniz, yeni bir not defteri oluşturabilirsiniz.
Kod çalıştırmaya başlamadan önce not defterine bir göl evi
eklemeye emin olun.
Dizüstü bilgisayarı kur
Bu bölümde, gerekli modüller ve verilerle bir not defteri ortamı ayarlarsınız.
Not defterindeki
SemPy
satır içi yükleme özelliğini kullanarak PyPI'den%pip
yükleyin:%pip install semantic-link
Daha sonra ihtiyacınız olacak SemPy modüllerinin gerekli içeri aktarmalarını gerçekleştirin:
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
Çıktı biçimlendirmeye yardımcı olan bir yapılandırma seçeneğini zorlamak için pandas'ı içeri aktar:
import pandas as pd pd.set_option('display.max_colwidth', None)
Anlamsal modelleri keşfetme
Bu öğreticide standart bir örnek anlam modeli olan Müşteri Karlılığı Örneği.pbixkullanılmaktadır. Anlamsal modelin açıklaması için bkz. Power BIiçin müşteri kârlılığı örneğini
Geçerli çalışma alanınızdaki anlamsal modelleri keşfetmek için SemPy'nin
list_datasets
işlevini kullanın:fabric.list_datasets()
Bu not defterinin geri kalanında Müşteri Kârlılığı Örneği anlam modelinin iki sürümünü kullanırsınız:
- Müşteri Kârlılığı Örneği: Önceden tanımlanmış tablo ilişkilerine sahip Power BI örneklerinden gelen anlam modeli
- Müşteri Kârlılığı Örneği (otomatik): aynı veriler, ancak ilişkiler Power BI'ın otomatik algılayacağı verilerle sınırlıdır.
Önceden tanımlanmış semantik modeliyle örnek bir anlam modeli ayıklama
SemPy'nin işlevini kullanarak önceden tanımlanmış ve
list_relationships
anlam modeli içinde depolanan yük ilişkileri. Bu işlev Tablosal Nesne Modeli'nden listeler:dataset = "Customer Profitability Sample" relationships = fabric.list_relationships(dataset) relationships
SemPy'nin
relationships
işlevini kullanarakplot_relationship_metadata
DataFrame'i grafik olarak görselleştirin:plot_relationship_metadata(relationships)
Bu grafik, bir konu uzmanı tarafından Power BI'da nasıl tanımlandığını yansıtan bu anlamsal modeldeki tablolar arasındaki ilişkilere ilişkin "temel gerçeği" gösterir.
Tamamlayıcı ilişkiler bulma
Power BI'ın otomatik olarak algıladığınız ilişkilerle başladıysanız daha küçük bir kümeniz olur.
Power BI'ın anlam modelinde otomatik olarak algılanan ilişkileri görselleştirin:
dataset = "Customer Profitability Sample (auto)" autodetected = fabric.list_relationships(dataset) plot_relationship_metadata(autodetected)
Power BI'nin otomatik algılaması birçok ilişkiyi atladı. Ayrıca, otomatik olarak algılanan ilişkilerin ikisi sembolik olarak yanlıştır:
-
Executive[ID]
->Industry[ID]
-
BU[Executive_id]
->Industry[ID]
-
İlişkileri tablo olarak yazdırın:
autodetected
Industry
tablosuyla yanlış ilişkiler 3 ve 4 dizinli satırlarda görüntülenir. Bu satırları kaldırmak için bu bilgileri kullanın.Yanlış tanımlanmış ilişkileri at.
autodetected.drop(index=[3,4], inplace=True) autodetected
Artık doğru ama tamamlanmamış ilişkilere sahipsiniz.
plot_relationship_metadata
kullanarak bu tamamlanmamış ilişkileri görselleştirin:plot_relationship_metadata(autodetected)
SemPy'nin
list_tables
veread_table
işlevlerini kullanarak anlamsal modeldeki tüm tabloları yükleyin:tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
find_relationships
kullanarak tablolar arasındaki ilişkileri bulun ve bu işlevin nasıl çalıştığına ilişkin bazı içgörüler elde etmek için günlük çıkışını inceleyin.suggested_relationships_all = find_relationships( tables, name_similarity_threshold=0.7, coverage_threshold=0.7, verbose=2 )
Yeni bulunan ilişkileri görselleştirme:
plot_relationship_metadata(suggested_relationships_all)
SemPy tüm ilişkileri algılayabildi.
Aramayı daha önce tanımlanmayan ek ilişkilerle sınırlamak için
exclude
parametresini kullanın:additional_relationships = find_relationships( tables, exclude=autodetected, name_similarity_threshold=0.7, coverage_threshold=0.7 ) additional_relationships
İlişkileri doğrulama
İlk olarak, Müşteri Kârlılığı Örneği anlam modelinden verileri yükleyin:
dataset = "Customer Profitability Sample" tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
list_relationship_violations
işlevini kullanarak birincil ve yabancı anahtar değerlerinin çakışmasını denetleyin.list_relationships
işlevinin çıkışını,list_relationship_violations
'e giriş olarak verin.list_relationship_violations(tables, fabric.list_relationships(dataset))
İlişki ihlalleri bazı ilginç içgörüler sağlar. Örneğin,
Fact[Product Key]
içindeki yedi değerden biriProduct[Product Key]
içinde mevcut değildir ve bu eksik anahtar50
.
Keşif veri analizi heyecan verici bir süreçtir ve veri temizleme de öyle. Verilere nasıl baktığınıza, ne sormak istediğinize vb. bağlı olarak her zaman verilerin gizlendiği bir şey vardır. Anlamsal bağlantı, verilerinizle daha fazlasını elde etmek için kullanabileceğiniz yeni araçlar sağlar.
İlgili içerik
Anlamsal bağlantı / SemPy için diğer öğreticilere göz atın:
- Öğreticisi: İşlevsel bağımlılıklarla verileri temizleme
- Öğreticisi: Örnek anlamsal modelde işlevsel bağımlılıkları çözümleme
- Eğitim: Jupyter Notebook'tan Power BI ölçülerini ayıklama ve hesaplama
- Öğreticisi: Anlamsal bağlantı kullanarak Synthea veri kümesindeki ilişkileri bulma
- Eğitim: SemPy ve Great Expectations (GX) kullanarak verileri doğrulama