Forum Discussion
Flatten Table with Dax
Hi there,
I have a table (current below), which has a common ID with phases associated with it. I am trying to display the time between phase (e.g. for ID 1 Phase A would be 1 hour of time, phase B would be 1 minute, etc). I was thinking of flattening the table (see flatten table format below). Is this possible in DAX?
Current Table Format:
| ID | Phase | Start | End |
| 1 | A | 12:00 AM | 1:00 AM |
| 1 | B | 1:00 AM | 1:01 AM |
| 1 | C | 1:01 AM | 1:02 AM |
| 2 | A | 12:00 AM | 1:00 AM |
| 2 | B | 1:00 AM | 1:01 AM |
| 2 | C | 1:01 AM | 1:02 AM |
Flatten Table Format:
| ID | PhaseA | PhaseAStart | PhaseAEnd | PhaseB | PhaseBStart | PhaseBEnd | PhaseC | PhaseCStart | PhaseCEnd |
Hi, hartlbb
Please check the following methods.
Table2 = Summarize('Table', 'Table'[ID], "Phase A Start", Minx(filter('Table', 'Table'[Phase] ="A" ), [Start]), "Phase A END", Maxx(filter('Table', 'Table'[Phase] ="A" ), [End]), "Phase B Start", Minx(filter('Table', 'Table'[Phase] ="B" ), [Start]), "Phase B END", Maxx(filter('Table', 'Table'[Phase] ="B" ), [End]), "Phase C Start", Minx(filter('Table', 'Table'[Phase] ="C" ), [Start]), "Phase C END", Maxx(filter('Table', 'Table'[Phase] ="C" ), [End]), "AvailabilityDuration",DATEDIFF(Minx(FILTER('Table',[Phase]="A"),[Start]),Minx(FILTER('Table',[Phase]="B"),[Start]),SECOND))Is this the result you expect? If not, please provide more details.
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
3 Replies
- amitchandak
Super User
hartlbb , a new table
Summarize(Table, Table[ID],
"Phase A Start", Minx(filter(Table, Table[Phase] ="A" ), [Start Date]),
"Phase A END", Maxx(filter(Table, Table[Phase] ="A" ), [END Date]),
"Phase B Start", Minx(filter(Table, Table[Phase] ="A" ), [Start Date]),
"Phase B END", Maxx(filter(Table, Table[Phase] ="A" ), [END Date]),
"Phase C Start", Minx(filter(Table, Table[Phase] ="A" ), [Start Date]),
"Phase C END", Maxx(filter(Table, Table[Phase] ="A" ), [END Date]))Or use Phase on Matrix column, Only Visual solution
- hartlbbNew Member
Thank you, worked perfectly. I am not trying to calc the phase times, troulbe on this statement:
"AvailabilityDuration" = DATEDIFF(Minx(FILTER('Logs_Perf','Logs_Perf'[phaseName]="Availability"),'Logs_Perf'[startTime]),Minx(FILTER('Logs_Perf','Logs_Perf'[phaseName]="Ingestion"),'Logs_Perf'[startTime]),SECOND))- v-zhangti
Community Support
Hi, hartlbb
Please check the following methods.
Table2 = Summarize('Table', 'Table'[ID], "Phase A Start", Minx(filter('Table', 'Table'[Phase] ="A" ), [Start]), "Phase A END", Maxx(filter('Table', 'Table'[Phase] ="A" ), [End]), "Phase B Start", Minx(filter('Table', 'Table'[Phase] ="B" ), [Start]), "Phase B END", Maxx(filter('Table', 'Table'[Phase] ="B" ), [End]), "Phase C Start", Minx(filter('Table', 'Table'[Phase] ="C" ), [Start]), "Phase C END", Maxx(filter('Table', 'Table'[Phase] ="C" ), [End]), "AvailabilityDuration",DATEDIFF(Minx(FILTER('Table',[Phase]="A"),[Start]),Minx(FILTER('Table',[Phase]="B"),[Start]),SECOND))Is this the result you expect? If not, please provide more details.
Best Regards,
Community Support Team _Charlotte
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.