加载事实表时,如果某条事实数据对应的维度记录在维度表中不存在,应该直接丢弃吗?业务上这种场景怎么处理?

加载事实表时,如果某条事实数据对应的维度记录在维度表中不存在,应该直接丢弃吗?业务上这种场景怎么处理?

19 个赞

不能直接丢弃。正确的做法是:给"数据库查询"步骤添加错误处理步骤,将查询不到的数据分离出来。这些数据可以保存到文件或数据库,然后把这些"孤儿"维度数据加载到维度表中,创建新的维度记录,再重新查询一次维度表获取代理键,最后加载到事实表。这样既保证了事实表的完整性,又补充了维度表的数据。在sakila案例中,就是通过这种方式处理dim_customer中不存在的客户维度。