【发布时间】:2019-06-26 08:37:28
【问题描述】:
我有查询,我在其中加入多维表以创建事实表。对于外键为空的情况,我想将其指向维度表中添加的默认虚拟记录,以便字段中没有空值。这怎么可能 。请帮忙。
Select
a.name,
a.id_no,
d.dealer_name,
d.address
from
contract a
left join dealer b
on a.con_id=b.con_id
对于上面的示例,当 b.con_id 为 null 并且在这种情况下找不到匹配项时,我想指向添加到经销商表中的默认外键(0)。就像如果 FK 为空,则采用默认 fk 并使用这些记录来填充字段
【问题讨论】:
-
有必要使用虚拟记录吗? AFAIK 如果您的列为空,您可以使用 COALESCE 指定一个值。
-
是的。但根据 kimball 数据仓库设计,这将是一种标准做法
-
从我读到的(假设#43)结果不应该包含空值,所以合并会解决这个问题。
-
您的表合约是否有 a.con_id = 0 的行?在这种情况下,您可以将加入条件作为 - on a.con_id=COALESCE(b.con_id ,0)
标签: sql join hive foreign-keys