ALLNOBLANKROW ทำงานคล้าย ALL แต่มีจุดเด่นคือ “ตัดแถวว่าง” ที่ระบบสร้างขึ้นอัตโนมัติเมื่อข้อมูลหลุดความสัมพันธ์ เช่น คีย์ในตารางข้อเท็จจริงไม่พบในตารางมิติ จึงเหมาะกับการคำนวณยอดรวม/สัดส่วนที่ไม่ต้องการให้แถวว่างเข้ามาปนผลลัพธ์ และยังใช้เป็นตัวช่วยตรวจจับปัญหาคุณภาพข้อมูลในโมเดลได้ด้วย
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| table_or_column | table/column | ตารางหรือคอลัมน์ที่ต้องการคืนค่าทั้งหมด/ล้างตัวกรอง โดยตัดแถวว่างออก (แถวว่างมักเกิดจากคีย์ไม่ตรงกันระหว่างตารางข้อเท็จจริงและตารางมิติ) |
ALLNOBLANKROW เป็นฟังก์ชันที่มี 2 พฤติกรรมแตกต่างกัน ขึ้นอยู่กับบริบทการใช้งาน:
คืนค่า ตารางจริง ที่มีแถวทั้งหมดโดยไม่สนตัวกรอง แต่ตัดแถวว่าง (Blank Row) ออก Blank Row เกิดจากความสัมพันธ์ที่ไม่สมบูรณ์ระหว่างตาราง มักใช้ใน FILTER, COUNTROWS
ทำหน้าที่ ลบตัวกรองทั้งหมดและตัด Blank Row ไม่ได้คืนค่าตาราง แต่แก้ไข Filter Context ให้ CALCULATE มีประโยชน์เมื่อต้องการ Grand Total โดยไม่รวม Blank Row
หมายเหตุ: ALLNOBLANKROW เหมือน ALL แต่เพิ่มเงื่อนไข ISBLANK = FALSE เข้าไป ใช้เมื่อมีปัญหา Data Quality ในความสัมพันธ์
ใช้ ALLNOBLANKROW ส่งคืนตารางที่มีทุกแถว “ยกเว้นแถวว่าง” เหมาะกับกรณีที่มีข้อมูลหลุดความสัมพันธ์หรือคุณภาพข้อมูลยังไม่สมบูรณ์
ใช้ ALLNOBLANKROW ภายใน CALCULATE เพื่อลบตัวกรองทั้งหมด แต่ไม่ดึงแถวว่างมาร่วมในการคำนวณ
เมื่อมีข้อมูลในตารางข้อเท็จจริงที่ไม่มีคู่ในตารางมิติ ระบบจะสร้างแถวว่างขึ้นมาอัตโนมัติ สามารถใช้ ALLNOBLANKROW เพื่อตัดออกชั่วคราว
ALLNOBLANKROW(Sales) ลบตัวกรองทั้งหมดเหมือน ALL แต่ตัดแถวว่างออก เหมาะกับกรณีมีข้อมูลที่อ้างอิงรหัสสินค้า/ลูกค้าที่ไม่พบในตารางมิติ ทำให้เกิดแถวว่างขึ้นมา
ตัวหารใช้ ALLNOBLANKROW เพื่อหายอดรวมทุก Category แต่ไม่รวมสินค้าที่ Category เป็นค่าว่าง
ALLNOBLANKROW(Product[Category]) คืนตารางที่มีทุก Category แต่ไม่รวมค่าว่าง COUNTROWS นับจำนวน
ALL อาจรวมแถวว่าง (ข้อมูลที่หลุดความสัมพันธ์) ส่วน ALLNOBLANKROW จะตัดออก ความแตกต่างของผลลัพธ์ช่วยให้เห็นผลกระทบจากข้อมูลที่หลุดความสัมพันธ์ได้ชัดขึ้น
มักเกิดจากข้อมูลในตารางข้อเท็จจริงที่อ้างอิงรหัส (คีย์) ไปยังตารางมิติ แต่ไม่พบรหัสดังกล่าวในตารางมิติ ระบบจึงสร้างแถวว่างขึ้นมาอัตโนมัติเพื่อรองรับการคำนวณ
เมื่อนำไปใช้เป็นนิพจน์ตาราง (เช่น ใน FILTER, COUNTROWS) ALLNOBLANKROW จะคืนค่าตารางที่มีทุกแถว “ยกเว้นแถวว่าง” แต่เมื่อใช้ภายใน CALCULATE จะทำหน้าที่ปรับบริบทตัวกรอง โดยลบตัวกรองและตัดแถวว่างออกก่อนคำนวณนิพจน์หลัก
ถ้าโมเดลมีข้อมูลสะอาดและความสัมพันธ์สมบูรณ์ (ไม่เกิดแถวว่าง) ใช้ ALL ได้เลย แต่ถ้ามีแถวว่างปนอยู่ แนะนำใช้ ALLNOBLANKROW เพื่อกันผลกระทบชั่วคราว อย่างไรก็ตามวิธีที่ดีที่สุดคือแก้ปัญหาคุณภาพข้อมูลที่ต้นทาง
แนวคิดคือทำงานเหมือน ALL ทุกประการ แต่เพิ่มเงื่อนไขเพื่อตัดแถวว่างออก ทำให้ผลรวม/การนับไม่ถูกรบกวนจากข้อมูลที่หลุดความสัมพันธ์
ฟังก์ชันที่ผู้เขียนโยงไว้กับ ALLNOBLANKROW จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
ALL มีพฤติกรรมแตกต่างกัน 2 แบบ: ใช้เป็น Table Expression จะคืนทุกแถวในตาราง หรือทุกค่าในคอลัมน์ โดยไม่สนใจ Filter ใดๆ เหมาะสำหรับใช้ร่วมกับ FILTER, COUNTROWS, SUMMARIZE หรือใช้เป็น CALCULATE Modifier เพื่อลบ Filter ออกจากตารางหรือคอลัมน์ที่ระบุ ทำให้สามารถคำนวณ Grand Total หรือหาเปอร์เซ็นต์เทียบกับยอดรวมได้
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
FILTER ใช้กรองแถวในตารางตามเงื่อนไขที่ซับซ้อน โดยวนลูปทุกแถวและประเมินเงื่อนไข เหมาะกับการกรองด้วย Measure หรือ Expression ซึ่ง Boolean Expression ทำไม่ได้ แต่ต้องระวังเรื่อง Performance เพราะเป็น Iterator Function ที่ช้ากว่า Boolean Expression ดังนั้นควรใช้เฉพาะเมื่อจำเป็น และอย่าใช้ FILTER กับ RELATED เพื่อกรองข้ามตาราง ให้กรองที่ Dimension Table โดยตรงแทน
REMOVEFILTERS ลบ Filter ออกจากตารางหรือคอลัมน์ที่ระบุ ใช้ได้ใน CALCULATE เท่านั้น เทียบเท่า ALL เมื่อใช้เป็น CALCULATE Modifier แต่ชัดเจนและอ่านโค้ดง่ายกว่า แนะนำใช้แทน ALL เพราะสื่อความหมายได้ดีกว่า
COUNTROWS เป็นฟังก์ชันการรวม (Aggregation) ที่นับจำนวนแถวในตารางที่ระบุ ไม่ว่าจะเป็นตารางจริงในโมเดลหรือตารางเสมือน (Virtual Table) จากฟังก์ชันอื่นๆ เช่น FILTER, VALUES, DISTINCT นับเท่าไหร่? ผลลัพธ์ก็คือจำนวนแถวเต็ม ๆ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่