CALCULATE fonksiyonuna bir sütun üzerinden filtre -ya da condition- verdiğimizde, ilgili sütun üzerindeki tablolar arası ilişkilerden gelen doğal filtreleri kaldırır ve yazdığımız filtreyi uygular.
Verdiğim örneği tekrarlamak gerekirse:
Siyah Ürünlerin Satışı :=
CALCULATE ( [Satışlar]; 'Ürünler'[Renk] = "Siyah" )
Bu metriği [Satışlar] metriği ile bir matrise düşürdüğümüzde aşağıdaki gibi bir görünüm elde ederiz.
Arka planda tabular engine yukarıdaki formülü şu şekilde çalıştırır:
Siyah Ürünlerin Satışı Açılımı :=
CALCULATE (
[Satışlar];
FILTER ( ALL ( 'Ürünler'[Renk] ); 'Ürünler'[Renk] = "Siyah" )
)
‘Ürünler'[Renk] üzerindeki doğal filtreleri ALL ile kaldırır ve kendi context’ini yaratır: Siyah ürünler. Bu yüzden matristeki satırda hangi renk olursa olsun umursamaz ve sadece siyah ürünlerin satışını hesaplar.
Bu duruma istisna, “Sort by Column” özelliğini kullandığımız sütunları condition olarak yazdığımızda oluşur. Power BI’da varsayılan sıralama şekillerinin alfabetik ya da nümerik olduğunu, fakat Sort By Column ile sıralama şeklini değiştirebileceğimizi daha önce yazmıştım.
Sort By Column’u kullanmadığımızda alfabetik olarak listelenen ayları, Ay numarasına göre sıraladığımızda istenen görünümü elde edebiliriz.
Ocak ayının satışlarını hesaplayan bir metrik yazalım ve bunu bir matrise düşürelim.
Satışlar Ocak :=
CALCULATE ( [Satışlar]; Tarih[Ay] = "Ocak" )
Ocak ayı satışlarının her bir ay satırı için tekrarlanmasını bekliyoruz ama tekrarlamıyor !
“Ay” sütununu Sort by Column’u kullanarak “Ay No” sütununa göre sıraladık. Bu durum, “Ay” sütununu kullandığımız yerlerde “Ay No” filtresini oluşturuyor arka tarafta. Bu yüzden formülde “Ay No” üzerindeki filtreleri de kaldırmamız gerekiyor. Formülü aşağıdaki gibi yazdığımızda durum beklediğimiz gibi olacaktır.
Satışlar Ocak :=
CALCULATE ( [Satışlar]; Tarih[Ay] = "Ocak"; ALL ( 'Tarih'[Ay No] ) )
Sort by column özelliğinin en sık kullanıldığı sütunlar, ay, gün, hafta sonu-hafta içi gibi tarih sütunlarıyla bilançolardaki hesap sıralamaları. Bu sütunlar üzerinden CALCULATE fonksiyonunu kullandığınızda bu durumu hatırlamakta fayda var.
İnce bir detay. Emeğiniz ve paylaşımınız için teşekkürler.
çok ince bir detay hocam, teşekkürler.