Forum Discussion
rp2022
1 year agoHelper II
Getting all child values for every parent value based on a column
I have this data : Parent Child Type 1 3 E 2 102 F 3 5 F 3 4 E 4 6 E 7 170 F 8 9 E 9 10 E 10 11 E 11 110 F 12 120 F 13 14 E 14 1...
- 1 year ago
dufoq3
1 year agoCommunity Champion
Hi rp2022, another solution:
(Parent and Child columns must be as text so ChangedType step is important)
Output:
let
Source = Expression.Evaluate("Table.FromRows(List.Transform(Text.Split(""1;3;E|2;102;F|3;5;F|3;4;E|4;6;E|7;170;F|8;9;E|9;10;E|10;11;E|11;110;F|12;120;F|13;14;E|14;140;F|15;16;E|16;160;F|17;18;E|18;19;E|19;20;E|21;20;E|20;200;F"",""|""), each Text.Split(_, "";"")), {""Parent"",""Child"",""Type""})", #shared),
ChangedType = Table.TransformColumnTypes(Source,{{"Parent", type text}, {"Child", type text}, {"Type", type text}}),
Grouped = Table.Group(ChangedType, {"Parent"}, {{"T", each _, type table}}),
R = Function.Invoke(Record.FromList, List.Reverse(Table.ToColumns(Grouped))),
F = (parent)=>
Table.Combine(List.Generate(
()=> [ par = Text.From(parent), t = Record.FieldOrDefault(R, par, #table(null, {})) ],
each not Table.IsEmpty([t]),
each [ par = [t][Child], t = Table.Combine(List.Transform(par, (r)=> Record.FieldOrDefault(R, r, #table(null, {})))) ],
each [t])),
Result = F(8)
in
Result