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 çalışmaları temel alıyorsunuz. Microsoft Fabric içindeki 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 şunların 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ı.
    • Fabric ç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

  • bir Microsoft Fabric aboneliği alın. Alternatif olarak, ücretsizMicrosoft Fabric deneme sürümüne kaydolun.

  • Microsoft Fabricoturum açın.

  • Ana sayfanızın sol alt köşesindeki deneyim değiştiriciyi kullanarak Fabric'e geçiş yapın.

    Veri Bilimi'nin seçileceği yeri gösteren deneyim değiştirici menüsünün ekran görüntüsü.

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

  • Customer Profitability Sample.pbix anlam modelini fabric-samples GitHub deposundanindirin.

  • Customer Profitability Sample.pbix dosyasını çalışma alanınıza yüklemek için çalışma alanınızda >Raporu veya Sayfalandırılmış Raporu İçeri Aktar>Bu bilgisayardanseçin.

Not defterinde takip edin

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

  • Bu öğreticide eşlik eden not defterini açmak için, Sistemizi veri bilimi öğreticilerine hazırlama başlığındaki 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 defteri bir göl evi eklemeyi unutmayın.

Dizüstü bilgisayarı kurun

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 SemPy yükleyin:

    %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 Customer Profitability Sample.pbix standart bir örnek anlam modeli kullanılmaktadır. Anlamsal modelin açıklaması için bkz. Power BI için müşteri kârlılığı örneğini.

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

    dataset = "Customer Profitability Sample"
    customer = fabric.read_table(dataset, "Customer")
    customer.head()
    
  2. State tablosunu 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 FabricDataFrame adlı bir veri yapısı başlatmış olursunuz.

  3. customerveri türünü denetleyin:

    type(customer)
    

    Çıkış, customer'ın sempy.fabric._dataframe._fabric_dataframe.FabricDataFrametüründe olduğunu onaylar.

  4. customer ve state DataFrame'lere 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 plot_dependency_metadata işlevini kullanarak tanımlanan bağımlılıkları görselleştirin:

    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, Customer sütununun City, Postal Codeve Namegibi bazı sütunları belirlediğini gösterir.

    Şaşırtıcı bir şekilde, grafik City ile Postal Codearasında işlevsel bir bağımlılık göstermez, çünkü 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ını tespit etmek için verileri inceleyin

  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 Postal Code değerlerini ve sağ taraftaki City değerlerini gösterir. Bir kenar, bu iki değeri içeren bir satır varsa, sol taraftaki bir Postal Code'ı sağ taraftaki bir City'e bağlar. Kenarlar bu tür satırların sayısıyla etiketlenmiştir. Örneğin, posta kodu 20004 olan iki satır var, bunlardan biri "Kuzey Kulesi" isimli şehri, diğeri "Washington" isimli şehri içeriyor.

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

  2. Postal Codeiçin boş değerlerin sayısını onaylayın:

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

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

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

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

    Postal Code ve City için koşullu entropi 0,049'dur. 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 eşiğini varsayılan 0.01 değerinden 0.05değerine yükseltin. Düşük eşikler daha az bağımlılıkla (veya daha yüksek seçiciliğe) neden olur.

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

    plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
    

    Entropi eşiği daha yüksek olan 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, kesikli bir ok City ve Region'i birleştirir, bu da 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. Var olmayan bir Region değerinin 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 'dabir şehirdir.

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

    customer_state_df[customer_state_df.City=='Fremont']
    

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

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

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

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

  9. SDI Design müşteri'a daha yakından bakın.

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

    Daha fazla inceleme, aslında aynı isme 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: