DAX FILTER: Menyaring Data dalam Perhitungan
TL;DR
FILTER di DAX adalah fungsi yang ngembaliin tabel berisi baris yang lolos kondisi tertentu. Dia jarang dipakai sendirian, dan hampir selalu dibungkus CALCULATE atau iterator seperti SUMX buat nyaring data sebelum dihitung. Pakai FILTER waktu kondisimu butuh perbandingan measure atau logika yang nggak bisa ditulis sebagai filter boolean sederhana.
FILTER di DAX adalah fungsi yang ngembaliin tabel berisi cuma baris yang lolos kondisi tertentu. Dia jarang dipakai sendirian, dan hampir selalu dibungkus CALCULATE atau iterator kayak SUMX buat nyaring data sebelum dihitung.
Kalau kamu udah bisa bikin measure penjualan total, langkah berikutnya biasanya nyaring. Total penjualan tapi cuma buat kota Jakarta. Total qty tapi cuma produk yang laku di atas 1.000 unit.
FILTER kelihatan sederhana, tapi sering salah pakai. Salah pakai itu yang bikin report kamu lambat.
Apa itu FILTER di DAX?
FILTER adalah fungsi DAX yang nerima sebuah tabel dan sebuah kondisi, lalu ngembaliin tabel baru berisi cuma baris yang memenuhi kondisi itu. Hasilnya tabel, bukan angka. Makanya FILTER hampir selalu jadi input buat fungsi lain yang butuh tabel tersaring, kayak CALCULATE.
Fungsi ini bagian dari cara sebuah measure ngitung angka di konteks tertentu. Kalau kamu masih baru di DAX, mulai dulu dari DAX Power BI dasar biar konsep measure-nya nyantol.
Gimana sintaks FILTER?
Sintaksnya cuma dua bagian: tabel dan kondisi.
FILTER(<tabel>, <kondisi>)
Tabelnya bisa nama tabel langsung, atau hasil fungsi tabel lain. Kondisinya ekspresi yang ngasih TRUE atau FALSE per baris. Contoh paling sederhana, nyaring baris penjualan di atas 100 unit:
FILTER(Penjualan, Penjualan[qty] > 100)
Sendirian, kode ini cuma ngasih tabel. Belum ada angka yang keluar. Angkanya muncul setelah dibungkus fungsi lain.
Kenapa FILTER dipakai bareng CALCULATE?
CALCULATE ngitung sebuah measure di konteks filter yang kamu tentuin. FILTER nyediain konteks filter itu dalam bentuk tabel tersaring. Digabung, kamu bisa ngitung total cuma buat baris yang lolos kondisi.
Omzet Jakarta =
CALCULATE(
SUM(Penjualan[total]),
FILTER(Penjualan, Penjualan[kota] = "Jakarta")
)
Measure ini ngitung total penjualan, tapi cuma dari baris yang kotanya Jakarta. FILTER nyaring dulu, CALCULATE ngitung sisanya.
Kekuatan FILTER kelihatan waktu kondisimu ngebandingin sebuah measure, bukan cuma kolom:
Produk Laris =
CALCULATE(
[Total Qty],
FILTER(
Produk,
[Total Qty] > 1000
)
)
Filter boolean biasa nggak bisa ngebaca measure kayak [Total Qty]. Di sinilah FILTER wajib.
Gimana cara pakai FILTER langkah demi langkah?
- Pastikan kamu udah punya measure dasar, misalnya Total Penjualan = SUM(Penjualan[total]).
- Tentuin baris mana yang mau disaring. Contohnya cuma transaksi di atas Rp1 juta.
- Bungkus tabelnya dengan FILTER dan tulis kondisinya.
- Taruh hasil FILTER sebagai argumen kedua di CALCULATE.
- Cek hasilnya di visual, bandingin dengan measure total tanpa filter.
Omzet Transaksi Besar =
CALCULATE(
[Total Penjualan],
FILTER(
Penjualan,
Penjualan[total] > 1000000
)
)
FILTER vs argumen filter biasa di CALCULATE
Nggak semua saringan butuh FILTER. Buat kondisi sederhana ke satu kolom, filter boolean lebih cepat dan lebih gampang dibaca.
| Cara | Contoh | Kapan pakai | Kecepatan |
|---|---|---|---|
| Filter boolean | CALCULATE([Total], Penjualan[kota] = "Jakarta") | Kondisi sederhana ke satu kolom | Cepat |
| Fungsi FILTER | CALCULATE([Total], FILTER(Produk, [Total Qty] > 1000)) | Kondisi butuh measure atau logika kompleks | Lebih lambat |
Aturan praktisnya: kalau bisa ditulis sebagai filter boolean, pakai itu. FILTER cuma waktu kondisimu butuh measure atau logika lintas kolom.
Contoh kasus: cabang untung Toko Berkah
Toko Berkah, jaringan UMKM kelontong di dataset latihan ngulikdata, punya 12 cabang dengan data penjualan dan margin. Tugasnya ngitung omzet cuma dari cabang yang marginnya di atas 15%.
Omzet Cabang Untung =
CALCULATE(
[Total Penjualan],
FILTER(
Cabang,
[Margin Persen] > 0.15
)
)
Hasilnya bikin kaget pemilik. Dari 12 cabang, cuma 5 yang marginnya lewat 15%. Tapi 5 cabang itu nyumbang 71% dari total omzet jaringan. Tujuh cabang sisanya rame tapi tipis untungnya.
Tanpa FILTER yang ngebandingin measure margin, insight ini susah muncul di satu measure. Angka kayak gini yang bikin dashboard jadi alat keputusan, bukan cuma pajangan. Kalau mau rapiin dashboard-nya, cek Power BI untuk pemula.
Kesalahan umum saat pakai FILTER
1. Pakai FILTER buat kondisi sederhana
Nyaring satu kolom pakai FILTER itu mubazir dan lebih lambat. CALCULATE([Total], Penjualan[kota] = "Jakarta") udah cukup. Simpan FILTER buat kondisi yang beneran butuh dia.
2. Ngasih seluruh tabel fakta ke FILTER
FILTER ngevaluasi tiap baris. Kalau kamu kasih tabel jutaan baris padahal cukup nyaring di tabel dimensi kecil, report jadi berat. Saring di tabel yang paling kecil.
3. Lupa FILTER ngembaliin tabel, bukan angka
Naruh FILTER langsung sebagai measure bakal error. Dia harus dibungkus CALCULATE, SUMX, atau COUNTROWS dulu biar jadi angka.
4. Nulis kondisi measure di filter boolean
CALCULATE([Total], [Total Qty] > 1000) bakal error. Kondisi yang ngebandingin measure wajib pakai FILTER.
Buat detail resmi tiap argumen, cek dokumentasi fungsi FILTER dari Microsoft.
FAQ
Apa beda FILTER dan filter boolean biasa di CALCULATE?
Filter boolean ditulis langsung, misalnya CALCULATE([Total], Penjualan[kota] = "Jakarta"). FILTER dibungkus jadi fungsi tabel, misalnya CALCULATE([Total], FILTER(Penjualan, [Measure] > 100)). Boolean lebih cepat dan cukup buat kondisi sederhana ke satu kolom. FILTER perlu waktu kondisimu ngebandingin sebuah measure atau butuh logika yang nggak bisa ditulis sebagai perbandingan kolom biasa.
Kenapa FILTER-ku lambat?
FILTER ngejalanin kondisi ke tiap baris tabel yang kamu kasih. Kalau kamu ngasih tabel besar atau seluruh tabel fakta padahal cukup satu kolom, dia ngevaluasi jutaan baris. Perkecil tabelnya, atau ganti ke filter boolean kalau kondisimu sederhana. Bungkus FILTER cuma di kolom atau tabel dimensi yang kecil biar mesinnya nggak kerja berlebihan.
Bisa nggak pakai FILTER dengan banyak kondisi?
Bisa. Gabung kondisi pakai operator && buat AND dan || buat OR di dalam FILTER. Contohnya FILTER(Penjualan, Penjualan[kota] = "Jakarta" && Penjualan[qty] > 10). Buat kondisi yang beda tabel atau beda measure, kamu bisa juga numpuk beberapa FILTER sebagai argumen terpisah di dalam CALCULATE.
FILTER ngembaliin tabel atau angka?
FILTER selalu ngembaliin tabel, bukan angka. Itu sebabnya kamu nggak bisa taruh FILTER langsung sebagai measure. Dia harus jadi input buat fungsi yang nerima tabel, kayak CALCULATE, SUMX, atau COUNTROWS. Fungsi pembungkus itu yang ngubah tabel tersaring jadi satu angka buat ditampilin di visual.
Kapan aku harus pakai FILTER?
Pakai FILTER waktu kondisimu ngebandingin measure, misalnya nyaring produk yang total qty-nya di atas 1.000. Boolean biasa nggak bisa ngebaca measure. Pakai juga waktu logikanya kompleks atau lintas kolom. Buat kondisi sederhana ke satu kolom, cukup filter boolean karena lebih cepat dan lebih gampang dibaca.
Penutup
- FILTER ngembaliin tabel berisi baris yang lolos kondisi, jadi harus dibungkus CALCULATE atau iterator.
- Pakai FILTER waktu kondisimu butuh measure atau logika kompleks. Selain itu, filter boolean lebih cepat.
- Saring di tabel sekecil mungkin biar report nggak berat.
Coba sekarang: ambil satu measure total di report kamu, lalu bikin versi tersaringnya pakai FILTER. Bandingin angkanya di visual yang sama.
Habis ini, lanjut ke Power Query di Power BI buat rapiin data sebelum masuk ke measure.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
DAX RELATED: Ambil Data dari Tabel Lain
Fungsi RELATED di DAX narik nilai dari tabel lain lewat relationship. Ini cara pakainya, syarat relasinya, dan bedanya dengan LOOKUPVALUE.
DAX SUMX: Menjumlah per Baris di Power BI
SUMX ngitung sesuatu di tiap baris dulu, baru dijumlah. Ini cara pakainya di Power BI, bedanya sama SUM, dan kapan kamu wajib pilih SUMX.
DAX CALCULATE: Fungsi Paling Penting di Power BI
Kalau cuma boleh belajar satu fungsi DAX, pilih CALCULATE. Fungsi ini yang ngizinin kamu ubah konteks filter dan bikin perhitungan lanjutan di Power BI. Ini cara pakainya.