Aracılığıyla paylaş


Öğ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

  • Ç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.

  1. Not defterindeki SemPy satır içi yükleme özelliğini kullanarak PyPI'den %pip yükleyin:

    %pip install semantic-link
    
  2. 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
    
  3. Çı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

  1. 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
    
  2. SemPy'nin relationships işlevini kullanarak plot_relationship_metadata DataFrame'i grafik olarak görselleştirin:

    plot_relationship_metadata(relationships)
    

    Anlam modelindeki tablolar arasındaki ilişkileri gösteren ekran görüntüsü.

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.

  1. 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'ın anlam modelinde otomatik olarak algılanan ilişkileri gösteren ekran görüntüsü.

    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]
  2. İ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.

  3. Yanlış tanımlanmış ilişkileri at.

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

    Artık doğru ama tamamlanmamış ilişkilere sahipsiniz.

  4. plot_relationship_metadatakullanarak bu tamamlanmamış ilişkileri görselleştirin:

    plot_relationship_metadata(autodetected)
    

    Yanlış ilişkileri kaldırdıktan sonra ilişkilerin görselleştirmesini gösteren ekran görüntüsü.

  5. SemPy'nin list_tables ve read_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()
    
  6. find_relationshipskullanarak 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
    )
    
  7. Yeni bulunan ilişkileri görselleştirme:

    plot_relationship_metadata(suggested_relationships_all)
    

    Yeni bulunan ilişkilerin görselleştirmesini gösteren ekran görüntüsü.

    SemPy tüm ilişkileri algılayabildi.

  8. 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

  1. İ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()
    
  2. 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 biri Product[Product Key]içinde mevcut değildir ve bu eksik anahtar 50.

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.

Anlamsal bağlantı / SemPy için diğer öğreticilere göz atın: