อ่านในภาษาอังกฤษ

แชร์ผ่าน


ไวยากรณ์ DAX

บทความนี้อธิบายไวยากรณ์ and ข้อกําหนดสําหรับภาษาของนิพจน์สูตร DAX

ข้อกําหนดไวยากรณ์

สูตร DAX จะเริ่มต้นด้วย sign เท่ากับ (=) เสมอ หลังจากเท่ากับ signคุณสามารถระบุนิพจน์ใด ๆ ที่ประเมินเป็นสเกลา or นิพจน์ที่สามารถแปลงเป็นสเกลาได้ ซึ่งรวมถึงรายการต่อไปนี้:

  • ค่าคงที่สเกลา or นิพจน์ที่ใช้ตัวดําเนินการสเกลา (+,-,*,/,>=,...,&&, ...)

  • การอ้างอิงไปยังคอลัมน์ or ตาราง ภาษา DAX จะใช้ตาราง and คอลัมน์เป็นข้อมูลป้อนเข้าไปยังฟังก์ชัน ไม่ใช่อาร์เรย์ or ชุดแบบโดยพลการของ values

  • ตัวดําเนินการ ค่าคงที่ andvalues ที่ระบุเป็นส่วนหนึ่งของนิพจน์

  • ผลลัพธ์ของฟังก์ชัน and อาร์กิวเมนต์ที่จําเป็น ฟังก์ชัน DAX บางอย่างจะแสดงตารางแทนที่จะเป็นสเกลา and จะต้องถูกตัดคําในฟังก์ชันที่ประเมินตาราง and ส่งกลับสเกลา เว้นแต่ว่าตารางจะเป็นคอลัมน์เดียว ตารางแถวเดียว จากนั้นจะถือว่าเป็นตารางสเกลา value

    ฟังก์ชัน DAX ส่วนใหญ่จําเป็นต้องใช้หนึ่ง or อาร์กิวเมนต์เพิ่มเติม ซึ่งสามารถรวมถึงตาราง คอลัมน์ นิพจน์ andvalues อย่างไรก็ตาม บางฟังก์ชัน เช่น PInot จําเป็นต้องมีอาร์กิวเมนต์ใด ๆ แต่จําเป็นต้องมีวงเล็บเพื่อระบุอาร์กิวเมนต์ null เสมอ ตัวอย่างเช่น คุณต้องพิมพ์ PI() notPIเสมอ คุณยังสามารถซ้อนฟังก์ชันภายในฟังก์ชันอื่นได้

  • นิพจน์ นิพจน์สามารถมี orall ใด ๆ ดังต่อไปนี้: ตัวดําเนินการ ค่าคงที่ or การอ้างอิงไปยังคอลัมน์

ตัวอย่างเช่น รายการต่อไปนี้ all สูตรที่ถูกต้อง

สูตร ผล
= 3 3
= "Sales" ยอดขาย
= 'Sales'[Amount] If คุณใช้สูตรนี้ภายในตารางยอดขาย คุณจะได้รับ value ของยอดเงินคอลัมน์ในตารางยอดขายสําหรับแถวปัจจุบัน
= (0.03 *[Amount])

=0.03 * [Amount]
สามเปอร์เซ็นต์ของ value ในคอลัมน์ จํานวน ของตารางปัจจุบัน

แม้ว่าสูตรนี้สามารถใช้เพื่อ calculate เปอร์เซ็นต์ แต่ผลลัพธ์ not แสดงเป็นเปอร์เซ็นต์เว้นแต่ว่าคุณใช้การจัดรูปแบบในตาราง
= PI() value ของ piค่าคงที่

สูตรสามารถทํางานแตกต่างกันโดยขึ้นอยู่กับวิธีการใช้ คุณต้องตระหนักถึงบริบท and วิธีการใช้ข้อมูลที่คุณใช้ในสูตร related กับข้อมูลอื่น ๆ ที่อาจใช้ในการคํานวณ

ข้อกําหนดการตั้งชื่อ

แบบจําลองข้อมูลมักจะ contains หลายตาราง การรวมตาราง and คอลัมน์เข้าด้วยกันจะประกอบด้วยฐานข้อมูลที่จัดเก็บไว้ในเครื่องมือวิเคราะห์ในหน่วยความจํา (VertiPaq) ภายในฐานข้อมูลนั้น ตาราง all จะต้องมีชื่อที่ไม่ซ้ํากัน ชื่อของคอลัมน์ต้องไม่ซ้ํากันภายในแต่ละตาราง ชื่อวัตถุ Allที่ไม่ตรงตามตัวพิมพ์ใหญ่-เล็ก ตัวอย่างเช่น ชื่อ SALESandSales จะแสดงตารางเดียวกัน

แต่ละคอลัมน์ andmeasure คุณเพิ่มลงในแบบจําลองข้อมูลที่มีอยู่ต้องอยู่ในตารางที่ระบุ คุณระบุตารางที่ contains คอลัมน์โดยนัย เมื่อคุณสร้างคอลัมน์จากการคํานวณภายในตาราง or อย่างชัดเจนเมื่อคุณสร้าง measureand ระบุชื่อของตารางที่จะจัดเก็บข้อกําหนด measure

เมื่อคุณใช้ตาราง or คอลัมน์เป็นข้อมูลป้อนเข้าไปยังฟังก์ชัน คุณต้อง รับรองคุณสมบัติ ชื่อคอลัมน์ ชื่อ ที่ตรงตามหลักเกณฑ์ของคอลัมน์คือชื่อตาราง ตามด้วยชื่อคอลัมน์ในวงเล็บสี่เหลี่ยม: ตัวอย่างเช่น 'U.S. Sales'[Products] จําเป็นต้องมีชื่อที่ตรงตามหลักเกณฑ์เสมอเมื่อคุณอ้างอิงคอลัมน์ในบริบทต่อไปนี้:

  • เป็นอาร์กิวเมนต์สําหรับฟังก์ชัน VALUES

  • เป็นอาร์กิวเมนต์สําหรับฟังก์ชัน ALLorALLEXCEPT

  • ในอาร์กิวเมนต์ filter สําหรับฟังก์ชัน CALCULATEorCALCULATETABLE

  • เป็นอาร์กิวเมนต์สําหรับฟังก์ชัน RELATEDTABLE

  • เป็นอาร์กิวเมนต์สําหรับฟังก์ชัน time Intelligence ใด ๆ

ชื่อคอลัมน์ ที่ไม่ผ่านหลักเกณฑ์เป็นเพียงชื่อของคอลัมน์ที่อยู่ในเครื่องหมายวงเล็บ: ตัวอย่างเช่น [Sales Amount] ตัวอย่างเช่น เมื่อคุณอ้างอิงสเกลา value จากแถวเดียวกันของตารางปัจจุบัน คุณสามารถใช้ชื่อคอลัมน์ที่ไม่เหมาะสมได้

If ชื่อของตาราง contains ช่องว่าง คําสําคัญที่สงวนไว้ or อักขระที่ไม่ได้รับอนุญาต คุณต้องใส่ชื่อตารางไว้ในเครื่องหมายอัญประกาศเดี่ยว นอกจากนี้ คุณยังต้องใส่ชื่อตารางในเครื่องหมายอัญประกาศ if ชื่อ contains อักขระใด ๆ ที่อยู่นอกอักขระพยัญชนะผสมตัวเลข ANSI rangeโดยไม่คํานึงว่าตําแหน่งที่ตั้งของคุณสนับสนุนชุดอักขระ ornotหรือไม่ ตัวอย่างเช่น if คุณเปิดสมุดงานที่ contains ชื่อตารางที่เขียนในอักขระ Cyrillic เช่น ' Таблица ' ชื่อตารางจะต้องอยู่ในเครื่องหมายอัญประกาศ even แม้ว่าจะ not มีช่องว่าง

หมายเหตุ

เพื่อให้ง่ายต่อการป้อนชื่อของคอลัมน์ที่ตรงตามคุณสมบัติให้ใช้คุณลักษณะ AutoComplete ในตัวแก้ไขสูตร

ตาราง

  • ต้องระบุชื่อตารางเมื่อใดก็ตามที่คอลัมน์มาจากตารางอื่นนอกเหนือจากตารางปัจจุบัน ชื่อตารางต้องไม่ซ้ํากันภายในฐานข้อมูล

  • ชื่อตารางต้องอยู่ในเครื่องหมายอัญประกาศเดี่ยว if มีช่องว่าง อักขระพิเศษอื่น ๆ or อักขระพยัญชนะผสมตัวเลขที่ไม่ใช่ภาษาอังกฤษ

มาตรการ

  • ชื่อ Measure ต้องอยู่ในเครื่องหมายวงเล็บเสมอ

  • ชื่อ Measure สามารถมีช่องว่างได้

  • ชื่อ measure แต่ละชื่อต้องไม่ซ้ํากันภายในแบบจําลอง ดังนั้น ชื่อตารางจะเป็นตัวเลือกที่ด้านหน้าของชื่อ measure เมื่ออ้างอิง measureที่มีอยู่ อย่างไรก็ตาม เมื่อคุณสร้าง measure คุณจะต้องระบุตารางที่จะจัดเก็บข้อกําหนด measure เสมอ

คอลัมน์

ชื่อคอลัมน์ต้องไม่ซ้ํากันในบริบทของตาราง อย่างไรก็ตาม หลายตารางสามารถมีคอลัมน์ที่มีชื่อเดียวกันได้ (การแก้ความกํากวมมาพร้อมกับชื่อตาราง)

โดยทั่วไป คอลัมน์สามารถอ้างอิงได้โดยไม่ต้องอ้างอิงตารางฐานที่มีอยู่ except เมื่ออาจมีความขัดแย้งของชื่อเพื่อแก้ไข or ฟังก์ชันบางอย่างที่ต้องการชื่อคอลัมน์ให้ตรงตามหลักเกณฑ์

คําสําคัญที่สงวนไว้

If ชื่อที่คุณใช้สําหรับตารางจะเหมือนกับคําสําคัญที่สงวนไว้ของ Analysis Services error เกิดขึ้น and คุณต้องเปลี่ยนชื่อตาราง อย่างไรก็ตาม คุณสามารถใช้คําสําคัญในชื่อออบเจ็กต์ if ชื่อออบเจ็กต์อยู่ในเครื่องหมายวงเล็บ (สําหรับคอลัมน์) or อัญประกาศ (สําหรับตาราง) ได้

หมายเหตุ

เครื่องหมายอัญประกาศสามารถแสดงด้วยอักขระที่แตกต่างกันหลายตัว โดยขึ้นอยู่กับการใช้งาน If คุณวางสูตรจากเอกสารภายนอก or เว็บเพจ ตรวจสอบให้แน่ใจว่าได้ตรวจสอบรหัส ASCII ของอักขระที่ใช้สําหรับการเปิด and เครื่องหมายอัญประกาศปิด เพื่อให้แน่ใจว่าเหมือนกัน มิฉะนั้น DAX อาจไม่สามารถจดจําสัญลักษณ์เป็นเครื่องหมายอัญัญพัทธ์ ได้ ทําให้การอ้างอิงไม่ถูกต้อง

อักขระพิเศษ

อักขระต่อไปนี้ and ชนิดอักขระ not ถูกต้องในชื่อของตาราง คอลัมน์ or หน่วยวัด:

  • ช่องว่างต่อท้าย or นําหน้า เว้นแต่วรรคช่องว่างจะล้อมรอบด้วยตัวคั่นชื่อ วงเล็บ or อัญประกาศเดี่ยว

  • อักขระควบคุม

  • อักขระต่อไปนี้ที่ not ถูกต้องในชื่อของออบเจ็กต์:

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

ตัวอย่างของชื่อวัตถุ

ตารางต่อไปนี้แสดงตัวอย่างของชื่อออบเจ็กต์บางอย่าง:

Object Types ตัว อย่าง เช่น ติชม
ชื่อตาราง ยอดขาย If ชื่อตาราง not มีช่องว่าง or อักขระพิเศษอื่น ๆ ชื่อ not จําเป็นต้องอยู่ในเครื่องหมายอัญประกาศ
ชื่อตาราง 'Canada Sales' If ชื่อ contains ช่องว่าง แท็บ or อักขระพิเศษอื่น ๆ ล้อมรอบชื่อในเครื่องหมายอัญประกาศเดี่ยว
ชื่อคอลัมน์ที่ตรงตามหลักเกณฑ์ Sales[Amount] ชื่อตารางอยู่ก่อนหน้าชื่อคอลัมน์ and ชื่อคอลัมน์อยู่ในเครื่องหมายวงเล็บ
ชื่อ measure ที่ตรงตามหลักเกณฑ์ Sales[Profit] ชื่อตารางอยู่ก่อนหน้าชื่อ measureand ชื่อ measure อยู่ในเครื่องหมายวงเล็บ ในบางบริบท ต้องมีชื่อที่ตรงตามหลักเกณฑ์เสมอ
ชื่อคอลัมน์ที่ไม่เหมาะสม [Amount] ชื่อที่ไม่เหมาะสมเป็นเพียงชื่อคอลัมน์ในเครื่องหมายวงเล็บ บริบทที่คุณสามารถใช้ชื่อที่ไม่ผ่านเงื่อนไขรวมถึงสูตรในคอลัมน์จากการคํานวณภายในตารางเดียวกัน or ในฟังก์ชันการรวมที่กําลังสแกนผ่านตารางเดียวกัน
คอลัมน์ที่ตรงตามเกณฑ์ในตารางพร้อมช่องว่าง 'Canada Sales'[Qty] ชื่อตาราง contains ช่องว่าง ดังนั้นจึงต้องล้อมรอบด้วยเครื่องหมายอัญประกาศเดี่ยว

ข้อจํากัดอื่น ๆ

ไวยากรณ์ที่จําเป็นสําหรับแต่ละฟังก์ชัน and ชนิดของการดําเนินการที่สามารถทําได้จะแตกต่างกันอย่างมาก ขึ้นอยู่กับฟังก์ชัน โดยทั่วไปแล้ว กฎต่อไปนี้ใช้กับสูตร alland นิพจน์ต่อไปนี้:

  • สูตร DAX นิพจน์ and ไม่สามารถปรับเปลี่ยน or แทรกแต่ละ values ในตารางได้

  • คุณไม่สามารถสร้างแถวจากการคํานวณโดยใช้ DAXได้ คุณสามารถสร้างคอลัมน์จากการคํานวณ and หน่วยวัดเท่านั้น

  • เมื่อกําหนดคอลัมน์จากการคํานวณ คุณสามารถซ้อนฟังก์ชันในระดับใดก็ได้

  • DAX มีหลายฟังก์ชันที่แสดงตาราง โดยทั่วไปแล้ว คุณจะใช้ values ที่ฟังก์ชันเหล่านี้แสดงเป็นข้อมูลป้อนเข้าไปยังฟังก์ชันอื่น ๆ ซึ่งจําเป็นต้องมีตารางเป็นข้อมูลป้อนเข้า

ตัวดําเนินการ DAXand ค่าคงที่

ตารางต่อไปนี้แสดงรายการตัวดําเนินการที่ได้รับการสนับสนุนโดย DAX สําหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์ของตัวดําเนินการแต่ละตัว โปรดดูตัวดําเนินการ DAX

ชนิดตัวดําเนินการ ใช้ and สัญลักษณ์
ตัวดําเนินการวงเล็บ การจัดลําดับความสําคัญ ()and การจัดกลุ่มของอาร์กิวเมนต์
ตัวดําเนินการทางคณิตศาสตร์ + (เพิ่มเติม)

- (การลบ)

* (การคูณ)

/ (หาร)

^ (การยกกําลัง)
ตัวดําเนินการเปรียบเทียบ = (เท่ากับ)

> (มากกว่า)

< (น้อยกว่า)

>= (มากกว่า or เท่ากับ)

<= (น้อยกว่า or เท่ากับ)

<> (not เท่ากับ)
ตัวดําเนินการเรียงต่อข้อความ & (การเรียงต่อกัน)
ตัวดําเนินการตรรกะ && (and)

|| (or)

ชนิดข้อมูล

not จําเป็นต้องแปลง convertor ระบุชนิดข้อมูลของคอลัมน์ orvalue ที่คุณใช้ในสูตร DAX เมื่อคุณใช้ข้อมูลในสูตร DAXDAX ระบุชนิดข้อมูลในคอลัมน์อ้างอิง and ของ values ที่คุณพิมพ์โดยอัตโนมัติ and ทําการแปลงโดยนัยตามที่จําเป็นเพื่อดําเนินการตามที่ระบุให้เสร็จสมบูรณ์

ตัวอย่างเช่น if คุณพยายามเพิ่มตัวเลขลงใน datevalueกลไกจัดการจะแปลการดําเนินการในบริบทของฟังก์ชัน andconvert ตัวเลขเป็นชนิดข้อมูลทั่วไป and จากนั้นแสดงผลลัพธ์ใน formatที่กําหนดไว้ date

อย่างไรก็ตาม มีข้อจํากัดบางอย่างเกี่ยวกับ values ที่สามารถแปลงได้สําเร็จ If value or คอลัมน์มีชนิดข้อมูลที่เข้ากันไม่ได้กับการดําเนินการปัจจุบัน DAX ส่งกลับ error นอกจากนี้ DAXnot ยังมีฟังก์ชันที่ช่วยให้คุณสามารถเปลี่ยนแปลง convertได้อย่างชัดเจน or แปลงชนิดข้อมูลของข้อมูลที่มีอยู่ซึ่งคุณได้นําเข้าลงในแบบจําลองข้อมูล

ข้อสำคัญ

DAX รองรับการใช้งานชนิดข้อมูลตัวแปร not ดังนั้น เมื่อคุณโหลด or นําเข้าข้อมูลลงในแบบจําลองข้อมูล คาดว่าข้อมูลในแต่ละคอลัมน์โดยทั่วไปจะเป็นชนิดข้อมูลที่สอดคล้องกัน

ฟังก์ชันบางอย่างจะแสดงค่าสเกลา valuesรวมถึงสตริง ในขณะที่ฟังก์ชันอื่น ๆ ทํางานกับตัวเลข ทั้งจํานวนเต็ม and จํานวนจริง or วันที่ and ครั้ง ชนิดข้อมูลที่จําเป็นสําหรับแต่ละฟังก์ชันจะอธิบายไว้ในส่วน DAX ฟังก์ชัน

คุณสามารถใช้ตารางที่มีหลายคอลัมน์ and ข้อมูลหลายแถวเป็นอาร์กิวเมนต์ไปยังฟังก์ชันได้ ฟังก์ชันบางอย่างจะแสดงตาราง ซึ่งเก็บไว้ในหน่วยความจํา and สามารถใช้เป็นอาร์กิวเมนต์ไปยังฟังก์ชันอื่น ๆ ได้

Date and time

DAX จัดเก็บ dateandtimevalues โดยใช้ชนิดข้อมูล datetime ที่ Microsoft SQL Server ใช้ format Datetime ใช้ตัวเลขทศนิยมลอยตัวที่ Datevalues สอดคล้องกับส่วนจํานวนเต็มที่แสดงจํานวนวันตั้งแต่วันที่ 30 ธันวาคม 1899 Time values สอดคล้องกับส่วนทศนิยมของ datevalue ที่ Hours, minutes, and วินาทีจะแสดงด้วยเศษส่วนของ dayทศนิยม ฟังก์ชัน DAXdateandtimeconvert อาร์กิวเมนต์ไปยังชนิดข้อมูล datetime โดยปริยาย

หมายเหตุ

exact value วันที่เวลาสูงสุดที่ได้รับการสนับสนุนโดย DAX คือ 31 ธันวาคม 9999 00:00:00

สัญพจน์ Dateandtime

เริ่มตั้งแต่เวอร์ชันเดือนสิงหาคม 2021 Power BI Desktop valuesDAXdateand datetime สามารถระบุเป็นสัญพจน์ใน formatdt"YYYY-MM-DD"dt"YYYY-MM-DDThh:mm:ss"ordt"YYYY-MM-DD hh:mm:ss"ได้ เมื่อระบุเป็นสัญพจน์ แล้ว การใช้ฟังก์ชัน DATE, TIME, DATEVALUETIMEVALUE ในนิพจน์ จะต้อง not

ตัวอย่างเช่น นิพจน์ต่อไปนี้ใช้ฟังก์ชัน DATEandTIME เพื่อ filter บน OrderDate:

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

นิพจน์ filter เดียวกันสามารถระบุเป็นสัญพจน์:

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

หมายเหตุ

format สัญพจน์ชนิด datetime DAXdateandnot ได้รับการสนับสนุนใน all เวอร์ชันของ Power BI Desktop, Analysis Services andPower Pivot ใน Excel โดยทั่วไปแล้ว ฟังก์ชัน DAX ที่อัปเดต and ใหม่ first จะนําเสนอใน andPower BI Desktop ซึ่งรวมอยู่ใน Analysis Services andPower Pivot ใน Excel ในภายหลัง