将日期或日期时间加载到日期维度

时间:2017-05-16 16:19:15

标签: date datetime data-warehouse business-intelligence dimensional-modeling

假设我有一个日期维度,根据我的业务需求,我知道我需要做的最精细的是检查事件发生的月份的特定日期。

我给出的数据为我提供了事件发生的确切时间(YYYY-MM-DD HH:MM:SS)。我有两个opitons:

  1. 在将数据加载到日期维度之前,请从日期切片HH:MM:SS。
  2. 在我的日期维度中创建时间属性并插入完整的日期时间。
  3. 我看到它的方式,我应该使用选项1.这将删除冗余数据并节省一些空间。但是,如果我使用选项2,如果业务要求发生变化,或者我的经理突然想要更细化,我就不需要修改我的原始设计。哪个选项更常用?还有更多我没有考虑过的选择吗?

    更新 - 跟进问题

    我每个月都会收到新数据。如果我使用预先构建的日期维度以及所有日期,那么我需要每个月运行我的脚本以使用该月的新日期填充表格,或者我将有一个连续的过程,其中每天插入表格一行,哪个日期?

1 个答案:

答案 0 :(得分:3)

我同意你的意见并避免使用选项2.标准日期维度表位于各个日期级别。如果您确实需要按时间进行分析,则可以在一天内创建一个额外的时间维度,并链接到事实表中的那个。

您的日期维度应该由脚本自动创建,而不是从事件发生的日期创建。这允许您使用标准的预建维度,从其他事实和未发生事件的日期分析一系列事件。

我还会将完整的日期/时间戳记作为事实表中的一列,以及“DateKey”和#39;到维度表。这将允许您对时间戳进行一些可见性/分析,您不会丢失数据,并且仍然允许您按日期维度进行分析。

更新 - 跟进问题

您预先建立的日期维度(执行此操作的标准方式)通常会包含将来的某些日期。例如,没有理由不在表格中包含另外5年的日期。但是,如果您希望它随着时间的推移逐渐增长,您可以拥有一个每天运行一次,每月运行一次或每年运行一次的脚本来添加新日期。它完全取决于你!有许多用于构建日期维度的示例脚本 - 只是谷歌日期维度脚本。它们以您选择的语言存在,例如SQL,C#,Power Query等

相关问题