蹲一切琴棋书画,爱一切真善和美
将两个表合并在 PQ 中属于基本操作,以匹配的列为基础使用合并查询即可。
如果我们需要合并的两个表并没有匹配列呢?要求也很简单,按照行号进行合并就行了。模拟数据如下:
乍看是一个非常简单的问题,在 Excel 中也只需要复制粘贴就可以了。但是在 PQ 中,当你将表 2 复制好,在表1中单击鼠标左键时并没有出现粘贴选项。
无粘贴选项
下面分享两种实现以上需求的方法,第一种是添加索引列,很多新手刚刚接触 PQ 时,无法理解为什么会有添加索引列的功能 ?这刚好是一个不错的例子。
第二种是使用 M 语言。这个方法可以帮助我们更好的理解 M 函数的语法规则与计算逻辑。这里有一个非常重要的知识点:PQ 中行号是从 0 开始的,本例可以帮助大家对此可以加深印象。
索引列
两个表看似没有匹配列,其实既然是按照行号直接合并,那么行号就可以作为两个列合并的依据。所以我们只需要根据行号匹配就行了,只是这里的行号需要我们手工添加。
也就是添加索引列:
给两个表添加从 0 (也可以是从1开始,只要两表一致就可以)开始的索引列。然后执行以索引列为匹配列合并两表即可。
M 语言
我们给表1 添加了从 0 开始的索引列以后,是否可以直接通过 M 语言直接将表 2 的字母引用过来?
其实是可以的。
首选我们需要知道不同查询,甚至是查询中的步骤所产生的结果其实都是一个表(或者记录等元素),它们之间可以互相引用。
引用表
引用查询步骤
如果查询与查询之间可以互相引用,我们是不是可以直接将另外一个查询?
在表 1 中新建自定义列,输入以下 M 代码
非常简洁的一句 M 代码,可以这样理解:
新建的列逐行计算,值等于表 2 中指定行对于的记录。行号由索引列提供,它就等于当前行的索引列的值。因此也可以写成表2,下横线 _ 代表当前行。然后再从取出的记录中(表2的一行)去字母列的值。
下面是匹配过程的动图演示:
扫码加入PowerBI知识星球,你将获得;
百余篇优质原创文章练习文件;
365天不限次数答疑;
持续更新的杂志级图表制作方法及源文件;
历次分享的优秀可视化仪表板模板。
…………
「PowerBI知识星球」2021年内容合辑
Power BI作图技巧:在 X 轴上分段填色
批量合并不规则文件的第三种方法,这次把从文件夹合并数据讲透了
这两种方法求柏拉图的累积占比,可以帮你更好地理解 M 与 DAX 的上下文概念