首页/数据/数据工程与 ETL 速查/空值与默认值陷阱
本包目录(311 条)

空值与默认值陷阱

空值与默认值是两件事:默认值会掩盖缺失(空串、0、1970 时间戳),把“没有数据”伪装成“有数据”;校验要同时查 NULL 与可疑默认值,并统一指标计算中 NULL 的处理方式(COUNT 忽略 NULL、AVG 忽略 NULL)。

同时检查 NULL 与可疑默认值

同时检查 NULL 与可疑默认值
SELECT
  SUM(CASE WHEN amount IS NULL THEN 1 ELSE 0 END) AS null_cnt,
  SUM(CASE WHEN amount = 0 THEN 1 ELSE 0 END)      AS zero_cnt,
  SUM(CASE WHEN created_at = '1970-01-01 00:00:00' THEN 1 ELSE 0 END) AS epoch_cnt
FROM dwd_orders
WHERE dt = '2026-10-11';
指标的 NULL 口径要写进文档:AVG 忽略 NULL 与把 NULL 当 0 的结果差异很大,跨团队口径不同会导致对账争议。

易错点

  • 上游用空串代替 NULL,not_null 校验全通过,实际全是缺失
  • 把 NULL 当 0 参与平均,指标被系统性低估

数据来源与参考

  • SQL 标准实践(NULL 三值逻辑)
  • 行业数据质量实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌