我有下面的MDX查询,我需要在多维数据集上运行(我没有权限更改这个查询)。
这个特定的查询大约需要1.5分钟才能运行,这太长了。我一直在寻找加快速度的方法,但我运气不好。
有人能找到改进这个查询的方法吗?在过去的几天里,我一直在撕扯我的头发,所以任何帮助都是非常感谢的!
`WITH
MEMBER [Measures].[1-99_Count] AS
COUNT(FILTER ([Scam].[Scam Ref].AllMembers,
([Measures].[Amount Lost]>=1 AND [Measures].[Amount Lost]<=99)))
MEMBER [Measures].[1-99_Amount] AS
SUM(FILTER ([Scam].[Scam Ref].AllMembers,
([Measures].[Amount Lost]>=1 AND [Measures].[Amount Lost]<=99)),
Iif(IsEmpty([Measures].[Amount Lost]),0,[Measures].[Amount Lost]))
SELECT {[Measures].[1-99_Count],
[Measures].[1-99_Amount]} ON COLUMNS,
[First Resolved On Date].[Month].[Month] ON ROWS
FROM [Infocentre]
WHERE ([First Resolved On Date].[Date].[Date].&[20140101]:[First Resolved On Date].[Date].[Date].&[20150623],
[Scam].[Scam Category Level1].&[{d9d6bc38-e73e-e411-9a82-0a713f2121f7}])`发布于 2015-06-24 12:50:50
(只是为了好玩!)
您的第一个措施肯定可以通过以下改进。Count(Filter是一种大多数情况下都可以摆脱的模式。Mosha在博客中提到了这个可以改进的模式,如下所示:
http://sqlblog.com/blogs/mosha/archive/2007/11/22/optimizing-count-filter-expressions-in-mdx.aspx
我也试图改进第二次计算。如果这个条件是真[Measures].[Amount Lost] >= 1 AND [Measures].[Amount Lost] <= 99,那么这必然意味着这是假IsEmpty(Measures.Amount丢失),所以也许这两个条件都可以由1条件覆盖。另外,用0替换null - SSAS会让null更快乐(&更快)。
WITH
MEMBER [Measures].[1-99_Count] AS
Sum
(
[Scam].[Scam Ref].ALLMEMBERS
,IIF
(
[Measures].[Amount Lost] >= 1 AND [Measures].[Amount Lost] <= 99
,1
,null
)
)
MEMBER [Measures].[1-99_Amount] AS
Sum
(
[Scam].[Scam Ref].ALLMEMBERS
,IIF
(
[Measures].[Amount Lost] >= 1 AND [Measures].[Amount Lost] <= 99
,[Measures].[Amount Lost]
,null
)
)
SELECT
{
[Measures].[1-99_Count]
,[Measures].[1-99_Amount]
} ON COLUMNS
,[First Resolved On Date].[Month].[Month] ON ROWS
FROM [Infocentre]
WHERE
(
[First Resolved On Date].[Date].[Date].&[20140101]
:
[First Resolved On Date].[Date].[Date].&[20150623]
,[Scam].[Scam Category Level1].&[{d9d6bc38-e73e-e411-9a82-0a713f2121f7}]
);发布于 2015-06-24 02:43:11
最后,逻辑占上风,我让立方体的主人给立方体增加了一个新的维度,这意味着我不再需要尝试让这只狗的早餐工作了。
https://stackoverflow.com/questions/31015293
复制相似问题