Etkin ve etkin olmayan ilişki kılavuzu
Bu makalede Power BI Desktop ile çalışan bir veri modelleyicisi olarak hedefleniyorsunuz. Etkin veya etkin olmayan model ilişkilerinin ne zaman oluşturulacağı konusunda size rehberlik sağlar. Varsayılan olarak, etkin ilişkiler filtreleri diğer tablolara yayılır. Etkin olmayan ilişki, ancak bir DAX ifadesi ilişkiyi etkinleştirip kullandığında filtreleri uygular.
Not
Model ilişkilerine giriş bu makalede ele alınmamıştır. İlişkiler, özellikleri veya bunların nasıl yapılandırıldığını tam olarak bilmiyorsanız, önce Power BI Desktop'ta Modeli ilişkileri makalesini okumanızı öneririz.
Yıldız şeması tasarımını anlamanız da önemlidir. Daha fazla bilgi için bkz. yıldız şemasını anlama ve Power BI’nın önemini anlama.
Etkin ilişkiler
Genel olarak, mümkün olduğunda etkin ilişkiler tanımlamanızı öneririz. Modelinizin rapor yazarları ve Q&A ile çalışan kullanıcılar tarafından nasıl kullanılabileceğinin kapsamını ve potansiyelini genişletiyorlar.
Havayolu uçuşlarının zamanında performansını (OTP) analiz etmek için tasarlanmış İçe Aktarma modeli örneğini düşünün. Modelde, uçuş başına bir satır depolayan Airport
tablosu da vardır. Her satırda havaalanı kodu, havaalanı adı ve ülke veya bölge açıklanır.
burada iki tablonun kısmi model diyagramı yer alır.
İki tablo içeren modeli gösteren
Flight
ile Airport
tabloları arasında iki model ilişkisi vardır.
Flight
tablosunda, DepartureAirport
ve ArrivalAirport
sütunları Airport
tablosunun Airport
sütunuyla ilgilidir. Yıldız şeması tasarımında, Airport
tablosu rol oynama boyutuolarak tanımlanır. Bu modelde, iki rol kalkış havaalanı ve varış havaalanı'tür.
Bu tasarım ilişkisel yıldız şeması tasarımlarına uygun olsa da Power BI modellerinde iyi çalışmaz. Bunun nedeni, model ilişkilerinin filtre yayma yolları olması ve bu yolların belirleyici olması gerekir. Filtre yayma yollarının belirlenimci olduğundan emin olunması hakkında daha fazla bilgi için bkz. ilişki yolu belirsizliğiniçözme. Bu nedenle, bu örnekte gösterildiği gibi, bir ilişki etkinken diğeri etkin değil (kesikli çizgiyle gösterilir). Özel olarak, etkin olan ArrivalAirport
sütunuyla olan ilişkidir; bu da Airport
tablosuna uygulanan filtrelerin otomatik olarak Flight
tablosunun ArrivalAirport
sütununa yayıldığı anlamına gelir.
Bu model tasarımı, verilerin nasıl rapor edilebileceği konusunda ciddi sınırlamalar getirir. Özellikle, kalkış havaalanının uçuş ayrıntılarını otomatik olarak yalıtmak için Airport
tablosunu filtrelemek mümkün değildir. Raporlarınaynı anda
Geliştirilmiş model tasarımı aşağıdadır.
Dört tablo içeren modeli gösteren
Modelde artık iki havaalanı tablosu vardır: Departure Airport
ve Arrival Airport
. Bu tablolar ile Flight
tablo arasındaki her model ilişkisi etkindir. Ayrıca, Departure Airport
ve Arrival Airport
tablolarındaki sütun adlarının başında Departure veya Arrivalsözcüğünün bulunduğuna dikkat edin.
Geliştirilmiş model tasarımı aşağıdaki rapor tasarımının üretilmesine destek sunar.
Rapor sayfası, melbourne
Not
İçeri aktarma modelleri için başka bir boyut tablosunun eklenmesi model boyutunun artmasına ve daha uzun yenileme sürelerine neden olmuştur. Bu nedenle, İçeri Aktarma modellemesi için
Ayrıca, boyut tablolarının olgu tablosu satır sayılarına göre düşük satır sayılarını depolaması yaygın bir durumdur. Bu nedenle, model boyutunun ve yenileme sürelerinin artması büyük olasılıkla aşırı büyük değildir.
Yeniden düzenleme metodolojisi
Aşağıda, bir modeli tek bir rol yürütme boyut tablosundan bir rolbaşına bir tablo
Etkin olmayan ilişkileri kaldırın.
Rolünü daha iyi tanımlamak için rol yapma boyut tablosunun adını değiştirmeyi düşünün. Bu makaledeki örnekte,
Airport
tablosuFlight
tablosununArrivalAirport
sütunuyla ilişkilidir, bu nedenleArrival Airport
olarak yeniden adlandırılır.Rol yapma tablosunun bir kopyasını oluşturun ve ona rolünü yansıtan bir ad verin. İçeri Aktarma tablosuysa, hesaplanmış bir tablo oluşturmanızı öneririz. Bu bir DirectQuery tablosuysa, Power Query sorgusunu çoğaltabilirsiniz.
Örnekte,
Departure Airport
tablosu aşağıdaki hesaplanmış tablo tanımı kullanılarak oluşturulmuştur.Departure Airport = 'Arrival Airport'
Yeni tabloyu ilişkilendirmek için etkin bir ilişki oluşturun.
Tablolardaki sütunları yeniden adlandırarak rollerini doğru yansıtmalarını sağlamayı göz önünde bulundurun. Bu makaledeki örnekte, tüm sütunlara Departure veya Arrivalsözcüğü eklenmiştir. Bu adlar rapor görsellerinin varsayılan olarak kendini açıklayan ve belirsiz olmayan etiketlere sahip olmasını sağlar. Ayrıca Q&A deneyimini geliştirerek kullanıcıların kolayca doğru sorular yazabilmesini sağlar.
Rol yapma tablolarına açıklama eklemeyi göz önünde bulundurun. (Veri bölmesinde, rapor yazarı imlecini tablonun üzerine getirdiğinde araç ipucunda bir açıklama görüntülenir.) Bu şekilde, diğer filtre yayma ayrıntılarını rapor yazarlarına iletebilirsiniz.
Etkin olmayan ilişkiler
Belirli durumlarda, etkin olmayan ilişkiler belirli raporlama gereksinimlerini karşılayabilir.
Farklı model ve raporlama gereksinimlerini göz önünde bulundurun:
- Satış modeli, iki tarih sütunu içeren bir
Sales
tablosu içerir:OrderDate
veShipDate
. -
Sales
tablosundaki her satır tek bir sıra kaydeder. - Tarih filtreleri, her zaman geçerli bir tarihi depolayan
OrderDate
sütununa hemen her zaman uygulanır. - Yalnızca bir ölçü,
ShipDate
sütununa tarih filtresinin uygulanmasını gerektirir ve bu sütunda boşluklar bulunabilir (sipariş gönderilene kadar). - Sipariş ve sevk tarihi dönemlerini aynı anda filtrelemek (veya gruplandırmak) gerekmez.
burada iki tablonun kısmi model diyagramı yer alır.
İki tablo içeren bir modeli gösteren
Sales
ile Date
tabloları arasında iki model ilişkisi vardır.
Sales
tablosunda, OrderDate
ve ShipDate
sütunları Date
tablosunun Date
sütunuyla ilgilidir. Bu modelde, Date
tablosunun iki rolü sipariş tarihi ve sevk tarihi. Etkin olan OrderDate
sütunuyla olan ilişkidir.
Biri hariç altı ölçü de OrderDate
sütununa göre filtrelenmelidir. Ancak Orders Shipped
ölçüsünün ShipDate
sütununa göre filtrelemesi gerekir.
İşte Orders
ölçü tanımı. Filtre bağlamı içindeki Sales
tablosunun satırlarını sayar.
Date
tablosuna uygulanan filtreler OrderDate
sütununa yayılır.
Orders = COUNTROWS(Sales)
İşte Orders Shipped
ölçüm tanımı.
USERELATIONSHIP DAX işlevini kullanır, bu işlev yalnızca ifadenin değerlendirilmesi sırasında belirli bir ilişki için filtre yayılımını etkinleştirir. Bu örnekte, ShipDate
sütunuyla ilişki kullanılır.
Orders Shipped =
CALCULATE(
COUNTROWS(Sales)
,USERELATIONSHIP('Date'[Date], Sales[ShipDate])
)
Bu model tasarımı aşağıdaki rapor tasarımının üretilmesine destek sunar.
Rapor sayfası 2019 Q4için çeyrek bazında filtrelenir. Tablo görseli aya göre gruplandırır ve çeşitli satış istatistiklerini görüntüler.
Orders
ve Orders Shipped
ölçüleri farklı sonuçlar üretir. Her biri aynı özetleme mantığını (Sales
tablosunun satırlarını sayma) ama farklı Date
tablo filtresi yayma kullanır.
Çeyrek dilimleyicinin BLANK seçeneği içerdiğine dikkat edin. Bu dilimleyici seçeneği, tablo genişletmesi'nin bir sonucu olarak görüntülenir. Her Sales
tablo satırının geçerli bir sipariş tarihi olsa da, bazı satırların bir BLANK sevk tarihi vardır; bu siparişler henüz gönderilmemiştir. Tablo genişletme, etkin olmayan ilişkileri de dikkate alır ve bu nedenle ilişkiye ait çokluk tarafındaki BLANK'lardan (veya veri bütünlüğü sorunlarından) kaynaklanan BLANK'lar ortaya çıkabilir.
Not
Satır düzeyi güvenlik (RLS) filtreleri yalnızca etkin ilişkiler aracılığıyla yayılır. USERELATIONSHIP DAX işlevi ölçü tanımı tarafından kullanıldığında bile RLS filtreleri hiçbir zaman etkin olmayan ilişkiler için yayılmaz.
Öneri
Mümkün olduğunda, özellikle de veri modeliniz için RLS rolleri tanımlandığında etkin ilişkiler tanımlamanızı öneririz. Modelinizin rapor yazarları ve Q&A ile çalışan kullanıcılar tarafından nasıl kullanılabileceğinin kapsamını ve potansiyelini genişletiyorlar. Bu, rol yapma boyut tablolarının modelinizde çoğaltılması gerektiği anlamına gelir.
Ancak belirli durumlarda, rol oynayan bir boyut tablosu için bir veya daha fazla pasif ilişki tanımlayabilirsiniz. Aşağıdaki durumlarda bu yaklaşımı göz önünde bulundurabilirsiniz:
- Rapor görsellerinin aynı anda farklı rollere göre filtrelemesi gerekmez.
- İlgili model hesaplamaları için belirli bir ilişkiyi etkinleştirmek için USERELATIONSHIP DAX işlevini kullanırsınız.
İlgili içerik
Bu makaleyle ilgili daha fazla bilgi için aşağıdaki kaynaklara göz atın:
- Power BI Desktop'da
Modeli ilişkileri - Yıldız şemasını ve Power BI önemini anlama
- İlişki sorunlarını giderme kılavuzu
- Soru? Fabric Topluluğuna sormayı deneyin
- Öneri? Doku geliştirmek için fikirlere katkıda bulunma