5

SSAS中的问题给大家。我试图在 OLAP SSAS 多维数据集环境中定义一对多关系。但是,我在定义主键时遇到了问题。示例表如下。前 3 个表之间的关系很容易定义(TradeDate、NYMEX Trades 和 NYMEX Contract)。但是,我的目标是在 NYMEX 合约和模型合约之间建立一对多的关系。换言之,来自 1 份 NYMEX 合约的数据将在模型合约数据集中多次使用。

表:交易日期

  • 交易日 (PK)
  • 月等...

表:NYMEX 交易(无 PK)

  • 合同名称
  • 交易日
  • 价格

表:纽约商品交易所合约

  • 合同名称 (PK)

表:合同范本

  • 模型合同名称 (PK)
  • 合同名称

我需要在 NYMEX 合同和模型合同之间创建一对多的关系......但是我的 PK 在模型合同中的错误列上。有任何想法吗?

为了帮助澄清 - 我正在尝试定义一个维度 - >维度关系。表“模型合同”是一个查找表。

4

2 回答 2

6

您所拥有的是事实数据(交易)和维度数据(模型合同)之间多对多关系的示例。看看这个:维度关系。您的案例是一种罕见的案例,因为模型合同只能分配给一个合同名称,但它仍然属于多对多案例。这是使用维度建模中的桥接表来处理的,在 SSAS 中,他们称之为中间事实表。一旦你有这样的 DSV 设置: 在此处输入图像描述

然后,您将在项目中创建维度,然后为 ModelContract 创建一个度量值组,以便能够将其用作中间事实表。然后,您将为选择多对多关系的多维数据集设置维度使用:

在此处输入图像描述 在此处输入图像描述

作为旁注,您应该始终为您的维度使用代理键。它们有几个优点,例如您的事实表中的存储空间、渐变维度、源系统解耦、...

于 2012-05-01T19:17:15.423 回答
0

你需要在这里做二维。

首先,您不应将日期添加为整个维度的一部分。日期本身应该作为一个维度存在。

第二,如我所见,你应该加入NYMEX Contract 和Model Contract 并做一个维度。您可以使用命名查询将它们连接到 DSV 上或创建 SQL 视图,或者您可以在 DSV 上将两个表分开并在维度上连接它们。

第三,NYMEX Trades 是您的事实表。一旦您创建了先前的两个维度,您应该将它们添加到多维数据集并使用字段 ContractName 和 TradeDate 将它们与维度关系选项卡上的事实表连接起来

于 2012-05-01T08:18:42.837 回答