คำนวณยอดสะสมตั้งแต่ต้นเดือน (Month-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด เป็นทางลัดของ CALCULATE + DATESMTD
=TOTALMTD(<Expression>, <Dates> [, <Filter>])
=TOTALMTD(<Expression>, <Dates> [, <Filter>])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Expression | scalar | Yes | นิพจน์/เมเชอร์ที่ต้องการคำนวณยอดสะสม เช่น [Sales Amount], SUM(Sales[Amount]), เป็นต้น | |
| Dates | column | Yes | คอลัมน์วันที่จากตารางวันที่ที่มีความต่อเนื่องและถูกกำหนดเป็น Date table (แนะนำ) เช่น Date[Date] | |
| Filter | expression | Optional | ไม่ระบุ (รวมข้อมูลทั้งหมด) | เงื่อนไขเพิ่มเติมที่ต้องการนำมารวมในการคำนวณ เช่น Product[Category] = “Electronics” (ตัวอย่าง Boolean expression) |
แสดงยอดสะสมตั้งแต่ต้นเดือนถึงวันที่เลือก/บริบทปัจจุบัน
ใช้กับเมเชอร์อื่น เช่น จำนวนคำสั่งซื้อ/กำไร เพื่อทำตัวชี้วัดสะสม
Sales MTD = TOTALMTD( [Sales Amount], 'Date'[Date] )Sales MTD =
TOTALMTD(
[Sales Amount],
'Date'[Date]
)
ถ้าวันนี้คือ 15 ตุลาคม 2024 → จะรวมยอดขายตั้งแต่ 1 ตุลาคม ถึง 15 ตุลาคม
Electronics Sales MTD = TOTALMTD( [Sales Amount], 'Date'[Date], Product[Category] = "Electronics" )Electronics Sales MTD =
TOTALMTD(
[Sales Amount],
'Date'[Date],
Product[Category] = "Electronics"
)
เฉพาะยอดขายของสินค้าไฟฟ้า ตั้งแต่วันแรกเดือน
Profit Margin MTD = TOTALMTD( [Profit Margin %], 'Date'[Date] ) -- ที่ไหน [Profit Margin %] = DIVIDE([Profit], [Sales Amount])Profit Margin MTD =
TOTALMTD(
[Profit Margin %],
'Date'[Date]
)
-- ที่ไหน [Profit Margin %] = DIVIDE([Profit], [Sales Amount])
เปอร์เซ็นต์กำไรสะสมตั้งแต่ต้นเดือน (AVERAGE ในความเป็นจริง)
-- วิธีที่ 1: ใช้ TOTALMTD (สั้น) Sales MTD v1 = TOTALMTD([Sales Amount], 'Date'[Date]) -- วิธีที่ 2: ใช้ CALCULATE + DATESMTD (ซับซ้อนกว่า) Sales MTD v2 = CALC…=-- วิธีที่ 1: ใช้ TOTALMTD (สั้น)
Sales MTD v1 = TOTALMTD([Sales Amount], 'Date'[Date])
-- วิธีที่ 2: ใช้ CALCULATE + DATESMTD (ซับซ้อนกว่า)
Sales MTD v2 = CALCULATE([Sales Amount], DATESMTD('Date'[Date]))
ทั้ง v1 และ v2 ให้ผลลัพธ์เดียวกัน
ควรใช้กับคอลัมน์วันที่จากตารางวันที่ที่มีความต่อเนื่อง (ไม่มีช่องว่าง) และถูกกำหนดเป็น “Date table” ใน Power BI/Excel Model เพื่อให้ DAX Time Intelligence ทำงานถูกต้อง
DATESMTD คืน ‘ตารางวันที่’ (table) ส่วน TOTALMTD คืน ‘ผลลัพธ์ของ Expression’ (scalar value) นอกจากนี้ DATESMTD ต้องใส่ใน CALCULATE เอง ขณะที่ TOTALMTD ทำให้เราออกจากความยุ่งวุ่นวาย
ไม่จำเป็น! ส่วนมากใช้ Boolean expression เช่น Product[Category] = “Electronics” ได้เลย ถ้าต้องกรองเงื่อนไขที่ซับซ้อน (virtual column หรือ expression) เท่านั้นค่อยใช้ FILTER()
ตรวจสอบ 3 สิ่ง: (1) ตารางวันที่มีความต่อเนื่องไหม (ไม่มีช่องว่าง), (2) มีความสัมพันธ์กับตาราง Fact ถูกต้อง, (3) ตารางวันที่ถูกกำหนดเป็น Date table ในโมเดล
ใช้ได้ในทั้ง measure และ calculated column ปกติใช้มากใน measure เพราะ context ชัดเจน ถ้าใช้ใน calculated column ต้องระวัง row context ที่มันสร้าง
TOTALMTD คือฟังก์ชัน Time Intelligence ใน DAX ที่ใช้ “รวมค่า Expression ตั้งแต่วันแรกของเดือนจนถึงวันที่ล่าสุดในบริบทปัจจุบัน” นอกจากนี้ยังรองรับการใส่เงื่อนไขเพิ่มเติม (optional Criteria) ให้คล่องตัวมากขึ้น
ส่วนตัวผมคิดว่า TOTALMTD สะดวกดีสำหรับการทำรายงาน KPI รายเดือน เพราะไม่ต้องจำ DATESMTD และเขียน CALCULATE ด้วยตัวเอง ถ้าเข้าใจ “filter context” ที่มันสร้าง ก็จะนำมาใช้ได้จนเก่งเลยครับ 😎
สำหรับฟังก์ชันตระกูล TOTAL* ใน DAX มี TOTALYTD (year-to-date) และ TOTALQTD (quarter-to-date) เป็นเพื่อน ลักษณะการใช้เหมือนกัน แค่ช่วงเวลาต่างกัน