数据仓库中的日历建模与案例分析
1. 时间处理与数据仓库系统模型
在处理时间相关问题时,会遇到夏令时以及时区划分的情况。时区划分可能会沿着河流、山脉或者遵循经度穿过不同的州。为避免陷入立法和地理细节的困境,在交易发生时同时记录两个时间是更好的做法。
数据仓库系统模型方面,之前讨论了日历的业务特性,包括各种类型、元素和时间跨度。接下来探讨其对数据仓库系统和技术表示的影响。在进入案例研究之前,先介绍适用于日历的键的概念。
在数据仓库中,数据通过外键与日历实体的主键相关联。像注册日期、订单日期或发票日期等交易日期,会以这种方式与日历关联。而像出生日期这类与业务活动无关的日期,通常作为独立日期存储,与日历无关联。
日期是少数具有已知、可靠唯一值集合的属性之一。可以假设,至少在我们的有生之年,日历系统不会改变,管理层也不会重新编号日期,所以日期具备作为完美键的特性。是否为日历表使用代理键,取决于个人偏好和策略。比如可以制定策略,让所有表的键都包含代理键,这样能明确表主键的性质。同时,还需要考虑为何需要日历的代理键以及如何处理错误日期。
实体还会有多个备用自然键属性,这取决于源系统中日期的表示方式。一个属性可能是数据库原生格式的日期,若不使用代理主键,该属性就会作为主键。额外的属性可以存储传入数据馈送所使用格式的日期。例如,如果某个数据源将日期存储为八位字符的 CCYYMMDD 字段,那么应在日期实体中包含该格式的日期属性,以方便外部系统与数据仓库的对接。通过以不同格式存储日期,数据仓库加载接口可以直接定位到合适的日期行,无需使用日期格式转换函数,避免了因接收无效日期而产生的潜在问题。若只存储单个自然键(通常是数据库原生格式的日期),则需要开发代码来验证和清理
超级会员免费看
订阅专栏 解锁全文
1612

被折叠的 条评论
为什么被折叠?



