はじめに
別の記事で、Oracle Analytics Cloud(OAC)に用意されているPeriondRolling関数で移動平均を求める方法を紹介しました。
そもそも、OACには移動平均を計算するためにMavg関数が用意されています。
PeriodRolling関数を使用した移動平均と、Mavg関数の挙動の違いを紹介します。
PeriodRolling関数
こちらの記事で紹介したように、検索に含まれる時間レベルを自動的に判定した上で、指定した開始期間から終了期間までを集計する関数です。
この関数は時間列(または時間階層)を必要とします。
PeriodRolling関数を使用して移動平均を求めることができます。
PERIODROLLING(Sales, -2, 0)/3
この例では、Salesメジャーを -2期間前から現在期間(つまり0)まで集計し、3で割り算しています。
期間の単位は、検索に含まれる時間レベルの最小単位を自動的に判定します。
「年」のみ含まれていれば、期間の単位も年となります。
現在年(現在行)が2024年だとすると、2024が0期間、2023が-1期間、2022が-2期間ということで、3年分となります。
なので、上記例では3で割っています。
検索に「年」と「四半期」が含まれていれば、四半期の方が時間レベルとしては詳細なので、期間の単位は四半期になります。
この場合は、現在行の四半期が2024年Q2だとすると、2024/Q2が0期間、2024/Q1が-1期間、2023/Q4が-2期間を表します。
MAvg関数
移動平均を求めるための関数です。
引数は、集計する列と整数値です。
現在行から整数値の行だけ遡った値の平均を計算します。
時間列は必要ありません。
MAVG(Sales, 3)
現在行を含め3行遡った分だけ集計します。
違いを見てみる
表で並べて表示してみると、最初の2行の値が違います。
3行目以降は同じ値になっています。
最初の2行に着目します。
Order Date (年) | Order Date (四半期) | Sales | Sales移動平均 (3期間) | MAVGによる移動平均 |
---|---|---|---|---|
2013 | 四半期1 2013 | 407,535.70 | 135,845.23 | 407,535.70 |
2013 | 四半期2 2013 | 361,638.70 | 256,391.47 | 384,587.20 |
PERIODROLLING関数を使用して計算した最初の行は、135845.23 となっています。
これは、-2期間前と-1期間前の値がないため、現在期間である407,535.70を3で割った値です。
一方、MAVG関数で計算した最初の行は 407,535.70となっており、現在期間の値と同一です。
これは、前2期間の値がないので現在値をそのまま表示しています。
2行目を見てみます。
PERIODROLLING関数を使用した式では、-2期間前のデータは無いので-1期間前と0期間(すなわち現在期間)の集計をして3で割っています。
MAVG関数は、-2期間前のデータは無いので-1期間前と0期間(すなわち現在期間)の集計をして、期間数である2で割っています。
というわけで、3行目以降は同じ値になります。