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种可能,结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值