SSAS标准差计算

时间:2016-06-08 15:06:35

标签: sql-server ssas cube

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

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),但没有按预期工作,所以我显然做错了。

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

1 个答案:

答案 0 :(得分:0)

假设您正在讨论SSAS Multidimensional,那么StDevP MDX是一个非常昂贵的函数,可以在您的情况下使用,因为它必须在叶级别(事实表行级别或您的情况下的任务级别)进行计算。如果你有超过几千个任务,我会建议一个表现良好并获得正确数字的优化。

这个想法来自thread

  
      
  1. 加载一个简单的SUM度量(x) - 事实列的总和(在多维数据集中聚合)
  2.   
  3. 加载x平方的简单SUM度量(x2) - 事实列的平方和(在多维数据集中聚合)
  4.   
  5. 在名为cnt的计数器中加载 - 事实列的计数(在多维数据集中聚合)
  6.         

    [MDX计算将是:]

         

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