我在一家制造公司工作,并且正在处理既可以是零件(制造产品的输入)也可以是制造产品(公司随后出售的最终输出)的事实数据。我有零件和产品的单独尺寸表,因为属性不同,它们实际上是两种不同的东西。
对于事实数据,所有属性都是相同的,只是一条记录指向一个零件,另一条记录指向一个产品。一条记录不能同时指向两者。
有 2 个单独的事实表,或者有 1 个带有 PartKey 和 ProductKey 的事实表,其中一个总是指向不适用维度表中的 -1 或未知记录是否有意义?
在此先感谢您的帮助。
我在一家制造公司工作,并且正在处理既可以是零件(制造产品的输入)也可以是制造产品(公司随后出售的最终输出)的事实数据。我有零件和产品的单独尺寸表,因为属性不同,它们实际上是两种不同的东西。
对于事实数据,所有属性都是相同的,只是一条记录指向一个零件,另一条记录指向一个产品。一条记录不能同时指向两者。
有 2 个单独的事实表,或者有 1 个带有 PartKey 和 ProductKey 的事实表,其中一个总是指向不适用维度表中的 -1 或未知记录是否有意义?
在此先感谢您的帮助。
您应该有 2 个事实表。
由于 Part 和 Product 是不同的对象,事实表中的键集是不一样的。从形式上讲,它们具有不同的纹理。
例如,假设您的维度是日期、工厂、供应商、零件、产品、客户。那么事实“输入”颗粒可能是:
而事实输出颗粒可能是:
这些事实表有 2 个共享维度(日期和工厂)和 2 个唯一维度(供应商与客户、零件与产品)。这证实了它们的粒度是不同的,不应该将它们强行放在一个表中——表粒度的一致性是维度建模的关键要求。
您将能够跨共享维度一起分析零件和产品,并单独对它们中的每一个进行更专业的分析。随着时间的推移,您将可以灵活地添加更多共享和独特的维度,而无需使用诡计。