| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| [(ไม่มีอาร์กิวเมนต์)]ไม่บังคับ | none | BLANK() ไม่มีพารามิเตอร์ใดๆ เรียกใช้โดยตรงเพื่อคืนค่าว่างเปล่า |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
BLANK เป็นฟังก์ชันที่ คืนค่าว่างเปล่า (null/empty value) ในDAX
จุดสำคัญของ BLANK:
– ไม่เหมือน 0: ค่า BLANK ไม่ใช่เลขศูนย์ (0) จะไม่นำมาคำนวณในผลรวมบางฟังก์ชัน
– ไม่เหมือน “”: ค่า BLANK ไม่ใช่ข้อความว่างเปล่า มีความแตกต่างในการเปรียบเทียบ
– ขึ้นอยู่กับบริบท: มักใช้ใน IF หรือ IFERROR เพื่อซ่อนค่าที่ไม่ต้องการ เช่น #DIV/0! หรือค่าที่ต่ำกว่าเกณฑ์
ส่วนตัวผมคิดว่า BLANK เป็นหนึ่งใน DAX Basics ที่ต้องเข้าใจให้ลึกซึ้ง เพราะมันส่งผลต่อการแสดงผลใน Matrix, Cards, และการคำนวณต่างๆ ถ้าไม่เข้าใจดี อาจได้ผลลัพธ์ไม่คาดหวัง 😎
ใช้ DIVIDE(Numerator, Denominator, BLANK()) เพื่อคืนค่าว่างแทน Error เมื่อตัวหารเป็นศูนย์
ใช้ IF(Condition, Value, BLANK()) เพื่อไม่ให้แสดงค่าในบางสถานการณ์
ใช้ BLANK() ในอาร์กิวเมนต์ false ของ IF เพื่อไม่แสดงค่าที่ไม่ตรงเงื่อนไข มีประโยชน์ในการแสดงผลใน Power BI Matrix
ใช้ BLANK() เพื่อไม่แสดง #DIV/0! error เมื่อตัวส่วนเป็น 0 ดีกว่าการแสดง 0 หรือข้อความ error
ใช้ ISBLANK() เพื่อตรวจสอบว่าค่าเป็น BLANK หรือไม่ ซึ่งแตกต่างจากการเปรียบเทียบกับ "" หรือ 0
ใช้ <> BLANK() ในตัวกรองเพื่อกำจัดแถวที่ไม่มีข้อมูล เมื่อใช้ FILTER ต้องใช้ BLANK() เปรียบเทียบแบบนี้
BLANK() = ค่า null/empty ไม่มีอยู่จริง | 0 = เลขศูนย์ (ตัวเลข) | "" = ข้อความว่างเปล่า (Text) ความแตกต่างสำคัญ: SUM() จะเพิกเฉยต่อ BLANK แต่จะนับ 0 เข้า และการเปรียบเทียบ BLANK = 0 จะคืน TRUE (automatic coercion) แต่ BLANK == 0 จะคืน FALSE (strict equality)
DAX จะคืน BLANK โดยอัตโนมัติใน: (1) Division by zero เช่น DIVIDE(10,0) | (2) LOOKUPVALUE หรือ RELATED ไม่พบค่า | (3) Functions ที่ผลลัพธ์ว่างเปล่า | (4) Aggregation ของแถวเหล่านั้นไม่มีข้อมูล
ใช้ ISBLANK() หรือเปรียบเทียบ BLANK() และ = BLANK() สำหรับการตรวจสอบที่ชัดเจน ส่วน == (strict equality) มักจะไม่ใช้กับ BLANK เพราะมักจะได้ FALSE ในกรณีที่ไม่ต้องการ
ไม่มีความแตกต่าง BLANK() ทำงานเหมือนกันในทั้ง Measure (ไม่มี row context) และ Calculated Column (มี row context) แต่การใช้งานแตกต่าง เช่น Measure แสดง BLANK จะไม่แสดงค่าในตาราง Card แต่ Calculated Column ยังแสดง BLANK ให้เห็น
ฟังก์ชันที่ผู้เขียนโยงไว้กับ BLANK จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
COALESCE คืนค่าแรกที่ไม่เป็น BLANK() จากหลายอาร์กิวเมนต์ เหมาะกับการกำหนดค่าเริ่มต้น (fallback) เช่น ใช้ค่า 0 เมื่อ Measure เป็น BLANK หรือเลือกค่าจากหลายแหล่งตามลำดับความสำคัญ
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 อย่างเข้มงวด
IF.EAGER ทำงานเหมือน IF แต่ใช้แผน eager ที่อาจประเมินทั้ง value_if_true และ value_if_false ทำให้ควรระวังเรื่อง performance และกรณีที่อีกแขนงอาจเกิด error แม้เงื่อนไขจะไม่เลือกแขนงนั้น
IFERROR ใช้ดักจับข้อผิดพลาดในนิพจน์: ถ้า Value เกิด error จะคืนค่า ValueIfError แทน ถ้าไม่เกิด error จะคืนค่าของ Value เดิม เหมาะสำหรับการแปลงชนิดข้อมูล การหารที่อาจเป็นศูนย์ หรือ measure ที่ไม่เสถียร
FIRSTNONBLANK คืนค่าตัวแรกของ Column ที่ทำให้ Expression ไม่เป็น BLANK ใช้บ่อยเพื่อหา "ค่าแรกที่มีข้อมูล" เช่นวันแรกที่มียอดขาย (คืนค่าเป็นวันที่) และมักใช้ร่วมกับ time intelligence
FIRSTNONBLANKVALUE คืนค่าแรกที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ซึ่งมีประโยชน์ในการหาค่าเริ่มต้นหรือค่าแรกที่มีข้อมูลจริง เช่นยอดขายของวันแรกที่มีการขาย
LASTNONBLANK คืนค่าตัวสุดท้ายจากคอลัมน์ที่ทำให้ expression ไม่เป็น BLANK ใช้บ่อยกับ semi-additive measures และเวลาต้องการหา "วันล่าสุดที่มีข้อมูล" ตามลำดับแถวของคอลัมน์
LASTNONBLANKVALUE คืนค่าสุดท้ายที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ในบริบทตัวกรองปัจจุบัน ใช้หา "ค่าล่าสุดที่มีข้อมูล" เช่นยอดขายของวันล่าสุดที่มีค่า
DIVIDE ทำการหารพร้อม Alternate Result หากตัวหารเป็นศูนย์หรือ BLANK ช่วยให้ Measure ไม่เกิด error และควบคุมค่าที่ต้องการแสดงได้
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่