【问题标题】:Loading date or datetime into date dimension将日期或日期时间加载到日期维度
【发布时间】:2017-05-16 16:19:14
【问题描述】:

假设我有一个日期维度,并且根据我的业务需求,我知道我需要做的最细致的工作是检查事件发生的具体日期。

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

  1. 在将数据加载到日期维度之前,从日期中切出 HH:MM:SS。
  2. 在我的日期维度中创建时间属性并插入完整的日期时间。

在我看来,我应该选择选项 1。这将删除冗余数据并节省一些空间。但是,如果我选择选项 2,如果业务需求发生变化,或者如果我的经理突然想要更细化,我就不需要修改我的原始设计。哪个选项更常用?还有其他我没有考虑过的选择吗?

更新 - 跟进问题

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    更新 - 跟进问题

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

    【讨论】:

    • 您的回答肯定解决了一些问题。我用您的答案的后续问题更新了我的问题。谢谢!
    • 我已经更新了我的答案以回应您的跟进。
    猜你喜欢
    • 2011-06-23
    • 2018-01-28
    • 2014-01-29
    • 2011-12-03
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多