有很多功能,同时在【转换】和【添加】两个菜单中都存在,而且,通常来说,它们得到的结果列是一样的,只是在【转换】菜单中的功能会将原有列直接“转换”为新的列,原有列消失;而在【添加】菜单中的功能,则是在保留原有列的基础上,“添加”一个新的列。
但是,最近竟然发现,“合并列”的功能,虽然在大多数情况下,两种操作得到的结果一致,但是他们却是有本质差别的,而且一旦存在空值(null)的情况,得到的结果将有很大差别。比如下面这份数据:
将“产品1~产品4”合并到一起,通过添加列的方式实现:
结果如下,其中的空值直接被忽略掉了:
而通过转换合并列的方式:
结果如下,空的内容并没有被忽略,所以中间看到很多个连续分号的存在:
为什么存在这种差异呢?
我们看一下生成的步骤公式就清楚了!
原来,添加列里使用的内容合并函数是:Text.Combine,而转换里使用的内容合并函数是:Combiner.CombineTextByDelimiter。
同时,通过上面得到结果的不同,我们也知道了,用Text.Combine函数对内容进行合并,会完全忽略null值,而通过Combiner.CombineTextByDelimiter进行文本合并,则会保留null值。
那么问题来了,如果希望转换的时候直接忽略空值进行合并呢?
显然,我们只要将其所使用的函数改一下就OK了,比如转换操作生成的步骤公式修改如下:
同样的,如果希望添加列里,内容合并时保留null值,则可以进行如下修改:
这个例子,再次说明,绝大多数的时候,我们只需要对操作生成的步骤公式进行简单的调整,即可以实现一些直接操作实现不了或者比较难实现的目的。
当然,要学会修改,首先要对各类操作比较熟悉,同时,操作的时候,也可以多关注一下步骤公式的结构和含义,这样,随着对一些常用函数的熟悉,慢慢就知道在哪里改,怎么改了。