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

แชร์ผ่าน


คิวรี DAX

ไคลเอ็นต์การรายงานเช่น Power BI and Excel ดําเนินการคิวรี DAX เมื่อใดก็ตามที่วิชวลแสดงในรายงาน or เขตข้อมูลที่เพิ่มลงในตาราง and ปรับคิวรี DAX เหล่านี้เมื่อมีการใช้ filter ของตัววิเคราะห์ประสิทธิภาพ ใน BI Desktop สามารถแสดงคิวรี เหล่านี้ เรียกใช้ในมุมมองคิวรี

โดยการใช้ DAX มุมมองคิวรีใน Power BI Desktop orเขียนคิวรี DAX ในบริการ Power BI คุณสามารถสร้าง and เรียกใช้คิวรี DAX ของคุณเองได้ ด้วย Microsoft Fabricคุณสามารถเพิ่มประสิทธิผลการทํางานของคุณด้วย Copilot เพื่อเขียนคิวรี DAX ในมุมมองคิวรีของ Desktop or ของ DAX นอกเหนือจากเครื่องมือ BI Power ยังสามารถเรียกใช้คิวรี DAX ในสมุดบันทึก Fabric โดยใช้ลิงก์ความหมาย เพื่ออ่านข้อมูลจากแบบจําลองความหมายด้วย python and ด้วย Execute Queries REST APIนอกจากนี้ยังมีอยู่ใน Power Automate เครื่องมืออื่น ๆ เช่น SQL Server Management Studio (SSMS), Power BI Report Builderand เครื่องมือโอเพนซอร์สเช่น DAX Studioยังช่วยให้คุณสามารถสร้าง and เรียกใช้คิวรี DAX ได้

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

ก่อนที่จะเรียนรู้เกี่ยวกับคิวรี เป็นสิ่งสําคัญที่คุณต้องทําความเข้าใจอย่างจริงจังเกี่ยวกับ DAX พื้นฐาน If คุณยังไม่ได้เช็คเอาท์ภาพรวม DAX

คำ

คิวรี DAX มีไวยากรณ์ง่าย ๆ ที่ประกอบด้วยคําสําคัญที่จําเป็นเพียงคําเดียว EVALUATE EVALUATE จะตามด้วยนิพจน์ตาราง เช่น ฟังก์ชัน DAXor ชื่อตาราง ซึ่งเมื่อเรียกใช้ จะแสดงผลเป็นตารางผลลัพธ์ นิพจน์ตารางที่แสดงตารางผลลัพธ์ประกอบด้วย:

  1. ฟังก์ชัน DAX ทั่วไปที่แสดงผลตาราง เช่น SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLE, and อื่น ๆ อีกมากมายทํางานกับ EVALUATE เพื่อส่งออกตารางผลลัพธ์
  2. ตารางในแบบจําลองเมื่ออ้างอิงตามชื่อทํางานกับ EVALUATE เพื่อแสดงตารางผลลัพธ์ที่แสดงข้อมูลในตาราง ตัวอย่างเช่น EVALUATE 'ชื่อตาราง' สามารถเรียกใช้เป็นคิวรี DAX ได้
  3. หน่วยวัดในแบบจําลอง or สูตร DAX ใด ๆ ซึ่งส่งกลับ valueสเกลาทํางานกับ EVALUATE เพื่อแสดง value เป็นตารางผลลัพธ์เมื่ออยู่ในวงเล็บปีกกา ตัวอย่างเช่น EVALUATE {[Total Sales]}orEVALUATE {COUNTROWS('Sales')} สามารถเรียกใช้เป็นคิวรี DAX ได้ สิ่งเหล่านี้เรียกว่า คอนสตรัคเตอร์ของตาราง

มีคําหลักที่เลือกได้หลายคําสําหรับ DAX คิวรี: ORDER BY, START AT, DEFINE, MEASURE, VAR, ตาราง, and คอลัมน์

EVALUATE (จําเป็น)

ในระดับพื้นฐานที่สุด คิวรี DAX คือคําสั่ง EVALUATE ที่มีนิพจน์ตาราง อย่างไรก็ตาม จําเป็นต้องมีคําสั่ง EVALUATE อย่างน้อยหนึ่งคําสั่ง อย่างไรก็ตาม คิวรีสามารถมี EVALUATEstatementsจํานวนใดก็ตาม

ไวยากรณ์ EVALUATE

EVALUATE <table>

พารามิเตอร์ EVALUATE

เทอม นิยาม
table นิพจน์ตาราง

ตัวอย่าง EVALUATE

EVALUATE
	'Sales Order'

ส่งกลับ all แถว and คอลัมน์จากตารางคําสั่งขาย เป็นตารางผลลัพธ์ ซึ่งสามารถจํากัดได้ด้วยการใช้ TOPNorFILTERand เรียงลําดับด้วย ORDER BY

สกรีนช็อตที่แสดงวิธีใช้ EVALUATE สําหรับคิวรี DAX ในมุมมองคิวรี DAX ของ Power BI Desktop

ORDER BY (ไม่บังคับ)

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

เรียงลําดับตามคุณสมบัติคอลัมน์ในแบบจําลองความหมาย not นําไปใช้กับผลลัพธ์คิวรี DAX If คอลัมน์ควรเรียงลําดับตามคอลัมน์ที่แตกต่างกันในแบบจําลอง เช่น ในกรณีของ Month Name การเรียงลําดับตามคอลัมน์ควรรวมอยู่ในคิวรี DAX ที่จะใช้ใน ORDER BYด้วย

ไวยากรณ์ ORDER BY

EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]

พารามิเตอร์ ORDER BY

เทอม นิยาม
expression นิพจน์ DAX ใด ๆ ที่แสดง valueสเกลาเดียว คอลัมน์ or ที่รวมอยู่ในคิวรี DAX
ASC (ค่าเริ่มต้น) การเรียงลําดับจากน้อยไปหามาก
DESC การเรียงลําดับจากมากไปหาน้อย

ตัวอย่าง ORDER BY

EVALUATE
	SUMMARIZECOLUMNS(
		// Group by columns
		'Date'[Month Name],
		'Date'[Month of Year],
		'Product'[Category],

		// Optional filters
		FILTER(
			VALUES('Product'[Category]),
			[Category] = "Clothing"
		),

		// Measures or explicit DAX formulas to aggregate and analyze the data by row
		"Orders", [Orders],
		"Avg Profit per Order", DIVIDE(
			[Total Sales Profit],
			[Orders]
		)
	)

	// DAX queries do not use sort order defined in Power BI, 
	// sort by columns must be included in the DAX query to be used in order by
	ORDER BY 'Date'[Month of Year] ASC

ส่งกลับลําดับเสื้อผ้า andaverage กําไรต่อการสั่งซื้อตาม monthจากน้อยไปหามากตาม monthเป็นตารางผลลัพธ์

สกรีนช็อตที่แสดงวิธีใช้ ORDER BY สําหรับคิวรี DAX ในมุมมองคิวรี DAX ของ Power BI Desktop

TOPN not เลือกจํานวนแถวที่ระบุเพื่อส่งกลับตามลําดับการจัดเรียงที่ระบุใน ORDER BY แต่ TOPN มีไวยากรณ์ของตัวเองเพื่อเลือกที่จะระบุการเรียงลําดับก่อนส่งกลับ 100 แถวบนสุด ORDER BY เรียงลําดับเฉพาะตารางผลลัพธ์ที่ส่งกลับโดย TOPNเท่านั้น

EVALUATE
	TOPN(
		100,
		'Sales Order',
		// The way the data is sorted before the top 100 rows are selected
		'Sales Order'[SalesOrderLineKey], ASC
	)
	// The way the data is sorted for the results
	ORDER BY
		'Sales Order'[Sales Order] ASC,
		'Sales Order'[Sales Order Line] ASC

แสดงคําสั่งขาย 100 อันดับแรกที่เรียงลําดับตาม SalesOrderLienKey จากน้อยไปมาก จากนั้นเรียงลําดับผลลัพธ์ first ตามคําสั่งขาย แล้วเรียงลําดับตามบรรทัดใบสั่งขาย

สกรีนช็อตที่แสดงวิธีใช้ TOPNandORDER BY สําหรับคิวรี DAX ในมุมมองคิวรี DAX ของ Power BI Desktop

START AT (ไม่บังคับ)

คําสําคัญ START AT ที่เลือกได้ ถูกใช้ภายในส่วนคําสั่ง ORDER BY ซึ่งจะกําหนด value ที่ผลลัพธ์คิวรีเริ่มต้น

ไวยากรณ์ START AT

EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]

พารามิเตอร์ START AT

เทอม นิยาม
value valueคงที่ ไม่สามารถเป็นนิพจน์ได้
parameter ชื่อของพารามิเตอร์ในคําสั่ง XMLA ขึ้นต้นด้วยอักขระ @

หมายเหตุ START AT

อาร์กิวเมนต์ START AT มีความสัมพันธ์แบบหนึ่งต่อหนึ่งกับคอลัมน์ในส่วนคําสั่ง ORDER BY สามารถมีอาร์กิวเมนต์จํานวนมากได้ในส่วนคําสั่ง START AT ตามที่มีอยู่ในส่วนคําสั่ง ORDER BY แต่ not เพิ่มเติม อาร์กิวเมนต์ first ใน START AT จะกําหนด value เริ่มต้นในคอลัมน์ 1 ของคอลัมน์ ORDER BY อาร์กิวเมนต์ second ใน START AT จะกําหนด value เริ่มต้นในคอลัมน์ 2 ของคอลัมน์ ORDER BY ภายในแถวที่ตรงกับ firstvalue สําหรับคอลัมน์ 1

ตัวอย่าง START AT

EVALUATE
	'Sales Order'
	ORDER BY 'Sales Order'[Sales Order] ASC
	// Start at this order, orders before this order will not be displayed
	START AT "SO43661"

แสดงคอลัมน์ all จากตาราง คําสั่งซื้อ จากน้อยไปหามากตามใบสั่งขาย โดยเริ่มต้นที่ SO43661 แถวก่อนคําสั่งขายนี้จะ not รวมอยู่ในตารางผลลัพธ์

สกรีนช็อตที่แสดงวิธีใช้ ORDER BYandSTART AT สําหรับคิวรี DAX ในมุมมองคิวรี DAX ของ Power BI Desktop

DEFINE (ไม่บังคับ)

คําสําคัญ DEFINE ที่เลือกได้ จะแนะนําข้อกําหนดของเอนทิตีจากการคํานวณเพิ่มเติมหนึ่ง or รายการที่มีไว้สําหรับ duration ของคิวรีเท่านั้น ซึ่งแตกต่างจาก EVALUATEซึ่งสามารถมีบล็อก DEFINE เดียวเท่านั้นโดยมีข้อกําหนด or มากกว่าหนึ่งในคิวรี DAX DEFINE ต้องนําหน้า and คําสั่ง firstEVALUATE ถูกต้องสําหรับ allEVALUATEstatements ในคิวรี ข้อกําหนดอาจเป็นตัวแปร หน่วยวัด ตาราง1คอลัมน์ and1 ข้อกําหนดสามารถอ้างอิงถึงข้อกําหนดอื่น ๆ ที่ปรากฏก่อน or หลังจากข้อกําหนดปัจจุบัน ต้องมีข้อกําหนดอย่างน้อยหนึ่งคํา if คําสําคัญ DEFINE รวมอยู่ในคิวรี

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

DEFINE MEASURE จะเป็นประโยชน์ในการสร้างการวิเคราะห์เพิ่มเติมด้วยสูตร DAX สําหรับคิวรี DAX เฉพาะที่คุณอาจ not มีสิทธิ์ในการเพิ่มแบบจําลอง measureornot จําเป็นต้องมีในแบบจําลอง

ไวยากรณ์ DEFINE

[DEFINE 
    (
     (MEASURE <table name>[<measure name>] = <scalar expression>) | 
     (VAR <var name> = <table or scalar expression>) |
     (TABLE <table name> = <table expression>) | 
     (COLUMN <table name>[<column name>] = <scalar expression>) | 
    ) + 
]

(EVALUATE <table expression>) +

พารามิเตอร์ DEFINE

เทอม นิยาม
Entity MEASURE, VAR, ตาราง1, คอลัมน์ or1
name ชื่อของ measurevarตาราง or ข้อกําหนดคอลัมน์ ไม่สามารถเป็นนิพจน์ได้ ชื่อ not ไม่จําเป็นต้องไม่ซ้ํากัน ชื่อมีไว้สําหรับ duration ของคิวรีเท่านั้น
expression นิพจน์ DAX ใด ๆ ที่แสดงตาราง or สเกลา value นิพจน์สามารถใช้เอนทิตีที่กําหนดไว้ใด ๆ If จําเป็นต้อง convert นิพจน์สเกลาเป็นนิพจน์ตาราง ให้ตัดนิพจน์ภายในคอนสตรักเตอร์ตารางด้วยวงเล็บปีกกา {}or ใช้ฟังก์ชัน ROW() เพื่อส่งกลับตารางแถวเดียว

[1] ความระมัดระวัง: ข้อกําหนดตารางขอบเขตของคิวรี and มีไว้สําหรับใช้ภายในเท่านั้น ในขณะที่คุณสามารถ define นิพจน์ TABLE and COLUMN สําหรับคิวรีโดยไม่มี errorไวยากรณ์ แต่อาจก่อให้เกิดข้อผิดพลาดรันไทม์ andnot แนะนํา

หมายเหตุ DEFINE

  • แบบสอบถาม DAX สามารถมีหลาย EVALUATEstatementsแต่สามารถมีคําสั่ง DEFINE ได้เพียงคําสั่งเดียวเท่านั้น ข้อกําหนดในคําสั่ง DEFINE สามารถนําไปใช้กับ EVALUATEstatements ใด ๆ ในคิวรีได้

  • ต้องมีข้อกําหนดอย่างน้อยหนึ่งข้อกําหนดในคําสั่ง DEFINE

  • ข้อกําหนด Measure สําหรับหน่วยวัดการแทนที่แบบจําลองคิวรีที่มีชื่อเดียวกันแต่จะใช้ภายในคิวรีเท่านั้น ซึ่งจะ not ส่งผลกระทบต่อ measureแบบจําลอง

  • ชื่อ VAR มีข้อจํากัดที่ไม่ซ้ํากัน เมื่อต้องการเรียนรู้เพิ่มเติม โปรดดู VAR - พารามิเตอร์

ตัวอย่าง DEFINE

DEFINE
	VAR _firstyear = MIN('Date'[Fiscal Year])
	VAR _lastyear = MAX('Date'[Fiscal Year])
	TABLE 'Unbought products' = FILTER('Product', [Orders] + 0 = 0)
	COLUMN 'Unbought products'[Year Range] = _firstyear & " - " & _lastyear
	MEASURE 'Unbought products'[Unbought products] = COUNTROWS('Unbought products')
	
EVALUATE
	'Unbought products'
	
EVALUATE
	{[Unbought products]}

แสดงตารางที่กําหนดไว้ในคิวรี DAX เพื่อแสดงผลิตภัณฑ์ที่ไม่เป็นที่ต้องการด้วยคอลัมน์ที่กําหนดไว้เพิ่มเติมที่อ้างอิงตัวแปรที่กําหนดไว้ นอกจากนี้ยังมีการกําหนด measureand การประเมินเพื่อ count แถวของผลิตภัณฑ์ที่ไม่ควรจะเป็น

สกรีนช็อตที่แสดงวิธีใช้ DEFINE สําหรับคิวรี DAX ในมุมมองคิวรี DAX ของ Power BI Desktop

DEFINE
	MEASURE 'Pick a sales measure'[Orders] = DISTINCTCOUNT('Sales Order'[Sales Order])
	MEASURE 'Pick a sales measure'[Customers] = CALCULATE(
			COUNTROWS(Customer),
			FILTER(
				'Sales',
				[Orders] > 0
			)
		)
	MEASURE 'Pick a sales measure'[Orders per Customer] = DIVIDE(
			[Orders],
			[Customers],
			0
		)

EVALUATE
	SUMMARIZECOLUMNS(
		'Date'[Fiscal Year],
		"Orders", [Orders],
		"Customers", [Customers],
		"Orders per Customer", [Orders per Customer]
	)

แสดงตารางที่ประเมินหน่วยวัดที่กําหนดสามรายการเพื่อแสดงผลลัพธ์ตาม yearทางบัญชี หน่วยวัด All ยังมีอยู่ในแบบจําลอง and Orders per Customer ได้รับการแก้ไขในคิวรี DAX

สกรีนช็อตที่แสดงวิธีใช้ DEFINEMEASURE สําหรับคิวรี DAX ในมุมมองคิวรี DAX ของ Power BI Desktop

พารามิเตอร์ในคิวรี DAX

คําสั่งคิวรี DAX ที่กําหนดไว้อย่างดีสามารถทําให้เป็นพารามิเตอร์ได้ and จากนั้นจะใช้ผ่าน and เพียงแค่การเปลี่ยนแปลงในพารามิเตอร์ values

เมธอด Execute Method (XMLA) มีองค์ประกอบพารามิเตอร์ (XMLA) องค์ประกอบคอลเลกชันที่อนุญาตให้กําหนดพารามิเตอร์ and กําหนด value ภายในคอลเลกชัน แต่ละ องค์ประกอบพารามิเตอร์ (XMLA) จะกําหนดชื่อของพารามิเตอร์ andvalue

อ้างอิงพารามิเตอร์ XMLA โดยใส่คํานําหน้าชื่อของพารามิเตอร์ที่มีอักขระ @ ตําแหน่งใด ๆ ในไวยากรณ์ที่อนุญาต valuevalue สามารถแทนที่ได้ด้วยการเรียกพารามิเตอร์ All พารามิเตอร์ XMLA จะถูกพิมพ์เป็นข้อความ

ข้อสำคัญ

พารามิเตอร์ที่กําหนดในส่วนพารามิเตอร์ andnot ที่ใช้ในองค์ประกอบ <STATEMENT>generate การตอบสนอง error ใน XMLA พารามิเตอร์ที่ใช้ andnot ที่กําหนดไว้ในองค์ประกอบ <Parameters>generate การตอบสนอง error ใน XMLA

DAX statements SUMMARIZECOLUMNS