【问题标题】:SSRS mdx report: dimenstion on columns outputs nulls if not selected on rows alsoSSRS mdx 报告:如果未在行上选择,列上的维度也会输出空值
【发布时间】:2015-07-27 08:19:29
【问题描述】:

(此问题继续线程"SSRS mdx report: use dimension on columns",由@whytheq回答)

这个正确的代码是在前面的线程中构建的:

WITH 
MEMBER [Measures].[Contacts] AS 
       IIF([Sales_step].CURRENTMEMBER IS [Sales_step].&[contact], [Measures].[Qnt], null)
MEMBER [Measures].[Clients] AS 
       IIF([Sales_step].CURRENTMEMBER IS [Sales_step].&[client], [Measures].[Qnt], null)
MEMBER [Measures].[Funded] AS 
       IIF([Sales_step].CURRENTMEMBER IS [Sales_step].&[funded], [Measures].[Qnt], null)

SELECT {[Measures].[Contacts],
        [Measures].[Clients],
        [Measures].[Funded]} ON COLUMNS,

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

FROM ( SELECT ( [Sales_step].MEMBERS ) ON COLUMNS
FROM [SALES_PIPE])

它会产生正确的结果:

现在我想将行数减少到一个 [City] 维度,只是为了得到如下结果:

为此,我尝试了对代码的 2 处更改:

(1) 移除交叉连接:

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

仅具有一个 [City] 维度:

NON EMPTY [City].CHILDREN ON ROWS 

(2) 离开交叉连接并将其封装在 Extract() func 中:

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

但两种变体都给出空单元格:

如何仅在行上获得一个 [City] 维度的简短结果?

【问题讨论】:

    标签: reporting-services extract mdx rdl


    【解决方案1】:

    如果您尝试将度量转换为元组会发生什么?

    WITH 
      MEMBER [Measures].[Contacts] AS 
        (
          [Sales_step].&[contact]
         ,[Measures].[Qnt]
        ) 
      MEMBER [Measures].[Clients] AS 
        (
          [Sales_step].&[client]
         ,[Measures].[Qnt]
        ) 
      MEMBER [Measures].[Funded] AS 
        (
          [Sales_step].&[funded]
         ,[Measures].[Qnt]
        ) 
    SELECT 
      {
        [Measures].[Contacts]
       ,[Measures].[Clients]
       ,[Measures].[Funded]
      } ON COLUMNS
     ,NON EMPTY 
        [City].Children ON ROWS
    FROM 
    (
      SELECT 
        [Sales_step].MEMBERS ON COLUMNS
      FROM [SALES_PIPE]
    );
    

    【讨论】:

    • 这很有趣,我试过了,但结果是一样的——空值。亲爱的@whytheq,请猜更多
    【解决方案2】:

    只需:

    SELECT NON EMPTY [City].CHILDREN ON ROWS,
    NON EMPTY [Sales_step].CHILDREN ON COLUMNS
    FROM [SALES_PIPE]
    WHERE ([Measures].[Qnt])
    

    【讨论】:

    • 它给出了空值。 [Sales_step] 是层次结构,而不是度量。它不能以这种方式工作
    • 它会因为WHERE 子句中有一个度量。它给出了NULL,因为对于city 与Sales_Step 的可能对,没有Measures.Qnt 的值
    • @Globe 当您使用City、Sales_step 和Measures.Qnt 浏览多维数据集时会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多