1.22 PowerBI数据准备-笛卡尔积、有序排列组合、无序排列组合

加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,提问交流,有问必答。

一个列的元素与另一个列(也可以是它本身)的元素组合在一起,是PowerQuery中常见的操作。比如笛卡尔积,有一张店铺表和一张产品表,需要把店铺表和产品表交叉相乘,进行笛卡尔积运算,让店铺表中的每一个的店铺都匹配到产品表中的每一个产品,用于模型建立关系的中间表或者其他用途。

举例

有一个成员表,成员列中有4个成员A、B、C、D。组合方式有3种:

1 笛卡尔积,Cartesian product,相同的成员也组合,考虑成员的前后顺序。可能性的种数是数学中的两个集合个数的乘积,本例的可能性为16种。

2 有序排列组合,Permutation,相同的成员不组合,考虑成员的前后顺序。可能性的种数是数学中的P 4 2,本例的可能性为12种。

3 无序排列组合,Combination,相同的成员不组合,不考虑成员的前后顺序。可能性的种数是数学中的C 4 2,本例的可能性为6种。

以上三种方式,在PowerQuery中可以按照笛卡尔积、有序排列组合、无序排列组合逐步实现。

操作步骤

1 笛卡尔积

STEP 1 PowerQuery获取数据后,在左侧的成员表上点击鼠标右键,选择下面的复制,生成一份成员表的副本。

STEP 2 选择新生成的表,点击菜单栏添加列下的自定义列,命名成员2,输入成员表[成员],调取成员表的成员列。

STEP 3 点击成员2列标题右侧的展开按钮,选择扩展到新行。

共16种可能,结果如下:

2 有序排列组合

在笛卡尔积的基础上,添加辅助条件列,判断两列成员是否相等,筛选不相等的部分,最后删除辅助列。

共12种可能,结果如下:

3 无序排列组合

在有序排列组合的基础上,添加辅助自定义列对两列成员按相同顺序组合,选中辅助列删除重复项,最后删除辅助列。

辅助列:

Text.Combine(List.Transform(List.Sort({[成员],[成员2]}),Text.From))

共6种可能,结果如下:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容