我们确实有很多客户 - 其中大多数是人,但其中一些是公司。这两组都有相同的事实,但它们的维度属性不同(样本):
Person
FirstName
LastName
BirthDate
Sex
Region
City
Company
Name
RegistrationNumber
Region
City
将人和公司纳入一个维度是否是个好主意?
Customers
FirstName
LastName
BirthDate
Sex
Name
RegistrationNumber
Type (Person,Company)
值得一提的是,也有自雇客户 - 在这种情况下,他们拥有人和公司的所有属性。
如果我使用两个维度,它将使所有分析内容更难,因为大多数时候我对这两个组感兴趣。另一方面,如果我只使用一个维度,则会有很多默认值。我已经检查了“数据仓库工具包”,但没有找到相关信息。
我的问题 - 我应该创建两个表,一个表还是使用完全不同的方法来设计数据仓库中的客户维度?
答案 0 :(得分:4)
将人和公司纳入一个维度是否是个好主意?
在数据仓库中,是的。信息不会更新,您不关心空列或默认列,查询的简便性(速度)更重要。
在操作数据库中规范化数据的一个原因是消除更新异常的可能性。当数据存储在多个位置时,可以在一个地方更新,而不是在另一个地方更新。
答案 1 :(得分:0)
我的理由是你解释的场景,我们可以维护两个维度,并且可以在Fact中包含两个键。
事实可能包含PERSON_KEY和CUSTOMER_KEY。所以,如果它是一个人,PERSON_KEY可以是-1,或者如果它是另一种方式,COMPANY_KEY可以是-1。如果需要将人员或公司详细信息用于系统内的某些其他目的,则可以考虑这一点。我认为维度意味着可能达到精细程度。