I have a model with several queries in it. In particular, there are two, Major and Minor, which I would like to have a cartesian product of. Major has 38 rows and Minor has 12 rows, so their product has 456 rows. In other words, I want to build the following Table:
M1 m1
M1 .
M1 .
M1 m12
M2 m1
M2 .
M2 .
M2 m12
.
.
M38 m1
M38 .
M38 .
M38 m12
It seems straightforward; I have two lists, MajorList
and MinorList
. My query is:
Table = Table.Combine(
List.Transform(
MajorList,
(M) => Table.FromColumns( {List.Repeat({M}, 12), MinorList} )
)
)
This query works, but it uses several gigabytes of memory and takes several minutes. What am I doing wrong and what is the right way to do this?
Try this - it is instant for me.
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Minor),
#"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Name"}, {"Custom.Name"})
in
#"Expanded Custom"