【发布时间】: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