Forum Discussion
emmabrice
5 years agoFrequent Visitor
Group by with gaps in data
Hi I cant think of a way to do this and hoping you can help. I have data that looks like this PersonID Effective Date End Date Job Title 2145 20/02/2017 30/04/2017 Job 1 2...
- Anonymous5 years ago
Hi emmabrice ,
Here are the steps you can follow:
1. Create calculated column.
Index = RANKX('Table',[Effective Date],,ASC,Dense)Column = var _lastrow=CALCULATE(MAX('Table'[Job Title]),FILTER(ALL('Table'),[Index]=EARLIER('Table'[Index])-1)) return IF(_lastrow=[Job Title],0,1)Group = SUMX(FILTER(ALL('Table'),[Index]<=EARLIER('Table'[Index])),[Column])2. Create calculated table.
Table 2 = var _summarize= SUMMARIZE('Table',[PersonID],[Job Title],[Group],"1",MIN('Table'[Effective Date]),"2",MAX('Table'[End Date])) return SELECTCOLUMNS(_summarize,"PersonID",[PersonID],"Effective Date",[1],"End Date",[2],"Job Title",[Job Title])3. Result:
Best Regards,
Liu Yang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
CNENFRNL
Community Champion
5 years agolet
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("fZExCsMwDEWvUjwHpC9HxL5CrxCyFDIUCh3q+1O5rY0MST1ZvOcvIa9rEMwapiBMLCSMxYpoxdyK6/N2QdimrjKItVHMxPlUhTpq78DnqeIorAVqkQ5TxdFo6nKq1llTo33W41R1tKv5r1qpbeozuPDhAOoo0nevgp8qQ2p2tP6HenVIFThqG7CNiJ1BLfur1FRCa29Su5Z7eeyjGCm2RKUe3sXtDQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [PersonID = _t, #"Effective Date" = _t, #"End Date" = _t, #"Job Title" = _t]),
#"Grouped Rows" = Table.Group(Source, {"PersonID", "Job Title"}, {{"ar", each _}}, 0, (x,y) => Number.From(x[PersonID]<>y[PersonID] or x[Job Title]<>y[Job Title])),
Custom1 = Table.TransformColumns(#"Grouped Rows", {"ar", each let start=[Effective Date], end=[End Date] in [Start=start{0}, End=List.Last(end)]}),
#"Expanded ar" = Table.ExpandRecordColumn(Custom1, "ar", {"Start", "End"}, {"Start", "End"})
in
#"Expanded ar"