LASTNONBLANKVALUE คืนค่าสุดท้ายที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ในบริบทตัวกรองปัจจุบัน ใช้หา “ค่าล่าสุดที่มีข้อมูล” เช่นยอดขายของวันล่าสุดที่มีค่า
=LASTNONBLANKVALUE(<Column>, <Expression>)
=LASTNONBLANKVALUE(<Column>, <Expression>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Column | column | Yes | คอลัมน์ที่ใช้เป็นลำดับสำหรับการไล่ค่า (มักเป็นวันที่/คีย์ที่เรียงลำดับได้) ฟังก์ชันจะเรียงลำดับค่าของคอลัมน์นี้และไล่ประเมิน Expression ตามลำดับ | |
| Expression | expression | Yes | นิพจน์หรือ Measure ที่ต้องการคืนค่าสุดท้ายที่ไม่เป็น BLANK สามารถเป็น Measure, SELECTEDVALUE, SUM หรือการคำนวณใด ๆ ที่ให้ผลลัพธ์เป็นสเกลาร์ |
หา “ยอดขาย” ของวันล่าสุดที่ [Total Sales] ไม่เป็น BLANK
คืนค่าสถานะครั้งล่าสุดที่มีข้อมูลในช่วงเวลาที่เลือก
ใช้กับการกรองตามลูกค้า/สินค้า เพื่อหา “ค่าล่าสุดที่มีข้อมูล” ภายในกลุ่มนั้น
ยอดขายวันล่าสุดที่มียอด = LASTNONBLANKVALUE( 'Date'[Date], [Total Sales] )ยอดขายวันล่าสุดที่มียอด =
LASTNONBLANKVALUE(
'Date'[Date],
[Total Sales]
)
ได้ค่าของ [Total Sales] ในวันล่าสุด (ตามลำดับ 'Date'[Date]) ที่ไม่เป็น BLANK
สถานะล่าสุด (ไม่ว่าง) = LASTNONBLANKVALUE( 'Log'[EventDate], SELECTEDVALUE('Log'[Status]) )=สถานะล่าสุด (ไม่ว่าง) =
LASTNONBLANKVALUE(
'Log'[EventDate],
SELECTEDVALUE('Log'[Status])
)
ได้สถานะล่าสุดที่ไม่เป็น BLANK ตามลำดับวันที่
ราคาล่าสุด (ไม่ว่าง) = LASTNONBLANKVALUE( 'Date'[Date], SELECTEDVALUE('Product'[Price]) )=ราคาล่าสุด (ไม่ว่าง) =
LASTNONBLANKVALUE(
'Date'[Date],
SELECTEDVALUE('Product'[Price])
)
ได้ราคาล่าสุดของสินค้าที่มีข้อมูล
ยอดขายล่าสุด (ในช่วงเลือก) = VAR LastDate = CALCULATE( MAX('Date'[Date]), ALLSELECTED('Date') ) RETURN CALCULATE( [Total Sales], 'Date'[Date] = LastDate )=ยอดขายล่าสุด (ในช่วงเลือก) =
VAR LastDate =
CALCULATE(
MAX('Date'[Date]),
ALLSELECTED('Date')
)
RETURN
CALCULATE(
[Total Sales],
'Date'[Date] = LastDate
)
ได้ค่า Total Sales ของวันล่าสุดภายในช่วงที่ผู้ใช้เลือก
LASTNONBLANK คืนค่า “จากคอลัมน์” ของรายการสุดท้ายที่ไม่ว่าง (เช่นคืนค่าของคอลัมน์ Date เอง) ส่วน LASTNONBLANKVALUE จะคืน “ค่าของ Expression” สำหรับรายการสุดท้ายที่ไม่ว่างตาม Column (เช่นคืน SUM(Sales) ของวันล่าสุด) กล่าวอีกนัยหนึ่ง LASTNONBLANK ให้ key, LASTNONBLANKVALUE ให้ค่า
LASTNONBLANKVALUE ทำงานภายใต้ filter context ปัจจุบัน ถ้าผู้ใช้เลือก Category = ‘Electronics’ ฟังก์ชันจะหาค่าล่าสุดของยอดขาย Electronics เท่านั้น มันจะไม่ข้ามไปหมวดอื่น เพราะ filter context จำกัดได้
ผม Recap คืน “ค่าของ Expression” ที่ประเมินสำหรับรายการสุดท้ายที่ไม่เป็น BLANK ตรงนี้คือความแตกต่างสำคัญ LASTNONBLANK ถูกออกแบบเพื่อส่งคืนค่าจากคอลัมน์เอง ขณะที่ LASTNONBLANKVALUE ส่งคืนผลลัพธ์ของนิพจน์ที่ประเมินที่รายการสุดท้ายนั้น
ใช่ได้ แต่ต้องระวังการแชร์ context หากคุณใช้ CALCULATE ซ้อนกัน อาจเกิดสถานการณ์ที่ filter context ถูกปรับเปลี่ยนหลายครั้ง ผมแนะนำให้ใช้ VAR เพื่อสัก simple measure ก่อน แล้วค่อยส่งให้ LASTNONBLANKVALUE
LASTNONBLANKVALUE ไม่สนับสนุนใน DirectQuery mode บนบางโหมด (เช่นในแถว RLS หรือคอลัมน์คำนวณ) ถ้าคุณใช้ DirectQuery ให้ลองใช้วิธี VAR + MAX + CALCULATE เป็นทางเลือก
LASTNONBLANKVALUE เป็นฟังก์ชันที่ออกแบบมาเพื่อหาค่าสุดท้ายที่มีความหมาย (ไม่ใช่ BLANK) ของนิพจน์เมื่อเรียงลำดับตามคอลัมน์ที่กำหนด มันทำงานโดยการไล่ผ่านค่าของคอลัมน์ (เช่นวันที่) ตามลำดับจากน้อยไปมาก แล้วประเมิน Expression สำหรับแต่ละค่า จนกว่าจะพบผลลัพธ์ที่ไม่ใช่ BLANK ตัวสุดท้าย
ที่เจ๋งคือ LASTNONBLANKVALUE นั้นบังคับให้เพิ่มคอลัมน์ลงใน filter context สำหรับการประเมิน Expression โดยอัตโนมัติ ต่างจาก LASTNONBLANK ที่หากคุณต้องการประเมิน Measure บางตัว คุณต้องใช้ CALCULATE เพื่อจัดการ context transition ด้วยตัวเอง แต่กับ LASTNONBLANKVALUE มันช่วยให้สะดวกขึ้นโดยจัดการให้แล้ว
ส่วนตัวผมชอบใช้ LASTNONBLANKVALUE เวลาหา “ข้อมูลล่าสุดที่สมบูรณ์” ในข้อมูลชุดเวลา ถ้าบ้านของคุณมียอดขายทุกวันตั้งแต่จันทร์ถึงวันศุกร์ แต่วันเสาร์ปิดร้าน (ค่า BLANK) ฟังก์ชันนี้จะข้ามวันเสาร์และคืนค่ายอดขายของวันศุกร์ที่ผ่านมา ได้ผลลัพธ์ที่มีความหมายจริง ๆ