KEEPFILTERS

CALCULATE veya CALCULATETABLE işlevi değerlendirilirken filtrelerin nasıl uygulanacağını değiştirir.

Sözdizimi

KEEPFILTERS(<expression>)  

Parametreler

Süre Tanım
ifade Herhangi bir ifade.

Dönüş değeri

Değerler tablosu.

Açıklamalar

  • BU işlevlerin standart davranışını geçersiz kılmak için CALCULATE ve CALCULATETABLE işlevleri bağlamında KEEPFILTERS kullanırsınız.

  • Varsayılan olarak, CALCULATE gibi işlevlerdeki filtre bağımsız değişkenleri ifadenin değerlendirilmesi için bağlam olarak kullanılır ve CALCULATE için filtre bağımsız değişkenleri aynı sütunlar üzerinde var olan tüm filtrelerin yerini alır. 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ütunlardaki mevcut 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. KEEPFILTERS kullandığınızda, geçerli bağlamdaki tüm 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'da 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 filtreleri 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, CALCULATE veya CALCULATETABLE formülünün bir parçası olarak KEEPFILTERS işlevinin 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 KEEPFILTERS kullanı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 ve 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

Dekont

Yukarıdaki sonuçlar, eğitim amacıyla tek satır yerine bir tabloya biçimlendirilmiştir.

İlk olarak, [$$ in WA ve 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. Bunun yanıtı, CALCULATE işlevinin varsayılan davranışının 'Geography'[State Province Code] içindeki dış filtreleri geçersiz kılması ve filtreler aynı sütuna uygulandığından kendi filtre bağımsız değişkenlerini değiştirmesidir.

Ardından [ $$ in WA !!] ifadesini inceleyin. Bağımsız değişken filtresi Oregon ve dış CALCULATE ifadesi Washington ve British Columbia'da 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ı, KEEPFILTERS işlevinin CALCULATE işlevinin 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" || filtre bağımsız değişkenine eklendi 'Geography'[State Province Code]="OR",. Her iki filtre de aynı sütuna uygulandığından, sonuçta elde edilen 'Geography'[State Province Code]="WA" filtresi, ifade değerlendirilirken uygulanan filtredir.

Filtre işlevleri
CALCULATE işlevi
CALCULATETABLE işlevi