Thep Excel

TOTALQTDยอดสะสมตั้งแต่ต้นไตรมาส (Quarter-to-Date)

TOTALQTD คำนวณยอดสะสมตั้งแต่วันแรกของไตรมาส (Q1/Q2/Q3/Q4) จนถึงวันที่ล่าสุดใน filter context ปัจจุบัน
.
ส่วนตัวผมใช้บ่อยมากตอน analyze quarterly performance และการวิเคราะห์ KPI รายไตรมาสครับ

fx
=TOTALQTD(<Expression>, <Dates> [, <Filter>])

ความนิยม6/10
ความยาก4/10
ประโยชน์7/10

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
Expression expression Expression ที่ต้องการคำนวณยอดสะสม QTD เช่น SUM(Sales[Amount]) หรือ [Total Sales] สามารถเป็น measure reference หรือ aggregation expression ใดๆ ที่ return scalar value
Dates column Column ที่เก็บวันที่จาก Date table ที่มีวันที่ต่อเนื่องครบถ้วนตลอดทั้งปี เช่น ‘Date'[Date] หรือ DateTime[DateKey] ต้อง mark as date table ในโมเดลเพื่อให้ time intelligence function ทำงานถูกต้อง
[Filter]ไม่บังคับ expression ไม่มีการกรองเพิ่มเติม Boolean expression หรือ table expression ที่ใช้กรองข้อมูลเพิ่มเติมก่อนคำนวณ QTD เช่น Products[Category] = “Electronics” ทำงานภายใน CALCULATE context ตาม CALCULATE function rules

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

TOTALQTD เป็น DAX time intelligence function ที่ออกแบบมาเพื่อคำนวณยอดสะสมตั้งแต่วันแรกของไตรมาส (1 มกราคม, 1 เมษายน, 1 กรกฎาคม, 1 ตุลาคม) จนถึงวันที่ล่าสุดในบริบทปัจจุบัน

ที่เจ๋งคือ TOTALQTD จะอ่านวันที่จาก filter context โดยอัตโนมัติ เพื่อกำหนดว่าอยู่ไตรมาสไหน แล้วถึงวันแรกของไตรมาสนั้น ไม่ต้องคิดว่า Q1 เริ่มต้นเมื่อไหร่เอง DAX จะจัดการให้หมดแล้ว 😎

ส่วนตัวผมใช้ TOTALQTD บ่อยมากตอน build quarterly KPI dashboard หรือวิเคราะห์ quarterly performance trend ของฝ่ายขายครับ

How it works

ยอดขายสะสมรายไตรมาส

แสดงยอดสะสมตั้งแต่ต้นไตรมาสถึงวันที่ล่าสุดในบริบท

ทำ KPI แบบสะสมรายไตรมาส

ใช้กับเมเชอร์อื่น ๆ เพื่อทำตัวชี้วัดสะสมระดับไตรมาส

Examples

ตัวอย่างที่ 1: ยอดขาย QTD พื้นฐาน (Foundation)Sales QTD = TOTALQTD( SUM(Sales[Amount]), 'Date'[Date] )

ตัวอย่างพื้นฐานของการใช้ TOTALQTD โดยรวมยอดขายทั้งหมดตั้งแต่วันแรกของไตรมาสปัจจุบัน

สมมติว่าวันนี้เป็นวันที่ 15 เมษายน 2024 (Q2) measure นี้จะรวมยอดขายตั้งแต่ 1 เมษายน – 15 เมษายน 2024 ส่วนตัวผมใช้แบบนี้ใน KPI card และ quarterly revenue tracking sheet บ่อยมากครับ 😎

fx
Sales QTD =
TOTALQTD(
SUM(Sales[Amount]),
'Date'[Date]
)

ผลลัพธ์ยอดขายสะสมตั้งแต่วันแรกของไตรมาสจนถึงวันที่ล่าสุดใน filter context
ตัวอย่างที่ 2: QTD เฉพาะหมวดสินค้า (Practical – With Filter)Electronics Sales QTD = TOTALQTD( SUM(Sales[Amount]), 'Date'[Date], Products[Category] = "Electronics" )

ใช้ Filter argument เพื่อคำนวณ QTD เฉพาะหมวดสินค้า Electronics โดยกรองข้อมูลก่อนคำนวณยอดสะสม

สมมติว่าใน Q1 2024 มียอดขาย Electronics เดือนละ (ม.ค. 5,000 / ก.พ. 7,000 / มี.ค. 8,000) แล้ว ณ วันที่ 31 มี.ค. measure นี้จะ return 20,000 เป็นยอด QTD Electronics ครับ

fx
Electronics Sales QTD =
TOTALQTD(
SUM(Sales[Amount]),
'Date'[Date],
Products[Category] = "Electronics"
)

ผลลัพธ์ยอดขายสะสม QTD เฉพาะหมวด Electronics
ตัวอย่างที่ 3: QTD พร้อม Multiple Filters (Advanced – Complex Filtering)Online Electronics QTD = TOTALQTD( SUM(Sales[Amount]), 'Date'[Date], Products[Category] = "Electronics", Sales[Channel] = "Online" )

DAX มี syntax ที่สมาร์ท คุณสามารถใส่ multiple filter arguments โดยเรียงลำดับกันไปได้ โดยจะ AND ทั้งหมด (เปรียบเทียบกับ CALCULATE ที่ใช้เครื่องหมายจุลภาค)

นี่เป็นวิธีที่ efficient เพราะไม่ต้อง nest CALCULATE หรือใช้ && เพื่อ combine conditions ครับ 💡

fx
Online Electronics QTD =
TOTALQTD(
SUM(Sales[Amount]),
'Date'[Date],
Products[Category] = "Electronics",
Sales[Channel] = "Online"
)

ผลลัพธ์ยอดขายสะสม QTD เฉพาะ Electronics และ Online channel
ตัวอย่างที่ 4: QTD เทียบเคียงกับ DATESQTD (Conceptual – Understanding)Sales QTD (Alternative) = CALCULATE( SUM(Sales[Amount]), DATESQTD('Date'[Date]) )

TOTALQTD เป็น wrapper function ที่ทำให้เขียนโค้ด DAX ง่ายขึ้น โดยทำงานเทียบเท่ากับ CALCULATE ร่วมกับ DATESQTD

DATESQTD คืนตารางวันที่ของช่วง QTD (เช่น 1 เมษายน – 15 เมษายน) แล้ว CALCULATE ใช้ตารางนั้นเป็น filter ส่วน TOTALQTD รวมสองอย่างในคำสั่งเดียว ทำให้อ่านง่ายกว่า ส่วนตัวผมชอบใช้ TOTALQTD มากกว่าครับ เพราะสั้นและชัดเจน 😎

fx
=Sales QTD (Alternative) =
CALCULATE(
SUM(Sales[Amount]),
DATESQTD('Date'[Date])
)

ผลลัพธ์ได้แนวคิดเดียวกับ TOTALQTD
ตัวอย่างที่ 5: QTD ร่วมกับ VAR – การเปรียบเทียบกับปีที่แล้ว (Real-World Complex)QTD Growth % = VAR CurrentQTD = TOTALQTD(SUM(Sales[Amount]), 'Date'[Date]) VAR PreviousQTD = CALCULATE( TOTALQTD(SUM(Sales[Amount]), 'Date'[Date]), SAMEPERIODLA…

ตัวอย่าง real-world ที่ใช้ VAR…RETURN pattern เพื่อสร้าง measure ที่ซับซ้อน โดยคำนวณ CurrentQTD ด้วย TOTALQTD จากนั้นคำนวณ PreviousQTD โดยใช้ CALCULATE ร่วมกับ SAMEPERIODLASTYEAR เพื่อเลื่อน context ไปปีก่อนหน้า

สมมติ CurrentQTD = 150,000 และ PreviousQTD = 120,000 ผลลัพธ์ = (150,000 – 120,000) / 120,000 = 0.25 หรือ 25% growth ส่วนตัวผมใช้ pattern นี้บ่อยมากตอน quarterly analysis dashboard ครับ 💡

fx
QTD Growth % =
VAR CurrentQTD =
TOTALQTD(SUM(Sales[Amount]), 'Date'[Date])
VAR PreviousQTD =
CALCULATE(
TOTALQTD(SUM(Sales[Amount]), 'Date'[Date]),
SAMEPERIODLASTYEAR('Date'[Date])
)
VAR Growth = CurrentQTD – PreviousQTD
RETURN
DIVIDE(Growth, PreviousQTD, 0)

ผลลัพธ์อัตราการเติบโตของยอดสะสม QTD เทียบกับปีก่อนหน้า (เปอร์เซ็นต์)

FAQs

TOTALQTD ต่างจาก DATESQTD อย่างไร?+

DATESQTD เป็น table function ที่ return ตารางของวันที่ในช่วง quarter-to-date (เช่น 1 เมษายน – 15 เมษายน) ซึ่งต้องใช้ร่วมกับ CALCULATE เพื่อคำนวณค่า expression

ส่วน TOTALQTD เป็น wrapper function ที่รวมทั้งสองอย่างเข้าด้วยกัน คือ return ค่าผลลัพธ์ของ expression ที่คำนวณแล้วโดยตรง ส่วนตัวผมชอบใช้ TOTALQTD มากกว่าครับ เพราะอ่านง่ายและเขียนสั้นกว่า 😎

TOTALQTD กับ TOTALMTD ต่างกันอย่างไร?+

TOTALQTD คำนวณยอดสะสมตั้งแต่วันแรกของ Quarter (ไตรมาส) ในขณะที่ TOTALMTD คำนวณยอดสะสมตั้งแต่วันแรกของ Month (เดือน)

ถ้าวันนี้เป็น 15 เมษายน 2024 TOTALQTD จะรวมตั้งแต่ 1 เมษายน ส่วน TOTALMTD จะรวมตั้งแต่ 1 เมษายน (วันแรกของเดือนเดียวกัน) ซึ่งผลลัพธ์อาจเหมือนกันในช่วง 1-2 สัปดาห์แรกของไตรมาส ครับ 💡

ถ้า Date table ไม่มีวันที่บางวัน TOTALQTD จะทำงานถูกต้องไหม?+

Date table ต้องมีวันที่ต่อเนื่องครบถ้วนตลอดทั้งปี (ไม่มีวันที่ขาดหาย) เพื่อให้ time intelligence function เช่น TOTALQTD ทำงานได้ถูกต้อง

หากวันที่ขาดหายหรือไม่ต่อเนื่อง ผลลัพธ์อาจคำนวณผิดพลาดหรือระบบไม่สามารถหาวันแรกของไตรมาสได้ถูกต้อง ควร mark as date table ในโมเดลเพื่อให้ DAX engine ตรวจสอบ continuity ได้ครับ 💡

TOTALQTD ใช้กับ calculated column ได้หรือไม่?+

สามารถใช้ได้ แต่ไม่แนะนำเพราะ calculated column คำนวณที่ row context และจะคำนวณ QTD สำหรับทุกแถว ซึ่งอาจไม่ได้ผลลัพธ์ตามที่ต้องการและใช้ memory มาก

แนะนำให้ใช้ TOTALQTD ใน measure เท่านั้น เพื่อให้คำนวณ dynamic ตาม filter context และประหยัด memory ครับ 😎

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ TOTALQTD จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้TOTALQTDTime Intelligence
Time Intelligence (7)
DATESBETWEEN

DATESBETWEEN คืนตารางวันที่ที่อยู่ระหว่าง StartDate และ EndDate (รวมวันเริ่ม/วันจบ) เหมาะกับการใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อคำนวณตามช่วงวันที่ที่กำหนดเอง

DATESQTD

DATESQTD คืนตารางวันที่ของช่วงตั้งแต่ต้นไตรมาสถึงวันที่ล่าสุดในบริบทปัจจุบัน เหมาะสำหรับสร้างมาตรวัด QTD ใน CALCULATE โดยทำงานร่วมกับ Time Intelligence Functions ตัวอื่นๆ ได้ดี และควรใช้คู่กับ ShowValueForDates pattern เพื่อป้องกันการแสดงค่าในอนาคต

ENDOFQUARTER

ENDOFQUARTER คืนตารางวันที่ของวันสิ้นไตรมาสตามบริบทวันที่ปัจจุบัน เหมาะกับการใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อประเมินมาตรวัด ณ วันสิ้นไตรมาส

STARTOFQUARTER

STARTOFQUARTER คืนตารางวันที่ที่มีวันแรกของไตรมาสในบริบทตัวกรองปัจจุบัน (single-row table) ใช้เป็นตารางตัวกรองใน CALCULATE หรือใช้ MINX เพื่อแปลงเป็น scalar date

TOTALMTD

คำนวณยอดสะสมตั้งแต่ต้นเดือน (Month-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด เป็นทางลัดของ CALCULATE + DATESMTD

TOTALWTD

คำนวณยอดสะสมตั้งแต่ต้นสัปดาห์ (Week-to-Date) ของ Expression ตามคอลัมน์วันที่ที่กำหนด โดยรวมข้อมูลจากวันแรกของสัปดาห์จนถึงวันปัจจุบันในบริบท

TOTALYTD

TOTALYTD คำนวณยอดสะสมตั้งแต่ต้นปี (Year-to-Date) ของ expression ใดๆ โดยอิงจาก Date table และสามารถกำหนด fiscal year end date เพื่อรองรับปีงบประมาณที่ไม่ตรงกับปีปฏิทินได้
.
ส่วนตัวผมใช้บ่อยมากตอนต้องวิเคราะห์ยอดขาย KPI และรายงานทางการเงินที่ต้องการติดตามความก้าวหน้าตลอดทั้งปีครับ

Filter (1)
CALCULATE

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

อีเมลของคุณจะไม่ถูกเผยแพร่