在SSAS中使用友好的属性名称实现角色扮演维度?

时间:2011-09-07 20:45:39

标签: ssas data-warehouse

我有一个事实表,它将我的日期维度引用为表格日期和财务日期。因此,日期维度是角色扮演两个不同的角色。这样可以正常工作,除了我无法角色扮演Year或Month列的名称。我希望它分别是Form Year和Finance Year列,或者能够设置属性描述,以便我的客户端应用程序可以使用该属性显示为工具提示/标题。

问题是,在单个支点报告中,用户将有两个不同的年份,并且不清楚哪个是哪个(他们看到2010年和2009年,不知道哪个是表格年,哪个是财务没有我做一些hackish代码来查看维度名称是什么。

换句话说,[表格日期]。[年份]和[财务日期]。[年]就单元格而言都是“年”属性。当您在SSAS中更改该属性的描述或名称时,您将为两个角色扮演维度更改它。您可以自定义角色扮演维度的名称,但遗憾的是不是属性。

到目前为止我的选择:

- 在数据仓库DB中,为每个用例创建日期维度表的副本,以便我可以自定义列的属性名称/描述。这为我创造了更多的维护/工作,使这些副本保持一致。

- 在数据仓库DB中,为每个用例在日期维度表的顶部创建一个视图。这里的问题是我无法在维度视图和事实表之间创建FK关系。我担心这会让我比其价值更令人头疼,因为看起来很多SSAS / SSRS / Powerpivot和其他工具确实依赖那些FK关系来帮助它确定数据仓库的结构。

在同一个表中创建Year列的副本,以便每个副本在SSAS中具体化为自己的属性,因此可以拥有自己的名称和描述属性。没有玩这个,看看它是否会像我想象的那样工作,但我想我只会根据同一个表创建多个维度,并且在每种情况下只包含一个Year列,例如表单年份在表单日期维度中。 (也可以使用计算列而不是列的副本。)这样做的缺点是它使维度更加混乱。我已经有很多属性来支持各种层次结构,这是正常的,但现在我正在为单个属性混合多列,只是为了支持属性的标题/描述不同,即使属性值都是相同。

在Kimball Group Data Warehouse Toolkit一书中,它通过说

来描述这种情况
  

这些日期维度副本声明为语义不同   视图,例如“首次购买日期”[具有类似“日期”的属性   第一个购买年份“而不仅仅是”年份“]尺寸表   独特的列标签。

本书非常符合概念和技术,并不涉及实现细节。某些地方的措辞意味着使用视图,而在其他地方暗示使用物理表副本。如上所述,两者都有足够大的缺点,因为我已经预见到了令人头疼的问题,所以我不敢冒险前往任何一条道路。

您认为我应该如何实现日期维度的多个角色,以便我可以为维度参与的每个角色/用例自定义属性的说明/名称属性? < / p>

我还会有其他引用相同维度的事实表,因此会有类似的问题,所以不只是让一个事实表引用维度两次的问题。

2 个答案:

答案 0 :(得分:7)

根据您非常详细且经过深思熟虑的帖子,我建议您在Analysis Services项目的DSV中创建一个额外的日期表。它将是针对数据仓库中日期维度的named_query。在DSV中,您可以为其提供“逻辑主键”,并将其与您喜欢的任何事实表相关联。这将允许您创建2个单独的“立方体”维度,并在两者之间以不同方式命名属性。

答案 1 :(得分:0)

如果您使用的是Excel 2010,则只需右键单击,然后选择field settings并提供自定义名称,即可重命名字段。