Forum Discussion
Dynamic Date Slicer with Parallel Dynamic Period
- 3 years ago
Hi Rinshe ,
You'll need a proper calendar table related to your incident fact table on calendar[date] ONE : MANY incidentTable[incident date].
Once you have this, the measures would be as follows:
_incidentsSelected = DISTINCTCOUNT(incidentTable[Incident ID]) _incidentsPriorPeriod = VAR __noofDays = DISTINCTCOUNT(calendar[date]) RETURN CALCULATE( DISTINCTCOUNT(incidentTable[Incident ID]), DATEADD(calendar[date], - __noofDays, DAY) )Pete
- 3 years ago
Here's a basic calendar to get you started.
In Power Query, create a new blank query, then paste this code over all of the default code in there:
let // Define Date.Today Date.Today = Date.From(DateTime.LocalNow()), // Build calendar Source = { Number.From(#date(2015,1,1))..Number.From(#date(2022,12,31)) }, convToTable = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error), chgDateType = Table.TransformColumnTypes(convToTable, {{"Column1", type date}}), renCols = Table.RenameColumns(chgDateType, {{"Column1", "date"}}), addYear = Table.AddColumn(renCols, "year", each Date.Year([date])), addRelativeYear = Table.AddColumn(addYear, "relativeYear", each [year] - Date.Year(Date.Today)), addQuarterKey = Table.AddColumn(addRelativeYear, "quarterKey", each Date.QuarterOfYear([date])), addRelativeQuarter = Table.AddColumn(addQuarterKey, "relativeQuarter", each ([year] * 4 + [quarterKey]) - (Date.Year(Date.Today) * 4 + Date.QuarterOfYear(Date.Today))), addMonthKey = Table.AddColumn(addRelativeQuarter, "monthKey", each Date.Month([date])), addMonth = Table.AddColumn(addMonthKey, "month", each Text.Start(Date.MonthName([date]), 3)), addMonthYear = Table.AddColumn(addMonth, "monthYear", each Text.Combine({[month], Text.End(Text.From(Date.Year ([date])),2)}, " ")), addRelativeMonth = Table.AddColumn(addMonthYear, "relativeMonth", each (Date.Year([date]) * 12 + [monthKey]) - (Date.Year(Date.Today) * 12 + Date.Month(Date.Today))), addDayKey = Table.AddColumn(addRelativeMonth, "dayKey", each Date.DayOfWeek([date])), addDay = Table.AddColumn(addDayKey, "day", each Text.Start(Date.DayOfWeekName([date]), 3)), addRelativeDay = Table.AddColumn(addDay, "relativeDay", each [date] - Date.Today), chgTypes = Table.TransformColumnTypes(addRelativeDay,{{"year", Int64.Type}, {"relativeYear", Int64.Type}, {"quarterKey", Int64.Type}, {"relativeQuarter", Int64.Type}, {"monthKey", Int64.Type}, {"relativeMonth", Int64.Type}, {"dayKey", Int64.Type}, {"relativeDay", Int64.Type}, {"month", type text}, {"monthYear", type text}, {"day", type text}}) in chgTypesIf you want to change the dates the calendar runs over, just change the dates in the source line here:
Personally, I would recommend putting this into a dataflow and refreshing it around 00:30 your local time each night. It will then be immediately available to any project you need a calendar for.
Pete
I have created the proper calendar table as you have mentioned, now i have given a relationship between the Calendar [date] and the date column in the incident table. The date hierarchy for the date column in the incident table disappeared as I mentioned earlier. Ignoring that, i tried to use the Calendar[date] hierarchy in my visuals and it does not drill down the incident ID as expected. It still shows the overall year level value how much ever I drill down based on the calendar[date] hierarchy
Once you have your related calendar table, there are two ways to create drilldown hierachies:
1) Build the hierarchy however you want it in the visual axis, like this:
OR
2) In the Fields list on the Modelling tab, select the highest level of your hierarchy (finYear in my case), click the ellipsis, and select Create Hierarchy:
You can then drag and drop new hierarchy levels into that hierarchy to end up with something like this:
And you can drag the whole hierarchy into your axis to get the same behaviour as the default functionality:
*NOTE*I don't believe method 2 works in Live Connection models, and it may not even work in Direct Query or Mixed models either.
Pete
- Rinshe3 years agoNew Member
That is solved, i had the date format as date time in the incident table date column, that is the reason it was showing an error. Now I am working on the way you have given to count the incident IDs for previous period. Thanks for all the help!