有效性校验

有效性校验检查取值是否合法:枚举是否有字典外值、数值是否在合理范围、格式是否符合(手机号、日期字符串、编码位数);常用于在 DWD 层拦截脏数据。

枚举状态、渠道、类型字段的取值集合
范围金额非负、比例在 0 到 1 之间
格式手机号、日期字符串、编码位数
处置字典外值告警并按策略转 unknown

取值分布检查

取值分布检查
-- 列出各状态取值与占比,出现字典外取值即异常
SELECT status_name, COUNT(1) AS cnt
FROM dwd_trade_order_detail_di
WHERE dt = '2026-10-11'
GROUP BY status_name
ORDER BY cnt DESC;

范围与格式

范围与格式
SELECT COUNT(1) AS bad_rows
FROM dwd_trade_order_detail_di
WHERE dt = '2026-10-11'
  AND (pay_amount < 0 OR (phone IS NOT NULL AND phone NOT RLIKE '^1[3-9][0-9]{9}$'));
字典外取值不要静默丢弃:先落档并计数,再决定清洗规则,否则问题会被隐藏。

易错点

  • 枚举新增取值后忘记更新校验字典,产生大量误报
  • 脏数据直接丢弃不落档,丢失的问题线索再也找不回

数据来源与参考

  • 行业数据质量有效性校验实践
  • Apache Hive 官方文档(RLIKE 正则匹配)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌