Anda sudah punya angka total pendapatan di model Power BI, lalu diminta menyiapkan target tahun depan yang lebih tinggi lima persen. Ada dua jalan yang di layar hasilnya sama persis: menambahkan kolom baru, atau membuat measure baru yang memanggil measure yang sudah ada. Angkanya identik. Yang berbeda adalah kapan perhitungan itu dijalankan, di mana hasilnya disimpan, dan berapa memori yang dipakai model Anda sesudahnya.
Bukan dua pilihan, melainkan lima
Dokumentasi Microsoft mencatat lima cara menambahkan perhitungan ke laporan Power BI, dan perbedaannya bukan soal selera.
| Aspek | Kolom kustom | Kolom terhitung | Measure | Visual calculation |
|---|---|---|---|---|
| Bahasa | M (Power Query) | DAX | DAX | DAX |
| Dihitung saat | Refresh data | Refresh data | Saat diminta | Saat diminta |
| Hasil disimpan | Ya, di tabel | Ya, di model | Tidak | Tidak |
| Konteks | Baris | Baris | Filter | Visual |
| Ikut berubah saat pengguna memfilter | Tidak | Tidak | Ya | Ya |
| Bisa dipakai sebagai | Slicer, filter, baris, kolom | Slicer, filter, baris, kolom | Nilai pada visual dan filter tingkat visual | Nilai pada visual |
Pilihan kelima, calculated table, dipakai kalau hasil antara memang ingin Anda simpan sebagai tabel di dalam model.
Ingin mendalaminya lebih terstruktur? Taalenta punya kelas Membangun Data Dashboard dengan Power BI.
Biaya yang tidak terlihat di layar
Kolom terhitung dihitung sekali pada saat pemrosesan data, lalu hasilnya ikut disimpan di dalam model. Artinya kolom itu menempati RAM, dan menempatinya terus. Waktu hitungnya memang berpindah ke proses refresh, bukan ke saat laporan dibuka, dan itu menguntungkan pembaca laporan. Ongkos memorinya yang tidak pernah hilang.
Kebiasaan yang paling sering menggemukkan model adalah memecah rumus rumit menjadi beberapa kolom perantara. SQLBI menyebut cara itu berguna saat pengembangan, tetapi kebiasaan buruk di produksi, karena setiap langkah perantara ikut tersimpan di memori. Measure bekerja sebaliknya: yang tersimpan di model hanya kode rumusnya, hasilnya dihitung saat kueri berjalan.
Yang memang tidak bisa dikerjakan kolom
Ada perhitungan yang tidak punya versi kolom sama sekali, dan persentase adalah contoh paling umum. Margin per baris boleh dihitung sebagai kolom, tetapi persentase margin untuk sebuah kelompok tidak boleh diambil dari rata-rata kolom itu. Yang benar adalah rasio dari jumlah, bukan jumlah dari rasio:
Gross Margin % = DIVIDE ( SUM ( Sales[GrossMargin] ), SUM ( Sales[SalesAmount] ) )
Begitu perhitungan Anda harus bekerja pada nilai agregat, bukan baris demi baris, measure menjadi satu-satunya jalan.
Dua aturan penamaan yang menyelamatkan rumus Anda nanti
Microsoft memberi dua anjuran yang mudah diingat justru karena bunyinya berlawanan:
- Kolom selalu ditulis lengkap dengan nama tabelnya, misalnya
Orders[Sales]. - Measure tidak pernah diberi nama tabel, cukup
[Profit].
Alasannya praktis. Setiap measure punya properti home table yang sebenarnya hanya menentukan letaknya di panel Data. Kalau suatu saat Anda memindahkannya, setiap rumus yang menyebut measure itu lengkap dengan nama tabel akan patah, dan Anda harus menyunting satu per satu. Sebaliknya, menulis kolom secara lengkap menghindarkan rumus dari referensi ambigu, dan sebagian fungsi seperti LOOKUPVALUE memang mensyaratkannya.
VAR menggantikan kolom perantara
Kalau alasan Anda memakai kolom perantara adalah supaya rumus tetap terbaca, DAX sudah punya jawabannya. Variabel yang dideklarasikan dengan VAR dihitung paling banyak satu kali, lalu boleh dipakai berulang di bagian RETURN.
Contoh resmi Microsoft memakai pertumbuhan penjualan tahun ke tahun. Versi tanpa variabel menghitung ekspresi periode tahun lalu dua kali. Versi dengan satu VAR mengembalikan hasil yang sama dalam waktu kueri sekitar separuhnya:
Sales YoY Growth % =
VAR SalesPriorYear =
CALCULATE([Sales], PARALLELPERIOD('Date'[Date], -12, MONTH))
RETURN
DIVIDE(([Sales] - SalesPriorYear), SalesPriorYear)
Variabel juga selalu dievaluasi di luar filter yang diterapkan bagian RETURN. Karena itu fungsi EARLIER, yang dulu sering membingungkan, umumnya tidak diperlukan lagi.
Aturan praktisnya satu kalimat
Kalau hasilnya harus ikut berubah ketika pengguna menggeser slicer, itu measure. Kalau hasilnya justru dipakai sebagai slicer, sumbu grafik, atau baris tabel, barulah itu kolom. Sisanya, termasuk memanggil measure lama di dalam measure baru, mengikuti aturan yang sama.
Cara memanggil measure di dalam measure lain ini juga diperagakan di kelas Membangun Data Dashboard dengan Power BI. Kalau lebih enak melihat penjelasannya langsung, ada klip singkat yang memperagakannya.
Sumber
- Microsoft Learn, "Use calculation options in Power BI Desktop", diperbarui 4 November 2025. https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-calculations-options
- Microsoft Learn, "Column and measure references in DAX". https://learn.microsoft.com/en-us/dax/best-practices/dax-column-measure-references
- Microsoft Learn, "Use variables to improve your DAX formulas". https://learn.microsoft.com/en-us/dax/best-practices/dax-variables
- SQLBI, "Calculated Columns and Measures in DAX". https://www.sqlbi.com/articles/calculated-columns-and-measures-in-dax/
- Microsoft Learn Indonesia, "Membuat pengukuran untuk analisis data di Power BI Desktop". https://learn.microsoft.com/id-id/power-bi/transform-model/desktop-measures