CALCULATE Filtrelerinde OR Kullanımı

2021 Mart güncellemesi ile birlikte CALCULATE'e verebileceğimiz filtre tiplerinde OR kullanımına ilişkin bir yazım (syntax) değişikliğine gidildi.

Daha önce CALCULATE ve OR kullanımıyla ilgili yazdığım yazıda şöyle örnekler vermiştim:

Aynı filtre içerisinde tek bir sütun üzerinden OR condition yazabiliriz.

Kırmızı-Mavi Ürün Satışları = 
CALCULATE( SUM( 'Satışlar'[Tutar] ) ,
    'Ürünler'[Renk] = "Kırmızı" || 'Ürünler'[Renk] = "Mavi" 
)

Fakat farklı sütunlardan gelen condition'ları aynı filtre altında veremiyorduk!

Yani aşağıdaki gibi bir formül yazamıyorduk:

Kırmızı veya Contoso Satışları = 
CALCULATE( SUM( 'Satışlar'[Tutar] ) ,
    'Ürünler'[Renk] = "Kırmızı" || 'Ürünler'[Marka] = "Contoso"
)

"The expression contains  multiple columns , but only a  single column  can be used…" . Meali, aynı filtrede birden fazla farklı sütun kullanamazsın!

Eğer böyle bir ihtiyaç varsa bunu ancak FILTER kalıbıyla yazabiliyorduk.

Kırmızı Contoso Satışları _FILTER_ = 
CALCULATE( SUM( 'Satışlar'[Tutar] )  ,
    FILTER( ALL( 'Ürünler'[Renk] , 'Ürünler'[Marka]) ,
        'Ürünler'[Renk] = "Kırmızı" || 'Ürünler'[Marka] = "Contoso"
    )
)

Güncellemeyle birlikte artık daha önce reddettiği yazıma müsade ediyor!

Burada bir uyarıda bulunmak isterim :  Sütunlar aynı tablodan geliyorsa  buna artık müsade ediyor, fakat farklı tablolardan gelen sütunlar üzerinden OR'la bağlanmış  tek bir filtre  halen syntax olarak yazamıyoruz!

Bu durum elbette çözümsüz değil, expanded tables konseptiyle, CALCULATETABLE ile ya da FILTER ile , ya da kafamız nasıl çalışıyorsa SUMMARIZE ile de yapabiliriz.

CALCULATE ve OR kullanımına ilişkin bu yazıya da göz atmanızı öneririm, IN operatörü ile de benzer hesaplamaları yapmak mümkün.

Önümüzdeki +- 6 ay – 1 yıl içerisinde DAX'ın semantiğiyle ilgili yapısal bir değişiklik yok, ama yazıma (syntax) ilişkin değişiklikler olması muhtemel. AutoExist gibi, DAX konusunda tecrübeli kişilere bile "nasıl yani" dedirtecek durumlar için de geliştirmeler olacak büyük ihtimalle.

Yazıdaki modeli indirebilirsiniz.

CALCULATE ve OR Kullanımı