这本质上是两个列表的笛卡尔积(又称叉积)。
如果你只有两个文本列表,你可以像这样做一个单行:
List.Combine(List.Transform(List1, (L1) => List.Transform(List2, (L2) => L1 & L2)))
这表示对于第一个列表中的每个项目 X,创建一个列表,该列表是第二个列表,每个元素都附加 X。这给出了一个列表列表,使用 combine 函数将其展平为单个列表。
不过,想要对 table 执行此操作并不少见。在这种情况下,类似的想法是在一个表上定义一个新列,其中每一行是另一个表的整个列表/列,然后扩展该新列。
假设我们想要Table1[Column1] 和Table2[Column2] 的叉积:
let
Table1 = <Table1 Source>,
AddCustom = Table.AddColumn(Table1 , "Custom", each Table2),
Expand = Table.ExpandTableColumn(AddCustom, "Custom", {"Column2"}, {"Column2"}),
Concatenate = Table.AddColumn(Expand, "Concatenate", each [Column1] & [Column2])
in
Concatenate
编辑:
您也可以在展开之前进行连接:
let
Table1 = <Table1 Source>,
AddCustom = Table.AddColumn(Table1 , "Custom",
(T1) => List.Transform(Table2[Column2], each T1[Column1] & _)),
Expanded = Table.ExpandListColumn(AddCustom, "Custom")
in
Expanded
更详细的参考资料:
Cartesian Product Joins
Cartesian Join of two queries...