组合两个(表或列表)以在 Power BI 中创建唯一组合的输出
Posted
技术标签:
【中文标题】组合两个(表或列表)以在 Power BI 中创建唯一组合的输出【英文标题】:Combine two (tables or lists) to create output of unique combinations in Power BI 【发布时间】:2020-04-15 15:05:02 【问题描述】:尝试在 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
有没有办法做到这一点? (是的,我的行数不相等) 只是不知道最好或正确的方法(尝试使用与帮助列结合并在创建重复项时遇到死胡同,除非我做错了)
【问题讨论】:
【参考方案1】:这本质上是两个列表的笛卡尔积(又称叉积)。
如果你只有两个文本列表,你可以像这样做一个单行:
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...
【讨论】:
作为列表还是表格更容易?在 power bi 中,它很容易走任何一条路,但是有什么建议或推荐呢? 对您的工作流程更有意义或对您感觉更舒适的方式。 这一步的数据类型也很重要吗? 成功了!!非常感谢,它们都是独一无二的价值,非常完美! 类型很重要,因为您必须将非文本类型转换为文本才能附加它们。以上是关于组合两个(表或列表)以在 Power BI 中创建唯一组合的输出的主要内容,如果未能解决你的问题,请参考以下文章
数据可视化之powerBI基础(十四)Power BI中创建联动切片器
当值为文本时如何在 Power BI 中创建折线图(好的,不正确)?
我们可以在 Power BI 中声明全局变量吗?我想在表中创建 url 列,并且域对于每个环境(Dev、QA、Prod)都会有所不同