我们有两个不同来源的数据:一些来自客户,一些来自不同的供应商。目前,我们将这些数据物理地“合并”成一个近百列、数万行且两个维度没有正式分离的海量表。因此,我们实际上不能多次使用该表。
我将把这个烂摊子重新设计成一个适当的、但很小的星型模式。
两个维度很明显。例如,其中之一是时间。
客户提供的数据提供了许多事实值。每个供应商可能(或可能不)提供符合相同维度的附加事实值。
这个事实数据都具有相同的粒度。它可以被称为“稀疏”,因为我们并不经常从所有供应商那里获得信息。
这是我的困境。
这是一个从不同来源填充的事实表(带有一些空值)吗?
或者这是n +1 个事实表——一个来自客户,另一个来自每个供应商?
每种设计都有优点和缺点。对于“合并”或“单独加载”之间的选择,我需要一些第二意见。
客户提供收入、成本、计数、重量和其他他们知道的关于交易结束的信息。
供应商一提供了一些关于一些交易的额外细节——权重、成本、持续时间。其他交易对供应商一没有任何价值。
供应商二提供了一些关于一些交易的额外细节——数量、持续时间、长度、外币汇率。其他交易对供应商二没有价值。
一些交易将有两个供应商。少数交易将没有供应商。
一张有空值的表?三张桌子?