แชร์ผ่าน


คิวรี DAX

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

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

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

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

คำ

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

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

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

EVALUATE (จําเป็น)

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

ไวยากรณ์ EVALUATE

EVALUATE <table>

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

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

ตัวอย่าง EVALUATE

EVALUATE
	'Sales Order'

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

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

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

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

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

ไวยากรณ์ ORDER BY

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

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

เทอม นิยาม
expression นิพจน์ DAX ใด ๆ ที่แสดงค่าสเกลาเดียวหรือคอลัมน์ที่รวมอยู่ในคิวรี 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

แสดงลําดับเสื้อผ้าและกําไรเฉลี่ยต่อคําสั่งซื้อตามเดือน โดยเรียงลําดับจากน้อยไปหามากตามเดือน เป็นตารางผลลัพธ์

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

TOPN ไม่ได้เลือกจํานวนแถวที่ระบุเพื่อส่งกลับตามลําดับการจัดเรียงที่ระบุใน 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 จากน้อยไปมาก จากนั้นเรียงลําดับผลลัพธ์ตามคําสั่งขายก่อน แล้วเรียงลําดับตามบรรทัดใบสั่งขาย

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

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

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

ไวยากรณ์ START AT

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

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

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

หมายเหตุ START AT

อาร์กิวเมนต์ START AT มีความสัมพันธ์แบบหนึ่งต่อหนึ่งกับคอลัมน์ในส่วนคําสั่ง ORDER BY สามารถมีอาร์กิวเมนต์จํานวนมากได้ในส่วนคําสั่ง START AT ตามที่มีอยู่ในส่วนคําสั่ง ORDER BY แต่ไม่สามารถระบุได้มากกว่านี้ อาร์กิวเมนต์แรกใน START AT กําหนดค่าเริ่มต้นในคอลัมน์ 1 ของคอลัมน์ ORDER BY อาร์กิวเมนต์ที่สองใน START AT กําหนดค่าเริ่มต้นในคอลัมน์ 2 ของคอลัมน์ ORDER BY ภายในแถวที่ตรงกับค่าแรกสําหรับคอลัมน์ 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"

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

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

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

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

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

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

ไวยากรณ์ DEFINE

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

(EVALUATE <table expression>) +

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

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

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

หมายเหตุ DEFINE

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

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

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

  • ชื่อ 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 เพื่อแสดงผลิตภัณฑ์ที่ไม่เป็นที่ต้องการด้วยคอลัมน์ที่กําหนดไว้เพิ่มเติมที่อ้างอิงตัวแปรที่กําหนดไว้ นอกจากนี้ยังมีการกําหนดและประเมินหน่วยวัดเพื่อนับจํานวนแถวของผลิตภัณฑ์ที่ไม่เป็นที่ต้องการ

สกรีนช็อตที่แสดงวิธีใช้ 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]
	)

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

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

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

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

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

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

สําคัญ

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

รายงาน