不同维度类型的相同事实

Posted

技术标签:

【中文标题】不同维度类型的相同事实【英文标题】:Same fact for different dimension types 【发布时间】:2018-08-16 20:23:11 【问题描述】:

我在一家制造公司工作,我正在处理事实数据,这些数据既可以用于零件(制造产品的输入),也可以用于制造产品(公司随后出售的最终输出)。我对零件和产品有单独的尺寸表,因为属性不同,它们实际上是两种不同的东西。

对于事实数据,所有属性都是相同的,只是一条记录指向一个零件,另一条记录指向一个产品。一条记录不能同时指向两者。

拥有 2 个单独的事实表是否有意义,或者拥有 1 个具有 PartKey 和 ProductKey 的事实表,其中一个将始终指向不适用维度表中的 -1 或未知记录?

提前感谢您的帮助。

【问题讨论】:

“对于事实数据,所有属性都相同”。这感觉像是一个建模错误。不同的东西应该有不同的属性。也许属性是通用命名的,但在与零件或产品关联时意味着不同的含义? 【参考方案1】:

您应该有 2 个事实表。

由于 Part 和 Product 是不同的对象,事实表中的键集是不一样的。从形式上讲,它们的粒度不同。

例如,假设您的维度是日期、工厂、供应商、零件、产品、客户。那么事实“输入”颗粒可能是:

日期 植物 供应商 部分

而事实输出颗粒可能是:

日期 植物 产品 客户

这些事实表有 2 个共享维度(日期和工厂)和 2 个唯一维度(供应商与客户、零件与产品)。这证实了它们的粒度是不同的,不应将它们强行放在一个表中——表粒度的一致性是维度建模的关键要求。

您将能够跨共享维度一起分析零件和产品,还可以单独对每个零件和产品进行更专业的分析。随着时间的推移,您将可以灵活地添加更多共享和独特的维度,而无需使用诡计。

【讨论】:

以上是关于不同维度类型的相同事实的主要内容,如果未能解决你的问题,请参考以下文章

处理地址维度并在多个事实中扮演角色

数据仓库中的交叉引用事实和维度

具有不同级别日期维度数据作为日期维度键的事实表

将一个维度加入具有不同粒度的多个事实表

事实表与维度表

事实表 和 维度表