经营数据合并时选了Left outer,展开关联字段后行数反而增加,这是否必然是重复数据?先看左外连接承诺保留的对象。Microsoft Learn把它定义为保留左表全部行以及右表匹配行;这句话没有说,每个左表记录只能对应一条右表记录。
Power Query合并两个表后,会在基础表中增加一个与右表同名的列。官方概览说明,这个新列按行保存右表对应的值,随后可以展开或聚合其中的字段;不过,文档注明Power Query Online界面目前只提供展开,不提供聚合。于是,界面上暂时看到一格Table,并不意味着里面只有一条内容。匹配结果的内部结构,会影响下一步展开得到多少行。
微软的Table.ExpandTableColumn文档用一个很小的例子说明这一点:公司Contoso的一条记录中,Locations包含Redmond、Bellevue和Tempe三个地点。展开City和State后,输出变成三行,每行都带Contoso,但地点分别不同。这是原文的数据示例,不是本文读取的企业客户资料,也不是新运行的一次查询测试。
由这个例子可以理解,左边名称重复出现,可能只是同一条主记录与不同明细分别组合的结果。若先把所有重复名称都当作错误删除,就可能丢掉本来不同的地点。判断之前需要看记录身份和所选字段,而不是只看某一列的文字是否相同。本文没有建议清理任何生产数据。
匹配键本身也需要对应。概览说明,两表的列名不必相同,但用于匹配的列应有相同数据类型;多列连接时,两边选择的先后次序必须一致,第一列对应第一列,后续依次对应。如果省略这些条件,只记录“已经合并”,后来的人就很难区分结果来自正确的多条匹配,还是来自键选择不当。
交接合并结果时,可以同时记录连接种类、左表记录数、用于匹配的键,以及展开的是哪些明细字段。这些是作者提出的说明线索,并不把行数增加预先判为正常或异常。真正的问题是新增的每一行是否有可解释的对应关系;回答这一点仍需要实际表内容。
本文依据两份微软官方文档解释机制,未执行M代码或审计经营报表。左外连接保留左表,与展开后形成更多组合行并不冲突。先读清一格嵌套表里装了什么,再讨论重复,才能避免仅为了让前后行数相等而改变原本的数据含义。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。