- Çoktan çoğa ilişki hangi durumda ortaya çıkar?
- Yol bir: doğrudan çoktan çoğa ilişki tanımlamak
- Yol iki: köprü tablo ile modeli sadeleştirmek
- Çift yönlü filtre ne yapar, neden risklidir?
- Çift yönlü filtreyi ilişkiye değil ölçüye vermek
- Örnek senaryo: müşteri ve segment raporu
- Kontrol listesi ve sık hatalar
- Bu beceriyi Mindset programlarında nerede çalışırsınız
- Sık sorulan sorular
Power BI'da çoktan çoğa ilişki nasıl kurulur, çift yönlü filtre ne zaman kullanılır
Çoktan çoğa ilişkiyi doğrudan kurmak mı, köprü tablo mu? Çift yönlü filtrenin riskleri, adımlar ve doğru model kararı örnek senaryolarla anlatılıyor.
Çoktan çoğa ilişki hangi durumda ortaya çıkar?
Bir ilişkinin iki ucunda da tekrar eden değerler varsa o ilişki çoktan çoğadır. Klasik örnek: bir müşteri birden fazla segmentte yer alabilir, bir segmentte de çok sayıda müşteri bulunur. Bir ürün birçok kampanyaya, bir kampanya da birçok ürüne bağlanabilir. Bir çalışan birçok projede, bir proje birçok çalışanda görev alır.
Veri modelinde bu durum çoğu zaman sorun olarak hissedilmez; sorun rapor yanlış toplam göstermeye başladığında fark edilir. Bir tutarı iki kez saymak, bir filtrenin beklenen tabloya ulaşmaması ya da boş satırlar bu belirtilerin başlıcalarıdır.
İlk karar şudur: gerçekten çoktan çoğa ilişki var mı, yoksa tablolardan biri aslında tek tarafa indirilebilir mi? Boyut tablosunda yinelenen anahtar çoğu zaman veri hatasıdır. Önce anahtar sütununun benzersiz olup olmadığını Power Query'de kontrol edin. Tekrar gerçekten iş mantığından geliyorsa aşağıdaki iki yoldan birini seçersiniz.
Yol bir: doğrudan çoktan çoğa ilişki tanımlamak
Power BI Desktop'ta Model görünümünde iki tablonun sütunlarını birbirine sürükleyerek ilişki oluşturursunuz. Açılan ilişki penceresinde kardinalite alanından çoktan çoğa seçeneği belirlenir. Çapraz filtre yönü tek yön ya da her iki yön olarak ayarlanabilir.
Bu yöntem hızlıdır ama bilinçli kullanılmalıdır. Doğrudan çoktan çoğa ilişkide arada anahtar tablosu olmadığı için motor, filtreyi eşleşen değerler üzerinden kendisi yayar. Sonuç, iki tablodaki anahtarların eşleşme biçimine bağlı olarak toplamların beklenenden farklı çıkmasıdır. Özellikle bir taraf bir ölçü toplamı taşıyorsa, tekrar eden eşleşmeler yüzünden aynı değer birden çok kez sayılabilir.
Bu seçenek, çoğunlukla iki olgu tablosunu ortak bir boyutta karşılaştırmak gerektiğinde ve veri tutarlılığı elinizde değilken geçici bir çözüm olarak mantıklıdır. Kalıcı raporlarda genellikle ikinci yol tercih edilir.
Yol iki: köprü tablo ile modeli sadeleştirmek
Köprü tablo (bridge table), iki boyut arasındaki çoktan çoğa ilişkiyi bire çok ilişkilere çevirir. Örnek: Ürün ve Kampanya arasında bir Ürün-Kampanya tablosu kurarsınız. Bu tabloda her satır bir ürün ve bir kampanya eşleşmesini temsil eder. Ürün tablosu köprünün 'bir' tarafı, Kampanya tablosu da köprünün 'bir' tarafı olur; köprü tablo ise iki ilişkide de 'çok' tarafıdır.
Adımlar şöyledir: • Eşleşmeleri içeren kaynağı bulun. Çoğu zaman bir ilişki tablosu ya da bir sütunda birleşik yazılmış değerler vardır. • Birleşik değerler varsa Power Query'de sütunu ayırıp satırlara bölün. • Her boyut için benzersiz anahtar listesini ayrı tablo yapın. • Model görünümünde boyut tablolarından köprüye bire çok ilişkiler kurun. • Olgu tablosu hangi boyutla filtreleniyorsa o ilişkinin yönünü belirleyin.
Bu mimarinin artısı, filtre yayılımının öngörülebilir olmasıdır. Her ilişki bire çok olduğu için motorun nasıl davranacağını önceden bilirsiniz. Eksi tarafı, ek tablo ve ek ilişkiler yüzünden modelin biraz büyümesidir; ancak anlaşılırlık genellikle bunu telafi eder.
Çift yönlü filtre ne yapar, neden risklidir?
Normalde bir bire çok ilişkide filtre 'bir' taraftan 'çok' tarafa akar. Boyuttan olguya doğru süzülür. Çift yönlü (both) filtre bu akışı tersine de açar: olgu tablosundaki bir filtre boyuta da etki eder.
Bu ayar bazen gerçekten gerekir. Örneğin boyut tablosundaki bir dilimleyicinin yalnızca olguda verisi olan değerleri göstermesini istiyorsanız. Köprü tabloda çoktan çoğa senaryosunda da filtrenin köprüden öteye geçmesi için kullanılır.
Riskler: • İki yönlü filtre ilişki zincirinde belirsiz yollar oluşturabilir. Motor iki farklı yoldan aynı tabloya ulaşabilirse Power BI bu ilişkiyi pasif bırakabilir ya da uyarı verir. • Performans düşebilir; filtre iki yöne gittikçe sorgu planı büyür. • Sonuçların anlaşılması zorlaşır; kullanıcı bir dilimleyici seçince başka bir dilimleyicinin değerlerinin neden değiştiğini anlamayabilir.
Bu nedenle çift yönlü filtre, modelin tamamına uygulanacak bir varsayılan değil, belirli bir ihtiyaca yönelik bir istisna olmalıdır.
Çift yönlü filtreyi ilişkiye değil ölçüye vermek
Her ilişkiyi çift yöne çevirmek yerine ihtiyaç duyulan ölçüde filtre yönünü açmak daha güvenlidir. DAX'ta CROSSFILTER fonksiyonu bunu sağlar:
Satış (Köprü Üzerinden) = CALCULATE([Toplam Satış], CROSSFILTER(Köprü[Ürün Anahtarı], Ürünler[Ürün Anahtarı], BOTH))
Bu yaklaşımda ilişki tek yönlü kalır, yalnızca bu ölçü hesaplanırken filtre iki yöne çalışır. Modelin geri kalanındaki davranış değişmez. Ölçünün adında ya da açıklamasında bu özel davranışı belirtmek, modeli devralan kişiye yardımcı olur.
Bir diğer yöntem TREATAS'tır. Bir tablonun değerlerini başka bir tablonun sütununa filtre olarak uygular; fiziksel ilişki gerektirmez. Eşleştirme tablosu ilişkisiz bir şekilde duruyorsa TREATAS ile ölçü içinde bağlantı kurabilirsiniz. Bu özellikle ortak bir boyutu paylaşmayan iki olgu tablosunu birleştirirken kullanışlıdır.
Örnek senaryo: müşteri ve segment raporu
Örneğin bir pazarlama ekibi müşterileri birden fazla segmentte etiketliyor: yüksek değerli, kampanyaya duyarlı, uzun süredir müşteri. Satış tablosu müşteri anahtarıyla bağlı. Amaç, bir segment seçildiğinde o segmentteki müşterilerin toplam satışını görmek.
Doğrudan ilişki tanımlarsanız, bir müşteri birkaç segmentte olduğunda ve segmentler toplam satırında birleştiğinde satış birden çok kez sayılmış gibi görünebilir. Genel toplam ise tek sayılır, bu yüzden parça toplamları genel toplamdan büyük çıkar. Kullanıcı bunu fark ettiğinde raporun güvenilirliği zarar görür.
Doğru model: Müşteri boyutu, Segment boyutu ve aralarında Müşteri-Segment köprüsü. Satış olgusu müşteriye bağlı. Segment dilimleyicisinden gelen filtre köprü üzerinden müşteriye, müşteriden satışa akar. Burada akışın köprüden müşteriye doğru gitmesi için filtre yönü ayarlanır; ölçü DISTINCT müşteri sayacına göre ya da satış toplamına göre hesaplanır. Toplamların neden birbirini tutmadığını raporda kısa bir notla açıklamak da iyi bir pratiktir: bir müşteri birden fazla segmentte olabilir.
Kontrol listesi ve sık hatalar
Çoktan çoğa model kurduktan sonra şu kontroller yapılmalıdır: • Boyut tablolarında anahtar benzersiz mi? Değilse ilişki kardinalitesi yanlış algılanır. • Boş ya da eşleşmeyen anahtar var mı? Olgu tablosunda boyutta karşılığı olmayan anahtarlar raporda boş satır olarak görünür. • Genel toplam ile parça toplamları tutuyor mu? Tutmuyorsa nedeni bilinçli olmalı. • Çift yönlü filtre yalnızca gerektiği yerde mi açık? Modelin her ilişkisinde açıksa yeniden gözden geçirin. • Güvenlik kuralı (RLS) kullanıyorsanız, çift yönlü filtrenin güvenlik kuralını beklenmedik yönde yayıp yaymadığını test edin.
Tipik hata: iki olgu tablosunu doğrudan birbirine bağlamak. Bunun yerine ortak boyutlar (tarih, ürün, müşteri) üzerinden bağlamak her zaman daha sağlıklıdır. Bir diğeri, Excel alışkanlığıyla tabloları geniş bir düz tabloya çevirip çoktan çoğa sorununu gizlemektir; bu, dosya boyutunu ve hesap karmaşıklığını artırır. Yıldız şema mantığını ayrıca anlatan veri modelleme sayfası bu yaklaşımı daha geniş bir çerçevede ele alır.
Bu beceriyi Mindset programlarında nerede çalışırsınız
İlişki mimarisi, Power BI Veri Modelleme eğitiminde 'Yıldız Şema ve Boyut Modelleme' ve 'İleri Model Mimarisi ve Ölçeklendirme' modüllerinin konusudur. Filtre bağlamı ve ölçü tarafı ise Power BI İleri Düzey ve DAX eğitiminin CALCULATE ve filtre bağlamı modülüne dayanır. Rapor geliştiriciler, veri modelleyiciler ve kendi raporunu kuran analistler için uygundur.
Kurumsal ekiplerde, farklı departmanların veri kaynaklarını tek modelde birleştiren BI ekipleri için çoktan çoğa kararlarını ortak bir standarda bağlamak faydalıdır.
İlgili Mindset programı
Power BI Veri Modelleme
Sık sorulan sorular
Çoktan çoğa ilişki toplamları neden tutmuyor?
Aynı kayıt birden fazla eşleşmeye girdiğinde parça toplamları genel toplamdan büyük görünebilir. Bu veri hatası değil, ilişki yapısının sonucudur. Köprü tablo ve doğru filtre yönü ile modeli sadeleştirin, rapor kullanıcısına da bu davranışı kısa bir notla açıklayın.
Çift yönlü filtreyi hep açık bırakmak sakıncalı mı?
Evet. Her ilişkide açık bırakmak belirsiz filtre yolları, yavaşlama ve anlaşılması zor sonuçlar doğurur. Yalnızca gerçekten ihtiyaç duyulan ilişkide etkinleştirin ya da tek ölçünün içinde CROSSFILTER ile geçici olarak açın.
Köprü tablo Power Query ile nasıl hazırlanır?
Eşleşme bilgisi tek hücrede virgülle yazılmışsa sütunu ayırıcıya göre satırlara bölün. Bölmeden sonra değerlerin baş ve sonundaki boşlukları temizleyin; görünmeyen boşluk eşleşmeyi bozar. Ardından iki anahtar sütununu bırakıp yinelenenleri kaldırın, iki tarafta anahtarların veri türünün aynı olduğunu da denetleyin. Çıkan tablo, iki boyuta bire çok ilişkiyle bağlanan köprü olur.
TREATAS ile ilişki kurmak arasındaki fark nedir?
İlişki modelde kalıcıdır ve tüm görsellere etki eder. TREATAS ise yalnızca yazıldığı ölçünün içinde bir filtre uygular, modeli değiştirmez. Esnek ama her ölçüde ayrıca yazılması gerekir; sık kullanılan bir bağlantı için ilişki daha pratik olabilir.
Doğrudan çoktan çoğa ilişki hiç kullanılmamalı mı?
Kesin bir yasak yoktur. Hızlı bir analiz ya da geçici bir birleştirme için kullanılabilir. Ancak kalıcı ve paylaşılan raporlarda köprü tablo ile kurulan bire çok yapı daha öngörülebilir olduğu için genellikle tercih edilir.
İlgili rehberler
İlgili eğitimler
Kategori: Veri Analitiği ve İş Zekası