Power BI’da Many-To-Many İlişkileri Köprü Tablo Ekleyerek One-To-Many İlişkilere Dönüştürmek

Many-to-many (çoktan çoka) ilişkisi, iki tablodaki değerlerin birden fazla veriyle eşleştiği durumlarda ortaya çıkar. Bu ilişki yapısı, veri setinin anlaşılmasını zorlaştırır ve muğlaklığa yol açar. Özellikle Power BI’da DAX yazarken veya ölçü kullanırken karmaşık ve hatalı sonuçlar doğurabilir. İster kendiniz için ister bir kullanıcı grubu için veri modeli dizayn ediyor olun, one-to-many tercih etmek en iyi pratiktir. Ayrıca, rapor performansını düşürme riski taşır, çünkü çok sayıda ilişkili veri sorgulandığında modelin iş yükü artar. Örneğimize göz atalım:

Tabloya baktığımızda, birden çok öğrencinin birden çok programla eşleştiğini görüyoruz. Ancak öğrencilerin programları hangi seviyede bildiğine dair bir veri yok. Bu durumda, çoktan çoka (Many-To-Many) bir ilişki oluşuyor ve anlam açısından muğlaklık yaratıyor. Veri modelindeki ilişkilerin net olması, hem raporlarla hem de formüllerle çalışanlar için anlaşılır olmasını sağlar. Aynı zamanda formüllerin yalnızca gerekli bilgileri kullanacak şekilde optimize edilmesine ve bu sayede performansın önemli ölçüde artmasına katkı sağlar.

Örneğimize dönecek olursak, ilişki durumunu çözmek için şöyle bir tablo ekleyebiliriz:
Power BI Giriş Sekmesi > Tablo görünümü > Yeni Tablo :

ProgramID = 
 VAR ProgramTablosundan = DISTINCT(Program[ProgramID])
 VAR OgrenciTablosundan = DISTINCT('Öğrenci'[ProgramID])
 VAR BirlestirProgramID = UNION(ProgramTablosundan, OgrenciTablosundan)
 VAR KopruTablo = DISTINCT(BirlestirProgramID)
 
 RETURN KopruTablo
  1. Program tablosundan benzersiz (unique) ProgramID’leri aldık.
  2. Öğrenci tablosundan benzersiz (unique) ProgramID’leri aldık.
  3. Union fonksiyonunu kullanarak bu bilgileri alt alta ekledik. Böylelikle bir tabloda olmayan ProgramID’nin diğerinde var olabilme olasılığını eledik.
  4. Son olarak Distinct fonksiyonu kullanarak boşluklardan ve tekrarlayan değerlerden kurtulduk. Benzersiz değerlerle bir bridge tablo elde ettik.
This image has an empty alt attribute; its file name is image-16.png

Program ve Öğrenci tabloları arasındaki ilişkiyi kaldırıp ProgramID sütunlarını ilişkilendirdiğimizde Many-To-Many ilişkiyi One-To-Many haline dönüştürmüş oluyoruz. 

Bugünkü yazımızda, Many-to-Many ilişkileri çözmek için köprü tablosu kullanarak veri modelimizi daha sade, anlaşılır ve verimli hale getirdik. Köprü tabloları, sadece daha net bir veri ilişkisi sağlamakla kalmaz, aynı zamanda raporlama süreçlerinizdeki belirsizlikleri ortadan kaldırarak, iyi bir DAX stratejisi ile, raporların daha doğru ve hızlı çalışmasına olanak sağlar. DAX’la kalın..