先给结论:不要一看到“支持格式变了”就全站重导,也不要死守旧模板。判断依据是对象格式变化发生在哪一层——是标识符写法变了,还是字段结构变了。前者通常只需改输入映射,后者往往要先改采集与去重规则,再决定是否重新导入。
对象格式变化有两类,处理代价差别很大。第一类是标识符变化,比如目标对象从纯数字ID变成带前缀的字符串ID,或者从路径变成带参数的完整地址。字段名和字段数量没变,只是值的写法不同。第二类是结构变化,比如原来一个对象对应一行,现在一个对象对应多行,或者多了层级字段、少了必填字段。这类变化会影响去重、合并和后续报表口径。
区分方法很直接:把新旧两份样本各取十条,逐字段对比。如果只有某一列的值形态不同,其余列一一对应,属于第一类;如果行数、列数或嵌套层级对不上,属于第二类。这个判断决定了后面要不要动采集逻辑,而不只是动输入框里的正则。
当确认只是标识符写法变化,优先改输入规范里的解析与规范化规则,不动已有数据。具体动作是:在导入前加一层规范化,把新旧标识符统一成同一种内部表示,再写入。例如旧ID是 12345,新ID是 item-12345,规范化规则就是去掉固定前缀后再比对。
这样做的代价是维护一张映射或一条清洗规则,好处是历史数据不用重导,报表口径连续。动作结果会影响下一步:如果规范化后新旧对象能一一对应,说明只是写法问题,继续沿用旧主键;如果出现无法对应的对象,说明实际发生了结构变化,要退回第二类处理。
例外情况:当新旧标识符可能指向不同对象,比如同一前缀被复用于不同批次,就不能只做字符串清洗,必须引入批次字段作为联合主键,否则会把两个对象合并成一个。
当行数、列数或层级对不上,改输入规范的重点从“值怎么解析”转到“对象怎么定义”。这时要先确定新的对象粒度:是一个对象一行,还是一个对象多行需要聚合。粒度不定,后面的去重和统计都会错。
实施顺序建议是:先定义新的唯一键,再定义聚合规则,最后才调整导入模板。假设某工具原来按“页面”导入,现在数据变成按“页面+查询词”逐行给出,如果仍按页面去重,就会丢掉查询词维度;如果直接按行导入,页面层面的汇总又会重复计数。此时应把唯一键设为页面与查询词的组合,并在需要页面级报表时单独聚合,而不是在导入阶段就压平。
这个动作的结果决定下一步:如果新粒度能覆盖旧报表的所有指标,就可以切换;如果覆盖不了,就要保留两套输入规范并行一段时间,直到旧口径不再被引用。
无论属于哪一类,改完规范后都要做一次对照验证,而不是直接全量导入。验证方法是:用同一批原始数据,分别走旧规范和新规范,比较对象总数、去重后数量和关键字段的缺失数量。三者一致或差异可解释,才说明新规范成立。
需要说明的是,导入量或抓取量归零、报表条数骤降,都不能单独证明规范改对了。请求失败、权限变化、对象本身被删除,都会产生同样现象。要结合原始样本和错误日志一起看,才能排除其他解释。
把上面的判断收成一条可执行顺序:先抽样对比确认变化层级;标识符变化就加规范化层,结构变化就先定唯一键和聚合规则;改完用同批数据做新旧对照;对照通过再切换,不通过就保留并行。这样做的代价是前期多花一次样本比对的时间,收益是避免全量重导后才发现口径错误。
如果使用的是具体品牌的排名优化软件,其导入模板、字段映射入口和是否支持自定义唯一键,需要以该工具当前文档或实际界面为准,不同版本可能不同,不宜按旧教程直接套用。规范改动的核心不在工具按钮,而在对象定义是否与你的报表口径一致。