Aracılığıyla paylaş


Öğretici: Anlamsal modelde işlevsel bağımlılıkları analiz etme

Bu öğreticide, bir Power BI analisti tarafından yapılan ve anlamsal modeller (Power BI veri kümeleri) biçiminde depolanan önceki işleri temel alacaktır. Microsoft Fabric'teki Synapse Veri Bilimi deneyiminde SemPy (önizleme) kullanarak DataFrame sütunlarında bulunan işlevsel bağımlılıkları analiz edebilirsiniz. Bu analiz, daha doğru içgörüler elde etmek için önemli olmayan veri kalitesi sorunlarını keşfetmeye yardımcı olur.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Anlamsal modelde işlevsel bağımlılıklar hakkındaki hipotezleri formüle etmek için etki alanı bilgisi uygulayın.
  • Power BI ile tümleştirmeyi destekleyen ve veri kalitesi analizini otomatikleştirmeye yardımcı olan anlamsal bağlantının Python kitaplığının (SemPy) bileşenleri hakkında bilgi edinin. Bu bileşenler şunlardır:
    • FabricDataFrame - ek anlam bilgileriyle geliştirilmiş pandas benzeri bir yapı.
    • Doku çalışma alanından not defterinize anlamsal modeller çekmek için kullanışlı işlevler.
    • İşlevsel bağımlılıklar hakkındaki hipotezlerin değerlendirilmesini otomatik hale getiren ve anlamsal modellerinizdeki ilişki ihlallerini tanımlayan kullanışlı işlevler.

Önkoşullar

  • Çalışma alanınızı bulmak ve seçmek için sol gezinti bölmesinden Çalışma Alanları'nı seçin. Bu çalışma alanı, geçerli çalışma alanınız olur.

  • Fabric-samples GitHub deposundan Customer Profitability Sample.pbix anlam modelini indirin ve çalışma alanınıza yükleyin.

Not defterinde birlikte izleyin

Powerbi_dependencies_tutorial.ipynb not defteri bu öğreticiye eşlik eder.

Bu öğreticide eşlik eden not defterini açmak için, not defterini çalışma alanınıza aktarmak üzere Sisteminizi veri bilimi öğreticilerine hazırlama başlığındaki yönergeleri izleyin.

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 eklediğinizden emin olun.

Not defterini ayarlama

Bu bölümde, gerekli modüller ve verilerle bir not defteri ortamı ayarlarsınız.

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

    %pip install semantic-link
    
  2. Daha sonra ihtiyacınız olacak modüllerin gerekli içeri aktarmalarını gerçekleştirin:

    import sempy.fabric as fabric
    from sempy.dependencies import plot_dependency_metadata
    

Verileri yükleme ve ön işleme

Bu öğreticide standart örnek bir anlam modeli Customer Profitability Sample.pbix kullanılmıştır. Anlamsal modelin açıklaması için bkz . Power BI için Müşteri Kârlılığı örneği.

  1. SemPy'nin işlevini kullanarak Power BI verilerini FabricDataFrames'e read_table yükleyin:

    dataset = "Customer Profitability Sample"
    customer = fabric.read_table(dataset, "Customer")
    customer.head()
    
  2. State Tabloyu bir FabricDataFrame'e yükleyin:

    state = fabric.read_table(dataset, "State")
    state.head()
    

    Bu kodun çıkışı pandas DataFrame gibi görünse de pandas üzerinde bazı yararlı işlemleri destekleyen adlı bir FabricDataFrame veri yapısı başlatmış olmanız gerekir.

  3. veri türünü customerdenetleyin:

    type(customer)
    

    Çıkış, '' türünde sempy.fabric._dataframe._fabric_dataframe.FabricDataFrameolduğunu customer onaylar.

  4. ve state DataFrames'e customer katılın:

    customer_state_df = customer.merge(state, left_on="State", right_on="StateCode",  how='left')
    customer_state_df.head()
    

İşlevsel bağımlılıkları tanımlama

İşlevsel bağımlılık, bir DataFrame içindeki iki (veya daha fazla) sütundaki değerler arasında bire çok ilişki olarak kendini gösterir. Bu ilişkiler, veri kalitesi sorunlarını otomatik olarak algılamak için kullanılabilir.

  1. Sütunlardaki değerler arasındaki mevcut işlevsel bağımlılıkları belirlemek için birleştirilmiş DataFrame'de SemPy'nin find_dependencies işlevini çalıştırın:

    dependencies = customer_state_df.find_dependencies()
    dependencies
    
  2. SemPy'nin işlevini kullanarak tanımlanan bağımlılıkları görselleştirin plot_dependency_metadata :

    plot_dependency_metadata(dependencies)
    

    Bağımlılık meta verilerinin çizimini gösteren ekran görüntüsü.

    Beklendiği gibi, işlevsel bağımlılıklar grafiği sütunun Customer , Postal Codeve Namegibi Citybazı sütunları belirlediğini gösterir.

    Şaşırtıcı bir şekilde, grafik ile arasında City Postal Codeişlevsel bir bağımlılık göstermez, çünkü büyük olasılıkla sütunlar arasındaki ilişkilerde birçok ihlal vardır. Belirli sütunlar arasındaki bağımlılık ihlallerini görselleştirmek için SemPy'nin plot_dependency_violations işlevini kullanabilirsiniz.

Kalite sorunları için verileri keşfetme

  1. SemPy'nin plot_dependency_violations görselleştirme işleviyle bir grafik çizin.

    customer_state_df.plot_dependency_violations('Postal Code', 'City')
    

    Bağımlılık ihlallerinin çizimini gösteren ekran görüntüsü.

    Bağımlılık ihlallerinin çizimi, sol taraftaki için değerleri Postal Code ve sağ taraftaki için değerleri City gösterir. Bu iki değeri içeren bir Postal Code satır varsa kenar, sol taraftaki City bir ile sağ taraftaki bir satırı bağlar. Kenarlara bu tür satırların sayısıyla ek açıklama eklenir. Örneğin, posta kodu 20004 olan biri "Kuzey Kulesi" ve diğeri "Washington" şehirli iki satır vardır.

    Ayrıca çizimde birkaç ihlal ve birçok boş değer gösterilir.

  2. için Postal Codeboş değer sayısını onaylayın:

    customer_state_df['Postal Code'].isna().sum()
    

    Posta kodu için 50 satırda NA bulunur.

  3. Boş değerlerle satırları bırakın. Ardından işlevini kullanarak find_dependencies bağımlılıkları bulun. SemPy'nin iç çalışmalarına bir bakış sunan ek parametreye verbose=1 dikkat edin:

    customer_state_df2=customer_state_df.dropna()
    customer_state_df2.find_dependencies(verbose=1)
    

    ve City için Postal Code koşullu entropi 0,049'dir. Bu değer, işlevsel bağımlılık ihlalleri olduğunu gösterir. İhlalleri düzeltmeden önce, bağımlılıkları görmek için koşullu entropi üzerindeki eşiği varsayılan değerinden 0.01 değerine 0.05yükseltin. Düşük eşikler daha az bağımlılıkla (veya daha yüksek seçiciliğe) neden olur.

  4. Koşullu entropi üzerindeki eşiği varsayılan değerinden değerine yükseltin 0.01 0.05:

    plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
    

    Entropi için daha yüksek eşik içeren bağımlılık meta verilerinin çizimi.

    Diğer varlıkların değerlerini hangi varlığın belirlediği hakkında etki alanı bilgisi uygularsanız, bu bağımlılıklar grafiği doğru görünür.

  5. Algılanan diğer veri kalitesi sorunlarını keşfedin. Örneğin, bir kesikli ok ile birleşir City ve Regionbu, bağımlılığın yalnızca yaklaşık olduğunu gösterir. Bu yaklaşık ilişki kısmi işlevsel bağımlılık olduğu anlamına gelebilir.

    customer_state_df.list_dependency_violations('City', 'Region')
    
  6. Belirsiz Region bir değerin ihlale neden olduğu durumların her birine daha yakından bakın:

    customer_state_df[customer_state_df.City=='Downers Grove']
    

    Sonuç, Downers Grove şehrinin Illinois ve Nebraska'da oluştuğunu göstermektedir. Ancak Downer's Grove, Nebraska değil, Illinois'de bulunan bir şehirdir.

  7. Fremont şehrine bir göz atın:

    customer_state_df[customer_state_df.City=='Fremont']
    

    California'da Fremont adında bir şehir var. Ancak, Texas için arama motoru Fremont'ı değil Premont'ı döndürür.

  8. Bağımlılık ihlallerinin özgün grafiğindeki noktalı çizgiyle belirtildiği gibi ve Country/Regionarasındaki Name bağımlılık ihlallerini görmek de şüphelidir (boş değerlere sahip satırları bırakmadan önce).

    customer_state_df.list_dependency_violations('Name', 'Country/Region')
    

    SDI Design olarak bir müşterinin Birleşik Devletler ve Kanada gibi iki bölgede mevcut olduğu görülüyor. Bu durum anlamsal bir ihlal olmayabilir, ancak yalnızca yaygın olmayan bir durum olabilir. Yine de yakından bakmak faydalı olabilir:

  9. Müşterinin SDI Tasarımına daha yakından bakın:

    customer_state_df[customer_state_df.Name=='SDI Design']
    

    Daha fazla inceleme, aslında aynı ada sahip iki farklı müşteri (farklı sektörlerden) olduğunu göstermektedir.

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: