RUNNINGSUM คำนวณยอดสะสมของคอลัมน์/นิพจน์ตามลำดับบนแกนของ Visual Calculations โดยสามารถกำหนด Axis, OrderBy, Blanks และ Reset เพื่อควบคุมลำดับและจุดเริ่มสะสม
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| Column | column_or_expression | คอลัมน์หรือนิพจน์ที่ต้องการสะสมบนกริดของ visual | |
| [Axis]ไม่บังคับ | axis | แกนเริ่มต้นของ visual (row context) | อ้างอิงแกนของ visual ที่ใช้เป็นลำดับสำหรับการสะสม (ROWS หรือ COLUMNS) ถ้าไม่ระบุ จะใช้แกน row context ปัจจุบัน |
| [OrderBy]ไม่บังคับ | orderby_expression | ลำดับเริ่มต้นของ visual | กำหนดการเรียงลำดับบนแกน ใช้ <axis>[<value>] เพื่อระบุคอลัมน์และลำดับ |
| [Blanks]ไม่บังคับ | text | DEFAULT | วิธีจัดการค่าว่าง ระบุ “DEFAULT” (ตัวเลือกเริ่มต้น) หรือรูปแบบอื่นตามความจำเป็น |
| [Reset]ไม่บังคับ | text_or_integer | ไม่มีการรีเซ็ต | เงื่อนไขการรีเซ็ตยอดสะสม เช่น “HIGHESTPARENT” จะรีเซ็ตเมื่อไปแม่กลุ่มถัดไป หรือกำหนดเป็นจำนวนแถว |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
RUNNINGSUM ใช้คำนวณ “ยอดสะสม” (running total) ตามแกนที่ระบุของ Visual Calculations โดยสะสมจากจุดแรกของแกนไปยังจุดปัจจุบัน เหมาะกับการวาดกราฟขยายตัว เช่น ยอดขายสะสมตามวัน หรือต้นทุนสะสมตามอาจารย์อิสระบน visual
ที่เจ๋งคือ RUNNINGSUM ถูกออกแบบเฉพาะสำหรับ Visual Calculations (ตัวคำนวณบนกริดของ visual โดยตรง) มากกว่าการเขียน measure ทั่วไป มันอาศัยลำดับแถวและแกนของ visual โดยอัตโนมัติ ถ้าเปลี่ยนลำดับหรือโครงสร้างแกน ผลลัพธ์ก็เปลี่ยนตามไป
ส่วนตัวผมถือว่า RUNNINGSUM เป็นเครื่องมือสำหรับงาน visual ที่ละเอียด ไม่ใช่ measure ที่ใช้บ่อยๆ ถ้าต้องทำยอดสะสมใน measure ปกติ ผมยังใช้ CALCULATE กับ FILTER วิธีดั้งเดิมมากกว่า เพราะมันชัดเจนและควบคุมได้ดี
แสดงยอดขายสะสมตามแกนเวลาใน visual โดยไม่ต้องเขียนสูตรสะสมแบบ FILTER เอง
ใช้ร่วมกับการจัดแกน/การแบ่งกลุ่มของ visual เพื่อสะสมภายในกลุ่ม
ใช้เมื่อต้องการเห็นยอดสะสมเพิ่มขึ้นไปเรื่อยๆบนกราฟ เช่นกราฟลูกษณ์ S ของยอดขาย
เหมาะกับตาราง hierarchical ที่ต้องการยอดสะสมของแต่ละปีแยกกัน ไม่ให้คิดสะสมข้ามปี
เมื่อต้อการควบคุมลำดับสะสม เช่น ต้องรองประวัติ cost ตามลำดับเวลาที่กำหนด
วิธีดั้งเดิมที่ใช้งาน measure ปกติ ไม่ใช้ Visual Calculations ดีสำหรับ report ที่ต้องการควบคุมที่เดียว
RUNNINGSUM สะสมค่า (รวมสะสม) ส่วน MOVINGAVERAGE คำนวณค่าเฉลี่ยของช่วง n แถวก่อนหน้า ทั้งสอง đều ใช้ Visual Calculations แต่วัตถุประสงค์ต่างกัน
ใช้ใน Visual Calculations (สร้างใน Power BI Desktop วิธี Create → Calculated column for visual) ไม่ใช่ใน DAX measure ปกติ ถ้าต้องการยอดสะสมใน measure ให้ใช้ CALCULATE กับ FILTER แทน
ให้ตรวจสิ่งต่อไปนี้: (1) visual ใช้แกนอะไร (ROWS or COLUMNS) (2) ลำดับของแกนตามที่กำหนดใน OrderBy (3) มีการ Reset ที่ค่อนข้างซูมลึก (HIGHESTPARENT) หรือไม่ เพราะ RUNNINGSUM อาศัยโครงสร้างกริดของ visual อย่างสิ้นเชิง
ขึ้นอยู่กับพารามิเตอร์ Blanks ที่กำหนด DEFAULT จะปล่อยให้ระบบจัดการแบบอัตโนมัติ สามารถระบุ FIRST หรือ LAST เพื่อบังคับให้ค่าว่างไปที่ต้น/ท้าย
ฟังก์ชันที่ผู้เขียนโยงไว้กับ RUNNINGSUM จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
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
ORDERBY ระบุลำดับการเรียงลำดับ (ASC/DESC) และการจัดการค่าว่าง สำหรับ window functions เช่น INDEX, OFFSET, WINDOW เพื่อกำหนดลำดับของแถวภายในกลุ่ม
PARTITIONBY ระบุคอลัมน์ที่ใช้แบ่งกลุ่มสำหรับ window functions เพื่อให้การเลื่อน/เลือกตำแหน่งเกิดขึ้น “ภายในกลุ่ม” ตามที่กำหนด มักใช้ร่วมกับ ORDERBY และ MATCHBY
MOVINGAVERAGE คำนวณค่าเฉลี่ยเคลื่อนที่ (moving average) บนแกนของ Visual Calculations ในตารางข้อมูล เหมาะสำหรับทำเส้นแนวโน้มที่เรียบขึ้นและลดความผันผวนของข้อมูล
SUMX เป็น iterator function ที่ทรงพลังใน DAX ออกแบบมาเพื่อวนลูปทีละแถวในตารางที่กำหนด แล้วคำนวณ expression ที่ซับซ้อนสำหรับแต่ละแถวก่อนนำผลลัพธ์ทั้งหมดมารวมกัน ต่างจาก SUM ที่รวมเฉพาะค่าใน column เดียว SUMX สร้าง row context สำหรับแต่ละแถว ทำให้สามารถคำนวณ expression อย่าง Quantity × Price หรือใช้ RELATED ดึงข้อมูลข้ามตารางได้ มีกลไก context transition อัตโนมัติเมื่อเจอ measure ในนั้น เหมาะสำหรับการคำนวณซับซ้อนระดับแถวข้อมูล ประหยัดพื้นที่ model เพราะไม่ต้องสร้าง calculated column แต่ช้ากว่า SUM และไม่รองรับ DirectQuery mode ใน calculated columns หรือ RLS rules
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่