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

前
 
次
 

LAG

LAGファンクションは、ディメンションの現行値より前の指定されたオフセットの位置にある、ディメンション化された変数または式の値を返します。通常、前の期間の値を取得するためにLAGファンクションを使用します。

戻り値

variable引数のデータ型、または時間ディメンションの最初の期間より前に相対位置変更しようとした場合はNA

構文

LAG(variable ndimension, [STATUS|NOSTATUS|limit-clause])

パラメータ

variable

dimensionによってディメンション化される変数または式。

n

前に相対位置変更するオフセット(つまり、ディメンション値の数)。LAGはこの値を使用して、変数の値を取得するためにLAGがディメンションを戻るべき値の数を決定します。

通常、nは、現行期間より前の期間(ディメンション値)の数を示す正のINTEGERです。nに負数の値を指定した場合、現行期間よりの期間の数を示します。つまり、nに負数の値を使用すると、LAGはLEADファンクションになります。


注意:

モデルでLAGを使用する場合は、Oracle OLAPがモデルを解決する際に連立ブロックが使用されないよう、「一方向のディメンション依存の保証」を参照して、nの値をコーディングする方法を確認してください。

dimension

前への相対位置変更が発生するディメンション。任意のディメンションを指定できますが、通常は、1つのレベル(月レベル、年レベルなど)に制限されているTEXT型の階層型時間ディメンション、またはDAY、WEEK、MONTH、QUARTER、YEARのいずれかの型のディメンションです。

variableにDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションがあり、LAGでそのディメンションを使用する場合、dimension引数は省略可能です。

STATUS

LAGが前への相対位置変更を計算する際に、現行のステータス・リスト(つまり現在ステータスにあり、現行のステータスの順序に並んでいるディメンション値のみ)を使用することを指定します。

NOSTATUS

(デフォルト)LAGが前への相対位置変更を計算する際に、デフォルト・ステータス(つまり元の順序に並んでいるすべてのディメンション値のリスト)を使用することを指定します。

limit-clause

LAGが前への相対位置変更を計算する際に、limit-clauseによって制限されるデフォルト・ステータスを使用することを指定します。

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

LAGが前への相対位置変更を計算する際に、limit-clauseによって制限される現行のステータスを使用することを指定するには、limit-clauseにLIMITファンクションを指定します。

使用上の注意

時系列変数への結果の割当て

LAGの結果を時系列変数に割り当てて戻す場合には、注意が必要です。結果は一度に1つのセルに割り当てられるので、すべての値をnの位置の分のみ移動することなしに、返される最初の値で配列全体を上書きできるためです。ただし、LAGを使用すると、初期値に基づいて一連の値を計算できます。

例8-1 LAGの使用方法

アナリティック・ワークスペースに次のような定義があるとします。

DEFINE time DIMENSION TEXT
DEFINE timelevels DIMENSION TEXT
DEFINE timelevelrel RELATION timelevels <time>
DEFINE product DIMENSION TEXT
DEFINE district DIMENSION TEXT
DEFINE sales VARIABLE DECIMAL <time product district>
 

これらのオブジェクトが、次のレポートに表示されている値を持っているとします。

REPORT timelevelrel
 
TIME           TIMELEVELREL
-------------- ----------
AllYears       AllYears
2004           Years
2005           Years
2006           Years
Jan2005        Months
Feb2005        Months
Mar2005        Months
Apr2005        Months
...            ...
Oct2006        Months
Nov2006        Months
Dec2006        Months
 
REPORT product
 
PRODUCT
--------------
TVs
DVDs
Computers
 
REPORT district
 
DISTRICT
--------------
All Districts
Mass
Conn
Boston
Springfield
Hartford
New Haven
 

ここで、製品、地区および時間を制限する次のようなLIMIT文を発行するとします。

LIMIT product TO 'TVs'
LIMIT district TO 'Hartford'
LIMIT time TO 'Jan2006' 'Feb2006' 'Mar2006' 'Apr2006' 'May2006' 'Jun2006' 'Jul2006' 'Aug2006' 'Sep2006' 'Oct2006' 'Nov2006' 'Dec2006'
 

LAGを指定したREPORT文を発行すると、2006年および2005年の月間売上の値を表示できます。

REPORT DOWN time HEADING 'Sales 2006' sales HEADING 'Sales 2005' LAG(sales, 12, time, RELATION timelevelrel) 
 
DISTRICT: Hartford
               -------PRODUCT-------
               ---------TVs---------
TIME           Sales 2006 Sales 2005
-------------- ---------- ----------
Jan2006          1,542.91   1,627.51
Feb2006          1,786.07   1,100.13
Mar2006          1,794.43   1,667.61
Apr2006          1,942.92   1,346.66
May2006          1,530.08   1,509.51
Jun2006          1,613.60   1,242.47
Jul2006          1,666.35   1,307.17
Aug2006          1,413.79   1,033.93
Sep2006          1,526.98   1,773.96
Oct2006          1,112.85   1,103.78
Nov2006          1,193.41   1,132.39
Dec2006          1,851.19   1,543.62