Kursus
Fungsi CALCULATE() bisa dibilang merupakan salah satu fungsi DAX Power BI yang paling penting (dan paling populer). Fungsinya mudah digunakan dan sangat serbaguna, memungkinkan Anda memperluas analisis data dan mengembangkan laporan Power BI yang lebih bernilai.
Tutorial ini berfokus pada apa itu fungsi CALCULATE() dan cara menggunakannya, dengan asumsi Anda sudah familier dengan dasar-dasar Power BI dan DAX.
Apa itu Fungsi Calculate() di Power BI?
Menurut dokumentasi Microsoft Power BI, fungsi CALCULATE() merupakan bagian dari kategori fungsi filter dan didefinisikan sebagai "mengevaluasi sebuah ekspresi dalam konteks filter yang diubah." Ekspresi pada dasarnya adalah sebuah measure dan mencakup fungsi seperti SUM(), AVERAGE(), dan COUNT(). Ekspresi ini dievaluasi dalam konteks satu atau lebih filter.
Seperti yang mungkin Anda ketahui, filter juga dapat diterapkan pada laporan Power BI hanya dengan menambahkan slicer tanpa membuat measure yang menggunakan fungsi CALCULATE() sama sekali. Namun, ada banyak kasus penggunaan di mana fungsi CALCULATE() lebih tepat. Fungsi ini sangat bermanfaat saat digunakan sebagai komponen dari fungsi lain. Kita akan melihat cara kerjanya pada contoh di bawah untuk menghitung persentase dari total.
Sintaks Dasar DAX Calculate()
Sintaks dasar DAX untuk fungsi CALCULATE() adalah:
CALCULATE( <expression> [, <filter1> [, <filter2> [, ...]]])
Fungsi CALCULATE() terdiri dari 2 komponen kunci:
-
Expression - ini adalah komponen agregasi yang dibangun seperti measure menggunakan fungsi seperti
SUM(),AVERAGE(), danCOUNT(). -
Filters - komponen ini memungkinkan Anda menentukan satu atau lebih filter yang mengendalikan konteks agregasi.
Ada 3 jenis filter yang dapat digunakan dalam fungsi CALCULATE():
-
Ekspresi filter boolean - ini adalah filter sederhana di mana hasilnya harus
TRUEatauFALSE. -
Ekspresi filter tabel - ini adalah filter yang lebih kompleks di mana hasilnya berupa tabel.
-
Fungsi modifikasi filter - filter seperti
ALLdanKEEPFILTERStermasuk dalam kategori ini dan memberikan kontrol lebih atas konteks filter yang ingin Anda terapkan.
Anda dapat menambahkan beberapa filter ke komponen filter pada fungsi CALCULATE() dengan memisahkan setiap filter menggunakan koma. Semua filter dievaluasi bersama-sama dan urutannya tidak berpengaruh.
Anda dapat mengendalikan cara filter dievaluasi dengan menggunakan operator logika. Jika Anda ingin semua kondisi dievaluasi sebagai TRUE maka Anda dapat menggunakan AND (&&). Ini juga merupakan perilaku default dari filter seperti disebutkan di atas. Alternatifnya, dengan operator OR (||), setidaknya satu kondisi harus dievaluasi sebagai TRUE agar menghasilkan keluaran.
Cara Menggunakan Power BI Calculate()
Untuk menggunakan CALCULATE(), cukup tambahkan sebuah measure ke tabel Anda. Anda dapat melakukannya dengan menavigasi ke tab Modeling pada ribbon dan memilih New measure.

Memilih New measure di tab Modeling Power BI. Gambar oleh Penulis
Di bawah ini adalah contoh sederhana fungsi CALCULATE() yang menggunakan SUM() untuk mencari total pendapatan dan memfilter Country = United Kingdom. Kita akan membahas contoh ini lagi secara lebih rinci di akhir tutorial.
UK Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
'Online Retail'[Country] = "United Kingdom")
Saat dilihat dalam tabel, kita dapat melihat bahwa measure UK Revenue hanya menerapkan filter untuk Country selain konteks filter yang sudah ada di tabel untuk Month. Menggunakan fungsi CALCULATE() dengan cara ini memberi kita kontrol yang lebih rinci atas jenis informasi yang ditampilkan dalam visual kita.
Tabel Revenue di Power BI. Gambar oleh Penulis
Satu hal penting yang perlu diingat saat membuat measure adalah mengikuti praktik pemodelan data yang baik, khususnya dalam hal kecepatan dan pengoptimalan kueri Anda. Karena hal ini, beberapa penggunaan fungsi CALCULATE() lebih cepat atau lebih tepat dibanding yang lain.
Misalnya, dokumentasi Microsoft merekomendasikan agar Anda menghindari penggunaan fungsi FILTER() sebagai argumen untuk fungsi lain (seperti dalam fungsi CALCULATE()). Sebagai gantinya, lebih baik menggunakan ekspresi boolean jika memungkinkan karena ekspresi tersebut secara eksplisit dioptimalkan untuk tujuan ini.
Pada contoh di atas kita menggunakan ekspresi boolean untuk menentukan filter kita untuk Country = United Kingdom. Ini adalah pendekatan yang lebih cepat dan lebih optimal. Di sisi lain, berikut adalah contoh fungsi FILTER() di mana kita mendapatkan hasil yang sama, tetapi perhitungannya lebih lambat:
UK Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
FILTER('Online Retail',
'Online Retail'[Country] = "United Kingdom")
Contoh Fungsi Power BI Calculate()
Menggunakan dataset e-commerce dunia nyata, kita akan mengeksplorasi beberapa cara kunci bagaimana fungsi CALCULATE() dapat digunakan untuk menyelesaikan masalah bisnis. Untuk mengikuti tutorial ini, Anda dapat mengakses dataset e-commerce yang dihosting di DataLab.
Dataset ini berisi informasi tentang setiap pembelian yang dilakukan pelanggan: negara asal pembelian, deskripsi produk, tanggal dan waktu pembelian, serta kuantitas dan harga tiap produk yang dibeli.
Kita akan menjawab pertanyaan-pertanyaan berikut dengan bantuan fungsi CALCULATE():
- Bagaimana perbandingan total pendapatan bulanan di UK dengan semua negara lainnya?
- Berapa persentase dari total pendapatan yang berasal dari UK?
- Berapa pendapatan kumulatif harian?
Bagaimana perbandingan total pendapatan bulanan di UK dengan semua negara lainnya?
Untuk menjawab pertanyaan ini, kita perlu membuat dua measure menggunakan fungsi CALCULATE(). Pertama, kita menggunakan filter boolean sederhana untuk membuat measure yang mengembalikan total pendapatan (menggunakan fungsi SUM()) di UK:
UK Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
'Online Retail'[Country] = "United Kingdom")
Selanjutnya, kita membuat measure serupa tetapi kali ini menggunakan fungsi FILTER(). Ekspresi filter ini menelusuri setiap baris kolom Country dan mengembalikan tabel yang berisi baris-baris yang cocok dengan kondisi filter. Fungsi FILTER() diperlukan di sini karena kita tidak dapat mengembalikan TRUE atau FALSE sederhana dari filter. Sebagai gantinya, kita mendapatkan tabel dengan banyak nilai.
Non-UK Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
FILTER('Online Retail',
'Online Retail'[Country] <>"United Kingdom")
Karena itu, kita dapat melihat bahwa UK menyumbang mayoritas pendapatan untuk toko e-commerce ini dibandingkan semua negara lainnya.
Grafik garis Power BI yang menampilkan pendapatan bulanan. Gambar oleh Penulis.
Berapa persentase dari total pendapatan yang berasal dari UK?
Ini adalah jenis pertanyaan yang sangat umum dihadapi pengembang dan pengguna Power BI, dan merupakan kasus yang tepat untuk menerapkan fungsi CALCULATE().
Untuk menemukan persentase dari total, pertama kita perlu bisa mengembalikan total tanpa terpengaruh oleh konteks filter lain di laporan. Untuk mencapainya, kita menggunakan modifier filter yang dikenal sebagai fungsi ALL(). Dengan fungsi ini, kita menentukan kolom mana yang perhitungannya harus sepenuhnya mengabaikan filter apa pun.
Dalam contoh ini, kita mencari persentase dari total pendapatan di UK. Ini berarti perhitungan kita harus mengabaikan filter apa pun pada kolom Country.
Total Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
ALL('Online Retail'[Country]))
Ini relevan karena CALCULATE() dapat dijalankan dari dalam konteks filter yang sudah memfilter Product[Color]. Dalam skenario tersebut, keberadaan ALL berarti filter luar atas Product[Color] diabaikan dan digantikan oleh filter baru yang diperkenalkan oleh CALCULATE(). Hal ini terlihat jika, alih-alih melakukan slicing berdasarkan Brand, kita melakukan slicing berdasarkan Color pada matriks.
Sekarang setelah kita mengetahui total pendapatan, kita dapat menyusun measure untuk menampilkan persentase dari total pendapatan tersebut. Namun, karena kita secara khusus tertarik pada UK, kita akan kembali menggunakan fungsi CALCULATE tetapi kali ini kita akan menggunakan filter boolean sederhana.()
UK % of Revenue = CALCULATE(SUM('Online Retail'[Revenue])/[Total Revenue],
'Online Retail'[Country] = "United Kingdom")
Sekarang kita dapat melihat bahwa UK menyumbang 84% dari total pendapatan untuk toko e-commerce ini.
Menghitung persentase di Power BI. Gambar oleh Penulis
Berapa pendapatan kumulatif harian?
Pendapatan kumulatif dapat memberikan wawasan tentang tren pendapatan. Dengan memplot pendapatan kumulatif ini pada sebuah bagan, kita juga dapat melihat secara visual apakah pendapatan meningkat dengan laju yang lebih cepat atau tidak seiring waktu.
Untuk menjawab pertanyaan ini, kita harus membuat sebuah measure menggunakan fungsi CALCULATE() serta fungsi filter berikut: ALLSELECTED(), FILTER(), dan evaluasi menggunakan fungsi MAX().
Cumulative Revenue = CALCULATE(SUM('Online Retail'[Revenue]),
FILTER( ALLSELECTED('Online Retail'[InvoiceDate]),
'Online Retail'[InvoiceDate] <= MAX('Online Retail'[InvoiceDate])))
Mari kita bahas mengapa filter-filter ini penting di sini:
-
Fungsi
FILTER()memungkinkan masing-masing dari 2 filter yang kita tentukan dievaluasi berdasarkan baris demi baris dan akan mengembalikan tabel pada kasus ketika ada kecocokan. -
Fungsi
ALLSELECTED()mereset filter pada InvoiceDate dalam kueri saat ini (pada hasil di bawah, kueri saat ini adalah line chart) sambil tetap mengizinkan filter eksternal (seperti dari slicer). -
Fungsi
MAX()digunakan sebagai bagian dari evaluasi — kita ingin menjumlahkan pendapatan untuk semua tanggal yang berada pada atau di bawah tanggal saat ini dalam kueri.
Menghitung pendapatan berdasarkan tanggal di Power BI. Gambar oleh Penulis.
Penutup
Dalam tutorial ini, kita membahas apa itu fungsi CALCULATE() di Power BI dan cara menggunakannya. Kita juga menerapkan fungsi CALCULATE() pada dataset e-commerce dunia nyata dan menggunakannya untuk menjawab beberapa pertanyaan bisnis utama.
CALCULATE() adalah salah satu fungsi paling berguna di Power BI dan kemungkinan besar Anda akan sering menggunakannya saat membangun laporan dan menghasilkan wawasan yang lebih mendalam dari data Anda.
Semoga tutorial ini membantu Anda tidak hanya memahami sintaks dasar CALCULATE() tetapi juga bagaimana kaitannya dengan pemecahan masalah bisnis nyata sebagai seorang analis data Power BI.
