LASTNONBLANKVALUE คืนค่าสุดท้ายที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ในบริบทตัวกรองปัจจุบัน ใช้หา “ค่าล่าสุดที่มีข้อมูล” เช่นยอดขายของวันล่าสุดที่มีค่า
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| Column | column | คอลัมน์ที่ใช้เป็นลำดับสำหรับการไล่ค่า (มักเป็นวันที่/คีย์ที่เรียงลำดับได้) ฟังก์ชันจะเรียงลำดับค่าของคอลัมน์นี้และไล่ประเมิน Expression ตามลำดับ |
| Expression | expression | นิพจน์หรือ Measure ที่ต้องการคืนค่าสุดท้ายที่ไม่เป็น BLANK สามารถเป็น Measure, SELECTEDVALUE, SUM หรือการคำนวณใด ๆ ที่ให้ผลลัพธ์เป็นสเกลาร์ |
LASTNONBLANKVALUE เป็นฟังก์ชันที่ออกแบบมาเพื่อหาค่าสุดท้ายที่มีความหมาย (ไม่ใช่ BLANK) ของนิพจน์เมื่อเรียงลำดับตามคอลัมน์ที่กำหนด มันทำงานโดยการไล่ผ่านค่าของคอลัมน์ (เช่นวันที่) ตามลำดับจากน้อยไปมาก แล้วประเมิน Expression สำหรับแต่ละค่า จนกว่าจะพบผลลัพธ์ที่ไม่ใช่ BLANK ตัวสุดท้าย
ที่เจ๋งคือ LASTNONBLANKVALUE นั้นบังคับให้เพิ่มคอลัมน์ลงใน filter context สำหรับการประเมิน Expression โดยอัตโนมัติ ต่างจาก LASTNONBLANK ที่หากคุณต้องการประเมิน Measure บางตัว คุณต้องใช้ CALCULATE เพื่อจัดการ context transition ด้วยตัวเอง แต่กับ LASTNONBLANKVALUE มันช่วยให้สะดวกขึ้นโดยจัดการให้แล้ว
ส่วนตัวผมชอบใช้ LASTNONBLANKVALUE เวลาหา “ข้อมูลล่าสุดที่สมบูรณ์” ในข้อมูลชุดเวลา ถ้าบ้านของคุณมียอดขายทุกวันตั้งแต่จันทร์ถึงวันศุกร์ แต่วันเสาร์ปิดร้าน (ค่า BLANK) ฟังก์ชันนี้จะข้ามวันเสาร์และคืนค่ายอดขายของวันศุกร์ที่ผ่านมา ได้ผลลัพธ์ที่มีความหมายจริง ๆ
หา “ยอดขาย” ของวันล่าสุดที่ [Total Sales] ไม่เป็น BLANK
คืนค่าสถานะครั้งล่าสุดที่มีข้อมูลในช่วงเวลาที่เลือก
ใช้กับการกรองตามลูกค้า/สินค้า เพื่อหา “ค่าล่าสุดที่มีข้อมูล” ภายในกลุ่มนั้น
LASTNONBLANKVALUE ไล่วันที่ตามลำดับจากเก่าไปใหม่ แล้วคืน [Total Sales] ของวันล่าสุดที่มีค่าจริง (ถ้าวันนั้นปิดร้านจะเป็น BLANK ฟังก์ชันจะข้ามไป)
ประเมิน Status ตามลำดับ EventDate และส่งคืนสถานะล่าสุดที่มีค่า เป็นประโยชน์ถ้าบางวันไม่มีบันทึก (BLANK)
เมื่อใช้ร่วมกับ SUMMARIZECOLUMNS หรือ Pivot ฟังก์ชันนี้จะหาราคาล่าสุดของแต่ละสินค้าที่บันทึกไว้
วิธีนี้ใช้ VAR เพื่อหาวันล่าสุด แล้วค่อย CALCULATE เพื่อให้ได้ผลลัพธ์ที่สอดคล้องกับ visual filter ของผู้ใช้
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 จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
ALLSELECTED เป็น DAX function ที่ลบ filter context จาก Visual (row และ column filters) แต่คง filter context จาก Slicer, Page Filter และ Report Filter ไว้ ทำให้สามารถคำนวณ Visual Total ได้ ซึ่งเป็นยอดรวมของข้อมูลที่ผู้ใช้เลือกดูในปัจจุบัน ไม่ใช่ Grand Total ทั้งหมด ฟังก์ชันนี้ทำงานผ่าน Shadow Filter Context ซึ่งเป็น filter context ที่ DAX Engine เก็บไว้ก่อนที่ Visual จะเพิ่ม row/column filter เมื่อเรียก ALLSELECTED จะเรียกคืน shadow context นี้ ใช้ร่วมกับ CALCULATE และ SUM, AVERAGE, DIVIDE เพื่อคำนวณ Visual Total, Percentage of Selected, Dynamic Benchmark, Ranking within Selection และ Time Intelligence ที่เคารพ Slicer ต้องระวังการใช้งานใน iterator functions เช่น SUMX, FILTER เพราะอาจให้ผลลัพธ์ที่ไม่คาดคิด และระวัง Expanded Table Caveat ที่จะลบ filter ของ related table ด้วย
CALCULATE เป็นฟังก์ชันหลักที่สำคัญที่สุดใน DAX ใช้สำหรับ evaluate expression ภายใต้ filter context ที่ถูกปรับเปลี่ยน สามารถเพิ่มตัวกรองใหม่ ลบตัวกรองเดิม หรือแทนที่ filter ที่มีอยู่ได้ รองรับทั้ง Boolean expression และ table expression เป็น filter arguments พร้อม filter modifier functions เช่น REMOVEFILTERS, ALL, ALLEXCEPT, KEEPFILTERS เพื่อควบคุมการกรองอย่างละเอียด มีพฤติกรรมพิเศษคือ context transition ที่เปลี่ยน row context เป็น filter context โดยอัตโนมัติ ทำให้เป็นเครื่องมือหลักในการสร้าง measure ที่ซับซ้อนและ calculated column ที่ต้องใช้ aggregation
SELECTEDVALUE ตรวจสอบว่า Filter Context ลดลงเหลือเพียงค่าเดียวแล้ว ถ้าใช่ให้คืนค่านั้น ถ้าไม่ใช่ให้คืนค่าอื่นแทน
FIRSTNONBLANKVALUE คืนค่าแรกที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ซึ่งมีประโยชน์ในการหาค่าเริ่มต้นหรือค่าแรกที่มีข้อมูลจริง เช่นยอดขายของวันแรกที่มีการขาย
LASTDATE คืนค่าตารางที่มีวันที่สุดท้ายในบริบทตัวกรองปัจจุบัน มักใช้เป็นตารางตัวกรองให้ CALCULATE เพื่อคำนวณ measure ณ วันสุดท้ายของช่วงที่เลือก และสามารถใช้ MAXX เพื่อแปลงผลเป็น scalar date ได้
LASTNONBLANK คืนค่าตัวสุดท้ายจากคอลัมน์ที่ทำให้ expression ไม่เป็น BLANK ใช้บ่อยกับ semi-additive measures และเวลาต้องการหา "วันล่าสุดที่มีข้อมูล" ตามลำดับแถวของคอลัมน์
BLANK คืนค่าว่างเปล่า (Empty Value) ในDAX ซึ่งแตกต่างจาก 0 หรือ "" โดยใช้สำหรับระบุว่าไม่มีข้อมูล มักใช้ใน IF เพื่อซ่อนผลลัพธ์ที่ไม่ต้องการ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่