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

แชร์ผ่าน


เปลี่ยน

นําไปใช้กับ: การคํานวณคอลัมน์จากการคํานวณ ตารางจากการคํานวณ หน่วยวัดภาพการคํานวณ

ประเมินนิพจน์เทียบกับรายการค่าและแสดงหนึ่งในหลายนิพจน์ผลลัพธ์ที่เป็นไปได้ ฟังก์ชันนี้สามารถใช้เพื่อหลีกเลี่ยงการมีคําสั่ง IF ที่ซ้อนกันหลายคําสั่ง

ไวยากรณ์

DAX
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])  

พารามิเตอร์

เงื่อนไข คำนิยาม
expression นิพจน์ DAX ใด ๆ ที่แสดงเป็นค่าสเกลาเดียวซึ่งจะมีการประเมินนิพจน์หลายครั้ง (สําหรับแต่ละแถว/บริบท)
value ค่าคงที่ที่จะจับคู่กับผลลัพธ์ของ expression
result นิพจน์สเกลาใด ๆ ที่จะประเมินถ้าผลลัพธ์ของ expression ตรงกับ valueที่สอดคล้องกัน
else นิพจน์สเกลาใด ๆ ที่จะประเมินถ้าผลลัพธ์ของ expression ไม่ตรงกับอาร์กิวเมนต์ value

ค่าที่ส่งกลับ

ถ้ามีการจับคู่กับ valueค่าสเกลาจาก result ที่สอดคล้องกันจะถูกส่งกลับ ถ้า ไม่ตรงกับ valueค่าจาก else จะถูกส่งกลับ ถ้าไม่มี values ตรงกันและไม่ได้ระบุ else จะส่งกลับ BLANK

หมายเหตุ

  • expression ที่จะประเมินสามารถเป็นค่าคงที่หรือนิพจน์ได้ การใช้งานโดยทั่วไปของฟังก์ชันนี้คือ การตั้งค่าพารามิเตอร์แรกเป็น TRUE ดูตัวอย่างด้านล่าง
  • นิพจน์ result ทั้งหมดและนิพจน์ else ต้องเป็นชนิดข้อมูลเดียวกัน
  • ลําดับของเงื่อนไขมีความสําคัญ ทันทีที่ value รายการที่ตรงกัน ระบบจะส่งกลับ result ที่สอดคล้องกัน และ values อื่น ๆ ที่ตามมาจะไม่ถูกประเมิน ตรวจสอบให้แน่ใจว่ามีการระบุ values ที่เข้มงวดที่สุดก่อนที่จะมี valuesที่เข้มงวดน้อยลง ดูตัวอย่างด้านล่าง

ตัวอย่าง

การใช้งาน SWITCH โดยทั่วไปคือการเปรียบเทียบ expression กับ valuesคงที่ ตัวอย่างต่อไปนี้จะสร้างคอลัมน์จากการคํานวณของชื่อเดือน:

DAX
= SWITCH (
         [Month Number Of Year],
         1, "January",
         2, "February",
         3, "March",
         4, "April",
         5, "May",
         6, "June",
         7, "July",
         8, "August",
         9, "September",
         10, "October",
         11, "November",
         12, "December",
         "Unknown month number"
        )

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

DAX
= SWITCH (
        TRUE,
        [Reorder Point] > [Safety Stock Level], "Good: Safety stock level exceeded",
        [Reorder Point] = [Safety Stock Level], "Minimal: Safety stock level met",
        [Reorder Point] < [Safety Stock Level], "At risk: Safety stock level not met",
        ISBLANK ( [Reorder Point] ), "Incomplete: Reorder point not set",
        ISBLANK ( [Safety Stock Level] ), "Incomplete: Safety stock level not set",
        "Unknown"
        )


ลําดับของ values มีความสําคัญ ในตัวอย่างต่อไปนี้ result ที่สองจะไม่ถูกส่งกลับเนื่องจากค่าแรกจะถูกจํากัดน้อยกว่าค่าที่สอง ผลลัพธ์ในตัวอย่างนี้จะ A หรือ Cเสมอ แต่ไม่ B

DAX
= SWITCH (
         TRUE,
         Product[Standard Cost] < 100, "A",
         Product[Standard Cost] < 10, "B",
         "C"
         )

คําสั่งต่อไปนี้แสดงข้อผิดพลาดเนื่องจากชนิดข้อมูลในอาร์กิวเมนต์ result แตกต่างกัน โปรดทราบว่าชนิดข้อมูลในอาร์กิวเมนต์ result และ else ทั้งหมดต้องเหมือนกัน

DAX
= SWITCH (
        [Class],
        "L", "Large",
        "H", 0.1
        )