我的维度的以下MDX查询返回值999/99999,具体取决于维度中的成员数。
WITH MEMBER [Measures].[MaxKey] AS
MAX(
[Fare Media].[Fare Media Id].ALLMEMBERS
, [Fare Media].[Fare Media Id].currentmember.MEMBER_KEY)
SELECT
{[Measures].[MaxKey]} ON 0
FROM
[SPCube]
这给了我99999的结果,但实际上我的维度中的值大于此值,成员总数为640,000。
将相同的逻辑应用于多维数据集中的另一个维度,如下所示:
WITH MEMBER [Measures].[MaxKey] AS
MAX(
[Sales Period].[Sales Period Id].ALLMEMBERS
, [Sales Period].[Sales Period Id].currentmember.MEMBER_KEY)
SELECT
{[Measures].[MaxKey]} ON 0
FROM
[SPCube]
我获得的答案是999作为最大值,但总成员是675,其中我的Id大于999。
我尝试应用StrToValue函数,但后来收到错误说:
预计会有MDX表达。指定了一个空表达式。
答案 0 :(得分:1)
这是否会让您更接近您的期望?
WITH
SET [X] AS {[Fare Media].[Fare Media Id].MEMBERS}
MEMBER [Measures].[KeyMeasure] AS
[Fare Media].[Fare Media Id].currentmember.MEMBER_KEY
MEMBER [Measures].[MaxKey] AS
MAX([X],[Measures].[KeyMeasure])
SELECT
[Measures].[MaxKey] ON 0
FROM
[dsvAfmsDWH_ServiceProviderCube]
然后你可以合并:
WITH
SET [X] AS {[Fare Media].[Fare Media Id].MEMBERS}
MEMBER [Measures].[MaxKey] AS
MAX([X],[Fare Media].[Fare Media Id].currentmember.MEMBER_KEY)
SELECT
[Measures].[MaxKey] ON 0
FROM
[dsvAfmsDWH_ServiceProviderCube]
set
X在脚本的其余部分之前完成,因此将其拆分应该会有所帮助。自定义集始终在自定义度量之前进行评估,因此度量集现在知道要使用的集合。
修改
由于我无法看到你的立方体,我在AdvWrks
这是脚本中错误的简化版本:
WITH
MEMBER [Measures].[x] AS
[Customer].[Customer].CurrentMember.Member_Key
SELECT
{[Measures].[x]} ON 0
,[Customer].[Customer].CurrentMember ON 1
FROM [Adventure Works];
这将返回默认成员"所有客户"我认为这对应于你的9999?
如果我然后扩展到类似我的第一个表达式,那么我们就有了这个:
WITH
SET [s] AS
[Customer].[Customer].MEMBERS
MEMBER [Measures].[KeyMeasure] AS
[Customer].[Customer].CurrentMember.Member_Key
MEMBER [Measures].[maxX] AS
Max
(
[s]
,[Measures].[KeyMeasure]
)
SELECT
[Measures].[maxX] ON 0
FROM [Adventure Works];
返回更好的结果,没有您添加到评论中的错误。
如果我简化到相当于我的第二个脚本,我有以下内容:
WITH
SET [s] AS {[Customer].[Customer].MEMBERS}
MEMBER [Measures].[maxX] AS
Max
(
[s]
,[Customer].[Customer].CurrentMember.Member_Key
)
SELECT
[Measures].[maxX] ON 0
FROM [Adventure Works];
结果没有问题:
重要强>
什么数据类型是层次结构[Fare Media].[Fare Media Id]
的关键属性?如果它不是数字,则MAX
将无效。