先给结论:对象格式变化后,不要继续沿用旧输入规范,而要先判断变化是输入侧扩展还是输出侧改变。前者通常只需调整批量格式和字段映射,后者往往要重写筛选规则、去重规则和验收口径。判断依据是:旧规范依赖的字段是否仍然存在、字段含义是否变化、以及结果是否还能与旧批次直接比较。若三个条件都成立,可以增量修改;只要有一个不成立,就应建立新规范并暂停与旧结果合并。
输入格式扩展的典型情况是:原来只接受一行一个词,现在可以接受带地区、语言、匹配类型等附加列的表格。此时核心对象仍是词本身,附加列只是筛选维度。改动可以局部进行:保留旧字段名,新增列设为可选,旧文件仍能跑通。这种条件下,最省事的动作是先在旧规范上加一个映射层,把新列映射到已有筛选条件,确认输出字段没有变化后再决定是否固化为新规范。
对象结构改变则不同。例如原来处理的是单个词,现在要处理词与落地页、词与产品分类的对应关系;或者原来以词为单位,现在以词组或主题簇为单位。此时去重逻辑、统计口径、合并规则都会变。继续用旧规范会产生看似正常、实则不可比的结果。更稳妥的做法是新建一套输入规范,明确必填字段、唯一键和冲突处理方式,旧规范只用于历史数据,不做混算。
第一处是唯一标识。旧规范可能默认词本身唯一,新格式若允许同词不同地区或不同匹配类型,就必须改用组合键。动作是:在输入模板里增加一列标识,并在处理前检查重复。结果是重复记录会提前暴露,而不是在后续合并时才出现数量对不上。
第二处是空值和默认值。格式变化后,新列常常允许为空。需要明确空值代表“不限”还是“未知”。若代表不限,筛选时应跳过该条件;若代表未知,应单独标记,避免被当成已确认条件使用。这个动作直接影响后续筛选结果的规模,也决定是否需要回查原始文件。
第三处是字段类型。数字、日期、枚举值在不同工具或不同版本之间可能被识别成文本。动作是:在导入前统一格式,日期用同一种写法,枚举值用固定拼写。结果是排序、区间筛选和分组不会因为类型不一致而漏掉记录。
可以沿用的条件比较具体:旧规范里的关键字段仍然存在且含义未变;新格式只是增加可选列;输出结果仍以原来的最小对象为单位;旧批次和新批次不需要合并统计。满足这些条件时,增量修改即可,改动记录写清楚新增列和默认值。
必须另起一套的条件同样具体:最小对象变了,比如从词变成词组;唯一键变了;旧字段被拆分、合并或重新定义;新旧结果需要放在同一张表里比较。此时若强行沿用旧规范,常见后果是重复计数、筛选条件失效,或者同一批数据在两个版本里得到不同总数。遇到这种情况,先停掉自动合并,再单独定义新规范。
假设某团队原来输入一列英文词,输出按词去重。现在输入变成三列:词、地区、语言。若地区只是筛选维度,最小对象仍是词,可以保留旧唯一键,把地区和语言作为筛选条件,输出仍按词去重。若业务要求同一词在不同地区分别统计,最小对象就变成了“词加地区”,旧唯一键不再适用,必须改用组合键,并重新定义去重和汇总规则。这个例子的判断点不是列数变多,而是统计单位有没有变。
验证时取一小批同时符合新旧格式的样本,分别按旧规范和新规范处理,比较三件事:记录总数、唯一对象数、被筛掉的记录原因。若总数不同,先查唯一键和空值处理;若唯一对象数不同,查去重规则;若筛掉原因分布突变,查字段类型和枚举拼写。
需要注意,请求量下降、抓取量归零或某个字段全部为空,都不能单独证明新规范正确。它们也可能是数据源本身变化、权限变化、上游文件未更新或筛选条件过严造成的。合理做法是把这些现象当作线索,回到样本对比和字段映射检查,而不是直接下结论。
最后,具体工具对列名、文件类型、编码和字段长度的支持范围各不相同,且可能随版本调整。上面的判断条件和动作是通用方法,实际使用前应以你所用工具的当前说明和一次小样本试跑为准。