แชร์ผ่าน


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

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

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

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

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

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

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

โน้ต

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

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

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

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

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

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

ใช้เครื่องหมายแอมเปอร์แซนด์ (&) เพื่อรวมหรือเชื่อมสตริงข้อความสองรายการขึ้นไปเพื่อสร้างข้อความชิ้นเดียว

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

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

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

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

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

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

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

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

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

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

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

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

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

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

=5+2*3

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

=(5+2)*3

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

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

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

=-2^2

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

= (-2)^2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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