Mengubah konteks filter
Anda bisa menggunakan CALCULATE
fungsi DAX untuk mengubah konteks filter dalam rumus Anda. Sintaks untuk fungsi CALCULATE adalah sebagai berikut:
CALCULATE(<expression>, [[<filter1>], <filter2>]…)
Fungsi ini memerlukan passing dalam ekspresi yang mengembalikan nilai skalar dan filter sebanyak yang Anda butuhkan. Ekspresi dapat menjadi ukuran (yang merupakan ekspresi bernama) atau ekspresi apa pun yang dapat dievaluasi dalam konteks filter.
Filter dapat berupa ekspresi Boolean atau ekspresi tabel. Dimungkinkan juga untuk meneruskan fungsi modifikasi filter yang memberikan kontrol tambahan saat Anda memodifikasi konteks filter.
Saat Anda memiliki beberapa filter, filter dievaluasi dengan menggunakan AND
operator logis, yang berarti bahwa semua kondisi harus TRUE
pada saat yang sama.
Catatan
Fungsi CALCULATETABLE
DAX melakukan fungsionalitas CALCULATE
yang sama persis dengan fungsi, kecuali memodifikasi konteks filter yang diterapkan ke ekspresi yang mengembalikan objek tabel. Dalam modul ini, penjelasan dan contoh menggunakan CALCULATE
fungsi , tetapi perlu diingat bahwa skenario ini juga dapat berlaku untuk CALCULATETABLE
fungsi .
Menerapkan filter ekspresi Boolean
Filter ekspresi Boolean adalah ekspresi yang mengevaluasi ke TRUE
atau FALSE
. Filter Boolean harus mematuhi aturan berikut:
- Mereka hanya dapat mereferensikan satu kolom.
- Mereka tidak dapat mereferensikan langkah-langkah.
- Mereka tidak dapat menggunakan fungsi yang memindai atau mengembalikan tabel yang menyertakan fungsi agregasi seperti
SUM
.
Dalam contoh ini, Anda akan membuat ukuran. Pertama, unduh dan buka file Adventure Works DW 2020 M06.pbix . Kemudian tambahkan pengukuran berikut ke tabel Penjualan yang memfilter pengukuran Pendapatan dengan menggunakan filter ekspresi Boolean untuk produk merah.
Revenue Red = CALCULATE([Revenue], 'Product'[Color] = "Red")
Tambahkan pengukuran Pendapatan Merah ke visual tabel yang ditemukan di Halaman 1 laporan.
Dalam contoh berikutnya, pengukuran berikut memfilter ukuran Pendapatan menurut beberapa warna. Perhatikan penggunaan IN
operator diikuti dengan daftar nilai warna.
Revenue Red or Blue = CALCULATE([Revenue], 'Product'[Color] IN {"Red", "Blue"})
Ukuran berikut memfilter pengukuran Pendapatan berdasarkan produk yang mahal. Produk mahal adalah produk dengan harga daftar lebih besar dari USD 1000.
Revenue Expensive Products = CALCULATE([Revenue], 'Product'[List Price] > 1000)
Menerapkan filter ekspresi tabel
Filter ekspresi tabel menerapkan objek tabel sebagai filter. Ini bisa menjadi referensi ke tabel model; namun, kemungkinan fungsi DAX yang mengembalikan objek tabel.
Umumnya, Anda akan menggunakan FILTER
fungsi DAX untuk menerapkan kondisi filter yang kompleks, termasuk yang tidak dapat ditentukan oleh ekspresi filter Boolean. Fungsi ini FILTER
diklasifikasikan sebagai fungsi iterator, sehingga Anda akan meneruskan ekspresi tabel, atau tabel, dan ekspresi untuk dievaluasi untuk setiap baris tabel tersebut.
Fungsi mengembalikan FILTER
objek tabel dengan struktur yang sama persis dengan yang diteruskan tabel. Barisnya adalah subset dari baris yang diteruskan, yang berarti baris di mana ekspresi dievaluasi sebagai TRUE
.
Contoh berikut menunjukkan ekspresi filter tabel yang menggunakan FILTER
fungsi :
Revenue High Margin Products =
CALCULATE(
[Revenue],
FILTER(
'Product',
'Product'[List Price] > 'Product'[Standard Cost] * 2
)
)
Dalam contoh ini, FILTER
fungsi memfilter semua baris tabel Produk yang berada dalam konteks filter. Setiap baris untuk produk di mana harga daftarnya melebihi dua kali lipat biaya standarnya ditampilkan sebagai baris tabel yang difilter. Oleh karena itu, ukuran Pendapatan dievaluasi untuk semua produk yang dikembalikan oleh FILTER
fungsi .
Semua ekspresi filter yang diteruskan ke CALCULATE
fungsi adalah ekspresi filter tabel. Ekspresi filter Boolean adalah notasi singkatan untuk meningkatkan pengalaman menulis dan membaca. Secara internal, Microsoft Power BI menerjemahkan ekspresi filter Boolean ke ekspresi filter tabel, yang merupakan caranya menerjemahkan definisi pengukuran Revenue Red Anda.
Revenue Red =
CALCULATE(
[Revenue],
FILTER(
'Product',
'Product'[Color] = "Red"
)
)
Perilaku filter
Dua kemungkinan hasil standar terjadi saat Anda menambahkan ekspresi filter ke CALCULATE
fungsi:
- Jika kolom (atau tabel) tidak dalam konteks filter, filter baru akan ditambahkan ke konteks filter untuk mengevaluasi
CALCULATE
ekspresi. - Jika kolom (atau tabel) sudah dalam konteks filter, filter yang ada akan ditimpa oleh filter baru untuk mengevaluasi
CALCULATE
ekspresi.
Contoh berikut menunjukkan cara kerja menambahkan ekspresi filter ke CALCULATE
fungsi.
Catatan
Di setiap contoh, tidak ada filter yang diterapkan ke visual tabel.
Seperti dalam aktivitas sebelumnya, pengukuran Pendapatan Merah ditambahkan ke visual tabel yang mengelompokkan menurut wilayah dan menampilkan pendapatan.
Karena tidak ada filter yang diterapkan pada kolom Warna dalam tabel Produk , evaluasi pengukuran menambahkan filter baru untuk memfilter konteks. Pada baris pertama, nilai $2.681.324,79 adalah untuk produk merah yang dijual di wilayah Australia.
Mengalihkan kolom pertama visual tabel dari Wilayah ke Warna akan menghasilkan hasil yang berbeda karena kolom Warna dalam tabel Produk sekarang dalam konteks filter.
Rumus pengukuran Pendapatan Merah mengevaluasi pengukuran Pendapatan dengan menambahkan filter pada kolom Warna (ke merah) dalam tabel Produk . Akibatnya, dalam visual ini yang mengelompokkan menurut warna, rumus pengukuran menimpa konteks filter dengan filter baru.
Hasil ini mungkin atau mungkin bukan yang Anda inginkan. Unit berikutnya memperkenalkan KEEPFILTERS
fungsi DAX, yang merupakan fungsi modifikasi filter yang dapat Anda gunakan untuk mempertahankan filter daripada menimpanya.