| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| logical | boolean | นิพจน์ตรรกะที่ต้องการกลับผล (เช่น [Sales] > 0 หรือ ISBLANK([Measure])) |
NOT เป็นตัวดำเนินการตรรกะที่กลับค่าบูลีน TRUE เป็น FALSE และ FALSE เป็น TRUE ใช้เมื่อคุณต้องการนิเสธเงื่อนไข เช่น “ไม่ว่าง” “ไม่กำไร” หรือ “ไม่ใช่หมวดนี้” ระบบจะประเมินนิพจน์ที่ส่งเข้า แล้วคืนค่าตรงข้าม
ที่เจ๋งคือ NOT ไม่ใช่ฟังก์ชันทั่วไป แต่เป็นตัวดำเนินการตรรกะที่เขียนด้วยไวยากรณ์ฟังก์ชัน จึงทำงานได้รวดเร็ว และเมื่อใช้ในแถว Context มันจะดำเนินการ Context Transition ได้สอดคล้องกับ AND/OR ทำให้ผสมกับตรรกะซับซ้อนได้ง่าย
ส่วนตัวผม ผมชอบใช้ NOT เวลาที่เขียนเงื่อนไขแบบ “ปฏิเสธ” เพราะมันอ่านออกว่า “ไม่” ซึ่งสื่อสารเจตนาได้ชัดกว่าการเขียนสัญลักษณ์กลับด้าน (เช่น = หรือ = ยอดขาย…” 😎
ใช้ NOT เพื่อกลับผลของเงื่อนไข แล้วนำไปใช้ใน IF หรือเป็นตัวกรองใน Visual
คืน BLANK() เมื่อเงื่อนไขบางอย่าง “ไม่เป็นจริง” โดยใช้ NOT เพื่อทำให้โค้ดอ่านง่ายขึ้น
NOT จะกลับค่าจาก TRUE เป็น FALSE และกลับจาก FALSE เป็น TRUE เป็นการดำเนินการพื้นฐานสุด
ใช้ NOT ครอบ ISBLANK เพื่อสร้างเงื่อนไขว่า "มีค่า" การอ่านว่า "NOT blank" ชัดเจนว่าผลลัพธ์หมายถึง "มีค่า"
กลับผลของเงื่อนไขกำไรเพื่อให้สื่อความหมายว่า "ไม่กำไร" ที่สำคัญคือการอ่านคำสั่งทั้ง IF NOT(…) ได้ไปเลย "if not profit is positive, then…"
ใช้ NOT เพื่อปฏิเสธเงื่อนไข [Category] = "A" ทำให้ CALCULATE รวมเฉพาะหมวดที่ไม่ใช่ A ผมชอบแบบนี้เพราะชัดเจนว่าเป็นการ "ตัดออก" หมวด A
ผมขอพูดถึงสองแบบที่ใช้บ่อย ถ้าเงื่อนไขง่าย ๆ การเขียนกลับด้านโดยตรง (เช่น แทน =) อาจสั้นกว่า และอ่านทีเดียว แต่ถ้าเป็นนิพจน์ยาวหรือซับซ้อน NOT ช่วยให้กลับผลทั้งก้อนและอ่านเจตนาได้ชัดกว่า ผมเลือก NOT เพราะ 1) อ่านค่อนข้างได้ว่าเป็น "ไม่" 2) ดูเหมือนการปฏิเสธของประพจน์ เช่น IF NOT(…) ดูเหมือน "if not this then…"
ทางเทคนิค NOT ควรรับนิพจน์ที่ให้ผลเป็นตรรกะ ถ้าส่งค่าอื่นมา ระบบจะพยายามแปลงตามกฎของ DAX (เช่น 0 = FALSE, ตัวเลข ≠ 0 = TRUE) แต่ผมแนะนำให้เขียนให้เป็นเงื่อนไขตรรกะก่อนเสมอ เช่น NOT(value > 0) แทน NOT(value) เพื่อให้ชัดเจนว่าสิ่งที่กลับนั้นหมายถึงอะไร
ได้ และผมใช้บ่อยเมื่อต้องการสร้างมาตรวัดที่เป็น "ไม่ใช่" เงื่อนไขบางอย่าง เช่น CALCULATE(SUM(Sales[Amount]), NOT(Sales[Category] = "A")) จะให้ผลรวมของหมวดที่ไม่ใช่ A ทั้งนี้ต้องแน่ใจว่า NOT ครอบเงื่อนไขตรรกะที่สมบูรณ์
ฟังก์ชันที่ผู้เขียนโยงไว้กับ NOT จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
ตรวจสอบว่าเงื่อนไขตรรกะทั้งหมดเป็นจริงหรือไม่ และคืนค่า 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 อย่างเข้มงวด
OR ตรวจสอบเงื่อนไขตรรกะ 2 ตัว และคืน TRUE เมื่อมีเงื่อนไขใดเงื่อนไขหนึ่งเป็น TRUE เหมาะกับการทำเงื่อนไขแบบ "อย่างน้อยหนึ่งข้อ" และนิยมเขียนด้วยตัวดำเนินการ || ในงานจริง
SWITCH เป็นฟังก์ชันตรรมชาติสำหรับจัดการหลายกรณี ช่วยให้หลีกเลี่ยง IF ซ้อนหลายชั้น และสามารถใช้รูปแบบ SWITCH(TRUE()) ได้ สำหรับเงื่อนไขแบบช่วง (>=, <=) หรือเงื่อนไขซับซ้อน
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่