1

我的数据仓库中有这个结构

DimCustomer
   -id  (pk)
   -Name
   -Country
   -datestart
   -dateend

FactBalance
   -idCustomer (pk) (fk [DimCustomer.id])
   -idTime (pk) (fk [DimDate.DateSK])
   -Balance

当国家发生变化时,客户维度有多行,而 FactBalance 在一段时间内每天都有多行。

以下是一些示例数据:

DimCustomer

1  JoeBloggs England  2012-01-01   2012-01-04
2  JoeBloggs France   2012-01-05   NULL

FactBalance

1  20120101 12334.0
1  20120102 12334.0
1  20120103 12334.0
1  20120104 12334.0
2  20120105 12334.0
2  20120106 12334.0

我遇到的问题是,当我在浏览器中查看我的多维数据集并使用 DimCustomer.Country 和 FactBalance.Balance(聚合设置为 LastNonNull)时,它显示了两个结果

 England  12334.0
 France   12334.0

显然,SCD 中每个客户条目的最后一个非空值,但我如何设置维度以便它只显示整个客户的最后一个?

4

1 回答 1

0

我会将业务密钥(我认为在您的示例中为名称)添加到事实(我会将其添加为事实表中的列,或者您可以通过 SQL 视图)。

然后,我将构建 Customer 维度的替代版本,它只显示当前记录并使用 Business Key 作为它的键。

最后,我会将新维度添加到多维数据集,并使用业务密钥将其与事实相关联。

于 2013-05-02T04:24:55.937 回答