Forum Discussion
Merged Query Question
- 2 years ago
Different Approach:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], Table1 = Table.TransformColumnTypes(Source,{{"Project", type text}, {"Item", type text}, {"Cost", Int64.Type}}), Source2 = Excel.CurrentWorkbook(){[Name="Table2"]}[Content], Table2 = Table.TransformColumnTypes(Source2,{{"Project", type text}, {"Budget", Int64.Type}}), Merge = Table.NestedJoin(Table1,"Project",Table2,"Project","Merged"), #"Expanded Merged" = Table.ExpandTableColumn(Merge, "Merged", {"Budget"}, {"Budget"}), #"Grouped Rows" = Table.Group(#"Expanded Merged", {"Project"}, { {"all", (t)=>Table.FromColumns( Table.ToColumns(Table.RemoveColumns(t,"Budget")) & {{t[Budget]{0}} & List.Repeat({null}, Table.RowCount(t)-1)}, {"Project","Item","Cost","Budget"}), type table [Project=nullable text, Item=nullable text, Cost=nullable number, Budget=nullable number]}}), #"Expanded all" = Table.ExpandTableColumn(#"Grouped Rows", "all", {"Item", "Cost", "Budget"}) in #"Expanded all"
Hi Alfinthehouse Assuming pattern A,B,C repeats every 3 row. To acheive the desired result, Fisrt merged both table and expand budget column. Then you need to create a index column start from 0 and create a custom column with mudulo divided by 3. Then you can create final budget column with condition, if 0 then budget else null. See the below code:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Project", type text}, {"Item", type text}, {"Cost", Int64.Type}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type", {"Project"}, Table2, {"Project"}, "Table2", JoinKind.LeftOuter),
#"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"Budget"}, {"Budget"}),
#"Added Index" = Table.AddIndexColumn(#"Expanded Table2", "Index", 1, 1, Int64.Type),
#"Inserted Modulo" = Table.AddColumn(#"Added Index", "Modulo", each Number.Mod([Index], 3), type number),
#"Added Custom" = Table.AddColumn(#"Inserted Modulo", "Custom", each if [Modulo] = 1 then [Budget] else null),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Budget", "Index", "Modulo"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Custom", "Budget"}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Renamed Columns",{{"Budget", Int64.Type}})
in
#"Changed Type1"
Desire output:
Hope this helps!!
If this solved your problem, please accept it as a solution!!
Best Regards,
Shahariar Hafiz
Thanks for the response Shafiz, unfortunately the real data is more complex and each project could have 1,000's of rows associated with it. And it wouldn't be a fixed number per project either