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 แต่พารามิเตอร์อาจแตกต่างกันและผลลัพธ์ของฟังก์ชันก็อาจแตกต่างกันได้เช่นกัน

คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับสิ่งเหล่านี้ในบทต่อ ๆ ไป