【发布时间】:2012-02-26 12:13:31
【问题描述】:
我有一个客户维度和一个跟踪与客户的会话的事实表,它们具有以下列:
代码:
[DimClient]
----------
PK_ClientKey
ClientNumber
EmailAddress
Postcode
PostcodeLongitude
PostcodeLatitude
DateOfBirth
Gender *
Sexuality *
CulturalIdentity *
LanguageSpokenAtHome *
CountryOfBirth
UsualAccommodation *
LivingWith *
OccupationStatus *
HighestLevelOfSchooling *
RegistrationDate
LastLoginDate
Status
[FactSession]
-------------
PK_SessionKey
FK_ClientKey
...
我的第一个要求是在特定会话 (FactSession) 开始对客户的年龄进行分组,解决此问题的最佳方法是创建一个年龄组维度并在 FactSession 中创建一个外键 (FK_AgeGroupKey) 到 DimAgeGroup维度。
现在我认为最好用 *(上图)跟踪所有列。这些可能(尚未证明)与会话具有高度相关性。通读 DWH Toolkit 似乎是一个 Mini Dimension 来容纳所有 * 列以及 Age Group 最适合,所以我将以下结构放在一起:
代码:
[DimClient]
----------
PK_ClientKey
ClientNumber
...
Status
[DimDemographic]
-----------------
PK_DemographicKey
AgeGroup
Gender
Sexuality
...
HighestLevelOfSchooling
[FactSession]
-------------
PK_SessionKey
FK_ClientKey
FK_DemographicKey
DimDemographic 表需要使用 SCD 类型 2 才能跟踪随时间的变化。这会是满足我要求的最佳方法吗?
此外,我的客户维度上有 RegistrationDate 和 LastLoginDate 列,在客户注册但从未登录的情况下,放在 LastLoginDate 字段中的最佳值是多少? '1900-01-01' 或 NULL 之类的东西?
抱歉,这篇文章很长,但希望我已经提供了足够的信息提前谢谢!
【问题讨论】:
标签: sql-server data-modeling data-warehouse dimensions