reporting-services - SSRS mdx 报告 : calculated member with maximum rank value for passes multivalue parameter

标签 reporting-services parameters mdx olap member

这是一个对 MS OLAP 立方体的简单 mdx 查询,它输出 3 个城市的销售步骤统计信息以及每个销售阶段的排名,效果很好:

WITH 
MEMBER [Measures].[rank] AS 

    case [Sales_step].currentmember.member_caption         
    when 'Contacts' then 1    
    when 'Clients' then 2
    when 'Funded' then 3 
    else 0 end

SELECT {[Measures].[rank],
        [Measures].[qnt]} ON COLUMNS,

NON EMPTY     
       crossjoin({[City].CHILDREN},                            
                 {[Sales_step].CHILDREN}) ON ROWS 

FROM ( SELECT ( STRTOSET(@[Sales_step], CONSTRAINED) ) ON COLUMNS  
FROM [SALES_PIPE])

输出为:

enter image description here

现在我想为每个城市建立总计,无需单独的销售步骤,但仅显示最大存档销售阶段排名。结果必须是:

enter image description here

我尝试使用以下代码来执行此操作:

WITH 
MEMBER [Measures].[rank max] AS 

    case [Sales_step].currentmember.member_caption         
    when 'Contacts' then 1    
    when 'Clients' then 2
    when 'Funded' then 3 
    else 0 end

SELECT {[Measures].[rank max],
        [Measures].[qnt]} ON COLUMNS,

NON EMPTY [City].CHILDREN ON ROWS 

FROM ( SELECT ( STRTOSET(@[Sales_step], CONSTRAINED) ) ON COLUMNS  
FROM [SALES_PIPE])

它不会生成错误,但会为计算成员 [Measures].[rank max] 返回空值:

enter image description here

仅当我将一个值传递给 @[Sales_step] 参数时,它才起作用。虽然我需要运行多值参数。当我更改 case 子句中的这段代码时:

case [Sales_step].currentmember.member_caption 

至:

case strtomember(@[Sales_step]).member_caption

它抛出了一个错误“STRTOMEMBER 函数需要第 1 个参数的成员表达式。使用了元组集表达式”。当我使用这个时,一个参数和多个参数都会发生错误:

case strtoset(@[Sales_step]).currentmember.member_caption

我需要如何修改计算成员 [Measures].[rank max] 以获得传递的 @[Sales_step] 多值参数的最大排名的所需结果?

最佳答案

我想知道这样的东西是否有效:

WITH 
SET [S] AS
    NonEmpty(
       EXISTING [Sales_step].CHILDREN,
       ([City].CURRENTMEMBER, [Measures].[qnt])   //<<I think that [City].CURRENTMEMBER is probably redundant in this tuple
    )
MEMBER [Mx] AS   
    CASE         
      WHEN INTERSECT([S], {[Sales_step].[Funded]}).COUNT = 1 THEN 3 
      WHEN INTERSECT([S], {[Sales_step].[Clients]}).COUNT = 1 THEN 2 
      WHEN INTERSECT([S], {[Sales_step].[Contacts]}).COUNT = 1 THEN 1
    END 
...
...

关于reporting-services - SSRS mdx 报告 : calculated member with maximum rank value for passes multivalue parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36317163/

相关文章:

reporting-services - 连接到SSRS中的数据源时出错

java - 如何将类作为函数参数传递

Node.js 中的 Javascript 使用具有不同签名的函数

mdx - 有没有更好的方法来计算 iccube 中 MDX 的移动平均值?

sql - 如何更改列的格式以允许报表服务中的 excel 函数

sql - 跟踪存储过程/SSIS/SSRS 中的 SQL 依赖关系

vb.net - SSRS URL 编码

objective-c - 在 Objective C 中将可变长度的 int 数组作为函数参数传递

mdx - `Intersect({}, ....`的目的是什么

asp.net - Mdx 字符串生成器