Excel DAX - ตัวดำเนินการ
DAX เป็นภาษาสูตรที่ประกอบด้วยฟังก์ชันตัวดำเนินการและค่าที่สามารถใช้ในสูตรหรือนิพจน์เพื่อคำนวณและส่งคืนค่าอย่างน้อยหนึ่งค่า
คุณสามารถใช้ได้ DAX operatorsเพื่อเปรียบเทียบค่าทำการคำนวณทางคณิตศาสตร์และเชื่อมสตริงเข้าด้วยกัน ในบทนี้คุณจะได้เรียนรู้เกี่ยวกับตัวดำเนินการ DAX และวิธีการใช้งาน
ประเภทของตัวดำเนินการ DAX
DAX สนับสนุนตัวดำเนินการประเภทต่อไปนี้ -
- ตัวดำเนินการทางคณิตศาสตร์ DAX
- ตัวดำเนินการเปรียบเทียบ DAX
- ตัวดำเนินการต่อข้อความ DAX
- ตัวดำเนินการทางตรรกะ DAX
ลำดับความสำคัญของตัวดำเนินการ DAX
คุณสามารถมีสูตร DAX ที่มีตัวดำเนินการ DAX จำนวนมากรวมค่าหรือนิพจน์ต่างๆ ในกรณีเช่นนี้ผลลัพธ์สุดท้ายจะขึ้นอยู่กับลำดับการดำเนินการ DAX จัดเตรียมลำดับความสำคัญของตัวดำเนินการเริ่มต้นและวิธีการแทนที่ลำดับความสำคัญเริ่มต้น
ลำดับความสำคัญของตัวดำเนินการเริ่มต้น DAX แสดงอยู่ในตารางต่อไปนี้
ลำดับความสำคัญ | ตัวดำเนินการ | การดำเนินการ |
---|---|---|
1 | ^ | การยกกำลัง |
2 | - | ลงชื่อ |
3 | * และ / | การคูณและการหาร |
4 | ! | ไม่ |
5 | + และ - | การบวกและการลบ |
6 | & | การเชื่อมต่อ |
7 | =, <,>, <=,> = และ <> | เท่ากับน้อยกว่ามากกว่ามากกว่าน้อยกว่าหรือเท่ากับมากกว่าหรือเท่ากับและไม่เท่ากับ |
ไวยากรณ์นิพจน์ DAX
ก่อนอื่นคุณต้องเข้าใจไวยากรณ์ของนิพจน์ DAX และวิธีการประเมินนิพจน์ด้วยตัวถูกดำเนินการและตัวดำเนินการ
นิพจน์ทั้งหมดจะขึ้นต้นด้วยเครื่องหมายเท่ากับ (=) เสมอ เครื่องหมายเท่ากับบ่งชี้ว่าอักขระที่ต่อจากนี้เป็นนิพจน์
ทางด้านขวาของเครื่องหมายเท่ากับคุณจะมีตัวถูกดำเนินการเชื่อมต่อโดยตัวดำเนินการ DAX ตัวอย่างเช่น = 5 + 4> 5
= 5 * 6 - 3.
นิพจน์จะอ่านจากซ้ายไปขวาเสมอและการคำนวณจะทำในลำดับนั้นโดยยึดตามลำดับความสำคัญของตัวดำเนินการ DAX ที่ให้ไว้ในส่วนก่อนหน้า
ถ้าตัวดำเนินการ DAX มีค่าลำดับความสำคัญเท่ากันระบบจะประเมินจากซ้ายไปขวา ตัวอย่างเช่น = 5 * 6/10 ทั้ง * และ / มีลำดับก่อนหลังเหมือนกัน ดังนั้นนิพจน์จึงถูกประเมินเป็น 30/10 = 3
ถ้าตัวดำเนินการ DAX ในนิพจน์มีค่าลำดับความสำคัญต่างกันระบบจะประเมินตามลำดับความสำคัญจากซ้ายไปขวา
= 5 + 4> 7 ลำดับความสำคัญเริ่มต้นคือ + ก่อนและ> ถัดไป ดังนั้นนิพจน์จึงคำนวณจากซ้ายไปขวา - 5 + 4 ถูกคำนวณก่อนผลลัพธ์เป็น 9 จากนั้น 9> 5 จะได้รับการประเมินผลลัพธ์เป็น TRUE
= 5 * 6 - 3 ลำดับความสำคัญเริ่มต้นคือ * แรกและ - ถัดไป ดังนั้นนิพจน์จึงคำนวณจากซ้ายไปขวา - คำนวณ 5 * 6 ก่อนผลลัพธ์เป็น 30 แล้วคำนวณ 30 - 3 ได้ผลลัพธ์เป็น 27
= 2 * 5 - 6 * 3 ลำดับความสำคัญเริ่มต้นคือ * แรก * ถัดไปแล้ว - ดังนั้นนิพจน์จึงประเมินเป็น 10 - 18 แล้วจึงเป็น -8 โปรดทราบว่ามันไม่ใช่ 10 - 6 ที่ทำให้เกิด 4 และ 4 * 3 นั่นคือ 12
การใช้วงเล็บเพื่อควบคุมลำดับการคำนวณ DAX
คุณสามารถเปลี่ยนลำดับความสำคัญของตัวดำเนินการเริ่มต้น DAX ได้โดยใช้วงเล็บจัดกลุ่มตัวถูกดำเนินการและตัวดำเนินการเพื่อควบคุมลำดับการคำนวณ
ตัวอย่างเช่น = 5 * 6 - 3 ประเมินเป็น 27 ด้วยลำดับความสำคัญของตัวดำเนินการเริ่มต้น DAX หากคุณใช้วงเล็บเพื่อจัดกลุ่มตัวถูกดำเนินการและตัวดำเนินการเป็น = 5 * (6 - 3) ระบบจะคำนวณ 6 - 3 ก่อนทำให้เป็น 3 จากนั้นจึงคำนวณ 5 * 3 ซึ่งได้ผลลัพธ์เป็น 15
= 2 * 5 - 6 * 3 ประเมินเป็น -8 ด้วยลำดับความสำคัญของตัวดำเนินการเริ่มต้น DAX หากคุณใช้วงเล็บเพื่อจัดกลุ่มตัวถูกดำเนินการและตัวดำเนินการเป็น = 2 * (5 - 6) * 3 จะมีการคำนวณ 5 - 6 ก่อนโดยให้ผลเป็น -1 จากนั้นจะคำนวณ 2 * (-1) * 3 ซึ่งให้ผลลัพธ์เป็น -6 .
อย่างที่คุณเห็นด้วยตัวถูกดำเนินการและตัวดำเนินการเดียวกันผลลัพธ์ที่แตกต่างกันนั้นเป็นไปได้ด้วยวิธีที่คุณจัดกลุ่ม ดังนั้นเมื่อคุณใช้ตัวดำเนินการ DAX ในสูตร DAX คุณควรใส่ใจว่าลำดับการคำนวณจะเป็นอย่างไร
ความแตกต่างระหว่าง Excel และ DAX
แม้ว่า DAX จะมีความคล้ายคลึงกับสูตรของ Excel แต่ก็มีความแตกต่างที่สำคัญระหว่างทั้งสองอย่าง
DAX มีประสิทธิภาพมากกว่า Excel เนื่องจากมีเอ็นจิ้นการคำนวณถิ่นที่อยู่ของหน่วยความจำ
DAX รองรับชนิดข้อมูลมากกว่า Excel
DAX มีคุณลักษณะขั้นสูงเพิ่มเติมของฐานข้อมูลเชิงสัมพันธ์แบบจำลองข้อมูลรวมถึงการสนับสนุนที่สมบูรณ์ยิ่งขึ้นสำหรับประเภทวันที่และเวลา
ในบางกรณีผลลัพธ์ของการคำนวณหรือลักษณะการทำงานของฟังก์ชันใน DAX อาจไม่เหมือนกับใน Excel เนื่องจากความแตกต่างดังต่อไปนี้ -
- การหล่อชนิดข้อมูล
- ประเภทข้อมูล
ความแตกต่างในการแคสต์ประเภทข้อมูล
ใน DAX เมื่อคุณมีตัวดำเนินการ expression = value1 value2 ตัวถูกดำเนินการ 2 ตัว value1 และ value2 ควรเป็นชนิดข้อมูลเดียวกัน ถ้าชนิดข้อมูลต่างกัน DAX จะแปลงเป็นชนิดข้อมูลทั่วไปก่อนโดยปริยาย อ้างถึงบท - ไวยากรณ์ DAX สำหรับรายละเอียด
ตัวอย่างเช่นคุณต้องเปรียบเทียบตัวถูกดำเนินการสองชนิดของข้อมูลที่ต่างกันพูดตัวเลขที่เกิดจากสูตรเช่น = [จำนวนเงิน] * 0.08 และจำนวนเต็ม ตัวเลขแรกอาจเป็นเลขฐานสิบที่มีทศนิยมหลายตำแหน่งในขณะที่ตัวเลขที่สองเป็นจำนวนเต็ม จากนั้น DAX จะจัดการดังนี้ -
ขั้นแรก DAX จะแปลงทั้งสองตัวถูกดำเนินการเป็นจำนวนจริงโดยใช้รูปแบบตัวเลขที่ใหญ่ที่สุดที่สามารถจัดเก็บตัวเลขทั้งสองชนิดได้
จากนั้น DAX จะเปรียบเทียบจำนวนจริงทั้งสอง
ในทางตรงกันข้าม Excel พยายามเปรียบเทียบค่าของชนิดข้อมูลต่างๆโดยไม่บังคับให้เป็นประเภทข้อมูลทั่วไปก่อน ด้วยเหตุนี้คุณอาจพบผลลัพธ์ที่แตกต่างกันใน DAX และใน Excel สำหรับนิพจน์การเปรียบเทียบเดียวกัน
ความแตกต่างในประเภทข้อมูล
ลำดับความสำคัญของตัวดำเนินการใน DAX และ Excel จะเหมือนกัน อย่างไรก็ตามเปอร์เซ็นต์ตัวดำเนินการ (%) และช่วงข้อมูลที่ Excel สนับสนุนไม่ได้รับการสนับสนุนโดย DAX นอกจากนี้ DAX ยังสนับสนุนตารางเป็นชนิดข้อมูลซึ่งไม่ใช่กรณีใน Excel
นอกจากนี้ในสูตร Excel คุณสามารถอ้างถึงเซลล์เดียวหรืออาร์เรย์หรือช่วงของเซลล์ ในสูตร DAX คุณไม่สามารถอ้างถึงสิ่งเหล่านี้ได้ การอ้างอิงสูตร DAX ไปยังข้อมูลควรเป็นตามตารางคอลัมน์เขตข้อมูลจากการคำนวณและคอลัมน์จากการคำนวณ
ถ้าคุณคัดลอกสูตรจาก Excel และวางใน DAX ตรวจสอบความถูกต้องของสูตร DAX เนื่องจากไวยากรณ์ DAX แตกต่างจากไวยากรณ์ของสูตร Excel นอกจากนี้แม้ว่าฟังก์ชันจะมีชื่อเดียวกันใน DAX และ Excel แต่พารามิเตอร์อาจแตกต่างกันและผลลัพธ์ของฟังก์ชันก็อาจแตกต่างกันได้เช่นกัน
คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับสิ่งเหล่านี้ในบทต่อ ๆ ไป