MOVINGAVERAGE คำนวณค่าเฉลี่ยเคลื่อนที่ (moving average) บนแกนของ Visual Calculations ในตารางข้อมูล เหมาะสำหรับทำเส้นแนวโน้มที่เรียบขึ้นและลดความผันผวนของข้อมูล
=MOVINGAVERAGE(<column>, <windowSize>[, <includeCurrent>][, <axis>][, <orderBy>][, <blanks>][, <reset>])
=MOVINGAVERAGE(<column>, <windowSize>[, <includeCurrent>][, <axis>][, <orderBy>][, <blanks>][, <reset>])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| column | column | Yes | คอลัมน์ที่มีค่าที่ต้องการนำไปคำนวณค่าเฉลี่ยเคลื่อนที่ (เช่น Sales[Amount]) | |
| windowSize | integer | Yes | ขนาดของหน้าต่าง (window) ที่ใช้คำนวณค่าเฉลี่ยเคลื่อนที่ ต้องเป็นค่าคงที่ (เช่น 7 = เฉลี่ย 7 จุด/7 แถว/7 วัน) | |
| includeCurrent | boolean | Optional | TRUE | ระบุว่าจะรวมแถวปัจจุบันในการคำนวณหรือไม่ TRUE = รวม (ค่าเริ่มต้น), FALSE = ไม่รวม (เฉลี่ยจากแถวก่อนหน้า) |
| axis | axis | Optional | แกนเริ่มต้นของ visual | แกนการคำนวณ (Rows = ตามแถว, Columns = ตามคอลัมน์) ถ้าไม่ระบุ ใช้แกนเริ่มต้นของ visual |
| orderBy | expression | Optional | ลำดับแสดงผลเริ่มต้น | ORDERBY() clause เพื่อระบุลำดับการคำนวณ ใช้เมื่อต้องการเรียงลำดับตามคอลัมน์อื่น |
| blanks | enum | Optional | DEFAULT | การจัดการค่าว่าง DEFAULT = ตามลำดับปกติ, FIRST = ค่าว่างอยู่ด้านหน้า, LAST = ค่าว่างอยู่ด้านหลัง |
| reset | expression | Optional | NONE | เมื่อไรการคำนวณจะรีเซ็ต NONE = ไม่รีเซ็ต, LOWESTPARENT = รีเซ็ตที่ระดับ parent ต่ำสุด, HIGHESTPARENT = รีเซ็ตที่ระดับ parent สูงสุด, หรือฟิลด์อ้างอิง |
ลดความผันผวนของข้อมูลรายวัน/รายช่วงเพื่อดูแนวโน้ม
ทำ moving average ขนาด 7 จุดบนแกนที่แสดงใน visual
Moving Avg Sales 7 = MOVINGAVERAGE([Total Sales], 7)Moving Avg Sales 7 = MOVINGAVERAGE([Total Sales], 7)
ได้ค่าเฉลี่ยเคลื่อนที่ของ [Total Sales] ตามแกนแถวของ visual ขนาด 7 จุด (รวมจุดปัจจุบัน)
Moving Avg Prev 7 = MOVINGAVERAGE([Total Sales], 7, FALSE)Moving Avg Prev 7 = MOVINGAVERAGE([Total Sales], 7, FALSE)
ค่าเฉลี่ยของ 7 แถวก่อนหน้า ไม่รวมแถวปัจจุบัน
Moving Avg Sales 3 = MOVINGAVERAGE([Total Sales], 3)Moving Avg Sales 3 = MOVINGAVERAGE([Total Sales], 3)
ค่าเฉลี่ยเคลื่อนที่ของ 3 จุด ตอบสนองต่อการเปลี่ยนแปลงเร็วกว่า window ใหญ่
Deviation from Trend = [Total Sales] - MOVINGAVERAGE([Total Sales], 7)Deviation from Trend = [Total Sales] - MOVINGAVERAGE([Total Sales], 7)
ค่าส่วนต่างระหว่างค่าปัจจุบันกับแนวโน้ง (positive = สูงกว่าแนวโน้ม, negative = ต่ำกว่าแนวโน้ม)
Moving Avg by Category = MOVINGAVERAGE([Total Sales], 7, TRUE, ROWS, , DEFAULT, LOWESTPARENT)Moving Avg by Category = MOVINGAVERAGE([Total Sales], 7, TRUE, ROWS, , DEFAULT, LOWESTPARENT)
ค่าเฉลี่ยเคลื่อนที่ 7 จุด ในแต่ละหมวดหมู่ (รีเซ็ตเมื่อเปลี่ยนหมวดหมู่)
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 เป็นฟังก์ชัน Visual Calculations ที่คำนวณค่าเฉลี่ยเคลื่อนที่ตามแกนที่ระบุ (row axis หรือ column axis) บนตารางข้อมูลของ visual มันนำค่า Expression มาหาค่าเฉลี่ยใน window ขนาดที่กำหนด (เช่น 7 จุด หรือ 7 วัน) ซึ่งช่วยให้แนวโน้มข้อมูลเรียบและชัดเจนขึ้น
ที่เจ๋งคือ MOVINGAVERAGE ทำงานตามลำดับของการแสดงผลในตัวกริด ไม่ใช่ตามเวลา หากคุณต้องการค่าเฉลี่ยเคลื่อนที่ของ 7 จุด มันจะเอาแถวปัจจุบันและแถวก่อนหน้า 6 แถว (หรือตามการตั้งค่า) มาหาค่าเฉลี่ย ท่านสามารถควบคุมขนาด window และว่าจะรวมแถวปัจจุบันหรือไม่
ส่วนตัวผมถือว่า MOVINGAVERAGE มีประโยชน์มากเมื่อต้องการทำ dashboard ที่มีกราฟแนวโน้มเรียบขึ้น เช่นกราฟยอดขายรายวันที่ผันผวนมาก หรือข้อมูล stock price ที่ปั่นไปปั่นมา มันช่วยให้เห็นแนวโน้มจริงได้ชัดขึ้น แต่ต้องใช้ใน Visual Calculations เท่านั้นนะครับ