【问题标题】:Which data type for date-type attributes in a dimensional table, including start & end dates?维度表中日期类型属性的哪种数据类型,包括开始日期和结束日期?
【发布时间】:2019-10-11 06:23:58
【问题描述】:

我正在使用维度建模设计一个数据仓库。我已经阅读了 Kimbal & Ross 的大部分数据仓库工具包。我的问题是关于包含日期的维度表中的列。例如,下面是应用程序用户的表格:

CREATE TABLE user_dim (
   user_key BIGINT,  -- surrogate key
   user_id BIGINT,   -- natural key
   user_name VARCHAR(100),
   ...
   user_added_date DATE, -- type 0, date user added to the system
   ...
   -- Type-2 SCD administrative columns
   row_start_date DATE, -- first effective date for this row
   row_end_date DATE,   -- last effective date for this row, 9999-12-31 if current
   row_current_flag VARCHAR(10), -- current or expired
)

最后三个属性用于实现类型 2 渐变维度。参见 Kimbal 第 150-151 页。

问题 1:row_start_date 和 row_end_date 列的数据类型是否有最佳实践?类型可以是 DATE(如图所示)、STRING/VARCHAR/CHAR(“YYYY-MM-DD”),甚至是 BIGINT(日期维度的外键)。我认为行开始/结束日期不会有太多过滤,因此不需要日期维度的键。

问题2:“user_added_date”等维度属性的数据类型是否有最佳实践?我可以看到有人想要关于每个财政季度添加的用户的报告,因此使用日期维度的外键会很有帮助。除了必须从用户维度加入日期维度以显示属性之外,还有什么缺点吗?

如果重要的话,我正在使用 Amazon Redshift。

【问题讨论】:

    标签: date amazon-redshift data-warehouse


    【解决方案1】:

    对于问题 1:row_start_date 和 row_end_date 不是传入数据的一部分。正如您所提到的,它们是为 SCD 类型 2 目的而人工创建的,因此它们不应该具有 Date 维度的键。用户 dim 没有理由拥有 Date 维度的键。对于数据类型YYYY-MM-DD 应该没问题。

    对于问题 2:如果您有这样的要求,我建议您创建一个派生事实表(通常称为累积快照事实表)以保留像 user_added_date 这样的派生度量

    欲了解更多信息,请参阅https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/accumulating-snapshot-fact-table/

    【讨论】:

      【解决方案2】:

      问题 1:对于 SCD 的起止日期,我建议您使用时间戳。我的偏好是没有时区,并确保您所有的时间戳都是 UTC

      问题2:我总是用实际日期的逻辑键设置日期维度表。这样,您可以将任何日期(例如用户的开始日期)加入日期维度,以查找例如“会计月份”或日期维度之外的任何内容。但是您也可以在不加入日期维度的情况下看到日期,因为它很容易看到(存储为日期)

      对于 redshift(或任何柱状 MPP DBMS),最好进行一点反规范化。例如使用星型模式而不是雪花模式。这是因为 columnar 带来了效率,并且处理了无效率的连接(因为没有索引)

      【讨论】:

        猜你喜欢
        • 2019-07-06
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        • 2021-07-21
        • 1970-01-01
        • 2018-11-03
        • 2012-04-20
        • 2022-01-23
        相关资源
        最近更新 更多