DAX Power BI Dasar: 10 Rumus Pertama yang Wajib Dikuasai
Blog/Dashboard & Visualisasi/DAX Power BI Dasar: 10 Rumus Pertama yang Wajib Dikuasai

DAX Power BI Dasar: 10 Rumus Pertama yang Wajib Dikuasai

BimaBima
·28 April 2026·11 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

DAX (Data Analysis Expressions) adalah bahasa rumus yang dipakai Power BI buat bikin measure dan calculated column. Sepuluh fungsi yang paling sering kepake buat pemula: SUM, SUMX, COUNTROWS, DISTINCTCOUNT, DIVIDE, CALCULATE, FILTER, ALL, TOTALYTD, dan DATEADD. CALCULATE yang paling penting, soalnya dia satu-satunya fungsi yang bisa ngubah konteks filter sebuah perhitungan.

DAX punya lebih dari 250 fungsi. Kamu nggak butuh semuanya.

Dari dashboard yang aku bikin buat klien UMKM dan tim retail, 10 fungsi ini yang nutup hampir semua kebutuhan harian. Sisanya baru muncul kalau kasusnya udah aneh-aneh.

Aku bakal jalanin satu per satu pakai dataset toko_berkah — tabel penjualan dengan kolom tanggal, kota, produk, qty, harga_satuan, dan total_harga.

Apa itu DAX di Power BI?

DAX (Data Analysis Expressions) adalah bahasa rumus yang dipakai Power BI buat bikin measure dan calculated column. Sintaksnya mirip rumus Excel, tapi cara kerjanya beda: DAX ngitung terhadap tabel dan kolom, bukan terhadap sel.

Satu hal yang bikin pemula bingung: hasil sebuah measure DAX berubah tergantung siapa yang manggil dia.

Measure Total Omzet yang sama bakal ngasih angka nasional di kartu KPI, dan angka per kota di tabel yang dipecah per kota. Itu namanya konteks filter, dan itu jantung DAX.

Measure atau calculated column?

AspekMeasureCalculated column
Kapan dihitungTiap visual direnderSekali, waktu refresh
Disimpan di memoriNggakIya
Ikut filter visualIyaNggak
Buat apaAngka agregatNilai per baris (kategori, flag)

Aturan praktis: kalau ragu, bikin measure. Calculated column cuma buat kasus yang hasilnya harus nempel di baris, misalnya kolom "kategori harga" (murah/sedang/mahal).

1. SUM — jumlahin satu kolom

Total Omzet = SUM(toko_berkah[total_harga])

Ini measure pertama yang bakal kamu bikin. Dia jumlahin kolom total_harga dari semua baris yang lolos filter aktif.

Taruh di kartu KPI, dia kasih total nasional. Taruh di tabel yang dipecah per kota, tiap baris dapat total kotanya. Kamu nggak perlu nulis apa-apa lagi.

2. SUMX — hitung per baris dulu, baru jumlahin

Omzet Hitung Ulang = 
SUMX(
    toko_berkah,
    toko_berkah[qty] * toko_berkah[harga_satuan]
)

Bedanya sama SUM: SUMX jalan baris per baris. Dia ngitung qty * harga_satuan di tiap baris dulu, baru semuanya dijumlah.

Kapan butuh ini? Kalau kolom hasilnya belum ada. Kalau kamu cuma punya qty dan harga terpisah, SUM nggak bisa apa-apa. SUMX bisa.

Catatan performa: SUMX lebih berat dari SUM. Jangan pakai SUMX kalau SUM udah cukup.

3. COUNTROWS — hitung jumlah baris

Jumlah Transaksi = COUNTROWS(toko_berkah)

Simpel dan sering kepake. Berapa transaksi bulan ini? Berapa transaksi di Bandung? Measure ini yang jawab.

Lebih aman dari COUNT(), soalnya COUNT ngabaikan baris yang nilainya kosong. COUNTROWS ngitung semua baris apa adanya.

4. DISTINCTCOUNT — hitung nilai unik

Jumlah Pelanggan = DISTINCTCOUNT(toko_berkah[id_pelanggan])

Satu pelanggan bisa transaksi 10 kali. COUNTROWS bakal bilang 10. DISTINCTCOUNT bilang 1.

Ini yang kamu pakai buat ngitung pelanggan aktif, produk unik yang laku, atau cabang yang punya penjualan.

5. DIVIDE — bagi yang nggak bikin error

Rata-rata per Transaksi = 
DIVIDE(
    [Total Omzet],
    [Jumlah Transaksi],
    0
)

Kalau kamu tulis [Total Omzet] / [Jumlah Transaksi] dan penyebutnya kebetulan nol, visual kamu bakal nampilin error. Kelihatan jelek di depan bos.

DIVIDE nangkep kasus itu. Argumen ketiga adalah nilai yang keluar kalau pembagiannya gagal. Aku biasanya isi 0 atau kosongin.

Pakai DIVIDE selalu. Nggak ada alasan buat nggak pakai.

6. CALCULATE — fungsi paling penting di DAX

CALCULATE adalah satu-satunya fungsi yang bisa ngubah konteks filter sebuah perhitungan.

Omzet Jakarta = 
CALCULATE(
    [Total Omzet],
    toko_berkah[kota] = "Jakarta"
)

Measure ini selalu ngasih angka Jakarta. Bahkan kalau kamu taruh di baris "Bandung" di tabel, dia tetap kasih angka Jakarta. Soalnya CALCULATE nimpa filter kotanya.

Pola dasarnya: CALCULATE(apa_yang_dihitung, filter1, filter2, ...).

Kamu bisa numpuk filter:

Omzet Elektronik Jakarta = 
CALCULATE(
    [Total Omzet],
    toko_berkah[kota] = "Jakarta",
    toko_berkah[kategori] = "Elektronik"
)

Hampir semua measure yang menarik di dashboard kamu bakal pakai CALCULATE. Perbandingan tahun lalu, persentase kontribusi, target vs realisasi — semuanya lewat sini. Penjelasan resminya ada di dokumentasi DAX Microsoft.

7. FILTER — filter dengan kondisi yang lebih rumit

Filter langsung di CALCULATE cuma bisa kondisi sederhana. Kalau kamu butuh kondisi yang ngebandingin sama measure, pakai FILTER.

Omzet Transaksi Besar = 
CALCULATE(
    [Total Omzet],
    FILTER(
        toko_berkah,
        toko_berkah[total_harga] > 500000
    )
)

FILTER jalan baris per baris, jadi dia lebih lambat. Pakai cuma kalau filter sederhana nggak cukup.

8. ALL — buang filter

Omzet Nasional = 
CALCULATE(
    [Total Omzet],
    ALL(toko_berkah[kota])
)

ALL ngebuang filter dari kolom yang kamu sebut. Measure di atas selalu kasih total semua kota, bahkan waktu ditaruh di baris kota tertentu.

Kombinasi ini yang bikin persentase kontribusi jadi gampang:

Kontribusi Kota % = 
DIVIDE(
    [Total Omzet],
    CALCULATE([Total Omzet], ALL(toko_berkah[kota])),
    0
)

Pembilangnya ikut filter (omzet kota yang lagi dilihat). Penyebutnya ngabaikan filter kota (total nasional). Hasilnya persentase.

9. TOTALYTD — total dari awal tahun

Omzet YTD = 
TOTALYTD(
    [Total Omzet],
    tanggal[Date]
)

YTD = year to date. Dia jumlahin dari 1 Januari sampai tanggal yang lagi dilihat.

Syaratnya: kamu harus punya tabel tanggal (date table) yang udah ditandai sebagai date table di Power BI. Tanpa itu, semua fungsi time intelligence bakal ngasih hasil aneh.

Bikin date table-nya gampang:

tanggal = CALENDARAUTO()

Terus klik kanan tabelnya → Mark as date table.

10. DATEADD — bandingin sama periode lalu

Omzet Bulan Lalu = 
CALCULATE(
    [Total Omzet],
    DATEADD(tanggal[Date], -1, MONTH)
)

DATEADD geser konteks tanggalnya ke belakang (atau ke depan). Argumen ketiga bisa DAY, MONTH, QUARTER, atau YEAR.

Dipasangin sama measure asli, kamu langsung dapat pertumbuhan:

Growth MoM % = 
DIVIDE(
    [Total Omzet] - [Omzet Bulan Lalu],
    [Omzet Bulan Lalu],
    0
)

Dua measure ini yang paling sering diminta manajemen. Sekarang kamu bisa bikin dalam 2 menit.

Contoh kasus: dashboard toko_berkah

Ini yang aku bikin buat toko_berkah pakai 10 fungsi di atas. Nggak ada fungsi lain.

Empat kartu KPI di atas: Total Omzet, Jumlah Transaksi, Jumlah Pelanggan, Rata-rata per Transaksi. Empat measure, empat fungsi.

Satu tabel per kota dengan kolom Kontribusi Kota % — pakai ALL dan DIVIDE.

Satu line chart Omzet YTD vs tahun lalu — pakai TOTALYTD dan DATEADD.

Angka yang keluar dari dataset ngulikdata: 12 kota, dan 3 kota teratas (Jakarta, Surabaya, Bandung) nyumbang 61% dari total omzet. Tapi rata-rata per transaksi tertinggi justru di Balikpapan — Rp 487.000, hampir 2x rata-rata nasional yang Rp 251.000.

Volume rendah, nilai tinggi. Kalau cuma lihat kolom total omzet, Balikpapan kelihatan cabang kecil yang nggak penting. Kolom rata-rata per transaksi yang bikin dia keliatan.

Satu measure DIVIDE, satu insight baru.

Kesalahan umum waktu belajar DAX

1. Bikin calculated column padahal butuh measure. Ini yang paling sering. Kamu bikin kolom "total_harga" pakai calculated column, padahal Power BI bisa hitung itu on the fly pakai measure. File kamu jadi gede, refresh jadi lambat, dan hasilnya nggak ikut filter.

2. Nggak bikin date table. Semua fungsi time intelligence (TOTALYTD, DATEADD, SAMEPERIODLASTYEAR) butuh date table yang proper. Pakai kolom tanggal di tabel fakta langsung bakal ngasih hasil yang salah tanpa error — itu yang bahaya.

3. Pakai FILTER buat kondisi sederhana. CALCULATE([Omzet], FILTER(toko_berkah, toko_berkah[kota] = "Jakarta")) jalan, tapi lebih lambat dari CALCULATE([Omzet], toko_berkah[kota] = "Jakarta"). Pakai FILTER cuma kalau kondisinya nggak bisa ditulis sederhana.

4. Numpuk measure di dalam measure tanpa nama yang jelas. Bikin measure dasar (Total Omzet) sekali, terus pakai ulang di measure lain. Jangan tulis SUM(toko_berkah[total_harga]) berkali-kali di 12 measure berbeda. Kalau logikanya berubah, kamu harus edit 12 tempat.

5. Ngira DAX itu SQL. Di SQL, kamu tulis query dan hasilnya jelas. Di DAX, hasil measure berubah tergantung visual yang manggil. Ini yang paling lama nyantol. Kalau angka measure kamu aneh, 90% kemungkinan masalahnya di konteks filter, bukan di rumusnya.

FAQ

Apa bedanya measure dan calculated column di DAX?

Calculated column dihitung sekali waktu data di-refresh, hasilnya disimpan di tabel, dan makan memori. Measure dihitung ulang tiap kali kamu lihat visual, hasilnya nggak disimpan, dan hampir nggak makan memori. Aturan praktisnya: kalau hasilnya angka agregat yang berubah tergantung filter, pakai measure. Kalau hasilnya nempel di tiap baris, baru pakai calculated column.

Kapan pakai SUM dan kapan pakai SUMX?

Pakai SUM kalau kamu tinggal menjumlahkan satu kolom yang udah ada. Pakai SUMX kalau kamu perlu hitung sesuatu per baris dulu, baru dijumlah. Contoh: kalau kamu punya kolom qty dan harga terpisah, SUM nggak bisa langsung ngitung omzet, tapi SUMX bisa. SUMX lebih lambat, jadi jangan pakai kalau SUM udah cukup.

Kenapa CALCULATE disebut fungsi paling penting di DAX?

Karena CALCULATE satu-satunya fungsi yang bisa ngubah konteks filter sebuah perhitungan. Semua measure dihitung dalam konteks filter yang dibentuk visual dan slicer. CALCULATE ngasih kamu kontrol buat nambah, ganti, atau buang filter itu. Tanpa CALCULATE, kamu nggak bisa bikin perbandingan tahun lalu atau persentase terhadap total.

Kenapa harus pakai DIVIDE, bukan tanda bagi biasa?

Kalau penyebutnya nol atau kosong, operator bagi biasa bakal ngasih error dan visual kamu jadi berantakan. DIVIDE nangkep kasus itu dan balikin nilai alternatif. Tulisannya: DIVIDE(pembilang, penyebut, hasil_kalau_error). Ini juga sedikit lebih cepat dari IF plus operator bagi, karena optimasinya dikerjain di engine.

Perlu belajar SQL dulu sebelum DAX?

Nggak wajib, tapi ngebantu banget. Konsep JOIN, GROUP BY, dan filter di SQL kepake buat ngerti gimana Power BI ngerangkai tabel. Yang beda dan sering bikin bingung: di SQL kamu nulis satu query yang jelas hasilnya apa, sementara di DAX hasil measure berubah tergantung visual yang manggil dia.

Ringkasan

Sepuluh fungsi ini urutan belajarnya: SUM, COUNTROWS, DISTINCTCOUNT, DIVIDE dulu (agregat dasar). Terus CALCULATE, FILTER, ALL (konteks filter). Terakhir TOTALYTD dan DATEADD (waktu).

CALCULATE yang paling penting. Kalau cuma boleh kuasai satu, kuasai itu.

Dan sebelum nyentuh time intelligence, bikin date table dulu. Nggak ada jalan pintas di sini.

Konsep konteks filter di DAX itu turunan dari cara berpikir SQL. Kalau agregasi dan filter masih goyang, mampir dulu ke GROUP BY dan glosarium measure.

Habis itu lanjut ke Power BI vs Looker Studio — buat mastiin kamu emang lagi belajar tool yang bener buat kebutuhan kamu.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel Terkait

Cara Membuat Dashboard di Google Sheets Tanpa Tools Tambahan
Dashboard & Visualisasi
12 Juli 2026•9 menit baca

Cara Membuat Dashboard di Google Sheets Tanpa Tools Tambahan

Dashboard penjualan yang rapi bisa kamu bikin cuma pakai Google Sheets — tanpa Looker Studio, tanpa add-on, tanpa bayar apa pun. Ini urutan 6 langkahnya, lengkap dengan rumusnya.

BimaBima
Dashboard vs Laporan: Bedanya dan Kapan Bikin yang Mana
Dashboard & Visualisasi
9 Juli 2026•8 menit baca

Dashboard vs Laporan: Bedanya dan Kapan Bikin yang Mana

Dashboard buat mantau angka yang berubah tiap hari. Laporan buat jawab satu pertanyaan sekali dan tuntas. Salah pilih, kerjaanmu kebuang.

BimaBima
KPI Keuangan: Metrik yang Dibaca CFO Setiap Bulan
Dashboard & Visualisasi
6 Juli 2026•9 menit baca

KPI Keuangan: Metrik yang Dibaca CFO Setiap Bulan

Delapan KPI keuangan yang beneran dibuka CFO tiap bulan, rumusnya, dan cara nyusunnya jadi satu dashboard yang kebaca dalam 90 detik.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

Copyright © 2026 - All rights reserved

LINKS
SupportPricingDatasetBlogAffiliates
LEGAL
Terms of servicesPrivacy policy
Ngulik Data
DatasetLeaderboardBlogStore