In order to utilise the time-based functionality of PowerBI, you'll need to add a Date Table to the data model. This can be done through a few different methods. The easiest way to do this is to use DAX to generate the table and associated columns. One way of doing this is described below.
To download the file created in this example, click here.
- Click 'Modelling' in the menu bar
- Click 'New Table' in the menu
- When the formula bar appears, enter DateTable = CALENDAR (date(2010, 1, 1) , today()) as shown below
- This will now create a table with one row per date, from the 1st of January, 2010 to the current date. To see this table, click the 'Data' icon on the left hand side of the screen
- You will then see the following table, with a list of dates as described previously
- In order to develop your date table to provide additional columns, such as day number, week number, day name, month, etc, one method is to use the GENERATE function. In order to add an additional column containing the day number (i.e. 1st of Jan = 1, 2nd of Jan = 2, 31st of Jan = 31, 1st of Feb = 1) modify the DAX to the following
- To add additional columns to the date table, insert additional rows between rows 5 and 6, below "DayNo..." using the syntax "Column Title", function
- An example of a more comprehensive date table could look like the following. The DAX Code to create this is available as text at the end of this post
DateTable =
Generate(
CALENDAR (date(2010, 1, 1) , today()),
row(
"DayNo",day([Date]), // Date for calculations
"Day ddd", Format([Date], "ddd"), //day name, Mon, Tue, Wed, etc
"WeekNo", WEEKNUM([Date]), // Gregorian week number
"WeekDay", if (or (Format([Date], "ddd") = "Sat", Format([Date], "ddd") = "Sun"), 0, 1), // 1 if the date is a week day
"WeekDayNum", WEEKDAY([Date], 2 ), // Number from 1-7 based on the week day
"Week", [Date] + 7 - Weekday([Date], 2), // Last date of the week
"MonthNum", MONTH ( [Date] ), // Number of the gregorian month
"MonthName", FORMAT ( [Date], "mmmm" ), // Long name of current Month
"MonthEnd", EOMONTH( [Date], 0), // Date of the last day of the month
"Year", Year([Date]) // Year of the base date
)
)
Comments
Post a Comment