ใช้ตัวดำเนินการ DAX
สูตร DAX ของคุณสามารถใช้ตัวดําเนินการเพื่อสร้างนิพจน์ที่ทําการคํานวณทางคณิตศาสตร์ เปรียบเทียบค่า ทํางานกับสตริง หรือทดสอบเงื่อนไขได้
เคล็ดลับ
ตัวดำเนินการ DAX จำนวนมากและลำดับความสำคัญจะเหมือนกับที่พบใน Excel
ตัวดำเนินการทางคณิตศาสตร์
ตารางต่อไปนี้จะแสดงรายการตัวดำเนินการทางคณิตศาสตร์
| ตัวดำเนินการ | คำอธิบาย |
|---|---|
| + | การบวก |
| - | การลบ |
| * | การคูณ |
| / | การหาร |
| ^ | เลขยกกำลัง |
โปรดจําไว้ว่า เมื่อคุณกําลังหารสองนิพจน์ และเมื่อตัวหารสามารถส่งคืนค่าศูนย์หรือ BLANK ได้ หากใช้ DIVIDE ฟังก์ชัน DAX จะมีประสิทธิภาพมากกว่าและปลอดภัยกว่า
ตัวดำเนินการเปรียบเทียบ
ตารางต่อไปนี้จะแสดงรายการตัวดำเนินการเปรียบเทียบ ซึ่งใช้ในการเปรียบเทียบสองค่า ผลลัพธ์จะเป็น TRUE หรือ FALSE
| ตัวดำเนินการ | คำอธิบาย |
|---|---|
| = | เท่ากับสองตัว |
| == | เท่ากับสามตัว |
| > | มากกว่า |
| < | น้อยกว่า |
| >= | มากกว่าหรือเท่ากับ |
| <= | น้อยกว่าหรือเท่ากับ |
| <> | ไม่เท่ากับ |
ตัวดำเนินการเปรียบเทียบทั้งหมด ยกเว้นเท่ากับสามตัว (==) ถือว่า BLANK เท่ากับจำนวนศูนย์ สตริงว่าง ("") วันที่ 30 ธันวาคม 1899 หรือ FALSE ซึ่งหมายความว่านิพจน์ [Revenue] = 0 จะเป็น TRUE เมื่อค่าของ [Revenue] เป็นศูนย์หรือ BLANK ใน [Revenue] == 0 ทางตรงกันข้าม เป็น TRUE เมื่อค่าเป็น [Revenue] ศูนย์เท่านั้น
ตัวดำเนินการการเรียงต่อกันของข้อความ
ใช้อักขระเครื่องหมายและ (&) เพื่อเชื่อมต่อหรือเชื่อมค่าข้อความสองค่าเข้าด้วยกันเพื่อสร้างค่าข้อความแบบต่อเนื่องหนึ่งค่า ตัวอย่าง พิจารณาข้อกำหนดคอลัมน์จากการคำนวณต่อไปนี้
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
ตัวดำเนินการตรรกะ
ใช้ตัวดำเนินการตรรกะเพื่อรวมนิพจน์ที่สร้างผลลัพธ์เดียว ตารางต่อไปนี้จะแสดงรายการตัวดำเนินการตรรกะทั้งหมด
| ตัวดำเนินการ | คำอธิบาย |
|---|---|
| && | สร้างเงื่อนไข AND ระหว่างสองนิพจน์โดยที่แต่ละนิพจน์มีผลลัพธ์บูลีน หากนิพจน์ทั้งสองส่งคืน TRUE การรวมกันของนิพจน์จะส่งคืน TRUE ด้วยเช่นกัน มิฉะนั้นการรวมจะส่งคืน FALSE |
| || (ไปป์คู่) | สร้างเงื่อนไข OR ระหว่างนิพจน์เชิงตรรกะสองรายการ หากนิพจน์ใดนิพจน์หนึ่งส่งกลับ TRUE ผลลัพธ์จะเป็น TRUE เฉพาะเมื่อนิพจน์ทั้งสองเป็น FALSE ผลลัพธ์จึงเป็น FALSE |
| IN | สร้างเงื่อนไข OR เชิงตรรกะระหว่างแต่ละแถวที่กำลังเปรียบเทียบกับตาราง หมายเหตุ: ไวยากรณ์ของคอนสตรักเตอร์ตารางจะใช้เครื่องหมายปีกกา |
| NOT | สลับสถานะของนิพจน์บูลีน (FALSE เป็น TRUE และกลับกัน) |
ตัวอย่างที่ใช้ตัว IN ดําเนินการเชิงตรรกะคือข้อกําหนดหน่วยวัด รายได้ ANZ ซึ่งใช้ CALCULATE ฟังก์ชัน DAX เพื่อบังคับใช้ตัวกรองเฉพาะของสองประเทศ: ออสเตรเลียและนิวซีแลนด์
หมายเหตุ
คุณจะได้รับการแนะนําให้รู้จักกับฟังก์ชันที่มีประสิทธิภาพ CALCULATE เมื่อคุณเรียนรู้วิธีการปรับเปลี่ยนบริบทตัวกรอง
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
ลำดับความสำคัญของตัวดำเนินการ
เมื่อสูตร DAX ของคุณมีตัวดำเนินการหลายรายการ, DAX จะใช้กฎเพื่อกำหนดลำดับการประเมิน ซึ่งเรียกว่าลำดับความสำคัญของตัวดำเนินการ การดำเนินงานจะเรียงลำดับตามตารางต่อไปนี้
| ตัวดำเนินการ | คำอธิบาย |
|---|---|
| ^ | การยกกำลัง |
| - | เครื่องหมาย (เป็น -1) |
| * และ / | การคูณและการหาร |
| NOT | NOT |
| + และ - | การบวกและการลบ |
| & | การเรียงต่อกันของสองสตริงข้อความ |
| =,==,<,><=,=,><> | การเปรียบเทียบ |
เมื่อตัวดําเนินการมีค่าลําดับความสําคัญเท่ากัน พวกเขาจะเรียงจากซ้ายไปขวา
โดยทั่วไปแล้ว ลำดับความสำคัญของตัวดำเนินการจะเหมือนกับที่พบได้ใน Excel หากคุณต้องการแทนที่ลำดับการประเมิน ให้จัดกลุ่มการดำเนินงานภายในวงเล็บ
ตัวอย่าง พิจารณาข้อกำหนดคอลัมน์จากการคำนวณต่อไปนี้
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]
ข้อกำหนดคอลัมน์จากการคำนวณตัวอย่างนี้สร้างผลลัพธ์ที่ไม่ถูกต้อง เนื่องจากการคูณเกิดขึ้นก่อนการลบ ข้อกำหนดคอลัมน์จากการคำนวณที่ถูกต้องต่อไปนี้ใช้วงเล็บเพื่อให้แน่ใจว่าการลบจะเกิดขึ้นก่อนการคูณ
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])
เคล็ดลับ
การจดจำกฎของลำดับความสำคัญของตัวดำเนินการอาจเป็นเรื่องยาก โดยเฉพาะกับผู้เริ่มต้น DAX ดังนั้น เราขอแนะนำให้คุณทดสอบสูตรของคุณอย่างละเอียด เมื่อสูตรไม่ได้สร้างผลลัพธ์ที่ถูกต้องเนื่องจากลำดับการประเมินที่ไม่ถูกต้อง คุณสามารถทดลองโดยการเพิ่มวงเล็บเพื่อปรับลำดับการประเมินได้ คุณยังสามารถเพิ่มวงเล็บเพื่อปรับปรุงความยากง่ายในการอ่านสูตรของคุณได้
โปรดดูตัวดำเนินการ DAX สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวดำเนินการ DAX และลำดับความสำคัญ
การแปลงค่าโดยนัย
เมื่อเขียนสูตร DAX ที่ใช้ตัวดำเนินการเพื่อรวมชนิดข้อมูลที่แตกต่างกัน คุณไม่จำเป็นต้องแปลงชนิดอย่างชัดเจน โดยทั่วไปแล้ว DAX จะระบุชนิดข้อมูลของออบเจ็กต์แบบจำลองที่อ้างอิงโดยอัตโนมัติ และทำการแปลงค่าโดยนัยตามที่จำเป็นเพื่อให้การดำเนินงานที่ระบุเสร็จสมบูรณ์
อย่างไรก็ตาม อาจมีข้อจำกัดบางประการเกี่ยวกับค่าที่สามารถแปลงได้สำเร็จ หากค่าหรือคอลัมน์มีชนิดข้อมูลที่เข้ากันไม่ได้กับการดำเนินงานปัจจุบัน DAX จะส่งคืนข้อผิดพลาด ตัวอย่าง ความพยายามในการคูณค่าวันที่จะสร้างข้อผิดพลาดเนื่องจากไม่ใช่ตรรกะ
มีการจัดการ BLANK แตกต่างกัน ขึ้นอยู่กับตัวดําเนินการที่ใช้ ซึ่งมีการจัดการคล้ายกับวิธีการที่ Excel ถือเป็น BLANK แต่แตกต่างกับวิธีที่ฐานข้อมูล (SQL) ถือเป็น NULL BLANK จะถือเป็นศูนย์เมื่อดำเนินการโดยตัวดำเนินการทางคณิตศาสตร์และเป็นสตริงว่างเมื่อเชื่อมสตริงเข้าด้วยกัน