1

首先,这是一个非常非常简单的数据仓库,我只是为了提出以下具体问题而制作的。

设想:

我有一个事实表 FactSales,以及 2 个维度:DimShop 和 DimProduct,它们都相互分离并直接连接到事实表。有些商店可以销售选定的产品,反之亦然,有些产品可以在特定商店销售。这给了我们多对多的关系。问题是当我尝试切片我的立方体时,我得到了商店和产品之间的所有组合。

问题:

如何在具有多对多关系的 SSAS 中的两个分离维度之间创建层次结构?我尝试使用 brigde 表,但无法在 SSAS 中配置层次结构。甚至可能吗?

4

2 回答 2

1

如果您试图报告“可能发生的事情”而不是“发生的事情”,则需要一个单独的事实表和多维数据集来表示产品与可以销售产品的商店之间的关系。它不是真正的层次结构,因为它是多对多的。

一个简单的交叉引用事实应该没问题:

FACT_PRODUCT_SHOP
ProductID
ShopID

那么在做报表时,想知道哪些产品允许在哪些商店销售,就可以使用这个事实表。销售事实仅显示“实际发生的情况”。

您甚至可以将此事实修改为您的库存事实表,只需添加日期和“库存量”和“订单量”等。

于 2013-04-09T13:15:46.103 回答
1

可以实现这样的设计,但它可能表现不佳。基本上,您需要一个替代键,而不是事实表中的产品和商店键。这把钥匙将是产品和商店的独特组合。这需要在 ETL 中准备好。在名为“Shops and Products”的新维度中,在此键之上,您可以在同一维度中创建 2 个层次结构 Product 和 Shop。

此外,您还可以根据要求创建不自然的层次结构。但由于它是一个不自然的层次结构,它可能表现不佳。因此,除了产品和商店层次结构之外,您还可以提供以下非自然层次结构:商店 -> 产品、产品 -> 商店。

于 2013-04-16T11:11:58.160 回答