我们正在做一个复杂的数据累积。我们的客户向我们发送了一些包含两个维度(时间和业务单位)的内容。时间大多是一年一个月。业务单位维度只有几个属性:一个名称,以及BU可以归属于报告和分析目的的几个类别。
他们发送给我们的东西包括一些当前的状态信息(日期和代码)。这些似乎是事实。他们还发送了一些表明与业务部门关系的信息(主要是附加代码)。同样,这些是业务部门和时间段所独有的。
最后,他们向我们发送了明显是附加事实的东西。它包括具有适当单位的货币和计数。
我是否应该将这些定性信息与单一事实表中的加性事实相混合?或者我应该从定量的东西(可以与总和一起使用)中分离定性的东西(只能用于计数)?
答案 0 :(得分:3)
如果数据既与添加事实直接相关,又不是你想要分组/排序/搜索的东西,那么把它放在事实表中是可以的。
请注意,事实表中的非附加数据会阻止汇总或将成为有损操作。
答案 1 :(得分:3)
如果它们是退化的,只会将事物放入事实表中(导致维度中的高基数/唯一性问题,其中维度与事实表的关系为1-1)。 Kimball建议避免使用事实(例如,唯一的订单号)来放置任何除退化维度以外的任何东西的诱惑。
你总是把这些放在Kimball所说的“垃圾”维度中。所有这些代码都可以简单地归结为垃圾维度。大多数日期会作为特定角色的日期维度的键进入事实表(通常使用YYYYMMDD形式的自然int键 - 我们不使用非身份无意义代理键的唯一时间之一)
我喜欢天真地将星视为所有事实,然后哪些列进入哪个维度只是方便地确定。一个人不应该将它们视为对应于特定的商业实体 - 记住,星形不是ERD风格的规范化OLTP数据库。
答案 2 :(得分:2)
Brad Wilson准确地描述了将它们添加到您的事实表中的风险。在过去,我已经将垃圾属性添加到我的事实表中,但后来才需要重构。
他们寄给我们的东西包括一些 当前的州信息(日期和时间) 码)。这些似乎是事实。他们 还发送一些信息 表征与...的关系 业务部门(主要是额外的 码)。同样,这些是独一无二的 业务单位和时间段。
日期有什么商业目的?另外,我建议你自己制作这些尺寸并准确描述它们。
进来的额外代码有多不稳定?如果您的事实表的粒度是日期和BU,为什么它们不能包含在BU维度中并被视为缓慢变化的属性?
如果没有更多详细信息,我无法提出明确的建议,但这些问题将是我问自己的第一个问题。