Acara
Bergabunglah dengan kami di FabCon Vegas
31 Mar, 23 - 2 Apr, 23
Acara utama yang dipimpin komunitas Microsoft Fabric, Power BI, SQL, dan AI. 31 Maret hingga 2 April 2025.
Daftar hari iniBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Data Analysis Expressions (DAX) adalah bahasa ekspresi rumus yang digunakan dalam Analysis Services, Power BI, dan Power Pivot di Excel. Rumus DAX mencakup fungsi, operator, dan nilai untuk melakukan perhitungan dan kueri tingkat lanjut pada data dalam tabel dan kolom terkait dalam model data tabular.
Artikel ini hanya menyediakan pengantar dasar untuk konsep terpenting di DAX. Ini menjelaskan DAX sebagaimana diterapkan pada semua produk yang menggunakannya. Beberapa fungsionalitas mungkin tidak berlaku untuk produk atau kasus penggunaan tertentu. Lihat dokumentasi produk Anda yang menjelaskan implementasi khusus DAX.
Rumus DAX digunakan dalam pengukuran, kolom terhitung, tabel terhitung, dan keamanan tingkat baris.
Pengukuran adalah rumus perhitungan dinamis di mana hasil berubah tergantung pada konteks. Pengukuran digunakan dalam pelaporan yang mendukung menggabungkan dan memfilter data model dengan menggunakan beberapa atribut seperti laporan Power BI atau Excel PivotTable atau PivotChart. Pengukuran dibuat dengan menggunakan bilah rumus DAX di perancang model.
Rumus dalam ukuran dapat menggunakan fungsi agregasi standar yang dibuat secara otomatis dengan menggunakan fitur Autosum, seperti COUNT atau SUM, atau Anda bisa menentukan rumus Anda sendiri dengan menggunakan bilah rumus DAX. Ukuran bernama dapat diberikan sebagai argumen ke ukuran lainnya.
Saat Anda menentukan rumus untuk ukuran di bilah rumus, fitur Tooltip memperlihatkan pratinjau tentang hasil untuk total dalam konteks saat ini, tetapi hasilnya tidak langsung terlihat di mana pun. Alasan Anda tidak dapat melihat hasil (difilter) dari perhitungan segera adalah karena hasil pengukuran tidak dapat ditentukan tanpa konteks. Untuk mengevaluasi ukuran memerlukan aplikasi klien pelaporan yang dapat menyediakan konteks yang diperlukan untuk mengambil data yang relevan dengan setiap sel lalu mengevaluasi ekspresi untuk setiap sel. Klien tersebut mungkin merupakan Excel PivotTable atau PivotChart, laporan Power BI, atau ekspresi tabel dalam kueri DAX di SQL Server Management Studio (SSMS).
Terlepas dari klien, kueri terpisah dijalankan untuk setiap sel dalam hasil. Artinya, setiap kombinasi header baris dan kolom dalam PivotTable, atau setiap pilihan pemotong dan filter dalam laporan Power BI, menghasilkan subset data yang berbeda di mana pengukuran dihitung. Misalnya, menggunakan rumus pengukuran yang sangat sederhana ini:
Total Sales = SUM([Sales Amount])
Saat pengguna menempatkan pengukuran TotalSales dalam laporan, lalu menempatkan kolom Kategori Produk dari tabel Produk ke dalam Filter, jumlah Jumlah Penjualan dihitung dan ditampilkan untuk setiap kategori produk.
Tidak seperti kolom terhitung, sintaks untuk pengukuran menyertakan nama pengukuran sebelum rumus. Dalam contoh yang baru saja disediakan, nama Total Sales muncul sebelum rumus. Setelah Anda membuat ukuran, nama dan definisinya muncul dalam daftar Bidang aplikasi klien pelaporan, dan tersedia untuk semua pengguna model, tergantung pada perspektif dan peran.
Untuk mempelajari selengkapnya, lihat:
Tindakan di Power BI Desktop
Pengukuran dalam Analysis Services
Pengukuran di Pivot Power
Kolom terhitung adalah kolom yang Anda tambahkan ke tabel yang sudah ada (di perancang model) lalu buat rumus DAX yang menentukan nilai kolom. Saat kolom terhitung berisi rumus DAX yang valid, nilai dihitung untuk setiap baris segera setelah rumus dimasukkan. Nilai kemudian disimpan dalam model data dalam memori. Misalnya, dalam tabel Tanggal, saat rumus dimasukkan ke dalam bilah rumus:
= [Calendar Year] & " Q" & [Calendar Quarter]
Nilai untuk setiap baris dalam tabel dihitung dengan mengambil nilai dari kolom Tahun Kalender (dalam tabel Tanggal yang sama), menambahkan spasi dan huruf kapital Q, lalu menambahkan nilai dari kolom Kuartal Kalender (dalam tabel Tanggal yang sama). Hasil untuk setiap baris dalam kolom terhitung dihitung segera dan muncul, misalnya, seperti 2017 Q1. Nilai kolom hanya dihitung ulang jika tabel atau tabel terkait diproses (refresh) atau model dibongkar dari memori lalu dimuat ulang, seperti saat menutup dan membuka kembali file Power BI Desktop.
Untuk mempelajari selengkapnya, lihat:
Kolom terhitung di Power BI Desktop
Kolom dihitung di Analysis Services
Kolom Terhitung di Power Pivot.
Tabel terhitung adalah objek komputasi, berdasarkan ekspresi rumus, berasal dari semua atau sebagian tabel lain dalam model yang sama. Alih-alih mengkueri dan memuat nilai ke dalam kolom tabel baru Anda dari sumber data, rumus DAX menentukan nilai tabel.
Tabel yang dihitung dapat membantu dalam dimensi permainan peran. Contohnya adalah tabel Tanggal, sebagai OrderDate, ShipDate, atau DueDate, tergantung pada hubungan kunci asing. Dengan membuat tabel terhitung untuk ShipDate secara eksplisit, Anda mendapatkan tabel mandiri yang tersedia untuk kueri, sepenuhnya dapat dioperasikan seperti tabel lainnya. Tabel terhitung juga berguna saat mengonfigurasi set baris yang difilter, atau subset atau superset kolom dari tabel lain yang sudah ada. Ini memungkinkan Anda untuk menjaga tabel asli tetap utuh saat membuat variasi tabel tersebut untuk mendukung skenario tertentu.
Tabel terkalkulasi mendukung hubungan dengan tabel lain. Kolom dalam tabel terhitung Anda memiliki tipe data, pemformatan, dan bisa termasuk dalam kategori data. Tabel terhitung dapat diberi nama, dan dimunculkan atau disembunyikan sama seperti tabel lainnya. Tabel terhitung dihitung ulang jika salah satu tabel yang ditarik datanya disegarkan atau diperbarui.
Untuk mempelajari selengkapnya, lihat:
Tabel yang dihitung di Power BI Desktop
Tabel terhitung di Analysis Services.
Dengan keamanan tingkat baris, rumus DAX harus mengevaluasi menjadi kondisi Boolean TRUE
/FALSE
, menentukan baris mana yang dapat dikembalikan berdasarkan hasil kueri oleh anggota dari peran tertentu. Misalnya, untuk anggota peran Penjualan, gunakan tabel Pelanggan dengan rumus DAX berikut:
= Customers[Country] = "USA"
Anggota peran Penjualan hanya akan dapat melihat data untuk pelanggan di AS, dan agregat seperti TOTAL, hanya dihasilkan untuk pelanggan di AS. Keamanan tingkat baris tidak tersedia di Power Pivot di Excel.
Saat menentukan keamanan tingkat baris dengan menggunakan rumus DAX, Anda membuat kumpulan baris yang diizinkan. Ini tidak menolak akses ke baris lain; sebaliknya, baris-baris tersebut tidak dikembalikan sebagai bagian dari set baris yang diizinkan. Peran lain dapat memungkinkan akses ke baris yang dikecualikan oleh rumus DAX. Jika pengguna adalah anggota peran lain, dan keamanan tingkat baris peran tersebut memungkinkan akses ke kumpulan baris tertentu, pengguna dapat melihat data untuk baris tersebut.
Rumus keamanan tingkat baris berlaku untuk baris yang ditentukan serta baris terkait. Saat tabel memiliki beberapa hubungan, filter menerapkan keamanan untuk hubungan yang aktif. Rumus keamanan tingkat baris akan bersinggungan dengan rumus lain yang ditentukan untuk tabel terkait.
Untuk mempelajari selengkapnya, lihat:
Keamanan tingkat baris (RLS) dengan Power BI
Peran dalam Analysis Services
Kueri DAX dapat dibuat dan dijalankan di SQL Server Management Studio (SSMS) dan alat sumber terbuka seperti DAX Studio (daxstudio.org). Tidak seperti rumus penghitungan DAX, yang hanya dapat dibuat dalam model data tabular, kueri DAX juga dapat dijalankan terhadap model Analysis Services Multidimensional. Kueri DAX sering kali lebih mudah ditulis dan lebih efisien daripada kueri Ekspresi Data Multidmensional (MDX).
Kueri DAX adalah pernyataan, mirip dengan pernyataan SELECT di T-SQL. Jenis kueri DAX yang paling dasar adalah mengevaluasi pernyataan. Misalnya
EVALUATE
( FILTER ( 'DimProduct', [SafetyStockLevel] < 200 ) )
ORDER BY [EnglishProductName] ASC
Menghasilkan tabel dalam Hasil yang hanya mencantumkan produk-produk dengan Level Stok Keamanan kurang dari 200, diurutkan naik berdasarkan NamaProdukInggris.
Anda bisa membuat pengukuran sebagai bagian dari kueri. Pengukuran hanya ada selama durasi kueri. Untuk mempelajari lebih lanjut, lihat kueri DAX.
Rumus DAX sangat penting untuk membuat perhitungan dalam kolom terhitung dan ukuran terhitung, serta mengamankan data Anda menggunakan keamanan tingkat baris. Untuk membuat rumus untuk kolom dan pengukuran terhitung, gunakan bilah rumus di sepanjang bagian atas jendela perancang model atau Editor DAX. Untuk membuat rumus untuk keamanan tingkat baris, gunakan kotak dialog Manajer Peran atau Kelola peran. Informasi di bagian ini dimaksudkan untuk membuat Anda mulai memahami dasar-dasar rumus DAX.
Rumus DAX bisa sangat sederhana atau cukup kompleks. Tabel berikut ini memperlihatkan beberapa contoh rumus sederhana yang bisa digunakan dalam kolom terhitung.
Rumus | Definisi |
---|---|
= TODAY() |
Menyisipkan tanggal hari ini di setiap baris kolom terhitung. |
= 3 |
Menyisipkan nilai 3 di setiap baris kolom terhitung. |
= [Column1] + [Column2] |
Menambahkan nilai dalam baris [Column1] dan [Column2] yang sama dan menempatkan hasilnya di kolom terhitung dari baris yang sama. |
Apakah rumus yang Anda buat sederhana atau kompleks, Anda bisa menggunakan langkah-langkah berikut saat membuat rumus:
Setiap rumus harus dimulai dengan tanda sama dengan (=).
Anda dapat mengetik atau memilih nama fungsi, atau mengetik ekspresi.
Mulai ketik beberapa huruf pertama fungsi atau nama yang Anda inginkan, dan LengkapiOtomatis menampilkan daftar fungsi, tabel, dan kolom yang tersedia. Tekan TAB untuk menambahkan item dari daftar LengkapiOtomatis ke rumus.
Anda juga dapat mengklik tombol
Berikan argumen ke fungsi dengan memilihnya dari daftar dropdown tabel dan kolom yang mungkin, atau dengan mengetikkan nilai.
Periksa kesalahan sintaks: pastikan bahwa semua tanda kurung ditutup dan kolom, tabel, dan nilai direferensikan dengan benar.
Tekan ENTER untuk menerima rumus.
Catatan
Dalam kolom terhitung, segera setelah Anda memasukkan rumus dan rumus divalidasi, kolom diisi dengan nilai. Dalam pengukuran, menekan ENTER menyimpan definisi pengukuran ke dalam tabel. Jika rumus tidak valid, kesalahan akan ditampilkan.
Dalam contoh ini, mari kita perhatikan rumus dalam suatu ukuran yang bernama Days pada kuartal saat ini:
Days in Current Quarter = COUNTROWS( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER( LASTDATE('Date'[Date])), ENDOFQUARTER('Date'[Date])))
Ukuran ini digunakan untuk membuat rasio perbandingan antara periode yang tidak lengkap dan periode sebelumnya. Rumus harus memperhitungkan proporsi periode yang telah berlalu, dan membandingkannya dengan proporsi yang sama pada periode sebelumnya. Dalam hal ini, [Days Current Quarter to Date]/[Days in Current Quarter] memberikan perbandingan waktu yang telah berlalu pada periode saat ini.
Rumus ini berisi elemen berikut:
Elemen rumus | Deskripsi |
---|---|
Days in Current Quarter |
Nama ukuran. |
= |
Tanda sama dengan (=) memulai rumus. |
COUNTROWS |
COUNTROWS menghitung jumlah baris dalam tabel Tanggal |
() |
Kurung buka dan tutup menentukan argumen. |
DATESBETWEEN |
Fungsi DATESBETWEEN mengembalikan tanggal antara tanggal terakhir untuk setiap nilai di kolom Tanggal dalam tabel Tanggal. |
'Date' |
Menetapkan tabel Tanggal. Tabel berada dalam tanda kutip tunggal. |
[Date] |
Menentukan kolom Tanggal dalam tabel Tanggal. Kolom ditandai dengan tanda kurung siku. |
, |
|
STARTOFQUARTER |
Fungsi STARTOFQUARTER mengembalikan tanggal awal kuartal. |
LASTDATE |
Fungsi LASTDATE mengembalikan tanggal terakhir kuartal. |
'Date' |
Menentukan tabel tanggal. |
[Date] |
Menentukan kolom Tanggal dalam tabel Tanggal. |
, |
|
ENDOFQUARTER |
Fungsi ENDOFQUARTER |
'Date' |
Mengatur tabel Tanggal. |
[Date] |
Menentukan kolom Tanggal dalam tabel Tanggal. |
LengkapiOtomatis membantu Anda memasukkan sintaks rumus yang valid dengan memberi Anda opsi untuk setiap elemen dalam rumus.
Anda bisa menggunakan rumus LengkapiOtomatis di tengah rumus yang ada dengan fungsi berlapis. Teks segera sebelum titik penyisipan digunakan untuk menampilkan nilai dalam daftar drop-down, dan semua teks setelah titik penyisipan tetap tidak berubah.
AutoComplete tidak menambahkan kurung tutup untuk fungsi maupun mencocokkan tanda kurung secara otomatis. Anda harus memastikan bahwa setiap fungsi secara sintis benar atau Anda tidak dapat menyimpan atau menggunakan rumus.
Anda dapat menumpuk fungsi, yang berarti Anda menggunakan hasil dari satu fungsi sebagai argumen fungsi lain. Anda dapat menumpuk hingga 64 tingkat fungsi dalam kolom terhitung. Namun, penyusunan bersarang dapat mempersulit pembuatan atau pemecahan masalah rumus. Banyak fungsi dirancang untuk digunakan hanya sebagai fungsi berlapis. Fungsi-fungsi ini mengembalikan tabel, yang tidak dapat disimpan secara langsung sebagai hasilnya; harus disediakan sebagai input ke fungsi tabel. Misalnya, fungsi SUMX, AVERAGEX, dan MINX semuanya memerlukan tabel sebagai argumen pertama.
Fungsi adalah rumus bernama dalam ekspresi. Sebagian besar fungsi memiliki argumen yang diperlukan dan opsional, juga dikenal sebagai parameter, sebagai input. Saat fungsi dijalankan, nilai dikembalikan. DAX menyertakan fungsi yang dapat Anda gunakan untuk melakukan penghitungan menggunakan tanggal dan waktu, membuat nilai kondisional, bekerja dengan string, melakukan pencarian berdasarkan hubungan, dan kemampuan untuk mengulangi tabel untuk melakukan perhitungan rekursif. Jika Anda terbiasa dengan rumus Excel, banyak fungsi ini akan tampak sangat mirip; namun, rumus DAX berbeda dengan cara penting berikut:
Fungsi DAX selalu mereferensikan kolom lengkap atau tabel. Jika Anda hanya ingin menggunakan nilai tertentu dari tabel atau kolom, Anda bisa menambahkan filter ke rumus.
Jika Anda perlu menyesuaikan perhitungan berdasarkan baris demi baris, DAX menyediakan fungsi yang memungkinkan Anda menggunakan nilai baris saat ini atau nilai terkait sebagai semacam parameter, untuk melakukan penghitungan yang bervariasi menurut konteks. Untuk memahami cara kerja fungsi ini, lihat Konteks
DAX menyertakan banyak fungsi yang mengembalikan tabel, bukan nilai. Tabel tidak ditampilkan dalam klien pelaporan, tetapi digunakan untuk memberikan input ke fungsi lain. Misalnya, Anda dapat mengambil tabel lalu menghitung nilai berbeda di dalamnya, atau menghitung jumlah dinamis di seluruh tabel atau kolom yang difilter.
Fungsi DAX mencakup berbagai fungsi kecerdasan waktu. Fungsi-fungsi ini memungkinkan Anda menentukan atau memilih rentang tanggal, dan melakukan perhitungan dinamis berdasarkan tanggal atau rentang ini. Misalnya, Anda dapat membandingkan jumlah di seluruh periode paralel.
Fungsi agregasi menghitung nilai (skalar) seperti hitungan, jumlah, rata-rata, minimum, atau maksimum untuk semua baris dalam kolom atau tabel seperti yang ditentukan oleh ekspresi. Untuk mempelajari selengkapnya, lihat fungsi Agregasi .
Fungsi tanggal dan waktu di DAX mirip dengan fungsi tanggal dan waktu di Microsoft Excel. Namun, fungsi DAX didasarkan pada tipe data tanggal dan waktu mulai 1 Maret 1900. Untuk mempelajari selengkapnya, lihat fungsi Tanggal dan waktu .
Fungsi filter di DAX mengembalikan jenis data tertentu, mencari nilai dalam dongeng terkait, dan memfilter menurut nilai terkait. Fungsi pencarian berfungsi dengan menggunakan tabel dan hubungan, seperti database. Fungsi pemfilteran memungkinkan Anda memanipulasi konteks data untuk membuat perhitungan dinamis. Untuk mempelajari selengkapnya, lihat fungsi Filter .
Fungsi keuangan dalam DAX digunakan dalam rumus yang melakukan perhitungan keuangan, seperti nilai bersih saat ini dan tingkat pengembalian. Fungsi-fungsi ini mirip dengan fungsi keuangan yang digunakan dalam Microsoft Excel. Untuk mempelajari lebih lanjut, lihat Fungsi keuangan.
Fungsi informasi melihat sel atau baris yang disediakan sebagai argumen dan memberi tahu Anda apakah nilai cocok dengan jenis yang diharapkan. Misalnya, fungsi ISERROR mengembalikan TRUE
jika nilai yang Anda referensikan berisi kesalahan. Untuk mempelajari selengkapnya, lihat fungsi informasi .
Fungsi logika bertindak berdasarkan ekspresi untuk mengembalikan informasi tentang nilai dalam ekspresi. Misalnya, fungsi TRUE
memungkinkan Anda mengetahui apakah ekspresi yang Anda evaluasi mengembalikan nilai TRUE
. Untuk mempelajari selengkapnya, lihat fungsi logis .
Fungsi matematika di DAX sangat mirip dengan fungsi matematika dan trigonometri Excel. Beberapa perbedaan kecil ada dalam jenis data numerik yang digunakan oleh fungsi DAX. Untuk mempelajari lebih lanjut, lihat fungsi matematika dan trig.
Fungsi-fungsi ini melakukan tindakan unik yang tidak dapat didefinisikan oleh salah satu kategori yang dimiliki oleh sebagian besar fungsi lain. Untuk mempelajari lebih lanjut, lihat Fungsi lain.
Fungsi hubungan di DAX memungkinkan Anda mengembalikan nilai dari tabel terkait lainnya, menentukan hubungan tertentu untuk digunakan dalam ekspresi, dan menentukan arah pemfilteran silang. Untuk mempelajari selengkapnya, lihat fungsi Hubungan .
Fungsi statistik menghitung nilai yang terkait dengan distribusi statistik dan probabilitas, seperti simpang siur standar dan jumlah permutasi. Untuk mempelajari lebih lanjut, lihat fungsi statistik .
Fungsi teks di DAX sangat mirip dengan rekan-rekan mereka di Excel. Anda dapat mengembalikan bagian dari string, mencari teks dalam string, atau menggabungkan nilai string. DAX juga menyediakan fungsi untuk mengontrol format untuk tanggal, waktu, dan angka. Untuk mempelajari selengkapnya, lihat Fungsi Teks .
Fungsi inteligensi waktu yang disediakan dalam DAX memungkinkan Anda membuat perhitungan yang menggunakan pengetahuan bawaan tentang kalender dan tanggal. Dengan menggunakan rentang waktu dan tanggal dalam kombinasi dengan agregasi atau perhitungan, Anda dapat membangun perbandingan yang bermakna di seluruh periode waktu yang sebanding untuk penjualan, inventaris, dan sebagainya. Untuk mempelajari lebih lanjut, lihat Fungsi kecerdasan waktu (DAX).
Fungsi-fungsi ini mengembalikan tabel atau memanipulasi tabel yang ada. Misalnya, dengan menggunakan ADDCOLUMNS, Anda dapat menambahkan kolom terhitung ke tabel tertentu, atau Anda bisa mengembalikan tabel ringkasan melalui sekumpulan grup dengan fungsi SUMMARIZECOLUMNS. Untuk mempelajari selengkapnya, lihat fungsi manipulasi tabel .
Anda dapat membuat variabel dalam ekspresi dengan menggunakanVAR
VAR
TotalQty = SUM ( Sales[Quantity] )
Return
IF (
TotalQty > 1000,
TotalQty * 0.95,
TotalQty * 1.25
)
Dalam contoh ini, TotalQty dapat diteruskan sebagai variabel bernama ke ekspresi lain. Variabel dapat dari jenis data skalar apa pun, termasuk tabel. Menggunakan variabel dalam rumus DAX Anda bisa sangat efektif.
Anda dapat mengimpor data ke dalam model dari berbagai sumber data yang mungkin mendukung jenis data yang berbeda. Saat Anda mengimpor data ke dalam model, data dikonversi ke salah satu jenis data model tabular. Saat data model digunakan dalam perhitungan, data kemudian dikonversi ke jenis data DAX selama durasi dan output perhitungan. Saat Anda membuat rumus DAX, istilah yang digunakan dalam rumus akan secara otomatis menentukan tipe data nilai yang dikembalikan.
DAX mendukung jenis data berikut:
Jenis data dalam model | Jenis data di DAX | Deskripsi |
---|---|---|
Whole Number |
Nilai bilangan bulat 64 bit (delapan byte) 1, 2 | Angka yang tidak memiliki tempat desimal. Bilangan bulat dapat berupa angka positif atau negatif, tetapi harus berupa bilangan bulat antara -9.223.372.036.854.775.808 (-2^63) dan 9.223.372.036.854.775.807 (2^63-1). |
Decimal Number |
Angka riil 64 bit (delapan byte) 1, 2 | Bilangan riil adalah angka yang dapat memiliki tempat desimal. Bilangan riil mencakup berbagai nilai: Nilai negatif dari -1,79E +308 hingga -2,23E -308 Nol Nilai positif dari 2,23E -308 hingga 1,79E + 308 Namun, jumlah digit signifikan dibatasi hingga 17 digit desimal. |
Boolean |
Boolean | Nilai Benar atau Nilai Salah. |
Text |
Tali | Rangkaian data karakter Unicode. Bisa berupa string, angka, atau tanggal yang diwakili dalam format teks. |
Date |
Tanggal/waktu | Tanggal dan waktu dalam representasi tanggal-waktu yang diterima. Tanggal yang valid adalah semua tanggal setelah 1 Maret 1900. |
Currency |
Mata uang | Jenis data mata uang memungkinkan nilai antara -922.337.203.685.477,5808 hingga 922.337.203.685.477,5807 dengan empat digit desimal presisi tetap. |
N/A |
Kosong | Kosong adalah jenis data di DAX yang mewakili dan menggantikan SQL null. Anda dapat membuat nilai kosong dengan menggunakan fungsi BLANK, dan menguji nilai kosong dengan menggunakan fungsi logika, ISBLANK. |
Model data tabular juga menyertakan jenis data Tabel
Meskipun jenis data biasanya diatur secara otomatis, penting untuk memahami jenis data dan cara penerapannya, khususnya, ke rumus DAX. Kesalahan dalam rumus atau hasil yang tidak terduga, misalnya, sering disebabkan oleh penggunaan operator tertentu yang tidak dapat digunakan dengan tipe data yang ditentukan dalam argumen. Misalnya, rumus, = 1 & 2
, mengembalikan hasil string 12. Rumus, = "1" + "2"
, namun, mengembalikan hasil bilangan bulat 3.
Context adalah konsep penting untuk dipahami saat membuat rumus DAX. Kontekslah yang memungkinkan Anda melakukan analisis dinamis, karena hasil perubahan rumus untuk mencerminkan pemilihan baris atau sel saat ini dan juga data terkait. Memahami konteks dan menggunakan konteks secara efektif sangat penting untuk membangun analisis berkinerja tinggi, dinamis, dan untuk memecahkan masalah dalam rumus.
Rumus dalam model tabular dapat dievaluasi dalam konteks yang berbeda, tergantung pada elemen desain lainnya:
Ada berbagai jenis konteks: konteks baris , konteks kueri , dan konteks filter .
Konteks baris dapat dipahami sebagai "baris saat ini". Jika Anda membuat rumus dalam kolom terhitung, konteks baris untuk rumus tersebut menyertakan nilai dari semua kolom di baris saat ini. Jika tabel terkait dengan tabel lain, konten juga menyertakan semua nilai dari tabel lain yang terkait dengan baris saat ini.
Misalnya, Anda membuat kolom kalkulasi, = [Freight] + [Tax]
, yang menjumlahkan nilai dari dua kolom, Angkutan dan Pajak, dari tabel yang sama. Rumus ini secara otomatis hanya mendapatkan nilai dari baris saat ini di kolom yang ditentukan.
Konteks baris juga mengikuti hubungan apa pun yang telah ditentukan di antara tabel, termasuk hubungan yang ditentukan dalam kolom terhitung dengan menggunakan rumus DAX, untuk menentukan baris mana dalam tabel terkait yang terkait dengan baris saat ini.
Misalnya, rumus berikut menggunakan fungsi RELATED untuk mengambil nilai pajak dari tabel terkait, berdasarkan wilayah tempat pesanan dikirim. Nilai pajak ditentukan dengan menggunakan nilai untuk wilayah dalam tabel saat ini, mencari wilayah dalam tabel terkait, lalu mendapatkan tarif pajak untuk wilayah tersebut dari tabel terkait.
= [Freight] + RELATED('Region'[TaxRate])
Rumus ini mendapatkan tarif pajak untuk wilayah saat ini dari tabel Wilayah dan menambahkannya ke nilai kolom Angkutan. Dalam rumus DAX, Anda tidak perlu mengetahui atau menentukan hubungan tertentu yang menyambungkan tabel.
DAX menyertakan fungsi yang melakukan perhitungan berulang pada tabel. Fungsi-fungsi ini dapat memiliki beberapa baris saat ini, masing-masing dengan konteks barisnya sendiri. Intinya, fungsi-fungsi ini memungkinkan Anda membuat rumus yang melakukan operasi secara rekursif melalui perulangan dalam dan luar.
Misalnya, model Anda berisi tabel Produk dan tabel Penjualan. Pengguna mungkin ingin melalui seluruh tabel penjualan, yang penuh dengan transaksi yang melibatkan beberapa produk, dan menemukan jumlah terbesar yang dipesan untuk setiap produk dalam satu transaksi.
Dengan DAX Anda dapat membuat satu rumus yang mengembalikan nilai yang benar, dan hasilnya diperbarui secara otomatis setiap kali pengguna menambahkan data ke tabel.
= MAXX(FILTER(Sales,[ProdKey] = EARLIER([ProdKey])),Sales[OrderQty])
Untuk contoh terperinci dari rumus ini, lihat SEBELUMNYA .
Untuk meringkas, fungsi EARLIER menyimpan konteks baris dari operasi yang mendahului operasi saat ini. Setiap saat, fungsi disimpan dalam memori dua set konteks: satu set konteks mewakili baris saat ini untuk perulangan dalam rumus, dan sekumpulan konteks lain mewakili baris saat ini untuk perulangan luar rumus. DAX secara otomatis memberi umpan nilai di antara dua perulangan sehingga Anda dapat membuat agregat yang kompleks.
Konteks kueri mengacu pada subset data yang diambil secara implisit untuk rumus. Misalnya, saat pengguna menempatkan pengukuran atau bidang ke dalam laporan, mesin memeriksa header baris dan kolom, pemotong, dan filter laporan untuk menentukan konteks. Kueri yang diperlukan kemudian dijalankan terhadap data model untuk mendapatkan subkumpulan data yang benar, membuat perhitungan yang ditentukan oleh rumus, lalu mengisi nilai dalam laporan.
Karena konteks berubah tergantung pada tempat Anda menempatkan rumus, hasil rumus juga dapat berubah. Misalnya, Anda membuat rumus yang menjumlahkan nilai di kolom Profit
Namun, pengguna biasanya tidak ingin melihat hasil yang sama ratusan kali, tetapi sebaliknya ingin mendapatkan keuntungan untuk tahun tertentu, negara tertentu, produk tertentu, atau beberapa kombinasi dari ini, dan kemudian mendapatkan total keseluruhan.
Dalam laporan, konteks diubah dengan memfilter, menambahkan, atau menghapus bidang, dan menggunakan pemotong. Untuk setiap perubahan, konteks kueri tempat pengukuran dievaluasi. Oleh karena itu, rumus yang sama yang digunakan dalam suatu ukuran dievaluasi dalam konteks kueri yang berbeda untuk setiap sel.
Filter konteks adalah kumpulan nilai yang diizinkan di setiap kolom, atau dalam nilai yang diambil dari tabel terkait. Filter dapat diterapkan ke kolom dalam perancang, atau di lapisan presentasi (laporan dan PivotTable). Filter juga dapat ditentukan secara eksplisit menurut ekspresi filter dalam rumus.
Konteks filter ditambahkan saat Anda menentukan batasan filter pada kumpulan nilai yang diizinkan dalam kolom atau tabel, dengan menggunakan argumen ke rumus. Konteks filter berlaku di atas konteks lain, seperti konteks baris atau konteks kueri.
Dalam model tabular, ada banyak cara untuk membuat konteks filter. Dalam konteks klien yang dapat menggunakan model, seperti laporan Power BI, pengguna dapat membuat filter dengan cepat dengan menambahkan pemotong atau filter laporan pada judul baris dan kolom. Anda juga dapat menentukan ekspresi filter langsung dalam rumus, untuk menentukan nilai terkait, untuk memfilter tabel yang digunakan sebagai input, atau untuk mendapatkan konteks secara dinamis untuk nilai yang digunakan dalam perhitungan. Anda juga dapat menghapus filter secara menyeluruh atau selektif pada kolom tertentu. Ini sangat berguna saat membuat rumus yang menghitung total keseluruhan.
Untuk mempelajari selengkapnya tentang cara membuat filter dalam rumus, lihat Fungsi FILTER (DAX).
Untuk contoh bagaimana filter dapat dibersihkan untuk membuat total keseluruhan, lihat ALL Function (DAX).
Untuk contoh cara menghapus dan menerapkan filter secara selektif dalam rumus, lihat ALLEXCEPT.
Saat Anda membuat rumus DAX, rumus pertama-tama diuji untuk sintaks yang valid, lalu diuji untuk memastikan nama kolom dan tabel yang disertakan dalam rumus dapat ditemukan dalam konteks saat ini. Jika ada kolom atau tabel yang ditentukan oleh rumus tidak dapat ditemukan, kesalahan akan ditampilkan.
Konteks selama validasi (dan operasi perhitungan ulang) ditentukan seperti yang dijelaskan di bagian sebelumnya, dengan menggunakan tabel yang tersedia dalam model, hubungan apa pun antara tabel, dan filter apa pun yang telah diterapkan.
Misalnya, jika Anda baru saja mengimpor beberapa data ke dalam tabel baru dan tidak terkait dengan tabel lain (dan Anda belum menerapkan filter apa pun), konteks saat ini adalah seluruh kumpulan kolom dalam tabel. Jika tabel ditautkan oleh hubungan ke tabel lain, konteks saat ini menyertakan tabel terkait. Jika Anda menambahkan kolom dari tabel ke laporan yang memiliki Slicer dan mungkin beberapa filter laporan, konteks untuk rumus adalah subset data di setiap sel laporan.
Konteks adalah konsep kuat yang juga dapat menyulitkan pemecahan masalah rumus. Kami menyarankan agar Anda memulai dengan rumus dan hubungan sederhana untuk melihat cara kerja konteks. Bagian berikut ini menyediakan beberapa contoh bagaimana rumus menggunakan berbagai jenis konteks untuk mengembalikan hasil secara dinamis.
Bahasa DAX menggunakan empat jenis operator perhitungan yang berbeda dalam rumus:
TRUE
'FALSE'.Untuk informasi terperinci tentang operator yang digunakan dalam rumus DAX, lihat operator DAX.
Tabel dalam model data tabular terlihat seperti tabel Excel, tetapi berbeda dalam cara mereka bekerja dengan data dan dengan rumus:
Anda dapat merujuk ke tabel dan kolom apa pun dengan menggunakan namanya. Misalnya, rumus berikut menunjukkan cara merujuk ke kolom dari dua tabel dengan menggunakan nama yang berkualifikasi penuh :
= SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])
Saat rumus dievaluasi, perancang model terlebih dahulu memeriksa sintaks umum, lalu memeriksa nama kolom dan tabel yang Anda sediakan terhadap kolom dan tabel yang mungkin dalam konteks saat ini. Jika nama ambigu atau jika kolom atau tabel tidak dapat ditemukan, Anda akan mendapatkan kesalahan pada rumus Anda (string #ERROR alih-alih nilai data dalam sel tempat kesalahan terjadi). Untuk mempelajari selengkapnya tentang persyaratan penamaan untuk tabel, kolom, dan objek lainnya, lihat Persyaratan Penamaan dalam sintaks DAX.
Dengan membuat hubungan antar tabel, Anda mendapatkan kemampuan untuk nilai terkait dalam tabel lain yang akan digunakan dalam perhitungan. Misalnya, Anda dapat menggunakan kolom terhitung untuk menentukan semua rekaman pengiriman yang terkait dengan penjual saat ini, lalu menjumlahkan biaya pengiriman untuk masing-masing data. Namun, dalam banyak kasus, hubungan mungkin tidak diperlukan. Anda bisa menggunakan fungsi LOOKUPVALUE
Banyak fungsi DAX mengharuskan hubungan ada di antara tabel, atau di antara beberapa tabel, untuk menemukan kolom yang telah Anda referensikan dan mengembalikan hasil yang masuk akal. Fungsi lain akan mencoba mengidentifikasi hubungan; namun, untuk hasil terbaik, Anda harus selalu membuat hubungan jika memungkinkan. Model data tabular mendukung beberapa hubungan di antara tabel. Untuk menghindari kebingungan atau hasil yang salah, hanya satu hubungan pada satu waktu yang ditetapkan sebagai hubungan aktif, tetapi Anda dapat mengubah hubungan aktif seperlunya untuk melintasi koneksi yang berbeda dalam data dalam perhitungan. fungsi USERELATIONSHIP dapat digunakan untuk menentukan satu atau beberapa hubungan yang akan digunakan dalam sebuah perhitungan tertentu.
Penting untuk mengamati aturan desain rumus ini saat menggunakan hubungan:
Saat tabel disambungkan oleh hubungan, Anda harus memastikan dua kolom yang digunakan sebagai kunci memiliki nilai yang cocok. Integritas referensial tidak diberlakukan, oleh karena itu dimungkinkan untuk memiliki nilai yang tidak cocok di kolom kunci dan masih membuat hubungan. Jika ini terjadi, Anda harus mengetahui bahwa nilai kosong atau nilai yang tidak cocok mungkin memengaruhi hasil rumus.
Saat Anda menautkan tabel dalam model Anda dengan menggunakan hubungan, Anda memperbesar cakupan, atau konteks, di mana rumus Anda dievaluasi. Perubahan dalam konteks yang dihasilkan dari penambahan tabel baru, hubungan baru, atau dari perubahan hubungan aktif dapat menyebabkan hasil Anda berubah dengan cara yang mungkin tidak Anda antisipasi. Untuk mempelajari selengkapnya, lihat Konteks di artikel ini.
Proses dan penghitungan ulang adalah dua operasi terpisah tetapi terkait. Anda harus memahami konsep-konsep ini secara menyeluruh saat merancang model yang berisi rumus kompleks, data dalam jumlah besar, atau data yang diperoleh dari sumber data eksternal.
Proses (refresh) memperbarui data dalam model dengan data baru dari sumber data eksternal.
Perhitungan Ulang adalah proses memperbarui hasil rumus untuk mencerminkan perubahan apa pun pada rumus itu sendiri dan untuk mencerminkan perubahan dalam data yang mendasar. Pengkalkulasian ulang dapat memengaruhi performa dengan cara berikut:
Nilai dalam kolom terhitung dihitung dan disimpan dalam model. Untuk memperbarui nilai di kolom terhitung, Anda harus memproses model menggunakan salah satu dari tiga perintah pemrosesan – Proses Penuh, Proses Data, atau Hitung Ulang Proses. Hasil rumus harus selalu dihitung ulang untuk seluruh kolom, setiap kali Anda mengubah rumus.
Nilai yang dihitung oleh ukuran dievaluasi secara dinamis setiap kali pengguna menambahkan ukuran ke PivotTable atau membuka laporan; saat pengguna memodifikasi konteks, nilai yang dikembalikan oleh ukuran tersebut berubah. Hasil pengukuran selalu mencerminkan yang terbaru dari cache memori.
Pemrosesan dan perhitungan ulang tidak berpengaruh pada rumus keamanan tingkat baris kecuali hasil pengkalkulasian ulang mengembalikan nilai yang berbeda, sehingga membuat baris dapat dikueri atau tidak dapat dikueri oleh anggota peran.
DAX terus-menerus ditingkatkan. Fungsi baru dan yang diperbarui dirilis dengan pembaruan yang akan datang, yang biasanya dirilis setiap bulan. Layanan diperbarui terlebih dahulu, diikuti oleh aplikasi yang diinstal seperti Power BI Desktop, Excel, SQL Server Management Studio (SSMS), dan ekstensi proyek Analysis Services untuk Visual Studio (SSDT). SQL Server Analysis Services diperbarui dengan pembaruan kumulatif berikutnya. Fungsi baru pertama kali diumumkan dan dijelaskan dalam referensi fungsi DAX yang bertepatan dengan pembaruan Power BI Desktop.
Tidak semua fungsi didukung dalam versi SQL Server Analysis Services dan Excel yang lebih lama.
Jika Anda mendapatkan kesalahan saat menentukan rumus, rumus mungkin berisi kesalahan syntactic, kesalahan semantik , atau kesalahan perhitungan .
Kesalahan sintaksis adalah yang paling mudah untuk diselesaikan. Mereka biasanya melibatkan tanda kurung atau koma yang hilang.
Jenis kesalahan lainnya terjadi ketika sintaksis benar, tetapi nilai atau kolom yang direferensikan tidak masuk akal dalam konteks rumus. Kesalahan semantik dan perhitungan semacam itu mungkin disebabkan oleh salah satu masalah berikut:
Dalam empat kasus pertama, DAX menandai seluruh kolom yang berisi rumus yang tidak valid. Dalam kasus terakhir, DAX membuat kolom berwarna abu-abu untuk menunjukkan bahwa kolom tersebut dalam keadaan tidak diolah.
Power BI Desktop
Power BI Desktop adalah aplikasi pemodelan dan pelaporan data gratis. Perancang model menyertakan editor DAX untuk membuat rumus perhitungan DAX.
Perancang Power Pivot di Excel model menyertakan editor DAX untuk membuat rumus perhitungan DAX.
Visual Studio dengan ekstensi proyek Analysis Services (VSIX) digunakan untuk membuat proyek model Analysis Services. Desainer model tabular yang diinstal dengan ekstensi proyek menyertakan editor DAX.
SQL Server Management Studio (SSMS) adalah alat penting untuk bekerja dengan Analysis Services. SSMS menyertakan editor kueri DAX untuk mengkueri model tabular dan multidmensional.
DAX Studio adalah alat klien sumber terbuka untuk membuat dan menjalankan kueri DAX terhadap Analysis Services, Power BI Desktop, dan Power Pivot dalam model Excel.
Editor Tabular adalah alat sumber terbuka yang menyediakan tampilan hierarkis intuitif dari setiap objek dalam metadata model tabular. Editor Tabular menyertakan Editor DAX dengan penyorotan sintaksis, yang menyediakan cara mudah untuk mengedit pengukuran, kolom terhitung, dan ekspresi tabel terhitung.
Saat mempelajari DAX, yang terbaik adalah menggunakan aplikasi yang akan Anda gunakan untuk membuat model data Anda. Analysis Services, Power BI Desktop, dan Power Pivot di Excel semuanya memiliki artikel dan tutorial yang menyertakan pelajaran tentang membuat pengukuran, kolom terhitung, dan filter baris dengan menggunakan DAX. Berikut adalah beberapa sumber daya tambahan:
Jalur pembelajaran menggunakan DAX di Power BI Desktop.
Buku Panduan Definitif tentang DAX oleh Alberto Ferrari dan Marco Russo (Microsoft Press). Sekarang di edisi kedua, panduan ekstensif ini menyediakan dasar-dasar untuk teknik performa tinggi yang inovatif untuk modeler data awal dan profesional BI.
DAX memiliki komunitas yang bersemangat yang selalu bersedia berbagi keahlian mereka. Microsoft Power BI Community memiliki forum diskusi khusus untuk DAX, perintah DAX dan Tips.
Acara
Bergabunglah dengan kami di FabCon Vegas
31 Mar, 23 - 2 Apr, 23
Acara utama yang dipimpin komunitas Microsoft Fabric, Power BI, SQL, dan AI. 31 Maret hingga 2 April 2025.
Daftar hari iniPelatihan
Modul
Menambahkan tabel dan kolom terhitung ke model Power BI Desktop - Training
Pada akhir modul ini, Anda akan dapat menambahkan tabel terhitung dan kolom terhitung ke model semantik Anda. Anda juga akan dapat menjelaskan konteks baris, yang digunakan untuk mengevaluasi rumus kolom terhitung. Karena dimungkinkan untuk menambahkan kolom ke tabel dengan menggunakan Power Query, Anda juga akan mempelajari kapan yang terbaik untuk membuat kolom terhitung alih-alih Power Query kolom kustom.