2016-06-08 4 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 Многомерном, то StDevP MDX - довольно дорогая функция, используемая в вашем случае, потому что она должна вычислять на уровне листа (уровень строки таблицы фактов или уровень задачи в вашем случае). Если у вас более нескольких тысяч задач, я бы рекомендовал оптимизацию, которая хорошо работает и получает нужный номер.

Эта идея из этого thread.

  1. нагрузка в простом SUM мере (х) - сумма фактически столбец (агрегированном в кубе)
  2. нагрузки в простом SUM мере х в квадрате (х2) - сумма квадрата факта столбец (агрегируются в кубе)
  3. нагрузки в счетчик называется CNT - счетчик столбца фактов (агрегированного в кубе)

[Расчет MDX бы тогда:]

((x2 - ((x^2)/cnt))/cnt)^0,5