我正在学习BI开发课程,并且为了巩固到目前为止所学的所有技能,我开始了一个动手项目(DWH设计,ETL应用程序,数据建模等)。
在DWH设计期间,我遇到了一个难题,因此,我希望能从经验丰富的专家那里获得一些最佳实践。
有2个尺寸表:
DimWeather-存储天气数据的表。每行是一天。当然,主键是相应日期的日期。
DimDate-一个简单的日历表。在这种情况下,主键也是一个日期。
两个表都连接到存储自行车租赁日志的事实表。
按照DWH设计最佳实践,我需要创建一个代理键-我们将两个表都称为DateKey。
我想知道,在这种情况下如何执行它?
据我所知,每个表的代理键必须唯一,但是另一方面,该代理键具有相同的逻辑。
我很高兴听到你会做什么?
非常感谢您投入时间和精力
我认为DimWeather应该是一个事实表,如果它存储有关特定日期(温度,气压,湿度等)上天气的度量和数值数据,并且该表中的dateID应该引用“常规” DimDate表。
根据定义,维表应包含不同的属性/层次结构,以便将事实表中的度量置于特定的上下文(时间,位置,人口统计等)中。在您的方案中,您将气象指标放在特定的上下文中(即2020年2月在纽约的AVG温度; 2019年12月在洛杉矶的MAX湿度等,具体取决于天气表的结构)。
[除此之外,替代键只是一个无意义的值(通常具有标识功能的整数值,以确保键的唯一性),DimDate维度除外,您可以根据日期创建整数值来赋予替代键含义值(例如:“ 2020-03-11”为20200311)。当然,不禁止将源主键用作维表中的键,但这是一种不好的做法,因为在不同的源系统中可能会具有相同的值,并且在将数据加载到DWH中时可能会引起问题。] >