我有以下 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])
基本上,此查询要求 Cardiology 内的所有患者按月获取当前日期范围和先前日期范围。
这个查询需要 8-9 秒才能运行,这太疯狂了。我正在使用 Analysis Services 来运行和测试查询时间,并且没有遇到其他工具来帮助优化 MDX。所以我的第一个问题是,有没有人知道这样的工具可以帮助优化 MDX?
我的主要问题是我应该在查询中使用什么方法或结构来帮助更快地处理结果?我最初没有使用 .lag() 函数,而是运行一个查询,其中包括每个月的当前和以前的。我确实从这个开关中看到了改进的结果时间。
我有几个使用相同格式的报告,只是不同的指标 (MEASURES),因此您可以想象我们通过每个运行 5 秒以上的查询获得的加载时间。