使用.Lag()对计算度量值进行MDX查询优化

使用.Lag()对计算度量值进行MDX查询优化,mdx,Mdx,我使用以下MDX查询计算成员,然后选择指定日期范围内的成员: WITH MEMBER [Measures].[Prior] as ([Date Post Transaction].[Calendar Month Period].CurrentMember.Lag(12),[Measures].[Unique Patients]) MEMBER [Measures].[Current] as [Measures].[Unique Patients] SELECT {[Measures].[Cu

我使用以下MDX查询计算成员,然后选择指定日期范围内的成员:

WITH
MEMBER [Measures].[Prior] as ([Date Post Transaction].[Calendar Month Period].CurrentMember.Lag(12),[Measures].[Unique Patients]) 
MEMBER [Measures].[Current] as [Measures].[Unique Patients] 
SELECT {[Measures].[Current],[Measures].[Prior]} 
DIMENSION PROPERTIES PARENT_UNIQUE_NAME , HIERARCHY_UNIQUE_NAME ON COLUMNS , NON EMPTY Hierarchize(AddCalculatedMembers({DrilldownLevel({[Date Post Transaction].[Calendar Month Period].Children})})) 
DIMENSION PROPERTIES PARENT_UNIQUE_NAME , HIERARCHY_UNIQUE_NAME ON ROWS FROM (SELECT ({[Date Post Transaction].[Calendar Month Period].&[201207],[Date Post Transaction].[Calendar Month Period].&[201208],[Date Post Transaction].[Calendar Month Period].&[201209],[Date Post Transaction].[Calendar Month Period].&[201210],[Date Post Transaction].[Calendar Month Period].&[201211],[Date Post Transaction].[Calendar Month Period].&[201212],[Date Post Transaction].[Calendar Month Period].&[201301],[Date Post Transaction].[Calendar Month Period].&[201302],[Date Post Transaction].[Calendar Month Period].&[201303],[Date Post Transaction].[Calendar Month Period].&[201304],[Date Post Transaction].[Calendar Month Period].&[201305],[Date Post Transaction].[Calendar Month Period].&[201306]}) 
ON COLUMNS FROM [cube]) 
WHERE ([Provider Billing].[Specialty Mgma Pcps].&[Cardiology: Inv-Intvl])
基本上,此查询要求心脏病学内的所有患者按月查看当前日期范围和之前日期范围

运行此查询需要8-9秒,这太疯狂了。我正在使用AnalysisServices运行和测试查询时间,还没有使用过其他工具来帮助优化MDX。所以我的第一个问题是,有人知道这样的工具来帮助优化MDX吗

我的主要问题是我应该在查询中使用什么方法或结构来帮助更快地处理结果?我最初没有使用.lag()函数,而是运行了一个查询,其中包括当前和以前的每个月。我确实从这个开关中看到了改进的结果时间


我有几个报告使用相同的格式,只是不同的度量(MEASURES),因此您可以想象我们每次运行5秒以上的查询的加载时间。

一般来说,MDX优化并不容易,没有太多的信息导致性能影响,很少有像SQL计划这样的信息,还有什么没有很好的记录。然而,还有什么:

  • Microsoft提供了性能优化指南:
  • MDX和Analysis Services查询引擎的前首席开发人员有一个博客:
  • 他还开发了一个工具,您可以使用该工具运行查询并查看一些或多或少有用的查询统计信息,这些统计信息仍然可以下载:
查看您的查询,我不确定性能杀手在哪里。可能是计算脚本中的某些内容在查询本身中不可见。我首先尝试的可能是,根据您的
[交易日期].[日历月期间]
层次结构的结构,只需使用

[Date Post Transaction].[Calendar Month Period].&[201207] : [Date Post Transaction].[Calendar Month Period].&[201306]
对于行轴,并完全忽略子选择,i。E仅使用

 FROM [cube]

作为整体,从第条开始,无任何子选择。但我怀疑这是否会显著减少运行时间。

我确实看到使用
操作符可以提高性能。我在速度上最大的进步来自于将我们正在引入的维度的查询组合在一起。事实上几乎70%。但是,将它们结合在一起会在以正确格式显示结果集方面产生新的问题。但总的来说,这是很好的建议。我也下载了MDX Studio,这很有帮助。谢谢