SELECTEDVALUE yerine VALUES kullanma

Veri modelleyicisi olarak bazen bir sütunun belirli bir değere göre filtrelenip filtrelenmediğini test eden bir DAX ifadesi yazmanız gerekebilir.

DAX'nin önceki sürümlerinde, bu gereksinim üç DAX işlevi içeren bir desen kullanılarak güvenli bir şekilde elde edildi; IF, HASONEVALUE ve VALUES. Aşağıdaki ölçü tanımı bir örnek sunar. Satış vergisi tutarını hesaplar, ancak yalnızca Avustralyalı müşterilere yapılan satışlar için hesaplanır.

Australian Sales Tax =
IF(
    HASONEVALUE(Customer[Country-Region]),
    IF(
        VALUES(Customer[Country-Region]) = "Australia",
        [Sales] * 0.10
    )
)

Örnekte, HASONEVALUE işlevi yalnızca TRUE sütununun tek bir değeri geçerli filtre bağlamında görünür olduğunda döndürür. TRUEolduğunda, VALUES işlevi "Avustralya" değişmez metniyle karşılaştırılır. VALUES işlevi TRUEdöndürdüğünde, satış ölçüsü 0,10 ile çarpılır (10%temsil edilir). HASONEVALUE işlevi sütuna birden fazla değer filtrelediğinden FALSEdöndürürse, ilk IF işlevi BLANKdöndürür.

HASONEVALUE kullanımı savunma tekniğidir. Birden çok değerin Ülke-Bölge sütununu filtrelemesi mümkün olduğundan gereklidir. Bu durumda, VALUES işlevi birden çok satırdan oluşan bir tablo döndürür. Birden çok satırdan oluşan bir tabloyu skaler değerle karşılaştırmak hatayla sonuçlanır.

Tavsiye

SELECTEDVALUE işlevini kullanmanız önerilir. Bu makalede açıklanan desenle aynı sonuca ulaşır, ancak daha verimli ve zarif bir şekilde elde edilir.

SELECTEDVALUE işlevi kullanılarak örnek ölçü tanımı artık yeniden yazılmıştır.

Australian Sales Tax =
IF(
    SELECTEDVALUE(Customer[Country-Region]) = "Australia",
    [Sales] * 0.10
)

Bahşiş

işlevine alternatif bir SELECTEDVALUE değeri aktarılabilir. Sütuna filtre veya birden çok filtre uygulanmadığında alternatif sonuç değeri döndürülür.