PREVIOUSWEEK คืนตารางวันที่ของสัปดาห์ก่อนหน้า ตามบริบทวันที่ปัจจุบัน เหมาะสำหรับตัวชี้วัดแบบ Week-over-Week โดยนำตารางวันที่ไปใช้เป็นตัวกรองเวลา
=PREVIOUSWEEK(<dates>)
=PREVIOUSWEEK(<dates>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| dates | Column (Date) | Yes | คอลัมน์วันที่ (Date) จากตารางวันที่/ปฏิทิน ที่ต้องการเลื่อนย้อนหลังไปหนึ่งสัปดาห์ |
ทำตัวชี้วัดเทียบสัปดาห์ต่อสัปดาห์ เช่น ยอดขายสัปดาห์ก่อนหน้า
เทียบผลงานสัปดาห์ปัจจุบันกับสัปดาห์ก่อน
Sales สัปดาห์ก่อนหน้า = VAR CurrentWeekSales = SUM(Sales[Amount]) VAR PreviousWeekSales = CALCULATE( SUM(Sales[Amount]), PREVIOUSWEEK('Calendar'[Date]) ) RETURN…Sales สัปดาห์ก่อนหน้า =
VAR CurrentWeekSales = SUM(Sales[Amount])
VAR PreviousWeekSales =
CALCULATE(
SUM(Sales[Amount]),
PREVIOUSWEEK('Calendar'[Date])
)
RETURN
PreviousWeekSales
คืนยอดขายรวมของสัปดาห์ก่อนหน้า เทียบจากวันที่ที่เลือกในรายงาน
Sales WoW % Change = VAR CurrentWeekSales = SUM(Sales[Amount]) VAR PreviousWeekSales = CALCULATE( SUM(Sales[Amount]), PREVIOUSWEEK('Calendar'[Date]) ) RETURN DI…Sales WoW % Change =
VAR CurrentWeekSales = SUM(Sales[Amount])
VAR PreviousWeekSales =
CALCULATE(
SUM(Sales[Amount]),
PREVIOUSWEEK('Calendar'[Date])
)
RETURN
DIVIDE(CurrentWeekSales - PreviousWeekSales, PreviousWeekSales, 0)
คือเปอร์เซนต์การเปลี่ยนแปลง เช่น 0.15 = เพิ่มขึ้น 15% เทียบสัปดาห์ก่อนหน้า
Dates สัปดาห์ก่อนหน้า = PREVIOUSWEEK('Calendar'[Date])Dates สัปดาห์ก่อนหน้า = PREVIOUSWEEK('Calendar'[Date])
ได้ผลลัพธ์เป็นตารางวันที่ทั้งหมดของสัปดาห์ก่อนหน้า (7 แถว หรือตามลักษณะของปฏิทิน)
DATEADD(-7) เพียงแค่ลบ 7 วันตรงๆ ไม่สนใจว่าวันนั้นเป็นสัปดาห์ไหน แต่ PREVIOUSWEEK เข้าใจแนวคิด ‘สัปดาห์’ จากปฏิทิน – ถ้าปฏิทินของคุณใช้สัปดาห์เริ่มจากวันจันทร์ มันจะให้สัปดาห์ที่เริ่มจากจันทร์ของสัปดาห์ก่อน
ใช่ แนะนำให้มีตารางวันที่ที่ต่อเนื่อง (ทั้งปี จากวันที่ 1 มกราคม ถึง 31 ธันวาคม) และกำหนดเป็น Date Table ในโมเดล มิฉะนั้นอาจให้ผลลัพธ์ที่ผิด
อ้างอิงตามปฏิทินที่ตั้งไว้ในตารางวันที่ ถ้าคุณใช้ ISO Week (เริ่มจันทร์) มันจะให้สัปดาห์แบบ ISO Week ถ้าใช้ US Week (เริ่มอาทิตย์) มันจะให้สัปดาห์แบบ US
ใช้ได้ในทั้ง 3 แบบ แต่ไม่ควรใช้ใน Visual Calculations เพราะอาจให้ผลลัพธ์ที่ไม่มีความหมาย
PREVIOUSWEEK เป็นฟังก์ชัน Time Intelligence ของ DAX ที่ “เดินย้อนหลังหนึ่งสัปดาห์” จากวันที่ที่เลือกในบริบทปัจจุบัน คืนค่าเป็นตารางวันที่ครบถ้วนของสัปดาห์ก่อนหน้า แทนที่จะเป็นแค่วันเดียว
สิ่งที่เจ๋งคือ มันทำให้การเทียบ Week-over-Week (WoW) ง่ายขึ้นเยอะ เพราะไม่ต้องไปคำนวณช่วงวันด้วยตัวเอง – DAX ทำให้คุณเลยโดยอ้างอิงปฏิทินในโมเดล
ส่วนตัวผมคิดว่า เวลาคุณอยากเทียบตัวเลขสัปดาห์นี้กับสัปดาห์ที่แล้ว ฟังก์ชันนี้มันต่างจากการ DATEADD(-7) นะ – เพราะมันเข้าใจแนวคิด “สัปดาห์” ของปฏิทิน ไม่ใช่แค่ลบ 7 วันตรงๆ 😎