设置相对维度?

时间:2011-09-26 18:17:31

标签: sql-server sql-server-2005 ssas olap cube

我有一个非常简单的场景,但是一个非常大的数据集(使用下面更简单的例子来说明我的问题)。

假设我有一个由国家表(事实)组成的立方体,其中包含一个名为Continent的维度。

enter image description here

有了这个,我可以按大陆汇总国家数据。

但是,让我们说每个国家都有一个城市:

enter image description here

这里我不能直接将Continent维度分配给city,因为city没有continent属性。这是一个简化的示例,在填充城市事实表时加入国家/地区信息将是微不足道的。但是,我的应用程序使用的是一个非常大的数据集,需要很长时间才能查询,我试图避免在Country上进行连接以获取大陆ID。我需要能够编写简单的MDX查询来按国家或城市计算人口数量。

如何设置我的多维数据集,以便可以在城市和大陆之间设置上述场景中的维度关系,而无需向城市添加continentID?

更新

正如布莱恩所说,我可以让国家成为一个维度。这就是我最初的做法,也许我没有正确地做到这一点,但它是一个性能打击因为:上面的例子很简单,但在我的情况下,我有15个属性(如上面的大陆),我需要聚合我的数据。如果我创建一个国家维度,并将这15个属性指定为维度属性,每次我处理我的多维数据集时,它将执行“从国家/地区选择不同的大陆”x15(每个属性一次),以便获得不同的大陆列表。如果Country表是巨大的(在我的情况下它是由许多大表组成的视图),那么每个维度获取不同值列表需要很长时间。

我的上述尝试只是一种解决此问题的方法,并且每个维度都有单独的表格,我可以轻松管理。我唯一的问题是我有子视图需要在这些属性上聚合,而子表上不存在属性,需要从“国家/地区”视图等查找。

1 个答案:

答案 0 :(得分:0)

看起来并不像维度模型那么好。

解决问题的乐队援助将是国家维度。国家和城市都是共同的。

我确信这个问题比这复杂得多,但你列举了一个非常简单的问题。

AFAIK,没有任何数量的MDX(或任何其他技术)可以克服不良的设计问题。维度模型是数据仓库性能的基础。及早做到这一点非常重要。