【问题标题】:MDX SUB-SELECT vs WHERE PERFORMANCE ISSUESMDX 子选择与性能问题
【发布时间】:2014-01-30 17:27:26
【问题描述】:

我已经构建了 SSRS 报告,它将 CustomerID 作为参数并使用它运行 MDX 查询。

使用 WHERE 子句只需 1 秒即可运行,而如果我将其传递给 SUBSELECT 子句则需要 13 秒! 而且我必须使用 SUBSELECT 因为我想在结果中显示成员的姓名

长查询的语法是:

SELECT NON EMPTY { [Measures].[Revenue] } ON COLUMNS,
NON EMPTY { ([CUBE DIM DATE].[Month CD].[Month CD].ALLMEMBERS *
[CUBE DIM CUSTOMER].[Account MNG].[Account MNG].ALLMEMBERS * 
[CUBE DIM PRODUCT].[Product CD].[Product CD].ALLMEMBERS ) }
DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, MEMBER_KEY ON ROWS FROM 
( SELECT ({ [CUBE DIM CUSTOMER].[Customer No].&[111111]})   on 0 from   [CUBE_Prod] )

所以如果我使用的不是最后一行:

[CUBE_Prod]  WHERE [CUBE DIM CUSTOMER].[Customer No].&[111111]

...其余的都保持不变,然后只需要 1 秒。 显然,我错过了一些东西......

【问题讨论】:

  • 如果您正在生成查询,您知道客户编号,并且可以将其放入报告中而无需查询返回。

标签: performance query-optimization ssas mdx subquery


【解决方案1】:

想到几个选项...

选项1:使用WHERE子句版本并创建计算成员以在结果集中显示切片器成员值...

WITH MEMBER SlicerValue AS
    IIF(
        IsEmpty([Measures].[Revenue])
        ,NULL
        ,[CUBE DIM CUSTOMER].[Customer No].CurrentMember.MemberValue
    )
SELECT 
    NON EMPTY { 
         SlicerValue
        ,[Measures].[Revenue] 
    } ON COLUMNS, 
    NON EMPTY {
        ( 
            [CUBE DIM DATE].[Month CD].[Month CD].AllMembers * 
            [CUBE DIM CUSTOMER].[Account MNG].[Account MNG].AllMembers * 
            [CUBE DIM PRODUCT].[Product CD].[Product CD].AllMembers 
        )
    } Dimension Properties MEMBER_CAPTION, MEMBER_UNIQUE_NAME, MEMBER_KEY ON ROWS
FROM    [CUBE_Prod]
WHERE   [CUBE DIM CUSTOMER].[Customer No].&[111111]

方案二:使用SSRS表达式构建完美MDX。在下面的代码中,您将引用参数值,以便“[CUBE DIM CUSTOMER].[Customer No].&[111111]”是动态的。

SELECT 
    NON EMPTY { 
         [Measures].[Revenue] 
    } ON COLUMNS, 
    NON EMPTY {
        ( 
            [CUBE DIM DATE].[Month CD].[Month CD].AllMembers * 
            [CUBE DIM CUSTOMER].[Account MNG].[Account MNG].AllMembers * 
            [CUBE DIM PRODUCT].[Product CD].[Product CD].AllMembers *
            [CUBE DIM CUSTOMER].[Customer No].&[111111]
        )
    } Dimension Properties MEMBER_CAPTION, MEMBER_UNIQUE_NAME, MEMBER_KEY ON ROWS
FROM    [CUBE_Prod]

【讨论】:

    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 2014-02-18
    相关资源
    最近更新 更多