我可以将非度量代码与我的事实表中的度量相混合吗?

时间:2008-09-29 01:58:01

标签: database database-design data-warehouse

我们正在做一个复杂的数据累积。我们的客户向我们发送了一些包含两个维度(时间和业务单位)的内容。时间大多是一年一个月。业务单位维度只有几个属性:一个名称,以及BU可以归属于报告和分析目的的几个类别。

他们发送给我们的东西包括一些当前的状态信息(日期和代码)。这些似乎是事实。他们还发送了一些表明与业务部门关系的信息(主要是附加代码)。同样,这些是业务部门和时间段所独有的。

最后,他们向我们发送了明显是附加事实的东西。它包括具有适当单位的货币和计数。

我是否应该将这些定性信息与单一事实表中的加性事实相混合?或者我应该从定量的东西(可以与总和一起使用)中分离定性的东西(只能用于计数)?

3 个答案:

答案 0 :(得分:3)

如果数据既与添加事实直接相关,又不是你想要分组/排序/搜索的东西,那么把它放在事实表中是可以的。

请注意,事实表中的非附加数据会阻止汇总或将成为有损操作。

答案 1 :(得分:3)

如果它们是退化的,只会将事物放入事实表中(导致维度中的高基数/唯一性问题,其中维度与事实表的关系为1-1)。 Kimball建议避免使用事实(例如,唯一的订单号)来放置任何除退化维度以外的任何东西的诱惑。

你总是把这些放在Kimball所说的“垃圾”维度中。所有这些代码都可以简单地归结为垃圾维度。大多数日期会作为特定角色的日期维度的键进入事实表(通常使用YYYYMMDD形式的自然int键 - 我们不使用非身份无意义代理键的唯一时间之一)

我喜欢天真地将星视为所有事实,然后哪些列进入哪个维度只是方便地确定。一个人不应该将它们视为对应于特定的商业实体 - 记住,星形不是ERD风格的规范化OLTP数据库。

答案 2 :(得分:2)

Brad Wilson准确地描述了将它们添加到您的事实表中的风险。在过去,我已经将垃圾属性添加到我的事实表中,但后来才需要重构。

  

他们寄给我们的东西包括一些   当前的州信息(日期和时间)   码)。这些似乎是事实。他们   还发送一些信息   表征与...的关系   业务部门(主要是额外的   码)。同样,这些是独一无二的   业务单位和时间段。

日期有什么商业目的?另外,我建议你自己制作这些尺寸并准确描述它们。

进来的额外代码有多不稳定?如果您的事实表的粒度是日期和BU,为什么它们不能包含在BU维度中并被视为缓慢变化的属性?

如果没有更多详细信息,我无法提出明确的建议,但这些问题将是我问自己的第一个问题。