组合两个(表或列表)以在 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)都会有所不同

power bi 如何获取数据做可视化

如何在 Spatstat 中创建带有覆盖两个标记的图例的组合颜色图?

根据列表值在 Power Query 中创建条件列