KEEPFILTERS
Şunlar için geçerlidir:Hesaplanan sütun
Hesaplanan tablo
Ölçü
Görsel hesaplama
bir CALCULATE veya CALCULATETABLE işlevi değerlendirilirken filtrelerin nasıl uygulanacağını değiştirir.
Sözdizimi
KEEPFILTERS(<expression>)
Parametre
Terim | Tanım |
---|---|
expression |
Herhangi bir ifade. |
Dönüş değeri
Değerler tablosu.
Açıklamalar
bu işlevlerin standart davranışını geçersiz kılmak için bağlam CALCULATE ve CALCULATETABLE işlevleri içinde KEEPFILTERS kullanırsınız.
Varsayılan olarak, CALCULATE gibi işlevlerdeki filtre bağımsız değişkenleri ifadeyi değerlendirme bağlamı olarak kullanılır ve CALCULATE için filtre bağımsız değişkenleri aynı sütunlar üzerindeki tüm mevcut filtreleri değiştirir. CALCULATE için filtre bağımsız değişkeninin etkilediği yeni bağlam, yalnızca filtre bağımsız değişkeninin parçası olarak belirtilen sütunlarda var olan filtreleri etkiler. CALCULATE veya diğer ilgili işlevlerin bağımsız değişkenlerinde belirtilenler dışındaki sütunlardaki filtreler etkin ve değişmeden kalır.
KEEPFILTERS işlevi bu davranışı değiştirmenize olanak tanır. KEEPFILTERSkullandığınızda, geçerli bağlamdaki mevcut filtreler filtre bağımsız değişkenlerindeki sütunlarla karşılaştırılır ve ifadeyi değerlendirmek için bağlam olarak bu bağımsız değişkenlerin kesişimi kullanılır. Herhangi bir sütun üzerindeki net etki, her iki bağımsız değişken kümesinin de geçerli olmasıdır: hem CALCULATE kullanılan filtre bağımsız değişkenleri hem de KEEPFILTER işlevinin bağımsız değişkenlerindeki filtreler. Başka bir deyişle, CALCULATE filtreler geçerli bağlamın yerini alırken, KEEPFILTERS geçerli bağlama filtreler ekler.
Bu işlev, hesaplanan sütunlarda veya satır düzeyi güvenlik (RLS) kurallarında kullanıldığında DirectQuery modunda kullanılmak üzere desteklenmez.
Örnek
Aşağıdaki örnek, KEEPFILTERS işlevinin bir CALCULATE veya CALCULATETABLE formülünün parçası olarak kullanımını gösteren bazı yaygın senaryolarda size yol gösterir.
İlk üç ifade, karşılaştırmalar için kullanılacak basit verileri elde eder:
Washington eyaleti için internet satışları.
Washington ve Oregon eyaletleri için İnternet Satışları (her iki eyalet de birleşik).
Washington eyaleti ve Britanya Kolumbiyası eyaleti için İnternet Satışları (her iki bölge birlikte).
Dördüncü ifade, Washington ve Oregon için İnternet Satışlarını hesaplarken, Washington ve Britanya Kolumbiyası filtresi uygulanır.
Sonraki ifade Washington ve Oregon için İnternet Satışlarını hesaplar ancak KEEPFILTERSkullanır; Washington ve British Columbia filtresi önceki bağlamın bir parçasıdır.
EVALUATE ROW(
"$$ in WA"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
)
, "$$ in WA and OR"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, "$$ in WA and BC"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA and OR ??"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
,'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA !!"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
, KEEPFILTERS('Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
)
Bu ifade AdventureWorks DW örnek veritabanına göre değerlendirildiğinde aşağıdaki sonuçlar elde edilir.
Sütun | Değer |
---|---|
[$$ in WA] |
$ 2,467,248,34 |
[$$ in WA and OR] |
$ 3,638,239,88 |
[$$ in WA and BC] |
$ 4,422,588,44 |
[$$ in WA and OR ??] |
$ 3,638,239,88 |
[$$ in WA !!] |
$ 2,467,248,34 |
Not
Yukarıdaki sonuçlar, eğitim amacıyla tek satır yerine bir tabloya biçimlendirilmiştir.
İlk olarak, [$$ in WA and OR ??]
ifadesini inceleyin. Dış CALCULATE ifadesi Washington ve British Columbia için bir filtre içerdiğinden, bu formülün Washington ve Oregon'daki satışların değerini nasıl döndürebileceğini merak edebilirsiniz. Yanıt olarak, CALCULATE varsayılan davranışı 'Geography'[State Province Code] içindeki dış filtreleri geçersiz kılar ve filtreler aynı sütuna uygulandığından kendi filtre bağımsız değişkenlerini kullanır.
Ardından [$$ in WA !!]
ifadesini inceleyin. Bağımsız değişken filtresi Oregon ve dış CALCULATE ifadesi Washington ve Britanya Kolumbiyası'nda bir filtre içerdiğinden, bu formülün Washington'daki satışların değerini nasıl döndürebileceğini ve başka hiçbir şey döndürmediğini merak edebilirsiniz. Bunun yanıtı, KEEPFILTERSCALCULATE varsayılan davranışını değiştirmesi ve ek bir filtre eklemesidir. Filtrelerin kesişimi kullanıldığından, artık dış filtre 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC")
'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR"
filtre bağımsız değişkenine eklenir. Her iki filtre de aynı sütuna uygulandığından, sonuçta elde edilen filtre 'Geography'[State Province Code]="WA"
ifade değerlendirilirken uygulanan filtredir.
İlgili içerik
İşlev