| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| LogicalTest | logical | เงื่อนไขที่ต้องการทดสอบ (TRUE/FALSE) | |
| ValueIfTrue | expression | ค่าที่คืนเมื่อ LogicalTest เป็น TRUE | |
| [ValueIfFalse]ไม่บังคับ | expression | BLANK() | ค่าที่คืนเมื่อ LogicalTest เป็น FALSE |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
IF.EAGER ทำงานคล้าย IF: ตรวจเงื่อนไขแล้วคืนค่าตามกรณีจริง/เท็จ แต่ต่างกันตรงที่ IF.EAGER มีแนวโน้มจะใช้แผนการทำงานแบบ eager ซึ่งอาจทำให้ระบบประเมินค่าทั้งแขนงจริงและแขนงเท็จ (ขึ้นกับบริบทและแผนการคิวรี)
ดังนั้น IF.EAGER อาจไม่เหมาะกับกรณีที่คุณหวัง “short-circuit” เพื่อหลีกเลี่ยง error หรือหลีกเลี่ยงการคำนวณหนักในแขนงที่ไม่ได้ถูกเลือก หากต้องการพฤติกรรมแบบนั้น ให้ใช้ IF ปกติ
บางกรณีอยากให้ทั้งสองฝั่งถูกคำนวณเพื่อดูผล/ตรวจคุณภาพ
ใช้เมื่อคุณตั้งใจให้ทั้งสองฝั่งถูกประเมิน (ต้องเข้าใจผลกระทบก่อน)
รูปแบบการเขียนเหมือน IF แต่ควรระวังเรื่อง eager evaluation
ถ้าคุณต้องการหลีกเลี่ยงการประเมินแขนงที่อาจ error ควรใช้ IF หรือ DIVIDE แทน
IF มักเหมาะกว่าในงานทั่วไป โดยเฉพาะเมื่ออีกแขนงคำนวณหนักหรือมีโอกาส error
IF.EAGER ให้พฤติกรรมการประเมินแบบ eager ที่บางครั้งช่วยรูปแบบคิวรี/สถานการณ์เฉพาะ แต่ต้องใช้ด้วยความเข้าใจ เพราะอาจทำให้ทั้งสองแขนงถูกประเมิน
แนะนำ DIVIDE เพราะออกแบบมาสำหรับการหารและการจัดการตัวหารเป็นศูนย์โดยตรง หรือใช้ IF ปกติร่วมกับเงื่อนไขก็ได้
ฟังก์ชันที่ผู้เขียนโยงไว้กับ IF.EAGER จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
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 อย่างเข้มงวด
IFERROR ใช้ดักจับข้อผิดพลาดในนิพจน์: ถ้า Value เกิด error จะคืนค่า ValueIfError แทน ถ้าไม่เกิด error จะคืนค่าของ Value เดิม เหมาะสำหรับการแปลงชนิดข้อมูล การหารที่อาจเป็นศูนย์ หรือ measure ที่ไม่เสถียร
TRUE คืนค่าตรรกะ TRUE ใช้เป็นค่าคงที่ใน DAX เช่น ใช้กับ SWITCH(TRUE()) เพื่อจัดการเงื่อนไขหลายระดับ หรือใช้ร่วมกับ IF/AND/OR ในการสร้างตรรกะ
BLANK คืนค่าว่างเปล่า (Empty Value) ในDAX ซึ่งแตกต่างจาก 0 หรือ "" โดยใช้สำหรับระบุว่าไม่มีข้อมูล มักใช้ใน IF เพื่อซ่อนผลลัพธ์ที่ไม่ต้องการ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่