特别是我正在处理类型2
Slowly Changing Dimension并且需要表示特定记录活动的时间间隔,即对于每个记录我有一个StartDate和一个EndDate.我的问题是关于是否使用闭合([StartDate,EndDate])或半开([StartDate,EndDate))间隔来表示这一点,即是否包括间隔中的最后日期.举一个具体的例子,说记录1从第1天到第5天是活跃的,从第6天开始记录2变得活跃.我是否将记录1的EndDate设为等于5或6?
最近我开始思考半开放区间最好基于Dijkstra:Why numbering should start at zero,以及Python中数组切片和range()函数的约定.在数据仓库上下文中应用它我会看到半开区间约定的优点如下:
> EndDate-StartDate给出记录活动的时间
>验证:下一条记录的StartDate将等于上一条记录的EndDate,该记录易于验证.
>未来打样:如果我后来决定将我的粒度从每日更改为更短的时间,那么切换日期仍然保持精确.如果我使用一个封闭的间隔并将EndDate存储为午夜的时间戳,那么我将不得不调整这些记录以适应这种情况.
因此,我倾向于采用半开区间法.然而,如果有一些广泛采用的使用闭区间方法的行业惯例,那么我可能会倾向于使用它,特别是如果它是基于实现这样的系统的实际经验而不是我的抽象理论.
提前感谢任何见解或评论.