【问题标题】:MDX query optimization while using CrossJoin使用 CrossJoin 时的 MDX 查询优化
【发布时间】:2016-04-20 03:34:32
【问题描述】:

我正在编写一个 MDX 查询,在该查询中我正在选择一些度量值,在选择时我有一个 where 条件,我在其中交叉连接两个事实,一个是日期,另一个是唯一 id,我传递了大约 2000 个唯一ids,查询大约需要 20 分钟才能执行并给出结果。

请在下面找到相同的查询

    SELECT {[Measures].[TOTAL1], [Measures].[TOTAL2], [Measures].[TOAL3]} ON  COLUMNS,
            " + " {TOPCOUNT(FILTER([ID].[Ids].MEMBERS, 
                            [ID].CurrentMember  > 0),
                              5,[Measures].[TOTAL])} " + "ON ROWS 
    FROM [CHARTS] 
    WHERE({[Date].&[2015-09-01 00:00:00.0]}*{[NUM].[1],[NUM].[10],"
                + "[NUM].[18],[NUM].[47],[NUM].[52],[NUM].[105],[NUM].[126],[NUM].[392],"
                + "[NUM].[588],[NUM].[656],[NUM].[995],[NUM].[1005],[NUM].[1010],[NUM].[1061]})";

不带字符串操作符 (+) 的直接 mdx 如下:

SELECT 
  {
    [Measures].[TOTAL1]
   ,[Measures].[TOTAL2]
   ,[Measures].[TOAL3]
  } ON COLUMNS
 ,{
    TopCount
    (
      Filter
      (
        [ID].[Ids].MEMBERS
       ,
        [ID].CurrentMember > 0
      )
     ,5
     ,[Measures].[TOTAL]
    )
  } ON ROWS
FROM [CHARTS]
WHERE 
    {[Date].&[2015-09-01 00:00:00.0]}
  * 
    {
      [NUM].[1]
     ,[NUM].[10]
     ,[NUM].[18]
     ,[NUM].[47]
     ,[NUM].[52]
     ,[NUM].[105]
     ,[NUM].[126]
     ,[NUM].[392]
     ,[NUM].[588]
     ,[NUM].[656]
     ,[NUM].[995]
     ,[NUM].[1005]
     ,[NUM].[1010]
     ,[NUM].[1061]
    };

你能告诉我不同​​的性能优化技术吗?

【问题讨论】:

  • 我下面的建议有帮助吗,还是我可以删除它?

标签: mdx cross-join


【解决方案1】:

如果您使用第三个排序参数,TopCount 会很慢 - 最好先对数据进行排序,然后仅使用 2 个参数将您的预排序集输入 TopCount:

WITH 
  SET [S0] AS 
    Filter
    (
      [ID].[Ids].MEMBERS
     ,
      [ID].CurrentMember > 0
    ) 
  SET [S1] AS 
    Order
    (  
      [S0]
     ,[Measures].[TOTAL]
     ,BDESC
    ) 
  SET [S2] AS 
    TopCount
    (
      [S1]
     ,5
    ) 
SELECT 
  {
    [Measures].[TOTAL1]
   ,[Measures].[TOTAL2]
   ,[Measures].[TOAL3]
  } ON COLUMNS
 ,[S2] ON ROWS
FROM [CHARTS]
WHERE 
    {[Date].&[2015-09-01 00:00:00.0]}
  * 
    {
      [NUM].[1]
     ,[NUM].[10]
     ,[NUM].[18]
     ,[NUM].[47]
     ,[NUM].[52]
     ,[NUM].[105]
     ,[NUM].[126]
     ,[NUM].[392]
     ,[NUM].[588]
     ,[NUM].[656]
     ,[NUM].[995]
     ,[NUM].[1005]
     ,[NUM].[1010]
     ,[NUM].[1061]
    };

【讨论】:

    猜你喜欢
    • 2014-04-25
    • 2014-07-07
    • 1970-01-01
    • 2011-01-05
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    相关资源
    最近更新 更多