ตัวอย่างที่ 1: ยอดขายย้อนหลัง 3 เดือน (Rolling 3 Months)
Rolling 3M Sales =
CALCULATE(
[Total Sales],
DATESINPERIOD( 'Date'[Date], MAX('Date'[Date]), -3, MONTH )
)
ผลรวมยอดขายของเดือนปัจจุบัน + 2 เดือนก่อนหน้า
คืนค่าช่วงวันที่แบบเคลื่อนที่ (ใช้ทำ Moving Average)
DATESINPERIOD คืนค่าตารางวันที่ในช่วงเวลาที่กำหนด โดยเริ่มจาก StartDate และขยายไปตาม NumberOfIntervals (ไปข้างหน้าหรือย้อนหลัง) นิยมใช้ทำ Moving Average หรือ Rolling Sum
=DATESINPERIOD(Dates, StartDate, NumberOfIntervals, Interval)
=DATESINPERIOD(Dates, StartDate, NumberOfIntervals, Interval)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Dates | column | Yes | คอลัมน์วันที่จาก Date Table | |
| StartDate | date/datetime | Yes | วันที่เริ่มต้น (มักใช้ MAX(‘Date'[Date]) หรือ LASTDATE(…) เพื่อเริ่มจากวันล่าสุดที่เลือก) | |
| NumberOfIntervals | integer | Yes | จำนวนหน่วยที่ต้องการขยาย (ติดลบ = ย้อนหลัง) | |
| Interval | enum | Yes | หน่วยเวลา: DAY, MONTH, QUARTER, YEAR |
หาค่าเฉลี่ยยอดขายย้อนหลัง 3 เดือน เพื่อดูแนวโน้ม (Trend) ที่ลดความผันผวนระยะสั้นลง
ยอดขายรวมย้อนหลัง 12 เดือน (Annual Run Rate)
Rolling 3M Sales =
CALCULATE(
[Total Sales],
DATESINPERIOD( 'Date'[Date], MAX('Date'[Date]), -3, MONTH )
)
ผลรวมยอดขายของเดือนปัจจุบัน + 2 เดือนก่อนหน้า
MovAvg 30D =
CALCULATE(
AVERAGEX( VALUES('Date'[Date]), [Daily Sales] ),
DATESINPERIOD( 'Date'[Date], MAX('Date'[Date]), -30, DAY )
)
ค่าเฉลี่ยยอดขายต่อวัน ในช่วง 30 วันล่าสุด
=Last Year Sales (from Today) =
CALCULATE(
[Total Sales],
DATESINPERIOD( 'Date'[Date], TODAY(), -1, YEAR )
)
ยอดขาย 365 วันที่แล้ว
DATESINPERIOD กำหนดด้วย “จุดเริ่ม + ระยะเวลา” (เช่น เริ่มวันนี้ ถอยไป 3 เดือน) ส่วน DATESBETWEEN กำหนดด้วย “จุดเริ่ม + จุดจบ” (เช่น 1 ม.ค. ถึง 31 มี.ค.)
DATESINPERIOD เป็นฟังก์ชันยอดนิยมสำหรับการคำนวณแบบ Moving Average (ค่าเฉลี่ยเคลื่อนที่) หรือ Rolling Total โดยมันจะคืนค่าตารางวันที่ในช่วงที่กำหนด เริ่มต้นจากวัน StartDate และขยับไปข้างหน้าหรือย้อนหลังเป็นจำนวน N หน่วย
เช่น “ย้อนหลัง 3 เดือนจากวันนี้” หรือ “14 วันข้างหน้าจากวันนี้”