DAX ile çalışırken sıklıkla filtre bağlamına başvururuz. Filtreleri davranışlarını kontrol etmek için kullanılan fonksiyonlar, özellikle karmaşık ölçüler oluştururken kritik öneme sahiptir. Veri üzerindeki filtreleri tamamen veya kısmen kaldırmak, ya da tam tersine, filtrelerin etkisini korumak, sadece hesaplamaların çeşitliliğini ve doğruluğunu sağlamakla kalmaz, aynı zamanda rapor performansını da önemli ölçüde etkiler. Bu noktada, DAX sorgularımızın esnekliğini artırmak ve doğru sonuçlar elde etmek için ALL ailesi fonksiyonları devreye girer. Bugün bu ailenin en temel üyesi olan ALL() fonksiyonuna yakından bakıyoruz.
ALL() ve REMOVEFILTERS() Fonksiyonları Davranışı
ALL() fonksiyonu belirtilen sütun veya tablodan bütün filtreleri kaldırır. CALCULATE() fonksiyonunu modifiye edebilir ya da tablo döndürebilir. Sıklıkla, CALCULATE() modifiye etmek ve farklı düzeylerden rasyolar oluşturmak için kullanılır.
ALL() fonksiyonu, bir tabloya uygulandığında o tablodaki tüm benzersiz değerleri içeren bir tablo döndürür. Bu özellik, özellikle farklı seviyelerde toplamlar hesaplamak veya dinamik segmentasyonlar oluşturmak için kullanışlıdır. Örnekte ürün sınıfındaki benzersiz değerleri döndürüyor.
REMOVEFILTERS(), ALL() ile aynı işlevi görür. Tablo döndüremez ancak CALCULATE() içerisinde kullanıldığında belirtilen sütun veya tablodan bütün filtreleri kaldırır.
Bir örnek yapalım. Kıta, Marka ve Ürün Sınıfı kırılımı oluşturarak 3 ölçü kullanalım. Satış Döviz Tutarı ölçüsü her satır için filtreler kaldırılmadan önceki bilgiyi verirken, örnekte birbiriyle aynı işlevi gören ALL() ve REMOVEFILTERS() fonksiyonlarının nasıl davrandığını gözlemleyelim.
Satış Döviz Tutarı =
SUMX(
Sales,
Sales[SalesQuantity] * Sales[UnitPrice]
)
BrandName ALL =
CALCULATE(
[Satış Döviz Tutarı],
ALL('Product'[BrandName])
)
BrandName Removefilters =
CALCULATE(
[Satış Döviz Tutarı],
REMOVEFILTERS('Product'[BrandName])
)
Hiyerarşik olarak, belirli bir kıtada, belirli bir firma, belirli ürün sınıfından Satış Döviz Tutarı ölçüsündeki kadar gelir elde ediyor. Örnekte BrandName yani hiyerarşinin ortasındaki sütundaki filtreyi kaldırıyoruz. Burada 2 durum geçerli.
- BrandName filtresi kaldırıldığında, hiyerarşinin bir üst basamağında yer alan kıta genelindeki satış geliri bilgisini elde ediyoruz.
- Hiyerarşide bir alt kategori olan Ürün Sınıfı filtresi otomatik olarak kaldırılmış oluyor.
Bu bilgiyi kullanarak, Marka Satış genelinin kıta geneli satışlarına oranını bulmak için, (satır satış geliri / kıta satış geliri) rasyosunu hesaplayalım.
Marka Satışlar / Kıta Satışlar % =
VAR _SatirSatisTutar = [Satış Döviz Tutarı]
VAR _ALL =
CALCULATE(
[Satış Döviz Tutarı],
ALL('Product'[BrandName])
)
VAR _Sonuc =DIVIDE(_SatirSatisTutar, _ALL)
RETURN
FORMAT(_Sonuc, "0.00%")
Bugün oran konusunda en önemli fonksiyonlardan biri olan ALL() fonksiyonuna değindik. Power BI raporlarında oran hesaplamak ve filtre bağlamı içerisinde etkin olarak kullanabilmek oldukça önemli. Kullanım alanları oldukça geniş. Firma sisteminin darboğazları, rekabetçi fiyat avantajları, bilgilerin kontrolü, denetimi, takibi, KPI’lar, score cardlar ve daha birçok konuda sürekli olarak kullanılırlar. Bir sonraki yazıda görüşmek üzere.. DAX’la kalın..