Как вычислить стандартное значение из предыдущих 10 значений за время измерения на MDX - PullRequest
0 голосов
/ 15 января 2020

Мне нужно вычислить стандартное отклонение 10 предыдущего значения меры X по иерархии дат: что-то вроде этого:

+------------+---------+---------+
|    Date    |    X    |  std10d |
+------------+---------+---------+
| 24/04/2019 | 238985  |         |
| 25/04/2019 | 61567   |         |
| 26/04/2019 | -37350  |         |
| 27/04/2019 | 27482   |         |
| 28/04/2019 | 65499   |         |
| 29/04/2019 | 3373    |         |
| 30/04/2019 | 88660   |         |
| 01/05/2019 | 22094   |         |
| 02/05/2019 | 99731   |         |
| 03/05/2019 | -4878   |         |
| 04/05/2019 | -100024 |   77268 |
| 05/05/2019 | -54204  |   60966 |
| 06/05/2019 | -9833   |   63679 |
+------------+---------+---------+

Я понимаю, что формула MDX должна быть такой:

stdev
(
[00_Time].[0_dateHierarchy].PrevMember.Lag(9) : 
[00_Temps].[0_dateHierarcy].PrevMember, 
[Measures].[X]
)

Но я не знаю, какое условие добавить, чтобы предотвратить вычисление первых 10 значений std10d.

1 Ответ

0 голосов
/ 09 февраля 2020

Выражение [00_Time]. [0_dateHierarchy] .PrevMember.Lag (9) .name для первых 9 элементов вернет null. Просто проверьте, что null

Case 
[Product].[Subcategory].currentmember.lag(9).name =null
then 
null
else 
stdev
(
[00_Time].[0_dateHierarchy].PrevMember.Lag(9) : 
[00_Temps].[0_dateHierarcy].PrevMember, 
[Measures].[X]
)
end
...