admin管理员组文章数量:1406334
Got kind of a confusing one if anyone's able to help would be appreciated. Pretty stuck on what to do
Basically I want to take the below raw data table and look for all the dates per Name
that overlap with each other and combine them into one row with the proper Min and Max represented in the single row for the overlapping dates. If there are no overlapping dates just keep the row as well
Raw data table
Name | Start Time | End Time |
---|---|---|
Name C | 4/1/2025 5:00 AM | 4/2/2025 3:50 PM |
Name A | 1/3/2025 1:00 PM | 1/10/2025 1:00 PM |
Name A | 1/5/2025 1:00 PM | 1/20/2025 5:00 PM |
Name A | 3/2/2025 1:00 PM | 3/8/2025 1:00 PM |
Name B | 2/2/2025 2:00 PM | 2/5/2025 3:00 PM |
Name C | 1/15/2025 1:30 PM | 1/19/2025 3:45 PM |
Name C | 1/12/2025 9:00 AM | 1/20/2025 1:00 AM |
Name D | 1/2/2025 10:00 AM | 1/2/2025 1:00 PM |
Name A | 1/1/2025 5:00 AM | 1/15/2025 3:00 PM |
Name D | 1/2/2025 11:00 AM | 1/4/2025 3:00 PM |
Got kind of a confusing one if anyone's able to help would be appreciated. Pretty stuck on what to do
Basically I want to take the below raw data table and look for all the dates per Name
that overlap with each other and combine them into one row with the proper Min and Max represented in the single row for the overlapping dates. If there are no overlapping dates just keep the row as well
Raw data table
Name | Start Time | End Time |
---|---|---|
Name C | 4/1/2025 5:00 AM | 4/2/2025 3:50 PM |
Name A | 1/3/2025 1:00 PM | 1/10/2025 1:00 PM |
Name A | 1/5/2025 1:00 PM | 1/20/2025 5:00 PM |
Name A | 3/2/2025 1:00 PM | 3/8/2025 1:00 PM |
Name B | 2/2/2025 2:00 PM | 2/5/2025 3:00 PM |
Name C | 1/15/2025 1:30 PM | 1/19/2025 3:45 PM |
Name C | 1/12/2025 9:00 AM | 1/20/2025 1:00 AM |
Name D | 1/2/2025 10:00 AM | 1/2/2025 1:00 PM |
Name A | 1/1/2025 5:00 AM | 1/15/2025 3:00 PM |
Name D | 1/2/2025 11:00 AM | 1/4/2025 3:00 PM |
Post query table result needed
Name | Start Time | End Time |
---|---|---|
Name A | 1/1/2025 5:00 AM (came from row 9) | 1/20/2025 5:00 PM (from row 3) |
Name A | 3/2/2025 1:00 PM | 3/8/2025 1:00 PM |
Name B | 2/2/2025 2:00 PM | 2/5/2025 3:00 PM |
Name C | 1/12/2025 9:00 AM (from row 7) | 1/20/2025 1:00 AM (from row 7) |
Name C | 4/1/2025 5:00 AM | 4/2/2025 3:50 AM |
Name D | 1/2/2025 10:00 AM (from row 8) | 1/4/2025 3:00 PM (from row 10) |
For clarity , for the rows that were created from combination I noted which row they received the value from. Those words do not need to be in the result, just wanted to indicate
Please let me know if I have to expand further at all
Share Improve this question edited Mar 6 at 0:52 UBP asked Mar 6 at 0:44 UBPUBP 437 bronze badges2 Answers
Reset to default 1Paste the code below into the Advanced Editor.
Replace the Source line with your actual data source (eg might have to change the Table name):
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {"Start Time", type datetime}, {"End Time", type datetime}}),
//Group by Name
#"Grouped Rows" = Table.Group(#"Changed Type", {"Name"}, {
//add shifted Start Time column to each sorted subgroup
{"Shifted", (t)=>
[a=Table.Sort(t,{"Start Time",Order.Ascending}),
b=Table.FromColumns(
Table.ToColumns(a)
& {{null} & List.RemoveLastN(Table.Column(a,"End Time"),1)},
type table [Name=text, Start Time=datetime, End Time=datetime, Shifted End Time=nullable datetime]),
//Overlap exists if start time is less than the shifted end time
c=Table.AddColumn(b,"Overlap", each [Start Time] < [Shifted End Time], type logical),
//First row in overlap column will be null so we fill up from the second row to see if they overlap
d=Table.FillUp(c,{"Overlap"}),
//Group each subtable by the logical overlap
e=Table.Group(d,"Overlap", {
{"Start Time", each List.Min([Start Time]), type datetime},
{"End Time", each List.Max([End Time]), type datetime}},
GroupKind.Local,(x,y)=>Number.From(y<>true))][e]}
}),
#"Sorted Rows" = Table.Sort(#"Grouped Rows",{{"Name", Order.Ascending}}),
#"Expanded Shifted" = Table.ExpandTableColumn(#"Sorted Rows", "Shifted", {"Start Time", "End Time"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded Shifted",{{"Start Time", type datetime}, {"End Time", type datetime}})
in
#"Changed Type1"
you can try this in the PQ
first create a column based on the start time column
then group by data
at last ,remove useless column
本文标签: daxCombine rows if the dates exist in another rowStack Overflow
版权声明:本文标题:dax - Combine rows if the dates exist in another row - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745001074a2636977.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论