Bagikan melalui


KEEPFILTERS

Berlaku untuk: Kolom terhitung Tabel terhitung Ukur perhitungan Visual

Memodifikasi cara filter diterapkan saat mengevaluasi fungsi CALCULATE atau CALCULATETABLE.

Sintaks

KEEPFILTERS(<expression>)  

Parameter

Term Definisi
expression Ekspresi apa pun.

Nilai hasil

Tabel nilai.

Keterangan

  • Anda menggunakan KEEPFILTERS dalam konteks fungsi CALCULATE dan CALCULATETABLE, untuk mengambil alih perilaku standar fungsi tersebut.

  • Secara default, argumen filter dalam fungsi seperti CALCULATE digunakan sebagai konteks untuk mengevaluasi ekspresi, dan dengan argumen filter tersebut untuk CALCULATE menggantikan semua filter yang ada di atas kolom yang sama. Konteks baru yang dipengaruhi oleh argumen filter untuk CALCULATE hanya memengaruhi filter yang ada pada kolom yang disebutkan sebagai bagian dari argumen filter. Filter pada kolom selain yang disebutkan dalam argumen CALCULATE atau fungsi terkait lainnya tetap berlaku dan tidak diubah.

  • Fungsi KEEPFILTERS memungkinkan Anda untuk memodifikasi perilaku ini. Saat Anda menggunakan KEEPFILTERS, filter apa pun yang ada dalam konteks saat ini dibandingkan dengan kolom dalam argumen filter, dan persimpangan argumen tersebut digunakan sebagai konteks untuk mengevaluasi ekspresi. Efek bersih pada satu kolom adalah kedua set argumen berlaku: argumen filter yang digunakan dalam CALCULATE dan filter dalam argumen fungsi KEEPFILTER. Dengan kata lain, sedangkan filter CALCULATE menggantikan konteks saat ini, KEEPFILTERS menambahkan filter ke konteks saat ini.

  • Fungsi ini tidak didukung untuk digunakan dalam mode DirectQuery saat digunakan dalam kolom terhitung atau aturan keamanan tingkat baris (RLS).

Contoh

Contoh berikut membawa Anda melalui beberapa skenario umum yang menunjukkan penggunaan fungsi KEEPFILTERS sebagai bagian dari rumus CALCULATE atau CALCULATETABLE.

Tiga ekspresi pertama mendapatkan data sederhana yang akan digunakan untuk perbandingan:

  • Internet Sales untuk negara bagian Washington.

  • Internet Sales untuk negara bagian Washington dan Oregon (kedua negara bagian digabungkan).

  • Internet Sales untuk negara bagian Washington dan provinsi British Columbia (kedua wilayah digabungkan).

Ekspresi keempat menghitung Internet Sales untuk Washington dan Oregon, sementara filter untuk Washington dan British Columbia diterapkan.

Ekspresi berikutnya menghitung Internet Sales untuk Washington dan Oregon tetapi menggunakan KEEPFILTERS; filter untuk Washington dan British Columbia adalah bagian dari konteks sebelumnya.

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"  
      )  
)  

Ketika ekspresi ini dievaluasi terhadap database sampel AdventureWorks DW, hasil berikut diperoleh.

Kolom Nilai
[$$ dalam WA] $ 2.467.248,34
[$$ dalam WA dan OR] $ 3.638.239,88
[$$ dalam WA dan SM] $ 4.422.588,44
[$$ dalam WA dan OR ??] $ 3.638.239,88
[$$ dalam WA !!] $ 2.467.248,34

Catatan

Hasil di atas diformat ke tabel, bukan satu baris, untuk tujuan pendidikan.

Pertama, periksa ekspresi, [$$ dalam WA dan OR ??]. Anda mungkin bertanya-tanya bagaimana rumus ini dapat mengembalikan nilai untuk penjualan di Washington dan Oregon, karena ekspresi CALCULATE luar menyertakan filter untuk Washington dan British Columbia. Jawabannya adalah bahwa perilaku default CALCULATE mengambil alih filter luar di 'Geography'[State Province Code] dan menggantikan argumen filternya sendiri, karena filter berlaku untuk kolom yang sama.

Selanjutnya, periksa ekspresi, [$$ di WA !!]. Anda mungkin bertanya-tanya bagaimana rumus ini dapat mengembalikan nilai untuk penjualan di Washington dan tidak ada yang lain, karena filter argumen mencakup Oregon dan ekspresi CALCULATE luar menyertakan filter di Washington dan British Columbia. Jawabannya adalah bahwa KEEPFILTERS memodifikasi perilaku default CALCULATE dan menambahkan filter tambahan. Karena persimpangan filter digunakan, sekarang filter luar 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") ditambahkan ke argumen filter 'Geography'[State Province Code]="WA" || 'Geografi'[Kode Provinsi Negara]="OR",. Karena kedua filter berlaku untuk kolom yang sama, filter yang dihasilkan 'Geography'[State Province Code]="WA" adalah filter yang diterapkan saat mengevaluasi ekspresi.

Fungsi filter
Fungsi CALCULATE
Fungsi CALCULATETABLE