Öğ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.
Ç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.
Not defterindeki
%pip
satır içi yükleme özelliğini kullanarak PyPI'denSemPy
yükleyin:%pip install semantic-link
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.
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()
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.customer
veri türünü denetleyin:type(customer)
Çıkış,
customer
'ınsempy.fabric._dataframe._fabric_dataframe.FabricDataFrame
türünde olduğunu onaylar.customer
vestate
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.
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
SemPy'nin
plot_dependency_metadata
işlevini kullanarak tanımlanan bağımlılıkları görselleştirin:plot_dependency_metadata(dependencies)
Beklendiği gibi işlevsel bağımlılıklar grafiği,
Customer
sütunununCity
,Postal Code
veName
gibi bazı sütunları belirlediğini gösterir.Şaşırtıcı bir şekilde, grafik
City
ilePostal Code
arası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'ninplot_dependency_violations
işlevini kullanabilirsiniz.
Kalite sorunlarını tespit etmek için verileri inceleyin
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 çizimi, sol taraftaki
Postal Code
değerlerini ve sağ taraftakiCity
değerlerini gösterir. Bir kenar, bu iki değeri içeren bir satır varsa, sol taraftaki birPostal Code
'ı sağ taraftaki birCity
'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.
Postal Code
iç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.
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 parametreverbose=1
dikkat edin:customer_state_df2=customer_state_df.dropna() customer_state_df2.find_dependencies(verbose=1)
Postal Code
veCity
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ılan0.01
değerinden0.05
değerine yükseltin. Düşük eşikler daha az bağımlılıkla (veya daha yüksek seçiciliğe) neden olur.Koşullu entropi eşiğini varsayılan
0.01
değerinden0.05
değerine yükseltin:plot_dependency_metadata(customer_state_df2.find_dependencies(threshold=0.05))
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.
Algılanan diğer veri kalitesi sorunlarını keşfedin. Örneğin, kesikli bir ok
City
veRegion
'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')
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.
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.
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
ileCountry/Region
arası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:
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.
İlgili içerik
Anlamsal bağlantı / SemPy için diğer öğreticilere göz atın:
- Eğitim: İşlevsel bağımlılıklar kullanarak verileri temizleme
- Öğretici: Jupyter not defterinden Power BI ölçülerini ayıklama ve hesaplama
- Öğreticisi: Anlamsal bağlantı kullanarak anlamsal modeldeki ilişkileri keşfetme
- Öğreticisi: Anlamsal bağlantı kullanarak Synthea veri kümesindeki ilişkileri bulma
- Eğitim: SemPy ve Great Expectations (GX) ile veri doğrulama