CALENDARAUTO สร้างตารางวันที่อัตโนมัติโดยอิงช่วงวันที่ที่พบในโมเดล และสามารถกำหนดเดือนสิ้นสุดปีบัญชีได้ เหมาะกับการสร้าง Date table แบบเร็ว ๆ แต่ควรระวังค่าวันที่ผิดปกติในข้อมูล
=CALENDARAUTO([<FiscalYearEndMonth>])
=CALENDARAUTO([<FiscalYearEndMonth>])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| FiscalYearEndMonth | number | Optional | 12 | เดือนสิ้นสุดปีบัญชี (1-12) เช่น 3 หมายถึงสิ้นสุดมีนาคม หากไม่ระบุจะใช้ค่า 12 (ธันวาคม) หรือตัวตั้งค่าเริ่มต้นของแม่แบบปฏิทิน |
เริ่มต้นทำโมเดลเวลาโดยไม่ต้องระบุช่วงเอง
กำหนดเดือนสิ้นสุดปีบัญชีเพื่อให้ตารางครอบคลุมช่วงปีบัญชีครบ
Date Table = CALENDARAUTO()Date Table =
CALENDARAUTO()
ตารางวันที่ที่ครอบคลุมตั้งแต่ 1 มกราคม ของปีแรกจนถึง 31 ธันวาคม ของปีสุดท้าย ตามข้อมูลในโมเดล
Date Table (Fiscal) = CALENDARAUTO(3)=Date Table (Fiscal) =
CALENDARAUTO(3)
ตารางวันที่ที่ครอบคลุมตั้งแต่ 1 เมษายน ของปีแรกจนถึง 31 มีนาคม ของปีสุดท้าย
Date Table (With Year) = VAR BaseCalendar = CALENDARAUTO() RETURN ADDCOLUMNS( BaseCalendar, "Year", YEAR([Date]), "Month", MONTH([Date]), "Quarter", ROUNDUP(MON…=Date Table (With Year) =
VAR BaseCalendar = CALENDARAUTO()
RETURN
ADDCOLUMNS(
BaseCalendar,
"Year", YEAR([Date]),
"Month", MONTH([Date]),
"Quarter", ROUNDUP(MONTH([Date])/3, 0)
)
ตารางวันที่พร้อมคอลัมน์ Year, Month, Quarter สำหรับใช้งานการวิเคราะห์
Date Table (Safe) = VAR MinValidDate = DATE(2015, 1, 1) VAR MaxValidDate = TODAY() RETURN CALENDAR(MinValidDate, MaxValidDate)=Date Table (Safe) =
VAR MinValidDate = DATE(2015, 1, 1)
VAR MaxValidDate = TODAY()
RETURN
CALENDAR(MinValidDate, MaxValidDate)
ตารางวันที่ที่ถูกควบคุม ตั้งแต่ 1 มกราคม 2015 ถึง วันนี้
มักเกิดจากข้อมูลมีค่าวันที่หลุดช่วง (outlier) เช่น ปีเก่ามากไม่คาดคิด หรือมีข้อมูลทดสอบในอดีต ทำให้ช่วง MinDate/MaxDate ที่สแกนได้กว้างเกินจำเป็น ตรวจสอบข้อมูลด้วย MIN/MAX ก่อน หรือใช้ CALENDAR กับ hardcoded dates เพื่อควบคุมให้เหมาะสม
ถ้าต้องการควบคุมช่วงเวลาให้แน่นอนให้ใช้ CALENDAR (ระบุ start/end date โดยชัดเจน) แต่ถ้าต้องการเริ่มเร็วและข้อมูลวันที่ในโมเดลสะอาด CALENDARAUTO จะสะดวกกว่า โดยควรตรวจสอบช่วงเวลาที่สร้างขึ้นหลังจาก Load Model
ทำได้ แต่ไม่แนะนำ เพราะ Calculated Column มี row context และ CALENDARAUTO ส่งคืนตารางที่ใช้ filter context ถ้าต้องหาค่า Date ในแต่ละแถวให้ใช้ฟังก์ชันอื่น เช่น [Date] หรือ RELATED()
ไม่ รองรับเฉพาะ Import Mode เท่านั้น ใน DirectQuery ต้องสร้าง Date table จากแหล่งข้อมูลหรือใช้ CALENDAR ด้วย hardcoded dates
CALENDARAUTO ใช้สร้างตารางวันที่แบบอัตโนมัติ โดยสแกนคอลัมน์วันที่ในโมเดล (ไม่รวม calculated columns/tables) เพื่อหาช่วงปีที่ครอบคลุมข้อมูล แล้วสร้างตารางวันที่ให้ครอบคลุมตั้งแต่วันแรกของปีบัญชีที่บรรจุ MinDate จนถึงวันสุดท้ายของปีบัญชีที่บรรจุ MaxDate เหมาะกับการเริ่มต้นทำ Time Intelligence แบบรวดเร็ว
ส่วนตัวผม CALENDARAUTO เป็นเหมือน “smart default” ของ DAX – เอาแล้วสร้างให้อย่างรวดเร็ว ปัญหาคือถ้าข้อมูลมี outlier วันที่ (เช่น ปีเก่ามากไม่คาดคิด) ตารางจะยาวเกินจำเป็น และสิ้นเปลือง storage ได้ 😎 เลยต้องตรวจสอบข้อมูลก่อน
ส่วนที่เจ๋งคือฟังก์ชันนี้เรียก CALENDAR ภายในตัว โดยคำนวณ MinDate/MaxDate อัตโนมัติจากข้อมูลที่นำเข้า ถ้าข้อมูลสะอาดก็ได้ตารางที่ดีในไม่กี่วินาที