çift yönlü ilişki kılavuzu
Bu makale, Power BI Desktop ile çalışan bir veri modelleyicisi olarak sizi hedefler. İki yönlü model ilişkilerinin ne zaman oluşturulacağı konusunda size rehberlik sağlar. çift yönlü ilişki, her iki yönde de filtreleyen ilişkidir.
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 Model 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ı ve Power BI'ın önemini anlama.
Genellikle çift yönlü ilişkilerin kullanımını en aza indirmenizi öneririz. Bunlar model sorgusu performansını olumsuz etkileyebilir ve rapor kullanıcılarınız için kafa karıştırıcı deneyimler sunabilir.
çift yönlü filtrelemenin belirli gereksinimleri çözebileceği üç senaryo vardır:
Özel model ilişkileri
Aşağıdaki iki özel model ilişkisi türü oluşturulurken çift yönlü ilişkiler önemli bir rol oynar:
- Bire bir: Bire bir ilişkilerin tümü çift yönlü olmalıdır; aksi takdirde yapılandırmak mümkün değildir. Genel olarak, bu tür ilişkiler oluşturmanızı önermeyiz. Eksiksiz bir tartışma ve alternatif tasarımlar için bkz . Bire bir ilişki kılavuzu.
- Çoka çok: İki boyut türündeki tabloyu ilişkilendirirken köprü oluşturma tablosu gerekir. Filtrelerin köprü oluşturma tablosuna yayılmasını sağlamak için çift yönlü bir filtre gereklidir. Daha fazla bilgi için bkz . Çoka çok ilişki kılavuzu (Çoka çok boyutları ilişkilendirme).
Dilimleyici öğeleri "verilerle"
çift yönlü ilişkiler, öğeleri verilerin bulunduğu yerle sınırlayan dilimleyiciler sunabilir. (Excel PivotTable'ları ve dilimleyicilerini biliyorsanız, power bi anlam modeli veya Analysis Services modelinden veri kaynağını alırken varsayılan davranış budur.) Ne anlama geldiğini açıklamaya yardımcı olmak için önce aşağıdaki model diyagramını göz önünde bulundurun.
İlk tablo Customer olarak adlandırılır ve üç sütun içerir: Country-Region, Customer ve CustomerCode. İkinci tablo Product olarak adlandırılır ve üç sütun içerir: Color, Product ve SKU. Üçüncü tablo Sales olarak adlandırılır ve dört sütun içerir: CustomerCode, OrderDate, Quantity ve SKU. Müşteri ve Ürün tabloları boyut türündeki tablolardır ve her birinin Sales tablosuyla bire çok ilişkisi vardır. Her ilişki tek bir yönde filtrelenir.
Çift yönlü filtrelemenin nasıl çalıştığını açıklamaya yardımcı olmak için model diyagramı tablo satırlarını ortaya çıkaracak şekilde değiştirilmiştir. Bu makaledeki tüm örnekler bu verileri temel alır.
Not
Power BI Desktop model diyagramında tablo satırlarını görüntülemek mümkün değildir. Tartışmayı net örneklerle desteklemek için bu makalede yapılır.
Üç tablonun satır ayrıntıları aşağıdaki madde işaretli listede açıklanmıştır:
- Customer tablosunun iki satırı vardır:
- CustomerCode CUST-01, Customer Customer-1, Country-Region Birleşik Devletler
- CustomerCode CUST-02, Customer Customer-2, Country-Region Australia
- Product tablosunun üç satırı vardır:
- SKU CL-01, Ürün Tişörtü, Renk Yeşili
- SKU CL-02, Ürün Jeans, Renk Mavisi
- SKU AC-01, Ürün Şapkası, Mavi Renk
- Sales tablosunun üç satırı vardır:
- OrderDate 1 Ocak 2019, CustomerCode CUST-01, SKU CL-01, Quantity 10
- OrderDate 2 Şubat 2019, CustomerCode CUST-01, SKU CL-02, Quantity 20
- OrderDate 3 Mart 2019, CustomerCode CUST-02, SKU CL-01, Quantity 30
Şimdi aşağıdaki rapor sayfasını göz önünde bulundurun.
Sayfada iki dilimleyici ve bir kart görseli yer alır. İlk dilimleyici Country-Region içindir ve iki öğeye sahiptir: Avustralya ve Birleşik Devletler. Şu anda Avustralya'ya göre dilimler. İkinci dilimleyici Product içindir ve üç öğe içerir: Hat, Jeans ve T-shirt. Hiçbir öğe seçilmez (yani hiçbir ürün filtrelenmez). Kart görselinde 30 miktarı görüntülenir.
Rapor kullanıcıları Avustralya'ya göre dilimlendiğinde, Verilerin Avustralya satışlarıyla ilişkili olduğu öğeleri görüntülemek için Ürün dilimleyicisini sınırlamak isteyebilirsiniz. Dilimleyici öğelerini "verilerle" göstermenin amacı budur. Ürün ve Satış tablosu arasındaki ilişkiyi her iki yönde de filtrelemek üzere yapılandırarak bu davranışı elde edebilirsiniz.
Ürün dilimleyicisi artık tek bir öğe listeler: tişört. Bu öğe, Avustralyalı müşterilere satılan tek ürünü temsil eder.
Öncelikle bu tasarımın rapor kullanıcılarınız için uygun olup olmadığını dikkatli bir şekilde düşünmenizi öneririz. Bazı rapor kullanıcıları bu deneyimi kafa karıştırıcı buluyor. Diğer dilimleyicilerle etkileşime geçtiğinde dilimleyici öğelerinin neden dinamik olarak göründüğünü veya kaybolduğunu anlamıyorlar.
Dilimleyici öğelerini "verilerle" göstermeye karar verirseniz, çift yönlü ilişkileri yapılandırmanızı önermeyiz. çift yönlü ilişkiler daha fazla işleme gerektirir ve bu nedenle sorgu performansını olumsuz yönde etkileyebilir. Özellikle modelinizdeki çift yönlü ilişkilerin sayısı arttıkça.
Aynı sonucu elde etmenin daha iyi bir yolu vardır: Çift yönlü filtreler kullanmak yerine, Ürün dilimleyicisinin kendisine görsel düzeyinde bir filtre uygulayabilirsiniz.
Şimdi Product ve Sales tablosu arasındaki ilişkinin artık her iki yönde de filtrelenmediğini düşünelim. Ayrıca Sales tablosuna aşağıdaki ölçü tanımı eklenmiştir.
Total Quantity = SUM(Sales[Quantity])
Ürün dilimleyici öğelerini "verilerle" göstermek için yalnızca "boş değil" koşulu kullanılarak Toplam Miktar ölçüsüne göre filtrelenmesi gerekir.
Boyut-boyut analizi
çift yönlü ilişkileri içeren farklı bir senaryo olgu türündeki bir tabloyu köprüleme tablosu gibi ele alır. Bu şekilde, farklı bir boyut türündeki tablonun filtre bağlamında boyut türündeki tablo verilerinin çözümlenmesini destekler.
Bu makaledeki örnek modeli kullanarak aşağıdaki soruların nasıl yanıtlanabilir olduğunu göz önünde bulundurun:
- Avustralyalı müşterilere kaç renk satıldı?
- Kaç ülke/bölge kot pantolon satın almış?
Her iki soru da köprü oluşturma olgu türündeki tablodaki veriler özetlemeden yanıtlanabilir. Ancak bu, filtrelerin boyut türündeki bir tablodan diğerine yayılmasını gerektirir. Filtreler olgu türündeki tablo aracılığıyla yayıldıktan sonra DISTINCTCOUNT DAX işlevi ve muhtemelen MIN ve MAX DAX işlevleri kullanılarak boyut türündeki tablo sütunlarının özetlenmesi gerçekleştirilebilir.
Olgu türündeki tablo köprü oluşturma tablosu gibi davrandıkça, boyut türündeki iki tabloyu ilişkilendirmek için çoka çok ilişki kılavuzunu izleyebilirsiniz. Her iki yönde de filtrelemek için en az bir ilişkinin yapılandırılması gerekir. Daha fazla bilgi için bkz . Çoka çok ilişki kılavuzu (Çoka çok boyutları ilişkilendirme).
Ancak, bu makalede daha önce açıklandığı gibi, bu tasarım büyük olasılıkla performans üzerinde olumsuz bir etkiye ve dilimleyici öğeleriyle ilgili kullanıcı deneyiminin sonuçlarına "verilerle" neden olacaktır. Bu nedenle, bunun yerine CROSSFILTER DAX işlevini kullanarak ölçü tanımında çift yönlü filtrelemeyi etkinleştirmenizi öneririz. CROSSFILTER işlevi, bir ifadenin değerlendirilmesi sırasında filtre yönlerini değiştirmek, hatta ilişkiyi devre dışı bırakmak için kullanılabilir.
Sales tablosuna eklenen aşağıdaki ölçü tanımını göz önünde bulundurun. Bu örnekte, Müşteri ve Satış tabloları arasındaki model ilişkisi tek bir yönde filtrelemek üzere yapılandırılmıştır.
Different Countries Sold =
CALCULATE(
DISTINCTCOUNT(Customer[Country-Region]),
CROSSFILTER(
Customer[CustomerCode],
Sales[CustomerCode],
BOTH
)
)
Satılan Farklı Ülkeler ölçü ifadesinin değerlendirilmesi sırasında, Müşteri ve Satış tabloları arasındaki ilişki her iki yönde de filtrelenir.
Aşağıdaki tablo görselinde satılan her ürün için istatistikler yer alır. Quantity sütunu yalnızca miktar değerlerinin toplamıdır. Satılan Farklı Ülkeler sütunu, ürünü satın alan tüm müşterilerin ülke-bölge değerlerinin ayrı sayısını temsil eder.
İlgili içerik
Bu makaleyle ilgili daha fazla bilgi için aşağıdaki kaynaklara göz atın: