ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

MOVINGAVERAGE

MOVINGAVERAGEファンクション(省略形はMVAVG)は、指定されたディメンションにわたってディメンション化変数または式の一連の平均を計算します。ステータスにあるディメンション値ごとに、現行ディメンション値を基準にして指定範囲内のデータの平均を計算します。

平均が計算されるデータのディメンションが1つのみの場合、MOVINGAVERAGEによって生成される一連の平均は、ステータスにあるディメンション値ごとに1つです。平均が計算されるディメンション以外のディメンションがデータに存在する場合、MOVINGAVERAGEでは、他のディメンションのステータス・リストにある値の組合せごとに、個別に一連の平均を生成します。

戻り値

expressionのデータ型がDECIMALまたはSHORTの場合はDECIMAL、それ以外の場合はNUMBERになります。

構文

MOVINGAVERAGE(expressionstartstopstep, -

     [dimension [STATUS|limit-clause]])

パラメータ

expression

平均を計算する値を持つ数値変数または計算。たとえば、unitssales-expenseなど。

start
stop

平均を計算する値の範囲を指定する整数値。startの値は範囲の先頭を指定します。stopの値は範囲の終点を指定します。dimensionの現行値を基準にしてstartとstopの値を指定します。現在より前をstartまたはstopに指定するには、値の前にカンマを付けます。したがって、現行のディメンション値に対してはゼロ(0)を指定し、現行値の直前の値に対しては-1を指定します。(「Movingファンクションによる範囲外の値およびNA値の処理方法」も参照してください。)


注意:

デフォルトでは、このファンクションは平均する値の範囲を識別するときにデフォルトのステータス・リストを使用します。STATUSまたはlimit-clause句のいずれかを指定することにより、この動作を変更できます。


ヒント:

ステータスの最後に範囲指定する場合は、便宜上および目的を文書化するために、DIMMAXキーワード付きのOBJファンクションを使用してstopの値を指定します。

step

平均の計算の対象を、範囲内のすべての値、1つおきの値、2つおきの値などにするかどうかを指定する正の整数。stepの値が1の場合、すべての値の平均です。2の場合、1番目、3番目、5番目(以降同様)の値の平均です。たとえば、今月がJun96であり、startstopの値がそれぞれ-33の場合、stepの値を2にすると、Mar96May96Jul96およびSep96の平均が計算されます。

dimension

移動平均の計算されるディメンション。dimensionのデータ型は任意のデータ型にできますが、通常は時間ディメンションになります。

expressionのディメンションがDAY、WEEK、MONTH、QUARTERまたはYEARの型であり、そのディメンションをこのファンクションに使用する場合は、dimension引数を省略できます。

STATUS

移動平均の計算時に、MOVINGAVERAGEが現行のステータス・リストを使用することを指定します(つまり、現在ステータスにあるディメンション値のみを現行のステータス順に使用)。

limit-clause

LIMITファンクションで指定された値、または各種LIMITコマンドにおけるlimit-clause引数の構文(つまり、LIMITコマンドの「TO」などのlimit-type引数の後の構文)と同じ構文で指定された値を、MOVINGAVERAGEが使用することを指定します。これらの引数の構文については、LIMITコマンド(値を使用)LIMITコマンド(LEVELRELを使用)LIMIT(親リレーションを使用)LIMITコマンド(関連ディメンションを使用)LIMITコマンド(NOCONVERTを使用)およびLIMITコマンド(POSLISTを使用)を参照してください。

使用上の注意

Movingファンクションによる範囲外の値およびNA値の処理方法

Movingファンクションは値をループするため、ループ内の各ステップにおいて、ループ内のディメンション位置がNAまたは範囲外である場合、このファンクションはexpressionNA値とみなします。このファンクションは、NASKIPオプション設定で指定された方法でNA値を処理(デフォルトではNAとして処理)するため、通常は範囲外の値(NA値)を無視し、ループ内のそのステップの式を評価しません。

例8-31 移動平均の計算

salesという名前の変数があり、この変数は、timeという名前の階層ディメンション、productという名前のディメンション、timeのレベルの名前(QuarterYearなど)を含むtimelevelnamesという名前のディメンションおよびtimeの値とtimelevelnamesの値を関連付けるtime.levelrelsという名前のリレーションによってディメンション化されているとします。さらに、次の文を使用してproductWomens - Trousersに、timeをQ4-1999から現在までの四半期に制限するとします。

LIMIT product TO 'Womens - Trousers'
LIMIT timelevelnames TO 'Quarter'
LIMIT time TO time.levelrels
LIMIT time REMOVE 'Q1-1999' 'Q2-1999' 'Q3-1999'

productおよびsalesを制限したら、次のレポート文を発行します。

REPORT DOWN time sales -
HEADING 'Running Yearly\nTotal' MOVINGTOTAL(sales, -4, 0, 1, time, -
     LEVELREL time.levelrels) -
HEADING 'Minimum\nQuarter' MOVINGMIN(sales, -4, 0, 1, time, -
     LEVELREL time.levelrels) -
HEADING 'Maximum\nQuarter' MOVINGMAX(sales, -4, 0, 1, time, -
     LEVELREL time.levelrels) -
HEADING 'Average\nQuarter' MOVINGAVERAGE(sales, -4, 0, 1, time, -
     LEVELREL time.levelrels)

この文によって次のレポートが生成されます。

               -----------------------PRODUCT------------------------
               ------------------Womens - Trousers-------------------
                          Running
                          Yearly     Minimum    Maximum    Average
TIME           SALES      Total      Quarter    Quarter    Quarter
-------------- ---------- ---------- ---------- ---------- ----------
Q4-1999         416            1,386        233        480     346.50
Q1-2000         465            1,851        233        480     370.20
Q2-2000         351            1,969        257        480     393.80
Q3-2000         403            2,115        351        480     423.00
Q4-2000         281            1,916        281        465     383.20
Q1-2001         419            1,919        281        465     383.80
Q2-2001         349            1,803        281        419     360.60
Q3-2001         467            1,919        281        467     383.80
Q4-2001         484            2,000        281        484     400.00
Q1-2002         362            2,081        349        484     416.20
Q2-2002         237            1,899        237        484     379.80
Q3-2002         497            2,047        237        497     409.40
Q4-2002         390            1,970        237        497     394.00