| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| expression | Scalar | นิพจน์หรือค่าที่ต้องการนำไปเทียบกับรายการ value สามารถเป็น column reference, measure, SELECTEDVALUE(), หรือนิพจน์อื่น ในกรณี SWITCH(TRUE()) ให้ใส่ TRUE() ที่นี่ | |
| value1 | Scalar | ค่าแรกที่ต้องการจับคู่กับ expression หรือ boolean expression (สำหรับ SWITCH(TRUE())) | |
| result1 | Scalar | ผลลัพธ์ที่ต้องการคืนหากเข้าเงื่อนไขแรก สามารถเป็นข้อความ, ตัวเลข, measure reference ก็ได้ | |
| [else]ไม่บังคับ | Scalar | BLANK() | ค่าเริ่มต้นที่ส่งกลับเมื่อไม่เข้าเงื่อนไขใดเลย ถ้าไม่ระบุ SWITCH จะคืน BLANK() |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
SWITCH คือ logical control function ที่เปรียบเทียบ expression กับรายการ value และคืนผลลัพธ์ที่ตรงกัน ลองนึกดู ถ้า expression ตรงกับ value ไหนสักตัว มันจะคืน result ของเจ้า value นั้นทันที
มี 2 รูปแบบหลัก:
1. **Simple matching** – เทียบค่าเท่ากับ: SWITCH(Month, 1, “Jan”, 2, “Feb”, …)
2. **SWITCH(TRUE())** – เงื่อนไขแบบช่วง: SWITCH(TRUE(), Sales >= 1000, “High”, “Low”) ซึ่งช่วยลดการเขียน IF ซ้อนกัน
ส่วนตัวผมชอบ SWITCH(TRUE()) เพราะมันสวยกว่า IF มาก โค้ดอ่านง่าย และเขียนเร็ว 😎 ไม่ต้องเหน็ดเหนื่อยกับวงเล็บ IF ซ้อนหลายชั้น
เปลี่ยนรหัส/ตัวเลือกให้เป็นข้อความที่อ่านง่ายเพื่อแสดงในรายงาน
แบ่งผลลัพธ์เป็นหลายระดับ เช่น A/B/C หรือ Low/Medium/High โดยไม่ต้องซ้อน IF หลายชั้น
ใช้ SELECTEDVALUE อ่านตัวเลือกจาก Slicer แล้วให้ SWITCH คืนผลลัพธ์ตามตัวเลือกนั้น
อ่านค่า MonthNumber จาก column แล้วแมปเป็นชื่อเดือน ถ้าเลขไม่ตรง (ไม่ใช่ 1-12) จะคืน "Invalid Month"
ใช้ TRUE() เป็น expression แล้วใส่เงื่อนไข >= เรียงจากมากไปน้อย เมื่อเงื่อนไขแรกเป็นจริง SWITCH จะคืนผลลัพธ์ทันที ไม่ต้องประเมินเงื่อนไขที่เหลือ
ใช้ SELECTEDVALUE() อ่านค่าจาก Slicer (หรือตัวแปร dropdown) แล้วใช้ SWITCH เลือก Measure ที่ต้องแสดง ทำให้สร้าง Card/Chart ตัวเดียวที่สลับหลายตัวชี้วัดได้
ใช้ VAR เก็บค่ากลางเพื่อ reuse และมองเห็นอ่านง่าย ลองแล้ว AND/OR เงื่อนไขซับซ้อนกว่า SWITCH(TRUE()) จะชัดเจนมากว่าจะเกิดอะไรขึ้น
IF เหมาะสำหรับเงื่อนไขตัวเดียวหรือสองตัว แต่ SWITCH ใช้ดีกว่าเมื่อมี 3+ กรณี โค้ด SWITCH อ่านง่ายกว่า เหน็บความตั้งใจ ไม่ต้องเปิด-ปิดวงเล็บวุ่นวาย
SWITCH ปกติ: จับคู่ค่าเท่ากับ เช่น เปรียบค่าเดือนหรือสถานะ | SWITCH(TRUE()): ใช้ได้กับเงื่อนไขช่วง (>=,
SWITCH ประเมิน sequential (เรียงลำดับ) มันจะคืนผลลัพธ์ของ condition แรกที่เป็นจริง condition ที่หลังจะไม่ถูกประเมินอีก (short-circuit evaluation)
เรียงจากเฉพาะเจาะจงมาสามัญ หรือจากเข้มงวด (สูง) มาอ่อน (ต่ำ) เพื่อกันเงื่อนไขทับกัน เช่น >= 1000 ก่อน >= 500 ต่อมา
ถ้าไม่เข้าเงื่อนไขใดเลยและไม่ระบุ else SWITCH จะคืน BLANK() (ค่าว่าง)
ได้ใช้ทั้งใน Calculated Column และ Measure ลองได้ตามใจชอบ SWITCH เป็น logical function ลักษณะเดียวกับ IF ก็ว่าได้
SWITCH ต้องรับ scalar value (ค่าเดี่ยว) เท่านั้น ไม่สามารถใช้กับ table ได้ ถ้า expression คืนค่าเป็น table ต้องแปลงเป็น scalar ด้วยฟังก์ชันอย่าง COUNTROWS(), SUMX(), หรือ VALUES() ก่อน
ฟังก์ชันที่ผู้เขียนโยงไว้กับ SWITCH จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
ตรวจสอบว่าเงื่อนไขตรรกะทั้งหมดเป็นจริงหรือไม่ และคืนค่า TRUE เมื่อทุกเงื่อนไขเป็น TRUE
FALSE คืนค่าตรรกะ FALSE ใช้เป็นค่าคงที่ใน DAX สำหรับสร้างตรรกะและเงื่อนไข เช่น ใช้กับ IF หรือใช้เป็นค่าตั้งต้นในตัวแปร
IF เป็นฟังก์ชันตรรกะพื้นฐานที่สำคัญที่สุดใน DAX ใช้สำหรับตรวจสอบเงื่อนไข (logical test) แล้วคืนค่าที่แตกต่างกันตามผลลัพธ์ว่าเป็นจริง (TRUE) หรือเท็จ (FALSE) สามารถใช้ได้ทั้งในบริบท calculated column, measure, calculated table และ visual calculation ซึ่งทำให้มีความยืดหยุ่นสูง คืนค่าเป็น scalar value ได้ทุกประเภท ไม่ว่าจะเป็นตัวเลข ข้อความ วันที่ หรือค่า boolean ถ้าไม่ระบุค่าสำหรับกรณีเท็จ (value_if_false) จะคืน BLANK() โดยอัตโนมัติ มีคุณสมบัติพิเศษคือ lazy evaluation behavior ที่ประมวลผลเฉพาะเส้นทาง (branch) ที่ถูกเลือกเท่านั้น ทำให้มีประสิทธิภาพในการทำงานที่ดี แตกต่างจาก Excel IF อย่างชัดเจนตรงที่ใช้รูปแบบอ้างอิงแบบ Table[Column] ทำงานภายใต้ filter context และแยกความแตกต่างระหว่าง BLANK กับ 0 อย่างเข้มงวด
NOT ใช้กลับค่าตรรกะของนิพจน์ (TRUE ↔ FALSE) เหมาะกับการเขียนเงื่อนไขแบบปฏิเสธ และนิยมใช้ร่วมกับ IF/AND/OR เพื่อสร้างตรรกะที่อ่านชัดเจน
OR ตรวจสอบเงื่อนไขตรรกะ 2 ตัว และคืน TRUE เมื่อมีเงื่อนไขใดเงื่อนไขหนึ่งเป็น TRUE เหมาะกับการทำเงื่อนไขแบบ "อย่างน้อยหนึ่งข้อ" และนิยมเขียนด้วยตัวดำเนินการ || ในงานจริง
TRUE คืนค่าตรรกะ TRUE ใช้เป็นค่าคงที่ใน DAX เช่น ใช้กับ SWITCH(TRUE()) เพื่อจัดการเงื่อนไขหลายระดับ หรือใช้ร่วมกับ IF/AND/OR ในการสร้างตรรกะ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่