在我的SSAS多维数据集中,我有一个带有属性A和B的维度,我希望两者都以第三个属性C指定的排序顺序显示。如果我将C指定为A的OrderByAttribute并重新处理多维数据集,那么A正确排序。
如果我然后将C指定为B的OrderByAttribute并重新处理多维数据集,则A继续正确排序,但B不会。 B的值以看似任意的顺序显示。我已经三重检查了A和B的配置方式没有区别。
是否有一些概念上的理由说明为什么单个维度中的两个属性不能同时按相同的第三个属性排序?
答案 0 :(得分:1)
我现在找到了问题,但仍在寻找解决方案。
如评论中所述,dsv有表CM和DisplayOrder,它们之间有两种关系 - 从CM.A到DisplayOrder.primarykey,从CM.B到DisplayOrder.primarykey。 SSAS使用查询构造属性A:
select distinct CM.A, DisplayOrder.SortOrder
from
(<named query for CM>) as CM,
(<named query for DisplayOrder>) as DisplayOrder
where CM.A = DisplayOrder.primarykey
这是正确的,并且工作正常。但是当SSAS构造属性B时,它使用查询:
select distinct CM.B, DisplayOrder.SortOrder
from
(<named query for CM>) as CM,
(<named query for DisplayOrder>) as DisplayOrder
where CM.A = DisplayOrder.primarykey
请注意,where
子句使用A而不是B来链接两个表。
总而言之,当dsv有两个表,它们之间有两个关系时,SSAS生成的用于实现OrderByAttribute的查询中的连接总是使用其中一个关系而忽略另一个。
知道为什么,或者某个地方有可能遗漏的财产?