首页/数据/数仓建模速查/度量 NULL 与 0 的语义
维度与事实设计149 条

度量 NULL 与 0 的语义

NULL 表示未知/不适用,0 表示真实发生的零值:两者混用会让平均值、占比与覆盖率全部失真,入仓时要显式区分。

数仓建模速查数据更新于 2026-10-12
NULL未知 / 未发生
0发生了且为零
影响avg、占比、非空率

区分统计

区分统计
SELECT
  count(1) AS rows_all,
  sum(CASE WHEN amt IS NULL THEN 1 ELSE 0 END) AS rows_null,
  sum(CASE WHEN amt = 0 THEN 1 ELSE 0 END) AS rows_zero,
  avg(amt) AS avg_non_null
FROM dwd_order;
聚合函数忽略 NULL,报表把 NULL 显示为 0 时要谨慎,可能掩盖缺失。

易错点

  • 用 coalesce(amt,0) 一把梭,缺失与零值混淆
  • avg 在 NULL 上计算,样本集与直觉不一致

数据来源与参考

  • SQL 标准与各引擎聚合语义;数据仓库工具箱
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌