我正在构建一个小立方体,并且在创建计算时遇到问题。
总而言之,我想要一些基于插件的值。 作为一个例子,我想要执行时间的标准偏差。
这样的事情:
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 :(得分:0)
假设您正在讨论SSAS Multidimensional,那么StDevP MDX是一个非常昂贵的函数,可以在您的情况下使用,因为它必须在叶级别(事实表行级别或您的情况下的任务级别)进行计算。如果你有超过几千个任务,我会建议一个表现良好并获得正确数字的优化。
这个想法来自thread。
- 加载一个简单的SUM度量(x) - 事实列的总和(在多维数据集中聚合)
- 加载x平方的简单SUM度量(x2) - 事实列的平方和(在多维数据集中聚合)
- 在名为cnt的计数器中加载 - 事实列的计数(在多维数据集中聚合)
醇>[MDX计算将是:]
((x2 - ((x ^ 2)/ cnt))/ cnt)^ 0.5