KDT#9 实际处理缓慢变化维时的一个妥协
在对已有数据仓库添加新的主题时,需加载的维度表也会存在历史记录的情况,这时,和普通的缓慢变化维的加载方式就会存在着不同。通常缓慢变化维的加载时是增量加载,查找表中只保留最新的代理键和自然键的对应关系。而像新增主题这样的批量加载,查找表中会保留维度变化的历史信息。
当批量加载维度表的历史信息时,在查找表中查询代理键的SQL示例如下:
Select customer_key from customer_lookup CL where customer_ID = factfile.customer_id and factfile.transaction_date between CL.effective_date and CL.end_date
这种通过between和and的查询在记录多时效率是非常差的。为了提高初次加载的效率,有一种折中的方案可以选择。
这种方案就是放弃批量加载,使用和正常增量加载相同的程序来实现多次的增量加载。举例来说,我们可以把两年的记录分成104次增量加载,即每个星期的数据加载一次,每次只加载与该周相关的记录,维度选取生效日期effective_date小于等于该周内最小交易日期的记录。这样,查找表中代理键和自然键仍保持是一对一的关系。
妥协的缺点就是维度记录有可能在一周内出现不准,如果维度变化很慢,这样的误差我们可以接受的话,就可以采用这种妥协的加载方法。