VALUES yerine SELECTEDVALUE kullanma

Veri modelleyicisi olarak bazen bir sütunun belirli bir değere göre filtrelenip filtrelenmediğini test etmek için bir DAX ifadesi yazmanız gerekir.

DAX 'ın önceki sürümlerinde bu gereksinim, üç DAX işlevi içeren bir model kullanılarak güvenle elde edildi; Eğer, HASONEVALUE ve Values. Aşağıdaki ölçü tanımı bir örnek oluşturur. Yalnızca Avustralyalı müşterilere yapılan satışlar için satış vergisi tutarını hesaplar.

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 "Australia" değişmez değeriyle karşılaştırılır. VALUES işlevi TRUE döndürdüğünde, Sales ölçüsü 0,10 ile çarpılır (%10'u temsil eder). Sütunu birden çok değer filtrelediği için HASONEVALUE işlevi FALSE döndürürse, ilk IF işlevi BLANK döndürür.

HASONEVALUE işlevinin kullanılması bir savunma tekniğidir. Country-Region sütununu birden çok değerin filtrelemesi mümkün olduğundan, bu gereklidir. Böyle bir durumda VALUES işlevi birden çok satırdan oluşmuş bir tablo döndürür. Birden çok satırdan oluşmuş bir tablonun skaler değerle karşılaştırılması hata sonucu döndürür.

Öneri

SELECTEDVALUE işlevini kullanmanız önerilir. Bu makalede açıklanan desenle aynı sonucu, ama daha etkili ve şık bir şekilde verir.

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

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

İpucu

SELECTEDVALUE işlevinde bir alternatif sonuç değeri geçirilebilir. Sütuna hiç filtre uygulanmazsa veya birden çok filtre uygulanırsa alternatif sonuç değeri döndürülür.

Ayrıca bkz.