DATESQTD คืนตารางวันที่ของช่วงตั้งแต่ต้นไตรมาสถึงวันที่ล่าสุดในบริบทปัจจุบัน เหมาะสำหรับสร้างมาตรวัด QTD ใน CALCULATE โดยทำงานร่วมกับ Time Intelligence Functions ตัวอื่นๆ ได้ดี และควรใช้คู่กับ ShowValueForDates pattern เพื่อป้องกันการแสดงค่าในอนาคต
=DATESQTD(<Dates>)
=DATESQTD(<Dates>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Dates | column | Yes | คอลัมน์วันที่จากตารางวันที่ (Date Table) ที่ต่อเนื่องครบทุกวัน หรือ Calendar reference สำหรับ Fiscal Year |
สร้างมาตรวัดที่คำนวณยอดขายรวมตั้งแต่วันแรกของไตรมาสจนถึงวันปัจจุบัน
วิเคราะห์การเติบโตเทียบกับช่วงเวลาเดียวกันของปีก่อน
คำนวณเปอร์เซ็นต์การเติบโตของ QTD เทียบกับ QTD ปีก่อน
แสดง KPI เฉพาะช่วงที่มีข้อมูลจริง ไม่แสดงค่าในอนาคต
Sales QTD = CALCULATE( [Sales Amount], DATESQTD('Date'[Date]) )Sales QTD =
CALCULATE(
[Sales Amount],
DATESQTD('Date'[Date])
)
ถ้าวันที่ปัจจุบันคือ 15 November 2024 (Q4) จะคืนยอดขายสะสมตั้งแต่ 1 October 2024 ถึง 15 November 2024
-- สร้าง measure ช่วยเช็คว่าควรแสดงค่าหรือไม่ ShowValueForDates = VAR LastDateWithData = CALCULATE( MAX(Sales[OrderDate]), REMOVEFILTERS() ) VAR FirstDateVisibl…-- สร้าง 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
-- QTD ปีปัจจุบัน Sales QTD = CALCULATE( [Sales Amount], DATESQTD('Date'[Date]) ) -- QTD ปีก่อน (Same Period Last Year) Sales QTD SPLY = CALCULATE( [Sales QTD],…-- 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 จะเห็นทั้งสองค่าเพื่อเปรียบเทียบ
Sales QTD Growth % = VAR CurrentQTD = [Sales QTD] VAR LastYearQTD = [Sales QTD SPLY] VAR Result = DIVIDE( CurrentQTD - LastYearQTD, LastYearQTD, BLANK() ) RETUR…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%
Sales PQTD = CALCULATE( [Sales QTD], DATEADD('Date'[Date], -1, QUARTER) )Sales PQTD =
CALCULATE(
[Sales QTD],
DATEADD('Date'[Date], -1, QUARTER)
)
ถ้าดู 15 November 2024 (Q4) จะคืน QTD ของ Q3 ณ วันที่ 15 August 2024 (1 July - 15 August)
-- วิธีที่ 1: ใช้กับตารางวันที่ที่มี Fiscal Quarter column -- สมมติ Fiscal Year เริ่ม April (เดือน 4) -- เพิ่มคอลัมน์ใน Date Table FiscalQuarter = VAR FiscalMon…=-- วิธีที่ 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
DATESQTD คืน “ตารางของวันที่” เพื่อใช้เป็น filter ใน CALCULATE ส่วน TOTALQTD คืน “ค่าผลลัพธ์” โดยตรงเลย ถ้าแค่ต้องการยอดรวม QTD ใช้ TOTALQTD สะดวกกว่า แต่ถ้าต้องการ flexibility มากขึ้น (เช่น combine กับ filter อื่น) ใช้ DATESQTD ในCALCULATE จะดีกว่าครับ
เพราะ DATESQTD จะทำงานแม้เลือกดูวันที่ในอนาคตที่ยังไม่มีข้อมูล ทำให้รายงานแสดงค่าผิดพลาดได้ ShowValueForDates เช็คว่าวันที่ที่เลือกมีข้อมูลจริงหรือไม่ ถ้าไม่มีจะคืน BLANK แทน เป็น Best Practice จาก DAXPatterns.com ครับ 😎
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 ต้อง: 1) มีวันที่ต่อเนื่องครบทุกวันตั้งแต่ 1 January ถึง 31 December ของทุกปีที่ต้องการ 2) Mark เป็น Date Table ใน Power BI 3) มี unique date column ไม่ซ้ำกัน ถ้า Date Table ไม่สมบูรณ์ Time Intelligence functions ทั้งหมดจะทำงานผิดพลาดครับ
ใช้ SAMEPERIODLASTYEAR ห่อ measure QTD อีกทีครับ เช่น Sales QTD SPLY = CALCULATE([Sales QTD], SAMEPERIODLASTYEAR(‘Date'[Date])) แต่ถ้าปีปัจจุบันยังไม่ครบไตรมาส ต้องใช้ DateWithSales pattern เพิ่มเพื่อให้เปรียบเทียบเฉพาะช่วงที่มีข้อมูลจริงทั้งสองปี
ไม่แนะนำครับ DATESQTD ออกแบบมาสำหรับ Measures ที่ทำงานกับ filter context ถ้าใช้ใน Calculated Column จะไม่มี filter context ให้อ้างอิง และยังมีข้อจำกัดเรื่อง DirectQuery mode ด้วย
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 เลยครับ 😎