首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生成999/99999尺寸查询的MDX操作符

生成999/99999尺寸查询的MDX操作符
EN

Stack Overflow用户
提问于 2015-02-02 10:24:17
回答 1查看 196关注 0票数 0

以下对“我的维度”的MDX查询将根据维度中的成员数返回999/99999值。

代码语言:javascript
运行
复制
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。

对多维数据集中的另一个维度应用相同的逻辑,如下所示:

代码语言:javascript
运行
复制
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表达式。指定了一个空表达式。

EN

回答 1

Stack Overflow用户

发布于 2015-02-02 22:30:22

这能让你感觉更接近你的期望吗?

代码语言:javascript
运行
复制
 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]

然后你可以合并:

代码语言:javascript
运行
复制
 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上做了一点测试

这是脚本中错误的简化版本:

代码语言:javascript
运行
复制
WITH 
  MEMBER [Measures].[x] AS 
    [Customer].[Customer].CurrentMember.Member_Key 
SELECT 
  {[Measures].[x]} ON 0
 ,[Customer].[Customer].CurrentMember ON 1
FROM [Adventure Works];

这将返回默认成员“所有客户”,我认为它将对应于您的9999?

如果我扩展到类似于我的第一个表达式,那么我们就有了以下内容:

代码语言:javascript
运行
复制
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];

它返回一个更好的结果,没有添加到注释中的错误。

如果我将第二个脚本简化为相当于第二个脚本,那么我有以下内容:

代码语言:javascript
运行
复制
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就不能工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28275528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档