5 OLAP DMLオプション
この章のトピックは、次のとおりです:
-
各OLAP DMLオプションにつき1つの項目(アルファベット順にALLOCERRLOGFORMATから説明)
その他のOLAP DMLリファレンス項目については、「OLAP DMLプロパティ」、「OLAP DMLファンクション: AからK」、「OLAP DMLファンクション: L - Z」、「OLAP DMLコマンド: AからG」および「OLAP DMLコマンド: HからZ」を参照してください。
5.1 オプションの概要
OLAP DMLオプションは、特殊なタイプのアナリティック・ワークスペース・オブジェクトで、Oracle OLAPによってデータがどのように計算またはフォーマットされるのか、あるいはどのOracle OLAP演算がアクティブ化されるのかなど、いくつかの特性を指定します。オプションには、読取り専用オプションと、値を指定できる読取り/書込みオプションがあります。読取り/書込みオプションには、デフォルト値があります。
SET(=)コマンドを使用すると、オプションの値を事前定義された変数に取得したり、読取りオプションや書込みオプションに新しい値を指定したりできます。SHOWコマンドを使用すると、オプションの値を表示できます。
5.3 カテゴリ別のオプション
アナリティック・ワークスペースのオプション
グローバリゼーション・サポート
複数言語サポート・オプション
集計オプション
割当てオプション
モデル・オプション
コンパイル・オプション
エラー・オプション
デバッグ・オプション
SQLの埋込みオプション
ファイルの読取りと書込みのオプション
EIFオプション
レポートのオプション
NA値オプション
日付のみのデータ型オプション
日時オプション
数値オプション
RANKファンクションの監視オプション
5.4 ALLOCERRLOGFORMAT
ALLOCERRLOGFORMATオプションは、ALLOCATEコマンドにERRORLOG引数で指定するエラー・ログの内容および書式を設定するオプションです。
構文
ALLOCERRLOGFORMAT = text
パラメータ
- text
-
ALLOCMAPコマンドのERRORLOG文で指定するエラー・ログの内容および書式を決定する文字。書式設定文字の前に
INTEGER
値を指定することで、エラー・ログに含まれるオブジェクトの文字数を指定できます。書式設定文字としてエスケープ・シーケンスを指定できます。有効なエスケープ・シーケンスについては、「エスケープ・シーケンス」を参照してください。次の表にエラー・ログの内容を指定する文字を示します。ALLOCERRLOGFORMATのデフォルト値は次のとおりです。'%8p %8y %8z %e (%n)'
表5-1 ALLOCATEのエラー・ログの内容を指定する文字
文字 指定される出力 b
処理中の基礎オブジェクト
c
処理中のディメンションの子ノード
d
処理中のディメンションの名前
e
検出したエラーの説明
n
検出したエラーのエラー・コード
p
処理中のディメンションの親ノード
r
上位から下位へ順に割り当てられるリレーションの名前
s
処理中のソース・オブジェクト
t
処理中のターゲット・オブジェクト
n
割当てを受け取る子セルの基礎値
y
割り当てられる親セルのソース値
z
割り当てられる親セルの基礎値
例
例5-1 ALLOCERRLOGFORMATオプションの設定
この例では、ALLOCERRLOGFORMATオプションを設定し、生成された結果が最後の行に表示されています。
ALLOCERRLOGFORMAT = '%8p %8y %8z %e (%n)' SHOW ALLOCERRLOGFORMAT %8p %8y %8z %e (%n)
5.5 ALLOCERRLOGHEADER
ALLOCERRLOGHEADERオプションは、ALLOCATEコマンドにERRORLOG引数で指定するエラー・ログの列ヘッダーを設定するオプションです。エラー・ログの他の書式を指定するには、ALLOCERRLOGFORMATオプションを使用します。
構文
ALLOCERRLOGHEADER = text
パラメータ
- text
-
ALLOCATEコマンドで指定するエラー・ログの1行目である列ヘッダーの内容および書式を決定する文字。(使用できる文字のリストは、ALLOCERRLOGFORMATを参照してください。)
このオプションの値として
NA
を指定すると、ALLOCATEはエラー・ログにヘッダーを書き込みません。ALLOCERRLOGHEADERのデフォルト値は次のとおりです。'Dim Source Basis\n%-8d %-8v %-8b Description\n -------- -------- -------- -----------'
例
例5-2 ALLOCERRLOGHEADERオプションの設定
次の文は、ALLOCATE文によって指定されるエラー・ログのヘッダーを定義し、ALLOCERRLOGHEADERオプションの値を表示します。
ALLOCERRLOGHEADER = 'Dim Source Basis\n %-8d %-8v %-8b Description \n -------- -------- -------- -----------' SHOW ALLOCERRLOGHEADER
この文によって生成される結果は、次のとおりです。
Dim Source Basis %-8d %-8s %-8b Description -------- -------- -------- -----------
ソース・オブジェクトと基礎オブジェクトの両方にbudget
という名前の変数がある割当て演算で、division
ディメンションの上位から下位へ順に割当てを行う際にデッドロックが検出されると、エラー・ログに次のようなエントリが生成されます。
Dim Source Basis Division Budget Budget Description -------- -------- -------- ----------- Accdiv 650000 NA A deadlock occurred allocating data (5)
5.6 AWWAITTIME
AWWAITTIMEオプションは、AW ATTACHコマンドでWAITキーワードを使用した場合、アナリティック・ワークスペースにアクセスできるようになるまでの待機秒数を指定するオプションです。AWWAITTIMEのデフォルト値は20秒です。
データ型
INTEGER
構文
AWWAITTIME = seconds
使用上の注意
ワークスペースの共有
使用しているユーザーIDに適切なアクセス権があり、かつ読取り/書込み排他アクセス権を持つユーザーが存在しない場合は、他のユーザーが使用している場合でも、アナリティック・ワークスペースに対する読取り専用アクセス権を取得できます。他のユーザーに読取り/書込みアクセス権があり、ワークスペースをコミットした場合、ワークスペース・ビューは変更されないため、変更内容を参照する場合は、ワークスペースをデタッチし、再アタッチする必要があります。
例
例5-3 待機秒数を60秒に指定する
アナリティック・ワークスペースをアタッチする際、60秒の待機時間が必要だとします。この場合、次の文を発行して、AWWAITTIMEオプションの値を再設定します。
AWWAITTIME = 60
5.7 BADLINE
BADLINEオプションは、プログラム、モデルまたは入力ファイルの実行時に、Oracle OLAPがエラーの原因となる行を現行の出力ファイルに記録するかどうかを制御するオプションです。
データ型
BOOLEAN
構文
BADLINE = {YES|NO}
パラメータ
例
例5-4 BADLINEオプションの使用
test
という簡単なプログラムで、変数myint1
を0(ゼロ)で除算します。
DEFINE test PROGRAM PROGRAM VARIABLE myint1 INTEGER VARIABLE myint2 INTEGER myint1 = 0 myint2 = 250/myint1 END
DIVIDEBYZERO
オプションをNO
に設定してプログラムを実行すると、ゼロでは除算ができないため、エラーが発生します。BADLINE
をYES
に設定すると、現行の出力ファイルに次のメッセージが記録されます。
ERROR: (MXXEQ01) A division by zero was attempted. Set DIVIDEBYZERO to YES if you want NA to be returned as the result of division by zero. In DEMO!TEST PROGRAM: myint2 = 250/myint1
例5-5 プログラム行のエラー検出
test
という簡単なプログラムで、変数myint1
を0
(ゼロ)で除算します。
DEFINE test PROGRAM PROGRAM VARIABLE myint1 INTEGER VARIABLE myint2 INTEGER myint1 = 0 myint2 = 250/myint1 END
このプログラムを実行すると、ゼロでは除算できない(DIVIDEBYZEROがNO
に設定されている)ため、エラーが発生します。
BADLINEをNO
に設定すると、現行の出力ファイルにはエラーのみが記録されます。
ERROR: (MXXEQ01) A division by zero was attempted. (If you want NA to be returned as the result of a division by zero, set the DIVIDEBYZERO option to YES.)
BADLINEをYES
に設定すると、エラーが発生する行と、エラーが発生するプログラムの名前が現行の出力ファイルに記録されます。
ERROR: (MXXEQ01) A division by zero was attempted. (If you want NA to be returned as the result of a division by zero, set the DIVIDEBYZERO option to YES.) In TESTBAD PROGRAM: myint2 = 250/myint1 In EDDE.RUNCMD PROGRAM:
5.8 BMARGIN
BMARGINオプションは、出力ページの下余白を作成するための空白の行数を定義するオプションです。BMARGINは、PAGINGがYES
に設定されている場合にのみ有効で、REPORTやDESCRIBEなどの文の出力に対してのみ適用されます。BMARGINオプションは、通常、レポート・プログラムの初期化部分で設定されます。
データ型
INTEGER
構文
BMARGIN = n
使用上の注意
ファイルへのBMARGINの設定
あるファイルに対してBMARGINを設定するには、最初にOUTFILE文で現行の出力ファイルの名前を指定して対象のファイルを現行の出力ファイルにしてから、BMARGINを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、BMARGINによって、そのファイルのデフォルト値である1
が返されます。
BMARGINをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILE文が介在している場合でも、新しい値はリセットするまで有効です。つまり、BMARGINの値はデフォルトの出力ファイルに対して自動的に保存されます。
例
例5-6 レポート・ページの下余白の設定
レポート・ページの下部に注釈を付けるとします。5行分の広めの下余白を設定します。レポート・プログラムの初期化セクションに次の文を含めます。
BMARGIN = 5
5.9 CALENDARWEEK
CALENDARWEEKオプションは、週の番号を実際の暦年と整合させるかどうかを決定するオプションです。
注意:
このファンクションは、WEEK型のディメンションでのみ使用できます。
データ型
BOOLEAN
構文
CALENDARWEEK = {YES|NO}
パラメータ
- YES
-
(デフォルト)週の番号を暦年と整合させるよう指定します。たとえば、WEEK型のディメンションを定義した場合、Oracle OLAPでは、暦年の最初の週が週1、暦年の2番目の週が週2となるように、WEEKディメンションの値に番号が付けられます。週の番号は、WEEKディメンションの定義で指定されている開始日または終了日にかかわらず、暦年の週と整合します。
- NO
-
週の番号を暦年と整合させないよう指定します。そのかわりに、週の番号は、WEEKディメンションの定義で指定されている日付と整合するように付けられます。たとえば、WEEK型のディメンションを開始日と終了日を指定して定義すると、このディメンションの値には、ディメンション定義の日付に対応する週が週
1
、次の週が週2
となるように番号が付けられます。
使用上の注意
会計年度
CALENDARWEEKをNO
に設定すると、週の番号1は、DEFINE DIMENSION文で指定した日付で始まる週または終わる週に割り当てられます。次に、この週の番号は、最初の週の開始日が暦年の1月1日以降の会計年度に割り当てられます。たとえば、開始日が02Jan1996
(終了日が08Jan1996
)のWEEK型のディメンションを定義すると、開始日が02Jan1996
の週が会計年度1997
の週1
とみなされます。これとは対照的に、ディメンションの開始日を02Jan1995
から 01Jan1996
の間と指定した場合、この日に始まる週は、会計年度1996
の週1
になります。
例
例5-7 週の番号と暦年との整合
次の文によって、WEEK型のディメンションとその終了日が定義され、そのディメンションに値が追加されてレポートが生成されます。
DEFINE week dimension WEEK ENDING '18Jan97' MAINTAIN week ADD '21Dec96' '25Jan97' REPORT W 22 CONVERT(week DATE)
これらの文によって生成される出力は次のとおりです。
WEEK CONVERT(WEEK DATE) -------------- -------------------- w51.96 21Dec96 w52.96 28Dec96 w1.97 04Jan97 w2.97 11Jan97 w3.97 18Jan97 w4.97 25Jan97
例5-8 週の番号と指定した終了日との整合
次の文によって、CALENDARWEEKオプションがNO
に設定され、週の番号は、「例5-7」でのweek
ディメンションの定義で指定されている終了日と整合します。
CALENDARWEEK = NO REPORT W 22 CONVERT(week date)
これらの文によって生成される出力は次のとおりです。
WEEK CONVERT(WEEK DATE) -------------- -------------------- w50.97 21Dec96 w51.97 28Dec96 w52.97 04Jan97 w53.97 11Jan97 w1.98 18Jan97 w2.98 25Jan97
5.10 COLWIDTH
COLWIDTHオプションは、レポート出力におけるデフォルトのデータ列幅を制御するオプションです。ROWコマンドおよびHEADINGコマンドからの出力では、COLWIDTHは最初の列以外のすべての列に影響します。REPORTコマンドからの出力では、COLWIDTHは、すべてのデータ列、およびコンポジットまたは結合ディメンションのラベル列に影響します。
注意:
個々の列では、COLWIDTHの値は常に、HEADING、REPORTまたはROWコマンドのWIDTH属性に優先されます。
データ型
INTEGER
構文
COLWIDTH = n
パラメータ
例
例5-9 レポートのデフォルト列幅の設定
6か月間の売上数量を参照するとします。データ値は大きくないため、データ列の幅には10文字も必要ありません。そこで、COLWIDTHを設定して、デフォルトの列幅を狭めます。
LIMIT district TO 'Atlanta' LIMIT month TO 'Oct95' TO 'Mar96' COLWIDTH = 6 REPORT ACROSS month: units
これらの文によって生成される出力は次のとおりです。
DISTRICT: ATLANTA ------------------UNITS------------------ ------------------MONTH------------------ PRODUCT Oct95 Nov95 Dec95 Jan96 Feb96 Mar96 -------------- ------ ------ ------ ------ ------ ------ Tents 503 345 259 279 305 356 Canoes 317 282 267 281 309 386 Racquets 1,365 1,270 1,357 1,125 1,304 1,263 Sportswear 3,065 2,327 1,955 2,591 2,829 3,137 Footwear 3,445 3,247 2,831 3,089 3,282 3,475
5.11 COMMAS
COMMASオプションは、数値の出力における3桁区切り(千桁および百万桁など)の使用を制御するオプションです。区切り文字は通常カンマですが、NLS_TERRITORYの設定によっては異なる場合があります。3桁区切りに使用されている現行の文字を記録するには、THOUSANDSCHARオプションを使用します。COMMASオプションは、数値の出力に3桁区切りを表示するかどうかを制御するものです。
COMMASは、ROW、HEADING、REPORT、SHOWなど、出力を生成するすべてのコマンドに影響します。
注意:
HEADING、REPORTまたはROWコマンドのCOMMA属性およびNOCOMMA属性を使用することで、COMMAの設定を無効にできます。
データ型
BOOLEAN
構文
COMMAS = {NO|YES}
例
例5-10 カンマを使用しない数値データの表示
販売された商品の原価を、データ値にカンマを使用せずに参照するとします。この場合、レポートを生成する前に、COMMASをNO
に設定します。
COMMAS = NO LIMIT line TO 'Cogs' LIMIT month TO 'Jan96' 'Feb96' REPORT DOWN division ACROSS month: DECIMAL 0 actual
これらの文によって生成される出力は次のとおりです。
LINE: COGS -----ACTUAL------ ------MONTH------ DIVISION Jan96 Feb96 -------------- -------- ---------- Camping 368044 385120 Sporting 287558 315299 Clothing 567767 610727
5.12 COMPILEMESSAGE
COMPILEMESSAGEオプションは、COMPILEコマンドの実行中、Oracle OLAPによって現行の出力ファイルにnon-irrecoverableエラー・メッセージを送信するかどうかを指定するオプションです。non-irrecoverableエラー・メッセージとは、プログラムによるコンパイルを妨げないエラーを通知するメッセージを指します。
関連項目:
オブジェクトのコンパイルの詳細は、COMPILEを参照してください。
データ型
BOOLEAN
構文
COMPILEMESSAGE = {YES|NO}
パラメータ
例
例5-11 コンパイル中のエラー・メッセージの抑止
次の文で、COMPILEコマンドの実行中、Oracle OLAPによりnon-irrecoverableエラー・メッセージを送信しないように指定します。
COMPILEMESSAGE = NO
5.13 COMPILEWARN
COMPILEWARNオプションは、プログラムまたはモデルなどのコンパイル可能なオブジェクトを自動コンパイル中に、Oracle OLAPによって現行の出力ファイル内に警告メッセージを記録するかどうかを制御するオプションです。(COMPILEコマンドを使用してオブジェクトを明示的にコンパイルする場合は、COMPILEWARNメッセージは表示されません。)
次の場合、コンパイル可能なオブジェクトが自動でコンパイルされます。
-
編集後、最初に実行するとき。
-
アナリティック・ワークスペースを更新およびコミットした後、前のセッションでオブジェクトがコンパイルされている場合、そのオブジェクトをセッション内で最初に実行するとき。
-
コードで参照しているアナリティック・ワークスペース・オブジェクトが削除されるか、名前が変更された後。コード内でオブジェクト名が再定義されていないと、エラー・メッセージが表示されます。
-
コードが別のアナリティック・ワークスペースのオブジェクトを参照している場合で、現在アタッチされているアナリティック・ワークスペース内のオブジェクトが、コードが前回コンパイルされた際に使用可能だったオブジェクトと同じオブジェクト型(変数、リレーションなど)、データ型(
INTEGER
、TEXT
など)またはディメンションではないとき。
データ型
BOOLEAN
構文
COMPILEWARN = {YES|NO}
パラメータ
例
例5-12 コンパイル警告の表示を指定した場合
COMPILEWARNをYES
に指定した場合、do_report
プログラムを編集したすぐ後に実行すると、現行の出力ファイル内のdo_report
出力の前に次のメッセージが記録されます。
DO_REPORT is being automatically compiled.
5.14 DATEFORMAT
DATEFORMATオプションは、日付のみのデータ型の値の表示や、日付のみの値からテキスト値への変換に使用するテンプレートを保持します。テンプレートには、日付の4つの構成要素(日、月、年、曜日)についての書式指定を含めることができます。また、追加のテキストを含めることもできます。
関連項目:
データ型
TEXT
構文
DATEFORMAT = template
パラメータ
- template
-
日付を表示するためのテンプレートを指定するTEXT式。テンプレート内の各構成要素は、左の山カッコと右の山カッコで囲む必要があります。構成要素の前後または構成要素間には、別のテキストを入れることが可能です。デフォルトのテンプレートは、
'<DD><MTXT><YY>'
です。次の表に、各構成要素の有効な書式を記載します。表には、1990年3月1日および2051年11月12日の2つの表示例が示されています。
次の表に、曜日についての有効な書式を記載します。
表5-2 日にち用のDATEFORMATテンプレート
書式 意味 1990年3月1日 2051年11月12日 <D>
1桁または2桁
1
12
<DD>
2桁
01
12
<DS>
空白詰め、2桁
1
12
<DT>
序数、大文字
1ST
12TH
<DTL>
序数、小文字
1st
12th
次の表に、週についての有効な書式を記載します。表には、1990年3月1日および2051年11月12日の2つの表示例が示されています。
表5-3 曜日用のDATEFORMATテンプレート
書式 意味 1990年3月1日 2051年11月12日 <W>
数値
4
1
<WT>
頭文字、大文字
W
S
<WTXT>
先頭の3文字、大文字
WED
SUN
<WTXTL>
先頭の3文字、小文字
Wed
Sun
<WTEXT>
完全名、大文字
WEDNESDAY
SUNDAY
<WTEXTL>
完全名、小文字
Wednesday
Sunday
<WTXT>
、<WTXTL>
、<WTEXT>
または<WTEXTL>
の書式を指定する場合、DAYNAMESに値が設定されていると、表示される値が次のような影響を受けることに注意してください。-
DAYNAMESに名前がすべて小文字で入力されている場合、名前全体が大文字に変換されます。そうでない場合は、最初の文字が大文字に変換され、2番目以降の文字は元のままです。
-
DAYNAMESに名前がすべて大文字で入力されている場合、2番目以降の文字が小文字に変換されます。そうでない場合は、名前全体がDAYNAMESの指定のまま維持されます。
次の表に、月についての有効な書式を記載します。表には、1990年3月1日および2051年11月12日の2つの表示例が示されています。
表5-4 月用のDATEFORMATテンプレート
書式 意味 1990年3月1日 2051年11月12日 <M>
1桁または2桁
1
11
<MM>
2桁
03
11
<MS>
空白詰め、2桁
3
11
<MT>
頭文字、大文字
M
N
<MTXT>
先頭の3文字、大文字
MAR
NOV
<MTXTL>
先頭の3文字、小文字
Mar
Nov
<MTXT>
または<MTXTL>
の書式を指定する場合、MONTHNAMESに値が指定されていると、表示される値が次のような影響を受けることに注意してください。-
MONTHNAMESに名前がすべて小文字で入力されている場合、名前全体が大文字に変換されます。そうでない場合は、最初の文字が大文字に変換され、2番目以降の文字は元のままです。
-
MONTHNAMESに名前がすべて大文字で入力されている場合、2番目以降の文字が小文字に変換されます。そうでない場合は、名前全体がMONTHNAMESの指定のまま維持されます。
次の表に、年についての有効な書式を記載します。表には、1990年3月1日および2051年11月12日の2つの表示例が示されています。
表5-5 年用のDATEFORMATテンプレート
書式 意味 1990年3月1日 2051年11月12日 <YY>
2桁または4桁
90
2051
<YYYY>
4桁
1990
2051
-
使用上の注意
DATEFORMATテンプレートで山カッコをテキストとして指定する方法
テンプレート内に追加テキストとして山カッコを含めるには、テキストとして含める各山カッコに対し2つの山カッコを指定してください(たとえば、日付全体を山カッコで囲んで表示するには、 '<<<D><M><YY>>>'
と指定します)。
月名と曜日名
MT、MTXT、MTXTL、MTEXTおよびMTEXTL書式の月の構成要素に使用される名前は、MONTHNAMESオプションの現行の設定から読み取ります。WT、WTXT、WTXTL、WTEXTおよびWTEXTL書式で曜日の構成要素に使用される名前は、DAYNAMESオプションの現行の設定からのものです。
日にちと月の略称の指定
DAYABBRLENおよびMONTHABBRLENオプションを設定することで、曜日名および月名について、様々な長さの略称を使用できます。
DATEFORMATの有効範囲外の年
YY書式を指定した場合、1950から2049年の範囲を超える年は4桁で表示されます。
日付のみの値からテキスト値への自動変換
テキスト・データ型が予期されるときに日付のみのデータ型を使用した場合。Oracle OLAPではDATEFORMATオプションの日付テンプレートも使用して、自動的に日付をテキスト値に変換します。現行のDATEFORMATテンプレートを上書きする場合は、date-format引数を指定したCONVERTファンクションを使用することによって、日付の結果をテキストに変換できます。
いったん日付のみの値がテキスト変数に保存されると、DATEFORMATテンプレートはその値の表示書式として使用されなくなり、それ以降、DATEFORMATが変更されてもその値には適用されません。
日付のみのディメンション値
DATEFORMATオプションでは、DAY、WEEK、MONTH、QUARTERおよびYEARディメンションの日付のみの値を表示する方法は指定されません。これらの値の表示方法は、ディメンション定義に付加されているVNF(値名書式)によって、またはDAY、WEEK、MONTH、QUARTER、YEARディメンションのデフォルトの規則によって制御されます(「日付のみのディメンション値」の「DWMQYディメンションに対するデフォルトのVNF」表を参照)。
例
例5-13 日付の書式の変更
次の文により、日付のみの変数を定義して、値を1997年3月24日に設定し、日付書式を日、月、年の順序でそれぞれ2桁で表示するように設定して、結果を現行の出力ファイルに送信します。
DEFINE datevar VARIABLE DATE datevar = '24Mar97' DATEFORMAT = '<DD>/<MM>/<YY>' SHOW datevar
これらの文によって生成される出力は次のとおりです。
24/03/97
次の文で、日付の書式を月(テキスト)、日(2桁)、年(4桁)に変更し、結果を現行の出力ファイルに送信します。
DATEFORMAT = '<MTEXTL> <D>, <YYYY>' SHOW DATEVAR
これらの文によって生成される出力は次のとおりです。
March 24, 1997
次の文で、日付の書式を曜日(テキスト)、月(テキスト)、日(1または2桁)、年(4桁)に変更し、結果を現行の出力ファイルに送信します。
DATEFORMAT = '<WTEXTL> <MTEXTL> <D>, <YYYY>' SHOW DATEVAR
これらの文によって生成される出力は次のとおりです。
Monday March 24, 1997
例5-14 日付の書式にテキストを含める
次の文では、アナリティック・ワークスペースのスタートアップ・メッセージに追加のテキストを含めるために、DATEFORMATオプションを保存してから変更します。
PUSH DATEFORMAT DATEFORMAT = 'Hello. Today is <wtextl>, the <dtl> - OF <MTEXTL>.' SHOW TODAY POP DATEFORMAT
今日の日付が1997年5月30日の場合、プログラムが起動された際に次の出力が現行の出力ファイルに送信されます。
Hello. Today is Friday, the 30th of May.
5.15 DATEORDER
DATEORDERオプションは、アナリティック・ワークスペース内の日付のみの値の構成要素の解釈があいまいな場合に使用される、月、日、年の順序を示す3文字を保存するオプションです。解釈があいまいな日付のみの値が入力されたり、TEXT値から日付のみの値への変換が行われる場合は常に、このDATEORDERが自動で参照されます。日付の値については、「日付のみのデータ型」を参照してください。
データ型
ID
構文
DATEORDER = order
パラメータ
使用上の注意
あいまいな日付
明確な日付のみの値が入力される場合、または日付として1つの解釈しかあり得ないテキスト値を変換する場合は、DATEORDERオプションの関与なしに処理が行われます。たとえば、03-24-97
では、97
は年としてしか引用できません。残りの値については、24
は月としては引用できないため日と解釈されます。残されたのは03
のみですが、これは月のはずです。しかし、値3-5-97
のように解釈があいまいな場合は、各構成要素の意味を解釈するためにDATEORDERの現行の値が使用されます。
DATEORDERとテキストから日付のみへの変換
日付のみの値が予期される箇所にテキスト値を使用するか、日付のみの変数にテキスト値を保存する際は、テキスト値は「日付のみの入力値」で説明されているスタイルに従っている必要があります。Oracle OLAPでは、テキスト値を日付のみの値に自動で変換します。テキスト値の意味があいまいな場合は、値の解釈にはDATEORDERの現行の設定が使用されます。
テキスト値から日付のみの値への変換に際し、現行のDATEORDER設定を上書きするには、CONVERTファンクションをdate-order引数とともに使用します。
必須の日付構成要素
ある日付値を、MAINTAIN文を使用してDAY、WEEK、MONTH、QUARTERまたはYEARディメンションに、あるいはLIMITコマンドを使用して値セットに、割り当てる必要があるとします。値を日付のみの式またはテキスト・リテラルの形式で指定した場合、Oracle OLAPではDATEORDERオプションを使用して値を解釈します。テキスト・リテラルを指定する際は、日付の有効な入力スタイルを使用できます。ただし、指定する必要があるのは、特定の型のディメンションまたは使用する値セット内の時間間隔を識別するために必要な日付構成要素のみです。たとえば、MONTHディメンションまたはその値セットでは、30jun97
などの完全な日付を指定することもできますが、jun97
または0697
などの必須の構成要素のみを指定することもできます。
DWMQYディメンションのフェーズ
DATEORDERオプションは、DAY、WEEK、MONTH、QUARTERおよびYEARディメンションに対するDEFINE DIMENSION文へのphase引数の解釈に使用されます。
例
例5-15 日付の順序の変更
次の文では、ある値を定義して日付のみの変数に割り当て、日付の書式と順序を指定して、結果を現行の出力ファイルへ送信します。
DEFINE datevar VARIABLE DATE dATEFORMAT = '<MTXT> <D>, <YYYY>' DATEORDER = 'MDY' DATEVAR = '3 5 1997' SHOW DATEVAR
これらの文によって生成される出力は次のとおりです。
MAR 5, 1997
次の文では、日付の順序を変更し、それにより、日付のみの変数の同じ値の解釈方法も変更されます。
DATEORDER = 'DMY' SHOW DATEVAR
これらの文によって生成される出力は次のとおりです。
MAY 3, 1997
5.16 DAYABBRLEN
DAYABBRLENオプションは、DAYNAMESオプションに保存されている曜日名の略称に使用する文字数を指定するオプションです。DATEFORMATテキスト・オプションで<WT>
、<WTXT>
および<WTXTL>
書式を指定する場合は、特定の曜日名の略称として使用する文字数を指定できます。
データ型
TEXT
構文
DAYABBRLEN = specification [;|, specification]...
ここで、specificationは次の形式のテキスト式です。
startpos [- endpos] : length
それぞれ略称の長さが違う、様々な曜日グループを定義できます。これを行うには、構文で示すように各グループをカンマまたはセミコロンで区切ります。
パラメータ
- startpos [- endpos]
-
lengthによって略称の長さを定義する、最初と最後の曜日を示す数字。これらの数字で表される位置は、DAYNAMESオプションの対応するテキスト行に適用されます。これらの範囲の値は、必要に応じてendpos [-startpos]のように逆の順序でも指定できます。
DAYNAMESオプションには7行より多くの行がある可能性があるため、DAYABBRLENの設定では、startposおよびendposに7より大きい数を指定できます。startposまたはendposのどちらもDAYNAMESオプション内に対応するテキスト値がないような範囲を指定した場合は、Oracle OLAPにはその範囲に対する略称のテキスト値はありません。その後、曜日名のリストを変更してstartposが有効になった場合は、指定された略称が適用されます。
- length
-
曜日名の略称の文字数(バイトではなく)による長さを指定する数値。DAYNAMESオプションの特定の位置に略称の長さを指定しないか、特定の位置に明示的にゼロを設定すると、
<WT>
の場合は1文字のデフォルトの略称、<WTXT>
および<WTXTL>
の場合は3文字のデフォルトの略称が使用されます。フルネーム指定の<WTEXT>
および<WTEXTL>
が指定されている場合は、略称は使用されません。
使用上の注意
あいまいな曜日名
'T'
がTuesday(火曜日)またはThursday(木曜日)を意味するなど、あいまいな名前を解釈するには、DAYABBRLENを使用できます。TuesdayのDAYABBRLENの設定が1
で、ThursdayのDAYABBRLENの設定が2であった場合、'T'
は常にTuesdayに一致し、Thursdayと一致させるには少なくとも'Th'
が必要です。この解釈は週内のTuesdayとThursdayの順序には関係がなく、2つの曜日の順序が反対でも同じように機能します。一方、どちらのDAYABBRLENも2
であった場合には、'T'
はどちらの曜日にも一致せず、一致させるには少なくとも'Tu'
または'Th'
を入力する必要があります。
例
例5-16 曜日の略称の指定
次のDAYABBRLEN設定では、最初の5つの曜日には1文字の略称が、最後の2つの曜日には2文字の略称が使用されます。
DAYABBRLEN = '1-5:1, 6-7:2' DATEFORMAT = '<WTXT> <MTXT> <D>, <YYYY>' SHOW CONVERT ('2 august 2005' DATE)
これらの文により、次の結果が返されます。ここでは、Tuesdayが1文字に略されています。
T AUGUST 2, 2005
5.17 DAYNAMES
DAYNAMESオプションは、有効な曜日名のリストを保存するオプションです。これらの曜日名は、日付のみの型の値を表示する際または日付のみの値をテキストに変換する際に使用されます。
<WT>
、<WTXT>
、<WTXTL>
、<WTEXT>
、<WTEXTL>
のいずれかの書式を使用して日付を表示または変換する際に、DAYNAMESリストが参照されます。これらの書式は、DATEFORMATオプションで指定します。曜日名のセットが複数ある場合、Oracle OLAPでは、文字数および大文字の使用パターンがDATEFORMATの指定と最も近いシノニムを選択します。
データ型
TEXT
構文
DAYNAMES = name-list
パラメータ
例
例5-17 曜日名の指定
次の文では、DAYNAMESをフランス語の曜日名に設定し、出力を現行の出力ファイルに送信します。
DAYNAMES = 'dimanche\nlundi\n- mardi\nmercredi\njeudi\nvendredi\nsamedi' SHOW DAYNAMES
これらの文によって生成される出力は次のとおりです。
dimanche lundi mardi mercredi jeudi vendredi samedi
5.18 DECIMALCHAR
(読取り専用)DECIMALCHARオプションは、NLS_NUMERIC_CHARACTERSオプションに指定された値になります。
DECIMALCHARは、Oracle OLAPによる出力での数値書式にのみ影響します。入力する数値の書式には、小数点としてピリオド(.
)が使用されます。別の小数点を使用するには、値を一重引用符で囲み、TO_NUMBERファンクションでテキストから有効な数値に変換します。
データ型
ID
構文
DECIMALCHAR
例
例5-18 小数点と3桁区切りの確認
この例内の文で、DECIMALCHARおよびTHOUSANDSCHARの値を確認できます。
-
次の文では、出力としてカンマなどが示されます。
SHOW THOUSANDSCHAR
-
次の文では、出力としてピリオドなどが示されます。
SHOW DECIMALCHAR
-
これらの値を使用した場合、次の文によって、文の下にあるような出力が生成されます。
SHOW TOTAL(sales) 63,181,743.50
5.19 DECIMALOVERFLOW
DECIMALOVERFLOWオプションは、算術演算の結果が有効範囲外となる場合に、その結果を制御するオプションです。10進数は、仮数および指数として格納されます。計算の結果が非常に大きく、10進表現の指数部分では表しきれない場合、10進オーバーフローが発生します。
データ型
BOOLEAN
構文
DECIMALOVERFLOW = YES|NO
パラメータ
例
によって、次の結果が生成されます。
NA
例5-19 DECIMALOVERFLOWの影響
この例では、DECIMALOVERFLOWオプションの値を変更した場合の影響を示します。
DECIMALOVERFLOWをデフォルト値のNO
に設定したままで、次のようなSHOW文を実行すると、エラーが発生します。
SHOW 1000000.0 ** 133
DECIMALOVERFLOWの値をYES
に変更して同じ文を実行すると、エラーは起こらず、演算の結果としてNA
が返されます。次の文により
DECIMALOVERFLOW = YES SHOW 1000000.0 ** 133
5.20 DECIMALS
DECIMALSオプションは、数値出力に表示する小数点以下の桁数を制御します。値は、指定された小数桁数に収まるように丸められます。(ただし、DECIMALSの設定は、出力のINTEGER値の書式には影響しません。HEADING、REPORTまたはROWコマンドで明示的にDECIMAL属性を適用しないかぎり、INTEGER値には小数桁は表示されません。)
データ型
INTEGER
構文
DECIMALS = n
パラメータ
- n
-
DECIMAL値およびSHORTDECIMAL値のすべての出力における小数点以下の桁数を指定する
INTEGER
式で、nには、0から40までの任意の数字または255になります。(DECIMALSを255
に設定すると、SHORTDECIMALとDECIMALの両方のデータ型について値の書式を指定できます。例5-21を参照してください。デフォルト値は2です。
例
例5-20 小数桁なしでのデータの表示
数値の出力に小数桁を表示しないようにするには、レポートを生成する前に、DECIMALSオプションを0
(ゼロ)に設定します。
DECIMALS = 0 LIMIT line TO 'COGS' LIMIT month TO 'Jan96' 'Feb96' REPORT DOWN division ACROSS month: budget
これらの文によって生成される出力は次のとおりです。
LINE: COGS -------BUDGET-------- --------MONTH-------- DIVISION Jan96 Feb96 -------------- ---------- ---------- Camping 355,933 385,308 Sporting 279,773 323,982 Clothing 528,370 546,468
例5-21 最適表示書式と小数2桁表示との比較
この例では、DECIMALSを2
に設定した場合とDECIMALSを255
(最適表示書式)に設定した場合の結果を比較します。
OLAP DML文
DECIMALS = 2 SHOW JOINCHARS(1.1 'A')
によって、次の出力が生成されます。
1.10A
OLAP DML文
DECIMALS = 255 SHOW JOINCHARS(1.1 'A')
によって、次の出力が生成されます。
1.1A
5.21 DEFAULTAWSEGSIZE
DEFAULTAWSEGSIZEオプションは、データベース・セッションで作成されるアナリティック・ワークスペースの、デフォルトの最大セグメント・サイズを保存するオプションです。この設定は、そのセッションでのみ有効です。新しいセッションごとに、DEFAULTAWSEGSIZEはデフォルト値に戻ります。
ヒント:
既存のワークスペースで、新規セグメントの最大サイズを変更するには、AWコマンドをSEGMENTSIZEキーワードとともに使用します。新規セグメントについての現行の最大サイズを確認するには、AWファンクションをSEGMENTSIZEキーワードとともに使用します。
構文
DEFAULTAWSEGSIZE = n
例
例5-22 セッションの最大セグメント・サイズの表示
次の文により、ワークスペースの現行の最大セグメント・サイズが表示されます。
SHOW DEFAULTAWSIZE
例5-23 セッションの最大セグメント・サイズの設定
次の文により、最大セグメント・サイズが約1/2GBに設定されます。
DEFAULTAWSIZE = 536870910
5.22 DIVIDEBYZERO
DIVIDEBYZEROオプションは、ゼロで除算した結果を制御します。(ゼロによる除算には、0
**
-2
など、ゼロの負の累乗も含まれます。)
データ型
BOOLEAN
構文
DIVIDEBYZERO = YES|NO
パラメータ
例
例5-24 DIVIDEBYZEROの影響
この例では、DIVIDEBYZEROオプションの値を変更した場合の影響を示します。
次のようなSHOW文を、DIVIDEBYZEROオプションのデフォルト値であるNO
を変更しないで実行すると、Oracle OLAPでは100が0で除算され、エラー・メッセージが生成されます。
SHOW 100 / 0
DIVIDEBYZEROの設定をYES
に変更すると、同じ文がエラーなしで実行され、除算の結果としてNA
が出力されます。次の文により
DIVIDEBYZERO = YES SHOW 100 / 0
によって、次の結果が生成されます。
NA
5.23 DSECONDS
(読取り専用)DSECONDSオプションは、経過時間をDECIMAL
値として返すオプションです。OracleがインストールされているのがUNIXである場合、DSECONDSオプションが返すのは、Oracleが開始されてからの経過時間(秒)になります。OracleがインストールされているのがWindowsである場合、DSECONDSオプションが返すのは、Oracleがインストールされているコンピュータが起動してからの経過時間(秒)になります。プログラムの動作速度向上に役立てるため、DSECONDSは、プログラムの実行中に経過する時間を調べる目的で使用できます。
注意:
経過時間をINTEGER
値として取得する方法は、SECONDSオプションを参照してください。
データ型
DECIMAL
構文
DSECONDS
例
例5-25 DSECONDSによるプログラムの時間測定
次のプログラムを実行すると、プログラム開始時のDSECONDSの値がt1
という変数に書き込まれ、次にt1
とプログラム実行後のDSECONDSの値との差が表示されます。
DEFINE prodsummary PROGRAM PROGRAM VARIABLE t1 DECIMAL t1 = dseconds LIMIT product TO ALL BLANK FOR product DO ROW WIDTH 16 name.product ACROSS month Jun96: DECIMAL 0 LSET - '$'WIDTH 18 <RSET ' (Actual)' sales rset ' (Plan)' sales.plan> DOEND BLANK ROW WIDTH 35 LSET 'The program took ' rset ' seconds.' - (dseconds - t1) END
このプログラムを実行すると、次の結果が生成されます。
3-Person Tents $95,121 (actual) $80,138 (plan) Aluminum Canoes $157,762 (actual) $132,931 (plan) Tennis Racquets $97,174 (actual) $84,758 (plan) Warm-up Suits $79,630 (actual) $73,569 (plan) Running Shoes $153,688 (actual) $109,219 (plan) The program took .20 seconds.
5.24 ECHOPROMPT
ECHOPROMPTオプションは、入力行とエラー・メッセージを現行の出力ファイルにエコー出力するかどうかを指定するオプションです。ECHOPROMPTをYES
に設定し、DBGOUTFILEでデバッグ・ファイルを指定すると、入力行とエラー・メッセージのエコー出力先は、現行の出力ファイルではなくデバッグ・ファイルになります。
データ型
BOOLEAN
構文
ECHOPROMPT = {YES|NO}
パラメータ
例
例5-26 ECHOPROMPTの使用
出力の格納先にするディスク・ファイルに、すべての入力行およびエラー・メッセージを格納するとします。まずECHOPROMPTをYES
に設定してから、OUTFILE文を発行し、出力をディスク・ファイルに送ります。次の文では、ディスク・ファイルの格納先がカレント・ディレクトリ・オブジェクトになります。
ECHOPROMPT = YES OUTFILE 'newcalc.dat'
5.25 EIFBYTES
(読取り専用)EIFBYTESオプションは、最後に実行されたIMPORT(EIF)コマンドによって読み取られたか、最後に実行されたEXPORT(EIF)コマンドによって書き込まれたバイトの数を保持するオプションです。
データ型
INTEGER
構文
EIFBYTES
例
例5-27 バイト数の確認
demo
ワークスペースのディメンションをエクスポートしたときにEIFファイルにエクスポートされた情報のバイト数を確認するには、次の文を使用します。
LIMIT name TO OBJ(TYPE) EQ 'DIMENSION' EXPORT ALL TO EIF FILE 'myfile.eif' SHOW EIFBYTES
SHOW文によって生成される出力は、次のとおりです。
2,038
5.26 EIFEXTENSIONPATH
EIFEXTENSIONPATHオプションは、EIF拡張ファイルの作成場所を指定するディレクトリ・オブジェクトのリストを格納するオプションです。
データ型
TEXT
構文
EIFEXTENSIONPATH = path-expression
パラメータ
使用上の注意
拡張ファイルが作成される条件
EIFファイルのサイズが、EXPORT(EIF)コマンドに対してFILESIZE引数で指定したEIFファイルのサイズを超えるか、現行のディスクまたは場所に空き領域がなくなると、EIF拡張ファイルが作成されます。
EIFEXTENSIONPATHで指定された場所は、新しい拡張ファイルの作成前に、十分なディスク領域があるかどうかが確認されます。必要なディスク領域のサイズは、EXPORT(EIF)のFILESIZEに指定されているサイズです。FILESIZEに値が指定されていない場合は、80K以上のディスク領域(FILESIZEによって許容される最小サイズ)の有無が確認されます。ディスク領域が不十分な場合は、十分なディスク領域が確保されている場所が見つかるまでリストの確認が続行されます。
EIFEXTENSIONPATHにおける複数のパス
EIFEXTENSIONPATHに複数のディレクトリ・オブジェクトが含まれる場合、最初の拡張ファイルは、リストの最初の別名に作成されます。2番目の拡張ファイルは、リストの2番目の別名に作成されます(以降同様)。リストの末尾に到達すると、この処理はもう一度先頭から開始されます。EIFEXTENSIONPATHに含まれるディレクトリ・オブジェクトが1つの場合は、すべての拡張ファイルがこの場所に作成されます。
例
例5-28 拡張ファイルの場所の設定
次の文を実行すると、EIF拡張ファイルの作成先としてeifext
ディレクトリ・オブジェクトが設定されます。
EIFEXTENSIONPATH = 'eifext'
5.27 EIFNAMES
EIFNAMESオプションは、最後に実行されたIMPORT(EIF)コマンドによってインポートされたすべてのオブジェクトの名前のリストを保持するオプションです。
データ型
TEXT
構文
EIFNAMES
例
インポートした内容の確認
units
変数とproductset
値セットを、demo
アナリティック・ワークスペースからmyfile.eif
というファイルにエクスポートしたとします。ファイルの内容を新しいワークスペースにインポートしたら、EIFNAMESオプションを使用して、インポートしたばかりのオブジェクトの名前を参照できます。
次の文により
AW CREATE mytest IMPORT ALL FROM EIF FILE 'myfile.eif' SHOW EIFNAMES
によって、次の出力が生成されます。
DISTRICT PRODUCT MONTH UNITS PRODUCTSET
5.28 EIFSHORTNAMES
5.29 EIFTYPES
EIFTYPESオプションは、EIFNAMESオプションによって生成されるリストに含まれるオブジェクト型のリストを保持するオプションです。各型の列記順序は、これに対応するオブジェクト名がEIFNAMESリスト内で列記されている順序と同じです。
データ型
TEXT
構文
EIFTYPES
例
例5-30 インポートした内容の確認
units
変数とproductset
値セットを、demo
というアナリティック・ワークスペースからmyfile.eif
というファイルにエクスポートしたとします。ファイルの内容を新しいワークスペースにインポートしたら、EIFNAMESオプションとEIFTYPESオプションを使用して、インポートしたばかりのオブジェクトの名前とオブジェクト型を参照できます。
次の文により、ワークスペースの作成とオブジェクトのインポートを実行します。
AW CREATE mytest IMPORT ALL FROM EIF FILE 'myfile.eif'
次の文により、インポートしたオブジェクトの名前を現行の出力ファイルに送ります。
SHOW EIFNAMES
生成される出力は次のとおりです。
DISTRICT PRODUCT MONTH UNITS PRODUCTSET
次の文により、インポートしたオブジェクト型を現行の出力ファイルに送ります。
SHOW EIFTYPES
生成される出力は次のとおりです。
DIMENSION DIMENSION DIMENSION VARIABLE VALUESET
5.30 EIFUPDBYTES
EIFUPDBYTESオプションは、IMPORT(EIF)コマンドをそのUPDATEキーワードとともに使用するときに、更新の頻度を制御するオプションです。EIFUPDBYTESの値が有効なのは、このコマンドでUPDATEキーワードが指定されている場合に限られます。
データ型
INTEGER
構文
EIFUPDBYTES = n
パラメータ
例
例5-31 更新頻度の削減
次の例では、IMPORT(EIF)コマンドのUPDATEキーワードにより、更新の実行頻度は定期的になります。EIFUPDBYTESを設定することにより、更新頻度を抑えることができます。
EIFUPDBYTES = 500000 IMPORT ALL FROM EIF FILE 'finance.eif' UPDATE
5.31 EIFVERSION
EIFVERSIONオプションは、OLAP ServerまたはOracle OLAPの異なるリリース間でデータをコピーするときに、EXPORT(EIF)コマンドおよびIMPORT(EIF)コマンドとともに使用します。データのエクスポート元となるリリースのことをソースと呼びます。データのインポート先となるリリースのことをターゲットと呼びます。
EXPORTコマンドを使用してデータをEIFファイルにエクスポートする前に、EIFVERSIONオプションを使用してターゲットの内部リリースまたはビルド番号を指定します。その後、EXPORTを使用してデータをソースからEIFファイルにコピーすると、データのフォーマットはターゲットがインポート可能なフォーマットになります。通常、EIFファイルからデータをインポートする場合、EIFVERSIONで指定したEIFファイルのリリース番号より後のリリース番号を持つターゲットにインポートできます。ただし、EIFVERSIONの値をデフォルト(現行のプロセスのリリース番号)より低い値に設定し、以前のリリースでは処理できないデータをエクスポートしようとすると、エラーが発生します。たとえば、aggmapを以前のリリースのOLAP Server 6.2にエクスポートしようとすると、OLAP Server 6.2ではaggmapを処理できないため、エラーが発生します。
EVERSIONファンクションを使用すると、ターゲットの内部リリースやビルド番号を判別できます。
構文
EIFVERSION = n
パラメータ
例
例5-32 異なるリリース間でのエクスポートおよびインポート
この例では、Oracle OLAPからEIFファイルにデータをエクスポートし、次にOLAP Server 6.2でこのデータをインポートする場合のEIFVERSIONの使用方法を示します。
次の文(ターゲットのOLAP Server 6.2から発行)を実行すると、
SHOW EVERSION
次のリリース情報およびビルド情報が返されます。
Module Mgr, Version: 6.2.0.0.0, Build: 60232 OES Kernel, Version: 6.2.0.0.0, Build: 60232
次の文を実行すると、(60232より後のビルド番号を持つ)Oracle OLAPから、OLAP Server 6.2で読取り可能なEIFファイルにデータがエクスポートされます。
EIFVERSION = 60232 EXPORT ALL TO EIF FILE 'myeif.eif'
5.32 ERRNAMES
ERRNAMESオプションは、ERRORTEXTオプションの値にエラーの名前(つまり、ERRORNAMEオプションの値)およびエラー・メッセージのテキストを格納するかどうかを制御するオプションです。
データ型
BOOLEAN
構文
ERRNAMES = {NO|YES}
例
例5-33 ERRNAMESの設定に応じたERRORTEXTの値
次のプログラムを実行するとします。
VARIABLE myint INTEGER myint = 35/0 SHOW ERRORTEXT
ERRNAMESの値をYES
に設定すると、プログラムからはERRORTEXTの値として次の内容が返されます。
ERROR: (MXXEQ01) A division by zero was attempted. (If you want NA to be returned as the result of a division by zero, set the DIVIDEBYZERO option to YES.)
ERRNAMESの値をNO
に設定すると、プログラムからはERRORTEXTの値として次の内容が返されます。
ERROR: A division by zero was attempted. (If you want NA to be returned as the result of a division by zero, set the DIVIDEBYZERO option to YES.)
5.33 ERRORNAME
ERRORNAMEオプションは、プログラムまたはOLAP DML文を実行したときに発生した最初のエラーの名前を保持するオプションです。
データ型
TEXT
構文
ERRORNAME
使用上の注意
ERRORNAMEとSIGNAL
独自のエラー条件をプログラム内に作成するには、SIGNALコマンドを使用します。SIGNALを使用すると、ERRORNAMEおよびERRORTEXTは、指定した値に設定されます。
特別な名前PRGERR
をSIGNALコマンドとともに使用すると、エラーが発生したコール側プログラムと通信できます。SIGNAL PRGERR
コマンドは、ERRORNAMEを空白値に設定し、別のエラー・メッセージを表示することなく、エラー条件をコール側プログラムに渡します。SIGNALを使用して、ネストしたプログラムの連鎖を経由してOracle OLAPエラーを渡す方法については、TRAPコマンドを参照してください。
例
例5-34 TRAPでのERRORNAMEの使用
TRAPコマンドを使用してエラーを処理するレポート・プログラムでは、SIGNALコマンドを使用することにより、現行の出力ファイルに適切なエラー名を送ることができます。
DEFINE myreport PROGRAM LD Monthly Report PROGRAM TRAP ON CLEANUP NOPRINT PUSH month DECIMALS LSIZE PAGESIZE LIMIT month TO LAST 1 ... POP month DECIMALS LSIZE PAGESIZE RETURN CLEANUP: POP month DECIMALS LSIZE PAGESIZE SIGNAL ERRORNAME ERRORTEXT END
5.34 ERRORTEXT
ERRORTEXTオプションは、プログラムまたは文を実行したときに表示された最初のエラー・メッセージのテキストを保持するオプションです。メッセージがERRORTEXTに置かれているエラーの名前は、ERRORNAMEオプションに格納されています。
データ型
TEXT
構文
ERRORTEXT
例
例5-35 SIGNALコマンドでのERRORTEXT
TRAPコマンドを使用してエラーを処理するレポート・プログラムでは、SIGNALコマンドを使用することにより、現行の出力ファイルに適切なエラーメッセージを送ることができます。
DEFINE myreport PROGRAM LD Monthly Report PROGRAM TRAP ON CLEANUP NOPRINT PUSH month DECIMALS LSIZE PAGESIZE LIMIT month TO LAST 1 ... POP month DECIMALS LSIZE PAGESIZE RETURN CLEANUP: POP month DECIMALS LSIZE PAGESIZE SIGNAL ERRORNAME ERRORTEXT END
5.35 ESCAPEBASE
ESCAPEBASEオプションは、CONVERTファンクションのINFILEキーワードによって生成されるエスケープ文字のタイプを指定するオプションです。
構文
ESCAPEBASE = 'escape-type'
パラメータ
例
ESCAPEBASEをCONVERTとともに使用し、テキスト値をエスケープ・シーケンスに変換する例は、例7-50を参照してください。
5.36 EXPTRACE
EXPTRACEオプションは、PRGTRACEオプションがYES
に設定されている場合に、EXPRESS
というアナリティック・ワークスペース内のOLAP DMLプログラムをトレースするかどうかを制御するためのオプションです。EXPRESS
アナリティック・ワークスペースは常にアタッチされており、主に、OLAP DML文として記述されるOLAP DMLプログラムとその他の「補助的な」OLAP DMLプログラムで構成されています。
データ型
BOOLEAN
構文
EXPTRACE = {YES|NO}
パラメータ
使用上の注意
OLAP DML文として記述されたOLAP DMLプログラムを識別する方法
一部のOLAP DML文は、OLAP DMLプログラムとして実装されています。これらのプログラムには、EXPTRACEを使用できます。これらのプログラムのリストを現行の出力ファイルに出力するには、次の文を発行します。
SHOW AW(PROGRAM 'express')
例
例5-36 システムDMLプログラムのトレース
次の文を発行すると、ユーザー定義のプログラムの他にLISTNAMESやALLSTATなどのシステムDMLプログラムがトレースされます。
PRGTRACE = YES EXPTRACE = YES
5.37 INF_STOP_ON_ERROR
INF_STOP_ON_ERRORオプションでは、INFILE文の実行中にエラーが発生した場合のOracle OLAPの動作を指定します。
構文
INF_STOP_ON_ERROR = {YES|NO}
例
例5-37 DBMS_EXECUTEでのINF_STOP_ON_ERRORの使用方法
myaw
という名前のアナリティック・ワークスペースをデタッチする次のOLAP DML文を含むattachmyaw.inf
というファイルがあるとします。
AW DETACH myaw
SQLアプリケーションにより、attachmyaw.infinfile
ファイルを読み取るためのINFILE文を含むDBMS_AW.EXECUTE
文が発行される際、myaw
ワークスペースがアタッチされていないとします。
INF_STOP_ON_ERRオプションがNO
に設定されている場合は、「Analytic workspace MYAW is not attached
」というエラーがレポートされても、Oracle OLAPではそのままファイルの読取りが続行され、DBMS_AW.EXECUTE
プロシージャは完了するまで正常に実行されます。
DBMS_AW.EXECUTE('INF_STOP_ON_ERR = NO '); DBMS_AW.EXECUTE('INFILE attachmyaw.inf'); The current directory is MYDIR. ERROR: (ORA-34344) Analytic workspace MYAW is not attached. ERROR: (ORA-34344) Analytic workspace MYAW is not attached. PL/SQL procedure successfully completed.
INF_STOP_ON_ERRオプションがYES
に設定されている場合は、「Analytic workspace MYAW is not attached
」というエラーがレポートされると、Oracle OLAPではファイルの読取りが中止され、DBMS_AW.EXECUTE
プロシージャは中断されます。
DBMS_AW.EXECUTE('INF_STOP_ON_ERR = YES '); DBMS_AW.EXECUTE('INFILE attachmyaw.inf'); The current directory is MYSPL. DECLARE * ERROR at line 1: ORA-35166: (ORA-34344) Analytic workspace MYAW is not attached. ORA-06512: at "SYS.DBMS_AW", line 27 ORA-06512: at "SYS.DBMS_AW", line 115 ORA-06512: at line 8
5.38 LCOLWIDTH
LCOLWIDTHオプションは、レポートのラベル列のデフォルト幅を制御します。ROWコマンドおよびHEADINGコマンドからの出力に対して、LCOLWIDTHは最初の列に影響します。REPORTコマンドからの出力に対して、最初の列がコンポジットまたは結合ディメンションのベース・ディメンションを表すデータ列または列のセットの一部である場合を除き、LCOLWIDTHは最初の列に影響します。
注意:
個々の列では、LCOLWIDTHの値は常にHEADING、REPORTまたはROWコマンドのWIDTH属性によって変更されます。
関連項目:
データ型
INTEGER
構文
LCOLWIDTH = n
パラメータ
例
例5-38 デフォルト列幅の設定
6か月間の売上数量を参照するとします。最も長い製品名は10文字なので、ラベル列にデフォルト幅の14文字は必要ありません。また、販売数量も多くないので、データ列に10文字の幅は必要ありません。LCOLWIDTHおよびCOLWIDTHを設定して、デフォルト列幅を小さくします。
LIMIT district TO 'Atlanta' LIMIT month TO 'Oct95' TO 'Mar96' LCOLWIDTH = 10 COLWIDTH = 6 REPORT ACROSS month: units
これらの文によって生成される出力は次のとおりです。
DISTRICT: ATLANTA ------------------UNITS------------------ ------------------MONTH------------------ PRODUCT Oct95 Nov95 Dec95 Jan96 Feb96 Mar96 ---------- ------ ------ ------ ------ ------ ------ Tents 503 345 259 279 305 356 Canoes 317 282 267 281 309 386 Racquets 1,365 1,270 1,357 1,125 1,304 1,263 Sportswear 3,065 2,327 1,955 2,591 2,829 3,137 Footwear 3,445 3,247 2,831 3,089 3,282 3,475
5.39 LIKECASE
LIKECASEオプションは、LIKE演算子で大文字と小文字を区別するかどうかを制御します。
ヒント:
LIKENLオプションは、LIKE演算子が改行文字を認識するかどうかを制御します。
データ型
BOOLEAN
構文
LIKECASE = {YES|NO}
例
例5-39 LIKECASEの影響
次の文は、LIKECASEオプションの使用方法を示します。
LIKECASE = YES SHOW 'oracle' LIKE 'Oracle%'
このSHOW文の出力は次のとおりです。
NO
次のSHOW文
SHOW 'ORACLE' LIKE '%orc%'
によって、次の出力が生成されます。
NO
次の文により
LIKECASE = NO SHOW 'ORACLE' like 'orc%'
によって、次の出力が生成されます。
YES
5.40 LIKEESCAPE
LIKEESCAPEオプションによって、LIKE演算子にエスケープ文字を指定できます。
データ型
ID
構文
LIKEESCAPE = char
パラメータ
使用上の注意
エスケープ文字の使用
LIKEのエスケープ文字によって、LIKE演算子のワイルドカード文字を含むテキスト式を検索できます。LIKE演算子のワイルドカード文字には、1文字と一致するアンダースコア(_
)と、ゼロ文字以上の文字列と一致するパーセント文字(%
)があります。
テキスト比較にアンダースコアまたはパーセント文字を含めるには、最初にLIKEESCAPEオプションによってエスケープ文字を指定します。その後に、LIKEの式で、指定したLIKEESCAPE文字をアンダースコアまたはパーセント文字の前に付けます。
バックスラッシュ(\
)はOLAP DMLの標準のエスケープ文字なので、LIKEのエスケープ文字としてバックスラッシュを使用しない場合があります。そのため、2つのバックスラッシュによって、LIKEESCAPEが2番目のバックスラッシュをリテラル文字として扱うように示す必要があります。
例
例5-40 LIKE演算子でのエスケープ文字の使用
この例は、エスケープ文字を指定する方法、およびそれをLIKE演算子で使用する方法を示します。
次のテキスト値を含むprodstat
という名前の変数があるとします。
DEFINE prodstat TEXT <product> prodstat(product 'Tents') = - 'What are the results of the fabric testing?' prodstat(product 'Canoes') = - 'How has the flooding affected distribution?' prodstat(product 'Racquets') = - 'The best-selling model is Whack_it!' prodstat(product 'Sportswear') = - '90% of the stock is ready to ship.' prodstat(product 'Footwear') = - 'When are the new styles going to be ready?'
prodstat
変数のセルに含まれるテキストで特定の文字を検索するfindeschar
という名前の次のプログラムがあります。このプログラムはLIKE演算子を使用します。
ARGUMENT findstring TEXT FOR product IF prodstat LIKE findstring THEN SHOW JOINCHARS(product ' - ' prodstat)
パーセント文字(%
)またはアンダースコア(_
)を含むテキスト値をプログラムで検索できるようにするために、LIKEESCAPEオプションを使用してエスケープ文字を指定する必要があります。エスケープ文字に疑問符(?
)を使用するとします。エスケープ文字を疑問符に設定する前は、次の文によって、疑問符を含むテキストが検索されます。
CALL findeschar('%?%') "Find any text that contains a question mark.
この文によって生成される出力は、次のとおりです。
Tents - What are the results of the fabric testing? Canoes - How has the flooding affected distribution? Footwear - When are the new styles going to be ready?
次の文は、エスケープ文字として疑問符(?
)を指定し、FINDESCHARプログラムをコールします。
LIKEESCAPE = '?' CALL findeschar('%?%') "Find any text that ends with a percent character.
パーセント文字で終わるテキスト値がprodstat
にないため、この文によって検索されるテキストはありません。パーセント文字を含むテキストを検索するには、次の文のように、ワイルドカード文字をもう1つ追加します。LIKEESCAPEは、最初のパーセント文字をゼロ文字以上と一致するワイルドカードとして解釈し、2番目のパーセント文字をリテラルのパーセント文字(%)として解釈し(前に疑問符のエスケープ文字があるため)、3番目のパーセント文字をもう1つのワイルドカード文字として解釈します。この結果、LIKEESCAPEは、前後にゼロ文字以上あるパーセント文字を検索します。
CALL findeschar('%?%%') "Find any text that contains a percent character.
この文によって生成される出力は、次のとおりです。
Sportswear - 90% of the stock is ready to ship.
次の文は、アンダースコアを含むテキストを検索します。
CALL findeschar('%?%') "Find any text that contains an underscore.
この文によって生成される出力は、次のとおりです。
Racquets - The best-selling model is Whack_it!
次の文は、エスケープ文字を二重にして、エスケープ文字を含むテキストを検索します。
CALL findeschar('%??%') "Find any text that contains a question mark.
この文によって生成される出力は、次のとおりです。
Tents - What are the results of the fabric testing? Canoes - How has the flooding affected distribution? Footwear - When are the new styles going to be ready?
例5-41 LISTNAMESプログラムでのエスケープ文字の使用
この例は、LIKE引数のワイルドカード文字を含むオブジェクトの名前を検索する方法を示します。次の文は、LIKEESCAPEオプションを使用してエスケープ文字を指定し、アンダースコアを含む2つのオブジェクト名を定義し、名前にアンダースコアが含まれるディメンションをリスト表示します。
LIKEESCAPE = '?' DEFINE my_textdim DIMENSION TEXT DEFINE my_intdim DIMENSION INTEGER LISTNAMES DIMENSION LIKE '%?%'
この文によって生成される出力は、次のとおりです。
3 DIMENSIONs ---------------- MY_INTDIM MY_TEXTDIM _DE_LANGDIM
5.41 LIKENL
LIKENLオプションは、テキスト値がテキスト・パターンと似ているかどうかを判定する際に、LIKE演算子がテキスト式の各行の間にある改行文字を認識するかどうかを制御します。(OLAP DMLの改行文字の表記は\n
です。)
LIKENLオプションは、LIKE演算子で比較する両方のテキスト式に適用されます。
データ型
BOOLEAN
構文
LIKENL = {YES|NO}
パラメータ
例
例5-42 LIKENLの影響
次の文は、LIKENLオプションの使用方法を示しています。
-
次の文
SHOW textvar
によって、次の出力が生成されます。
Hello world
-
次の文により
LIKENL = YES SHOW textvar LIKE '%low%'
によって、次の出力が生成されます。
NO
-
次の文
SHOW ' Hello\nworld' LIKE '%\n%'
によって、次の出力が生成されます。
YES
-
次の文
SHOW 'Hello\nworld' LIKE '%low%'
によって、次の出力が生成されます。
NO
-
次の文により
LIKENL = NO SHOW textvar LIKE '%low%'
によって、次の出力が生成されます。
YES
-
次の文
SHOW 'Hello\nworld' LIKE '%\n%'
によって、次の出力が生成されます。
YES
-
次の文
SHOW 'Hello\nworld' LIKE '%low%'
によって、次の出力が生成されます。
YES
5.42 LIMIT.SORTREL
LIMIT.SORTRELオプションは、ディメンションを関連ディメンションに制限する際に、ソートを行うかどうかを制御するオプションです。
データ型
BOOLEAN
構文
LIMIT.SORTREL = {YES|NO}
パラメータ
使用上の注意
ソートの説明
通常、ディメンションを関連ディメンションに制限すると、制限されるディメンションの値は、関連ディメンションの順序に従って配置されます。関連ディメンションの値に関連する最初のディメンションの値が複数の場合、値は、最初のディメンションのデフォルト・ステータスの順序でソートされます。LIMIT.SORTRELで抑制するのはこのソートです。
LIMIT.SORTRELがNOの場合の出力リスト
LIMIT.SORTRELをNO
に設定すると、指定した任意のディメンションの値に対するリストが論理的な順序で出力されない場合があります。
例
例5-43 効率的な処理
product
という大きなディメンションでディメンション化されている変数で計算を実行するとします。product
ディメンションには、カテゴリ、ベンダー、ブランドなど、製品階層のすべてのレベルが組み込まれています。product
とproductlevel
の間の関係を使用して、一度に1レベルずつ計算を実行するとします。この計算では、ディメンション値の順序は重要でなく、さらにproduct
を関連ディメンションで制限しているため、処理の効率がより向上するLIMIT.SORTRELを使用して不要なソートを抑制します。
LIMIT.SORTREL = NO
5.43 LIMITSTRICT
LIMITSTRICTオプションはBOOLEANオプションです。存在しない値が、LIMITコマンド、LIMITファンクションまたはQDRの値のリストに含まれている際のOracle OLAPの動作がこのオプションにより決まります。
構文
LIMITSTRICT = YES | NO
パラメータ
例
例5-44 LIMITSTRICTをYESに設定することによる制限
次のような定義と値を持つ2つのディメンション(prod
とyear
)および1つの変数(sales
)があるとします。
DEFINE prod DIMENSION TEXT DEFINE year DIMENSION TEXT DEFINE sales VARIABLE INTEGER <prod year> PROD -------------- Radios TVs YEAR -------------- 2003 2004 --------SALES-------- --------PROD--------- YEAR Radios TVs -------------- ---------- ---------- 2003 2,459 3,534 2004 3,366 3,018
LIMITSTRICTをYES
に設定すると、'IDontExist'
の存在しないprod
値による制限の要求は、無効な値による制限の要求として処理されます。
-
prod
を存在しない値に制限すると、ORA-34706エラー・メッセージが表示され、prod
のステータスにある値は変更されません。->LIMIT prod to 'Idontexist' ORA-34706: Idontexist is not a valid TESTLIMITSTRICT!PROD. ->REPORT prod PROD -------------- Radios TVs
-
prod
を、存在しない値が含まれる値のリストに制限すると、ORA-34706エラー・メッセージが表示され、prod
のステータスにある値は変更されません->LIMIT prod to 'Idontexist' 'Radios' ORA-34706: Idontexist is not a valid TESTLIMITSTRICT!PROD. ->REPORT prod PROD -------------- Radios TVs
-
sales
に対して、QDR内の存在しないprod
値を指定した場合も、ORA-34706エラー・メッセージが表示されます。->REPORT sales (year '2004'prod 'IDontExist') ORA-34706: IDontExist is not a valid TESTLIMITSTRICT!PROD.
例5-45 LIMITSTRICTをNOに設定することによる制限
例5-44で説明した2つのディメンション(prod
とyear
)および1つの変数(sales
)があるとします。
LIMITSTRICTをNO
に設定すると、'IDontExist'
の存在しないprod
値による制限の要求は、NA
値による制限の要求として処理されます。
-
prod
を存在しない値に制限すると、ORA-35654エラー・メッセージが表示され、prod
のステータスにある値は変更されません。->LIMIT prod to 'Idontexist' ORA-35654: The status of the TESTLIMITSTRICT!PROD dimension cannot be set to null. ->REPORT prod PROD -------------- Radios TVs
-
prod
を、存在しない値を含む値のリストに制限すると、エラー・メッセージは表示されません。この場合、prod
は、既存の値に制限されます。->LIMIT prod to 'Idontexist' 'Radios' ->REPORT prod PROD -------------- Radios
-
sales
に対して、QDR内の存在しないprod
値を指定すると、エラー・メッセージは表示されません。この場合、sales
のレポートにNA
値が表示されます。->REPORT sales (year '2004'prod 'IDontExist') ---------- NA
5.44 LINENUM
LINENUMオプションは、出力の現行の行数を示すオプションです。出力行が生成されるごとに、値が自動的に増加します。LINENUMオプションは、PAGINGの設定がYES
の場合にのみ有効であり、REPORTやLISTNAMESなどのコマンドからの出力に対してのみ適用されます。
関連項目:
データ型
INTEGER
構文
LINENUM = n
使用上の注意
新しいページの開始
PAGINGをYES
に設定すると、出力に各行が生成されるたびにLINENUMが1
ずつ増加します。LINENUMがPAGESIZEからBMARGINを引いた値と等しくなると、新しいページが自動的に作成されます。
新しいページの最初の行で、LINENUMは自動的に1
にリセットされます。
LINENUMとPAGESIZEの比較
PAGESIZEにはページ下の余白の行も含まれるため、BMARGINに0
(ゼロ)よりも大きい数字が設定されている場合は、LINENUMがPAGESIZEに到達することはありません。
LINENUMでのPAGINGの効果
PAGINGをNO
(デフォルト)に設定すると、LINENUMオプションの値は出力行の生成数に応じて増加します。PAGINGをYES
に設定すると、LINENUMは1
に設定され、現行ページの行数のカウントが開始されます。
LINENUMでのOUTFILEの効果
OUTFILE文を使用して出力をファイルに送信すると、LINENUMはそのファイルに対して1
に設定されます。OUTFILEでEOFキーワードを使用して出力をデフォルトの出力ファイルにリダイレクトすると、LINENUMの値は、デフォルトの出力ファイルに対して最後に保持していた値になります。
出力のLINENUMの送信
LINENUMの値を含む出力を生成し、この出力によって新しいページが作成されると、出力が単一行から構成されている場合、LINENUMの値は1
として記録されます。ただし、出力が複数行の値で構成されている場合は、LINENUMの値がPAGESIZEより大きい値として記録されることもあります。
例
例5-46 一定したヘッダー・サイズの保持
ページごとにヘッダーが1行になる場合と2行になる場合があるとします。この違いにかかわらず、ヘッダー下の定位置にページの左端から右端まで線を引くとします。レポート・プログラムで使用するページ・ヘッダー・プログラムに、次の文を含めます。
WHILE LINENUM LT 5 BLANK ROW W LSIZE ROW CENTER '--------------------------------'
5.45 LINESLEFT
(読取り専用)LINESLEFTオプションは、現行ページの残りの行数を保持するオプションです。LINESLEFTオプションは、PAGINGの設定がYES
の場合にのみ有効であり、REPORTやLISTNAMESなどのコマンドからの出力に対してのみ適用されます。
データ型
INTEGER
構文
LINESLEFT
使用上の注意
改ページの制御
LINESLEFTは、主にレポート・プログラムで、特定のページ上の残りの行数を確認するために使用されます。レポートが1ページの途中で終わり、改ページで区切る必要がない場合、PAGE文を使用して新しいページをスキップできます。
LINESLEFTでのPAGESIZEの効果
PAGESIZEの値を変更すると、それに合せてLINESLEFTの値も調整されます。まず、PAGESIZEの古い値からLINESLEFTの値が差し引かれ、すでに使用されている行数が得られます。その後、この結果の値がPAGESIZEの新しい値から差し引かれ、LINESLEFTの新しい値が得られます。LINESLEFTが1よりも小さくなる場合は、次の出力行で新しいページが作成されます。
LINESLEFTでのPAGINGの効果
PAGINGをNO
に設定すると、LINESLEFTはPAGESIZEの値に設定され、PAGINGがYES
に設定されるまでこの値が保持されます。PAGINGをYES
に設定すると、LINESLEFTによって現行ページの行数のカウントが開始されます。
LINESLEFTでのOUTFILEの効果
OUTFILE文を使用して出力をファイルに送信すると、LINESLEFTはそのファイルに対して66
に設定され、PAGESIZEのデフォルト値と一致します。PAGESIZEを現行の出力ファイルの新しい値に設定すると、それに合せてLINESLEFTも調整されます。たとえば、出力をファイルに送信し、PAGESIZEを40
に設定するとします。この場合、Oracle OLAPによって、そのファイルのLINESLEFTが40
に設定され、これによって、PAGINGがYES
に設定されている場合は、ファイルへの出力の最初の行で新しいページが作成されます。
OUTFILE文でEOFキーワードを使用して出力をデフォルトの出力ファイルにリダイレクトすると、LINESLEFTの値は、デフォルトの出力ファイルに対して最後に保持していた値になります。
出力のLINESLEFTの送信
LINESLEFTの値を含む出力を生成した場合、この値を含む行はLINESLEFTを記録する値には含まれません。
例
例5-47 脚注を含める場合
レポートのページの一番下に、空白の2行に続いて1行の脚注を含めるとします。次の文を使用して、ページ内の残りの行が3行になったら脚注を生成するように指定します。
IF LINESLEFT EQ 3 THEN DO BLANK 2 ROW W 50 'Subject To Change Without Notice.' DOEND
5.46 LOCK_LANGUAGE_DIMS
LOCK_LANGUAGE_DIMSオプションでは、言語ディメンションのステータスを変更可能にするかどうかを指定します。
関連項目:
$DEFAULT_LANGUAGE、$DEFAULT_LANGUAGEプロパティ、SESSION_NLS_LANGUAGEオプションおよびSTATIC_SESSION_LANGUAGEオプションの「言語ディメンション・ステータスの処理」。
データ型
BOOLEAN
構文
LOCK_LANGUAGE_DIMS= TRUE | FALSE
パラメータ
- TRUE
-
LIMIT文が言語ディメンションのステータスの制限を試行するとエラーを返すように指定します。
LOCK_LANGUAGE_DIMSオプションの値がプログラムによってFALSEからTRUEに変更されると、Oracle OLAPは、SESSION_NLS_LANGUAGEオプションの値に従って、アタッチされたすべてのアナリティック・ワークスペースの言語ディメンションのステータスをリセットします。
- FALSE
-
言語ディメンションのステータスをALLに設定し、LIMITを使用してプログラムで言語ディメンションのステータスを変更できるように指定します。
LOCK_LANGUAGE_DIMSオプションの値がプログラムによってTRUEからFALSEに変更されると、Oracle OLAPは、アタッチされたすべてのアナリティック・ワークスペースの言語ディメンションのステータスをALLにリセットします。
例
例5-48 言語ディメンションの明示的な制限
アナリティック・ワークスペースに、次の定義および値を持つmylangs
という名前の言語ディメンションがあるとします。
DEFINE MYLANGS DIMENSION TEXT PROPERTY '$DEFAULT_LANGUAGE' - 'AMERICAN' MYLANGS -------------- FRENCH AMERICAN
また、次のレポートに示すように、アナリティック・ワークスペースをアタッチする際にmylangs
のステータスがAmericanである場合を考えます。
REPORT mylangs MYLANGS -------------- AMERICAN
次のコードに示すように、LOCK_LANGUAGE_DIMSの値を最初にFALSEに設定してLIMITを使用するとmylangs
のステータスをFrenchに明示的に変更できます。LOCK_LANGUAGE_DIMSの値がデフォルト値のTRUEの場合、言語ディメンションに対してLIMITは使用できません。
" Try to LIMIT mylangs LIMIT mylangs to 'FRENCH' ORA-33558: The status or contents of the MYAW3!MYLANGS dimension cannot be changed while the LOCK_LANGUAGE_DIMS option is set to yes. " Got an error SHOW LOCK_LANGUAGE_DIMS TRUE " Got the error because LOCK_LANGUAGE_DIMS was TRUE "Change LOCK_LANGUAGE_DIMS to FALSE LOCK_LANGUAGE_DIMS = FALSE " Try to LIMIT mylangs again LIMIT mylangs TO 'FRENCH' " Verify if the LIMIT worked. It did REPORT mylangs MYLANGS -------------- FRENCH " Then relock the language LOCK_LANGUAGE_DIMS = TRUE
5.47 LSIZE
LSIZEオプションは、STDHDRプログラムが標準ヘッダーを中央揃えする行サイズを定義するオプションです。LSIZEは、レポート・プログラムの初期化セクションで設定できます。
データ型
INTEGER
構文
LSIZE = n
パラメータ
使用上の注意
レポート・セグメントの中央揃え
STDHDRは、実行中のページのヘッダーをLSIZEの幅で中央揃えするため、LSIZEを使用してレポートの一部分を中央揃えできます。(最初に、LSIZEをレポート内の最も長い行の幅に設定します。)
中央揃えしたヘッダーの作成
LSIZEを使用して、ユーザー自身が作成した各ページやセクションの最初にあるヘッダーを中央揃えできます。まず、LSIZEをユーザーが作成した行の幅に設定します。その後、ユーザー自身のヘッダーのテキストの前で、LSIZEの幅およびキーワードCENTERを指定してHEADING文を使用します。例5-49を参照してください。
ファイルに対するLSIZEの設定
ファイルに対してLSIZEを設定するには、最初にOUTFILE文でファイルの名前を指定して現行の出力ファイルにしてから、LSIZEを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、そのファイルに対してLSIZEは80のデフォルト値に戻ります。
LSIZEをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、LSIZEの値はデフォルトの出力ファイルに対して自動的に保存されます。
例
例5-49 ヘッダーの中央揃え
読者がメモを記入できる余白を十分に取るため、四半期ごとの売上レポートを50文字という短い行幅で作成するとします。ヘッダーを中央揃えにするには、レポート・プログラムの先頭近くに次の行を含めます。
PAGEPRG = 'stdhdr' LSIZE = 50 PAGING = YES PAGE HEADING WIDTH LSIZE CENTER 'Quarterly Sales'
レポートの最初に、次の出力が生成されます。
96/05/13 15:05:16 PAGE 1 Quarterly Sales
5.48 MAXFETCH
MAXFETCHオプションは、OLAP_TABLE
ファンクションのOLAP_commandパラメータに指定したFETCH文によって生成されるデータ・ブロックの上限サイズを設定するオプションです。
関連項目:
FETCH文の使用方法の詳細は、FETCHコマンドを参照してください。OLAP_TABLE
ファンクションの詳細は、『Oracle OLAP DMLリファレンス』を参照してください。
戻り値
INTEGER
構文
MAXFETCH = integer-expression
パラメータ
使用上の注意
OLAP_TABLEを使用した問合せのパフォーマンスの改善
MAXFETCHの設定は、OLAP_TABLE
ファンクションを使用した問合せのパフォーマンスに影響します。高い値に設定すると、OLAP_TABLE
ファンクションの結合を使用したサイズの大きい問合せを迅速に実行できます。ただし、設定値が高ければ高いほどメモリーが多く使用されるため、複数のユーザーがいる環境下ではパフォーマンスが低下する可能性があります。MAXFETCHの設定は、使用するOLAP_TABLE
ファンクションが1つしかないSELECT
には影響しません。
MAXFETCHが原因となるFETCHエラー
FETCHを実行した際に、MAXFETCHで設定した制限サイズ内でデータ・ブロックをパッケージできないと、エラーが生成され、クライアントにデータが返されません。大量のデータをフェッチした場合、MAXFETCHを設定することによって、メモリー不足ではなくエラーを生成させることができます。
例
データ・ブロックを4Kに制限する場合
次の文を使用して、データ・ブロックのサイズを4Kに制限します。
MAXFETCH = 4096
5.49 MODDAMP
MODDAMPオプションは、モデルの連立方程式の解法としてGauss-Seidel法を使用する際、反復間の振動を減衰させる加重係数を指定するオプションです。MODDAMPによって、方程式間の振動が安定しているために収束しないモデルを解決することが可能となります。振動が安定すると、制動しないかぎり振動は減衰しません。
Oracle OLAPでGauss-Seidel法を使用すると、連立方程式のブロックでの各反復ごとに、各モデル方程式の収束または発散が判定されます。判定は、現行の反復の結果と前回の反復の結果を比較することによって行われます。MODDAMPにゼロより大きい加重係数を指定すると、各反復後に判定および格納される値は、現行の結果と前回の結果の加重平均になります。したがって、反復間で振動する方程式にMODDAMPを使用すると、振動を抑制でき、方程式の発散を回避して収束を速めることができます。
データ型
DECIMAL
構文
MODDAMP = {n|0.00}
パラメータ
- n
-
加重係数を指定するゼロ以上で1より小さい小数値。MODDAMPが0.00に近いほど、現行の反復の値により大きな加重が設定されます。デフォルト値は0.00で、現行の反復に最大の加重が設定されます。
Oracle OLAPでは、MODDAMPがゼロより大きい場合、現行の反復の加重平均は次のように計算されます。
calcvalue * (1 - MODDAMP) + weightavg
ここで
-
calcvalueは、現行の反復でモデル方程式から計算される値です。
-
weightavgは、前回の反復で計算された加重平均です。
「格納される加重平均」を参照してください。
-
使用上の注意
解法の指定
MODDAMPオプションは、Gauss-Seidel法で連立方程式を解決する場合にのみ使用します。使用する解法は、MODSIMULTYPEオプションで決定します。MODSIMULTYPEで設定可能な値は、Gauss-Seidel法を示すGAUSS
と、Aitkensデルタ2乗法を示すAITKENS
です。
収束速度に対するMODDAMPの影響
MODDAMPは、反復間で振動するかどうかにかかわらず、各連立ブロックにあるすべてのモデル方程式の結果を計算するときに使用します。振動しない方程式では、MODDAMPの値がゼロより大きいと、収束が遅くなります。したがって、モデルに振動する方程式と振動しない方程式が混在している場合は、MODDAMPを0.20
などゼロ以外の小さな値に設定することで、全体の収束速度を上げることができます。ゼロ以外の小さな値を設定すると、振動しない方程式の収束速度は多少下がりますが、振動する方程式の収束速度は上がります。
格納される加重平均
モデル方程式が現行の反復で収束または発散しない場合は、現行の反復で計算された加重平均が格納されます。Oracle OLAPでは、この格納された平均値がweightavg(前回の反復で計算された加重平均)として次の反復での加重平均の計算式で使用されます。
ブロックの最初の反復では、ターゲット変数(またはディメンション値)の開始値がweightavg(前回の反復で計算された加重平均)として使用されます。
反復結果の比較
各反復における収束および発散を判定する場合、Oracle OLAPでは、現行の反復の結果と前回の反復の結果を比較します。MODDAMPがゼロより大きい場合、Oracle OLAPは、次のように計算した比較値を判定します。
(weightavg - weightavg) / (weightavg PLUS MODGAMMA)
ここで、weightavgは、前回の反復で計算された加重平均です。
収束判定の説明は、MODTOLERANCEオプションを参照してください。発散判定の説明は、MODOVERFLOWオプションを参照してください。
連立ブロックの解決を制御するオプション
MODDAMPの値の変更は、連立ブロックの収束の加速や達成のために試行する手段の1つです。MODELには、連立ブロックの解決を制御するために使用できる他のオプションがリストされており、モデルの実行およびデバッグに関する情報も掲載されています。
例
例5-50 MODDAMPのデフォルト値の使用
次の文では、income.bud
というモデルをトレースし、連立ブロックの解法としてGauss-Seidel法を指定して、ディメンションを制限し、income.bud
モデルを実行します。
MODTRACE = YES MODSIMULTYPE = 'GAUSS' LIMIT division TO 'Camping' income.bud budget
これらの文によって生成される出力は次のとおりです。
(MOD= INCOME.BUD) BLOCK 1: SIMULTANEOUS (MOD= INCOME.BUD) ITERATION 1: EVALUATION (MOD= INCOME.BUD) revenue = marketing * 300 - cogs ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 35) = 368.650399101 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 36) = 369.209604252 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 37) = 368.718556135 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 38) = 369.149674626 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 39) = 368.771110244 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 40) = 369.103479583 (MOD= INCOME.BUD) END BLOCK 1
MODDAMPオプションは、デフォルト値の0.00に設定されています。Revenue明細項目の方程式は、連立方程式のブロックでの40回目の反復で収束しました。トレース行で、最後の6回の反復でRevenue明細項目に対して計算された結果を確認できます。
例5-51 モデルの収束速度を上げるためのMODDAMPの設定
次の文で、MODDAMPの値を変更し、income.bud
を実行します。
MODDAMP = 0.2 income.bud budget
これらの文によって生成される出力は次のとおりです。
(MOD= INCOME.BUD) BLOCK 1: SIMULTANEOUS (MOD= INCOME.BUD) ITERATION 1: EVALUATION (MOD= INCOME.BUD) revenue = marketing * 300 - cogs (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 1) = 276.200000000 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 2) = 416.187139753 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 3) = 368.021098186 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 4) = 367.209906847 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 5) = 369.271224267 ... (MOD= INCOME.BUD) BUDGET (LINE REVENUE MONTH 'JAN97' ITER 6) = 368.965397407 (MOD= INCOME.BUD) END BLOCK 1
「例5-50」では、Revenue
明細項目の方程式は40回目の反復で収束しました。この例では、MODDAMPを0.2
に設定しているため、同じ方程式が6回目の反復で収束しています。
5.50 MODERROR
MODERRORオプションは、指定した反復回数内でモデルの連立方程式のブロックが解決しない場合にOracle OLAPが実行するアクションを決定するオプションです。
注意:
連立ブロックの解決を制御するオプションの説明は、「モデル・オプション」を参照してください
データ型
ID
構文
MODERROR = {'STOP'|'CONTINUE'}
パラメータ
使用上の注意
ブロックの解決の失敗
連立ブロックのすべての方程式が収束したと判定されると、ブロックは解決されたとみなされます。いずれかの方程式が、指定した反復回数内に発散するかまたは収束に失敗すると、ブロックの解決は失敗し、エラーが発生します。MODERRORでは、エラーが発生したときにOracle OLAPが実行するアクションを制御します。
モデルにおける連立ブロックの収束の達成
エラーが発生した際に、連立ブロックの解決を制御する1つ以上のオプションの値を変更することで、ブロックの収束を達成できる場合があります。たとえば、試行する反復の回数を増やすことによって、収束および発散を判定する際に使用する基準を変更できます。
「STOP」の使用
MODERRORがSTOP
に設定されており、エラーが原因でモデルの実行が停止した場合、MODEL.XEQRPTプログラムを実行すると、モデルの実行についてのレポートを生成できます。レポートには、解決に失敗したブロックが示され、連立ブロックの解決に使用されたモデル・オプションの値が表示されます。
「CONTINUE」の使用
MODERRORがCONTINUE
に設定されており、モデルの1つのブロックが連立ブロックで、そのブロックが発散するかまたは収束に失敗した場合、Oracle OLAPによって、モデルの残りのブロックが実行されます。
さらに、モデルのディメンションではないソリューション変数の追加のディメンションのステータスにある残りの値に対しても、Oracle OLAPによってモデルが実行されます。この場合、モデルの実行の終了後にMODEL.XEQRPTプログラムを実行すると、この追加のディメンションの最後の値の解決に関するレポートが生成されます。
モデルが追加のディメンションの最後の値に対して実行されたときに、モデルの連立ブロックが収束した場合は、それ以前に別のディメンション値に対するモデルの実行が失敗していても、MODEL.XEQRPT
は、ブロックが解決されたとしてレポートします。エラーが発生したディメンション値についてのMODEL.XEQRPT
を参照するには、MODERRORをSTOP
に設定し、モデルを再実行します。
例
例5-52 モデルのデバッグ
この例では、OLAP Worksheet経由で接続し、コマンド入力ウィンドウに次の文を入力するとします。連立ブロックが収束に失敗したときにmyModel
モデル(連立方程式のブロックを含むモデル)をデバッグできるように、文ではMODERRORをDEBUG
に設定しています。
MODERROR = 'DEBUG' myModel actual
連立ブロックが収束に失敗した場合は、OLAP Worksheetのコマンド入力ウィンドウにOracle OLAPコマンドまたはデバッガ・コマンドを入力します。ここでは、ソリューション変数actual
がdivision
によってディメンション化されているため、division
の現行の値を表示します。
SHOW division Camping
5.51 MODGAMMA
MODGAMMAオプションは、モデルの連立ブロックの方程式が反復間でどれだけ変化するかを判定する際に使用する値を指定するオプションです。MODGAMMAは、判定において、反復間の変化の絶対量と比例変化との比較の程度を制御します。MODGAMMAは、結果として非常に小さい値を算出する方程式を判定する際に特に重要です。
注意:
連立ブロックの解決を制御するオプションの説明は、「モデル・オプション」を参照してください
データ型
INTEGER
構文
MODGAMMA = {n|1}
パラメータ
- n
-
収束および発散の判定に使用する
INTEGER
値。Oracle OLAPでは、連立ブロック内の各方程式を計算する際、現行の反復と前回の反復における方程式の結果に基づく比較値を作成します。比較値が許容誤差として判定されると、方程式は収束したとみなされます。比較値がオーバーフローとして判定されると、方程式は発散したとみなされます。比較値は、次のように判定されます。
(thisResult - prevResult) DIVIDED BY (prevResult PLUS MODGAMMA)
ここで、thisResultは現行の反復の結果で、 prevResultは前回の反復の結果です。
Oracle OLAPによって、カッコで囲まれた式の絶対値が計算されます。MODGAMMAのデフォルト値は
1
です。
使用上の注意
収束の判定
収束判定では、MODTOLERANCEオプションによって、連続する反復間で一致する方程式の結果の近似の程度が決まります。MODTOLERANCEのデフォルト値である3
では、比較値が0.001
より小さい場合に、方程式が収束したとみなされます。
発散の判定
発散判定では、MODOVERFLOWオプションによって、連続する反復間で一致する方程式の結果の離散の程度が決まります。MODOVERFLOWのデフォルト値である3
では、比較値が1000
より大きい場合に、方程式が発散したとみなされます。
比較値
Oracle OLAPによる収束および発散の判定で評価される比較値は、基本的に比例値です。反復間の変化を、前回の結果の比率として表します。収束判定では、反復間の変化は前回の結果に比例して小さい必要があります。発散判定では、反復間の変化は前回の結果に比例して大きい必要があります。変化の絶対量ではなく比例値を判定することによって、Oracle OLAPでは、方程式の結果の大きさに関係なく、同一の判定基準をすべての方程式に適用できます。
ただし、判定される比較値は、厳密には比率ではありません。方程式の結果がゼロに近い場合、厳密な比率での比較値の分母はかぎりなくゼロに近くなり、そのため、全体として比較値自体が大きくなります。したがって、収束判定を満たすのは難しくなりますが、発散判定は満たしやすくなります。この問題を解決するために、Oracle OLAPでは、MODGAMMAの値を比較値の分母に加算します。MODGAMMAにデフォルト値の1が使用されている場合、MODGAMMAの影響は次のようになります。
-
方程式の結果がゼロに近い場合は、分母は1に近くなり、実際には、反復間の絶対変化を判定することになります。
-
方程式の結果が非常に大きい場合は、MODGAMMAを分母に加えることによる影響は無視できる程度であり、厳密な比率の判定に近くなります。
判定の感度の制御
方程式の値がゼロに近い場合は、MODGAMMAの値を変更することで、収束と発散の判定の感度を制御できます。方程式の結果の値が非常に小さい場合、MODGAMMAの値を変更して、実質的にモデル値の反復間の変化を小さくします。たとえば、MODGAMMAを1から2に変更すると、比較値は実質的に半分まで落ちます。結果として、発散が起こる可能性が減少します。
モデル方程式の収束速度を上げる方法
ほとんどの場合、MODGAMMAのデフォルト値は適切な値です。MODGAMMAの値を増やすと、モデル方程式はより速く収束しますが、結果の精度は低下します。方程式の値が小さいほど、MODGAMMAを増やす場合の影響はより顕著になり、つまり、小さなモデル値では収束は比較的より迅速に達成されるようになりますが、一方で精度の低下がより大きくなります。
また、MODTOLERANCEの値を減らして、収束の判定を緩めることで、モデルの連立ブロックの収束を速めることもできます。ただし、これを行うと、小さい値の方程式の結果のみでなく、すべての結果の精度を犠牲にすることになります。
したがって、モデルに大きな値の方程式と非常に小さい値の方程式が混在している場合は、MODTOLERANCEを減らすよりも、MODGAMMAを増やすほうが有効な場合があります。MODGAMMAを増やすことで、大きい値の方程式の精度を維持したまま小さい値の方程式をより迅速に収束させることができます。
例
例5-53 MODGAMMAのデフォルト値の使用
次の文では、 income.bud
というモデルのトレースを指定し、連立ブロックの解法としてGauss-Seidel法の使用を指定して、ディメンションを制限し、モデルを実行します。
MODTRACE = YES MODSIMULTYPE = 'GAUSS' LIMIT division TO 'Camping' income.bud budget
これらの文によって生成される出力は次のとおりです。
(MOD= INCOME.BUD) BLOCK 1: SIMULTANEOUS ... (MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 16) = 0.026243533 ... (MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 17) = 0.024054312 ... (MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 18) = 0.025788293 ... (MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 19) = 0.024390642 ... (MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 20) = 0.025501664 ... (MOD= INCOME.BUD) BUDGET (LINE NET.INCOME MONTH 'JAN97' ITER 21) = 0.024608562
トレースで、連立方程式のブロックの最後の6回の反復でNET.INCOME明細項目に対し計算された結果を確認できます。
MODTOLERANCEの値は、デフォルト値の3
です。したがって、方程式を収束したと判定するには、その比較値が.001
より小さい必要があります。
MODGAMMAは、デフォルト値の1
に設定されています。NET.INCOME明細項目の方程式は、21回目の反復で収束したと判定されています。21回目の反復におけるNet.Income
の比較値は、次のように計算されました。
(0.024608562967 - 0.025501664970 = 0.00087) / (0.025501664970 + 1)
例5-54 モデルの収束速度を上げるためのMODGAMMAの設定
次の文で、MODGAMMAの設定を変更し、income.bud
モデルを実行します。
MODGAMMA = 2 income.bud budget
MODGAMMAが2
に設定されているため、Net.Income
の方程式は18回目の反復で収束します。18回目の反復におけるNet.Income
の比較値は、次のように計算されます。
(0.025788293304 - 0.024054312748 = 0.00086) / (0.024054312748 + 2)
5.52 MODINPUTORDER
MODINPUTORDERオプションは、モデルの連立ブロック内の方程式を、指定した順序で実行するか、またはモデル・コンパイラで決定される順序で実行するかを制御します。MODINPUTORDERは、単純ブロックおよびステップ・ブロック内の方程式の順序には影響しません。
注意:
連立ブロックの解決を制御するオプションの説明は、「モデル・オプション」を参照してください
データ型
BOOLEAN
構文
MODINPUTORDER = {YES|NO}
例
例5-55 デフォルトの順序の使用
次の文は、income.calc
モデルを定義する文です。
DEFINE income.calc MODEL MODEL DIMENSION line month Net.Income = Opr.Income - Taxes Opr.Income = Gross.Margin - TOTAL(Marketing + Selling + R.D) Marketing = LAG(Opr.Income, 1, month) Gross.Margin = Revenue - Cogs END
次の文で、モデルをコンパイルし、MODEL.COMPRPTプログラムを使用してコンパイル・レポートを生成します。
COMPILE income.calc MODEL.COMPRPT income.calc
これらの文によって生成される出力は次のとおりです。
MODEL INCOME.CALC <LINE MONTH> BLOCK 1 (SIMPLE) INCOME.CALC 5: gross.margin = revenue - cogs BLOCK 2 (SIMULTANEOUS <MONTH>) INCOME.CALC 4: marketing = lag(opr.income, 1, month) INCOME.CALC 3: opr.income = gross.margin - total(marketing + selling + r.d) END BLOCK 2 INCOME.CALC 2: net.income = opr.income - taxes END BLOCK 1
MODINPUTORDERをデフォルト値のNO
に設定してincome.calc
をコンパイルすると、コンパイラによって連立ブロック内の方程式の順序が置き換えられているのが確認できます。
例5-56 MODINPUT値の変更
次の文では、MODINPUTORDERの値をYES
に設定してモデルをコンパイルし、コンパイル・レポートを生成します。
MODINPUTORDER = YES COMPILE income.calc MODEL.COMPRPT income.calc
これらの文によって生成される出力は次のとおりです。
MODEL INCOME.CALC <LINE MONTH> BLOCK 1 (SIMPLE) INCOME.CALC 5: gross.margin = revenue - cogs BLOCK 2 (SIMULTANEOUS <MONTH>) INCOME.CALC 3: opr.income = gross.margin - total(marketing + selling + r.d) INCOME.CALC 4: marketing = lag(opr.income, 1, month) END BLOCK 2 INCOME.CALC 2: net.income = opr.income - taxes END BLOCK 1
連立方程式の順序が指定した順序のまま、コンパイラによって変更されていないことが確認できます。
5.53 MODMAXITERS
MODMAXITERSオプションは、モデルの連立方程式のブロックを解決するために実行される反復の最大回数を決定するオプションです。
注意:
連立ブロックの解決を制御するオプションの説明は、「モデル・オプション」を参照してください。
データ型
INTEGER
構文
MODMAXITERS = {n|50}
使用上の注意
モデルの実行結果のレポート
連立ブロックのいずれかの方程式が、MODMAXITERSで指定した反復回数内に発散するかまたは収束に失敗すると、ブロックの解決は失敗し、エラーが発生します。MODEL.XEQRPTプログラムを使用して、モデルの実行結果に関するレポートを生成できます。レポートには、連立ブロックが発散したのか、収束に失敗したのかが示されます。ブロックが収束に失敗した場合は、MODMAXITERSの値を増やして試行すると、収束に至るかどうかを確認できます。
例
例5-57 MODMAXITERSとモデル
MYMODELというモデルに、50回の反復で収束できなかった連立方程式のブロックが含まれているとします。次の文で、MODMAXITERSの値を増やし、モデルを再実行します。
MODMAXITERS = 100 myModel actual
5.54 MODOVERFLOW
MODOVERFLOWオプションは、モデルの連立ブロックにある方程式が発散したかどうかを判定する際に使用するオプションです。MODOVERFLOWは、方程式が発散したとみなす基準になる、連続する反復における方程式の結果の離散の程度を決定します。
注意:
連立ブロックの解決を制御するオプションのリストは、「モデル・オプション」を参照してください。
データ型
INTEGER
構文
MODOVERFLOW = {n|3}
パラメータ
- n
-
発散の判定に使用する
INTEGER
値。Oracle OLAPでは、連立ブロック内の各方程式を計算する際、現行の反復と前回の反復における方程式の結果に基づく比較値を作成します。比較値が発散として判定されると、方程式は発散したとみなされます。比較値は、次のように判定されます。
(thisResult - prevResult) / (prevResult + MODGAMMA)
ここで、thisResultは現行の反復の結果で、prevResultは前回の反復の結果です。
前述の計算において、MODGAMMAは、比較値が反復間の変化の絶対量と比例的変化との比較の程度を制御するINTEGERオプションです。MODGAMMAのデフォルト値は
1
です。発散判定では、比較値が、
10
のMODOVERFLOW乗より大きいかどうかがOracle OLAPによって判定されます。この判定の計算は次のとおりです。Comparison value > 10**MODOVERFLOW
方程式が発散したとみなされるには、比較値が前述の判定を満たす必要があります。MODOVERFLOWのデフォルト値は
3
です。このデフォルト値では、比較値が1000
より大きい場合に、比較値が判定を満たします。
使用上の注意
方程式の発散
方程式が発散すると、エラーが発生します。エラーが発生したときにOracle OLAPが実行するアクションは、MODERRORオプションで制御します。
開発時における迅速な発散
モデルの開発中、MODOVERFLOWに小さい値を使用することで時間を節約できます。特定の連立ブロックで多数の反復を実行する場合、MODOVERFLOWに、より小さな値を指定することで、そのブロックを迅速に発散させることができます。MODOVERFLOWオプションをCONTINUE
に設定すると、発散が発生してもモデルの実行は継続され、モデルの他のブロックのデバッグに専念できます。モデルのデバッグ後、MODOVERFLOWに、より大きな値を使用します。
例
例5-58 MODOVERFLOWのデフォルト値の使用
次の文で、income.est
というモデルのトレースを指定し、ディメンションを制限してモデルを実行します。
MODTRACE = YES LIMIT division TO 'Camping' income.est budget
これらの文によって生成される出力は次のとおりです。
(MOD= INCOME.EST) BLOCK 1: SIMULTANEOUS (MOD= INCOME.EST) ITERATION 1: EVALUATION (MOD= INCOME.EST) selling = marketing * 3 (MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 1) = 3 ... (MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 2) = -997 ... (MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 3) = 6.00902708124 ... (MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 49) = 34.2715693388 ... (MOD= INCOME.EST) BUDGET (LINE SELLING MONTH 'JAN97' ITER 50) = -7.22300601861
トレースで、連立方程式のブロックの最初の3回の反復および49回目と50回目の反復でSelling
明細項目に対し計算された結果を確認できます。50回の反復後、ブロックは収束に失敗しています。
MODOVERFLOWの値は、デフォルト値の3
です。したがって、方程式が発散したと判定するには、その比較値が 1000
より大きい必要があります。
例5-59 発散の加速
次の文で、MODOVERFLOWの設定を変更し、income.est
モデルを実行します。
MODOVERFLOW = 2 income.est budget
MODOVERFLOWが2
に設定されているため、比較値が100より大きい場合、発散の判定を満たします。この例では、Selling
の方程式は2回目の反復で判定を満たします。2回目の反復で、Selling
の比較値は次のように計算されます。
(-997 - 3) / (3 + 1) = 250
この比較値は100より大きいため、Selling
の方程式は2回目の反復で発散します。
5.55 MODSIMULTYPE
MODSIMULTYPEオプションは、モデルの連立ブロックを解決するために使用する解法を指定するオプションです。
注意:
連立ブロックの解決を制御するオプションのリストは、「モデル・オプション」を参照してください。
データ型
ID
構文
MODSIMULTYPE = {'AITKENS'|'GAUSS'}
パラメータ
- 'AITKENS'
-
(デフォルト)Aitkensデルタ2乗法を使用します。連立方程式のブロックで、3回の反復のうち最初の2回の反復では、方程式は前回の反復の値を使用して解決され、結果の収束および発散が判定されます。3回目の反復ごとに、方程式の解決によってではなく、次の推測(next-guess)の計算を行うことで、結果が取得されます。この計算には、先行する3つの反復の結果を使用します。推測の結果では、収束および発散の判定は行われず、常に次の反復へ解決が続行されます。
- 'GAUSS'
-
Gauss-Seidel解法を使用します。連立ブロックの方程式は、ブロックの各反復で解決されます。各反復において、結果の収束および発散判定が行われます。
使用上の注意
連立ブロックの解決
Oracle OLAPでは、連立ブロックの方程式の解決に反復法を使用します。Aitkens解法での次の推測(next-guess)反復を除き、各反復において、現行の反復の結果と前回の反復の結果から比較値が計算されます。比較値が指定した許容範囲内の場合(MODTOLERANCEオプションを参照)、方程式は収束したとみなされます。比較値が大きすぎる場合(MODOVERFLOWオプションを参照)、方程式は発散したとみなされ、ブロックの解決は終了します。
ブロックのすべての方程式が収束すると、そのブロックは解決したとみなされます。いずれかの方程式が発散するか、指定した反復回数内での収束に失敗すると(MODMAXITERSオプションを参照)、ブロック(およびモデル)の解決は失敗し、Oracle OLAPによってエラー・メッセージが表示されます。
次の推測(next-guess)計算
Aitkens法では、次の推測(next-guess)計算を実行するために3つの値が必要です。したがって、連立ブロックにおける最初の3回の反復で、Oracle OLAPによって方程式が解決されます。4番目の反復は、最初の3回の反復の計算の結果を使用する次の推測(next-guess)反復です。
以後、毎回3番目に当たる反復が、前回の推測と中間にはさまる2回の反復の方程式の結果を使用して結果を計算する、次の推測(next-guess)反復となります。たとえば、7番目の反復は、4番目の反復からの推測と5番目および6番目の反復の方程式の結果に基づいた、次の推測(next-guess)計算です。
必要なメモリー容量
通常、Aitkens法は収束が迅速であり、一般にGauss-Seidel法よりも正確な結果を算出します。ただし、先行する3回分の反復の結果を格納するため、Aitkens法のほうが多くのメモリーを必要とします。
通常は、Aitkens法を使用します。Gauss-Seidel法は、システムのメモリー不足が問題となる場合にのみ使用することをお薦めします。
モデルの連立ブロックを解決する際のNA値の処理
方程式の結果を計算し、次の推測(next-guess)計算を行う際、Oracle OLAPではNASKIP2オプションの設定を参照します。NASKIP2は、+
(加算)および-
(減算)演算が実行される際のNA
値の処理方法を制御します。NA
値を含むソリューション変数を指定している場合、NASKIP2の設定が重要になります。ソリューション変数の値は、連立ブロックにおける最初の反復で初期値として使用されるため、ソリューション変数にNA
値があると、方程式の結果がNA
になる場合があります。最初の反復での結果がNA
の場合、その後の反復でも結果がNA
になる可能性があります。そのため、結果がNA
になるのを回避するには、ソリューション変数にNA
値が含まれていないことを確認するか、NASKIP2をYES
に設定してからモデルを実行します。
データ型の問題
INTEGERデータ型の変数にデータを代入した場合、またはディメンションベースのモデルにINTEGERデータ型のソリューション変数を指定した場合に、連立方程式の収束に失敗することがあります。Oracle OLAPでは方程式を計算するたびにデータを10進値に変換しますが、反復と反復の間にその結果をINTEGER変数に格納するために値が四捨五入されることによって、収束が失敗します。
ファンクションの問題
連立方程式に、端数処理された値を生成するファンクション(INSTRB、ROUNDなど)またはデータが不連続になるファンクション(MAX、MINなど)が含まれている場合、連立方程式の収束に失敗することがあります。
開始値の問題
連立ブロックの解決は、開始値に影響されます。たとえば、モデルの2つのモデル値間に比例関係がある場合、開始値がゼロに近いと、収束が阻止されます。したがって、解決する方程式に対して妥当な開始値を使用する必要があります。
方程式の順序
連立ブロックの解決は、方程式の順序にも影響されます。モデルをコンパイルする際、モデル・コンパイラによって、方程式の依存関係に基づいた最適な方程式の順序が決定されます。
連立ブロック内の方程式を特定の順序で解決するには、必要な順序で方程式を記述し、モデルをコンパイルする前にMODINPUTORDERオプションをYES
に設定します。MODINPUTORDERをYES
に設定すると、モデル・コンパイラは、連立ブロック内の方程式をモデルに出現する順序で維持します。
連立方程式を特定の順序で配置し、モデルのコンパイル前にMODINPUTORDERをYES
に設定すると、一部のモデルで収束を促進できる場合があります。ただし、通常は、モデル・コンパイラによって方程式の順序を決定することをお薦めします。
実行レポートの生成
モデルを実行した後、MODEL.XEQRPTプログラムを使用すると、モデルの実行に関するレポートを生成できます。
例
例5-60 メモリー使用量の節約
budget98
というモデルが、連立ブロック内で大量のディメンション値に対して反復を行う複雑なモデルであるとします。この場合、Gauss-Seidel法を使用して、モデルの解決に必要なメモリーを節約できます。
次の文で、Gauss-Seidel法を指定して、モデルを実行します。
MODSIMULTYPE = 'GAUSS' budget98 budget
5.56 MODTOLERANCE
MODTOLERANCEオプションは、モデルの連立ブロックにある方程式が収束したかどうかを判定する際に使用するオプションです。MODTOLERANCEは、方程式が収束したとみなす基準になる、連続する反復における方程式の結果の近似の程度を決定します。
データ型
INTEGER
構文
MODTOLERANCE = {n|3}
パラメータ
- n
-
収束の判定に使用する
INTEGER
値。Oracle OLAPでは、連立ブロック内の各方程式を計算する際、現行の反復と前回の反復における方程式の結果に基づく比較値を作成します。比較値が許容誤差として判定されると、方程式は収束したとみなされます。比較値は、次のように判定されます。
(thisResult - prevResult) / (prevResult+ MODGAMMA)
ここで、thisResultは現行の反復の結果で、prevResultは前回の反復の結果です。
前述の計算において、MODGAMMAは、比較値が反復間の変化の絶対量と比例的変化との比較の程度を制御するINTEGERオプションです。MODGAMMAのデフォルト値は1です。
許容誤差判定では、比較値が、
10
の負のMODTOLERANCE乗より小さいかどうかがOracle OLAPによって判定されます。この判定の計算は次のとおりです。Comparison value < 10**-MODTOLERANCE
この計算を記述するもう1つの方法は、次のとおりです。
Comparison value < (1 / (10**MODTOLERANCE))
方程式が収束したとみなされるには、比較値が前述の判定を満たす必要があります。MODTOLERANCEのデフォルト値は
3
です。このデフォルト値では、比較値が0.001
より小さい場合に、比較値が判定を満たします。
使用上の注意
収束の失敗
指定した反復回数内で方程式が収束に失敗すると、エラーが発生します。試行する反復の最大回数は、MODMAXITERSオプションで制御します。エラーが発生したときにOracle OLAPが実行するアクションは、MODERRORオプションで制御します。
結果の精度
MODTOLERANCEは、反復間の方程式の結果が近似する程度を制御するため、結果の解の精度も制御します。MODTOLERANCEの値が小さいと結果の精度は低くなり、値が大きいと精度は高くなります。
大きな値と小さな値
モデルに大きな値の方程式と非常に小さな値の方程式が混在している場合、MODTOLERANCEオプションの値を減らすよりも、MODGAMMAオプションの値を増やすほうが有効な場合があります。MODGAMMAを増やすことで、大きい値の方程式の精度を維持したまま小さい値の方程式をより迅速に収束させることができます。
開発時における迅速な収束
モデルの開発中、MODTOLERANCEに小さな値の使用が必要となることがあります。これによって結果の精度は落ちますが、モデル方程式はより迅速に収束します。モデルのデバッグ後、MODTOLERANCEの値を増やし、最終的に結果の精度を上げます。
連立ブロックの解決を制御するオプション
連立ブロックの解決を制御する際に使用可能なすべてのオプションのリストは、「モデル・オプション」を参照してください。
例
例5-61 MODTOLERANCEのデフォルト値の使用
次の文では、 income.plan
というモデルのトレースを指定し、連立ブロックの解法としてGauss-Seidel法の使用を指定して、ディメンションを制限し、モデルを実行します。
MODTRACE = YES MODSIMULTYPE = 'GAUSS' LIMIT division TO 'Camping' income.plan budget
これらの文によって生成される出力は次のとおりです。
(MOD= INCOME.PLAN) BLOCK 1: SIMULTANEOUS (MOD= INCOME.PLAN) ITERATION 1: EVALUATION (MOD= INCOME.PLAN) marketing = .15 * net.income (MOD= INCOME.PLAN) BUDGET(LINE MARKETING MONTH 'JAN97' ITER 1) = 11887.403671736 ... (MOD= INCOME.PLAN) BUDGET(LINE MARKETING MONTH 'JAN97' ITER 6) = 73379.713232251 ... (MOD= INCOME.PLAN) BUDGET(LINE MARKETING MONTH 'JAN97' ITER 7) = 73474.784648631 ... (MOD= INCOME.PLAN) BUDGET(LINE MARKETING MONTH 'JAN97' ITER 8) = 73446.025848156 (MOD= INCOME.PLAN) END BLOCK 1
トレースで、連立方程式のブロックの最後の3回の反復でMarketing
明細項目に対し計算された結果を確認できます。
MODTOLERANCEは、デフォルト値の3
に設定されています。したがって、方程式を収束したと判定するには、その比較値が0.001
より小さい必要があります。7回目の反復で、Marketing
の比較値は次のように計算されます。
(73474.784648631100 - 73379.713232251300) / (73379.713232251300 + 1) = 0.0013
この比較値は0.001
より大きいため、収束したと判定されません。
8回目の反復で、比較値は次のように計算されます。
(73446.025848156700 - 73474.784648631100) /(73474.784648631100 + 1) = 0.0004
この比較値は0.001
より小さいため、収束したと判定されます。
例5-62 モデルの収束速度を上げるためのMODTOLERANCEの設定
次の文で、MODTOLERANCEの値を変更し、income.bud
モデルを実行します。
MODTOLERANCE = 2 income.plan budget
MODTOLERANCEが2
に設定されているため、比較値が0.01
より小さい場合、収束したと判定されます。この例では、Marketing
の方程式は7回目の反復で収束したと判定されます。
5.57 MODTRACE
MODTRACEオプションは、モデルの実行中に、モデルの各方程式をファイルに記録するかどうかを制御するオプションです。MODTRACEは、モデルの実行をトレースすることによって問題を検出するためのデバッグ・ツールとして主に使用されます。
ヒント:
INFOファンクションを使用して、コンパイルしたモデルの構成と実行したモデルの解決ステータスに関する情報の特定の項目を取得できます。INFO (MODEL)を参照してください。
データ型
BOOLEAN
構文
MODTRACE = {YES|NO}
パラメータ
使用上の注意
解決順序のプレビュー
MODTRACEでは、モデルの方程式は解決される順序で現行の出力ファイルに送信されます。モデルの実行前に、MODEL.COMPRPTプログラムを使用して、解決順序のプレビューを取得できます。モデルが大きく複雑な場合、プレビューは特に有用です。モデルのコンパイル後に実行できるMODEL.COMPRPT
プログラムで、コンパイラがブロックにモデル方程式をどのように編成したか、およびブロックと方程式が解決される順序を示すレポートを生成できます。
トレース情報の理解
MODTRACEでは、トレースの各行に現行のモデルの名前が表示されます。トレースには次の種類の行が含まれます。
-
ブロック。ブロック行には、実行するプロックのブロック番号とブロック・タイプが表示されます。ブロックのタイプには、単純、ステップフォワード、ステップバックワードおよび連立があります。ステップフォワードまたはステップバックワードのブロックでは、ブロック行に、処理されるディメンションが表示されます。ディメンション間の依存がある連立ブロックのブロック行には、依存関係にあるディメンションが表示されます。モデルのブロックの詳細は、MODELコマンドを参照してください。
-
反復。これらの行は連立ブロックの場合に出力され、現行のブロックで実行される反復の回数が指定されます。Aitkens解法を使用する場合は、次の予測反復が識別されます。(使用する解法は、MODSIMULTYPEオプションで決定します。)
-
方程式。計算される方程式です。
-
結果。結果行は各方程式行の後にあり、方程式によって代入される結果が表示されます。結果が代入された変数および各モデル・ディメンションの現行の値が表示されます。連立ブロックでは、現行の反復の回数も表示されます。たとえば、
actual
がソリューション変数で、モデル・ディメンションがline
およびmonth
の場合、連立ブロックの結果行は次のようなものになります。(MOD= INCOME.CALC) ACTUAL (LINE OPR.INCOME MONTH 'JAN96' ITER 1) = 108.9600000
ディメンションベースの方程式を指定したMODTRACEの使用
ディメンションベースの方程式を含むモデルを実行すると、ソリューション変数のすべてのディメンションがOracle OLAPによって自動的にループ処理されます。トレースでは、結果行にDIMENSION文にリストされている各ディメンションの現行値が表示されますが、DIMENSION文にリストされていない追加のディメンションの現行値は表示されません。DIMENSION文の使用の詳細は、DIMENSION(モデル内)を参照してください。
つまり、モデル・ディメンションがline
およびmonth
で、ソリューション変数がline
、month
およびdivision
によってディメンション化されている場合、division
の現行値は結果行には表示されません。division
のステータスにある最初の値に対しモデルが実行され、その後、ステータスにある2番目の値に対しモデルが実行されます(以降同様)。
変数に値を代入するモデルを実行すると、それらの変数のディメンション(またはコンポジットのベース)すべてが自動的にループ処理されます。この場合、変数の各ディメンションの現行の値がトレースに表示されます。
例
例5-63 MODTRACEを使用したモデルのデバッグ
次の文で、income.budget
という名前のモデルを定義します。
DEFINE income.budget MODEL LD Model for estimating budget items MODEL DIMENSION line month Opr.Income = Gross.Margin - Marketing Gross.Margin = Revenue - Cogs Revenue = LAG(Revenue, 1, month) * 1.02 Cogs = LAG(Cogs, 1, month) * 1.01 Marketing = LAG(Opr.Income, 1, month) * 0.20 END
このモデルは、損益計算書の予算明細項目についての予測を行います。モデル方程式は、line
ディメンションを基礎としています。次の文で、モデルをコンパイルし、MODEL.COMPRPTプログラムを実行します。
COMPILE income.budget MODEL.COMPRPT income.budget
MODEL.COMPRPT
文によって生成されるコンパイル・レポートは次のとおりです。
MODEL INCOME.BUDGET <LINE MONTH> BLOCK 1 (SIMPLE) INCOME.BUDGET 4: revenue = lag(revenue, 1, month) * 1.02 INCOME.BUDGET 5: cogs = lag(cogs, 1, month) * 1.01 INCOME.BUDGET 3: gross.margin = revenue - cogs BLOCK 2 (STEP-FORWARD <MONTH>) INCOME.BUDGET 6: marketing = lag(opr.income, 1, month) * 0.20 INCOME.BUDGET 2: opr.income = gross.margin - marketing END BLOCK 2 END BLOCK 1
このモデルをデバッグする場合、モデルを実行する前にMODTRACEをオンにすることで、実行状況を行ごとにトレースできます。
次の文で、ディメンションを制限し、トレースを指定して、モデルを実行します。
LIMIT month TO 'Jan97' TO 'Mar97' LIMIT division TO 'Camping' MODTRACE = YES income.budget budget
これらの文によって、次のような行ごとの結果が生成されます。
(MOD= INCOME.BUDGET) BLOCK 1: SIMPLE (MOD= INCOME.BUDGET) revenue = lag(revenue, 1, month) * 1.02 (MOD= INCOME.BUDGET) BUDGET (LINE REVENUE MONTH 'JAN97') = 744491.1966 (MOD= INCOME.BUDGET) BUDGET (LINE REVENUE MONTH 'FEB97') = 759381.020532 (MOD= INCOME.BUDGET) BUDGET (LINE REVENUE MONTH 'MAR97') = 774568.64094264 (MOD= INCOME.BUDGET) cogs = lag(cogs, 1, month) * 1.01 (MOD= INCOME.BUDGET) BUDGET (LINE COGS MONTH 'JAN97') = 382386.2323 (MOD= INCOME.BUDGET) BUDGET (LINE COGS MONTH 'FEB97') = 386210.094623 (MOD= INCOME.BUDGET) BUDGET (LINE COGS MONTH 'MAR97') = 390072.19556923 (MOD= INCOME.BUDGET) gross.margin = revenue - cogs (MOD= INCOME.BUDGET) BUDGET (LINE GROSS.MARGIN MONTH 'JAN97') = 362104.9643 (MOD= INCOME.BUDGET) BUDGET (LINE GROSS.MARGIN MONTH 'FEB97') = 373170.925909 (MOD= INCOME.BUDGET) BUDGET (LINE GROSS.MARGIN MONTH 'MAR97') = 384496.44537341 (MOD= INCOME.BUDGET) BLOCK 2 STEP-FORWARD <MONTH> (MOD= INCOME.BUDGET) marketing = lag(opr.income, 1, month) * 0.20 (MOD= INCOME.BUDGET) BUDGET (LINE MARKETING MONTH 'JAN97') = 39938.192 (MOD= INCOME.BUDGET) opr.income = gross.margin - marketing (MOD= INCOME.BUDGET) BUDGET (LINE OPR.INCOME MONTH 'JAN97') = 322166.7723 (MOD= INCOME.BUDGET) marketing = lag(opr.income, 1, month) * 0.20 (MOD= INCOME.BUDGET) BUDGET (LINE MARKETING MONTH 'FEB97') = 64433.35446 (MOD= INCOME.BUDGET) opr.income = gross.margin - marketing (MOD= INCOME.BUDGET) BUDGET (LINE OPR.INCOME MONTH 'FEB97') = 308737.571449 (MOD= INCOME.BUDGET) marketing = lag(opr.income, 1, month) * 0.20 (MOD= INCOME.BUDGET) BUDGET (LINE MARKETING MONTH 'MAR97') = 61747.5142898 (MOD= INCOME.BUDGET) opr.income = gross.margin - marketing (MOD= INCOME.BUDGET) BUDGET (LINE OPR.INCOME MONTH 'MAR97') = 322748.93108361 (MOD= INCOME.BUDGET) END BLOCK 2 (MOD= INCOME.BUDGET) END BLOCK 1
単純ブロックであるBlock 1では、方程式は一度に1つずつ解決され、各方程式が解決されるごとにmonth
のステータスにある3つの値がループ処理されます。month
ディメンションにおけるステップフォワード・ブロックであるBlock 2では、month
のステータスにある値全体が段階的に処理され、各月についてのブロックにあるすべての方程式が順番に解決されます。
5.58 MONTHABBRLEN
MONTHABBRLENオプションは、MONTHNAMESオプションに格納されている月の名前の略称に使用する文字の数を指定します。DATEFORMATオプションで<MT>
、 <MTXT>
および<MTXTL>
の書式を指定するか、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンション用にVNF(値名書式)を指定すると、特定の月の名前の略称に使用する文字数を指定できます。
データ型
TEXT
構文
MONTHABBRLEN = specification [;|, specification]...
ここで、specificationは次の形式のテキスト式です。
startpos [ - endpos] : length
パラメータ
- startpos [-endpos]
-
月の略称の長さがlengthによって定義される、最初と最後の月を表す数。この数値の位置は、MONTHNAMESオプションのテキストの対応する行に該当します。この一連の値は、必要に応じて逆の順序(endpos [-startpos])に指定できます。
MONTHNAMESオプションには12行を超える行を指定できるので、MONTHABBRLENの設定でstartposおよびendposの数に12より大きい値を指定できます。MONTHNAMESオプションのテキスト値に対応する範囲の値をstartposおよびendposに指定しなかった場合、MONTHABBRLENにはその範囲に対する略称のテキスト値はありません。startposが有効になるように月の名前リストを後で変更した場合、指定した略称が適用されます。
- length
-
月の名前の略称について文字の長さを指定する数(バイト数ではない)。MONTHNAMESオプションの特定の位置に対して略称の長さを指定しなかった場合、または特定の位置を明示的にゼロに設定した場合、デフォルトの略称が使用されます。デフォルトの略称は、
<MT>
の場合は1文字、<MTXT>
および<MTXTL>
の場合は3文字です。フルネーム指定である<MTEXT>
および<MTEXTL>
を指定した場合、略称は使用されません。
使用上の注意
あいまいな月の名前
MONTHABBRLENを使用すると、A
がApril
とAugust
のどちらを表すかなどの、あいまいな名前を解釈できます。MONTHABBRLENでAprilは1
、Augustは2
である場合、A
は常にApril
に一致し、August
に一致するには少なくともAu
まで必要です。この解釈は暦のApril
とAugust
の順序とは関係がなく、2つの月の順序が逆であった場合でも、このコマンドは同じように動作します。一方、どちらのMONTHABBRLENも2
であった場合、A
はどちらにも一致せず、一致させるには少なくともAp
またはAu
を入力する必要があります。
例
例5-64 月の略称の指定
次のMONTHABBRLEN設定では、年頭から10か月までの月を1文字の略称で表し、最後の2か月を2文字の略称で表すことを指定します。
MONTHABBRLEN = '1-10:1, 11-12:2' SHOW CONVERT ('2 August 2005' DATE)
この文によって、Augustの略称が文字Aである次の結果が生成されます。
02A05
5.59 MONTHNAMES
MONTHNAMESオプションは、日付のみのデータ型の値、およびDAY、WEEK、MONTH、QUARTER、YEAR型のディメンションの値を処理するときに使用される有効な月の名前のリストを保持します。名前のリストは、入力された日付を解釈する場合、および表示する日付またはテキスト値に変換する日付を書式化する場合に使用されます。
月の名前またはその略称が含まれる日付を入力する場合に、MONTHNAMESのリストが使用されます。日付のみの値を入力する方法の説明は、DATEFORMATオプションを参照してください。MONTHNAMESのリストは、<MT>
、<MTXT>
、<MTXTL>
、<MTEXT>
、<MTEXTL>
のいずれかの書式を使用して日付を表示または変換するときにも使用されます。これらの書式は、DATEFORMATオプションで指定します。月名のセットが複数ある場合、Oracle OLAPでは、文字数および大文字の使用パターンがDATEFORMATの指定と最も近いシノニムを選択します。
関連項目:
MONTHABBRLENオプション
データ型
TEXT
構文
MONTHNAMES = name-list
パラメータ
例
例5-65 2セットの月名の指定
次の文は、英語の大文字表記とフランス語の小文字表記の2セットの月名を作成します。
MONTHNAMES = - 'JANUARY - ... DECEMBER - janvier - ... decembre'
例5-66 英語の月名の指定
次の文は、日付のみの変数を定義してその変数に値を割り当て、DATEFORMATに設定を割り当てて、現行の出力ファイルに出力を送信します。DATEFORMAT値には大文字を指定する<MTEXT>
が含まれ、英語の月名が使用されます。
DEFINE datevar DATE datevar = '27feb98' DATEFORMAT = '<MTEXT> <D>, <YYYY>' SHOW datevar
これらの文によって生成される出力は次のとおりです。
FEBRUARY 27, 1998
例5-67 フランス語の月名の指定
次の文は、DATEFORMATに新しい設定を割り当て、現行の出力ファイルに出力を送信します。DATEFORMAT値には小文字を指定する<MTEXTL>
が含まれ、フランス語の月名が使用されます。
DATEFORMAT = 'le <D> <MTEXTL> <YYYY>' SHOW datevar
これらの文によって生成される出力は次のとおりです。
le 27 fevrier 1998
5.60 MULTIPATHHIER
MULTIPATHHIERオプションは、詳細データが含まれる特定のセルに、集計データが含まれるセルへの複数のパスを設定できることを指定するオプションです。計算によって、このような複数パスの集計が必要です。
データ型
BOOLEAN
構文
MULTIPATHHIER = {YES|NO}
使用上の注意
MULTIPATHHIERを使用する場合
MULTIPATHHIERオプションは、複数パスを必要とする計算の場合にのみYES
に設定します。
XSHIERCK01エラー・メッセージの解釈
AGGREGATEコマンドを使用すると、ディメンション階層に循環性がないかどうかが自動的に確認されます。MULTIPATHHIERをNO
に設定した場合、またはデフォルトのNO
を変更していない場合、詳細データ・セルが同一の集計データ・セルへの複数パスを使用すると、次のエラー・メッセージが表示されます。
ERROR: (XSHIERCK01) One or more loops have been detected in your hierarchy n over N. The loops include 2 items (UNDIRECTED: X and Y).
このエラー・メッセージのX
は詳細データ・セルの名前であり、Y
は詳細データ・セルが集計で複数パスを使用する祖先セルの名前です。詳細は、例5-68を参照してください。
詳細データ・セルによって使用される複数パスが循環階層とみなされるために、このエラー・メッセージが表示されます。循環階層がなく、複数パスを作成する意図がない場合は、階層を変更します。複数パスを作成する場合は、MULTIPATHHIERオプションをYES
に設定します。
例
例5-68 階層内の複数パスの定義
この例は、階層に複数パスを定義する方法、データ集計時に表示されるエラー・メッセージ、そのメッセージの解釈、および問題の解決方法を示します。
次の文は、詳細データ・セルから集計データが含まれる祖先セルまでの2つのパスを作成します。
DEFINE geog TEXT DIMENSION DEFINE path INTEGER DIMENSION DEFINE geog.geog RELATION geog <geog path> MAINTAIN geog ADD 'A1' 'b1' 'b2' 'Top' MAINTAIN path ADD 2 geog.geog(geog 'A1' path 1) = 'B1' geog.geog(geog 'A1' path 2) = 'B2' geog.geog(geog 'B1' path 1) = 'Top' geog.geog(geog 'B2' path 1) = 'Top'
最初に、geog
という名前の地理ディメンションと、path
という2番目のディメンションが定義されます。
地理ディメンションがそれ自身とpath
ディメンションによってディメンション化される、geog.geog
という名前のリレーションが定義されます。
A1
、B1
、B2
およびTop
という名前のディメンション値がgeog
ディメンションに追加されます。
2つのディメンション値がpath
ディメンションに追加されます。path
はINTEGER
データ型で定義されたので、これに自動的に割り当てられるディメンション値はINTEGER
値の1
および2
です。
最後に、geog
ディメンションの階層が作成されます。A1
ディメンション値は詳細データです。B1
およびB2
のディメンション値は、階層の2番目のレベルです。TOP
ディメンション値は階層の最上位です。
A1
には2つの集計パスがあります。最初のパスでは、A1
がB1
に集計され、その結果がTop
に集計されます。2番目のパスでは、A1
がB2
に集計され、その結果がTop
に集計されます。
次の文は、myvar
という名前の変数を定義し、データ値1
をその詳細データ・レベル(A1
)に割り当て、その変数のaggmapを定義します。
DEFINE myvar INTEGER VARIABLE <geog> myvar(geog 'A1') = 1 DEFINE myvar.aggmap <geog> AGGMAP 'RELATION geog.geog'
myvar
を集計すると、次のエラー・メッセージが表示されます。
AGGREGATE myvar USING myvar.aggmap ERROR: (XSHIERCK01) One or more loops have been detected in your hierarchy GEOG.GEOG over GEOG. The loops include 2 items (UNDIRECTED: A1 and TOP).
A1
に対して作成された集計の複数パスが循環階層とみなされました。現在、MULTIPATHHIERオプションがNO
に設定されているためです。
誤ってこのような複数パスを作成してしまった場合、その階層で問題を解決します。
ただし、この場合は複数パスが計算上必要なために作成しています。したがって、これを解決するためには、MULTIPATHHIERをYES
に設定します。これにより、エラーが発生することなくAGGREGATEコマンドを実行できます。
5.61 NASKIP
NASKIPオプションは、NA
値が集計ファンクションの入力とみなされるかどうかを制御します。
関連項目:
$NATRIGGERプロパティ、+
(プラス)演算子や-
(マイナス)演算子を使用したNA
値の処理方法を制御するNASKIP2オプション、およびNASPELLオプション
データ型
BOOLEAN
構文
NASKIP = NO|YES
パラメータ
使用上の注意
NASKIPによって影響を受ける文
次のOLAP DML文はNASKIPの影響を受けます。
- AGGREGATEコマンド
- AGGREGATEファンクション
- ANY
- AVERAGE
- COUNT
- CUMSUM
- DEPRDECL
- DEPRDECLSW
- DEPRSL
- DEPRSOYD
- EVERY
- FINTSCHED
- FPMTSCHED
- IRR
- LARGEST
- MEDIAN
- MOVINGAVERAGE
- MOVINGMAX
- MOVINGMIN
- MOVINGTOTAL
- NONE
- NPV
- SMALLEST
- STDDEV
- TCONVERT
- TOTAL
- VINTSCHED
- VPMTSCHED
その他の文はNASKIPの設定による影響を受けないため、NA
値は常に無視されます。
例
例5-69 TOTALファンクションでのNASKIPの効果
demo
ワークスペースの1997年の販売実績(sales)はNA
です。TOTALファンクションは、NASKIPの設定に応じて異なる結果を返します。
次の文により
ALLSTAT NASKIP = YES SHOW TOTAL(sales)
によって、次の結果が生成されます。
63,181,743.50
これに対し、OLAP DML文
NASKIP = NO SHOW TOTAL(sales)
によって、次の結果が生成されます。
NA
例5-70 MOVINGMINファンクションでのNASKIPの効果
この例は、3か月間(当月とその前の2か月)の値を集計します。SALESの最初のレポートでは、1997年の月にNA
値が表示されます。NASKIPがYES
である場合、この月に関して評価されたすべての値がNA
であったため、MOVINGMINファンクションは1997年3月に対してのみNA
を返します。NASKIPがNO
である場合、MOVINGMINによって評価されたこれらの月のうち少なくとも1つの値がNA
であったため、3番目の文(REPORT
DOWN
month
sales
)は、1997年の1月から3月までNA
値を表示します。
LIMIT district TO 'Seattle' LIMIT month TO 'Jul96' TO 'Mar97' REPORT DOWN month sales
この文によって生成されるSALESデータのレポートは、次のとおりです。
DISTRICT: SEATTLE ------------------------SALES------------------------- -----------------------PRODUCT------------------------ MONTH Tents Canoes Racquets Sportswear Footwear ----- ---------- ---------- ---------- ---------- --------- Jul96 123,700.17 157,274.03 60,198.52 78,305.97 78,019.87 Aug96 120,650.72 128,660.89 45,046.71 66,853.26 83,347.55 Sep96 97,188.43 122,702.13 42,257.14 63,777.36 99,464.05 Oct96 91,578.77 79,925.93 39,729.25 55,021.85 83,537.58 Nov96 56,044.34 77,357.10 39,024.93 44,004.12 65,216.94 Dec96 41,576.26 67,609.36 36,156.10 40,575.34 62,113.72 Jan97 NA NA NA NA NA Feb97 NA NA NA NA NA Mar97 NA NA NA NA NA
次の文により
NASKIP = YES REPORT DOWN month MOVINGMIN(sales -2, 0, 1, month)
によって、次のレポートが生成されます(このレポートでは、1997年3月の値がNA
値です)。
DISTRICT: SEATTLE -----------MOVINGMIN(SALES -2, 0, 1, MONTH)----------- ---------------------PRODUCT-------------------------- MONTH Tents Canoes Racquets Sportswear Footwear ----- ---------- ---------- ---------- ---------- --------- Jul96 108,663.59 125,823.37 57,666.37 57,713.27 73,085.88 Aug96 119,066.18 128,660.89 45,046.71 60,322.88 78,019.87 Sep96 97,188.43 122,702.13 42,257.14 63,777.36 78,019.87 Oct96 91,578.77 79,925.93 39,729.25 55,021.85 83,347.55 Nov96 56,044.34 77,357.10 39,024.93 44,004.12 65,216.94 Dec96 41,576.26 67,609.36 36,156.10 40,575.34 62,113.72 Jan97 41,576.26 67,609.36 36,156.10 40,575.34 62,113.72 Feb97 41,576.26 67,609.36 36,156.10 40,575.34 62,113.72 Mar97 NA NA NA NA NA
次の文により
NASKIP = NO REPORT DOWN month MOVINGMIN(sales -2, 0, 1, month)
によって、次のレポートが生成されます(このレポートでは、1997年1月から3月までの値がNA
値です)。
DISTRICT: SEATTLE ----------MOVINGMIN(SALES -2, 0, 1, MONTH)------------- ------------------------PRODUCT------------------------ MONTH Tents Canoes Racquets Sportswear Footwear ----- ---------- ---------- ---------- ---------- ---------- Jul96 108,663.59 125,823.37 57,666.37 57,713.27 73,085.88 Aug96 119,066.18 128,660.89 45,046.71 60,322.88 78,019.87 Sep96 97,188.43 122,702.13 42,257.14 63,777.36 78,019.87 Oct96 91,578.77 79,925.93 39,729.25 55,021.85 83,347.55 Nov96 56,044.34 77,357.10 39,024.93 44,004.12 65,216.94 Dec96 41,576.26 67,609.36 36,156.10 40,575.34 62,113.72 Jan97 NA NA NA NA NA Feb97 NA NA NA NA NA Mar97 NA NA NA NA NA
5.62 NASKIP2
NASKIP2オプションは、+
(プラス)演算子および-
(マイナス)演算子を使用した算術演算でのNA
値の処理方法を制御します。NA
のオペランドがある場合、NASKIP2がYES
に設定されていないかぎり、結果はNA
です。
関連項目:
$NATRIGGERプロパティ、NASKIPオプションおよびNASPELLオプション
データ型
BOOLEAN
構文
NASKIP2 = YES|NO
パラメータ
使用上の注意
ファンクションの引数における演算子
NASKIP2は、NASKIPから独立しています。NASKIP2は、+
(プラス)演算子および-
(マイナス)演算子を使用する算術演算にのみ適用されます。NASKIPは、集計ファンクションにのみ適用されます。ただし、集計ファンクションに対するexpression引数に+
(プラス)演算子や-
(マイナス)演算子が含まれる場合、計算結果はNASKIPとNASKIP2の両方に依存します。例5-71を参照してください
NASKIP2の動作
次の4行は、NASKIP2の設定がYES
である場合の、NAを含む複雑な式の評価の4段階を示します。
3 * (NA + NA) - 5 * (NA + 3) 3 * NA - 5 * 3 NA - 15 -15
例
例5-71 集計ファンクションの式に負の値が含まれる際のNASKIPとNASKIP2の効果
次の例では、INTEGERディメンションINTDIMによってディメンション化されるINTEGER変数X
およびZ
に、レポートの2列目と3列目に示す値が格納されています。NASKIPとNASKIP2の設定の組合せ(最初の組合せはデフォルトの設定)ごとに、和X + Zが計算されます。この例は、TOTALファンクションに対するexpression引数に+
(プラス)演算子が使用される場合、TOTALファンクションから返される結果がNASKIPとNASKIP2の両方に依存することも示します。
-
NASKIPをYES、NASKIP2をNOに設定
この例では、NASKIPが
YES
に設定されるので、TOTALファンクションでNA
値が無視されます。NASKIP2がNO
に設定されるので、いずれかのオペランドがNA
の場合、+
(プラス)演算の結果はNA
です。NASKIP = YES NASKIP2 = NO COLWIDTH = 5 REPORT LEFT W 6 DOWN intdim x, z, x + z
これらの文によって生成される出力は次のとおりです。NASKIP2の設定が
NO
なので、XとZのいずれかがNA
の場合、式X + Zの結果はNA
です。INTDIM X Z x + z ------ ----- ----- ----- 1 NA 2 NA 2 3 NA NA 3 7 6 13
次の文は、TOTALファンクションに対するexpression引数に
+
(プラス)演算子を使用します。SHOW TOTAL(x + z)
この文によって生成される出力は、次のとおりです。
13
次の文は、
+
(プラス)演算子を使用して、2つのTOTALファンクションから返される結果を加算します。SHOW TOTAL(x) + TOTAL(z)
この文によって生成される出力は、次のとおりです。
18
-
NASKIPをYES、NASKIP2をYESに設定
この例では、NASKIPが
YES
に設定されるので、TOTALファンクションでNA
値が無視されます。NASKIP2がYES
に設定されるので、NA
値は+
(プラス)演算子によって無視されます。NASKIP = YES NASKIP2 = YES REPORT LEFT W 6 DOWN intdim x, z, x + z
これらの文によって生成される出力は次のとおりです。NASKIP2の設定が
YES
なので、式X
+
Z
が計算される場合、NA
値は無視されます。INTDIM X Z X + Z ------ ----- ----- ----- 1 NA 2 2 2 3 NA 3 3 7 6 13
次の文は、TOTALファンクションに対するexpression引数に
+
(プラス)演算子を使用します。SHOW TOTAL(x + z)
この文によって生成される出力は、次のとおりです。
18
次の文は、
+
(プラス)演算子を使用して、2つのTOTALファンクションから返される結果を加算します。SHOW TOTAL(x) + TOTAL(z)
この文によって生成される出力は、次のとおりです。
18
-
NASKIPをNO、NASKIP2をYESに設定
この例では、NASKIPが
NO
に設定されるので、TOTALファンクションで評価された値がNA
の場合、TOTALからはNA
が返されます。NASKIP2がYES
に設定されるので、NA
値は+
(プラス)演算子によって無視されます。NASKIP = NO NASKIP2 = YES REPORT LEFT W 6 DOWN intdim x, z, x + z
この文によって生成される出力は、次のとおりです。
INTDIM X Z X + Z ------ ----- ----- ----- 1 NA 2 2 2 3 NA 3 3 7 6 13
次の文は、TOTALファンクションに対するexpression引数に
+
(プラス)演算子を使用します。SHOW TOTAL(x + z)
この文によって生成される出力は、次のとおりです。
18
次の文は、
+
(プラス)演算子を使用して、2つのTOTALファンクションから返される結果を加算します。SHOW TOTAL(x) + TOTAL(z)
この文によって生成される出力は、次のとおりです。
NA
-
NASKIPをNO、NASKIPをNOに設定
この例では、NASKIPが再び
NO
に設定されるので、TOTALファンクションで評価された値がNA
の場合、TOTALからはNA
が返されます。NASKIP2もNO
に設定されるので、いずれかのオペランドがNA
の場合、+
(プラス)演算の結果はNA
です。NASKIP = NO NASKIP2 = NO REPORT LEFT W 6 DOWN intdim x, z, x + z
この文によって生成される出力は、次のとおりです。
INTDIM X Z X + Z ------ ----- ----- ----- 1 NA 2 NA 2 3 NA NA 3 7 6 13
次の文は、TOTALファンクションに対するexpression引数に
+
(プラス)演算子を使用します。SHOW TOTAL(x + z)
この文によって生成される出力は、次のとおりです。
NA
次の文は、
+
(プラス)演算子を使用して、2つのTOTALファンクションから返される結果を加算します。SHOW TOTAL(x) + TOTAL(z)
この文によって生成される出力は、次のとおりです。
NA
5.63 NASPELL
NASPELLオプションは、出力のNA
値に使用されるスペルを制御します。
データ型
TEXT
構文
NASPELL = {'text'|'NA'}
使用上の注意
NASPELLを「0」に設定
NASPELLをテキスト文字の0
(ゼロ)に設定すると、NA
値は0
と表示されます。ただし、計算ではNAとして処理されます。
NA値の割当て
NASPELLは、Oracle OLAP出力にのみ影響し、NA
値の割当て方法には影響しません。たとえば、NASPELLをNONEに設定した場合でも、NA
値を次のように割り当てます。
var1 = NA
NASPELLより優先順位の高い$NATRIGGER
Oracle OLAPは、NASPELLオプションを適用する前に$NATRIGGERプロパティ式を評価します。$NATRIGGER式がNA
である場合、NASPELLオプションは有効です。
例
例5-72 NA値を「NONE」として表示
現行の月が指定されない場合は常にNA
値にされるcurrent.month
という名前の変数があるとします。この場合、値をNA
ではなくNone
と表示されるようにできます。
NASPELLの設定がデフォルト値のNA
である場合に、次のOLAP DML文
SHOW current.month
によって、次の出力が生成されます。
NA
これに対し、OLAP DML文
NASPELL = 'None' SHOW current.month
によって、次の出力が生成されます。
None
5.64 NLS_CALENDAR
NLS_CALENDARオプションは、セッションのカレンダを指定するオプションです。
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_CALENDAR = option-value
パラメータ
有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLSパラメータの設定に関する項を参照してください。
例
例5-73 暦法の変更
次の文は、NLS_CALENDARをタイ仏暦に設定します。
NLS_CALENDAR = 'THAI BUDDHA'
5.65 NLS_CURRENCY
NLS_CURRENCYオプションは、セッションのL
数値書式要素に対応するローカル通貨記号を指定するオプションです。数値書式要素の詳細は、TO_NUMBERファンクションを参照してください。
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_CURRENCY = option-value
パラメータ
有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLSパラメータの設定に関する項を参照してください。
5.66 NLS_DATE_FORMAT
NLS_DATE_FORMATオプションは、日時値のデフォルトの書式を指定するオプションです。
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_DATE_FORMAT = option-value
パラメータ
有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLSパラメータの設定に関する項を参照してください。
例
例5-74を参照してください。
5.67 NLS_DATE_LANGUAGE
NLS_DATE_LANGUAGEオプションは、日、月、および言語に依存する同様な日時書式要素の言語を指定するオプションです。
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_DATE_LANGUAGE = option-value
パラメータ
有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLSパラメータの設定に関する項を参照してください。
例
例5-74 日付の言語の設定
次の文は、日付の言語をスペイン語に設定し、デフォルトの日付書式を変更します。
NLS_DATE_LANGUAGE = 'SPANISH' NLS_DATE_FORMAT = 'Month DD, YYYY'
これにより、SHOW SYSDATE
文を実行するとスペイン語の日付が表示されます。
Septiembre 08, 2000
5.68 NLS_DUAL_CURRENCY
NLS_DUAL_CURRENCYオプションは、数値書式モードの文字U
の位置に入り、主にユーロ記号を指定するときに使用される、2つ目の通貨記号を指定します。(ユーロ記号をNLS_DUAL_CURRENCYの値に指定する場合は、インスタンスのキャラクタ・セットがユーロ記号をサポートしている必要があります。)
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_DUAL_CURRENCY= option-value
パラメータ
有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLSパラメータの設定に関する項を参照してください。
5.69 NLS_ISO_CURRENCY
NLS_ISO_CURRENCYオプションは、C
数値書式要素に対応する国際通貨記号を指定するオプションです。
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_ISO_CURRENCY = option-value
パラメータ
有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLSパラメータの設定に関する項を参照してください。
5.70 NLS_LANG
(読取り専用)NLS_LANGオプションは、現行の言語、地域およびデータベース・キャラクタ・セットを指定するオプションです。セッション全体のグローバリゼーション・パラメータで決定します。
データ型
TEXT
構文
NLS_LANG
パラメータ
有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLSパラメータの設定に関する項を参照してください。
例
例5-75 NLS_LANGの現行値の確認
SHOW NLS_LANG
文により、たとえば、次のような結果が生成されます。
AMERICAN_AMERICA.WE8ISO8859P1
5.71 NLS_LANGUAGE
NLS_LANGUAGEオプションは、セッションの現行の言語を指定するオプションです。このオプションの設定でSESSION_NLS_LANGUAGEオプションの値が決定されます。
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_LANGUAGE = option-value
パラメータ
有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLSパラメータの設定に関する項を参照してください。
例
例5-76 NLS_LANGUAGEの変更による影響
この例では、NLS_LANGオプションが次のように初期設定されています。
AMERICAN_AMERICA.WE8ISO8859P1
YESSPELLの値はyes
です。
言語設定を次のように変更すると、
NLS_LANGUAGE = 'FRENCH'
NLS_LANGの値が次のように変更されます。
FRENCH_AMERICAN.WE8ISO8859P1
これにより、YESSPELLの値はoui
になります。
5.72 NLS_NUMERIC_CHARACTERS
NLS_NUMERIC_CHARACTERSオプションは、セッション用に小数点および3桁を区切る文字を指定するオプションです。NLS_NUMERIC_CHARACTERSは、THOUSANDSCHARおよびDECIMALCHARオプションのいずれか、または両方の設定、および数値データの表示に影響を与えます。
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_NUMERIC_CHARACTERS = option-value
パラメータ
有効な値などのNLSパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLSパラメータの設定に関する項を参照してください。
例
例5-77 小数点記号のカンマへの変更
次の文は、小数点記号をカンマに変更し、3桁区切り文字を空白に変更します。
NLS_NUMERIC_CHARACTERS = ', '
次の文の結果
show 1234.56
は、次のようになります。
1 234,56
5.73 NLS_SORT
NLS_SORTオプションは、テキストのソートまたは比較時に使用される文字値のシーケンスを指定するオプションです。NLS_SORTの値は、GT
、GE
、LT
およびLE
演算子、SORTコマンドおよびSORTLINESファンクションに影響します。
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_SORT = option-value
パラメータ
NLS_SORTパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLS_SORTを参照してください。
例
例5-78 バイナリ・ソートと言語ソート
words
という名前のディメンション値は、次のとおりです。
cerveza, Colorado, cheremoya, llama, luna, lago
次の例は、バイナリ・ソートの結果を示します。
NLS_SORT = 'BINARY' SORT words A words STATUS words The current status of WORDS is: Colorado, cerveza, cheremoya, lago, llama, luna
スペイン語の言語ソートの結果は、次の順序になります。
NLS_SORT = 'SPANISH' SORT words A words STATUS words The current status of WORDS is: cerveza, cheremoya, Colorado, lago, llama, luna
スペイン語の拡張言語ソートの結果は、次の順序になります。
NLS_SORT = 'XSPANISH' SORT words A words STATUS words The current status of WORDS is: cerveza TO cheremoya, lago TO llama
5.74 NLS_TERRITORY
NLS_TERRITORYオプションは、セッションの現行の領域を指定するオプションです。
このオプションの値はセッション内で動的に変更できます。これには、次に示すOLAP DML構文を使用するか、ALTER SESSION
SET
option
=
value
というSQL文を使用します。
データ型
TEXT
構文
NLS_TERITORRY = option-value
パラメータ
NLS_TERRITORYパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』のNLS_TERRITORYを参照してください。
例
例5-79 NLS_TERRITORYの変更による影響
この例では、NLS_LANGオプションが次のように初期設定されています。
AMERICAN_AMERICA.WE8ISO8859P1
3桁区切り文字はカンマ(,
)で、小数点記号はピリオド(.
)です。
SHOW TO_NUMBER('12345') 12,345.00
地域設定を次のように変更すると、
NLS_TERRITORY = 'FRANCE'
NLS_LANGの値が次のように変更されます。
AMERICAN_FRANCE.WE8ISO8859P1
これにより、3桁区切り文字はピリオド(.
)に、小数点記号はカンマ(,
)になります。
SHOW TO_NUMBER('12345') 12.345,00
5.75 NOSPELL
(読取り専用)NOSPELLオプションは、OLAP DML文の出力に存在するFALSE
ブール値に使用されるテキストを保持します。
NOSPELLオプションの値は、NLS_LANGUAGEオプションで指定される現行の言語で「no」に対応する語です。たとえば、NLS_LANGUAGEの設定が「American」である場合、NOSPELLのデフォルト値はNO
です。
データ型
TEXT
構文
NOSPELL
例
例5-80 NOSPELLオプションの効果の確認
現在の値がNO
であるBOOLVARという変数があるとします。NLS_LANGUAGEオプションで指定した言語で「no」に対応する語が「non」である場合、
SHOW boolvar
によって、次の出力が生成されます。
non
5.76 OKFORLIMIT
OKFORLIMITオプションは、明示的なFORループの内側でループしているディメンションを制限できるかどうかを制御します。
ヒント:
REPORT文で生成されるループでループしているディメンションのステータスを設定するには、TEMPSTAT文を使用してください。
データ型
BOOLEAN
構文
OKFORLIMIT = {NO|YES}
例
例5-81 ループ内部での制限の許可
次のプログラムの抜粋はOKFORLIMITをYES
に設定するので、ユーザーはFORループの内部でmarket
を制限できます。
... OKFORLIMIT = YES FOR market DO LIMIT market TO CHILDREN USING market.market REPORT market DOEND ...
5.77 OKNULLSTATUS
OKNULLSTATUSオプションは、Oracle OLAPでディメンション・ステータス・リストのNULLの設定を許可するかどうかを決定します。デフォルトでは、空のステータス・リストは許可されません。NULLステータス・リストが許可されない場合、結果がNULLステータス・リストになるLIMITコマンドを実行すると、Oracle OLAPはエラー・メッセージを生成します。
データ型
BOOLEAN
構文
OKNULLSTATUS = {YES|NO}
パラメータ
使用上の注意
OKNULLSTATUSに効果がない場合
次の状況では、OKNULLSTATUSの値に効果はありません。
-
LIMITコマンドにIFNONE引数が指定されている場合。
-
LIMITコマンドにNULLキーワードが指定され、ディメンション・ステータス・リストがNULLに設定される場合。
-
LIMITコマンドによって値セットがNULLに設定される場合(ただし、IFNONE引数を使用していないとき)。OKNULLSTATUSが
NO
の場合でも、値セットはNULLに設定され、エラー・メッセージは生成されません。 -
NULLのディメンション・ステータス・リストを返すようにLIMITファンクションが指定されている場合。OKNULLSTATUSが
NO
の場合でも、返される値はNA
であり、エラー・メッセージは生成されません。
ディメンションおよび値セットでのNULLステータスの使用の詳細は、LIMITコマンドを参照してください。
例
例5-82 OKNULLSTATUSの使用
次の文は、ディメンションのNULLステータスに関するエラー・メッセージを表示せずにディメンション・ステータス・リストをNULLに設定できるようにします。
OKNULLSTATUS = YES
5.78 OUTFILEUNIT
(読取り専用)OUTFILEUNITオプションは、最後のOUTFILE文によって設定された現在のOUTFILE出力先のファイル・ユニット番号を保持します。出力を指定のファイルに最初にリダイレクトしたとき、OUTFILEはそのファイルにファイル・ユニット番号として任意のINTEGER
を割り当てます。
データ型
INTEGER
構文
OUTFILEUNIT
使用上の注意
OUTFILEとOUTFILEUNIT
OUTFILE文に対して異なるファイルを指定するたびに、OUTFILEUNITの設定は自動的に変更されます。たとえば、OUTFILE
myfilename
という文を実行すると、OUTFILEUNITの値はmyfilenameに割り当てられたファイル・ユニット番号になります。
例
例5-83 FILEQUERYでのOUTFILEUNITの使用
ファイルのファイル・ユニット番号をfilenum
という名前の変数に保存しているとします。現行の出力ファイルは別のディスク・ファイルです。最初のファイルのPAGEPRGの値を現行の出力ファイルのPAGEPRGの値に設定することにします。現行の出力ファイルのファイル・ユニット番号はOUTFILEUNITオプションに含まれるので、FILEQUERYとOUTFILEUNIT番号を組み合せて指定すると、現行の出力ファイルのPAGEPRG設定を取得できます。
FILESET filenum PAGEPRG FILEQUERY(OUTFILEUNIT PAGEPRG)
5.79 PAGENUM
PAGENUMオプションは、出力の現行ページ数を保持します。PAGENUMとPAGEPRGを組み合せて使用すると、レポートの各ページにページ番号を付けることができます。PAGENUMオプションは、PAGINGの設定がYES
の場合にのみ有効であり、REPORTやLISTNAMESなどの文からの出力に対してのみ適用されます。
データ型
INTEGER
構文
PAGENUM = n
使用上の注意
1ページからの開始
出力をデフォルトの出力ファイルに送信する場合、レポートの生成を1ページから開始するには、必ずPAGENUMとLINENUMの両方を1に設定します。これらのオプションは、レポート・プログラムの初期化セクションで設定できます。OUTFILE文を使用して出力をファイルに送信すると、PAGENUMは自動的に1
に設定されます。
ページ途中でのPAGENUMの設定
PAGENUMの値は、出力の最後の行がページ上に生成されると自動的に増分されます。出力ページの表示がページの途中で終了する場合にPAGENUMを設定すると、次のページが生成される前にPAGENUMの値が1つ増分されます。したがって、通常、次のページに表示するページ番号より1少ない値にPAGENUMの値を設定する必要があります。
PAGENUMでのPAGINGの効果
PAGINGをNO
に設定すると、PAGENUMによるカウントは停止し、最後の値が保持されます。PAGINGをYES
に再設定すると、中断した箇所のページ番号からPAGENUMによるカウントが再開されます。
PAGENUMでのOUTFILEの効果
OUTFILE文を使用して出力をファイルに送信すると、PAGENUMはそのファイルに対して1
に設定されます。OUTFILE文とEOFキーワードを組み合せて使用して出力をデフォルトの出力ファイルにリダイレクトすると、PAGENUMに入るページ番号は、デフォルトの出力ファイルに最後に保持された番号です。
例
例5-84 2ページ目のヘッダーの変更
レポートの各ページに、標準的に表示されるページ・ヘッダーとカスタムのタイトルを設定し、2ページ目以降には「(Continued)」というヘッダーも追加することにします。PAGENUM値を使用して「(Continued)」ヘッダーを追加する条件を判別する、report.head
という名前のページ・ヘッダー・プログラムを定義できます。
DEFINE report.head PROGRAM PROGRAM STDHDR BLANK PAGING = YES HEADING WIDTH LSIZE CENTER 'Annual Sales Report' BLANK IF PAGENUM GT 1 THEN HEADING WIDTH LSIZE CENTER '(Continued)' BLANK END
レポート・プログラムで、PAGEPRGオプションを設定してreport.head
プログラムを使用します。
PAGEPRG = 'report.head'
レポート・プログラムを実行すると、2ページ目以降の各ページに次のようなヘッダーが先頭に表示されます。
15JAN95 15:05:16 Page 2 Annual Sales Report (Continued)
5.80 PAGEPRG
PAGEPRGオプションは、出力の各ページの先頭で実行されるプログラムの名前または文のテキストを保持します。そのプログラムまたは文を使用して、レポートの複数ページでタイトルおよび列ヘッダーを作成できます。プログラムには、各ページの先頭で実行するのに適した他の文も含めることができます。通常、PAGEPRGの値は、レポート・プログラムの初期化セクションで設定します。
PAGEPRGオプションは、PAGINGの設定がYES
の場合にのみ有効であり、REPORTやLISTNAMESなどの文からの出力に対してのみ適用されます。
データ型
TEXT
構文
PAGEPRG = {'program'|'statement'|'NONE'|'STDHDR'}
パラメータ
- program
-
改ページの後に毎回実行されるプログラムの名前。プログラム名をテキスト式として指定する場合、一重引用符を省略できます。
- statement
-
改ページの後に毎回実行される文のテキスト。文をテキスト式として指定する場合、一重引用符を省略できます。
- NONE
-
改ページ後に自動的に実行される文またはプログラムがないことを指定します。
- STDHDR
-
(デフォルト)PAGEPRGによって格納されるプログラムの名前をSTDHDRにします。PAGEPRGの設定を
'DEFAULT'
にしても、PAGEPRGによって格納されるプログラムの名前をSTDHDRにできます。STDHDRを指定すると、左に日付および時刻、右にページ番号のヘッダーが作成されます。
使用上の注意
PAGPRGプログラムでのSTDHDRプログラムの使用
PAGEPRGプログラムを作成する場合、STDHDRプログラムをPAGEPRGプログラムの1行として含めることができます。通常、STDHDRを置く位置は、カスタム・ヘッダーを生成する他の文の前にします。例5-85を参照してください。
ヘッダー情報を最新状態に保持
TODAY、TODおよびPAGENUMなどのOracle OLAP機能は、PAGEPRGオプションで指定したプログラム内で使用できます。特定のレポートのタイトルなどの引数を受け入れるヘッダー・プログラムを用意することもできます。この場合、引数が設定されたレポート・ヘッダー・プログラムを起動するテキスト式にPAGEPRGオプションを設定します。例5-86を参照してください。
ファイルに対するPAGEPRGの設定
ファイルに対してPAGEPRGを設定するには、最初にOUTFILE文でファイルの名前を指定して現行の出力ファイルにしてから、PAGEPRGを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、そのファイルに対してPAGEPRGは'STDHDR'
のデフォルト値に戻ります。
PAGEPRGをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、PAGEPRGの値はデフォルトの出力ファイルに対して自動的に保存されます。
例
例5-85 カスタム・ヘッダーの作成
レポートの各ページに、標準的に表示されるページ・ヘッダーおよびタイトル「Annual Sales Report」を含めることにします。このために、report.head
という名前のプログラムを作成します。
DEFINE report.head PROGRAM PROGRAM STDHDR BLANK HEADING WIDTH LSIZE CENTER 'Annual Sales Report' BLANK IF PAGENUM GT 1 THEN HEADING WIDTH LSIZE CENTER '(Continued)' BLANK END
レポート・プログラムにPAGEPRGオプションを設定することにより、改ページの後に毎回このプログラムを実行することを指定します。PUSHコマンドとPOPコマンドを含めることにより、アクティブなPAGEPRG設定を保存できます。
PUSH PAGEPRG PAGING PAGEPRG = 'report.head' PAGING = YES ... (body of report program) POP PAGEPRG PAGING
レポート・プログラムを実行すると、各ページに次のヘッダーが挿入されます。
15JAN98 15:05:16 Page 1 Annual Sales Report
2ページ目以降には、サブヘッダー「(Continued)」も挿入されます。これはIF文にPAGENUMテストがあるためです。
例5-86 プログラム引数の使用
report.head
プログラムにレポート名を指定する別の方法として、レポート名をレポート・プログラムからreport.head
プログラムに渡すことができます。これを行うには、引数としてレポート名を指定したreport.headプログラムを起動するテキスト式にPAGEPRGオプションを設定します。レポート・プログラムには次の文が含まれているとします。
PAGEPRG = 'CALL report.head(\'Annual Sales Report\')'
この場合、report.headプログラムの最初の数行を次のように変更できます。
ARGUMENT titlevar TEXT STDHDR BLANK HEADING WIDTH LSIZE CENTER titlevar
5.81 PAGESIZE
PAGESIZEオプションは、出力の1ページのサイズを指定します。PAGESIZEの値は、各ページに生成される出力の行数です。PAGESIZEは、通常、レポート・プログラムの初期化セクションで使用します。PAGESIZEオプションは、PAGINGの設定がYES
の場合にのみ有効であり、REPORTやLISTNAMESなどの文からの出力に対してのみ適用されます。PAGESIZEではLINELEFTオプションも制御されます。PAGESIZEを変更すると、それに応じてLINELEFTも調整されます。
データ型
INTEGER
構文
PAGESIZE = n
パラメータ
使用上の注意
標準のヘッダーおよびデフォルト設定を使用した使用可能な出力行
標準のヘッダー、およびPAGESIZE、TMARGIN、BMARGINの各オプションのデフォルト設定を使用した場合、使用可能な出力行の数の合計は61行です。
Output Lines Lines from PAGESIZE 66 Lines for TMARGIN - 2 Lines for the standard heading - 2 Lines for BMARGIN - 1 Lines available for output 61
ヘッダーと改ページの削除
ヘッダーのないページを出力するには、文PAGEPRG='NONE'
を使用します。改ページを完全に抑制するには、文PAGING = NO
を使用します。
ファイルに対するPAGESIZEの設定
ファイルに対してPAGESIZEを設定するには、最初にOUTFILE文でファイルの名前を指定して現行の出力ファイルにしてから、PAGESIZEを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、そのファイルに対してPAGESIZEは66
のデフォルト値に戻ります。
PAGESIZEをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、PAGESIZEの値はデフォルトの出力ファイルに対して自動的に保存されます。
例
例5-87 リーガル・サイズ用紙への印刷
この例では、リーガル・サイズ用紙(14×8.5インチ)にレポートを生成します。レポート・プログラムの初期化セクションに次の文を含めます。
PAGESIZE = 84
5.82 PAGING
PAGINGオプションは、Oracle OLAPにおけるページ化される出力の生成を制御します。PAGINGをYES
に設定すると、DESCRIBE、REPORT、ROWコマンド、HEADING、SHOW、LISTNAMESなどの文からの出力がページ向け書式で生成されます。出力は、標準の上下マージンおよびヘッダーとともにページサイズに分けられて生成されます。様々なページング関連オプションを使用すると、各ページのサイズ、マージンのサイズおよびヘッダーを変更できます。
特に、ファイルに送信する出力を印刷する場合、ページングによってより見やすくできます。また、ページ化された出力をデフォルトの出力ファイルに送信することもできます。通常は、PAGINGオプションをレポート・プログラムの初期化セクションで設定し、レポートのページングをオンにします。
データ型
BOOLEAN
構文
PAGING = {YES|NO}
パラメータ
使用上の注意
ファイルに対するPAGINGの設定
ファイルに対してPAGINGを設定するには、最初にOUTFILE文でファイルの名前を指定して現行の出力ファイルにしてから、PAGINGを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力先を別の出力ファイルに変更すると、そのファイルに対してPAGINGはNO
のデフォルト値に戻ります。
PAGINGをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、PAGINGの値はデフォルトの出力ファイルに対して自動的に保存されます。
ページング関連のオプション
Oracle OLAPは、ページ長、ページ・ヘッダーおよび上下マージンに対してデフォルト値を使用します。これらの値を変更するには、PAGESIZE、PAGEPRG、TMARGIN、BMARGINの各オプションを設定します。PAGINGをYESに設定したときに有効になるこの他のページング・オプションには、LINENUM、LINELEFTおよびPAGENUMがあります。
現行の出力ファイルのPAGINGの値は、ページング関連オプションを使用するかどうかを決定します。ページング・オプションを有効にするには、現行の出力ファイルに対してPAGINGをYES
に設定する必要があります。
PAGINGのオン/オフの切替え
PAGINGのオン/オフを切り替えると、ページング・オプションに次の効果があります。
-
PAGINGをオン(YES)からオフ(NO)に切り替える場合
-
LINENUMオプションの値は出力行の生成数に応じて増加します。
-
LINELEFTオプションはPAGESIZEに設定されます。
-
PAGENUMオプションによるカウントは停止し、現行値が保持されます。
-
-
PAGINGをオフ(NO)からオン(YES)に切り替える場合
-
LINENUMが
1
に設定され、現行ページの行数のカウントが開始されます。 -
LINELEFTによって、現行ページの残り行数のカウントが開始されます。
-
中断した箇所のページ番号からPAGENUMによるカウントが再開されます。
-
出力ファイルの変更
OUTFILE文を使用して出力をファイルに送信すると、ファイルに対するすべてのページング関連オプションがデフォルト値に設定されます。OUTFILE文とEOFキーワードを組み合せて使用して出力をデフォルトの出力ファイルにリダイレクトすると、ページング関連オプションの値は、デフォルトの出力ファイルに最後に保持された値になります。
例
例5-88 ページング・オプションの設定
レポート・プログラムの作成時に改ページおよび上部余白を制御するとします。プログラムの初期化セクションに次の数行を含めます。これらの行は、出力をrepfile.txt
という名前のファイルに送信し、PAGINGオプションをオンにし、ページ・サイズおよび上部余白を変更します。
OUTFILE 'repfile.txt' PAGING = YES PAGESIZE = 84 TMARGIN = 6
5.83 PARENS
PARENSオプションは、負数を出力で表示する場合、カッコまたはマイナス記号を付けるかどうかを制御します。
データ型
BOOLEAN
構文
PARENS = {YES|NO}
使用上の注意
PARENSの変更
PARENSオプションの設定は、HEADING、REPORTまたはROWコマンドのPAREN属性またはNOPAREN属性によって変更されます。PAREN属性はカッコの使用を指定し、NOPAREN属性はマイナス記号の使用を指定します。
カッコのための領域の確保
レポート内で負数をカッコを使用して表現する場合、Oracle OLAPは正数および負数の列を揃えます。このため、各数値列の右端の文字が閉じカッコのために予約されます。出力に負数がない場合でも、この列が常に予約されます。その結果、マイナス記号を使用する場合より各値に必要な領域が増加するため、データが収まるように列幅を増やす必要があることがあります。
例
例5-89 カッコによる負数の表示
レポートで負数をカッコで表示するため、最初にPARENSをYES
に設定します。
LIMIT line TO 'Cogs' LIMIT division TO 'Sporting' LIMIT month TO 'Jan96' TO 'Jun96' PARENS = YES DECIMALS = 0 REPORT DOWN month budget actual budget-actual
これらの文によって生成される出力は次のとおりです。
DIVISION: SPORTING --------------LINE-------------- --------------COGS-------------- BUDGET-ACT MONTH BUDGET ACTUAL UAL -------------- ---------- ---------- ---------- Jan96 279,773 287,558 (7,785) Feb96 323,982 315,299 8,683 Mar96 302,178 326,185 (24,007) Apr96 386,101 394,544 (8,443) May96 433,998 449,862 (15,864) Jun96 448,042 457,348 (9,305)
5.84 PERMITERROR
PERMITERRORオプションは、PERMIT文によって読取り権限や書込み権限が拒否されている変数がアクセスされたときに、エラーを通知するかどうかを制御します。
関連項目:
「起動プログラム」、PERMITREADERRORオプション、PERMITコマンドおよびPERMITRESETコマンド。
データ型
BOOLEAN
構文
PERMITERROR = NO | YES
パラメータ
使用上の注意
非データ・オブジェクトに対するPERMITERROR
プログラム、モデル、値セットなど、非データ・オブジェクトに対する権限の違反については、PERMITERRORの設定は無視されます。権限がある変数およびリレーションにディメンション性があるかどうかにかかわらず、これらにアクセスしようとした場合、常にPERMITERRORの設定の影響を受けます。
ディメンションのメンテナンス
PERMITERRORの設定は、メンテナンス権限や許可権限の違反については無視されます。ディメンションをメンテナンスする権限および権限を変更する権限に違反しようとすると、常にエラーとして処理されます。同様に、ディメンションに対する読取り権限または書込み権限に違反しようとした場合も、常にエラーとして処理されます。
完全な権限のないデータの取得
PERMITERRORの設定がYES
であり、読取り権限のない値が含まれるディメンション化された変数をフェッチしようとした場合、これらの値のうち最初の値が検出されたときにエラー条件が発生します。レポートを作成する前に、許容される値のみがステータスにあるように前もってディメンションを制限するか、PERMITERRORをNO
に設定することによって、エラー条件の発生を防止できます。
例
例5-90 完全な権限のないレポート
次の例では、price
変数の読取り権限に制約があるために、Tents
以外のproduct
の値については価格データを参照できません。ただし、PERMITERRORをNO
に設定すると、エラー条件を発生させることなく、1996年12月のprice
変数のレポートを生成できます。
PERMITERROR = no DESCRIBE price
この文の出力は次のとおりです。
DEFINE PRICE VARIABLE DECIMAL <MONTH PRODUCT> LD Wholesale Unit Selling Price PERMIT READ WHEN product eq 'Tents'
次の文により
LIMIT month TO 'Dec96' REPORT price
によって、次の出力が生成されます。
----PRICE---- ----MONTH---- PRODUCT DEC96 ---------------- ------------- Tents 165.64 Canoes NA Racquets NA Sportswear NA Footwear NA
次の文により
PERMITERROR = yes REPORT price
によって、次のエラーが生成されます。
ERROR: You do not have permission to read this value of PRICE
さらに、次の出力が生成されます。
---PRICE--- ---MONTH--- PRODUCT DEC96 --------------- ----------- Tents 165.64
5.85 PERMITREADERROR
PERMITREADERRORオプションは、PERMIT文によって読取り権限や書込み権限が拒否されている変数、値セット、式またはリレーションの読取りが行われたときに、エラーを通知するかどうかを制御します。
関連項目:
「起動プログラム」、PERMITERRORオプション、PERMITコマンドおよびPERMITRESETコマンド。
データ型
BOOLEAN
構文
PERMITREADERROR = NO | YES
パラメータ
- NO
-
(デフォルト)PERMITREADERRORの値が
YES
である場合、PERMIT文によって読取り権限や書込み権限が拒否されている変数、値セット、式またはリレーションがアクセスされたときにエラー条件は発生しません。読取り権限のない値は、NA
と表示されます。書込み権限のない値を変更しようとすると、その要求は無視されます。 - YES
-
PERMITERRORが
YES
である場合、PERMIT文によって読取り権限や書込み権限が拒否されている変数、値セット、式またはリレーションの読取りが行われるとエラーが通知されます。このエラーはトラップできますが、このエラーにより、無効なアクセスを開始したOracle OLAP操作は終了します。
5.86 PRGTRACE
PRGTRACEオプションは、プログラムの実行時に、プログラムの各行が現行の出力ファイルまたはデバッグ・ファイルに記録されるかどうかを制御します。PRGTRACEは、プログラムの実行をトレースすることによって問題を検出するためのデバッグ・ツールとして主に使用されます。
OLAP DML文として提供されるOLAP DMLプログラムは、EXPTRACEの設定がYES
でないかぎり、トレースされません。
DBGOUTFILE文を使用してデバッグ・ファイルを指定した場合、PRGTRACEの出力は現行の出力ファイルではなくデバッグ・ファイルに送信されます。
データ型
BOOLEAN
構文
PRGTRACE = {YES|NO}
使用上の注意
PRGTRACEの出力
PRGTRACEでは、現行プログラムの名前が各プログラム行の先頭に記録されます。コンパイル済の行を示すには、等号が挿入されます。
(PRG= SALESREP) . . .
未コンパイルの行を示すには、コロンが挿入されます。
(PRG: SALESREP) . . .
コンパイル済の行は、効率的な内部形式に変換された行であるのに対して、未コンパイルの行は変換されていません。Oracle OLAPでは、プログラム(特にループが含まれるプログラム)がより効率的に動作するように、通常はコンパイル済の形式で行を格納します。
未コンパイルのプログラム行
Oracle OLAPは、プログラムをコンパイルしてから実行します。したがって、PRGTRACEの出力で未コンパイルとマークされる行は、アンパサンド置換が記述された行などのコンパイルできない行に限定されます。
例
例5-91 プログラム実行のトレース
単純な予算レポートを生成するsalesrep
という名前のプログラムがあるとします。
DEFINE salesrep PROGRAM PROGRAM PUSH month division line TRAP ON cleanup LIMIT month TO &ARGS LIMIT division TO ALL LIMIT line TO FIRST 1 REPORT DOWN division across month: dec 0 budget cleanup: POP month division line END
このプログラムをデバッグする場合、PRGTRACEをオンにしてからプログラムを実行し、プログラムの各行の実行をトレースします。
PRGTRACE = yes salesrep FIRST 3
PRGTRACEにより、現行の出力ファイルまたはデバッグ・ファイルに次の出力が生成されます。
(PRG= SALESREP) push month division line (PRG= SALESREP) trap on cleanup (PRG: SALESREP) limit month to &args (PRG= SALESREP) limit division to all (PRG= SALESREP) limit line to first 1 (PRG= SALESREP) report down division across month: dec0 budget LINE: REVENUE -------------BUDGET------------- -------------MONTH-------------- DIVISION JAN95 FEB95 MAR95 -------------- ---------- ---------- ---------- CAMPING 679,149 707,945 780,994 SPORTING 482,771 517,387 525,368 CLOTHING 983,888 1,016,528 992,331 (PRG= SALESREP) cleanup: (PRG= SALESREP) pop month division line
5.87 RANDOM.SEED.1およびRANDOM.SEED.2
RANDOM.SEED.1オプションおよびRANDOM.SEED.2オプションは、乱数の計算時にRANDOMによって使用される値を指定します。RANDOMは、数値を計算するためにオプションRANDOM.SEED.1およびRANDOM.SEED.2を使用し、その後で次回の値を変更します。
アプリケーション・プログラムの開発およびデバッグ時に同じ乱数列を再生成する場合、RANDOMを使用する前にRANDOM.SEED.1およびRANDOM.SEED.2を特定の値に設定します。
データ型
INTEGER
構文
RANDOM.SEED.1|RANDOM.SEED.2 = n
使用上の注意
同じ乱数列の再生成
例8-64に示されているように、アプリケーション・プログラムの開発およびデバッグ時に同じ乱数列を再生成する場合、RANDOMを使用する直前にRANDOM.SEED.1およびRANDOM.SEED.2を特定の値に設定します。その数列を繰り返し生成するには、RANDOMを再び使用する直前にこれらのオプションを同じ値に設定します。これにより、作成したプログラムの動作が異なる場合、乱数列の相違ではなくプログラムの相違が原因であることがわかります。
例
例5-92 テストのためのRANDOMの明示的なシード指定
アナリティック・ワークスペースに次のディメンションおよび変数があるとします。
DEFINE id DIMENSION TEXT DEFINE myvar VARIABLE INTEGER <id>
次のコードに示すとおり、最初にシード指定せずにRANDOMを使用してmyvar
を移入します。RANDOMが実行されるたびに異なる値がOracle OLAPによってmyvar
に移入されます。
myvar = 0 myvar = RANDOM (10, 20) REPORT myvar ID MYVAR -------------- ---------- a1 11 a2 19 a3 14 myvar = 0 myvar = RANDOM (10, 20) REPORT myvar ID MYVAR -------------- ---------- a1 16 a2 13 a3 12
次に、myvar
に対して予測可能な値を作成するRANDOMを使用するテストを記述します。次のコードに示すように、RANDOMの結果がその時々で同じになるようにするには、RANDOM.SEED.1およびRANDOM.SEED.2の値をRANDOMの実行直前に設定する必要があります。
myvar = 0 RANDOM.SEED.1 = 5 RANDOM.SEED.2 = 3 myvar = RANDOM (10, 20) REPORT myvar ID MYVAR -------------- ---------- a1 10 a2 16 a3 13 myvar = 0 RANDOM.SEED.1 = 5 RANDOM.SEED.2 = 3 myvar = RANDOM (10, 20) REPORT myvar ID MYVAR -------------- ---------- a1 10 a2 16 a3 13
RANDOM.SEED.1およびRANDOM.SEED.2に対して設定した値は、セッション全体を通して同じ値に保たれるわけではありません。次のコードに示すように、実行直前に毎回同じ値をシード指定しなかった場合、RANDOMによって生成される値は同じにはなりません。
myvar = 0RANDOM.SEED.1 = 5 RANDOM.SEED.2 = 3 myvar = RANDOM (10, 20) REPORT myvar ID MYVAR -------------- ---------- a1 10 a2 16 a3 13 myvar = 0 myvar = RANDOM (10, 20) REPORT myvar ID MYVAR -------------- ---------- a1 11 a2 16 a3 20
5.88 RECURSIVE
RECURSIVEオプションは、計算式または$NATRIGGER式がそれ自身をコールする機能を制御します。
構文
RECURSIVE = {YES|NO}
パラメータ
- YES
-
YES
を指定すると、計算式または$NATRIGGER式がそれ自身をコールできます。計算の再帰法を使用する計算式または$NATRIGGERプロパティの式を定義する場合に、このオプションを
YES
に設定します。 - NO
-
(デフォルト)
NO
を指定すると、計算式または$NATRIGGER式がそれ自身をコールできません。再帰的計算式または$NATRIGGER式を評価しようとすると、RECURSIVEオプションが現在NO
に設定されていることを示すエラー・メッセージが表示されます。ワークスペースに再帰的計算式または$NATRIGGER式が格納されるまで、無限ループ動作を引き起こす可能性のあるエラーを検出するために、このオプションは
NO
に設定したままにしてください。
使用上の注意
計算式および$NATRIGGER式のみが対象
RECURSIVEをYES
に設定した場合、計算式および$NATRIGGERプロパティ式のみが影響を受けます。このオプションはプログラムには影響せず、つまり、プログラムが$NATRIGGER式でないかぎり、RECURSIVEオプションの設定にかかわらず、プログラムは再帰的に実行できます。$NATRIGGER式は、RECURSIVEオプションがYES
でないかぎり、それ自身をコールできません。
$NATRIGGERの再帰の制限
TRIGGERMAXDEPTHオプションを設定すると、$NATRIGGERプロパティ式の再帰の深さを制限でき、このオプションでは、同時に実行される$NATRIGGER式の最大数が設定されます。
5.90 ROOTOFNEGATIVE
ROOTOFNEGATIVEオプションは、負数の根を取得しようとした場合の結果を決定します。
データ型
BOOLEAN
構文
ROOTOFNEGATIVE = YES|NO
パラメータ
使用上の注意
非整数での累乗
数値を非整数で累乗すると(たとえば、 5 ** 0.3
や14 ** 2.7
)、根が取得されます。
例
例5-94 ROOTOFNEGATIVEの影響
次の例は、ROOTOFNEGATIVEオプションの値を変更したことによる影響を示します。変数TESTNUMBERは値-56
を持ちます。次のように、ROOTOFNEGATIVEオプションをデフォルト値NO
のままSHOW文を実行すると、平方根を取得しようとした結果、エラー・メッセージが生成されます。
SHOW SQRT(testnumber)
ROOTOFNEGATIVEをYES
に変更すると、同じ文がエラーにならずに実行されます。
ROOTOFNEGATIVE = YES SHOW SQRT(testnumber)
次の結果が生成されます。
NA
5.91 SECONDS
(読取り専用)SECONDSオプションは、1970年1月1日以降の秒数を保持します。プログラムの高速化を目指す場合に、SECONDSを使用することにより、プログラムが実行されている間の実際の経過秒数がわかります。
データ型
INTEGER
構文
SECONDS
例
例5-95 SECONDSを使用したプログラムの時間測定
次のプログラムを実行すると、プログラム開始時のSECONDSの値がt1
という変数に書き込まれ、次にt1
とプログラム実行後のSECONDSの値との差が表示されます。
DEFINE prodsummary PROGRAM PROGRAM VARIABLE t1 INTEGER t1 = seconds LIMIT product TO ALL BLANK FOR product DO ROW WIDTH 16 name.product ACROSS month Jun96: DECIMAL 0 LSET - '$'WIDTH 18 <RSET ' (actual)' sales RSET ' (plan)' sales.plan> DOEND BLANK ROW WIDTH 35 LSET 'the program took ' RSET ' SECOND(s).' - (SECONDS-t1) END
このプログラムを実行すると、次の結果が生成されます。
3-Person Tents $95,121 (actual) $80,138 (plan) Aluminum Canoes $157,762 (actual) $132,931 (plan) Tennis Racquets $97,174 (actual) $84,758 (plan) Warm-up Suits $79,630 (actual) $73,569 (plan) Running Shoes $153,688 (actual) $109,219 (plan) The program took 2 second(s).
5.92 SESSCACHE
SESSCACHEオプションは、通常デバッグ時のみ使用し、「Oracle OLAPセッション・キャッシュの概要」で説明するOracle OLAPセッション・キャッシュをOracle OLAPが作成するかどうかを制御します。
データ型
BOOLEAN
構文
SESSCACHE = {YES|NO}
パラメータ
- YES
-
「Oracle OLAPセッション・キャッシュの概要」で説明されているデータを保持するために、セッション・キャッシュが作成されます。
- NO
-
Oracle OLAPは、セッション・キャッシュの読取りおよび書込みを実行しません。
NO
を指定した場合、1つ以上のaggmapオブジェクトの仕様にCACHE SESSION文をコーディングすること、1つ以上の$VARCACHEプロパティをSESSION
に設定すること、またはVARCACHEオプションをSESSION
に設定することによってキャッシュを指定しても、キャッシュは実行されません。
使用上の注意
Oracle OLAPセッション・キャッシュの概要
OLAPセッション・キャッシュとは、次の情報を保持するために使用されるメモリー内の特別な場所です。
-
次の状況でAGGREGATEファンクションが実行されたときに即時計算されたすべてのデータ
-
集計の仕様にCACHE SESSIONが含まれる
-
集計の仕様にCACHE SESSION文は含まれていないが、集計される変数に
SESSION
の値を持つ$VARCACHEプロパティがある -
集計の仕様にCACHE SESSION文が含まれておらず、集計される変数にも$VARCACHEプロパティがないが、VARCACHEオプションが
SESSION
に設定されている
-
-
AGGREGATEファンクションが実行され、集計の仕様にCACHE NA文が含まれていたときに計算された
NA
値(のみ) -
次の状況で$NATRIGGER式が実行されたときに計算されたすべてのデータ
-
$NATRIGGERプロパティを持つ変数に
SESSION
値の$VARCACHEプロパティも設定されている -
$NATRIGGERプロパティを持つ変数に$VARCACHEプロパティはないが、VARCACHEオプションが
SESSION
に設定されている
-
1つのセッションに1つの内部キャッシュがあります。UPDATE文とCOMMIT文は、キャッシュされたデータを無視します。ただし、データがいったんキャッシュされると、FORCECALCキーワードを持つAGGREGATEファンクションを実行する場合を除いて、Oracle OLAPはキャッシュの値を使用してすべての計算を実行します。この場合、FORCECALCキーワードは、Oracle OLAPに値を再計算するように指定します。
セッションが終了すると、キャッシュは消去されます。セッションを終了せずにセッション・キャッシュを消去するには、CLEAR文を発行します。
セッション・キャッシュの効果は、V$AW_CALC
動的パフォーマンス・ビューで追跡されます。
5.93 SESSION_NLS_LANGUAGE
(読取り専用)SESSION_NLS_LANGUAGEオプションは、OLAPセッション全体で有効なオプションです。このオプションは、STATIC_SESSION_LANGUAGEの値がNOの場合はNLS_LANGUAGEの値を保持し、STATIC_SESSION_LANGUAGEの値がYESの場合は、STATIC_SESSION_LANGUAGEの値が最後にNOだったときのNLS_LANGUAGEの値を保持します。
関連項目:
$DEFAULT_LANGUAGEの「SESSION_NLS_LANGUAGE」
データ型
TEXT
構文
SESSION_NLS_LANGUAGE
例
NLS_LANGUAGEおよびSTATIC_SESSION_LANGUAGEの値の変化によって、SESSION_NLS_LANGUAGEの値にどのような影響があるかについては、例4-9および例5-102を参照してください。
例5-96 SESSION_NLS_LANGUAGEがセッション全体のオプションであることの確認
myaw3
とmyaw4
という2つのアナリティック・ワークスペースがあるとします。また、次のコードに示すとおり、どちらにもmylangs
という言語ディメンションがあると仮定し、myaw3
のmylangs
の言語はAmericanとFrench、myaw4
のmylangs
の言語はAmericanとGermanです。
REPORT myaw3!mylangs MYLANGS -------------- AMERICAN FRENCH REPORT myaw4!mylangs MYLANGS -------------- AMERICAN GERMAN
ここで、NLS_LANGUAGEとSESSION_NLS_LANGUAGEがAmericanに設定された状態で2つのアナリティック・ワークスペースをアタッチするとします。この場合、次に示されているように、2つのアナリティック・ワークスペースのmylangs
はAmericanのみに制限されます。
REPORT myaw3!mylangs MYLANGS -------------- AMERICAN REPORT myaw4!mylangs MYLANGS -------------- AMERICAN
5.94 SPARSEINDEX
SPARSEINDEXオプションは、コンポジットが値のロードおよびアクセスで使用する索引アルゴリズムのタイプを制御します。名前付きコンポジットを定義するとき、または名前のないコンポジットを作成するときのSPARSEINDEXの値であり、そのコンポジットがデフォルトで使用するアルゴリズムのタイプが決まります。DEFINE COMPOSITE文で索引アルゴリズムを指定すると、SPARSEINDEXオプションで指定されているデフォルトのアルゴリズムが上書きされます。
索引アルゴリズムの選択が重要になるのは、パフォーマンスの問題に留意する場合のみです。いずれの推奨事項も、このマニュアルが対応しているOracle OLAPのリリースに関するものです。CHGDFN文を使用してコンポジットのアルゴリズムを変更すると、アルゴリズムごとにパフォーマンスにどのような影響を及ぼすのかをテストできます(たとえば、データをロードする前など)。
データ型
TEXT
構文
SPARSEINDEX = {'BTREE'|'HASH'}
パラメータ
例
例5-97 HASHアルゴリズムの使用
次の例は、SPARSEINDEXをHASH
に設定しているため、次に定義または作成するコンポジットはデフォルトでHASH索引アルゴリズムを使用して作成されます。
SPARSEINDEX = 'HASH'
5.95 SQLBLOCKMAX
SQLBLOCKMAXオプションは、Oracle Databaseインスタンスから一度に取得するレコードの最大数を制御します。このオプションによって、データ・フェッチのパフォーマンスをきめ細かくチューニングできます。
データ型
INTEGER
構文
SQLBLOCKMAX = records
パラメータ
使用上の注意
カーソルのオープン
新しいブロック・サイズを使用するカーソルは、SQLBLOCKMAXのリセット後にオープンされたカーソルです。
レコード数
プログラムの通常の操作が、カーソルをオープンして1レコードを読み取ってからクローズする場合、SQLBLOCKMAXを1
に設定します。このように設定しないと、SQL FETCH文は10レコードを取得してそのうちの9レコードを破棄します。同じことが、10レコード未満をフェッチする他のルーチンにも当てはまります。
ブロック・サイズ
プログラムで小さなレコードをフェッチする場合、SQLBLOCKMAXを増やしてフェッチに必要なブロック数を減らすことができます。Oracle OLAPは、データを64KBのバッファにフェッチします。ブロック・サイズは、レコード数にレコードのサイズを掛けたもので、バイトで示します。ブロック・サイズがバッファの制限である64KBを超える場合、Oracle OLAPはフェッチするレコード数を自動的に減らします。例5-98を参照してください。
例
例5-98 SQLBLOCKMAXによるカーソルの定義
次のプログラムの抜粋は、データベースから50バイトのレコードをフェッチするカーソルを定義します。新しいブロック・サイズは、Oracle OLAPの64KBのバッファに十分収まります(50
バイト*
100
=
50KB
のブロック・サイズ)。
SQLBLOCKMAX = 100 SQL DECLARE CURSOR c1 FOR SELECT * FROM mydata SQL OPEN c1
5.96 SQLCODE
(読取り専用)SQLCODEオプションは、最後に実行されたSQL操作後に、Oracle RDBMSによって返される値を保持します。
戻り値
INTEGER。操作が成功した場合は0
、エラーの場合は-1
、要求されたすべての行がフェッチされた場合は100
です。
構文
SQLCODE
使用上の注意
SQLエラーの処理
Oracle OLAPは、SQLCODEがゼロ以外の場合でもエラーを通知しません。このため、プログラムでSQLCODEの値をテストし、適切な処理を実行する必要があります。各SQL操作でSQLCODEが設定されるため、操作ごとにエラーをテストしてエラー条件を見逃さないようにする必要があります。
ヒント:
エラーが発生すると、通常はSQLERRMオプションにエラー・メッセージが含まれます。
特定のエラー・コードを確認するプログラムを記述できます。たとえば、最も一般的な警告コードは100
で、これはカーソルが選択する表の終わりにまで到達し、FETCH文が完了していることを示します。
例
例5-99 SQLCODEによるデータのフェッチ
次のプログラムの抜粋には、SQLCODEの値をテストするWHILEループが含まれて、カーソルのアクティブなセットの最後に達するとデータのフェッチを停止します。
WHILE SQLCODE EQ 0 SQL FETCH cursor1 INTO :employee, :title
5.97 SQLERRM
(読取り専用)SQLERRMオプションは、データベースがエラーをレポートしてSQLCODEがゼロ以外の値の場合、通常はその問題を説明するテキストを含みます。
データ型
TEXT
構文
SQLERRM
使用上の注意
Oracleリレーショナル・マネージャ
SQLMESSAGESオプションをYES
に設定すれば、SQLERRMの値を自動的に現行の出力ファイルに送信できます。
例
例5-100 エラー・メッセージの表示
次の文は、表を作成してからエラー・メッセージを確認します。
SQL CREATE TABLE Products - (Prod_ID CHAR(8) - Prod_Name VARCHAR(30) - Suggested_Price DECIMAL(10,2)) IF SQLCODE NE 0 SHOW SQLERRM
例5-101 エラー・メッセージのサンプル
次の文は不完全であり、十分な情報が指定されていないので表を作成できません。
SQL CREATE TABLE Products
Oracle RDBMSは次のようなエラー・メッセージを返します。
ORA-00906: Missing left parenthesis.
5.99 STATIC_SESSION_LANGUAGE
STATIC_SESSION_LANGUAGEオプションは読取り/書込みオプションで、SESSION_NLS_LANGUAGEオプションの値をNLS_LANGUAGEオプションの値と常に同期させるかどうかを制御します。
関連項目:
$DEFAULT_LANGUAGEの「言語ディメンション・ステータスの処理」
データ型
BOOLEAN
構文
STATIC_SESSION_LANGUAGE = NO | YES
パラメータ
例
例5-102 OLAPセッションの言語を変更せずにNLS_LANGUAGEを変更する方法
例4-9では、NLS_LANGUAGEの値を変更することによりOLAPセッションの言語を変更する方法について説明しています。ここでは、NLS_LANGUAGEオプションの値を変更した場合でも、OLAPセッションの言語を変更しない方法について説明します。
アナリティック・ワークスペースが、NLS_LANGUAGEがAmericanに設定された状態でアタッチされているものとします。次のコード例では、STATIC_SESSION_LANGUAGEの値をYesに設定することで、NLS_LANGUAGEオプションの値をFrenchに変更しても、SESSION_NLS_LANGUAGEの値をAmericanに維持できており、これは、Oracle OLAPによって言語ディメンション(mylangs
)がAmericanに制限されているということを意味します。
SHOW NLS_LANGUAGEFRENCH AMERICAN " Make the session language static STATIC_SESSION_LANGUAGE = yes "Change the value of NLS_LANGUAGE to FRENCH SET NLS_LANGUAGE= 'FRENCH' SHOW OBJ(PROPERTY '$DEFAULT_LANGUAGE' 'mylangs') AMERICAN SHOW NLS_LANGUAGE FRENCH SHOW SESSION_NLS_LANGUAGE AMERICAN SHOW LOCK_LANGUAGE_DIMS oui SHOW STATIC_SESSION_LANGUAGE oui REPORT mylangs MYLANGS -------------- AMERICAN REPORT prod_desc ------PROD_DESC------ ------PRODUCTS------- MYLANGS PROD01 PROD02 -------------- ---------- ---------- AMERICAN Trousers Skirts
5.100 THIS_AW
(読取り専用)THIS_AWオプションは、修飾オブジェクト名を作成するためにOracle OLAPがTHIS_AWキーワードの一致文字列を置換する際に使用する、ワークスペース名の値です。
データ型
TEXT
構文
THIS_AW
5.101 THOUSANDSCHAR
(読取り専用)THOUSANDSCHARオプションは、NLSオプションで説明されているNLS_NUMERIC_CHARACTERSオプションに指定された値になります。
注意:
THOUSANDSCHARの値は、出力でのOracle OLAPによる数値書式にのみ影響します。入力される数値の書式には影響を与えません。
データ型
ID
構文
THOUSANDSCHAR
例
例5-103 小数点と3桁区切りの表示
次の文では、DECIMALCHARおよびTHOUSANDSCHARの値が表示されます。次の文を発行するとします。
SHOW THOUSANDSCHAR SHOW DECIMALCHAR
THOUSANDSCHARの記号としてカンマが表示され、DECIMALCHARの記号としてピリオドが表示されるとします。この設定でSHOW TOTAL(sales)
文を実行すると、出力は次のようになります。
63,181,743.50
5.102 TMARGIN
TMARGINオプションは、現行のページのヘッダーの上にある、出力ページの上部余白の空白行の数を定義するオプションです。すなわち、上部余白の行は、PAGEPRG(存在する場合)によって定義されるプログラムが実行される前に生成されます。
TMARGINは、PAGINGがYES
に設定されている場合にのみ有効で、REPORTやDESCRIBEなどの文の出力に対してのみ適用されます。TMARGINオプションは通常、レポート・プログラムの初期化セクションで設定されます。
データ型
INTEGER
構文
TMARGIN = n
使用上の注意
ファイルに対するTMARGINの設定
あるファイルに対してTMARGINを設定するには、最初にOUTFILE文で現行の出力ファイルの名前を指定して対象のファイルを現行の出力ファイルにしてから、TMARGINを目的の値に設定します。新しい値は、リセットするまで、またはOUTFILE文を使用して、出力を送信する出力ファイルを別のファイルに変更するまで有効です。出力を別の出力ファイルに送信すると、TMARGINはそのファイルのデフォルト値2を返します。
TMARGINをデフォルトの出力ファイルに対して設定すると、出力をファイルに送信するOUTFILEコマンドが介在しているかどうかにかかわらず、新しい値はリセットするまで有効です。つまり、デフォルトの出力ファイルに対してTMARGINの値が自動的に保存されます。
例
例5-104 レポートの上部余白の設定
この例では、長いレポートを生成する際に空白を省いて、狭い上部余白(1行)を設定します。レポート・プログラムの初期化セクションに次の文を含めます。
TMARGIN = 1
5.103 TRACEFILEUNIT
(読取り専用)TRACEFILEUNITオプションは、Oracleのトレース・ファイルのユニット番号を記録するオプションです。これは、Oracleセッションでのアクティビティに関する情報を収集する書込み可能な出力ファイルです。
構文
TRACEFILEUNIT
使用上の注意
TRACEFILEUNIT値の使用
OUTFILEやDBGOUTFILEのコマンドで、TRACEFILEUNITオプションに格納されたユニット番号を指定して、出力をOracleトレース・ファイルに送信できます。
例
例5-105 DBGOUTFILEによるOracleトレース・ファイルの指定
次のコードでは、DBGOUTFILEコマンドによりTRACEFILEUNITオプションの値を指定します。
DBGOUTFILE TRACEFILEUNIT
5.104 TRIGGERMAXDEPTH
TRIGGERMAXDEPTHオプションは、Oracle OLAPが同時に実行可能な$NATRIGGERプロパティ式の最大数を指定するオプションです。
データ型
INTEGER
構文
TRIGGERMAXDEPTH = n
使用上の注意
$NATRIGGERプロパティについて
TRIGGERMAXDEPTHオプションは、変数の$NATRIGGERプロパティとともに動作します。
再帰的トリガー
RECURSIVEオプションがYESに設定されていないかぎり、$NATRIGGER式の実行中にこの式で実行される計算式、プログラムまたはその他の$NATRIGGER式で、再帰的な$NATRIGGER式の実行はできません。TRIGGERMAXDEPTHオプションは、$NATRIGGER式の再帰の深さを制御し、Oracle OLAPが誤動作する可能性のある無限の再帰や過剰に深い再帰を防止します。
例
例5-106 トリガーの深さの最大値の設定
この例では、トリガーの深さの最大値を設定し、その最大値を超えた後、深さをより大きい値に設定します。通常、TRIGGERMAXDEPTHの値は、この例で使用する2
よりもずっと大きい値です。デフォルト値は50
です。
DEFINE d1 INTEGER DIMENSION MAINTAIN d1 ADD 2 DEFINE v1 DECIMAL <d1> PROPERTY '$NATRIGGER' 'v2 + 1' DEFINE v2 DECIMAL <d1> PROPERTY '$NATRIGGER' 'v3 + 1' DEFINE v3 DECIMAL <d1> PROPERTY '$NATRIGGER' 'v4 + 1' DEFINE v4 DECIMAL <d1> v4(d1 1) = 333.3 RECURSIVE = YES TRIGGERMAXDEPTH = 2 SHOW v1
この文によって生成される出力は、次のとおりです。
ERROR: Depth of NA trigger calls exceeds allowable (maximum depth 2)
次の文を実行すると、トリガーの深さの最大値がより大きい値に設定され、変数の値が表示されます。
TRIGGERMAXDEPTH = 3 SHOW v1
この文によって生成される出力は、次のとおりです。
336.3
5.105 TRIGGERSTOREOK
TRIGGERSTOREOKオプションは、オブジェクト内のNA
値を$NATRIGGERプロパティで指定した値と永続的に置き換えることを指定するために、$STORETRIGGERVALプロパティを使用できるかどうかを制御するオプションです。
注意:
TRIGGERSTOREOKオプションの値は、Oracle OLAPが$NATRIGGER式の実行結果である変数データの処理方法を決定するために使用する複数の要素の1つにすぎません。その他の要素やそれらの相互関係の詳細は、「$NATRIGGERの結果を格納またはキャッシュするかどうかのOracle OLAPによる決定方法」を参照してください。
データ型
BOOLEAN
構文
TRIGGERSTOREOK = {NO|YES}
パラメータ
使用上の注意
$NATRIGGERプロパティとSTORETRIGGERVALプロパティについて
TRIGGERSTOREOKオプションは、変数の$NATRIGGERプロパティおよび$STORETRIGGERVALプロパティとともに動作します。
例
例5-107 NA値の一時的な置換え
この例では、変数のセルに格納されたNA
値を一時的に置き換えます。次の文では、3つの値を持つディメンションを定義し、このディメンションによってディメンション化される変数を定義します。次に、$NATRIGGERプロパティを変数に追加して、値を変数の1つのセルに含め、他のセルを空のままにしてそれらの値をNA
にします。最後に、変数のセルの値をレポートします。
DEFINE d1 INTEGER DIMENSION MAINTAIN d1 ADD 3 DEFINE v1 DECIMAL <d1> PROPERTY '$NATRIGGER' '500.0' v1(d1 1) = 333.3 REPORT v1
この文によって生成される出力は、次のとおりです。
D1 V1 --------- ---------- 1 333.30 2 500.00 3 500.00
この文では、v1
変数から$NATRIGGERプロパティを削除します。
CONSIDER v1 PROPERTY DELETE '$NATRIGGER' REPORT v1
この文によって生成される出力は、次のとおりです。
D1 V1 --------- ---------- 1 333.30 2 NA 3 NA
例5-108 NA値の永続的な置換え
次の文では、$NATRIGGERプロパティを、前の例で定義したv1
変数に追加し、TRIGGERSTOREOKオプションと$STORETRIGGERVALプロパティをYESに設定します。次に、変数のセルの値をレポートします。
CONSIDER v1 PROPERTY '$NATRIGGER' '800.0' TRIGGERSTOREOK = YES PROPERTY 'STORETRIGGERVAL' YES REPORT v1
この文によって生成される出力は、次のとおりです。
D1 V1 -------------- ---------- 1 333.30 2 800.00 3 800.00
次の文では、v1
変数から$NATRIGGERプロパティを削除し、この変数のセルの値をレポートします。
CONSIDER v1 PROPERTY DELETE '$NATRIGGER' REPORT v1
この文によって生成される出力は、次のとおりです。
D1 V1 -------------- ---------- 1 333.30 2 800.00 3 800.00
5.107 USETRIGGERS
USETRIGGERSオプションは、トリガー・プログラムをトリガーとして実行するかどうかを指定するオプションです。
ヒント:
Oracle OLAPは再帰的トリガーをサポートしません。USETRIGGERSオプションをNO
に設定してから、トリガー・プログラム自体をトリガーするトリガー・プログラムの内部で同じDML文を発行してください。たとえば、TRIGGER_DEFINEプログラムを作成したとします。TRIGGER_DEFINEプログラムの内部で、USETRIGGERSオプションをNO
に設定してからDEFINE文を発行する必要があります。
関連項目:
データ型
BOOLEAN
構文
USETRIGGERS = {NO|YES}
例
例5-110 USETRIGGERSのNOへの変更
新しいアナリティック・ワークスペースを作成した直後であるとします。次の文に示すように、USETRIGGERSオプションのデフォルト値はYES
ですが、このオプションはいつでもNO
に設定できます。
SHOW USETRIGGERS yes USETRIGGERS = NO SHOW USETRIGGERS no
5.108 VARCACHE
VARCACHEオプションは、AGGREGATEファンクションまたは$NATRIGGERプロパティ式の実行結果である変数データを、Oracle OLAPがすべて格納またはキャッシュするかどうかを指定するオプションです。
注意:
VARCACHEオプションの値は、AGGREGATEファンクションまたは$NATRIGGERプロパティの実行時に計算された変数データを格納またはキャッシュするかどうかをOracle OLAPが判断するために使用する要素の1つにすぎません。その他の要素やそれらの相互関係の詳細は、「$NATRIGGERの結果を格納またはキャッシュするかどうかのOracle OLAPによる決定方法」および「集計データを格納またはキャッシュするかどうかのOracle OLAPによる決定方法」を参照してください。
構文
VARCACHE = {VARIABLE | SESSION | NONE}
パラメータ
- VARIABLE
-
Oracle OLAPがデータベースの変数にデータを格納することを指定します。このオプションを指定した場合は、アナリティック・ワークスペースを更新してコミットすると、計算結果が変数に永続的に格納されます。
- SESSION
-
Oracle OLAPが計算済のデータをセッション・キャッシュにキャッシュすることを指定します(「Oracle OLAPセッション・キャッシュの概要」を参照)。このオプションを指定すると、計算結果が更新およびコミット中に無視され、セッション後に廃棄されます。
注意:
SESSCACHEが
NO
に設定されている場合、SESSION
を指定してもOracle OLAPはデータをキャッシュしません。この場合、SESSION
の指定は、NONE
の指定と同じことになります。 - NONE
-
AGGREGATEファンクションを使用して即時計算されたデータについては、AGGREGATEファンクションが実行されるたびにOracle OLAPがデータを計算するように指定します。Oracle OLAPは、AGGREGATEファンクションによって計算されたデータを格納またはキャッシュしません。
使用上の注意
すべての変数に影響するVARCACHEオプション
VARCACHEオプションを設定すると、その設定はすべての変数に影響します。変数に$VARCACHE
プロパティを設定しておらず、データを即時計算するためにAGGREGATEファンクションとともに使用するaggmapにCACHE文が存在しない場合、データの格納方法や格納するかどうかを指定するオプションはVARCACHEオプションになります。
5.109 WEEKDAYSNEWYEAR
WEEKDAYSNEWYEARオプションは、WEEK型のディメンションの場合に、新しい年の日数が何日含まれていれば、新しい年の第1週として識別されるかを指定するオプションです。
デフォルトでは、ある特定の年の第1週は、新しい年が1日以上含まれる最初の週になります。たとえば、2000年1月1日は土曜日です。デフォルトを使用すると、この年の最初の週(W1.00
)は、1999年12月26日の日曜日から2000年1月1日の土曜日までの期間になります。
WEEKDAYSNEWYEARを使用すると、特定の年の第1週に必要な日数を指定できます。WEEKDAYSNEWYEARを使用して、ある年の最初の週に含まれる必要がある日数を2日以上と指定すると、1999年12月26日の日曜日から2000年1月1日の土曜日までの週は1999年の最後の週(W53.99
)になり、1月2日から8日までの週が2000年の最初の週(W1.00
)になります。
データ型
INTEGER
構文
WEEKDAYSNEWYEAR = days
例
WEEKDAYSNEWYEARの影響
次の文を実行すると、複数の週と週ごとに関連付けられている最終日のリストが現行の出力ファイルに送られます。
DEFINE week DIMENSION WEEK MAINTAIN week ADD '12 18 99' '1 15 00' weekdaysnewyear = 2 REPORT W 22 CONVERT(week date)
これらの文によって生成される出力は次のとおりです。
WEEK CONVERT(WEEK DATE) -------------- -------------------- W51.99 18DEC99 W52.99 25DEC99 W53.99 01JAN00 W1.00 08JAN00 W2.00 15JAN00
2000年1月1日は土曜日のため、WEEKDAYSNEWYEARを2
に設定すると、1月2日から8日までの週がW1.00
と表示されます。
5.111 YESSPELL
(読取り専用)YESSPELLオプションは、OLAP DML文の出力に存在するTRUE
ブール値に使用されるテキストを保持するオプションです。
YESSPELLオプションの値は、NLS_LANGUAGEオプションで指定した現行の言語で「yes」に対応する語です。たとえば、NLS_LANGUAGEをAmerican
に設定すると、YESSPELLの値はYES
になります。NLS_LANGUAGEをSpanish
に設定すると、YESSPELLの値はSI
になります。
データ型
TEXT
構文
YESSPELL
例
例5-111 YESSPELL値の影響の確認
現行の値がYES
であるBOOLVARという変数があるとします。NLS_LANGUAGEオプションで指定した言語で「yes」に対応する語が「si」の場合、
SHOW boolvar
によって、次の出力が生成されます。
si
5.112 YRABSTART
YRABSTARTオプションは、2桁の略称を使用して読取りや表示が実行される年に関連付けられた特定の100年の期間を指定するオプションです。
データ型
INTEGER
構文
YRABSTART = year
パラメータ
例
例5-112 デフォルト値の使用
次の文を実行すると日付書式が指定され、出力が現行の出力ファイルに送られます。
DATEFORMAT = '<Mtextl> <d>, <yyyy>' SHOW MAKEDATE(96 9 13)
これらの文によって生成される出力は次のとおりです。
September 13, 1996
例5-113 日付に対する100年の期間の設定
次の文を実行すると2000年から2099年までの100年の期間が設定され、出力が現行の出力ファイルに送られます。
YRABSTART = 2000 SHOW MAKEDATE(96 9 13)
これらの文によって生成される出力は次のとおりです。
September 13, 2096
5.113 ZEROROW
ZEROROWオプションは、REPORTおよびROWコマンドによって生成される出力に関して、数値がすべてNAまたはゼロであるか、ゼロと表示されるレポート行を非表示にするオプションです。レポートに0.004
などの小さい値がある場合、表示される小数点以下の桁数は、ZEROROWが該当の数値をゼロとして処理するかどうかに影響します。合計欄のあるレポートを生成する場合は、数値が非表示の場合でも、合計を計算するために実際の数値が使用されます。
データ型
BOOLEAN
構文
ZEROROW = {YES|NO}
パラメータ
使用上の注意
数値以外のデータ
TEXT、ID、BOOLEAN値などの数値以外のデータが数値とともにレポート行に格納されている場合でも、ZEROROWの設定がYESで、すべての数値がゼロまたはNAと表示される場合、このレポート行は非表示になります。
NASPELLおよびZSPELLの影響
NASPELLの値は、ZEROROWによるNA
値の処理方法には影響しません。ZSPELLの値はZEROROWの機能には影響せず、数値としてのゼロ値は、出力での表記にかかわらずゼロとして処理されます。
例
例5-114 データがすべてゼロのレポート行の非表示
売上を予測するために計算結果を格納するworstcase
という変数があり、この変数は、division
、month
およびline
によってディメンション化されているとします。結果のレポートを生成するときに、ステータスにおけるすべての月で最悪の場合の予測値がゼロになる行を非表示にします。次の文に示すとおり、ZEROROWをYESに設定します。
ZEROROW = YES LIMIT line TO 'Revenue' LIMIT month TO 'Nov95' TO 'Feb96' REPORT WIDTH 8 DOWN division ACROSS month: worstcase
この文によって生成されるレポートは次のとおりです。
LINE: REVENUE -----------------WORSTCASE----------------- -------------------MONTH------------------- DIVISION Nov95 Dec95 Jan96 Feb96 -------- ---------- ---------- ---------- ---------- Camping 0.00 0.00 45,500.00 47,400.00 Sporting 0.00 0.00 29,200.00 28,400.00 Clothing 0.00 0.00 15,200.00 14,900.00
このレポートでは、各部門ともいくつかの月に売上予測の数値が存在するため、非表示になっている行はありません。ただし、このレポートを縦方向がmonth
で横方向がdivision
というレイアウトにすると、Nov95
とDec95
の売上予測がないため、これらの月の行は非表示になります。
REPORT DOWN month ACROSS division: worstcase
この文によって生成されるレポートは、次のとおりです。
LINE: REVENUE -----------WORSTCASE------------ ------------DIVISION------------ MONTH Camping Sporting Clothing -------------- ---------- ---------- ---------- Jan96 45,500.00 29,200.00 15,200.00 Feb96 47,400.00 28,400.00 14,900.00
5.114 ZSPELL
ZSPELLオプションは、HEADING、REPORTおよびROWコマンドによって生成された出力で、数値としてのゼロを表示するために使用するデフォルトのテキストを保持するオプションです。
データ型
TEXT
構文
ZSPELL = {'text'|'OFF'}
パラメータ
使用上の注意
ゼロ値の代入
ZSPELLは出力にのみ影響し、ゼロ値の代入方法には影響しません。たとえば、ZSPELLをNONE
に設定した場合でも、次のとおり、ゼロ値を代入します。
var1 = 0
小数点以下の表示
デフォルトのOFFの意味は、DECIMAL属性によって示される小数点以下の桁数を持つ0(ゼロ)としてゼロ値を表示するということです(たとえば、0.00
)。ZSPELLをテキスト文字の0
に設定すると、DECIMALの指定内容にかかわらず、ゼロ値は小数点以下のない0
として表示されます。
ゼロに近い値に対するZSPELLの影響
出力に0.004
などの小さい値がある場合、表示される小数点以下の桁数は、ZSPELLが数値をゼロとして処理するかどうかに影響します。例5-116を参照してください。
例
例5-115 ゼロ値のNONE表示
この例では、DECIMALの変数testvar
のゼロ値がレポート出力でNONEと表示されるように、ZSPELLの値を変更します。ZSPELLをデフォルト値のOFF
に設定して、Oracle OLAP文
testvar = 0.00 ROW testvar
によって、次の出力が生成されます。
0.00
これに対し、次のOLAP DML文
ZSPELL = 'NONE' ROW testvar
によって、次の出力が生成されます。
NONE
例5-116 非常に小さい数の表示
この例は、出力における小数点以下の桁数の表示方法が、ZSPELLが非常に小さい数をゼロとして処理するかどうかに影響することを示します。ZSPELLをデフォルト値のOFF
に設定した場合、次のOLAP DML文
ZSPELL = 'OFF' testvar = 0.004 ROW DECIMAL 3 testvar
によって、次の出力が生成されます。
0.004
次の文では、ZSPELLをNONE
に設定し、出力の小数点以下を2桁に指定します。
ZSPELL = 'NONE' ROW DECIMAL 2 testvar
これらの文によって生成される出力は次のとおりです。
NONE
ZSPELLをNONE
に設定したままの状態で、次の文を発行すると、出力の小数点以下が3桁に指定されます。
ROW DECIMAL 3 testvar
この文によって生成される出力は、次のとおりです。
0.004