我在使用 SQL Server 2008 R2 对摘要报告进行 MDX 度量计算时遇到了性能问题。
我有一个 Person 维度,以及一个包含每人多条记录的相关事实表。(资格)
例如 [Measures].[Other Qual Count] 会给我某种类型的资格数量。每个人可以有多个,因此 [Measures].[Other Qual Count] > 1 对于一个人。
但是,在我的总结报告中,我想将此表示为每人仅 1 个。(注明具有其他资格的人数。)
摘要报告针对一些其他维度汇总值,包括未知区域层次结构(它可以是 3 个层次结构之一)。
我这样做如下:
MEMBER [Measures].[Other Count2]
AS
SUM(
EXISTING [Person].[Staff Code].[Staff Code].Members,
IIF([Measures].[Other Count] > 0, 1, NULL)
)
但是,我必须创建更多派生措施 - 相互派生,并且都在 Person 级别,以避免不必要的多重计数。查询从 <1 秒减慢到 1min+(我的目标是 <3s)。
所有推导的原因是很多逻辑来确定一个人将在 6 个互斥列中的哪一个列中报告。
我也尝试过创建一个 Cube Calculation,但这给了我与 [Other Count] 相同的值。
SCOPE (({[Person].[Staff Code].[Staff Code].MEMBERS}, [Measures].[Has Other Qual]));
THIS = ([Person].[Staff Code].[Staff Code], [Measures].[Has Other Qual]).Count;
END SCOPE;
有没有更好的 MDX/Cube 计算可以使用,或者有什么提高性能的建议?
不幸的是,这是我第一次使用 MDX 并在接近截止日期时遇到了这个问题,所以我试图在不更改多维数据集的情况下尽可能完成这项工作。