รู้จักกับ Date Dimension พร้อมวิธีการสร้างตาราง Date Table ด้วย DAX

วันที่ กับการทำงานด้าน Business Intelligence
สำหรับคนทำงานงานด้าน Data Analytics นั้น แน่นอนว่าจะต้องทำงานกับวันที่ (Date) และ เวลา ซึ่งในการทำงานกับ Power BI แน่นอนเลยว่า Date Dimension ซึ่งเป็น Dimension ที่สำคัญในทุก ๆ Business เป็นสิ่งที่จำเป็น เพื่อให้เราสามารถวิเคราะห์ข้อมูลไม่ว่าจะทำ Year-to-Date การเปรียบเทียบกับช่วงเวลาที่ผ่านมาได้
Date Dimension คืออะไร
Date Dimension หรือ Date Table หรือ Calendar Table เป็นตารางสำหรับรวมรวมข้อมูลเกี่ยวกับวันที่ เพื่อเรียกใช้ใน Dashboard หรือการวิเคราะห์ข้อมูล โดย Date Dimension นั้นจะต้องมีคุณสมบัติคือ- มีข้อมูลครอบคลุมเพียงพอกับข้อมูลที่เราจะวิเคราะห์
- มี Key ที่ไม่ซ้ำ มีข้อมูลต่อเนื่อง โดยคอลัมน์นี้ใช้ในการกำหนดการ Validate ในคำสั่ง Marked as a date table
- ตารางนี้ควรจะกำหนดคำสั่ง Marked as a date table ใน Data Model
ตัวอย่างเช่นการวิเคราะห์ยอดขาย ก็จะต้องมีข้อมูล Date Dimension ที่มีข้อมูลตั้งแต่เริ่มขายจนถึงวันที่ขายวันสุดท้ายเป็นอย่างน้อย
ประโยชน์ของ Date Dimension
Date Dimension จะช่วยในการทำการจัดกลุ่มข้อมูลทำให้เราสามารถใช้งาน สร้าง Hierarchy ของตัวเองได้ เช่น Power BI จะสร้าง Hierarchy เฉพาะ Year > Quarter > Month โดย Quarter จะเป็น ไตรมาส แบบปฏิทิน แต่หากเราไม่ได้ใช้ Quarter แบบไตรมาสปฏิทิน เราก็จะต้องใช้งานแบบไตรมาสแบบ Fiscal Quarter หรือ ตามงบประมาณ เช่น ไตรมาสแรก เริ่มที่เดือน เมษายน หรือ ไตรมาสแรก เริ่มที่เดือน ตุลาคม สำหรับภาครัฐ หรือเราสามารถสร้าง Hierarchy ตามที่เราต้องการได้ เช่น Year, Half Year, Quarter, Month, Week หรือ Day ได้ตามที่เราใช้งาน
Date Dimension ช่วยให้เราสามารถทำงานกับ Time Intelligence ซึ่งเป็น DAX ที่จะช่วยเปรียบเทียบข้อมูล ทำข้อมูลสะสมในรูปแบบ Year to Date (YTD), Quarter to Date (QTD), Month to Date (MTD) ได้
Time Intelligence
Time Intelligence เป็นความสามารถของ DAX (Data Analysis Expression) ที่จะช่วยให้เราทำงานกับเวลา เช่น การเปรียบเทียบกับช่วงเวลาอื่น การดูค่าเป็นรายปี (Annually) รายครึ่งปี (Half Year) รายไตรมาส (Quarterly) รายเดือน (Monthly) ได้โดยจะมีฟังก์ชันด้าน Time Intelligence ที่เราสามารถเรียกใช้งานได้
- NEXTDAY, NEXTMONTH, NEXTQUARTER, NEXTYEAR, PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSQUARTER, PREVIOUSYEAR, FIRSTDATE, LASTDATE, STARTOFMONTH, STARTOFQUARTER, STARTOFYEAR
- TOTALMTD, TOTALQTD, TOTALYTD
- DATEADD, DATEDIFF, DATESBETWEEN, DATESINPERIOD
วิธีการสร้าง Date Dimension
การสร้าง Date Dimension ใน Power BI Desktop สามารถสร้างได้ทั้งใน Power Query และ Data Model โดยในตัวอย่างนี้แนะนำเป็นการสร้างใน Data Model โดยใช้ DAX (Data Analysis Expression) โดยใช้ฟังก์ชันต่าง ๆ
สร้าง Date Dimension โดยใช้ฟังก์ชัน CALENDARAUTO()
ซึ่งจะทำการสร้าง TABLE โดยดูข้อมูลที่เป็น DATE ใน Data Model แล้วทำการสร้างคอลัมน์ที่เป็นวันที่ ให้เรา โดยทำการสร้าง New Table แล้วใส่สูตรว่าDimDate = CALENDARAUTO()
Year = YEAR ( [Date] )
Month = FORMAT ( [Date], "mmm" )
MonthID = MONTH ( [Date] )
MonthYear = FORMAT ( [Date], "mmm yyyy" )
MonthYearID = INT(FORMAT ( [Date], "yyyymm" ))
QuarterYear = "Q" & FORMAT ( [Date], "q yyyy" )
QuarterYearID = INT(FORMAT ( [Date], "yyyyq" ))
สร้าง Date Dimension โดยใช้ DAX Code
DimDate =
VAR startYear = YEAR ( MIN ( Sales[OrderDate] ) ) //ระบุคอลัมน์ของวันที่ขาย
VAR endYear = YEAR ( MAX ( Sales[OrderDate] ) )
RETURN
ADDCOLUMNS (
CALENDAR(
DATE(startYear,1,1),
DATE(endYear,12,31)
),
"Year", YEAR ( [Date] ),
"Month", FORMAT ( [Date], "mmm" ),
"MonthID", MONTH ( [Date] ),
"MonthYear", FORMAT ( [Date], "mmm yyyy" ),
"MonthYearID", INT(FORMAT ( [Date], "yyyymm" )),
"QuarterYear", "Q" & FORMAT ( [Date], "q yyyy" ),
"QuarterYearID", INT(FORMAT ( [Date], "yyyyq" ))
)
//Powered by 9Expert Training
ผลลัพธ์ที่ได้จากการรันโค้ด DAX ดังกล่าว โดยสร้าง New Table

ดังนั้นเราจะสามารถสร้าง Date Dimension หรือ Date Table เพื่อนำไปใช้ในการวิเคราะห์ข้อมูลโดยการใช้ DAX Functions และยังสามารถต่อยอดการคำนวณในการสร้างคอลัมน์เพิ่มเติมได้ตามที่ต้องการ เพราะฉะนั้นผู้เรียนจำเป็นต้องเรียนรู้ให้เข้าใจในเรื่องของ DAX (Data Analysis Expression) อย่างถ่องแท้ เพื่อสร้างการวิเคราะห์แบบซับซ้อนได้
แนะนำหลักสูตรการอบรม
เรียนรู้คำสั่ง DAX เพื่อใช้งานด้าน Data Analysis, Data Analytic, BI โดยใช้ Power BIในหลักสูตร Data Analysis Expression (DAX) for Power BI (2 Days)