DATESQTD คืนตารางวันที่ของช่วงตั้งแต่ต้นไตรมาสถึงวันที่ล่าสุดในบริบทปัจจุบัน เหมาะสำหรับสร้างมาตรวัด QTD ใน CALCULATE โดยทำงานร่วมกับ Time Intelligence Functions ตัวอื่นๆ ได้ดี และควรใช้คู่กับ ShowValueForDates pattern เพื่อป้องกันการแสดงค่าในอนาคต
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| Dates | column | คอลัมน์วันที่จากตารางวันที่ (Date Table) ที่ต่อเนื่องครบทุกวัน หรือ Calendar reference สำหรับ Fiscal Year |
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 เลยครับ 😎
สร้างมาตรวัดที่คำนวณยอดขายรวมตั้งแต่วันแรกของไตรมาสจนถึงวันปัจจุบัน
วิเคราะห์การเติบโตเทียบกับช่วงเวลาเดียวกันของปีก่อน
คำนวณเปอร์เซ็นต์การเติบโตของ QTD เทียบกับ QTD ปีก่อน
แสดง KPI เฉพาะช่วงที่มีข้อมูลจริง ไม่แสดงค่าในอนาคต
DATESQTD คืนชุดวันที่ของไตรมาสปัจจุบันจนถึงวันล่าสุดใน filter context แล้ว CALCULATE ใช้เป็นตัวกรองเวลา สมมติยอดขาย October = 50,000 และ November 1-15 = 30,000 ผลลัพธ์จะได้ 80,000
ShowValueForDates เป็น pattern จาก DAXPatterns.com ที่ช่วยป้องกันไม่ให้รายงานแสดงค่าในช่วงอนาคตที่ยังไม่มีข้อมูล ทำให้ Dashboard ดูเป็นมืออาชีพมากขึ้น 💡
ใช้ SAMEPERIODLASTYEAR ห่อ Sales QTD อีกทีเพื่อเลื่อน filter context ไปปีก่อน ทำให้เปรียบเทียบ QTD แบบ Apple-to-Apple ได้ (เดือนเดียวกัน วันเดียวกัน แต่คนละปี)
ใช้ VAR เพื่อเก็บค่า QTD ทั้งสองปี แล้วคำนวณ Growth % ด้วย DIVIDE ที่มี fallback เป็น BLANK เพื่อป้องกัน division by zero ส่วนตัวผมใช้สูตรนี้บ่อยมากในการทำ Executive Dashboard 😎
DATEADD เลื่อน filter context ย้อนกลับ 1 ไตรมาส ทำให้เปรียบเทียบ Q4 กับ Q3 ได้ในตำแหน่งวันเดียวกัน (day 45 ของไตรมาส เทียบกับ day 45 ของไตรมาสก่อน)
DATESQTD ใช้ Calendar Quarter (Jan-Mar = Q1) โดย default ถ้าองค์กรใช้ Fiscal Year ต้องสร้าง Fiscal Quarter column เอง แล้วคำนวณ QTD ด้วย CALCULATE + FILTER แทน หรือใช้ Calendar object ใหม่ของ Power BI (preview 2025)
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 จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
CLOSINGBALANCEQUARTER ประเมิน Expression ณ วันสิ้นไตรมาสของบริบทวันที่ปัจจุบัน เหมาะกับมาตรวัดยอดคงเหลือปลายไตรมาส และรองรับตัวกรองเพิ่มเติม
DATEADD คืนค่าตารางวันที่ ที่ถูกเลื่อนออกไปจากช่วงวันที่ใน Context ปัจจุบัน ตามจำนวน (NumberOfIntervals) และหน่วย (Interval) ที่กำหนด เช่น เลื่อนย้อนหลัง 1 เดือน หรือเลื่อนไปข้างหน้า 1 ปี
DATESBETWEEN คืนตารางวันที่ที่อยู่ระหว่าง StartDate และ EndDate (รวมวันเริ่ม/วันจบ) เหมาะกับการใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อคำนวณตามช่วงวันที่ที่กำหนดเอง
DATESMTD คืนตารางวันที่ของช่วงตั้งแต่ต้นเดือนถึงวันที่ล่าสุดใน filter context เหมาะกับการทำยอดสะสมตั้งแต่ต้นเดือน (MTD) โดยใช้ร่วมกับ CALCULATE และควรใช้คู่กับ ShowValueForDates pattern เพื่อไม่ให้แสดงค่าในวันที่ยังไม่มีข้อมูล
DATESWTD คืนตารางวันที่ตั้งแต่ต้นสัปดาห์จนถึงวันที่ในบริบทปัจจุบัน ใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อคำนวณยอดสะสมตั้งแต่ต้นสัปดาห์
DATESYTD คืนตารางวันที่ของช่วงตั้งแต่ต้นปีถึงวันที่สุดท้ายที่มองเห็นใน Filter Context ใช้เป็นตัวกรองเวลาใน CALCULATE สำหรับการคำนวณยอดสะสมตั้งแต่ต้นปี รองรับทั้งปีปฏิทินและปีบัญชี (Fiscal Year) ด้วย YearEndDate argument
ENDOFQUARTER คืนตารางวันที่ของวันสิ้นไตรมาสตามบริบทวันที่ปัจจุบัน เหมาะกับการใช้เป็นตัวกรองเวลาใน CALCULATE เพื่อประเมินมาตรวัด ณ วันสิ้นไตรมาส
NEXTQUARTER คืนตารางวันที่ของไตรมาสถัดไปจากบริบทวันที่ปัจจุบัน มักใช้เป็นตารางตัวกรองใน CALCULATE เพื่อคำนวณค่าแบบ “ไตรมาสถัดไป”
OPENINGBALANCEQUARTER ประเมิน Expression ณ วันที่เทียบเท่ากับวันสิ้นไตรมาสก่อนหน้า ภายใต้บริบทตัวกรองที่กำหนด ใช้เพื่อหา “ค่าเปิดงวดรายไตรมาส”
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 คืนวันแรกของเดือนเป็นตาราง 1 แถว ใช้กับการวัดที่ขึ้นต่อจุดเวลา เช่น ยอดคงเหลือ บัญชี หรือสินค้าคงคลัง
STARTOFQUARTER คืนตารางวันที่ที่มีวันแรกของไตรมาสในบริบทตัวกรองปัจจุบัน (single-row table) ใช้เป็นตารางตัวกรองใน CALCULATE หรือใช้ MINX เพื่อแปลงเป็น scalar date
TOTALQTD คำนวณยอดสะสมตั้งแต่วันแรกของไตรมาส (Q1/Q2/Q3/Q4) จนถึงวันที่ล่าสุดใน filter context ปัจจุบัน
.
ส่วนตัวผมใช้บ่อยมากตอน analyze quarterly performance และการวิเคราะห์ 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
อีเมลของคุณจะไม่ถูกเผยแพร่