2016-06-08 143 views
0

我正在构建一个小立方体,并且在创建计算时遇到问题。SSAS标准差计算

Cube View

总之,我想基于插件的一些值。 作为一个例子,我想要执行时间的标准偏差。

事情是这样的:

SELECT Plugin.PluginId, AVG(Task.ExecutionTimeMs) AS Mean 
, STDEVP(Task.ExecutionTimeMs) AS [Standard Deviation] 
, STDEVP(Task.ExecutionTimeMs) * STDEVP(Task.ExecutionTimeMs) AS Variance 
FROM Task 

在我的分析项目我创建了下面的表达式计算的:

STDEVP([Finished Tasks], [Measures].[Execution Time Ms Sum]) 

,没有工作。 我尝试了一些其他功能(MAX,AVG),但没有按预期工作,所以我显然做错了什么。

创建此类措施的正确方法是什么?

回答

0

假设你在谈论SSAS Multidimensional,那么StDevP MDX是一个相当昂贵的函数,因为它必须在叶级别(事实表行级别或您的案例中的任务级别)进行计算。如果你有超过几千个任务,我会推荐一个性能优化并获得正确数字的优化。

这个想法是从这个thread

  1. 负载以简单的SUM测量(X) - 事实柱(在立方体聚集的)的总和
  2. 负载在x的简单SUM度量的平方(X2) - 事实的平方的总和柱(聚集在立方体)中的计数器
  3. 负载称为CNT - 这一事实柱(在立方体聚集的)的计数

[该MDX计算随后将被:]

((x2 - ((x^2)/ cnt))/ cnt)^ 0.5