MDE查询在CDE仪表板

时间:2015-04-22 10:28:38

标签: mdx pentaho olap mondrian degenerate-dimension

以下是我的查询:

WITH
    SET [sp] AS
        ([time.fin].[day].[${parDate}]:[time.fin].[day].[${partoDate}])

SET [factory] AS
    {[organization].[org].[Fact1],[organization].[org].[Fact2],[organization].[org].[Fact3]}

MEMBER [btype].[b] AS
     AGGREGATE(IIF('${param}'='All',
                    [btype].[type].members,
                     [btype].[type].[${param}]
        ))    

SELECT
NON EMPTY {[factory]} ON COLUMNS,
NON EMPTY {[sp]}ON ROWS
FROM [cube1]
WHERE ([btype].[b], [Measures].[qty])

在此, btype是退化维度。 当我在CDE上执行此查询时...有时我得到 java.lang.nullpointerexception ,行为非常随机。通常,它给出结果,对于默认负载,它总是产生积极的结果。但是对于日期范围的变化,我随机得到了例外。

我的fact_table结构有5个正常维度和3个退化。

同时,我还观察到如果在查询中添加更多粒度,那么异常就不再出现了。但补充一点并不能满足我的要求。

是否与退化维度概念或高基数问题有关

1 个答案:

答案 0 :(得分:0)

也许这个措施需要更加明确:

MEMBER [btype].[b] AS
     AGGREGATE(IIF('${param}'='All',
                    [btype].[type].members,
                     [btype].[type].[${param}]
        ))  

如果将其更改为以下内容,是否会遇到错误?

MEMBER [btype].[b] AS 
    Sum
    (
      IIF
      (
        '${param}' = 'All'
       ,[btype].[type].MEMBERS
       ,[btype].[type].[${param}]
      )
    ,[Measures].[qty]
    )