DAX SUMX: Menjumlah per Baris di Power BI
TL;DR
SUMX di DAX adalah iterator yang ngevaluasi sebuah ekspresi di tiap baris tabel, lalu ngejumlahin semua hasilnya. Bedanya sama SUM, SUMX bisa ngalikan atau ngitung antar kolom per baris tanpa perlu bikin kolom bantu dulu. Contoh paling umum, SUMX(Penjualan, Penjualan[qty] * Penjualan[harga]) buat total omzet dari qty kali harga tiap baris.
SUMX di DAX adalah fungsi yang ngevaluasi sebuah hitungan di tiap baris tabel, lalu ngejumlahin semua hasilnya. Contoh paling sering, ngalikan qty dengan harga di tiap baris penjualan, baru dijumlah jadi total omzet.
Bedanya sama SUM biasa, SUMX bisa ngitung antar kolom dulu sebelum menjumlah. SUM cuma bisa ngejumlahin satu kolom yang udah jadi. Di situ letak gunanya.
Banyak orang bikin kolom bantu dulu buat qty kali harga, padahal SUMX ngerjain itu tanpa nambah kolom. Ini yang bikin model kamu lebih ramping.
Apa itu SUMX di DAX?
SUMX adalah iterator, artinya dia muter tabel baris per baris. Di tiap baris, dia ngitung ekspresi yang kamu kasih, nyimpen hasilnya, lalu di akhir ngejumlahin semua. Hasil akhirnya satu angka.
Karena muter per baris, SUMX punya row context, yaitu kesadaran lagi ada di baris mana. Ini yang bikin dia bisa nyebut dua kolom sekaligus dalam satu hitungan. Kalau kamu baru mulai, mantapin dulu konsep DAX Power BI dasar biar row context-nya kebayang.
Apa beda SUMX dan SUM?
SUM ngejumlahin satu kolom yang nilainya udah ada. SUMX ngitung dulu per baris, baru dijumlah. Perhatiin dua measure ini:
-- SUM: butuh kolom total yang udah jadi
Total Omzet = SUM(Penjualan[total])
-- SUMX: hitung qty x harga per baris, baru dijumlah
Total Omzet = SUMX(Penjualan, Penjualan[qty] * Penjualan[harga])
Kalau tabelmu belum punya kolom total, SUM nggak bisa dipakai tanpa bikin kolom bantu dulu. SUMX ngerjain perkalian dan penjumlahan sekaligus, tanpa nambah kolom apa pun ke model.
Gimana sintaks SUMX?
Sintaksnya dua bagian: tabel yang mau dimuter, dan ekspresi yang dihitung tiap baris.
SUMX(<tabel>, <ekspresi>)
Tabelnya bisa nama tabel langsung, atau hasil fungsi tabel kayak FILTER. Ekspresinya hitungan apa pun yang valid di level baris. Kalau kamu mau gabung SUMX dengan penyaringan, FILTER sering dipakai bareng, lihat DAX FILTER.
Gimana cara pakai SUMX langkah demi langkah?
- Tentuin hitungan yang mau kamu jumlah, misalnya qty kali harga per transaksi.
- Pilih tabel yang punya kolom-kolom itu, misalnya tabel Penjualan.
- Tulis measure baru pakai SUMX dengan tabel dan ekspresinya.
- Taruh measure di visual, bandingin dengan angka manual buat mastiin benar.
Total Margin =
SUMX(
Penjualan,
(Penjualan[harga_jual] - Penjualan[harga_modal]) * Penjualan[qty]
)
Measure ini ngitung margin tiap baris, yaitu selisih harga dikali jumlah, lalu jumlahin semua. Satu measure, tanpa kolom bantu.
Kapan harus pakai SUMX bukan SUM?
Aturannya sederhana. Kalau angka yang mau dijumlah udah ada sebagai kolom, pakai SUM. Kalau harus dihitung dulu per baris, pakai SUMX.
| Situasi | Pakai | Contoh |
|---|---|---|
| Kolom total udah ada | SUM | SUM(Penjualan[total]) |
| Perlu kali dua kolom | SUMX | SUMX(Penjualan, [qty] * [harga]) |
| Perlu hitung margin per baris | SUMX | SUMX(Penjualan, ([jual] - [modal]) * [qty]) |
| Ambil harga dari tabel lain | SUMX + RELATED | SUMX(Penjualan, [qty] * RELATED(Produk[harga])) |
SUMX dengan RELATED buat lintas tabel
Sering harga produk ada di tabel Produk, bukan di tabel Penjualan. SUMX bisa ngambil nilai dari tabel terhubung pakai RELATED, asal ada relasi di model.
Total Omzet =
SUMX(
Penjualan,
Penjualan[qty] * RELATED(Produk[harga])
)
RELATED nyari harga yang cocok di tabel Produk buat tiap baris penjualan. Ini kepakai banget di model bintang yang misahin tabel fakta dan dimensi. Struktur relasi kayak gini bagian dari data model yang rapi.
Contoh kasus: omzet asli Toko Berkah
Toko Berkah, jaringan UMKM di dataset latihan ngulikdata, nyimpen tabel Penjualan dengan qty, tapi harga produknya ada di tabel Produk terpisah. Tanpa SUMX, tim harus bikin kolom bantu omzet dulu, dan itu berat karena datanya jutaan baris.
Omzet Riil =
SUMX(
Penjualan,
Penjualan[qty] * RELATED(Produk[harga_jual])
)
Setelah pakai SUMX plus RELATED, mereka nemu selisih menarik. Omzet yang dihitung dari qty kali harga aktual ternyata 8% lebih rendah dari angka omzet yang selama ini dicatat manual di kasir. Ternyata kasir sering lupa update harga promo, jadi catatan lama kegedean. Satu measure SUMX ngungkap kebocoran pencatatan yang nggak ketahuan berbulan-bulan.
Angka kayak gini yang bikin dashboard berguna. Buat rapiin tampilannya, cek Power BI untuk pemula. Measure ini juga jadi bagian penting dari measure yang kepakai di banyak visual.
Kesalahan umum saat pakai SUMX
1. Pakai SUMX padahal kolomnya udah ada
Kalau kolom total udah tersedia, SUM lebih cepat dan lebih sederhana. SUMX cuma perlu waktu angkanya harus dihitung dulu.
2. Lupa RELATED buat kolom dari tabel lain
Nyebut Produk[harga] langsung di SUMX tanpa RELATED bakal error, karena baris yang dimuter ada di tabel Penjualan. Bungkus kolom tabel lain dengan RELATED.
3. Naruh SUM di tempat yang butuh SUMX
SUM(Penjualan[qty] * Penjualan[harga]) bakal error, karena SUM cuma nerima satu kolom, bukan ekspresi. Perkalian antar kolom wajib pakai SUMX.
4. Numpuk iterator tanpa perlu
SUMX di dalam SUMX atau di dalam FILTER besar bisa bikin lambat. Sederhanain ekspresinya, dan saring tabel sekecil mungkin sebelum dimuter.
Buat detail resmi tiap argumen dan perilaku, cek dokumentasi fungsi SUMX dari Microsoft.
FAQ
Apa beda SUM dan SUMX di DAX?
SUM cuma bisa ngejumlahin satu kolom yang udah ada, misalnya SUM(Penjualan[total]). SUMX ngevaluasi ekspresi di tiap baris dulu, baru dijumlah, misalnya SUMX(Penjualan, Penjualan[qty] * Penjualan[harga]). Kalau kamu perlu ngalikan dua kolom lalu dijumlah, SUM nggak bisa tanpa kolom bantu. SUMX ngerjain hitungan per baris dan penjumlahan dalam satu langkah.
Kapan aku harus pakai SUMX?
Pakai SUMX waktu angka yang mau dijumlah belum ada sebagai kolom, dan harus dihitung dulu per baris. Contoh paling umum: omzet dari qty kali harga, atau margin dari harga jual kurang modal. Kalau kolom totalnya udah tersedia, SUM biasa lebih cepat dan cukup. Aturannya, SUMX buat hitung dulu per baris, SUM buat kolom yang udah jadi.
Apa itu row context di SUMX?
Row context adalah kondisi di mana DAX tau lagi ngeliat baris yang mana. SUMX bikin row context waktu dia muter tabel baris per baris, jadi kamu bisa nyebut Penjualan[qty] dan DAX ngerti itu qty di baris yang lagi diproses. SUM biasa nggak punya row context, makanya dia nggak bisa ngalikan dua kolom per baris. Row context ini inti kenapa SUMX bisa hitung antar kolom.
Gimana cara SUMX ngambil data dari tabel lain?
Pakai fungsi RELATED di dalam ekspresi SUMX. Misalnya SUMX(Penjualan, Penjualan[qty] * RELATED(Produk[harga])) ngambil harga dari tabel Produk yang terhubung lewat relasi. RELATED nyari nilai yang cocok di tabel sisi satu. Syaratnya, harus ada relasi antar tabel di model. Tanpa relasi, RELATED nggak bisa nemu nilainya dan bakal error.
Apakah SUMX lambat?
SUMX ngevaluasi tiap baris, jadi secara teori lebih berat dari SUM. Tapi buat tabel ukuran wajar, mesin Power BI ngoptimalkan banyak kasus SUMX sederhana sampai kecepatannya mirip SUM. Yang bikin lambat biasanya ekspresi rumit atau SUMX yang dibungkus di dalam iterator lain. Buat kebanyakan dashboard, SUMX dengan perkalian dua kolom nggak jadi masalah kecepatan.
Penutup
- SUMX ngitung ekspresi per baris dulu, baru dijumlah, jadi bisa ngalikan antar kolom tanpa kolom bantu.
- Pakai SUM kalau kolom totalnya udah ada, SUMX kalau harus dihitung dulu per baris.
- Gabung SUMX dengan RELATED buat ngambil nilai dari tabel lain yang terhubung.
Coba sekarang: bikin measure omzet pakai SUMX dari qty kali harga, lalu bandingin dengan kolom total yang ada. Selisihnya sering ngungkap masalah pencatatan.
Habis ini, lanjut ke DAX FILTER buat belajar nyaring baris sebelum dijumlah pakai SUMX.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
Tableau LOD Expression: FIXED, INCLUDE, EXCLUDE (2026)
Tableau LOD expression bikin kamu ngatur level agregasi terlepas dari yang ada di view. FIXED, INCLUDE, dan EXCLUDE punya perilaku beda. Ini cara pakainya dengan contoh nyata.
Power Query Bahasa M: Dasar untuk Analis (2026)
Bahasa M itu bahasa formula di balik Power Query. Ini dasar sintaks let...in, fungsi yang sering dipakai, dan contoh bersihin data toko.
Power BI Slicer: Cara Bikin Filter Interaktif di Dashboard (2026)
Slicer bikin dashboard Power BI bisa difilter cuma dengan sekali klik. Ini cara bikinnya, atur tipenya, dan sync ke banyak halaman sekaligus.