Login / Daftar ID | EN
Measure atau Calculated Column di Power BI: Aturan Memilihnya
Foto: Pexels
Office IT

Measure atau Calculated Column di Power BI: Aturan Memilihnya

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:

  1. Kolom selalu ditulis lengkap dengan nama tabelnya, misalnya Orders[Sales].
  2. 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

  1. 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
  2. Microsoft Learn, "Column and measure references in DAX". https://learn.microsoft.com/en-us/dax/best-practices/dax-column-measure-references
  3. Microsoft Learn, "Use variables to improve your DAX formulas". https://learn.microsoft.com/en-us/dax/best-practices/dax-variables
  4. SQLBI, "Calculated Columns and Measures in DAX". https://www.sqlbi.com/articles/calculated-columns-and-measures-in-dax/
  5. Microsoft Learn Indonesia, "Membuat pengukuran untuk analisis data di Power BI Desktop". https://learn.microsoft.com/id-id/power-bi/transform-model/desktop-measures