尝试在Power BI中组合两个查询以产生唯一组合的输出。
例如一个列表(或列):A,B,C
和另一个列表(或列):1,2,3,4,5,6,7
输出应为:A1,A2,A3,A4,A5,A6,A7,B1,B2,B3,B4,B5,B6,B7,C1,C2,C3,C4,C5,C6,C7 >
有没有办法做到这一点? (是的,我的行数不相等) 只是不知道最佳或正确的方法(尝试与辅助列结合使用,并在创建重复项时陷入死胡同,除非我做错了此事)
答案 0 :(得分:1)
这本质上是两个列表的笛卡尔乘积(又称叉积)。
如果您只有两个文本列表,则可以像这样执行单线操作:
List.Combine(List.Transform(List1, (L1) => List.Transform(List2, (L2) => L1 & L2)))
这表示为第一个列表中的每个项X创建一个列表,该列表是第二个列表,每个元素前面都带有X。这样就给出了一个列表列表,可以使用Combine函数将这些列表展平为单个列表。
虽然也希望对表执行此操作并不少见。在这种情况下,类似的想法是在一个表上定义一个新列,其中每一行是另一行的整个列表/列,然后扩展该新列。
假设我们需要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
更详细的参考文献: