1

大卫,我能否要求澄清一下您在此答案中对加入的看法

当您说“您不能使用关系存储的连接将一个条目连接到多个条目”时,这是否意味着任何方向?

例如商店 1:

| Key1 | Measure1 |

商店 2:

| Key 1 | SomeId1 | Measure2 | Measure3 |
| Key 1 | SomeId2 | Measure4 | Measure4 |

那么是不是不能通过将Store 2的join放到Store 1来加入这两个store呢?

如果不是,那么您是说管理此问题的唯一方法是复制 Store 1 中的条目吗?例如:

Store 1
| Key 1 | SomeId1 | Measure1 | Measure2 | Measure3 |
| Key 1 | SomeId2 | Measure1 | Measure4 | Measure4 |
4

1 回答 1

1

一对多的方向很重要:这取决于哪个商店是“父”商店。

关系存储包括“ActivePivot 存储”的概念,它是您的主要存储(您的架构基于该存储)。然后,该商店可以连接到一个或多个商店,给定一组关键字段,为简单起见,我们将其称为“子”商店。这些子商店中的每一个最终都可以与其他商店连接,依此类推(您可以用有向图表示它)。

要尊重的主要规则是,您永远不应该将“父”商店条目解析为多个“子”商店条目(我相信您也不应该有任何循环关系)。

关系存储背后的简化想法(从 RS 1.5.x / AP 4.4.x 开始)是,当一个条目被提交到“ActivePivot Store”时,从 ActivePivot Store 开始,它将递归地按顺序解析连接在每个加入的商店中检索最多一个条目。根据您的架构定义,这些条目将用于填充事实,然后再将其插入多维数据集。

如果在多个条目中解析连接结果,则 AP 将无法选择使用哪个条目来填充事实,并将引发异常。

回到您的示例,只有在 Store 2 是您的 ActivePivot Store 或 Store 1 的“父级”(APStore->...->Store2->Store1)的情况下,您才可以在 Store 1 和 Store 2 之间进行连接,这似乎是你的情况。

如果不是(Store1->Store2),那么您将不得不复制 Store 1 的条目,以确保它在解析连接时始终最多只能找到一个条目。商店 1 将如下所示:

| Key 1 | SomeId1 | Measure1 
| Key 1 | SomeId2 | Measure1 

然后,您与 Store 2 的连接将在“Key,SomeId”字段上完成,而不仅仅是“Key”,这将确保您在解析 Store1->Store2 时只找到一个条目

于 2013-04-09T16:29:25.797 回答