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

Bu öğreticide, bir Power BI analistinin anlamsal modeller (Power BI veri kümeleri) olarak depolanan çalışmasını temel alarak ilerlersiniz. Fabric Data Science iş yükünde SemPy (önizleme) kullanarak, DataFrame sütunlarındaki fonksiyonel bağımlılıkları analiz ediyorsunuz. Bu analiz, daha doğru içgörüler elde etmek için küçük veri kalitesi sorunlarını keşfetmenize 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.
  • Semantic Link'in Python kitaplığının (SemPy) Power BI ile tümleşen ve veri kalitesi analizini otomatikleştirmeye yardımcı olan bileşenleri hakkında bilgi edinin. Bu bileşenler şunlardır:
    • FabricDataFrame— ek anlamsal bilgilerle geliştirilmiş pandas benzeri bir yapı
    • Fabric çalışma alanından not defterinize anlamsal modeller çeken fonksiyonlar
    • İşlevsel bağımlılık hipotezlerini değerlendiren ve anlamsal modellerinizdeki ilişki ihlallerini tanımlayan işlevler

Önkoşullar

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

  2. Fabric-samples GitHub deposundanCustomer Profitability Sample.pbix dosyasını indirin.

  3. Çalışma alanınızda, İçe Aktar>Rapor veya Sayfalandırılmış Rapor>Bu bilgisayardan seçeneklerini belirleyerek Customer Profitability Sample.pbix dosyasını çalışma alanınıza yükleyin.

Not defterinde takip edin

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

Dizüstü bilgisayarı kurun

İhtiyacınız olan modüller ve verilerle bir not defteri ortamı ayarlayın.

  1. Not defterine PyPI'den SemPy'yi yüklemek için kullanın %pip .

    %pip install semantic-link
    
  2. İhtiyacınız olan modülleri içeri aktarın.

    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ğini.

  1. fabric.read_table işlevini kullanarak Power BI verilerini FabricDataFrame içine yükleyin.

    dataset = "Customer Profitability Sample"
    customer = fabric.read_table(dataset, "Customer")
    customer.head()
    
  2. State tabloyu FabricDataFrame içine yükleyin.

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

    Çıktı bir pandas DataFrame gibi görünse de bu kod, pandas'a ek işlemler sağlayan FabricDataFrame adlı bir veri yapısını başlatır.

  3. veri türünü customerdenetleyin.

    type(customer)
    

    Çıktı, customer değerinin sempy.fabric._dataframe._fabric_dataframe.FabricDataFrame olduğunu gösterir.

  4. customer ve stateDataFrame nesnelerini birleştirin.

    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, DataFrame içindeki iki veya daha fazla sütundaki değerler arasında bire-çok ilişkidir. Veri kalitesi sorunlarını otomatik olarak algılamak için bu ilişkileri kullanın.

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

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

    plot_dependency_metadata(dependencies)
    

    Bağımlılık meta verileri çiziminin ekran görüntüsü.

    İşlevsel bağımlılıklar grafiği, sütunun Customer , Cityve Postal Codegibi Namesütunları belirlediğini gösterir.

    Büyük olasılıkla sütunlar arasındaki ilişkide birçok ihlal olduğundan grafik ile Cityarasında Postal Code işlevsel bir bağımlılık göstermez. Belirli sütunlar arasındaki bağımlılık ihlallerini görselleştirmek için SemPy'nin plot_dependency_violations işlevini kullanın.

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 ihlallerini gösteren çizimin ekran görüntüsü.

    Bağımlılık ihlalleri grafiği, sol tarafta Postal Code değerlerini, sağ tarafta ise 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ı ile açıklanır. Örneğin, posta kodu 20004 olan iki satır var, bunlardan biri "Kuzey Kulesi" isimli şehri, diğeri "Washington" isimli şehri içeriyor.

    Çizimde ayrıca 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()
    

    Postal Code için 50 satırda NA vardır.

  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))
    

    Daha yüksek bir entropi eşiğine sahip bağımlılık meta verisi çiziminin ekran görüntüsü.

    Diğer varlıkların değerlerini hangi varlığın belirlediği hakkında etki alanı bilgisi uygularsanız, bu bağımlılık 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ç, Illinois ve Nebraska'daki Downers Grove şehrini gösterir. Ancak Downers Grove, Nebraska'da değil , Illinois'de bulunan bir ş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 Fremont'ı değil Premont'ı döndürür.

  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')
    

    Bir müşteri olan SDI Design, ABD ve Kanada olmak üzere iki bölgede görünür. Bu durum semantik bir ihlal olmayabilir, yalnızca sık rastlanmayan bir durum olabilir. Yine de yakından bakmaya değer:

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

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

    Daha ayrıntılı inceleme, farklı sektörlerden, aynı isme sahip iki farklı müşteri olduğunu gösteriyor.

Keşfedici veri analizi ve veri temizleme yinelemeli süreçlerdir. Ne bulacağınız sorularınıza ve perspektifinize bağlıdır. Semantik Bağlantı, verilerinizden daha fazlasını elde etmek için yeni araçlar sağlar.

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