0

我正在使用 SQL Server 分析服务。

我有一个经过计算的成员,目前,它只是这样做:

[MyDimension].[MyOnlyHierarchy].CurrentMember.Properties("MEMBER_UNIQUE_NAME")

之前,我刚刚写过[MyDimension].[MyOnlyHierarchy].CurrentMember.UniqueName。无论如何,它们应该是相同的。

现在,我使用 SQL Profiler 来获取我的应用程序问题的查询。对于一个简单的计算成员,[MyDimension].[MyOnlyHierarchy]它只是对不同的成员求和,比如 ID 为 401 和 402,我得到以下结果:

[MyDimension].[MyOnlyHierarchy].&[401][MyDimension].[MyOnlyHierarchy].&[402]

换句话说,就好像 AS 评估基础成员并连接结果,而不是给我计算成员的唯一名称......

对我来说真正奇怪的是,当我接受原始查询时,并在前面加上以下内容:

WITH MEMBER [Measures].[GiveMeCalculatedMemberUniqueName]
AS
(
[MyDimension].[MyOnlyHierarchy].CurrentMember.Properties("MEMBER_UNIQUE_NAME")
)

...查询的其余部分

我使用第二个措施得到了正确的结果!上下文是相同的(至少对我而言)。一切都是一样的......但是在项目文件中声明的度量给出的结果与这个内联计算成员不同。

这里发生了什么?请注意,我已经重新部署了 10000 次,并且我已经检查了服务器上多维数据集中的实际定义以及所有内容。这对我来说没有意义。

4

2 回答 2

1

根据求解顺序评估计算。可能是因为你把它移了下来,它是解决顺序应该如何工作的,它给了你正确的结果。我在这里有一个关于解决订单的小博客,但互联网上还有更多文章。

高温高压

于 2012-10-25T12:15:36.447 回答
0

有趣...我已经坐了大约 2-3 个小时,探索每一个想法;然后,在我发布这个问题后,我决定再尝试一件事:

将计算成员定义移动到项目中计算成员脚本文件的底部。

这现在给出了正确的结果。

于 2012-10-25T12:09:06.610 回答