Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
I am looking to generate a timestamp for each hour between a range.
Columns: Ticket open [date time], Ticket suspended [date time], Ticket reactivated [date time], Ticket closed [date time]
Example data: Ticket ID: 12345. Ticket open = 1/1/2017 1:15 PM, Ticket suspended = 1/1/2017 4:36 PM. Ticket reactivated = 1/1/2017 6:11 PM, Ticket closed = 1/1/2017 8:45 PM.
Desired output: A record for each hour Ticket ID: 12345 was active. Then I can plot this activity on a heat map. I am not concerned with minutes.
1/1/2017 1:00 PM
1/1/2017 2:00 PM
1/1/2017 3:00 PM
1/1/2017 4:00 PM
1/1/2017 6:00 PM
1/1/2017 7:00 PM
1/1/2017 8:00 PM
If someone could point me in the right direction, I would really appreciate it. Thanks!
Solved! Go to Solution.
Example In Power Query:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Ticket ID", Int64.Type}, {"Ticket open", type datetime}, {"Ticket suspended", type datetime}, {"Ticket reactivated", type datetime}, {"Ticket closed", type datetime}}), DateAndHourTimes24 = Table.TransformColumns(#"Changed Type",{{"Ticket open", each 24 * Number.From(DateTime.Date(_) & #time(Time.Hour(DateTime.Time(_)),0,0))}, {"Ticket suspended", each 24 * Number.From(DateTime.Date(_) & #time(Time.Hour(DateTime.Time(_)),0,0))}, {"Ticket reactivated", each 24 * Number.From(DateTime.Date(_) & #time(Time.Hour(DateTime.Time(_)),0,0))}, {"Ticket closed", each 24 * Number.From(DateTime.Date(_) & #time(Time.Hour(DateTime.Time(_)),0,0))}}), AddedHourOpen = Table.AddColumn(DateAndHourTimes24, "Hour Open", each List.Transform({[Ticket open]..[Ticket suspended],[Ticket reactivated]..[Ticket closed]}, each DateTime.From(_ / 24)), type {datetime}), ExpandedHourOpen = Table.ExpandListColumn(AddedHourOpen, "Hour Open"), RemovedColumns = Table.RemoveColumns(ExpandedHourOpen,{"Ticket open", "Ticket suspended", "Ticket reactivated", "Ticket closed"}) in RemovedColumns
Hi @Sclark,
Query code could be the best solution. Here is a DAX solution, which is ugly.
1. Create a datetime table.
TimeTable = GENERATESERIES ( DATEVALUE ( MIN ( 'Ticket'[Open] ) ), DATEVALUE ( MAX ( 'Ticket'[Closed] ) + 1 ), TIME ( 1, 0, 0 ) )
2. Create a result table.
Result = FILTER ( CROSSJOIN ( TimeTable, Ticket ), [Value] > [Open] - TIME ( 1, 0, 0 ) && [Value] <= [Suspended] || [Value] > [Reactivated] - TIME ( 1, 0, 0 ) && [Value] <= [Closed] )
3. Delete the columns if needed.
Please reference this file: https://1drv.ms/u/s!ArTqPk2pu-BkgRZJFof6N-uug1Jw
Best Regards!
Dale
Hi @Sclark,
Query code could be the best solution. Here is a DAX solution, which is ugly.
1. Create a datetime table.
TimeTable = GENERATESERIES ( DATEVALUE ( MIN ( 'Ticket'[Open] ) ), DATEVALUE ( MAX ( 'Ticket'[Closed] ) + 1 ), TIME ( 1, 0, 0 ) )
2. Create a result table.
Result = FILTER ( CROSSJOIN ( TimeTable, Ticket ), [Value] > [Open] - TIME ( 1, 0, 0 ) && [Value] <= [Suspended] || [Value] > [Reactivated] - TIME ( 1, 0, 0 ) && [Value] <= [Closed] )
3. Delete the columns if needed.
Please reference this file: https://1drv.ms/u/s!ArTqPk2pu-BkgRZJFof6N-uug1Jw
Best Regards!
Dale
Example In Power Query:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"Ticket ID", Int64.Type}, {"Ticket open", type datetime}, {"Ticket suspended", type datetime}, {"Ticket reactivated", type datetime}, {"Ticket closed", type datetime}}), DateAndHourTimes24 = Table.TransformColumns(#"Changed Type",{{"Ticket open", each 24 * Number.From(DateTime.Date(_) & #time(Time.Hour(DateTime.Time(_)),0,0))}, {"Ticket suspended", each 24 * Number.From(DateTime.Date(_) & #time(Time.Hour(DateTime.Time(_)),0,0))}, {"Ticket reactivated", each 24 * Number.From(DateTime.Date(_) & #time(Time.Hour(DateTime.Time(_)),0,0))}, {"Ticket closed", each 24 * Number.From(DateTime.Date(_) & #time(Time.Hour(DateTime.Time(_)),0,0))}}), AddedHourOpen = Table.AddColumn(DateAndHourTimes24, "Hour Open", each List.Transform({[Ticket open]..[Ticket suspended],[Ticket reactivated]..[Ticket closed]}, each DateTime.From(_ / 24)), type {datetime}), ExpandedHourOpen = Table.ExpandListColumn(AddedHourOpen, "Hour Open"), RemovedColumns = Table.RemoveColumns(ExpandedHourOpen,{"Ticket open", "Ticket suspended", "Ticket reactivated", "Ticket closed"}) in RemovedColumns
is this possible on direct query?
I should have specified this in my initial post. Is there a DAX query that I could use, since I already have all of this data in a table in power BI?
You only need DAX if it is a calculated table.
Otherwise you can use the query above; just adjust the data source to yours.
I'll give this a shot. Thank you!
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
112 | |
100 | |
80 | |
64 | |
57 |
User | Count |
---|---|
146 | |
110 | |
93 | |
84 | |
67 |