คำนวณยอดสะสมตั้งแต่ต้นเดือน (Month-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด เป็นทางลัดของ CALCULATE + DATESMTD
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| Expression | scalar | นิพจน์/เมเชอร์ที่ต้องการคำนวณยอดสะสม เช่น [Sales Amount], SUM(Sales[Amount]), เป็นต้น | |
| Dates | column | คอลัมน์วันที่จากตารางวันที่ที่มีความต่อเนื่องและถูกกำหนดเป็น Date table (แนะนำ) เช่น Date[Date] | |
| [Filter]ไม่บังคับ | expression | ไม่ระบุ (รวมข้อมูลทั้งหมด) | เงื่อนไขเพิ่มเติมที่ต้องการนำมารวมในการคำนวณ เช่น Product[Category] = “Electronics” (ตัวอย่าง Boolean expression) |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
TOTALMTD คือฟังก์ชัน Time Intelligence ใน DAX ที่ใช้ “รวมค่า Expression ตั้งแต่วันแรกของเดือนจนถึงวันที่ล่าสุดในบริบทปัจจุบัน” นอกจากนี้ยังรองรับการใส่เงื่อนไขเพิ่มเติม (optional Criteria) ให้คล่องตัวมากขึ้น
ส่วนตัวผมคิดว่า TOTALMTD สะดวกดีสำหรับการทำรายงาน KPI รายเดือน เพราะไม่ต้องจำ DATESMTD และเขียน CALCULATE ด้วยตัวเอง ถ้าเข้าใจ “filter context” ที่มันสร้าง ก็จะนำมาใช้ได้จนเก่งเลยครับ 😎
สำหรับฟังก์ชันตระกูล TOTAL* ใน DAX มี TOTALYTD (year-to-date) และ TOTALQTD (quarter-to-date) เป็นเพื่อน ลักษณะการใช้เหมือนกัน แค่ช่วงเวลาต่างกัน
แสดงยอดสะสมตั้งแต่ต้นเดือนถึงวันที่เลือก/บริบทปัจจุบัน
ใช้กับเมเชอร์อื่น เช่น จำนวนคำสั่งซื้อ/กำไร เพื่อทำตัวชี้วัดสะสม
เมื่อวางใน pivot หรือ Matrix ไว้ที่แต่ละแถว DAX จะดูว่า "วันที่สำคัญคืออะไร" (filter context) แล้วหา MTD ของเดือนนั้น ถ้าขาดจำนวนวันก็จะน้อยลงไปตามธรรมชาติ
ใช้ Filter argument (parameter ตัวที่ 3) เพื่อจำกัดเฉพาะ Electronics ก่อนที่จะรวม โดยยังคงรวมตั้งแต่ต้นเดือน
สามารถใส่เมเชอร์ที่เป็น DAX expression ตรงไปตรงมา ไม่จำเป็นต้องเป็นแค่ SUM(column) เช่นได้เป็น AVG หรือ COUNT ก็ได้
TOTALMTD เป็น 'sugar syntax' หรือ 'shortcut' ของ CALCULATE + DATESMTD ทำให้โค้ดสั้นและอ่านง่ายกว่า ส่วนตัวผมแนะนำใช้ TOTALMTD ถ้าเป็นไปได้
ควรใช้กับคอลัมน์วันที่จากตารางวันที่ที่มีความต่อเนื่อง (ไม่มีช่องว่าง) และถูกกำหนดเป็น "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 จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
CLOSINGBALANCEMONTH ประเมิน Expression ณ วันสิ้นเดือนของบริบทวันที่ปัจจุบัน เหมาะกับการทำมาตรวัดยอดคงเหลือปลายเดือน และรองรับการใส่ตัวกรองเพิ่มเติม
DATESBETWEEN คืนตารางวันที่ที่อยู่ระหว่าง StartDate และ EndDate (รวมวันเริ่ม/วันจบ) เหมาะกับการใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อคำนวณตามช่วงวันที่ที่กำหนดเอง
DATESMTD คืนตารางวันที่ของช่วงตั้งแต่ต้นเดือนถึงวันที่ล่าสุดใน filter context เหมาะกับการทำยอดสะสมตั้งแต่ต้นเดือน (MTD) โดยใช้ร่วมกับ CALCULATE และควรใช้คู่กับ ShowValueForDates pattern เพื่อไม่ให้แสดงค่าในวันที่ยังไม่มีข้อมูล
ENDOFMONTH คืนตารางวันที่ของวันสิ้นเดือนตามปฏิทิน เหมาะกับ Semi-Additive Calculations เช่น ยอดคงเหลือ, Inventory, หรือ Closing Balance ที่ต้องการ snapshot ณ สิ้นเดือน ไม่ว่าจะมีข้อมูลจริงในวันนั้นหรือไม่
STARTOFMONTH คืนวันแรกของเดือนเป็นตาราง 1 แถว ใช้กับการวัดที่ขึ้นต่อจุดเวลา เช่น ยอดคงเหลือ บัญชี หรือสินค้าคงคลัง
TOTALQTD คำนวณยอดสะสมตั้งแต่วันแรกของไตรมาส (Q1/Q2/Q3/Q4) จนถึงวันที่ล่าสุดใน filter context ปัจจุบัน
.
ส่วนตัวผมใช้บ่อยมากตอน analyze quarterly performance และการวิเคราะห์ KPI รายไตรมาสครับ
คำนวณยอดสะสมตั้งแต่ต้นสัปดาห์ (Week-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด โดยรวมข้อมูลจากวันแรกของสัปดาห์จนถึงวันปัจจุบันในบริบท
TOTALYTD คำนวณยอดสะสมตั้งแต่ต้นปี (Year-to-Date) ของ expression ใดๆ โดยอิงจาก Date table และสามารถกำหนด fiscal year end date เพื่อรองรับปีงบประมาณที่ไม่ตรงกับปีปฏิทินได้
.
ส่วนตัวผมใช้บ่อยมากตอนต้องวิเคราะห์ยอดขาย KPI และรายงานทางการเงินที่ต้องการติดตามความก้าวหน้าตลอดทั้งปีครับ
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
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่