Fungsi IF dalam DAX Power BI

Bicara Jujur Tentang Fungsi IF di DAX: Bukan Sekadar Logika “Jika-Maka”

Kalau kita bicara soal Power BI, biasanya fungsi pertama yang kita cari saat mulai menulis formula DAX adalah IF. Wajar banget. Kebanyakan dari kita datang dari latar belakang Excel yang sudah mendarah daging dengan rumus =IF(A1>10, "Bagus", "Kurang"). Rasanya seperti bertemu kawan lama di tempat baru yang asing.

Tapi, sebagai orang yang sudah bertahun-tahun “berkelahi” dengan model data yang kompleks dan laporan yang lambatnya minta ampun, saya mau kasih sedikit rahasia: Fungsi IF di DAX itu mirip pisau dapur. Kalau dipakai buat potong bawang (logika sederhana), hasilnya cantik. Tapi kalau dipakai buat nebang pohon (logika ribuan baris data tanpa strategi), pisaunya patah, tangan kita juga capek.

Di artikel ini, saya nggak cuma mau bahas cara nulis sintaksnya—karena itu bisa dicari di dokumentasi resmi Microsoft dalam 5 detik. Saya mau berbagi pengalaman lapangan tentang kapan kita harus pakai IF, kapan harus lari darinya, dan bagaimana cara berpikir layaknya seorang Data Analyst yang efisien.

Membedah Logika IF: Mesin Keputusan Kita

Secara struktur, IF di DAX itu sangat lugas. Dia cuma butuh tiga hal: kondisi yang mau dicek, apa yang dilakukan kalau kondisi itu benar (TRUE), dan apa yang dilakukan kalau salah (FALSE).

IF(<logical_test>, <value_if_true>[, <value_if_false>])

Satu hal kecil yang sering dilupakan junior analyst adalah bagian value_if_false itu opsional. Kalau kita nggak isi, Power BI bakal memberikan hasil BLANK secara otomatis. Kedengarannya sepele, tapi dalam dunia visualisasi data, BLANK itu bisa jadi pedang bermata dua. Kadang kita mau lihat angka 0, tapi kadang BLANK justru lebih bersih untuk grafik kita.

Mari kita ambil contoh kasus nyata. Bayangkan Anda sedang memegang data penjualan retail. Atasan Anda ingin tahu mana transaksi yang dibilang “High Value” dan mana yang “Regular”.

Status Penjualan = IF([Total Sales] > 1000000, "High Value", "Regular")

Gampang, kan? Tapi tunggu dulu. Di sinilah letak perbedaan antara sekadar bisa DAX dan benar-benar paham DAX.

Context is King: IF di Calculated Column vs. Measure

Ini adalah jebakan Batman yang paling sering memakan korban. Menggunakan IF di Calculated Column dan Measure itu dua dunia yang berbeda total. Saya sering melihat teman-teman yang baru pindah dari Excel membuat kolom baru untuk setiap logika IF. Akhirnya? Ukuran file Power BI membengkak, dan performa laporannya jadi berat.

Kalau Anda pakai IF di Calculated Column, logika itu dihitung saat data di-refresh. Hasilnya disimpan secara permanen di memori (RAM). Kalau datanya ada 10 juta baris, maka ada 10 juta keputusan yang disimpan. Boros?

Sebaliknya, kalau Anda pakai IF di Measure, dia dihitung secara “on-the-fly” alias mendadak saat user klik slicer atau filter di laporan. Ini jauh lebih efisien untuk performa, tapi butuh pemahaman kuat tentang Filter Context.

Saran saya? Selalu coba buat logikanya di Measure dulu. Kalau memang benar-benar butuh logika tersebut untuk dijadikan slicer (filter di samping laporan), baru pertimbangkan buat di Calculated Column atau—lebih baik lagi—pindahkan logikanya ke Power Query (M Language) atau SQL sekalian. Biarkan DAX fokus ke kalkulasi yang dinamis saja.

Monster Bernama Nested IF (IF Bersarang)

Kita semua pernah melakukannya. Membuat rumus IF di dalam IF, yang di dalamnya ada IF lagi, sampai akhirnya kita sendiri pusing membaca tanda kurung tutupnya ada berapa. Misalnya, menentukan grading performa sales:

Grade = IF([Sales] > 100, "A", IF([Sales] > 80, "B", IF([Sales] > 60, "C", "D")))

Secara teknis, ini nggak salah. Jalan kok. Tapi kalau sudah masuk ke 10 kondisi? Selamat datang di neraka “Error: Too many arguments”.

Di lapangan, saya hampir nggak pernah pakai nested IF kalau kondisinya lebih dari dua. Kenapa? Karena DAX punya fungsi yang jauh lebih elegan namanya SWITCH. Coba bandingkan dengan ini:

Grade = 
SWITCH( TRUE(),
    [Sales] > 100, "A",
    [Sales] > 80, "B",
    [Sales] > 60, "C",
    "D"
)

Lebih enak dibaca, bukan? Seperti membaca daftar belanjaan. Menggunakan SWITCH(TRUE(), ...) adalah trik MVP yang wajib Anda kuasai. Ini membuat logika Anda lebih manusiawi dan mudah diperbaiki oleh rekan setim Anda di masa depan.

Logika Ganda: Menggabungkan Kekuatan dengan AND dan OR

Dunia nyata nggak sesederhana “jika ini maka itu”. Seringkali kondisinya lebih rewel. Misalnya: “Kalau penjualannya di atas 1 Milyar DAN dia pelanggan lama, kasih diskon tambahan.”

Di DAX, kita bisa pakai fungsi AND() dan OR(), tapi sejujurnya, jarang sekali praktisi lapangan yang pakai tulisan itu. Kami lebih suka pakai operator simbol karena lebih cepat diketik dan lebih bersih dilihat:

  • && untuk AND
  • || untuk OR

Contohnya begini:

Bonus = IF([Sales] > 1000000 && [CustomerYears] > 5, [Sales] * 0.1, 0)

Penggunaan simbol ini membuat kode kita terlihat lebih profesional dan “berbau” developer, meski sebenarnya kita cuma mau cari tahu siapa yang dapat bonus.

Hati-hati dengan Performa: Rahasia di Balik Layar

Nah, ini bagian yang jarang dibahas di tutorial dasar. IF itu adalah fungsi yang sifatnya strict. Artinya, Power BI harus mengevaluasi kondisi tersebut baris demi baris jika berada dalam fungsi iterasi (seperti SUMX, AVERAGEX, atau filter context yang padat).

Kadang, ada trik nakal untuk menghindari IF demi kecepatan. Misalnya, daripada nulis:

Hasil = IF([Total] > 0, [Total], 0)

Kita bisa pakai fungsi MAX:

Hasil = MAX(0, [Total])

Kenapa? Karena fungsi matematika seperti MAX seringkali dieksekusi lebih cepat oleh Storage Engine Power BI dibandingkan mesin logika IF. Memang bedanya mungkin cuma sepersekian milidetik, tapi kalau datanya jutaan, bedanya bisa terasa saat laporan di-load.

Kasus Error: DIVIDE vs IF

Ini dosa besar yang sering saya temukan saat melakukan audit laporan client. Menghitung persentase pertumbuhan tapi pakai IF untuk ngecek pembagi nol.

Jangan lakukan ini:
Growth = IF([Sales Last Year] <> 0, [Sales Growth] / [Sales Last Year], BLANK())

Kenapa? Karena DAX punya fungsi yang namanya DIVIDE. Fungsi ini sudah punya logika “IF” di dalamnya secara otomatis untuk menangani pembagian dengan nol (division by zero).

Gunakan ini:
Growth = DIVIDE([Sales Growth], [Sales Last Year])

Lebih aman, lebih bersih, dan performanya sudah dioptimalkan oleh Microsoft. Inilah bedanya orang yang cuma tahu fungsi dengan orang yang mengerti best practices.

Memanfaatkan IF untuk Interaktivitas Laporan

Power BI itu bukan cuma soal angka, tapi soal cerita. Dan IF bisa bikin cerita kita jadi lebih hidup melalui Dynamic Titles.

Pernah nggak lihat judul grafik yang berubah otomatis saat kita pilih kategori? Itu pakai IF. Misalnya kita punya slicer wilayah. Kita mau judul grafiknya jadi “Laporan Penjualan Wilayah X” atau “Laporan Penjualan Nasional” kalau nggak ada yang dipilih.

Judul Dinamis = 
IF(
    ISFILTERED('Wilayah'[NamaWilayah]),
    "Laporan Penjualan " & SELECTEDVALUE('Wilayah'[NamaWilayah]),
    "Laporan Penjualan Nasional"
)

Detail kecil seperti ini yang bikin klien atau atasan Anda bakal bilang, “Wah, laporannya canggih banget ya!” Padahal di baliknya cuma logika IF sederhana.

Kapan Harus Berhenti Pakai IF?

Meskipun kita lagi bahas IF, saya harus jujur: Terlalu banyak logika di level DAX itu pertanda model data Anda kurang sehat.

Kalau Anda harus menulis IF yang super panjang cuma untuk memperbaiki kategori produk yang salah ketik atau nggak konsisten di database, jangan lakukan itu di DAX. Perbaiki di Power Query. DAX itu diciptakan untuk analisis, bukan untuk bersih-bersih data (data cleaning).

Aturan emas saya: Kalau logikanya bersifat statis dan berlaku untuk seluruh baris data selamanya, taruh di Power Query. Kalau logikanya harus berubah-ubah tergantung apa yang diklik user, baru pakai DAX IF.

Penutup: Mentalitas Seorang Analis

Belajar IF di DAX itu cuma langkah awal. Jangan berhenti di situ. Pelajari bagaimana IF berinteraksi dengan CALCULATE, bagaimana dia berperilaku di dalam FILTER, dan yang paling penting, kapan Anda harus menggantinya dengan SWITCH atau DIVIDE.

Seorang analis yang hebat bukan dilihat dari seberapa kompleks rumus DAX-nya, tapi seberapa sederhana dia bisa memecahkan masalah yang rumit. Dan seringkali, kesederhanaan itu dimulai dari penggunaan fungsi IF yang tepat guna, bukan yang asal ada.

Jadi, besok-besok pas mau nulis IF, coba tanya diri sendiri dulu: “Bisa nggak ya ini dibikin lebih simpel pakai SWITCH?” atau “Perlu nggak ya logika ini saya bawa sampai ke visual?”. Kalau Anda sudah mulai bertanya begitu, selamat, Anda sudah satu langkah lebih dekat jadi ahli Power BI.

Leave a Reply