在Power Query里选择“替换”,只说明要改变内容,还没有说清匹配的对象。一个数值、一段文字中的片段,以及单元格里的Error,不能仅因画面上都占着一格,就按同一种方式处理。先确认列类型和对象,才能理解一次替换会影响哪些内容。
Microsoft Learn把普通值替换分成两种模式:非文本列默认匹配整个单元格,文本列默认寻找各行内指定的文字串,替换找到的所有实例。文本列可以通过高级选项中的Match entire cell contents改为整格匹配;这些高级选项只在文本类型列可用。[1] 所以“查找什么”之外,还应说明“按整格还是按片段找”。
用一组自拟文本可以直接看出差异。某列有“北区”“北区仓库”“北区与北区仓库”三项,目标是把“北区”改为“东区”。按文字片段匹配,三项里出现的对应片段都会被替换,最后一项的两处也都属于找到的实例;若按整格匹配,则只有内容恰好为“北区”的第一项符合条件。这是依据文档规则的文字推演,不是真实经营表的运行结果。
因此,类别名称升级与一段说明里的用词调整,需要不同的问题描述。若仅有一个正式类别改名,就应先看其他单元格是否只是包含相同字样;若要把某个固定前缀从各项中去掉,又需要关注片段而非完整内容。一个替换条件即使没有报错,也可能没有表达团队原本想改的对象。
“替换为”留空也要连着匹配单位理解。微软示例从类别名称中去掉固定前缀,查找串末尾还包含一个空格,替换内容为空。[1] 这移除的是被找到的那一段,并非自动清空全部单元格。假设本文的示意文字为“标签:文具”,只移除“标签:”后,文具仍是剩下的内容;查找串是否带空格,又会影响哪些字符被一起移除。
Error属于另一条路径。微软错误处理页说明,步骤级错误会阻止查询加载;单元格级错误则在格中显示Error,并不阻止查询加载。点击该格的空白区域可以查看错误详情。[2] 如果看到的是单元格级错误,应先读错误原因、消息和详情,而不能把显示的Error当成普通文字片段来理解。
来源的示例是某格原来包含NA,整列转为整数时该值无法转换,于是出现Error。[2] 失败发生在类型转换:原始内容与目标类型不相容。另一格若只是普通文本“Error log”,里面虽然有相同字母,却不因此成为转换失败。前者需要解释运算为何失败,后者只是文本中的词,查找对象已经不同。
处理单元格错误时,移除错误会删除相关行,替换错误会填入一个固定值,保留错误则留下出错行供检查。[2] 假设一行还带有客户名称和记录日期,删除整行会让这些字段一同离开当前结果;填入固定值则让记录留下,但原本未知的数值并没有因此被找回;保留错误适合把问题集中呈现,得到的也不再是全部正常记录。
交接一次处理时,可以具体说明哪一列、哪一种匹配对象、采用的动作以及结果中还保留什么。尤其不能把“查询能加载”直接写成“每个业务值都正确”。前者描述软件是否能形成结果,后者需要真实数据依据。把对象和动作说清,才有条件判断这次处理是否符合资料用途。
资料来源:[1] [Microsoft Learn:Replace values and errors](https://learn.microsoft.com/en-us/power-query/replace-values);[2] [Microsoft Learn:Dealing with errors in Power Query](https://learn.microsoft.com/en-us/power-query/dealing-with-errors)。
信息来源
- Microsoft Learn:Replace values and errors — Power Query
- Microsoft Learn:Dealing with errors in Power Query
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。