为什么值得先做这一步
前面报错排查里那十条,有六条的根子都在数据本身:类型被推断错了、有看不见的空格、编号有重复、日期是文本、某列缺了三成。这些问题在读进来的那一刻就已经存在,只是要到很后面才爆出来。
体检不是为了把数据洗干净,是为了知道它有多脏。知道之后你才能决定:哪些要清洗、哪些要回源头找人、哪些要在报表口径里说明。跳过这一步就等于蒙着眼睛做分析。
看五件事
| 看什么 | 怎么看 | 不对劲的表现 |
|---|---|---|
| 列类型 | 点开输出表,看列名旁边的类型图标 | 金额列是文本、日期列是文本、编号列被当成数字 |
| 行数 | 输出表底部有总行数 | 和源文件对不上,多半是表头行设错或读漏了文件 |
| 缺失值 | 接一个统计类节点看每列的缺失数量 | 关键字段缺三成,这个分析可能根本做不了 |
| 主键唯一性 | GroupBy 按业务主键分组计数,看有没有大于 1 的 | 有重复。关联时会导致行数暴涨 |
| 取值分布 | GroupBy 按分类列分组计数 | 本该 12 个部门却出来 15 个 – 多半是空格或全角半角 |
节点串
体检这几支是临时的,看完可以留着也可以删。留着的好处是下期数据换了,跑一遍就知道质量有没有变化。
查主键重复的具体做法
这是体检里最有价值的一项 – 关联前不查,后面行数暴涨了很难往回追。
- 接一个 GroupBy。分组列选你的业务主键(资产编号、工号、订单号)。
- 聚合选计数。随便挑一列,方法选计数。
- 接 Row Filter 筛出计数大于 1 的。结果为空就是唯一,有内容就是这些主键重复了。
- 重复的先别急着删。看清楚是真重复(完全一样的两条)还是不同记录用了同一个编号 – 这两种处理方式完全不同。
查取值分布能发现什么
按「所属部门」分组计数,如果出来 15 行而实际只有 12 个部门,多出来的三个几乎肯定是同一个部门的变体:
行政部 1240 条
行政部 18 条 ← 后面多一个空格
行政 部 3 条 ← 中间多一个空格
行政部(本部) 7 条 ← 另一种写法
这类问题在汇总时会把一个部门拆成几行,在关联时会导致配不上。发现之后用 String Manipulation 统一 – 去空格能解决前两种,第三种要用替换或者做一张对照表。
体检结论怎么用
| 发现 | 该怎么办 |
|---|---|
| 类型不对 | 回读取节点里手工指定类型,别在下游绕 |
| 有空格、全角半角 | 加一步 String Manipulation 统一,放在关联和分组之前 |
| 主键有重复 | 先搞清楚是真重复还是编号复用,再决定去重还是加第二个关联键 |
| 关键字段大面积缺失 | 回源头找人。这不是技术问题,硬填出来的结论不可靠 |
| 少量缺失 | 决定保留为空还是补值,并在报表口径里写清楚 |
最后两行的区别要拿捏。缺一两条和缺三成是两回事。前者可以在口径里说明,后者说明这份数据不足以支撑你要做的分析 – 这时候把问题反馈回去,比硬做出一个不可靠的结论有价值得多。

