Filtre bağlamını inceleme
VALUES
DAX işlevi, formüllerinizin filtre bağlamında hangi değerlerin olduğunu belirlemesini sağlar.
İşlev VALUES
söz dizimi aşağıdaki gibidir:
VALUES(<TableNameOrColumnName>)
İşleve bir tablo başvurusu veya sütun başvurusu geçirilmesi gerekir. Tablo başvurusu geçirdiğinizde filtre bağlamında bulunan satırları içeren aynı sütunlara sahip bir tablo nesnesi döndürür. Sütun başvurusu geçirdiğinizde filtre bağlamında bulunan benzersiz değerlerden oluşan tek sütunlu bir tablo döndürür.
İşlev her zaman bir tablo nesnesi döndürür ve tabloda birden çok satır bulunabilir. Bu nedenle, belirli bir değerin filtre bağlamında olup olmadığını test etmek için formülünüzün önce işlevin VALUES
tek bir satır döndürdüğünü test etmesi gerekir. Bu görevi gerçekleştirmenize iki işlev yardımcı olabilir: HASONEVALUE
ve SELECTEDVALUE
DAX işlevleri.
İşlev, HASONEVALUE
belirli bir sütun başvurusu tek bir değere göre filtrelendiğinde döndürür TRUE
.
işlevi, SELECTEDVALUE
tek bir değerin ne olabileceğini belirleme görevini basitleştirir. İşleve bir sütun başvurusu geçirildiğinde tek bir değer, filtre bağlamında bulunan birden fazla değer geçirildiğinde ise BLANK değeri (veya işlevi geçirmenizi sağlayan alternatif bir değer) döndürülür.
Aşağıdaki örnekte işlevini kullanacaksınız HASONEVALUE
. Sales tablosuna satış komisyonunun hesaplandığı aşağıdaki ölçüyü ekleyin. Adventure Works'te komisyon oranının, Birleşik Devletler dışındaki tüm ülkeler/bölgeler için gelirin yüzde 10'u olduğunu unutmayın. United States içinde satış temsilcileri yüzde 15 komisyon almaktadır. Ölçüyü iki ondalık basamaklı para birimi olarak biçimlendirin ve ardından raporun Sayfa 3 bölümünde yer alan tabloya ekleyin.
Sales Commission =
[Revenue]
* IF(
HASONEVALUE('Sales Territory'[Country]),
IF(
VALUES('Sales Territory'[Country]) = "United States",
0.15,
0.1
)
)
Toplam Sales Commission sonucunun BLANK olduğuna dikkat edin. Bunun nedeni, Birden çok değerin Sales Territory tablosundaki Country sütunu için filtre bağlamında olmasıdır. Bu durumda işlevi döndürürFALSE
. HASONEVALUE
Bu da Revenue ölçüsünün BLANK ile çarpılmasıyla sonuçlanır (BLANK ile çarpılan bir değer BLANK'tır). Toplam oluşturmak için bu modülün ilerleyen bölümlerinde anlatılacak olan yineleyici işlevi kullanmanız gerekir.
Filtre durumunu test etmek için kullanabileceğiniz diğer üç işlev şunlardır:
ISFILTERED
- Geçirilen sütun başvurusu doğrudan filtrelendiğinde döndürürTRUE
.ISCROSSFILTERED
- Geçirilen sütun başvurusu dolaylı olarak filtrelendiğinde döndürürTRUE
. Aynı tabloda veya ilgili tabloda başka bir sütuna uygulanmış olan filtre, başvuru sütununu filtreleyerek etkilediğinde sütuna çapraz filtreleme uygulanır.ISINSCOPE
- Geçirilen sütun başvurusu bir düzey hiyerarşisindeki düzey olduğunda döndürürTRUE
.
Raporun 2. Sayfasına dönün ve Revenue % Total Country ölçü tanımını değiştirerek Sales Territory tablosundaki Region sütununun kapsam içinde olduğunu test edin. Kapsam dahilinde değilse ölçü sonucu BLANK olmalıdır.
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
IF(
ISINSCOPE('Sales Territory'[Region]),
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
)
Matris görselinde Revenue % Total Country değerlerinin yalnızca bölge kapsam dahilinde olduğunda görüntülendiğine dikkat edin.