VALUES yerine SELECTEDVALUE 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'ın ö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 geçerli filtre bağlamında Ülke-Bölge sütununun tek bir değeri görünür olduğunda TRUE döndürür. TRUE olduğunda, VALUES işlevi "Avustralya" değişmez metniyle karşılaştırılır. VALUES işlevi TRUE döndürdüğünde Sales ölçüsü 0,10 (%10'unu temsil eder) ile çarpılır. HASONEVALUE işlevi, sütunu birden fazla değer filtrelediğinden YANLIŞ döndürürse, ilk EĞER işlevi BLANK döndürür.

HASONEVALUE kullanımı savunma tekniğidir. Ülke-Bölge sütununu birden çok değerin filtrelemesi mümkün olduğundan bu 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.

Öneri

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ıldığında örnek ölçü tanımı artık yeniden yazılmıştır.

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

İpucu

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