Menu
CoddyTech

Cheat Sheet Power BI

Terakhir diperbarui

Belajar Power BI gratis

Ukuran, kolom, dan tabel

Ukuran dihitung untuk setiap sel visual; kolom terhitung dihitung sekali per baris lalu disimpan.

FungsinyaDAX
Membuat ukuranTotal Sales = SUM ( Sales[Amount] )
Membuat kolom terhitung (satu nilai per baris)Line Total = Sales[Quantity] * Sales[Unit Price]
Membuat tabel terhitungTop Customers = TOPN ( 10, Customer, [Total Sales] )
Merujuk kolom: nama tabel, lalu nama kolom dalam kurung sikuSales[Amount]
Memberi tanda kutip pada nama tabel yang berisi spasi atau berupa kata yang dicadangkan'Date'[Date]
Merujuk ukuran: cukup kurung siku[Total Sales]
Memakai ukuran di dalam ukuran lainAverage Price = DIVIDE ( [Total Sales], [Total Units] )

Fungsi agregasi

Masing-masing merangkum satu kolom dalam konteks filter saat ini.

FungsinyaDAX
Menjumlahkan kolomSUM ( Sales[Amount] )
Rata-rata kolomAVERAGE ( Sales[Amount] )
Nilai terkecilMIN ( Sales[Order Date] )
Nilai terbesarMAX ( Sales[Order Date] )
Menghitung baris tabelCOUNTROWS ( Sales )
Menghitung nilai kolom yang tidak kosongCOUNT ( Sales[Amount] )
Menghitung nilai unikDISTINCTCOUNT ( Sales[Customer Key] )
Membagi dengan aman: hasilnya kosong, bukan error, saat penyebutnya 0DIVIDE ( [Total Sales], [Total Units] )
Membagi dengan nilai yang ditampilkan saat penyebutnya 0DIVIDE ( [Profit], [Total Sales], 0 )

Iterator (fungsi X)

Fungsi ini menelusuri tabel baris demi baris, menghitung ekspresi untuk setiap baris, lalu mengagregasi hasilnya.

FungsinyaDAX
Mengalikan per baris, lalu menjumlahkanSUMX ( Sales, Sales[Quantity] * Sales[Unit Price] )
Rata-rata dari hasil per barisAVERAGEX ( Sales, Sales[Quantity] * Sales[Unit Price] )
Hasil per baris yang terbesarMAXX ( Sales, Sales[Quantity] * Sales[Unit Price] )
Rata-rata ukuran per pelangganAVERAGEX ( VALUES ( Customer[Customer Key] ), [Total Sales] )
Memakai kolom dari tabel yang berelasi dalam ekspresiSUMX ( Sales, Sales[Quantity] * RELATED ( Product[Unit Cost] ) )
Menghitung baris yang memenuhi syaratCOUNTROWS ( FILTER ( Sales, Sales[Quantity] >= 3 ) )
Memberi peringkat setiap produk berdasarkan ukuranRANKX ( ALL ( Product[Product] ), [Total Sales] )
Peringkat tanpa celah setelah nilai seri (1, 1, 2)RANKX ( ALL ( Product[Product] ), [Total Sales], , DESC, DENSE )
Menggabungkan nilai menjadi satu teksCONCATENATEX ( VALUES ( Product[Category] ), Product[Category], ", " )

CALCULATE dan fungsi filter

CALCULATE menghitung ekspresi dengan filter yang diubah. Filter pada kolom yang sama menggantikan filter lama; filter pada kolom berbeda digabung dengan AND.

FungsinyaDAX
Filter satu nilaiCALCULATE ( [Total Sales], Product[Category] = "Bikes" )
Filter daftar nilaiCALCULATE ( [Total Sales], Product[Color] IN { "Red", "Blue" } )
Dua filter (AND)CALCULATE ( [Total Sales], Product[Color] = "Red", Store[Country] = "Spain" )
OR pada dua kolomCALCULATE ( [Total Sales], FILTER ( ALL ( Product[Color], Product[Brand] ), Product[Color] = "Red" || Product[Brand] = "Contoso" ) )
Filter berdasarkan ukuranCALCULATE ( [Total Sales], FILTER ( VALUES ( Customer[Customer Key] ), [Total Sales] > 1000 ) )
Mempertahankan filter yang ada dan mengambil irisannyaCALCULATE ( [Total Sales], KEEPFILTERS ( Product[Color] IN { "Red", "Blue" } ) )
Menghapus filter pada satu kolomCALCULATE ( [Total Sales], REMOVEFILTERS ( Product[Category] ) )
Menghapus semua filter pada tabelCALCULATE ( [Total Sales], ALL ( Product ) )
Menghapus semua filter pada tabel kecuali beberapa kolomCALCULATE ( [Total Sales], ALLEXCEPT ( Store, Store[Country] ) )
Mempertahankan pilihan slicer, mengabaikan baris visual itu sendiriCALCULATE ( [Total Sales], ALLSELECTED ( Product[Category] ) )
Memakai relasi yang tidak aktifCALCULATE ( [Total Sales], USERELATIONSHIP ( Sales[Ship Date], 'Date'[Date] ) )
Membuat filter mengalir dua arah untuk satu ukuranCALCULATE ( COUNTROWS ( Customer ), CROSSFILTER ( Sales[Customer Key], Customer[Customer Key], BOTH ) )
Filter berdasarkan tabel tanpa relasiCALCULATE ( [Total Sales], TREATAS ( VALUES ( Budget[Category] ), Product[Category] ) )

Kecerdasan waktu

Fungsi ini butuh tabel tanggal: satu baris per hari, tanpa celah, dan ditandai sebagai tabel tanggal.

FungsinyaDAX
Sejak awal tahunTOTALYTD ( [Total Sales], 'Date'[Date] )
Sejak awal tahun, tahun fiskal berakhir 30 JuniTOTALYTD ( [Total Sales], 'Date'[Date], "6/30" )
Sejak awal tahun di dalam CALCULATECALCULATE ( [Total Sales], DATESYTD ( 'Date'[Date] ) )
Sejak awal kuartalTOTALQTD ( [Total Sales], 'Date'[Date] )
Sejak awal bulanTOTALMTD ( [Total Sales], 'Date'[Date] )
Periode yang sama tahun laluCALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) )
Menggeser tanggal sebesar satu interval (di sini mundur satu bulan)CALCULATE ( [Total Sales], DATEADD ( 'Date'[Date], -1, MONTH ) )
Seluruh bulan sebelumnyaCALCULATE ( [Total Sales], PREVIOUSMONTH ( 'Date'[Date] ) )
Seluruh periode satu tahun sebelumnyaCALCULATE ( [Total Sales], PARALLELPERIOD ( 'Date'[Date], -1, YEAR ) )
12 bulan terakhir sampai tanggal terakhir yang terlihatCALCULATE ( [Total Sales], DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -12, MONTH ) )
Rentang tanggal tetapCALCULATE ( [Total Sales], DATESBETWEEN ( 'Date'[Date], DATE ( 2025, 1, 1 ), DATE ( 2025, 3, 31 ) ) )

Pola ukuran yang umum

Salin, lalu ganti nama tabel dan kolom sesuai modelmu.

FungsinyaDAX
Persentase dari semua kategoriCategory % = DIVIDE ( [Total Sales], CALCULATE ( [Total Sales], REMOVEFILTERS ( Product[Category] ) ) )
Persentase dari yang tersisa setelah slicerVisible % = DIVIDE ( [Total Sales], CALCULATE ( [Total Sales], ALLSELECTED ( Product[Category] ) ) )
Pertumbuhan dari tahun ke tahunYoY % = VAR LastYear = CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) ) RETURN DIVIDE ( [Total Sales] - LastYear, LastYear )
Total berjalan sepanjang waktuRunning Total = CALCULATE ( [Total Sales], FILTER ( ALL ( 'Date'[Date] ), 'Date'[Date] <= MAX ( 'Date'[Date] ) ) )
Rata-rata bergerak 7 hari (per hari yang ada penjualannya)Sales 7 Day Avg = AVERAGEX ( DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -7, DAY ), [Total Sales] )
Menampilkan nilai hanya untuk 5 teratasTop 5 Sales = IF ( RANKX ( ALLSELECTED ( Product[Product] ), [Total Sales] ) <= 5, [Total Sales] )
Menghitung pelanggan di atas batas tertentuBig Customers = COUNTROWS ( FILTER ( VALUES ( Customer[Customer Key] ), [Total Sales] > 1000 ) )
Membuat total sama dengan jumlah baris-barisnyaBonus Total = SUMX ( VALUES ( Product[Category] ), [Bonus] )
Menampilkan nilai hanya di satu level matriksCategory Rank = IF ( ISINSCOPE ( Product[Category] ), RANKX ( ALL ( Product[Category] ), [Total Sales] ) )
Saldo akhir: tanggal terakhir yang punya nilaiClosing Units = CALCULATE ( SUM ( Inventory[Units] ), LASTNONBLANK ( 'Date'[Date], CALCULATE ( SUM ( Inventory[Units] ) ) ) )

Fungsi logika dan informasi

Untuk kondisi, dan untuk mengetahui isi konteks filter.

FungsinyaDAX
Satu kondisiIF ( [Total Sales] > 1000, "High", "Low" )
Beberapa nilai dari satu ekspresiSWITCH ( Store[Country], "Spain", "ES", "Portugal", "PT", "Other" )
Rentang, diperiksa dari atas ke bawahSWITCH ( TRUE (), [Total Sales] >= 10000, "A", [Total Sales] >= 1000, "B", "C" )
AND dan ORIF ( Sales[Quantity] > 2 && Sales[Amount] > 50, "Big", "Small" )
Apakah nilainya kosong?ISBLANK ( [Total Sales] )
Nilai pertama yang tidak kosongCOALESCE ( [Total Sales], 0 )
Apakah filter menyisakan tepat satu nilai?HASONEVALUE ( Product[Category] )
Satu nilai itu, atau nilai bawaanSELECTEDVALUE ( Product[Category], "All categories" )
Apakah baris visual ini dikelompokkan menurut kolom tersebut?ISINSCOPE ( Product[Category] )
Mengembalikan nilai kosongBLANK ()

Fungsi teks

Operator & menggabungkan teks; FORMAT mengubah angka atau tanggal menjadi teks.

FungsinyaDAX
Menggabungkan teksCustomer[First Name] & " " & Customer[Last Name]
Memformat angkaFORMAT ( [Total Sales], "#,0.00" )
Memformat tanggalFORMAT ( 'Date'[Date], "mmm yyyy" )
Karakter pertamaLEFT ( Product[Code], 3 )
Karakter dari posisi tertentuMID ( Product[Code], 4, 2 )
Panjang teksLEN ( Product[Name] )
Huruf kapitalUPPER ( Store[City] )
Menghapus spasi berlebihTRIM ( Customer[Name] )
Mengganti teksSUBSTITUTE ( Customer[Phone], " ", "" )
Posisi teks, tanpa membedakan huruf besar dan kecil (0 jika tidak ada)SEARCH ( "pro", Product[Name], 1, 0 )

Fungsi tanggal

Di baliknya, tanggal adalah angka, jadi kamu bisa menguranginya untuk mendapatkan jumlah hari.

FungsinyaDAX
Tanggal hari iniTODAY ()
Membuat tanggalDATE ( 2025, 12, 31 )
Tahun dari tanggalYEAR ( 'Date'[Date] )
Nomor bulanMONTH ( 'Date'[Date] )
Hari dalam minggu, Senin sebagai 1WEEKDAY ( 'Date'[Date], 2 )
Nomor minggu, minggu dimulai hari SeninWEEKNUM ( 'Date'[Date], 2 )
Hari terakhir bulanEOMONTH ( 'Date'[Date], 0 )
Hari yang sama sebulan sebelumnyaEDATE ( 'Date'[Date], -1 )
Jumlah hari antara dua tanggalDATEDIFF ( Sales[Order Date], Sales[Ship Date], DAY )
Tabel tanggal dari tanggal tetapCALENDAR ( DATE ( 2024, 1, 1 ), DATE ( 2025, 12, 31 ) )
Tabel tanggal dari tanggal di modelCALENDARAUTO ()

Relasi dan pencarian nilai

RELATED mengikuti relasi dari sisi banyak ke sisi satu.

FungsinyaDAX
Nilai dari sisi satu (di kolom pada tabel Sales)RELATED ( Product[Category] )
Baris sisi banyak untuk baris saat ini (di kolom pada tabel Customer)COUNTROWS ( RELATEDTABLE ( Sales ) )
Mencari nilai tanpa relasiLOOKUPVALUE ( Product[Price], Product[SKU], Sales[SKU] )
Jalur induk dan anak (untuk hierarki dan keamanan tingkat baris)PATH ( Employee[Employee ID], Employee[Manager ID] )
Pengguna yang sedang masuk, untuk keamanan tingkat baris dinamisUSERPRINCIPALNAME ()

Fungsi tabel

Fungsi ini mengembalikan tabel: pakai di tabel terhitung, di dalam CALCULATE, atau di iterator.

FungsinyaDAX
Nilai unik dalam filter saat iniVALUES ( Product[Category] )
Baris yang memenuhi syaratFILTER ( Product, Product[Price] > 100 )
N baris teratas berdasarkan ukuranTOPN ( 5, ALL ( Product[Product] ), [Total Sales] )
Mengelompokkan menurut kolom dan menambahkan ukuranSUMMARIZECOLUMNS ( Product[Category], "Sales", [Total Sales] )
Menambahkan kolom ke tabelADDCOLUMNS ( VALUES ( Product[Category] ), "Sales", [Total Sales] )
Memilih dan mengganti nama kolomSELECTCOLUMNS ( Customer, "Name", Customer[Name], "City", Customer[City] )
Daftar angkaGENERATESERIES ( 1, 10, 1 )
Semua kombinasi dua tabelCROSSJOIN ( VALUES ( 'Date'[Year] ), VALUES ( Product[Category] ) )
Menumpuk dua tabel dengan kolom yang samaUNION ( 'Sales 2024', 'Sales 2025' )

Variabel

VAR memberi nama pada satu langkah dan menghitungnya sekali; RETURN memberikan hasilnya.

FungsinyaDAX
Satu variabelMargin % = VAR Revenue = [Total Sales] RETURN DIVIDE ( Revenue - [Total Cost], Revenue )
Beberapa variabelSales vs LY = VAR CY = [Total Sales] VAR PY = CALCULATE ( [Total Sales], SAMEPERIODLASTYEAR ( 'Date'[Date] ) ) RETURN CY - PY
Tabel dalam variabelTop 5 Total = VAR Top5 = TOPN ( 5, ALL ( Product[Product] ), [Total Sales] ) RETURN CALCULATE ( [Total Sales], Top5 )

Langkah Power Query (M)

Power Query membentuk data sebelum dimuat. Ini rumus M di balik tombol yang paling sering dipakai.

FungsinyaM
Menyimpan baris yang cocokTable.SelectRows(Source, each [Status] = "Paid")
Menghapus kolomTable.RemoveColumns(Source, {"Notes", "Temp"})
Mengatur tipe data kolomTable.TransformColumnTypes(Source, {{"Amount", type number}, {"Date", type date}})
Mengganti nama kolomTable.RenameColumns(Source, {{"amt", "Amount"}})
Menambahkan kolomTable.AddColumn(Source, "Total", each [Quantity] * [Price], type number)
Menggabungkan (merge) dua queryTable.NestedJoin(Sales, {"ProductID"}, Products, {"ProductID"}, "Product", JoinKind.LeftOuter)
Menumpuk (append) queryTable.Combine({Sales2024, Sales2025})
Mengubah kolom menjadi baris (unpivot)Table.UnpivotOtherColumns(Source, {"Product"}, "Month", "Amount")
Mengelompokkan dan mengagregasiTable.Group(Source, {"Category"}, {{"Sales", each List.Sum([Amount]), type number}})
Mengganti error dengan nilaiTable.ReplaceErrorValues(Source, {{"Amount", 0}})

Cheat sheet Power BI ini merangkum DAX yang paling sering kamu tulis dalam satu halaman: agregasi, iterator X, CALCULATE dan fungsi yang mengubah filter, kecerdasan waktu, fungsi teks dan tanggal, serta pola ukuran (measure) yang bisa kamu salin, seperti persentase dari total, pertumbuhan dari tahun ke tahun, dan total berjalan.

Contohnya memakai model penjualan dengan tabel Sales, Product, Customer, dan 'Date'; ganti namanya sesuai modelmu. Semua DAX di sini sudah diurai oleh mesin di balik kursus Power BI Coddy, tempat kamu bisa menulisnya di ruang kerja Power BI langsung di browser lalu memeriksanya.

FAQ cheat sheet Power BI

Apakah cheat sheet Power BI ini gratis?

Ya. Baca di sini atau simpan sebagai bookmark; tidak perlu daftar.

Apa bedanya ukuran dan kolom terhitung?

Kolom terhitung dihitung sekali per baris saat refresh lalu disimpan, jadi kamu bisa memotong data dengannya lewat slicer. Ukuran dihitung untuk setiap sel visual, dengan filter sel itu, dan tidak menyimpan apa pun. Total dan rasio sebaiknya dibuat sebagai ukuran.

Apa fungsi CALCULATE?

CALCULATE menghitung ekspresi dengan filter yang diubah: menambahkan, mengganti, atau menghapus filter, lalu menghitung hasilnya. Sebagian besar DAX di luar total sederhana adalah CALCULATE dengan argumen filter yang tepat.

Kenapa memakai DIVIDE, bukan operator /?
DIVIDE mengembalikan nilai kosong (atau nilai pilihanmu) saat penyebutnya nol atau kosong. Operator / justru mengembalikan tak hingga atau nilai error, yang kemudian muncul di visual.
Apakah aku perlu tabel tanggal untuk kecerdasan waktu?
Ya. Fungsi seperti TOTALYTD dan SAMEPERIODLASTYEAR butuh tabel dengan satu baris per hari, tanpa celah dan mencakup tahun penuh, yang berelasi dengan tabel fakta dan ditandai sebagai tabel tanggal.
Apakah DAX ini berjalan di Power Pivot Excel dan Analysis Services?

Bahasa DAX-nya sama, jadi hampir semuanya juga berjalan di sana. Beberapa fungsi yang lebih baru hadir di Power BI lebih dulu.

Di mana aku bisa berlatih DAX?

Di kursus Power BI Coddy: setiap pelajaran memberimu ruang kerja Power BI di browser dan memeriksa ukuranmu pada data pelajaran dan salinan tersembunyinya.

Ilustrasi bahasa pemrograman di Coddy

Belajar Power BI bersama Coddy

Mulai