MOVINGAVERAGE คำนวณค่าเฉลี่ยเคลื่อนที่ (moving average) บนแกนของ Visual Calculations ในตารางข้อมูล เหมาะสำหรับทำเส้นแนวโน้มที่เรียบขึ้นและลดความผันผวนของข้อมูล
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| column | column | คอลัมน์ที่มีค่าที่ต้องการนำไปคำนวณค่าเฉลี่ยเคลื่อนที่ (เช่น Sales[Amount]) | |
| windowSize | integer | ขนาดของหน้าต่าง (window) ที่ใช้คำนวณค่าเฉลี่ยเคลื่อนที่ ต้องเป็นค่าคงที่ (เช่น 7 = เฉลี่ย 7 จุด/7 แถว/7 วัน) | |
| [includeCurrent]ไม่บังคับ | boolean | TRUE | ระบุว่าจะรวมแถวปัจจุบันในการคำนวณหรือไม่ TRUE = รวม (ค่าเริ่มต้น), FALSE = ไม่รวม (เฉลี่ยจากแถวก่อนหน้า) |
| [axis]ไม่บังคับ | axis | แกนเริ่มต้นของ visual | แกนการคำนวณ (Rows = ตามแถว, Columns = ตามคอลัมน์) ถ้าไม่ระบุ ใช้แกนเริ่มต้นของ visual |
| [orderBy]ไม่บังคับ | expression | ลำดับแสดงผลเริ่มต้น | ORDERBY() clause เพื่อระบุลำดับการคำนวณ ใช้เมื่อต้องการเรียงลำดับตามคอลัมน์อื่น |
| [blanks]ไม่บังคับ | enum | DEFAULT | การจัดการค่าว่าง DEFAULT = ตามลำดับปกติ, FIRST = ค่าว่างอยู่ด้านหน้า, LAST = ค่าว่างอยู่ด้านหลัง |
| [reset]ไม่บังคับ | expression | NONE | เมื่อไรการคำนวณจะรีเซ็ต NONE = ไม่รีเซ็ต, LOWESTPARENT = รีเซ็ตที่ระดับ parent ต่ำสุด, HIGHESTPARENT = รีเซ็ตที่ระดับ parent สูงสุด, หรือฟิลด์อ้างอิง |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
MOVINGAVERAGE เป็นฟังก์ชัน Visual Calculations ที่คำนวณค่าเฉลี่ยเคลื่อนที่ตามแกนที่ระบุ (row axis หรือ column axis) บนตารางข้อมูลของ visual มันนำค่า Expression มาหาค่าเฉลี่ยใน window ขนาดที่กำหนด (เช่น 7 จุด หรือ 7 วัน) ซึ่งช่วยให้แนวโน้มข้อมูลเรียบและชัดเจนขึ้น
ที่เจ๋งคือ MOVINGAVERAGE ทำงานตามลำดับของการแสดงผลในตัวกริด ไม่ใช่ตามเวลา หากคุณต้องการค่าเฉลี่ยเคลื่อนที่ของ 7 จุด มันจะเอาแถวปัจจุบันและแถวก่อนหน้า 6 แถว (หรือตามการตั้งค่า) มาหาค่าเฉลี่ย ท่านสามารถควบคุมขนาด window และว่าจะรวมแถวปัจจุบันหรือไม่
ส่วนตัวผมถือว่า MOVINGAVERAGE มีประโยชน์มากเมื่อต้องการทำ dashboard ที่มีกราฟแนวโน้มเรียบขึ้น เช่นกราฟยอดขายรายวันที่ผันผวนมาก หรือข้อมูล stock price ที่ปั่นไปปั่นมา มันช่วยให้เห็นแนวโน้มจริงได้ชัดขึ้น แต่ต้องใช้ใน Visual Calculations เท่านั้นนะครับ
ลดความผันผวนของข้อมูลรายวัน/รายช่วงเพื่อดูแนวโน้ม
ทำ moving average ขนาด 7 จุดบนแกนที่แสดงใน visual
ถ้าเรามียอดขายรายวัน: 100, 95, 110, 105, 120, 98, 102, 115, 110
จุดที่ 7 (ค่า 102) จะได้ค่าเฉลี่ยของจุดที่ 1-7 = (100+95+110+105+120+98+102)/7 = 105.7
ในตัวอย่างเดิม จุดที่ 7 จะได้ค่าเฉลี่ยของจุดที่ 1-6 = (100+95+110+105+120+98)/6 = 104.7 ใช้เมื่อต้องการดูแนวโน้มจากอดีตเท่านั้น
window เล็ก (3 จุด) จะเรียบน้อยกว่า window ใหญ่ (7 จุด) แต่ตอบสนองต่อการเปลี่ยนแปลงเร็วกว่า ใช้เมื่อต้องการจับสัญญาณเร็ว
ถ้า [Total Sales] = 120 และ MOVINGAVERAGE = 105 ผลลัพธ์ = 15 (แสดงว่าค่าปัจจุบันสูงกว่าแนวโน้ม 15) ใช้เพื่อดูความผิดปกติของข้อมูล
หากมีข้อมูลตามหมวดหมู่ (เช่น A, A, A, B, B, B) การนับค่าเฉลี่ยจะรีเซ็ตเมื่อเปลี่ยนจากหมวดหมู่ A เป็น B ช่วยหลีกเลี่ยงการคำนวณข้ามหมวดหมู่
MOVINGAVERAGE ใช้ window ขนาดคงที่ (เช่น 7 จุด) และคำนวณค่าเฉลี่ย ส่วน RUNNINGSUM ใช้ accumulative sum แบบ running (รวมตั้งแต่จุดแรกถึงจุดปัจจุบัน) MOVINGAVERAGE เหมาะสำหรับแนวโน้มแบบเนื้อ ส่วน RUNNINGSUM เหมาะสำหรับสะสมยอด
ไม่ได้ MOVINGAVERAGE ออกแบบมาสำหรับ Visual Calculations เท่านั้น ถ้าต้องการค่าเฉลี่ยเคลื่อนที่ใน measure ทั่วไป ต้องสร้างตารางเวลาเสริม แล้วใช้ AVERAGEX + DATEADD หรือการกรองช่วงเวลาด้วยตัวเอง
ขึ้นอยู่กับลักษณะข้อมูล window ใหญ่ (เช่น 30 วัน) จะเรียบแนวโน้มมากแต่ตอบสนองช้ากว่า window เล็ก (เช่น 3-7 วัน) window เล็กจะตอบสนองเร็วแต่ผันผวน ส่วนตัวผมแนะนำเริ่มจาก 7 แล้วปรับตามความต้องการ
MOVINGAVERAGE จะใช้เฉพาะแถวที่มีอยู่ (ไม่มี error) ถ้าชุดข้อมูลมีแค่ 3 แถว แต่ windowSize = 7 มันจะเฉลี่ยเพียง 3 แถวที่มี
MOVINGAVERAGE คำนวณตามลำดับของแถวในตารางข้อมูล orderBy เปลี่ยนลำดับแถวจึงทำให้ window และค่าเฉลี่ยเปลี่ยน ต้องตรวจสอบให้แน่ใจว่า orderBy ตรงกับตัวแปรที่ต้องการเรียงลำดับ
ไม่เกี่ยวข้องกัน includeCurrent ควบคุมว่าจะรวมแถวปัจจุบันหรือไม่ reset ควบคุมเมื่อไรการนับจะเริ่มใหม่ (เช่นเมื่อเปลี่ยนหมวดหมู่) สามารถใช้ร่วมกันได้
ฟังก์ชันที่ผู้เขียนโยงไว้กับ MOVINGAVERAGE จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
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 เพื่อกำหนดลำดับของแถวภายในกลุ่ม
WINDOW ดึงช่วงแถวภายในพาร์ทิชัน คืนค่าเป็นตาราง เหมาะกับการคำนวณแบบช่วง เช่น moving average, running sum, หรือ lead/lag analysis
AVERAGE คำนวณค่าเฉลี่ยเลขคณิตของตัวเลขทั้งหมดในคอลัมน์ โดยข้าม blank cells และข้อความ แต่นับค่า 0 เข้าในการคำนวณ ซึ่งทำให้ค่าเฉลี่ยอาจต่ำลงถ้ามีค่า 0 จำนวนมาก ทำงานภายใต้ filter context ปัจจุบันและทำ context transition ใน calculated column ทำให้สามารถอ้างอิงคอลัมน์จากตารางอื่นผ่าน relationship ได้
AVERAGEX เป็น Iterator Function ที่วนลูปตารางทีละแถว คำนวณ Expression แล้วนำผลลัพธ์มาหาค่าเฉลี่ย เหมาะสำหรับกรณีที่ต้องการเฉลี่ยค่าที่คำนวณได้ เช่น ราคา×จำนวน หรือค่าเฉลี่ยของ Measure ในแต่ละกลุ่ม
RUNNINGSUM คำนวณยอดสะสมของคอลัมน์/นิพจน์ตามลำดับบนแกนของ Visual Calculations โดยสามารถกำหนด Axis, OrderBy, Blanks และ Reset เพื่อควบคุมลำดับและจุดเริ่มสะสม
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่