| MySQL | a <=> b |
|---|---|
| PostgreSQL | a IS NOT DISTINCT FROM b |
| Spark | a <=> b 或 IS NOT DISTINCT FROM |
差异检测
差异检测
-- 找出 name 或 phone 实际发生变化的当前行
SELECT d.customer_id
FROM dim_customer d JOIN stg_customer s USING (customer_id)
WHERE d.is_current = 1
AND NOT (d.name <=> s.name OR (d.name IS NULL AND s.name IS NULL));把 NULL 视为有效值时,先落默认值(如 '未知')再比较可简化逻辑,但要统一到维度规范里。