DAX CALCULATE: Fungsi Paling Penting di Power BI
TL;DR
CALCULATE adalah fungsi DAX yang ngevaluasi sebuah perhitungan sambil ngubah konteks filter di sekitarnya. Sintaksnya CALCULATE(ekspresi, filter1, filter2, ...), di mana ekspresi biasanya sebuah measure dan filter nentuin data mana yang dihitung. Fungsi ini dasar buat hampir semua perhitungan lanjutan di Power BI, mulai dari total bersyarat, persen dari total, sampai perbandingan antar periode.
CALCULATE adalah fungsi DAX yang ngevaluasi sebuah perhitungan sambil ngubah konteks filter di sekitarnya. Ini fungsi yang bikin Power BI bisa hitung total bersyarat, persen dari total, dan perbandingan antar periode.
Kalau kamu cuma sempat belajar satu fungsi DAX, pilih CALCULATE. Hampir semua perhitungan lanjutan di Power BI berdiri di atasnya.
Di bawah aku tunjukin sintaksnya, contoh dari yang paling gampang sampai persen dari total, plus jebakan yang sering bikin hasil salah.
Apa itu fungsi CALCULATE di DAX?
CALCULATE adalah fungsi DAX yang ngitung sebuah ekspresi dengan konteks filter yang kamu tentukan. Konteks filter itu kumpulan filter aktif yang nentuin baris data mana yang ikut dihitung. CALCULATE bisa nambah, ngganti, atau ngilangin filter, jadi dia dipakai buat hampir semua measure lanjutan.
Buat paham CALCULATE, kamu perlu kenal dulu filter context, yaitu kondisi filter yang berlaku di tiap sel visual. CALCULATE yang ngizinin kamu ngutak-atik konteks itu.
Gimana sintaks CALCULATE?
Sintaks CALCULATE terdiri dari satu ekspresi wajib, diikuti nol atau lebih filter. Ekspresinya biasanya measure yang udah ada, dan filternya nentuin data mana yang dihitung. Filter dievaluasi dulu, baru ekspresinya dihitung di konteks baru.
CALCULATE( <ekspresi>, <filter1>, <filter2>, ... )
-- Contoh: total penjualan cuma untuk kategori Elektronik
Penjualan Elektronik =
CALCULATE(
[Total Penjualan],
Produk[Kategori] = "Elektronik"
)
Di contoh itu, [Total Penjualan] adalah measure yang udah kamu bikin, misalnya SUM(Penjualan[Total]). Filter Produk[Kategori] = "Elektronik" maksa perhitungan cuma ngitung baris kategori Elektronik, apa pun yang lagi kepilih di visual.
Contoh CALCULATE dengan satu filter
Mulai dari measure dasar dulu, baru bungkus pakai CALCULATE. Measure dasar ngitung total apa adanya, sedangkan versi CALCULATE-nya maksa filter tertentu. Ini pola paling umum di dashboard.
-- Measure dasar
Total Penjualan = SUM(Penjualan[Total])
-- Total penjualan bulan berjalan yang lunas saja
Penjualan Lunas =
CALCULATE(
[Total Penjualan],
Penjualan[Status] = "Lunas"
)
Sekarang Penjualan Lunas selalu ngitung transaksi berstatus lunas, walau visualnya lagi nampilin semua status. Ini beda sama filter di visual, karena logikanya nempel di measure dan konsisten di mana pun dipakai.
CALCULATE dengan banyak filter
Kamu bisa tumpuk beberapa filter dalam satu CALCULATE. Semua filter digabung dengan logika DAN, jadi cuma baris yang lolos semua syarat yang dihitung. Ini berguna buat measure yang spesifik, misalnya penjualan satu kategori di satu kota.
Penjualan Elektronik Jakarta =
CALCULATE(
[Total Penjualan],
Produk[Kategori] = "Elektronik",
Toko[Kota] = "Jakarta"
)
Hasilnya total penjualan yang kategorinya Elektronik sekaligus tokonya di Jakarta. Tambahin filter sebanyak yang kamu butuh, tinggal pisahin pakai koma.
CALCULATE dan ALL untuk persen dari total
Salah satu pemakaian CALCULATE paling berguna adalah bikin persen dari total. Caranya, hitung total per baris, lalu bagi dengan total keseluruhan yang filter barisnya dibuang pakai ALL. Fungsi ALL ngilangin filter dari tabel yang disebut, jadi penyebutnya tetap total besar.
% dari Total =
DIVIDE(
[Total Penjualan],
CALCULATE( [Total Penjualan], ALL(Produk) )
)
Di visual per kategori, pembilangnya ikut baris (misal penjualan Elektronik), tapi penyebutnya total semua kategori karena filter Produk dibuang. Hasilnya proporsi tiap kategori terhadap keseluruhan. Pakai DIVIDE biar aman dari error bagi nol.
Contoh kasus: kontribusi kategori mega_retail
Di dashboard mega_retail, aku bikin measure % dari Total buat lihat kontribusi tiap kategori. Dari total penjualan Rp2,4 miliar sebulan, kategori Elektronik nyumbang 38%, disusul Fashion 22%, dan sisanya tersebar di kategori kecil.
Tanpa CALCULATE dan ALL, angka persennya bakal selalu 100% di tiap baris, karena penyebutnya ikut kefilter. Begitu ALL dipasang di penyebut, proporsinya baru keluar benar. Dari satu measure ini, tim langsung tau kategori mana yang paling narik omzet.
Kesalahan umum
- Lupa ALL di penyebut. Persen dari total jadi 100% terus karena filter baris ikut kebawa.
- Nulis ekspresi mentah, bukan measure. Bisa jalan, tapi bikin susah dirawat. Pisahin measure dasar biar rapi.
- Ngira CALCULATE nambah filter padahal ngganti. Filter di CALCULATE ngganti filter kolom yang sama dari konteks luar, bukan numpuk di atasnya.
FAQ
Kenapa CALCULATE disebut fungsi terpenting di DAX?
Karena hampir semua perhitungan lanjutan di Power BI butuh ngatur konteks filter, dan CALCULATE satu-satunya fungsi yang bisa ngelakuin itu secara langsung. Perbandingan antar periode, persen dari total, total bersyarat, semuanya berdiri di atas CALCULATE. Begitu kamu paham cara kerjanya, banyak fungsi DAX lain jadi lebih gampang dicerna karena polanya mirip. Itu kenapa banyak orang nyaranin belajar CALCULATE lebih dulu.
Apa beda CALCULATE dan filter biasa di visual?
Filter di visual cuma berlaku di visual itu dan gampang keganti kalau kamu ubah tampilan. Filter di dalam CALCULATE nempel di measure, jadi logikanya konsisten di mana pun measure itu dipakai. Kalau kamu butuh angka yang selalu ngitung kondisi tertentu, misalnya cuma transaksi lunas, taruh filternya di CALCULATE. Filter visual cocok buat eksplorasi, CALCULATE buat logika yang tetap.
Kapan pakai ALL di dalam CALCULATE?
Pakai ALL waktu kamu mau ngabaikan filter tertentu, paling sering buat bikin penyebut total di perhitungan persen. ALL ngilangin filter dari kolom atau tabel yang kamu sebut, jadi hasilnya nggak ikut kefilter konteks baris. Selain buat persen dari total, ALL juga berguna buat measure yang butuh nilai keseluruhan sebagai pembanding, kayak rata-rata semua produk dibanding satu produk.
Apakah CALCULATE bisa dipakai buat perbandingan antar waktu?
Bisa, dan ini salah satu pemakaian paling umum. Kamu gabungin CALCULATE sama fungsi time intelligence kayak DATEADD atau SAMEPERIODLASTYEAR buat geser konteks tanggal. Contohnya, penjualan tahun lalu dihitung dengan CALCULATE plus SAMEPERIODLASTYEAR di dalam filternya. Dari situ kamu bisa bikin measure pertumbuhan tahun ke tahun cuma dengan bagi penjualan sekarang ke penjualan periode lalu.
Bikin dashboard yang beneran menjawab
Intinya: CALCULATE ngevaluasi measure sambil ngubah konteks filter, dan itu fondasi buat total bersyarat, persen dari total, sampai perbandingan antar periode. Kuasai CALCULATE plus ALL, dan sebagian besar DAX lanjutan jadi lebih masuk akal.
Skill DAX ini juga yang naikin nilai kamu di pasar kerja. Lihat gaji BI Developer di Indonesia buat gambarannya, dan kalau kamu butuh nyiapin data sebelum masuk Power BI, latih SQL buat metrik kayak conversion rate.
Detail resmi fungsi ini ada di dokumentasi DAX CALCULATE Microsoft.
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 FILTER: Menyaring Data dalam Perhitungan
FILTER di DAX nyaring baris sebelum dihitung. Ini cara pakainya bareng CALCULATE, kapan perlu, dan bedanya sama filter boolean biasa di Power BI.