如何限制Power Query中Table.AddFuzzyClusterColumn修改特定值?
Power Query中保留"FQF"与"QFF"独立值的解决方法
以下是几种可行的解决思路,按需选择:
方法一:前置临时替换规避匹配
在现有数据清理步骤之前,先对"FQF"做临时标记,避免被模糊匹配规则错误合并:
- 打开Power Query编辑器,定位到数据清理步骤的前一步,插入新步骤。
- 运行以下代码,将"FQF"临时替换为唯一标识:
Table.ReplaceValue(源, "FQF", "FQF_TEMP", Replacer.ReplaceText, {"Original"})
- 执行原有的数据清理流程(阈值0.95的模糊匹配/分组步骤)。
- 再插入新步骤,将临时标识还原为"FQF":
Table.ReplaceValue(清理后的数据, "FQF_TEMP", "FQF", Replacer.ReplaceText, {"Fixed Name"})
方法二:自定义匹配规则强制保留独立值
如果使用Table.FuzzyGroup等模糊分组函数,可以通过TransformationTable参数指定优先规则,让"FQF"和"QFF"各自映射到自身,不受阈值影响:
Table.FuzzyGroup( 源, {"Original"}, {{"Count", each Table.RowCount(_), Int64.Type}}, [ Threshold=0.95, TransformationTable = Table.FromRecords({ [From="FQF", To="FQF"], [From="QFF", To="QFF"] }) ] )
该参数的规则优先级高于模糊匹配阈值,会强制这两个值保留原始内容。
方法三:事后针对性修正
在已完成清理的数据集上,基于原始列做反向修正:
- 添加自定义列,逻辑为当原始值是"FQF"时,返回"FQF",否则保留已清理的结果:
Table.AddColumn(清理后的数据, "Fixed Name Corrected", each if [Original] = "FQF" then "FQF" else [Fixed Name])
- 删除原"Fixed Name"列,将自定义列重命名为"Fixed Name"即可。
内容的提问来源于stack exchange,提问作者Sam R.
相关产品推荐
相关产品推荐

