Thep Excel

DATESQTDชุดวันที่ตั้งแต่ต้นไตรมาสถึงปัจจุบัน (QTD)

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

fx
=DATESQTD(<Dates>)

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

อัปเดต 13 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
Dates column คอลัมน์วันที่จากตารางวันที่ (Date Table) ที่ต่อเนื่องครบทุกวัน หรือ Calendar reference สำหรับ Fiscal Year

Additional Notes

DATESQTD คืนค่าเป็น “ตารางของวันที่” ตั้งแต่วันแรกของไตรมาสจนถึงวันที่ล่าสุดในบริบทปัจจุบัน (Quarter-to-Date) ใช้เป็น filter argument ใน CALCULATE เพื่อให้มาตรวัดคำนวณเฉพาะช่วง QTD ได้

.

ที่เจ๋งคือ DATESQTD ทำงานอัตโนมัติตาม filter context ที่เลือกอยู่ในรายงาน เช่น ถ้าผู้ใช้เลือกดู November 2024 ฟังก์ชันจะคืนวันที่ตั้งแต่ 1 October 2024 ถึง 30 November 2024 (เพราะ Q4 เริ่มจาก October)

.

ส่วนตัวผมแนะนำให้ใช้ร่วมกับ ShowValueForDates pattern เสมอ เพื่อป้องกันไม่ให้แสดงค่าในช่วงอนาคตที่ยังไม่มีข้อมูลจริง ซึ่งเป็น Best Practice จาก DAXPatterns.com เลยครับ 😎

How it works

ยอดขายสะสมตั้งแต่ต้นไตรมาส (Sales QTD)

สร้างมาตรวัดที่คำนวณยอดขายรวมตั้งแต่วันแรกของไตรมาสจนถึงวันปัจจุบัน

เปรียบเทียบ QTD กับไตรมาสเดียวกันปีก่อน (SPLY QTD)

วิเคราะห์การเติบโตเทียบกับช่วงเวลาเดียวกันของปีก่อน

QTD Growth % (อัตราเติบโต QTD)

คำนวณเปอร์เซ็นต์การเติบโตของ QTD เทียบกับ QTD ปีก่อน

KPI ไตรมาสพร้อม ShowValueForDates

แสดง KPI เฉพาะช่วงที่มีข้อมูลจริง ไม่แสดงค่าในอนาคต

Examples

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

DATESQTD คืนชุดวันที่ของไตรมาสปัจจุบันจนถึงวันล่าสุดใน filter context แล้ว CALCULATE ใช้เป็นตัวกรองเวลา สมมติยอดขาย October = 50,000 และ November 1-15 = 30,000 ผลลัพธ์จะได้ 80,000

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

ผลลัพธ์ถ้าวันที่ปัจจุบันคือ 15 November 2024 (Q4) จะคืนยอดขายสะสมตั้งแต่ 1 October 2024 ถึง 15 November 2024
ตัวอย่างที่ 2: Sales QTD พร้อม ShowValueForDates Pattern— สร้าง measure ช่วยเช็คว่าควรแสดงค่าหรือไม่ ShowValueForDates = VAR LastDateWithData = CALCULATE( MAX(Sales[OrderDate]), REMOVEFILTERS() ) VAR FirstDateVisibl…

ShowValueForDates เป็น pattern จาก DAXPatterns.com ที่ช่วยป้องกันไม่ให้รายงานแสดงค่าในช่วงอนาคตที่ยังไม่มีข้อมูล ทำให้ Dashboard ดูเป็นมืออาชีพมากขึ้น 💡

fx
— สร้าง measure ช่วยเช็คว่าควรแสดงค่าหรือไม่
ShowValueForDates =
VAR LastDateWithData =
CALCULATE(
MAX(Sales[OrderDate]),
REMOVEFILTERS()
)
VAR FirstDateVisible =
MIN('Date'[Date])
RETURN
FirstDateVisible <= LastDateWithData

— Sales QTD ที่ปลอดภัย
Sales QTD =
IF(
[ShowValueForDates],
CALCULATE(
[Sales Amount],
DATESQTD('Date'[Date])
)
)

ผลลัพธ์แสดงค่า QTD เฉพาะช่วงที่มีข้อมูลจริง ถ้าเลือกดูเดือนในอนาคตจะคืน BLANK
ตัวอย่างที่ 3: QTD เปรียบเทียบกับไตรมาสเดียวกันปีก่อน (SPLY QTD)— QTD ปีปัจจุบัน Sales QTD = CALCULATE( [Sales Amount], DATESQTD('Date'[Date]) ) — QTD ปีก่อน (Same Period Last Year) Sales QTD SPLY = CALCULATE( [Sales QTD],…

ใช้ SAMEPERIODLASTYEAR ห่อ Sales QTD อีกทีเพื่อเลื่อน filter context ไปปีก่อน ทำให้เปรียบเทียบ QTD แบบ Apple-to-Apple ได้ (เดือนเดียวกัน วันเดียวกัน แต่คนละปี)

fx
— QTD ปีปัจจุบัน
Sales QTD =
CALCULATE(
[Sales Amount],
DATESQTD('Date'[Date])
)

— QTD ปีก่อน (Same Period Last Year)
Sales QTD SPLY =
CALCULATE(
[Sales QTD],
SAMEPERIODLASTYEAR('Date'[Date])
)

ผลลัพธ์ถ้า Q4 2024 QTD = 80,000 และ Q4 2023 QTD = 65,000 จะเห็นทั้งสองค่าเพื่อเปรียบเทียบ
ตัวอย่างที่ 4: QTD Growth % (อัตราเติบโต)Sales QTD Growth % = VAR CurrentQTD = [Sales QTD] VAR LastYearQTD = [Sales QTD SPLY] VAR Result = DIVIDE( CurrentQTD – LastYearQTD, LastYearQTD, BLANK() ) RETUR…

ใช้ VAR เพื่อเก็บค่า QTD ทั้งสองปี แล้วคำนวณ Growth % ด้วย DIVIDE ที่มี fallback เป็น BLANK เพื่อป้องกัน division by zero ส่วนตัวผมใช้สูตรนี้บ่อยมากในการทำ Executive Dashboard 😎

fx
Sales QTD Growth % =
VAR CurrentQTD = [Sales QTD]
VAR LastYearQTD = [Sales QTD SPLY]
VAR Result =
DIVIDE(
CurrentQTD – LastYearQTD,
LastYearQTD,
BLANK()
)
RETURN
Result

ผลลัพธ์ถ้า QTD ปีนี้ = 80,000 และ QTD ปีก่อน = 65,000 จะได้ (80,000 – 65,000) / 65,000 = 0.2308 หรือ 23.08%
ตัวอย่างที่ 5: Previous Quarter-to-Date (PQTD)Sales PQTD = CALCULATE( [Sales QTD], DATEADD('Date'[Date], -1, QUARTER) )

DATEADD เลื่อน filter context ย้อนกลับ 1 ไตรมาส ทำให้เปรียบเทียบ Q4 กับ Q3 ได้ในตำแหน่งวันเดียวกัน (day 45 ของไตรมาส เทียบกับ day 45 ของไตรมาสก่อน)

fx
Sales PQTD =
CALCULATE(
[Sales QTD],
DATEADD('Date'[Date], -1, QUARTER)
)

ผลลัพธ์ถ้าดู 15 November 2024 (Q4) จะคืน QTD ของ Q3 ณ วันที่ 15 August 2024 (1 July – 15 August)
ตัวอย่างที่ 6: QTD สำหรับ Fiscal Year (ปีงบประมาณ)— วิธีที่ 1: ใช้กับตารางวันที่ที่มี Fiscal Quarter column — สมมติ Fiscal Year เริ่ม April (เดือน 4) — เพิ่มคอลัมน์ใน Date Table FiscalQuarter = VAR FiscalMon…

DATESQTD ใช้ Calendar Quarter (Jan-Mar = Q1) โดย default ถ้าองค์กรใช้ Fiscal Year ต้องสร้าง Fiscal Quarter column เอง แล้วคำนวณ QTD ด้วย CALCULATE + FILTER แทน หรือใช้ Calendar object ใหม่ของ Power BI (preview 2025)

fx
=– วิธีที่ 1: ใช้กับตารางวันที่ที่มี Fiscal Quarter column
— สมมติ Fiscal Year เริ่ม April (เดือน 4)

— เพิ่มคอลัมน์ใน Date Table
FiscalQuarter =
VAR FiscalMonth = MOD(MONTH('Date'[Date]) + 8, 12) + 1
RETURN ROUNDUP(FiscalMonth / 3, 0)

— สร้าง Fiscal QTD ด้วย CALCULATE + FILTER
Sales Fiscal QTD =
VAR CurrentFiscalQtr = SELECTEDVALUE('Date'[FiscalQuarter])
VAR FiscalQtrStart =
CALCULATE(
MIN('Date'[Date]),
ALLEXCEPT('Date', 'Date'[FiscalQuarter])
)
RETURN
CALCULATE(
[Sales Amount],
'Date'[Date] >= FiscalQtrStart &&
'Date'[Date] <= MAX('Date'[Date])
)

ผลลัพธ์ถ้า Fiscal Year เริ่ม April และดู June 2024 (Fiscal Q1) จะคืนยอดสะสมตั้งแต่ 1 April 2024 ถึง 30 June 2024

FAQs

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

DATESQTD คืน "ตารางของวันที่" เพื่อใช้เป็น filter ใน CALCULATE ส่วน TOTALQTD คืน "ค่าผลลัพธ์" โดยตรงเลย ถ้าแค่ต้องการยอดรวม QTD ใช้ TOTALQTD สะดวกกว่า แต่ถ้าต้องการ flexibility มากขึ้น (เช่น combine กับ filter อื่น) ใช้ DATESQTD ในCALCULATE จะดีกว่าครับ

ทำไมต้องใช้ ShowValueForDates pattern ด้วย?+

เพราะ DATESQTD จะทำงานแม้เลือกดูวันที่ในอนาคตที่ยังไม่มีข้อมูล ทำให้รายงานแสดงค่าผิดพลาดได้ ShowValueForDates เช็คว่าวันที่ที่เลือกมีข้อมูลจริงหรือไม่ ถ้าไม่มีจะคืน BLANK แทน เป็น Best Practice จาก DAXPatterns.com ครับ 😎

DATESQTD ใช้กับ Fiscal Quarter ได้ไหม?+

DATESQTD ใช้ Calendar Quarter โดย default (Q1 = Jan-Mar) ถ้าองค์กรใช้ Fiscal Year ที่เริ่มเดือนอื่น มี 2 วิธี: 1) ใช้ Calendar object ใหม่ของ Power BI (preview 2025) หรือ 2) สร้าง Fiscal Quarter column ใน Date Table แล้วคำนวณ QTD เองด้วย CALCULATE + FILTER

ต้องมี Date Table แบบไหนถึงจะใช้ DATESQTD ได้?+

Date Table ต้อง: 1) มีวันที่ต่อเนื่องครบทุกวันตั้งแต่ 1 January ถึง 31 December ของทุกปีที่ต้องการ 2) Mark เป็น Date Table ใน Power BI 3) มี unique date column ไม่ซ้ำกัน ถ้า Date Table ไม่สมบูรณ์ Time Intelligence functions ทั้งหมดจะทำงานผิดพลาดครับ

จะเปรียบเทียบ QTD กับ QTD ปีก่อนแบบ fair comparison ได้อย่างไร?+

ใช้ SAMEPERIODLASTYEAR ห่อ measure QTD อีกทีครับ เช่น Sales QTD SPLY = CALCULATE([Sales QTD], SAMEPERIODLASTYEAR('Date'[Date])) แต่ถ้าปีปัจจุบันยังไม่ครบไตรมาส ต้องใช้ DateWithSales pattern เพิ่มเพื่อให้เปรียบเทียบเฉพาะช่วงที่มีข้อมูลจริงทั้งสองปี

DATESQTD ใช้ใน Calculated Column ได้ไหม?+

ไม่แนะนำครับ DATESQTD ออกแบบมาสำหรับ Measures ที่ทำงานกับ filter context ถ้าใช้ใน Calculated Column จะไม่มี filter context ให้อ้างอิง และยังมีข้อจำกัดเรื่อง DirectQuery mode ด้วย

Resources & Related

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

ฟังก์ชันนี้DATESQTDTime Intelligence
Time Intelligence (13)
CLOSINGBALANCEQUARTER

CLOSINGBALANCEQUARTER ประเมิน Expression ณ วันสิ้นไตรมาสของบริบทวันที่ปัจจุบัน เหมาะกับมาตรวัดยอดคงเหลือปลายไตรมาส และรองรับตัวกรองเพิ่มเติม

DATEADD

DATEADD คืนค่าตารางวันที่ ที่ถูกเลื่อนออกไปจากช่วงวันที่ใน Context ปัจจุบัน ตามจำนวน (NumberOfIntervals) และหน่วย (Interval) ที่กำหนด เช่น เลื่อนย้อนหลัง 1 เดือน หรือเลื่อนไปข้างหน้า 1 ปี

DATESBETWEEN

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

DATESMTD

DATESMTD คืนตารางวันที่ของช่วงตั้งแต่ต้นเดือนถึงวันที่ล่าสุดใน filter context เหมาะกับการทำยอดสะสมตั้งแต่ต้นเดือน (MTD) โดยใช้ร่วมกับ CALCULATE และควรใช้คู่กับ ShowValueForDates pattern เพื่อไม่ให้แสดงค่าในวันที่ยังไม่มีข้อมูล

DATESWTD

DATESWTD คืนตารางวันที่ตั้งแต่ต้นสัปดาห์จนถึงวันที่ในบริบทปัจจุบัน ใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อคำนวณยอดสะสมตั้งแต่ต้นสัปดาห์

DATESYTD

DATESYTD คืนตารางวันที่ของช่วงตั้งแต่ต้นปีถึงวันที่สุดท้ายที่มองเห็นใน Filter Context ใช้เป็นตัวกรองเวลาใน CALCULATE สำหรับการคำนวณยอดสะสมตั้งแต่ต้นปี รองรับทั้งปีปฏิทินและปีบัญชี (Fiscal Year) ด้วย YearEndDate argument

ENDOFQUARTER

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

NEXTQUARTER

NEXTQUARTER คืนตารางวันที่ของไตรมาสถัดไปจากบริบทวันที่ปัจจุบัน มักใช้เป็นตารางตัวกรองใน CALCULATE เพื่อคำนวณค่าแบบ “ไตรมาสถัดไป”

OPENINGBALANCEQUARTER

OPENINGBALANCEQUARTER ประเมิน Expression ณ วันที่เทียบเท่ากับวันสิ้นไตรมาสก่อนหน้า ภายใต้บริบทตัวกรองที่กำหนด ใช้เพื่อหา “ค่าเปิดงวดรายไตรมาส”

SAMEPERIODLASTYEAR

SAMEPERIODLASTYEAR คืน table ของวันที่ที่เลื่อนย้อนกลับไป 1 ปีจากช่วงวันที่ใน filter context ปัจจุบัน ใช้สำหรับการเปรียบเทียบ Year-over-Year (YoY) โดยต้องการ date table ที่ครบถ้วนต่อเนื่องและควร mark เป็น date table ในโมเดล
.
มักใช้ร่วมกับ CALCULATE เพื่อคำนวณค่าของปีก่อนหน้าในช่วงเดียวกัน ทำให้ได้ผลลัพธ์แบบ apples-to-apples comparison ที่แม่นยำโดยไม่ต้อง hard-code ช่วงวันที่ เหมาะสำหรับ measures และ calculated columns แต่ไม่รองรับ DirectQuery mode และไม่แนะนำสำหรับ visual calculations

STARTOFMONTH

STARTOFMONTH คืนวันแรกของเดือนเป็นตาราง 1 แถว ใช้กับการวัดที่ขึ้นต่อจุดเวลา เช่น ยอดคงเหลือ บัญชี หรือสินค้าคงคลัง

STARTOFQUARTER

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

TOTALQTD

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

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