PQ-M 及函数:合并列的陷阱及动态化处理方法

在视频课《2.15.Power Query操作的陷阱及工作原理》里,我强调过,Power Query虽然在很大程度上给用户实现报表的自动化(随源数据的增减动态一键刷新得结果)提供了很好的功能。
但是,在某些操作上,Power Query里的步骤所生成的代码是相对固定的,因而会导致某些新增的数据不能被添加进来,或某些数据被删除时出现错误——这些有点像一个个小陷阱的东西,我会在后续的视频中当案例中的方法可能出现类似的问题时,做好提醒以及提供实现真正动态化的方法,以便让大家随着学习的深入,不断地加深对Power Query的理解并灵活运用到实际工作中。
file
以下是视频课交流群里的朋友需要实现的一个问题:动态合并除某些列以外的所有列。
这个问题用操作的方法很简单,如下图所示:
file
但是,通过这种操作方法,当你删掉一些列的时候刷新就会出错:
file
当增加一些列的时候,刷新却出不来,如源数据中增加一列:
file
究其原因,是因为“合并列”的操作步骤中,生成的代码如下,其中对你操作时选中的列生成了一个固定的列表:{"标题2", "标题3", "标题4", "标题5"},如下图所示:
file
那么,如果我们要实现动态的合并,那就要想办法让这个列表能够适应表中相应列的删除或增加,即通过相关的函数,来动态的构建这个列表,具体实现方法如下:
file
即,将原来生成的固定的列表的内容,替换成图中红框内的函数应用,思路也很简单:
1、通过函数Table.ColumnNames读取整个表的所有列的列名;
2、通过List.RemoveItems函数删掉不要合并的列的列名。
这样,无论你在源数据上是增加还是删除需要合并的列,这个函数的组合就会动态地获取到整个表最新的列名信息,然后剔除不需要合并的列名信息,剩下需要合并的列名。
file

大海-Excel到PowerBI