Baca dalam bahasa Inggris

Bagikan melalui


sintaks DAX

Artikel ini menguraikan persyaratan sintaks and untuk bahasa ekspresi rumus DAX.

Persyaratan sintaks

Rumus DAX selalu dimulai dengan sign yang sama (=). Setelah tanda sama dengan sign, Anda dapat memberikan ekspresi apa pun yang dievaluasi menjadi skalar, or ekspresi yang dapat dikonversi menjadi skalar. Ini termasuk yang berikut ini:

  • Konstanta skalar, ekspresi or yang menggunakan operator skalar (+,-,*,/,>=,...,&&, ...)

  • Referensi ke kolom or tabel. Bahasa DAX selalu menggunakan kolom tabel and sebagai input untuk fungsi, tidak pernah kumpulan valuesarbitrer array or.

  • Operator, konstanta, andvalues disediakan sebagai bagian dari ekspresi.

  • Hasil dari fungsi and beserta argumen-argumen yang dibutuhkannya. Beberapa fungsi DAX mengembalikan tabel alih-alih skalar, and harus dibungkus dalam fungsi yang mengevaluasi tabel and mengembalikan skalar; kecuali tabel adalah kolom tunggal, tabel baris tunggal, maka tabel tersebut diperlakukan sebagai skalar value.

    Sebagian besar fungsi DAX memerlukan satu or lebih banyak argumen, yang dapat mencakup tabel, kolom, ekspresi, andvalues. Namun, beberapa fungsi, seperti PI, not memerlukan argumen apa pun, tetapi selalu memerlukan tanda kurung untuk menunjukkan argumen null. Misalnya, Anda harus selalu mengetik PI(), notPI. Anda juga dapat menumpuk fungsi dalam fungsi lain.

  • Ekspresi. Ekspresi dapat berisi orall apa pun berikut ini: operator, konstanta, or referensi ke kolom.

Misalnya, berikut ini adalah rumus-rumus yang valid all.

Rumus Hasil
= 3 3
= "Sales" Penjualan
= 'Sales'[Amount] If Anda menggunakan rumus ini dalam tabel Penjualan, Anda akan mendapatkan value kolom Jumlah dalam tabel Penjualan untuk baris saat ini.
= (0.03 *[Amount])

=0.03 * [Amount]
Tiga persen dari value pada kolom Jumlah di tabel saat ini.

Meskipun rumus ini dapat digunakan untuk calculate persentase, hasilnya not ditampilkan sebagai persentase kecuali Anda menerapkan pemformatan dalam tabel.
= PI() value dari konstanta pi.

Rumus dapat bersifat berbeda tergantung pada cara penggunaannya. Anda harus selalu menyadari konteks and bagaimana data yang Anda gunakan dalam rumus berhubungan dengan related data lain yang mungkin digunakan dalam perhitungan.

Persyaratan penamaan

Model data sering kali contains beberapa tabel. Bersama dengan tabel and dan kolomnya, semua ini membentuk sebuah database yang disimpan di mesin analitik dalam-memori (VertiPaq). Dalam database tersebut, tabel all harus memiliki nama yang unik. Nama kolom juga harus unik dalam setiap tabel. nama objek Allpeka huruf besar/kecil; misalnya, nama SALESandSales akan mewakili tabel yang sama.

Setiap kolom andmeasure Anda tambahkan ke model data yang ada harus termasuk dalam tabel tertentu. Anda menentukan tabel yang contains kolom secara implisit, saat Anda membuat kolom terhitung dalam tabel, or secara eksplisit, saat Anda membuat measureand menentukan nama tabel tempat definisi measure harus disimpan.

Saat Anda menggunakan kolom or tabel sebagai input ke fungsi, Anda umumnya harus memenuhi syarat nama kolom. Nama lengkap kolom adalah nama tabel, diikuti dengan nama kolom dalam tanda kurung siku: misalnya, 'Penjualan A.S.'[Produk]. Nama yang sepenuhnya memenuhi syarat selalu diperlukan saat Anda mereferensikan kolom dalam konteks berikut:

  • Sebagai argumen untuk fungsi , VALUES

  • Sebagai argumen untuk fungsi, ALLorALLEXCEPT

  • Dalam argumen filter untuk fungsi, CALCULATEorCALCULATETABLE

  • Sebagai argumen untuk fungsi , RELATEDTABLE

  • Sebagai argumen untuk fungsi kecerdasan time apa pun

Nama kolom yang tidak memenuhi syarat hanyalah nama kolom, yang diapit dalam tanda kurung: misalnya, [Jumlah Penjualan]. Misalnya, saat Anda mereferensikan skalar value dari baris yang sama dari tabel saat ini, Anda dapat menggunakan nama kolom yang tidak memenuhi syarat.

If nama tabel contains spasi, kata kunci cadangan, or karakter yang tidak diizinkan, Anda harus mengapit nama tabel dalam tanda kutip tunggal. Anda juga harus mengapit nama tabel dalam tanda kutip if nama contains karakter apa pun di luar karakter alfanumerik ANSI range, terlepas dari apakah lokal Anda mendukung kumpulan karakter ornot. Misalnya, if Anda membuka buku kerja dengan contains nama tabel yang ditulis dalam karakter Sirilik, seperti 'Таблица', nama tabel harus diapit dalam tanda kutip, even meskipun mengandung not spasi.

Catatan

Untuk mempermudah memasukkan nama kolom yang sepenuhnya memenuhi syarat, gunakan fitur LengkapiOtomatis di editor rumus.

Tabel

  • Nama tabel diperlukan setiap kali kolom berasal dari tabel yang berbeda dari tabel saat ini. Nama tabel harus unik dalam database.

  • Nama tabel harus diapit dalam tanda kutip tunggal if berisi spasi, karakter khusus lainnya or karakter alfanumerik non-Bahasa Inggris.

Langkah

  • Measure nama harus selalu dalam tanda kurung.

  • nama Measure dapat berisi spasi.

  • Setiap nama measure harus unik dalam model. Oleh karena itu, nama tabel bersifat opsional di depan nama measure saat mereferensikan measureyang ada. Namun, saat membuat measure, Anda harus selalu menentukan tabel tempat definisi measure akan disimpan.

Kolom

Nama kolom harus unik dalam konteks tabel; namun, beberapa tabel dapat memiliki kolom dengan nama yang sama (disambiguasi dilengkapi dengan nama tabel).

Secara umum, kolom dapat dirujuk tanpa perlu menyebutkan tabel dasar tempatnya berada, except terutama jika ada konflik nama yang harus diselesaikan or dengan fungsi tertentu yang mengharuskan nama kolom disebutkan lengkap.

Kata kunci yang dicadangkan

If nama yang Anda gunakan untuk tabel sama dengan kata kunci yang dipesan Analysis Services, error dinaikkan, and Anda harus mengganti nama tabel. Namun, Anda dapat menggunakan kata kunci dalam nama objek if nama objek diapit dalam tanda kurung siku (untuk kolom) or tanda kutip (untuk tabel).

Catatan

Tanda kutip dapat diwakili oleh beberapa karakter yang berbeda, tergantung pada aplikasi. If Jika Anda menempelkan rumus dari dokumen eksternal or halaman Web, pastikan untuk memeriksa kode ASCII dari karakter yang digunakan untuk tanda kutip pembuka dan penutup and agar memastikan bahwa keduanya sama. Jika tidak, DAX mungkin tidak dapat mengenali simbol sebagai tanda kutip, membuat referensi tidak valid.

Karakter khusus

Karakter berikut and adalah jenis karakter yang not diperbolehkan dalam nama tabel, kolom, or ukuran:

  • Spasi awal or spasi akhir; kecuali spasi diapit oleh pemisah nama, tanda kurung, or apostrof tunggal.

  • Karakter kontrol

  • Karakter berikut yang not valid dalam nama objek:

    .,;':/\\*|?&%$!+=()[]{}<>

Contoh nama objek

Tabel berikut ini memperlihatkan contoh beberapa nama objek:

Tipe Objek Contoh Komentar
Nama tabel Penjualan If apabila nama tabel not mengandung spasi or atau karakter khusus lainnya, maka nama tersebut not perlu diapit dalam tanda kutip.
Nama tabel 'Penjualan Kanada' If nama contains spasi, tab or karakter khusus lainnya, sertakan nama dalam tanda kutip tunggal.
Nama kolom yang sepenuhnya memenuhi syarat Sales[Amount] Nama tabel mendahului nama kolom, and nama kolom diapit dalam tanda kurung siku [ ].
Nama measure yang sepenuhnya memenuhi syarat Sales[Profit] Nama tabel mendahului nama measure, and, nama measure di dalam tanda kurung siku. Dalam konteks tertentu, nama yang sepenuhnya memenuhi syarat selalu diperlukan.
Nama kolom yang tidak memenuhi syarat [Jumlah] Nama yang tidak memenuhi syarat hanyalah nama kolom, dalam tanda kurung siku. Konteks di mana Anda bisa menggunakan nama yang tidak memenuhi syarat termasuk rumus dalam kolom terhitung dalam tabel yang sama, or dalam fungsi agregasi yang memindai tabel yang sama.
Kolom yang sepenuhnya memenuhi syarat dalam tabel dengan spasi 'Penjualan Kanada'[Jumlah] Nama tabel contains mengandung spasi, sehingga harus dimulai dan diakhiri dengan tanda kutip tunggal.

Pembatasan lainnya

Sintaks yang diperlukan untuk setiap fungsi, and jenis operasi yang dapat dilakukannya, sangat bervariasi tergantung pada fungsinya. Namun, secara umum, aturan berikut berlaku untuk all rumus and ekspresi:

  • DAX rumus and ekspresi tidak dapat mengubah or menyisipkan values individual dalam tabel.

  • Anda tidak dapat membuat baris kalkulasi dengan menggunakan DAX. Anda hanya dapat membuat kolom terhitung and ukuran.

  • Saat menentukan kolom terhitung, Anda dapat menggandengkan fungsi ke tingkat apa pun.

  • DAX memiliki beberapa fungsi yang mengembalikan tabel. Biasanya, Anda menggunakan values yang dikembalikan oleh fungsi-fungsi ini sebagai input ke fungsi lain, yang memerlukan tabel sebagai input.

DAX operator and konstanta

Tabel berikut mencantumkan operator yang didukung oleh DAX. Untuk informasi selengkapnya tentang sintaks operator individual, lihat operator DAX.

Jenis operator Penggunaan simbol and
Operator dengan tanda kurung urutan prioritas () dan and pengelompokan argumen
Operator aritmatika + (tambahan)

- (pengurangan)

* (perkalian)

/ (divisi)

^ (eksponensial)
Operator perbandingan = (sama dengan)

> (lebih besar dari)

< (kurang dari)

>= (lebih besar dari or sama dengan)

<= (kurang dari or sama dengan)

<> (not sama dengan)
Operator penggabungan teks & (perangkaian)
Operator logika && (and)

|| (or)

jenis data

Anda not perlu melakukan casting, convert, or atau tentukan jenis data dari sebuah kolom orvalue yang Anda gunakan dalam rumus DAX. Saat Anda menggunakan data dalam rumus DAX, DAX secara otomatis mengidentifikasi jenis data dalam kolom yang dirujuk andvalues yang Anda ketik, and melakukan konversi implisit jika perlu untuk menyelesaikan operasi yang ditentukan.

Misalnya, if Anda mencoba menambahkan angka ke datevalue, mesin akan menginterpretasikan operasi dalam konteks fungsi, andconvert angka ke jenis data umum, and kemudian menyajikan hasilnya dalam formatyang dimaksudkan , date.

Namun, ada beberapa batasan pada values yang dapat berhasil dikonversi. If value or kolom memiliki jenis data yang tidak kompatibel dengan operasi saat ini, DAX mengembalikan error. Selain itu, DAXnot menyediakan fungsi yang memungkinkan Anda secara eksplisit mengubah, convert, or mentransmisikan jenis data yang ada yang telah Anda impor ke dalam model data.

Penting

Apakah DAX dan not mendukung penggunaan jenis data varian. Oleh karena itu, ketika Anda memuat data impor or ke dalam model data, diharapkan bahwa data di setiap kolom umumnya memiliki jenis data yang konsisten.

Beberapa fungsi mengembalikan skalar values, termasuk string, sedangkan fungsi lain bekerja dengan angka, kedua bilangan bulat and bilangan riil, tanggal orand kali. Jenis data yang diperlukan untuk setiap fungsi dijelaskan di bagian , DAX fungsi.

Anda bisa menggunakan tabel yang berisi beberapa kolom and beberapa baris data sebagai argumen ke fungsi. Beberapa fungsi juga mengembalikan tabel, yang disimpan dalam memori and dapat digunakan sebagai argumen ke fungsi lain.

Date and time

DAX menyimpan dateandtimevalues menggunakan jenis data tanggalwaktu yang digunakan oleh Microsoft SQL Server. Datetime format menggunakan angka floating-point di mana Datevalues sesuai dengan bagian bilangan bulat yang menunjukkan jumlah hari sejak 30 Desember 1899. Time values sesuai dengan bagian desimal datevalue di mana Jam, menit, and detik diwakili oleh pecahan desimal day. DAX date and time fungsi secara implisit convert argumen ke jenis data datetime.

Catatan

exact maksimum DateTime value yang didukung oleh DAX adalah 31 Desember 9999 00:00:00.

Date and time harfiah

Dimulai dengan versi Agustus 2021 dari Power BI Desktop, DAXdateand tanggalwaktu values dapat ditentukan sebagai harfiah dalam formatdt"YYYY-MM-DD", dt"YYYY-MM-DDThh:mm:ss", ordt"YYYY-MM-DD hh:mm:ss". Ketika ditentukan sebagai harfiah, penggunaan fungsi DATE, TIME, DATEVALUE, TIMEVALUE dalam ekspresi not diperlukan.

Misalnya, ekspresi berikut menggunakan fungsi DATEandTIME untuk filter pada OrderDate:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)

Ekspresi filter yang sama dapat ditentukan sebagai harfiah:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)

Catatan

Literal DAXdateand bertipe tanggal-waktu formatnot didukung dalam versi all dari Power BI Desktop, Analysis Services, andPower Pivot di Excel. Fungsionalitas DAX baru yang diperbarui and biasanya first diperkenalkan di and Desktop BI Power kemudian disertakan dalam Analysis Services andPower Pivot di Excel.