对于你们的SSAS问题。我试图在OLAP SSAS多维数据集环境中定义一对多关系。但是,我遇到了定义主键的问题。示例表如下。前3个表之间的关系很容易定义(TradeDate,NYMEX Trades& NYMEX Contract)。但是,我的目标是在NYMEX合同和模型合同之间建立一对多的关系。换句话说,来自1 NYMEX Contract的数据将在Model Contract数据集中多次使用。
表:TradeDate
表:NYMEX交易(无PK)
表:NYMEX合约
表:模型合同
我需要在NYMEX合约和模型合同之间建立一对多的关系...但是我的PK在模型合同中的错误列上。有什么想法吗?
为了帮助澄清 - 我正在尝试定义维度 - >维度关系。表“模型合同”是一个查找表。
答案 0 :(得分:6)
您所拥有的是您的事实数据(交易)与维度数据(模型合约)之间的多对多关系的示例。看看这个:dimension relationship 。您的情况很少见,因为模型合同只能分配给一个合同名称,但仍然属于多对多案例。这是在维度建模中使用桥接表来处理的,在SSAS中它们称之为中间事实表。一旦你有这样的DSV设置:
然后,您将在项目中创建维度,然后为ModelContract创建一个度量值组,以便能够将其用作中间事实表。然后,您将为多维数据集设置维度用法,选择多对多关系:
作为旁注,您应始终使用代理键作为尺寸。它们有几个优点,例如事实表中的存储空间,缓慢变化的尺寸,源系统解耦,......
答案 1 :(得分:0)
你需要在这里做2个维度。
首先,您不应将日期添加为整个维度的一部分。日期本身应作为维度存在。
第二,正如我所见,你应该加入NYMEX合约和模型合约并制作一个维度。您可以使用命名查询在DSV上加入它们或创建SQL视图,也可以在DSV上将两个表分开并将它们连接到维度上。
第三,NYMEX Trades是您的事实表。一旦创建了两个先前的维度,就应该将它们添加到多维数据集,并使用字段ContractName和TradeDate
将它们与维度关系选项卡上的事实表连接起来。