ALLNOBLANKROW ทำงานคล้าย ALL แต่มีจุดเด่นคือ “ตัดแถวว่าง” ที่ระบบสร้างขึ้นอัตโนมัติเมื่อข้อมูลหลุดความสัมพันธ์ เช่น คีย์ในตารางข้อเท็จจริงไม่พบในตารางมิติ จึงเหมาะกับการคำนวณยอดรวม/สัดส่วนที่ไม่ต้องการให้แถวว่างเข้ามาปนผลลัพธ์ และยังใช้เป็นตัวช่วยตรวจจับปัญหาคุณภาพข้อมูลในโมเดลได้ด้วย
=ALLNOBLANKROW(<table_or_column>)
=ALLNOBLANKROW(<table_or_column>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table_or_column | table/column | Yes | ตารางหรือคอลัมน์ที่ต้องการคืนค่าทั้งหมด/ล้างตัวกรอง โดยตัดแถวว่างออก (แถวว่างมักเกิดจากคีย์ไม่ตรงกันระหว่างตารางข้อเท็จจริงและตารางมิติ) |
ใช้ ALLNOBLANKROW ส่งคืนตารางที่มีทุกแถว “ยกเว้นแถวว่าง” เหมาะกับกรณีที่มีข้อมูลหลุดความสัมพันธ์หรือคุณภาพข้อมูลยังไม่สมบูรณ์
ใช้ ALLNOBLANKROW ภายใน CALCULATE เพื่อลบตัวกรองทั้งหมด แต่ไม่ดึงแถวว่างมาร่วมในการคำนวณ
เมื่อมีข้อมูลในตารางข้อเท็จจริงที่ไม่มีคู่ในตารางมิติ ระบบจะสร้างแถวว่างขึ้นมาอัตโนมัติ สามารถใช้ ALLNOBLANKROW เพื่อตัดออกชั่วคราว
All Sales No Blank = CALCULATE( SUM(Sales[Amount]), ALLNOBLANKROW(Sales) )All Sales No Blank =
CALCULATE(
SUM(Sales[Amount]),
ALLNOBLANKROW(Sales)
)
ยอดขายรวมทั้งหมด (ไม่รวมแถวว่าง)
% Excluding Blank = DIVIDE( [Sales Amount], CALCULATE( [Sales Amount], ALLNOBLANKROW(Product[Category]) ) )% Excluding Blank =
DIVIDE(
[Sales Amount],
CALCULATE(
[Sales Amount],
ALLNOBLANKROW(Product[Category])
)
)
% ยอดขายไม่รวมสินค้าที่ไม่มี Category
Products With Category = COUNTROWS( ALLNOBLANKROW(Product[Category]) )Products With Category =
COUNTROWS(
ALLNOBLANKROW(Product[Category])
)
จำนวนสินค้าที่มี Category (ไม่นับที่เป็นค่าว่าง)
-- ALL รวม Blank ALL Total = CALCULATE( [Sales Amount], ALL(Product) ) -- ALLNOBLANKROW ไม่รวม Blank No Blank Total = CALCULATE( [Sales Amount], ALLNOBLANKROW(P…-- ALL รวม Blank
ALL Total =
CALCULATE(
[Sales Amount],
ALL(Product)
)
-- ALLNOBLANKROW ไม่รวม Blank
No Blank Total =
CALCULATE(
[Sales Amount],
ALLNOBLANKROW(Product)
)
ความแตกต่างระหว่าง ALL และ ALLNOBLANKROW
มักเกิดจากข้อมูลในตารางข้อเท็จจริงที่อ้างอิงรหัส (คีย์) ไปยังตารางมิติ แต่ไม่พบรหัสดังกล่าวในตารางมิติ ระบบจึงสร้างแถวว่างขึ้นมาอัตโนมัติเพื่อรองรับการคำนวณ
เมื่อนำไปใช้เป็นนิพจน์ตาราง (เช่น ใน FILTER, COUNTROWS) ALLNOBLANKROW จะคืนค่าตารางที่มีทุกแถว “ยกเว้นแถวว่าง” แต่เมื่อใช้ภายใน CALCULATE จะทำหน้าที่ปรับบริบทตัวกรอง โดยลบตัวกรองและตัดแถวว่างออกก่อนคำนวณนิพจน์หลัก
ถ้าโมเดลมีข้อมูลสะอาดและความสัมพันธ์สมบูรณ์ (ไม่เกิดแถวว่าง) ใช้ ALL ได้เลย แต่ถ้ามีแถวว่างปนอยู่ แนะนำใช้ ALLNOBLANKROW เพื่อกันผลกระทบชั่วคราว อย่างไรก็ตามวิธีที่ดีที่สุดคือแก้ปัญหาคุณภาพข้อมูลที่ต้นทาง
แนวคิดคือทำงานเหมือน ALL ทุกประการ แต่เพิ่มเงื่อนไขเพื่อตัดแถวว่างออก ทำให้ผลรวม/การนับไม่ถูกรบกวนจากข้อมูลที่หลุดความสัมพันธ์
ALLNOBLANKROW เป็นฟังก์ชันที่มี 2 พฤติกรรมแตกต่างกัน ขึ้นอยู่กับบริบทการใช้งาน:
คืนค่า ตารางจริง ที่มีแถวทั้งหมดโดยไม่สนตัวกรอง แต่ตัดแถวว่าง (Blank Row) ออก Blank Row เกิดจากความสัมพันธ์ที่ไม่สมบูรณ์ระหว่างตาราง มักใช้ใน FILTER, COUNTROWS
ทำหน้าที่ ลบตัวกรองทั้งหมดและตัด Blank Row ไม่ได้คืนค่าตาราง แต่แก้ไข Filter Context ให้ CALCULATE มีประโยชน์เมื่อต้องการ Grand Total โดยไม่รวม Blank Row
หมายเหตุ: ALLNOBLANKROW เหมือน ALL แต่เพิ่มเงื่อนไข ISBLANK = FALSE เข้าไป ใช้เมื่อมีปัญหา Data Quality ในความสัมพันธ์