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

แชร์ผ่าน


ตัวดําเนินการ DAX

ภาษานิพจน์การวิเคราะห์ข้อมูล (DAX) ใช้ตัวดําเนินการเพื่อสร้างนิพจน์ที่เปรียบเทียบ valuesทําการคํานวณทางคณิตศาสตร์ or ทํางานกับสตริง

ชนิดของตัวดําเนินการ

ตัวดําเนินการคํานวณมีสี่ประเภท: คณิตศาสตร์ การเปรียบเทียบ การเรียงต่อข้อความ and ตรรกะ

ตัวดําเนินการทางคณิตศาสตร์

เมื่อต้องการดําเนินการทางคณิตศาสตร์ขั้นพื้นฐาน เช่น การบวก การลบ การคูณ or รวมตัวเลข; การดู and สร้างผลลัพธ์ที่เป็นตัวเลข ให้ใช้ตัวดําเนินการทางคณิตศาสตร์ต่อไปนี้

ตัวดําเนินการทางคณิตศาสตร์ ความหมาย ตัวอย่าง
+ (บวก sign) การบวก 3+3
- (ลบ sign) or sign การลบ 3-1-1
* (เครื่องหมายดอกจัน) การคูณ 3*3
/ (เครื่องหมายทับ) แผนก 3/3
^ (อักขระแคร์ท) การยกกําลัง 16^4

หมายเหตุ

sign บวกสามารถทํางานทั้งในฐานะตัวดําเนินการไบนารี and เป็นตัวดําเนินการเอกภาค ตัวดําเนินการแบบไบนารีต้องการตัวเลขทั้งสองด้านของตัวดําเนินการ and ดําเนินการบวก เมื่อคุณใช้ values ในสูตร DAX ทั้งสองด้านของตัวดําเนินการไบนารี DAX พยายามแปลง values เป็นชนิดข้อมูลตัวเลข ifnot จํานวนแล้ว ในทางตรงกันข้าม ตัวดําเนินการเอกภาคสามารถนําไปใช้กับอาร์กิวเมนต์ชนิดใดก็ได้ สัญลักษณ์เครื่องหมายบวกจะ not มีผลต่อชนิด orvalueand จะถูกละเว้นเพียงอย่างเดียว ในขณะที่ตัวดําเนินการลบจะสร้าง valueลบ if ที่นําไปใช้กับ valueตัวเลข

ตัวดําเนินการเปรียบเทียบ

คุณสามารถเปรียบเทียบสอง values กับตัวดําเนินการต่อไปนี้ เมื่อมีการเปรียบเทียบ values สองรายการโดยใช้ตัวดําเนินการเหล่านี้ ผลลัพธ์จะเป็น valueตรรกะ TRUEorFALSEอย่างใดอย่างหนึ่ง

ตัวดําเนินการเปรียบเทียบ ความหมาย ตัวอย่าง
= เท่ากับ [Region] = "USA"
== เทียบเท่ากับ [Region] == "USA"
> มากกว่า [Sales Date] > "ม.ค. 2009"
< น้อยกว่า [Sales Date] < "1 ม.ค. 2009"
>= มากกว่า or เท่ากับ [Amount] >= 20000
<= น้อยกว่า or เท่ากับ [Amount] <= 100
<> Not เท่ากับ [Region] <> "USA"

All ตัวดําเนินการเปรียบเทียบ except == ถือว่า BLANK เท่ากับตัวเลข 0, สตริงว่าง "", DATE(1899, 12, 30), orFALSE ด้วยเหตุนี้ [Column] = 0 จะถูก true เมื่อ value ของ [Column] เป็น 0 orBLANKอย่างใดอย่างหนึ่ง ในทางตรงกันข้าม [Column] == 0 จะถูก true เฉพาะเมื่อ value ของ [Column] เป็น 0

ตัวดําเนินการเรียงต่อข้อความ

ใช้เครื่องหมายและ (&) เพื่อรวม orconcatenateสอง or สตริงข้อความเพิ่มเติมเพื่อสร้างข้อความส่วนเดียว

ตัวดําเนินการข้อความ ความหมาย ตัวอย่าง
& (แอมเปอร์แซนด์) เชื่อมต่อ or เชื่อมสอง values เพื่อสร้างข้อความแบบต่อเนื่องหนึ่ง value [Region] & ", " & [City]

ตัวดําเนินการตรรกะ

ใช้ตัวดําเนินการเชิงตรรกะ (&&) and (||) เพื่อรวมนิพจน์เพื่อสร้างผลลัพธ์เดียว

ตัวดําเนินการข้อความ ความหมาย ตัว อย่าง เช่น
&&(ดับเบิลแอมเปอร์แซนด์) สร้างเงื่อนไข AND ระหว่างนิพจน์สองรายการที่แต่ละรายการมีผลลัพธ์บูลีน If ทั้งสองนิพจน์ส่งกลับ TRUEการรวมกันของนิพจน์จะส่งกลับ TRUEด้วย เช่นกัน มิฉะนั้นการรวมจะส่งกลับ FALSE ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (สัญลักษณ์ท่อคู่) สร้างเงื่อนไข OR ระหว่างนิพจน์เชิงตรรกะสองนิพจน์ If นิพจน์ใดนิพจน์หนึ่งส่งกลับ TRUEผลลัพธ์จะเป็น TRUEเฉพาะเมื่อนิพจน์ทั้งสอง FALSE เป็นผลลัพธ์ FALSE (([Region] = "France") || ([BikeBuyer] = "yes"))
IN สร้างเงื่อนไข OR เชิงตรรกะระหว่างแต่ละแถวที่กําลังเปรียบเทียบกับตาราง หมายเหตุ: ไวยากรณ์ของคอนสตรักเตอร์ตารางใช้วงเล็บปีกกา 'Product'[Color] IN { "Red", "Blue", "Black" }

ตัวดําเนินการ and ลําดับความสําคัญ

ในบางกรณี ลําดับในการคํานวณอาจส่งผลต่อ valueส่งคืน ดังนั้นจึงเป็นสิ่งสําคัญที่ต้องทําความเข้าใจวิธีการกําหนดลําดับ and วิธีการเปลี่ยนลําดับเพื่อให้ได้ผลลัพธ์ที่ต้องการ

ลําดับการคํานวณ

นิพจน์ประเมิน andvalues ตัวดําเนินการตามลําดับที่ระบุ นิพจน์ All เริ่มต้นด้วย sign เท่ากันเสมอ (=) sign เท่ากันแสดงให้เห็นว่าอักขระความสําเร็จเป็นนิพจน์

ตามหลัง sign เท่ากันคือองค์ประกอบที่จะคํานวณ (ตัวถูกดําเนินการ) ซึ่งคั่นด้วยตัวดําเนินการคํานวณ นิพจน์จะถูกอ่านจาก left ถึง rightเสมอ แต่ลําดับที่มีการจัดกลุ่มองค์ประกอบสามารถควบคุมได้ในระดับหนึ่งโดยใช้วงเล็บ

ลําดับความสําคัญของตัวดําเนินการ

If คุณได้รวมตัวดําเนินการหลายตัวในสูตรเดียว การดําเนินการจะถูกเรียงลําดับตามตารางต่อไปนี้ If ตัวดําเนินการจะมีลําดับความสําคัญเท่ากัน valueตัวดําเนินการเหล่านี้จะถูกเรียงลําดับจาก left เป็น right ตัวอย่างเช่น if นิพจน์ contains ทั้งตัวดําเนินการคูณ and หาร จะมีการประเมินตามลําดับที่ปรากฏในนิพจน์ จาก left ไปยัง right

ผู้ปฏิบัติการ คำอธิบาย
^ การยกกําลัง
Sign (เช่น –1)
* and / การคูณ and หาร
+ and การลบ and เพิ่มเติม
& เชื่อมต่อสองสตริงของข้อความ (การเรียงต่อข้อความ)
=,==,<,>,<=,>=,<>,IN การเปรียบเทียบ
NOT NOT (ตัวดําเนินการเอกภาค)

การใช้วงเล็บเพื่อควบคุมลําดับการคํานวณ

เมื่อต้องการเปลี่ยนลําดับการประเมิน คุณควรใส่เครื่องหมายวงเล็บในส่วนนั้นของสูตรที่ต้องคํานวณ first ตัวอย่างเช่น สูตรต่อไปนี้สร้าง 11 เนื่องจากการคูณจะถูกคํานวณก่อนการบวก สูตรคูณ 2 ด้วย 3 and จากนั้นเพิ่ม 5 ลงในผลลัพธ์

DAX
=5+2*3  

ในทางตรงกันข้าม if คุณใช้วงเล็บเพื่อเปลี่ยนไวยากรณ์ ลําดับจะเปลี่ยนเพื่อให้เพิ่ม 5 and 2 เข้าด้วยกัน and ผลลัพธ์ที่คูณด้วย 3 เพื่อสร้าง 21

DAX
=(5+2)*3  

ในตัวอย่างต่อไปนี้ วงเล็บที่อยู่รอบส่วน first ของสูตรจะบังคับการคํานวณเพื่อ evaluate นิพจน์ (3 + 0.25)firstand จากนั้น divide ผลลัพธ์ตามผลลัพธ์ของนิพจน์ (3 - 0.25)

DAX
=(3 + 0.25)/(3 - 0.25)  

ในตัวอย่างต่อไปนี้ ตัวดําเนินการยกกําลังจะถูกนําไปใช้ firstตามกฎลําดับความสําคัญสําหรับตัวดําเนินการ and จากนั้นใช้ตัวดําเนินการ sign ผลลัพธ์สําหรับนิพจน์นี้คือ -4

DAX
=-2^2  

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

DAX
= (-2)^2  

ความเข้ากันได้

DAX จัดการ and เปรียบเทียบชนิดข้อมูลต่าง ๆ ได้อย่างง่ายดาย เช่นเดียวกับ Microsoft Excel อย่างไรก็ตาม กลไกการคํานวณพื้นฐานขึ้นอยู่กับ SQL Server Analysis Services and มอบคุณลักษณะขั้นสูงเพิ่มเติมของที่เก็บข้อมูลเชิงสัมพันธ์ รวมถึงการสนับสนุนที่หลากหลายสําหรับประเภท dateandtime ดังนั้น ในบางกรณีผลลัพธ์ของการคํานวณ or ลักษณะการทํางานของฟังก์ชันอาจ not เหมือนกับใน Excel นอกจากนี้ DAX ยังรองรับชนิดข้อมูลได้มากกว่า Excel อีกด้วย ในส่วนนี้จะอธิบายความแตกต่างที่สําคัญ

การแปลงชนิดข้อมูลของตัวถูกดําเนินการ

โดยทั่วไป ตัวถูกดําเนินการทั้งสองทางด้าน leftandright ของตัวดําเนินการใดก็ตามควรเป็นชนิดข้อมูลเดียวกัน อย่างไรก็ตาม if ชนิดข้อมูลนั้นแตกต่างกัน DAX จะ convert ชนิดข้อมูลทั่วไปเพื่อใช้ตัวดําเนินการในบางกรณี:

  1. ตัวถูกดําเนินการทั้งสองจะถูกแปลงเป็นชนิดข้อมูลทั่วไปที่ใหญ่ที่สุดเท่าที่เป็นไปได้
  2. ตัวดําเนินการ ถูกนําไปใช้ if เป็นไปได้

ตัวอย่างเช่น สมมติว่าคุณมีตัวเลขสองค่าที่คุณต้องการรวม ตัวเลขหนึ่งเป็นผลลัพธ์จากสูตร เช่น =[Price] * .20and ผลลัพธ์อาจมีทศนิยมหลายตําแหน่ง ตัวเลขอื่นเป็นจํานวนเต็มที่มีการระบุเป็นสตริง value

ในกรณีนี้ DAX จะ convert ตัวเลขทั้งสองเป็นจํานวนจริงใน formatตัวเลข โดยใช้ format ตัวเลขที่ใหญ่ที่สุดที่สามารถเก็บตัวเลขทั้งสองชนิด จากนั้น DAX จะใช้การคูณ

การแปลงชนิดข้อมูลอาจ not ใช้สําหรับการดําเนินการเปรียบเทียบทั้งนี้ขึ้นอยู่กับชุดชนิดข้อมูล สําหรับรายการทั้งหมดของชนิดข้อมูลที่ได้รับการสนับสนุนโดย DAXโปรดดู ชนิดข้อมูล ที่ได้รับการสนับสนุนในแบบจําลองตารางandชนิดข้อมูลใน Power BI Desktop

จํานวนเต็ม จํานวนจริง CurrencyDate/timeandBlank ถือเป็นตัวเลขเพื่อวัตถุประสงค์ในการเปรียบเทียบ Blank ประเมินเป็นศูนย์เมื่อดําเนินการเปรียบเทียบ ชุดชนิดข้อมูลต่อไปนี้ได้รับการสนับสนุนสําหรับการดําเนินการเปรียบเทียบ

ชนิดข้อมูลด้าน Left ชนิดข้อมูลด้าน Right
ตัวเลข ตัวเลข
บูลีน บูลีน
เชือก เชือก

การเปรียบเทียบชนิดข้อมูลผสมอื่นๆ จะส่งกลับ error ตัวอย่างเช่น สูตร เช่น ="1" > 0 จะแสดง error ที่ระบุว่าการดําเนินการเปรียบเทียบ DAXnot สนับสนุนการเปรียบเทียบชนิด values ชนิดข้อความกับชนิดจํานวนเต็ม values

ชนิดข้อมูลที่ใช้ใน DAX ชนิดข้อมูลที่ใช้ใน Excel
Numbers (I8, R8) Numbers (R8)
เชือก เชือก
บูลีน บูลีน
วันที่เวลา ตัว แปร
Currency Currency

ความแตกต่างในลําดับความสําคัญ

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

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

ไวยากรณ์
ตั้งชื่อพารามิเตอร์