プライマリ・コンテンツに移動
Oracle® OLAP DML Reference
12c Release 1 (12.1)
B71310-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 OLAP DMLファンクション: LからZ

この章では、OLAP DMLファンクションのリファレンス項目の続きをアルファベット順に説明します。文字LからZで始まる各OLAP DMLファンクションにつき1つの項目があり、LAGから説明します。

OLAP DMLファンクションのアルファベット順リスト、カテゴリ別リスト、およびここで紹介する以外のOLAP DMLファンクションのリファレンス項目については、第7章「OLAP DMLファンクション: AからK」を参照してください。

その他のOLAP DMLリファレンス項目については、第4章「OLAP DMLプロパティ」第5章「OLAP DMLオプション」第9章「OLAP DMLコマンド: AからG」および第10章「OLAP DMLコマンド: HからZ」を参照してください。


ヒント:

OLAP DML文の多くはコーディングの際、文の名前の頭文字および2つの子音字を並べた3文字に省略して表すことができます。

LAG

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

戻り値

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

構文

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

パラメータ

variable

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

n

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

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


注意:

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

dimension

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

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

STATUS

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

NOSTATUS

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

limit-clause

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

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

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

使用上の注意

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

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

例8-1 LAGの使用方法

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

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

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

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

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

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

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

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

LAGABSPCT

LAGABSPCTファンクションは、ディメンションの現行値より前の指定されたオフセットの位置にあるディメンション化された変数または式の値と、ディメンション化された変数または式の現行値との差の割合を返します。

結果の計算の際に常に前の期間の値の符合を使用するLAGPCTファンクションと異なり、LAGABSPCTは前の期間の値の絶対値を使用するので、差の割合の方向がわかります。

戻り値

差の割合に対応するDECIMAL値、または時間ディメンションの最初の期間より前に相対位置変更しようとした場合はNA

構文

LAGABSPCT(variablendimension, [STATUS|NOSTATUS|limit-clause] )

パラメータ

time-series

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

n

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

通常、nは、現行期間より前の期間(ディメンション値)の数を示す正のINTEGERです。nに負数の値を指定した場合、現行期間より後の期間の数を示します。この場合、LAGABSPCTは時系列の現行値をそれ以降の値と比較します。

dimension

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

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

STATUS

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

NOSTATUS

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

limit-clause

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

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

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

使用上の注意

LAGABSPCTで使用される計算式

結果を取得するために、LAGABSPCTは次の計算式を使用します。

(currentvalue - previousvalue) / ABS(previousvalue)


LAGABSPCTで使用される時系列の前の値がゼロの場合

LAGABSPCTによって使用される時系列の前の値がゼロである場合、LAGABSPCTが返す結果はDIVIDEBYZEROオプションによって決定されます。DIVIDEBYZEROの設定がNOであるときは、エラーが発生します。DIVIDEBYZEROの設定がYESであるときは、LAGABSPCTはNAを返します。

例8-2 LAGDIFとLAGABSPCTの使用方法

timeという名前の階層ディメンションおよびdistrictproductsという名前のディメンションによってディメンション化されるsalesという名前の変数があるとします。さらに、timeディメンションのレベルの名前(MonthおよびYear)を含むtimelevelsという名前のディメンション、およびtimeによってディメンション化されてtimelevelsの値を持つtimelevelrelという名前のリレーションがあります(つまり、timelevelrelの関連ディメンションはtimelevelsです)。

2000年1月と前年1月のダラスにおけるラケットの売上を比較するとします。LAGファンクションを使用して、前年の売上を表示します。LAGABSPCTファンクションを使用して、2つの月の差の割合を計算して変化の方向を示します。たとえば、売上が増加した場合、LAGABSPCTが返す差の割合は正の値です。売上が減少した場合、LAGABSPCTが返す差の割合は負の値です。

また、LAGPCTファンクションを使用すると、2つの年の差の割合を計算できます。LAGABSPCTによって返される値を100倍すると、パーセント・ポイントとして表示されます。

次の文

ALLSTAT
LIMIT product TO 'Racquets'
LIMIT district TO 'Dallas'
LIMIT time TO 'Jan2000'
REPORT DOWN time sales -
HEADING 'Last Jan' LAG(sales, 12, time, time LEVELREL timelevelrel)-
HEADING 'Lagdif' LAGDIF(sales, 12, time, time LEVELREL timelevelrel)-
HEADING 'Lagabspct' rset '%' d 0 LAGABSPCT(sales, 12, time, -
                    time LEVELREL timelevelrel) * 100

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

DISTRICT: Dallas
               ------------------PRODUCT------------------
               -----------------Racquets------------------
TIME           SALES      Last Jan   Lagdif     Lagabspct
-------------- ---------- ---------- ---------- ----------
Jan2000        125,879.86 118,686.75 7,193.11   6% 

LAGDIF

LAGDIFファンクションは、ディメンションの現行値より前の指定されたオフセットの位置にあるディメンション化された変数または式の値と、ディメンション化された変数または式の現行値との差を返します。

戻り値

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

構文

LAGDIF(variablendimension, [STATUS|NOSTATUS|limit-clause] )

パラメータ

variable

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

n

前に相対位置変更するオフセット(つまり、ディメンション値の数)。LAGDIFはこの値を使用して、変数の値を取得するためにLAGDIFがディメンションを戻るべき値の数を決定します。通常、nは、現行期間より前の期間(ディメンション値)の数を示す正のINTEGERです。nに負数の値を指定した場合、現行期間より後の期間の数を示します。この場合、LAGDIFは時系列の現行値をそれ以降の値と比較します。

dimension

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

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

STATUS

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

NOSTATUS

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

limit-clause

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

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

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

LAGDIFの使用例は、例8-2「LAGDIFとLAGABSPCTの使用方法」を参照してください。

LAGPCT

LAGPCTファンクションは、ディメンションの現行値より前の指定されたオフセットの位置にあるディメンション化された変数または式の値と、ディメンション化された変数または式の現行値との差の割合を返します。

戻り値

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

構文

LAGPCT(variablen, [dimension], [STATUS|NOSTATUS|limit-clause] )

パラメータ

variable

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

n

前に相対位置変更するオフセット(つまり、ディメンション値の数)。LAGPCTはこの値を使用して、変数の値を取得するためにLAGPCTがディメンションを戻るべき値の数を決定します。通常、nは、現行期間より前の期間(ディメンション値)の数を示す正のINTEGERです。nに負数の値を指定した場合、現行期間より後の期間の数を示します。この場合、LAGPCTは時系列の現行値をそれ以降の値と比較します。

dimension

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

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

STATUS

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

NOSTATUS

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

limit-clause

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

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

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

使用上の注意

LAGPCTで使用される計算式

結果を取得するために、LAGPCTは次の計算式を使用します。

(currentvalue - previousvalue) / previousvalue

LAGPCTで使用される時系列の前の値がゼロの場合

LAGPCTによって使用される時系列の以前の値がゼロである場合、LAGPCTが返す結果はDIVIDEBYZEROオプションによって決定されます。DIVIDEBYZEROの設定がNOであるときは、エラーが発生します。DIVIDEBYZEROの設定がYESであるときは、LAGPCTはNAを返します。

例8-3 LAGPCTの使用方法

timeという名前の階層ディメンションおよびdistrictproductsという名前のディメンションによってディメンション化されるsalesという名前の変数があるとします。さらに、timeディメンションのレベルの名前(MonthおよびYear)を含むtimelevelsという名前のディメンション、およびtimeによってディメンション化されてtimelevelsの値を持つtimelevelrelという名前のリレーションがあります(つまり、timelevelrelの関連ディメンションはtimelevelsです)。

LAGファンクションで1999年の値を表示して、ダラスにおける2000年と1999年のラケットの売上を比較できます。LAGPCTファンクションを使用して、2つの年の差の割合を計算します。LAGPCTによって返される値を100倍してパーセント記号を付け、パーセント・ポイントとして差を表示します。

ALLSTAT
LIMIT product TO 'Racquets'
LIMIT district TO 'Dallas'
LIMIT TIME TO '2000'
REPORT DOWN time sales HEADING 'Last Year' -
LAG(sales, 1, time, time LEVELREL timelevelrel)-
HEADING 'LAGPCT (Decimal Format)' -
LAGPCT(sales, 1, time LEVELREL timelevelrel) -
HEADING 'LAGPCT (Percent Format)' rset '%' -
LAGPCT(sales, 1, time LEVELREL timelevelrel) * 100

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

DISTRICT: Dallas
               ------------------PRODUCT------------------
               -----------------racquets------------------
                                     LAGPCT     LAGPCT
                                     (Decimal   (Percent
TIME           SALES      Last Year  Format)    Format)
-------------- ---------- ---------- ---------- ----------
2000           93,000,003 89,000,891 0.04       4.49%

LARGEST

LARGESTファンクションは、式の最大値を返します。このファンクションを使用して、数値または日付値を比較できます。

戻り値

式のデータ型。INTEGER、LONGINT、DECIMALまたはDATEになります。

構文

LARGEST(expression [CACHE] [dimension...])

パラメータ

expression

最大値が返される式。

CACHE

内部動作が若干変更されます。このキーワードは、元のパフォーマンスが非常に遅い場合にのみ指定してください。

dimension

結果のディメンションの名前。または、expressionの1つのディメンションと結果のディメンションとする別のディメンションとの間のリレーションの名前。

デフォルトでは、LARGESTは単一の値を返します。結果に対し1つ以上のディメンションを指定すると、LARGESTは、指定されたディメンションに対して値をテストし、値の配列を返します。各ディメンションは、expressionのディメンションであるか、そのディメンションの1つと関連している必要があります。


ヒント:

指定したディメンションがexpressionの実際のディメンションではなくexpressionのディメンションに関連付けられたディメンションであり、かつ2つのディメンション間のリレーションが2つ以上ある場合は、ディメンション間のデフォルトのリレーションを使用して計算が行われます。(デフォルトのリレーションの詳細は、RELATIONコマンドを参照してください。)Oracle OLAPでこのデフォルトのリレーションを使用しない場合は、リレーションの名前を指定して、関連付けられたディメンションを指定します。

使用上の注意

NA値とLARGEST

LARGESTは、他の集計ファンクションと同様に、NASKIPオプションの影響を受けます。NASKIPの設定がYESの場合(デフォルト)、LARGESTはNA値を無視し、最大値または非NA値を返します。NASKIPの設定がNOの場合、式のいずれかの値がNAであるときにLARGESTはNAを返します。式のすべての値がNAの場合は、NASKIPの設定にかかわらず、LARGESTはNAを返します。

DWMQYディメンションによってディメンション化された式を使用するLARGESTの使用

expressionがDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションによってディメンション化されている場合、それ以外のDAY、WEEK、MONTH、QUARTERまたはYEARディメンションを関連dimensionとして指定できます。Oracle OLAPでは、ディメンション間の暗黙的なリレーションを使用します。1つのDAY、WEEK、MONTH、QUARTERまたはYEARディメンションと別のディメンションとのマッピング(たとえば週から月)を制御するには、2つのディメンション間に明示的リレーションを定義し、そのリレーションの名前をLARGESTファンクションのdimension引数として指定します。

関連ディメンションの各期間に対して、Oracle OLAPはターゲット期間で終わるすべてのソース期間で最大のデータ値を検索します。この方法は、どのディメンションに上位の集計期間があるかに関係なく使用されます。

例8-4 最大月間売上の検索

この例では、LARGESTファンクションを使用して、1996年前半の各地区におけるスポーツウェアの最大月間売上を検索します。地区ごとの最大売上高を表示するために、結果のディメンションとしてdistrictを指定します。

LIMIT product TO 'Sportswear'
LIMIT month TO 'Jan96' TO 'Jun96'
REPORT HEADING 'Largest Sales' LARGEST(sales district)

この文によって生成される出力は、次のとおりです。

                Largest
DISTRICT         Sales
-------------- ----------
Boston          79,630.20
Atlanta        177,967.49
Chicago        112,792.78
Dallas         175,716.31
Denver          97,236.88
Seattle         60,322.88

LAST_DAY

LAST_DAYファンクションは、特定の日付が該当する月の最終日を返します。

戻り値

DATETIME

構文

LAST_DAY(datetime-expression)

パラメータ

datetime-expression

データ型がDATETIMEの式。

例8-5 月の残り日数の計算

次の文は、今日の日付とその月の最終日から残り日数を計算します。

SHOW JOINCHARS('Days left: ' LAST_DAY(SYSDATE) - SYSDATE)

今日の日付が2000年9月8日だとすると、この文によって返される結果は次のとおりです。

Days left: 22

LEAD

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

戻り値

variable引数のデータ型、または時間ディメンションに定義されている最後の期間を超えて値を取得しようとした場合はNA

構文

LEAD(variablen, [time-dimension], [[STATUS|NOSTATUS|limit-clause] )

パラメータ

variable

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

n

後ろに相対位置変更するオフセット(つまり、ディメンション値の数)。LEADはこの値を使用して、変数の値を取得するためにLEADがディメンションで進むべき値の数を決定します。異なるディメンション・ステータスを指定するためにSTATUSキーワードまたはlimit-clause引数を使用していないかぎり、LEADはこの値をカウントするためにデフォルト・ステータスを使用します。

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


注意:

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

dimension

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

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

STATUS

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

NOSTATUS

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

limit-clause

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

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

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

例8-6 LEADの使用方法

TEXT型の3つのディメンション(productdistrictおよびtime)によってディメンション化されるsales変数があるとします。timeディメンションは次の値を持つ階層ディメンションです。

1999
2000
Jan1999
Feb1999
...
Dec1999
Jan2000
Feb2000
...
Dec2000

さらに、timeディメンションのレベルの名前(MonthおよびYear)を含むtimelevelsという名前のディメンション、およびtimeによってディメンション化されてtimelevelsの値を持つtimelevelrelという名前のリレーションがあります(つまり、timelevelrelの関連ディメンションはtimelevelsです)。timelevelrelのレポートによって、次の関係が示されます。

TIME           TIMELEVELREL
-------------- ------------
1999           Year
2000           Year
Jan1999        Month
Feb1999        Month
...            ...
Dec1999        Month
Jan2000        Month
Feb2000        Month
...            ...
Dec2000        Month

1999年の最初の2か月間のダラスにおけるラケットの売上を、2000年の対応する月と比較するとします。LEADファンクションを使用して、2000年の値を1999年の値とともに同じレポートに生成します。次の文

LIMIT product TO 'Racquets'
LIMIT district TO 'Dallas'
LIMIT time TO 'JAN1999' 'FEB1999'
REPORT DOWN time sales HEADING 'Following Year' LEAD(sales, 12, time, time LEVELREL timelevelrel)

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

DISTRICT: DALLAS
               -------PRODUCT-------
               ------RACQUETS-------
TIME           SALES      Following Year
-------------- ---------- ---------------------
Jan2000        118,686.75 125,879.86
Feb2000        142,305.99 150,833.64

LEAST

LEASTファンクションは、式のリストで最小の式を返します。最初の式より後の式はすべて、比較の前に最初の式のデータ型に暗黙的に変換されます。

式のリストで最大の式を検索するには、GREATESTを使用します。

戻り値

最初の式のデータ型

構文

LEAST (expr [, expr]...)

パラメータ

expr

式。

例8-7 アルファベット順で最初であるテキスト式の検索

次の文では、アルファベット順で最初である文字列が返されます。

SHOW LEAST('Harry','Harriot','Harold')
Harold 

例8-8 最小の数式の検索

次の文は、最小の数値を選択します。

SHOW LEAST (5, 3, 18)
3

LENGTHファンクション

LENGTHファンクション群は、後続の空白を含めたテキスト式の長さを返します。lengthは、入力キャラクタ・セットによって定義されたキャラクタを使用して長さを計算します。LENGTHBは、文字のかわりにバイトを使用します。LENGTHCは、完全なUnicodeキャラクタを使用します。

戻り値

NUMBER、または式が空の文字列かNAである場合はNA。

構文

{ LENGTH | LENGTHB | LENGTHC}(char)

パラメータ

char

テキスト式。

LIMITファンクション

LIMITファンクションは、指定したLIMITコマンドまたは指定したディメンション・ステータス・スタックの結果として得られたディメンションまたはディメンション・サロゲート値を返すファンクションです。ディメンションとその任意のディメンション・サロゲートは、同じステータスを共有します。LIMITファンクションによって、ディメンションまたは値セットのステータスが変更されることはありません。


関連項目:

LIMITコマンド

戻り値

戻り値は、ファンクションの使用方法とINTEGERキーワードの指定の有無によって異なります。

  • 値セットを必要とするOLAP DML文(ユーザー定義コマンドまたはユーザー定義ファンクションを含む)の引数としてLIMITファンクションを使用すると、値セットが返されます。

  • 空の値セットの場合、LIMITファンクションはその値セットとしてNULLステータスを返します。

  • それ以外の場合、LIMITファンクションにINTEGERキーワードが指定されているかどうかによって、TEXT値またはINTEGER値が返されます。TEXT値が空のステータスの場合、NAを返します。

構文

LIMITファンクションの構文は、ディメンションまたはディメンション・サロゲートの値を、指定したLIMITコマンドから取得するか、あるいは指定したディメンション・ステータス・スタックから取得するかによって異なります。

LIMITコマンドから値を取得する場合の構文

LIMIT([INTEGER] {dimension | valueset | LIMIT_function} [concat-component] limit-type -

     [limit-clause] [IFNONE label])

ディメンション・ステータス・スタックから値を取得する場合の構文

LIMIT([INTEGER] dimension  STATDEPTH stack-position] [IFNONE label])

パラメータ

dimension

この引数の詳細は、LIMITコマンドを参照してください。

valueset

この引数の詳細は、LIMITコマンドを参照してください。

LIMIT_function

別のLIMITファンクション。


注意:

このようにLIMITファンクションの中にLIMITファンクションを入れてネストする場合、最も内側にあるLIMITファンクションの最初の引数はディメンションまたは値セットである必要があります。「LIMITファンクションのネスト」も参照してください。

concat-component

この引数の詳細は、LIMITコマンドを参照してください。

limit-type

この引数の詳細は、LIMITコマンドを参照してください。

limit-clause

制限に使用する値を指定します。制限句には、いくつかの種類があり、たとえば、値(または値セット)を使用した制限の指定に使用できる制限句や、関連ディメンションを使用した制限の指定に使用できる制限句です。これらの制限句にはそれぞれ複雑な構文があります。構文が複雑なため、各種の制限句の構文を次の各項で個別に紹介します。

LIMITコマンド(値を使用)
LIMITコマンド(LEVELRELを使用)
LIMITコマンド(関連ディメンションを使用)
LIMIT(親リレーションを使用)
LIMITコマンド(NOCONVERTを使用)
LIMITコマンド(POSLISTを使用)

これらの各LIMITコマンドの構文で、limit-type引数の後に続く構文の一部がlimit-clauseです。

INTEGER

INTEGERキーワードを使用すると、デフォルトのディメンション・ステータス内の値は、名前ではなく位置番号で返されます。値セットでINTEGERを使用すると、デフォルトのディメンション・ステータス内の値は、値セットではなく位置番号で返されます。

STATDEPTH

指定したディメンションのステータス・リスト・スタックのステータス・リスト値を取得するように指定します。

stack-position

値の取得元のステータス・リスト・スタックの位置を指定するINTEGER値。値を指定する際の注意点は次のとおりです。

  • 0から1-STATDEPTH(dimension)の値を指定すると、上(現行ステータス)から下(最も古いステータス)にスタック値が取得されます。

  • 1からSTATDEPTH(dimension)の値を指定すると、スタックの下(最も古いステータス)からスタックの上(現行ステータス)にスタック値が取得されます。

ステータス・リスト・スタックの詳細は、STATDEPTHファンクションを参照してください。

使用上の注意

LIMITファンクションのネスト

次の構文を使用してLIMITファンクションをネストすると、同じディメンションに対する複数のLIMITコマンドの結果が返されます。

LIMIT (LIMIT (LIMIT (lim-exp1lim-exp2lim-exp3)

このネストされた構造を使用して、一連のLIMITコマンドのステータスが確認できます。たとえば、次にいくつかのLIMITコマンドを示します。

LIMIT product TO division 'Camping'
LIMIT product KEEP -
   EVERY(sales GT 50000, product)
LIMIT product KEEP FIRST 1

先行するLIMITコマンドのステータスを表示するには、次の文を実行します。

REPORT LIMIT(LIMIT(LIMIT(product TO -
   division 'Camping') KEEP EVERY -
   (sales GT 50000, product))KEEP FIRST 1)

連結ディメンションのコンポーネントを使用した制限

次の文によって、連結ディメンションを、そのコンポーネントのディメンションに対する現行のステータスの1つに制限できます。

LIMIT(reg.dist.ccdim TO district)

また、次の文によって、連結ディメンションを、そのコンポーネントのディメンションの一連の値に制限できます。

LIMIT(reg.dist.ccdim TO district 'Boston' 'Chicago' 'Seattle')

多次元の結果

LIMITファンクションで多次元の式を評価すると、多次元の結果が返されます。次の例では、sales変数にproductdistrictおよびmonthという3つのディメンションがあります。

LIMIT product TO ALL
LIMIT district TO 'Boston'
LIMIT month TO 'Jan95' 'Feb95' 'Mar95'

REPORT sales文によって生成される出力は、次のとおりです。

DISTRICT: BOSTON
          -------------SALES--------------
          -------------MONTH--------------
PRODUCT     Jan95      Feb95      Mar95
--------- ---------- ---------- ----------
Tents      32,153.52  32,536.30  43,062.75
Canoes     66,013.92  76,083.84  91,748.16
Racquets   52,420.86  56,837.88  58,838.04
Sportswear 53,194.70  58,913.40  62,797.80
Footwear   91,406.82  86,827.32 100,199.46

生成したレポートに示されているステータスで、売上が$90,000を超えている製品のリストを取得するとします。LIMITファンクションを使用して製品売上額を月と地区の各組合せで評価し、ステータスにある月と地区でディメンション化したリストを作成します。

REPORT limit (product TO sales GT 90000)文によって生成される出力は、次のとおりです。

          ---LIMIT (PRODUCT TO SALES GT---
          -------------90000)-------------
          -------------MONTH--------------
DISTRICT    Jan95      Feb95      Mar95
--------- ---------- ---------- ----------
Boston    Footwear   NA         Canoes
                                Footwear

例8-9 多次元の結果を返す場合

この例では、BostonおよびAtlantaにおいて、1995年の最初の2か月間に売上が$50,000を超えた製品のレポートを出力します。LIMITファンクションの結果は、多次元の結果になります。

次の文

LIMIT month TO 'Jan95' 'Feb95'
LIMIT district TO 'Boston' 'Atlanta'
LIMIT product TO ALL
REPORT LIMIT (product TO sales GT 50000)

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

               --LIMIT (PRODUCT TO--
               ---SALES GT 50000)---
               --------MONTH--------
DISTRICT         JAn95      Feb95
-------------- ---------- ----------
Boston         Canoes     Canoes
               Racquets   Racquets
               Sportswear Sportswear
               Footwear   Footwear
Atlanta        Racquets   Canoes
               Sportswear Racquets
               Footwear   Sportswear
                          Footwear

例8-10 LIMITファンクションを使用するLIMITコマンド

次の例は、LIMITファンクションをLIMITコマンドの引数として使用する例です。LIMITファンクションの結果は値セットに変換されます。

ALLSTAT
LIMIT month TO LIMIT (LIMIT (month TO LAST 10) KEEP FIRST 3)

LIMIT文を実行した後、STATUS month文によって生成される出力は、次のとおりです。

The current status of MONTH is:
MAR97 TO MAY97 

LIMITMAPINFO

LIMITMAPINFOファンクションは、指定した制限マップでデータをリレーショナル表の指定列にマップする際に使用されるアナリティック・ワークスペース式を返すファンクションです。

戻り値

TEXT式

構文

LIMITMAPINFO ([aw], limit-map, column-name)

パラメータ

aw

アナリティック・ワークスペース・オブジェクトを含むアナリティック・ワークスペースの名前。

limit-map

テキスト式としての制限マップ。

column-name

limit-mapで指定されるリレーショナル表の列の名前。

例8-11 ディメンションの名前の取得

mylimitmapという名前のテキスト変数を含むmyawという名前のアナリティック・ワークスペースがあるとします。mylimitmapテキスト変数は、アナリティック・ワークスペース・データの一部をet_productという列でリレーショナル表にマップする制限マップです。

MEASURE sales FROM aw_f.sales
DIMENSION et_chan FROM aw_channel WITH
HIERARCHY aw_channel.parent
GID gid_chan FROM aw_channel.gid
DIMENSION et_prod FROM aw_product WITH
HIERARCHY aw_product.parent
GID gid_prod FROM aw_prod.gid
DIMENSION et_geog FROM aw_geography WITH
HIERARCHY aw_geography.parent
GID gid_geog FROM aw_geog.gid
DIMENSION et_time FROM aw_time WITH
HIERARCHY time.parent
GID gid_time FROM aw_time.gid

et_prod列のデータの抽出元となるアナリティック・ワークスペース・オブジェクトの名前を取得するには、次のOLAP DML文を発行します。

show LIMITMAPINFO ('myaw', mylimitmap, 'et_prod')  

et_prod列はaw_productディメンションにマップされているため、次の値が表示されます。

aw_product  

LNNVL

LNNVLファンクションは、条件のオペランドの片方または両方がNULLの可能性がある場合に、条件を簡単に評価する方法を提供します。LNNVLは、スカラー式を指定できる場所であればどこでも指定でき、有効ではないが発生する可能性があるNULLを評価するためにIS [NOT] NULLANDまたはOR条件が必要であるようなコンテキストでも指定できます。

戻り値

条件が偽または不明である場合はTRUE、条件が真である場合はFALSE

構文

LNNVL(condition)

パラメータ

condition

スカラー値で構成された式。AND、ORまたはBETWEENを含む式は指定できません。

例8-12 LNNVLを使用した式の評価

SHOW LNNVL('apples' EQ 'oranges')
yes

SHOW LNNVL(7 LT 11)
no

SHOW LNNVL('vegetables' EQ NA)
yes

LOCALTIMESTAMP

LOCALTIMESTAMPファンクションは、セッションのタイムゾーンでの現在の日時をTIMESTAMPデータ型の値として返します。

セッションのタイムゾーンにおける現在の日時をTIMESTAMP_TZ値として取得する場合は、CURRENT_TIMESTAMPファンクションを使用してください。

戻り値

TIMESTAMP

構文

LOCALTIMESTAMP [ (timestamp-precision) ]

ARGUMENTS

timestamp-precision

返される時間値の秒の小数精度を指定します。

例8-13 ローカルのタイムスタンプの取得

SHOW LOCALTIMESTAMP
13-FEB-07 12.11.33.454834 PM

LOGファンクション

LOGファンクションは、式の対数を計算するファンクションです。


注意:

LOGファンクションを、ログ・ファイルを作成する同名の機能と混同しないでください。

戻り値

DECIMAL

構文

LOG([base,] expression)

パラメータ

base

対数の計算に使用する底。値を指定しない場合、このファンクションは底にeを使用して式の自然対数を計算しますが、ここで、e2.718281828459に相当します。

expression

ゼロより大きな数式。値がゼロ以下の場合、LOGはNA値を返します。

例8-14 自然対数の計算

この例では、LOGファンクションを使用して、式4,000 + 6,000の自然対数を計算します。次の文

DECIMALS = 5
SHOW LOG(4000 + 6000)

によって、次の結果が生成されます。

9.21034

LOG10

LOG10ファンクションは、式の10を底とする対数を計算するファンクションです。

戻り値

DECIMAL

構文

LOG10(expression)

パラメータ

expression

expressionには、ゼロより大きい値を指定する必要があります。値が0(ゼロ)以下の場合、LOG10はNA値を返します。

例8-15 10を底とする対数の計算

この例では、LOG10ファンクションを使用して、1,000の10を底とする対数を計算します。次の文

SHOW LOG10(1000)

によって、次の結果が生成されます。

3.00

LOWCASE

LOWCASEファンクションは、テキスト式内のすべてのアルファベット文字を小文字に変換するファンクションです。

戻り値

TEXTまたはNTEXT

式がTEXTの場合、戻り値はTEXTになります。式がNTEXTの場合、戻り値はNTEXTになります。

構文

LOWCASE(text-expression)

パラメータ

text-expression

変換の対象となる文字が存在するテキスト式。

例8-16 式の一部を小文字に変換する方法

メーリング・リストに追加する新しいデータをいくつか入手したとします。既存のメーリング・リストでは、受信者の名前は先頭文字のみが大文字です。一方、新しいデータは、名前全体が大文字になっています。この場合、次のような文でLOWCASEを使用して、新しいデータを現行のデータに対応したデータにします。

lastname = JOINCHARS(EXTCHARS(lastname, 1, 1), -
           LOWCASE(EXTCHARS(lastname, 2, NUMCHARS(lastname)))) 

LOWER

LOWERファンクションは、テキスト式内のすべてのアルファベット文字を小文字に変換するファンクションです。

戻り値

text-expressionのデータ型。


関連項目:

『Oracle Database SQL言語リファレンス』のLOWERファンクションに関する項

構文

LOWER(text-expression)

パラメータ

text-expression

変換の対象となる文字が存在するテキスト式。

LPAD

LPADファンクションは、式を返す際、指定した長さになるように指定した文字を左側に埋め込むファンクションです。また、文字が埋め込まれる式がすでに指定した長さよりも長い場合は、指定した長さまでの部分を返します。

テキスト式の右側に文字を埋め込むには、RPADを使用します。

戻り値

文字を埋め込む式(text-exp)のデータ型に応じてTEXTまたはNTEXT

構文

LPAD (text-exp , length [, pad-exp])

パラメータ

text-exp

埋め込むテキスト式。

length

画面に表示される戻り値の全長。ほとんどのキャラクタ・セットでは、戻り値の文字数です。ただし、一部のマルチバイト・キャラクタ・セットでは、文字列の表示長はその文字列の文字数と異なることがあります。

text-expの長さよりも短い値をlengthに指定すると、指定した長さの部分のみが返されます。

pad-exp

埋込み文字を指定するテキスト式。pad-expのデフォルト値は単一の空白です。

例8-17 文字列の左側への埋込み

次の例では、文字「*」と「.」を文字列の左に埋め込みます。

SHOW LPAD('Page 1',15,'*.') 
*.*.*.*.*Page 1

LTRIM

LTRIMファンクションは、テキスト式の左側から、別のテキスト式で示す文字をすべて削除するファンクションです。このファンクションは、基準のテキスト式を最初の文字からスキャンし、トリム式にあるすべての文字をトリム式にない文字が見つかるまで削除し、その結果を返します。

後続の文字には、RTRIMを使用します。先行および後続の両方の文字をトリミングするには、TRIMを使用します。

戻り値

最初の引数のデータ型に応じてTEXTまたはNTEXT

構文

LTRIM (text-exp [, trim-exp])

パラメータ

text-exp

文字をトリミングするテキスト式。

trim-exp

削除する文字を示すテキスト式。trim-expのデフォルト値は単一の空白です。

例8-18 左側にある文字のトリミング

次の例は、文字列から左側にあるすべてのxおよびyをトリミングします。

SHOW LTRIM('xyxxxyLast Word','xy') 
Last Word

MAKEDATE

MAKEDATEファンクションは、年、月および日の指定したINTEGER値に対応するDATE値を返すファンクションです。

戻り値

DATEまたはテキスト

構文

MAKEDATE(year month day)

パラメータ

year

テスト日付の年を表すINTEGER式。どの年についても、1000から9999までの4桁数字で指定できます。1950年から2049年までの範囲(デフォルト)またはそれ以外の範囲(YRABSTARTオプションで指定した範囲)の年については、年の下2桁を表す2桁の数字でも指定できます(たとえば、1996年は96など)。

month

通常は1から12までの範囲の任意のINTEGER式。1より小さいINTEGERまたは12より大きいINTEGERを指定すると、MAKEDATEでは、yearINTEGER式に指定されている年を基準に1年前または1年後の日付を返します。

たとえば、MAKEDATEの引数が(97 14 21)の場合、1997年の14か月目は実際には1998年の2月なので、日付February 21, 1998が返されます。

day

1から31までの範囲のINTEGER式。

使用上の注意

MAKEDATEから返される結果の書式

MAKEDATEから返された結果を表示する場合、日付はDATEFORMATオプションの日付テンプレートに基づいて書式化されます。曜日や月の名前を日付テンプレートで使用している場合は、DAYNAMESオプションで指定した曜日の名前や、MONTHNAMESオプションで指定した月の名前が使用されます。MAKEDATEから返される結果は、DATE値を指定する場所であればどこででも使用できます。

無効な日付

MAKEDATEに対する引数が、1000年1月1日から9999年12月31日までの範囲の有効な日付を表すものではない場合、NA値が返されます。

例8-19 整数から日付への変換

次の文では、日付書式を指定し、出力を現行の出力ファイルに送信します。

DATEFORMAT = '<mtextl> <d>, <yyyy>'
SHOW MAKEDATE(97 11 14)

これらの文によって生成される出力は次のとおりです。

November 14, 1997

例8-20 YYOR、MMOFおよびDDOFファンクションを使用した日付の計算

次の文では、今日の日付から1年後の日付を計算し、出力を現行の出力ファイルに送信します。TODAYファンクションは、今日の日付を返します。INTEGERファンクションYYOF、MMOFおよびDDOFは、今日の日付に相当する年、月、日のINTEGER値を返します。

SHOW MAKEDATE(YYOF(TODAY) + 1 MMOF(TODAY) DDOF(TODAY))

今日の日付が1995年1月15日だとすると、この文によって生成される出力は次のとおりです。

January 15, 1996

MAX

MAXファンクションは、2つの式を比較して大きいほうの値を計算するファンクションです。

戻り値

DECIMAL。MAXの結果は、2つの式のディメンションの結合によってディメンション化されます。

構文

MAX(expression1expression2)

パラメータ

expression1

比較する一方の式。

expression2

比較するもう一方の式。

例8-21 実績額と予算額のどちらが大きいかを比較する計算

1996年の最初の6か月それぞれについて、Sporting部門の売上原価(Cogs)明細項目でactual値とbudget値のどちらが大きいかを確認するとします。

LIMIT line TO 'Cogs'
LIMIT division TO 'Sporting'
LIMIT month TO 'Jan96' TO 'Jun96'
REPORT DOWN month actual budget MAX(actual budget)

この文によって生成される出力は、次のとおりです。

DIVISION: SPORTING
               --------------LINE--------------
               --------------COGS--------------
                                        MAX    
                                      (ACTUAL  
MONTH            ACTUAL     BUDGET    BUDGET)  
-------------- ---------- ---------- ----------
Jan96          287,557.87 279,773.01 287,557.87
Feb96          315,298.82 323,981.56 323,981.56
Mar96          326,184.87 302,177.88 326,184.87
Apr96          394,544.27 386,100.82 394,544.27
May96          449,862.25 433,997.89 449,862.25
Jun96          457,347.55 448,042.45 457,347.55

MAXBYTES

MAXBYTESファンクションは、複数行のテキスト式の最も長い行のバイト数をカウントするファンクションです。MAXBYTESによって返される結果のディメンションは、指定した式のディメンションと同じです。

戻り値

INTEGER

構文

MAXBYTES(text-expression)

パラメータ

text-expression

各行のバイト数がカウントされるTEXT式。

例8-22 バイト数を使用した最も長い行の長さの確認

mytextというテキスト変数の最も長い行の長さを確認するとします。次の例では、変数の値およびMAXBYTESによって返される結果が示されています。

次の文

SHOW mytext

によって、次の出力が生成されます。

This is a multiline text variable. 
The longest line is this one in the middle.
The third line is short.

次の文

SHOW MAXBYTES(mytext)

によって、次の出力が生成されます。

43 

MAXCHARS

MAXCHARSファンクションは、複数行のテキスト式の最も長い行の文字数をカウントするファンクションです。MAXCHARSによって返される結果のディメンションは、指定した式のディメンションと同じです。


ヒント:

マルチバイト・キャラクタ・セットを使用している場合、MAXCHARSファンクションのかわりにMAXBYTESファンクションを使用できます。

戻り値

INTEGER

構文

MAXCHARS(text-expression)

パラメータ

text-expression

各行の文字数がカウントされるテキスト式。MAXCHARSは、TEXT引数またはNTEXT引数を受け入れます。どちらのデータ型にも自動変換は行われません。指定した引数のデータ型に対応した情報が返されます。

例8-23 文字数を使用した最も長い行の長さの確認

mytextというテキスト変数の最も長い行の長さを確認するとします。次の例では、変数の値およびMAXCHARSによって返される結果が示されています。

次の文

SHOW mytext

によって、次の出力が生成されます。

This is a multiline text variable. 
The longest line is this one in the middle.
The third line is short.

次の文

SHOW MAXCHARS(mytext)

によって、次の出力が生成されます。

43 

MEDIAN

MEDIANファンクションは、式の値の中央値を計算するファンクションです。中央値とは、特定の数列で真中に位置する値のことです。

戻り値

DECIMAL

構文

MEDIAN(expression [CACHE] [dimension...])

パラメータ

expression

中央値が計算される式。

CACHE

内部動作が若干変更されます。このキーワードは、元のパフォーマンスが非常に遅い場合にのみ指定してください。

dimension

結果のディメンションの名前。または、expressionの1つのディメンションと結果のディメンションとする別のディメンションとの間のリレーションの名前。

デフォルトでは、MEDIANファンクションの戻り値は単一の値になります。結果に対し1つ以上のディメンションを指定すると、MEDIANは、指定されたディメンションに対して値を計算し、値の配列を返します。各ディメンションは、expressionのディメンションであるか、そのディメンションの1つと関連している必要があります。


ヒント:

指定したディメンションがexpressionの実際のディメンションではなくexpressionのディメンションに関連付けられたディメンションであり、かつ2つのディメンション間のリレーションが2つ以上ある場合は、ディメンション間のデフォルトのリレーションを使用して計算が行われます。(デフォルトのリレーションの詳細は、RELATIONコマンドを参照してください。)Oracle OLAPでこのデフォルトのリレーションを使用しない場合は、リレーションの名前を指定して、関連付けられたディメンションを指定します。

使用上の注意

NA値とMEDIAN

MEDIANは、他の集計ファンクションと同様に、NASKIPオプションの影響を受けます。NASKIPがYESに設定されている場合(デフォルト)、MEDIANはNA値を無視し、NA値以外の中央値を返します。NASKIPがNOに設定されている場合、MEDIANは式の値のいずれかがNAのときに、NAを返します。式のすべての値がNAの場合、NASKIPの設定にかかわらず、MEDIANはNAを返します。

例8-24 月別売上の中央値の計算

この例では、スポーツウェアの月間売上の中央値を販売地区別に計算する方法を示します。

LIMIT product TO 'Sportswear'
REPORT W 12 HEADING 'Median Sales' MEDIAN(sales district)

この文によって生成される出力は、次のとおりです。

DISTRICT          Median Sales
----------------- ------------
Boston               67,923.05
Atlanta             152,186.52
Chicago              94,372.06
Dallas              160,854.60
Denver               86,745.40
Seattle              53,950.28

MIN

MINファンクションは、2つの式を比較して小さいほうの値を算出するファンクションです。

戻り値

DECIMAL。MINの結果は、2つの式のディメンションの結合によってディメンション化されます。

構文

MIN(expression1expression2)

パラメータ

expression1

比較する一方の式。

expression2

比較するもう一方の式。

例8-25 実積額と予算額のどちらが小さいかを比較する計算

1996年の最初の6か月それぞれについて、Sporting部門の売上原価(Cogs)明細項目でactual値とbudget値のどちらが小さいかを確認するとします。

LIMIT line TO 'Cogs'
LIMIT division TO 'Sporting'
LIMIT month TO 'Jan96' TO 'Jun96'
REPORT DOWN month actual budget MIN(actual budget)

この文によって生成される出力は、次のとおりです。

DIVISION: SPORTING
               --------------LINE--------------
               --------------COGS--------------
                                        MIN    
                                      (ACTUAL  
MONTH            ACTUAL     BUDGET    BUDGET)  
-------------- ---------- ---------- ----------
Jan96          287,557.87 279,773.01 279,773.01
Feb96          315,298.82 323,981.56 315,298.82
Mar96          326,184.87 302,177.88 302,177.88
Apr96          394,544.27 386,100.82 386,100.82
May96          449,862.25 433,997.89 433,997.89
Jun96          457,347.55 448,042.45 448,042.45

MMOF

MMOFファンクションは、指定した日付に該当する月を1から12までの範囲のINTEGERで返すファンクションです。MMOFによって返される結果のディメンションは、指定したDATE式のディメンションと同じです。

戻り値

INTEGER

構文

MMOF(date-expression)

パラメータ

date-expression

DATEデータ型の式、または日付を指定するテキスト式。テキスト式の値は自動的にDATE値へ変換され、指定した値が不明瞭な場合は、DATEORDERオプションの現行の設定を使用して値が解決されます。

例8-26 現在の月の検索

次の文で、今日の日付が当てはまる月を確認します。

SHOW MMOF(TODAY)

たとえば、今日の日付が1996年1月15日の場合、この文によって生成される出力は次のとおりです。

1

MODE

MODEファンクションは、数式のモード(最も頻繁に発生する値)を返すファンクションです。データに重複する値がない場合、MODEはNAを返します。

戻り値

DECIMAL

構文

MODE(expression [CACHE} [dimensions])

パラメータ

expression

モードが計算される数式。

CACHE

内部動作が若干変更されます。このキーワードは、元のパフォーマンスが非常に遅い場合にのみ指定してください。

dimensions

結果のディメンション。ディメンションを指定しない場合、MODEによってexpressionのすべてのディメンションでモードが計算され、単一の値が返されます。dimension引数に1つ以上のディメンション(ただし、expressionのすべてのディメンションよりも少ない数のディメンション)を指定すると、指定したディメンションの各値についてのモードが計算され、値の配列が返されます。各ディメンションは、expressionのディメンションである必要があります。

使用上の注意

MODEでのNASKIPの影響

MODEはNASKIPオプションに影響されません。

重複値の複数のセット

式で最も頻繁に発生する値として評価された値が複数存在する場合、MODEによって値がソートされ、最も小さい値が返されます。たとえば、一連のデータ{4,5,2,3,7,4,6,2,1}の場合、2と4はどちらも2回出現していますが、このデータのモードは2になります。

例8-27 モードのレポート

この例では、次のようにgeographyディメンション、itemsディメンションおよびsales2変数を使用します。

DEFINE geography DIMENSION TEXT 
MAINTAIN geography ADD 'g1' 'g2' 'g3'
DEFINE items DIMENSION TEXT
MAINTAIN items ADD 'Item1' 'Item2' 'Item3' 'Item4' 'Item5'
DEFINE sales2 DECIMAL <geography items>

sales2変数には、次のデータ値が含まれているとします。

               -------------SALES2-------------
               -----------GEOGRAPHY------------
ITEMS              G1         G2         G3
-------------- ---------- ---------- ----------
Item1               30.00      15.00      12.00
Item2               10.00      20.00      18.00
Item3               15.00      20.00      24.00
Item4               30.00      25.00      25.00
Item5                  NA       7.00      21.00
  • 次の文を使用して、geographyディメンションで計算したモードをレポートします。

    REPORT W 22 MODE(sales2, geography)
    

    この文によって生成される出力は、次のとおりです。

                        MODE(SALES2,
    GEOGRAPHY            GEOGRAPHY)
    -------------- ----------------------
    g1                              30.00
    g2                              20.00
    g3                                 NA
    
  • 次の文を使用して、itemsディメンションで計算したモードをレポートします。

    REPORT W 18 MODE(sales2, items)
    

    この文によって生成される出力は、次のとおりです。

                      MODE(SALES2,
    ITEMS                ITEMS)
    -------------- ------------------
    Item1                          NA
    Item2                          NA
    Item3                          NA
    Item4                       25.00
    ITEM5                          NA
    
  • 次の文を使用して、sales2変数のすべてのディメンションで計算したモードをレポートします。

    REPORT MODE(sales2)
    

    この文によって生成される出力は、次のとおりです。

    Mode
    ----
    15
    

MODULO

MODULOファンクションは、SQL MODファンクションと同様に、ある数値を別の数値で除算したときの剰余を返します。除数が0(ゼロ)の場合は、当該数値を返します。

戻り値

数値。

最も大きな数値の引数が優先され、その引数のデータ型と同じデータ型に残りの引数も暗黙的に変換されて、そのデータ型で戻り値が返されます。

構文

MOD(dividend, divisor)

パラメータ

dividend

除算の対象とする数式(またはOracle OLAPで暗黙的に数式へと変換できる式)。

divisor

除数とする数式(またはOracle OLAPで暗黙的に数式へと変換できる式)。

例8-28 MODULOを使用した除算後の剰余の確認

SHOW MODULO(13,7)
6.00

MONTHS_BETWEEN

MONTHS_BETWEENファンクションは、2つの日付間の月数を計算します。2つの日付の日を示す構成要素が同じ場合、または両方の日付が月末の場合、戻り値は自然数です。この他の場合、戻り値に小数が含まれ、1か月を31日として日数の差が表されます。最初の日付が2番目の日付より後の場合、戻り値は正の値になり、最初の日付が2番目の日付より前の場合、戻り値は負の値になります。

戻り値

NUMBER

構文

MONTHS_BETWEEN(datetime_expression1datetime_expression2)

パラメータ

datetime-expression1

DATETIMEデータ型の1番目の式、または日付を指定するテキスト式。

datetime-expression2

DATETIMEデータ型の2番目の式、または日付を指定するテキスト式。

例8-29 日付間の月数の計算

次の文は、2004年3月26日と2001年7月6日との間の月数を計算します。

SHOW months_between('06Jul2005' '17Jul2003')
23.65

例8-30 月末日

2つの日付が両方とも月末の場合、戻り値は整数です。

SHOW months_between('29Feb2000', '30Sep2000')
-7.00

MOVINGAVERAGE

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

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

戻り値

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

構文

MOVINGAVERAGE(expressionstartstopstep, -

     [dimension [STATUS|limit-clause]])

パラメータ

expression

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

start
stop

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


注意:

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


ヒント:

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

step

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

dimension

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

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

STATUS

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

limit-clause

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

使用上の注意

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

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

例8-31 移動平均の計算

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

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

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

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

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

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

MOVINGMAX

MOVINGMAXファンクション(省略形はMVMAX)は、指定されたディメンションにわたるディメンション化変数または式の一連の最大値を返します。ステータスにあるディメンション値ごとに、現行ディメンション値を基準にして指定範囲内のデータで最大値を検索します。

変数または式に指定のディメンションしかない場合、MOVINGMAXによって生成される一連の最大値は、ステータスにある各ディメンション値につき1つです。変数または式に指定のディメンション以外のディメンションがある場合、MOVINGMAXでは、他のディメンションのステータス・リストにある値の組合せごとに、個別に一連の最大値を生成します。

戻り値

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

構文

MOVINGMAX(expressionstartstopstep, [dimension [STATUS|limit-clause]])

パラメータ

expression

最大値を検索する値を持つ数値変数または計算。たとえば、unitssales-expenseなど。

start
stop

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


注意:

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


ヒント:

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

step

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

dimension

移動最大値が計算されるディメンション。任意のディメンションを指定できますが、通常は、1つのレベル(月レベル、年レベルなど)に制限されているTEXT型の階層型時間ディメンション、またはDAY、WEEK、MONTH、QUARTER、YEARのいずれかの型のディメンションです。

expressionのディメンションがDAY、WEEK、MONTH、QUARTER、YEARのいずれかのタイプであり、そのディメンションをMOVINGMAXに使用する場合は、dimension引数を省略できます。

STATUS

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

販売実績の最大値を計算する例は、例8-31「移動平均の計算」を参照してください。

MOVINGMIN

MOVINGMINファンクション(省略形はMVMIN)は、指定されたディメンションにわたるディメンション化変数または式の値の一連の最小値を返します。ステータスにあるディメンション値ごとに、現行ディメンション値を基準にして指定範囲内のデータで最小値を検索します。

変数または式に指定のディメンションしかない場合、MOVINGMINによって生成される一連の最小値は、ステータスにある各ディメンション値につき1つです。変数または式に指定のディメンション以外のディメンションがある場合、MOVINGMINでは、他のディメンションのステータス・リストにある値の組合せごとに、個別に一連の最小値を生成します。

戻り値

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

構文

MOVINGMIN(expressionstartstopstep, [dimension [STATUS|limit-clause]])

パラメータ

expression

最小値を検索する値を持つ数値変数または計算。たとえば、UNITS、SALES-EXPENSEなど。

start
stop

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


注意:

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


ヒント:

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

step

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

dimension

移動最小値の計算対象となるディメンション。任意のディメンションを指定できますが、通常は、1つのレベル(月レベル、年レベルなど)に制限されているTEXT型の階層型時間ディメンション、またはDAY、WEEK、MONTH、QUARTER、YEARのいずれかの型のディメンションです。

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

STATUS

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

limit-clause

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

販売実績の最小値を計算する例は、例8-31「移動平均の計算」を参照してください。

MOVINGTOTAL

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

変数または式に指定のディメンションしかない場合、MOVINGTOTALによって生成される一連の合計は、ステータスにある各ディメンション値につき1つです。変数または式に指定のディメンション以外のディメンションがある場合、MOVINGTOTALでは、他のディメンションのステータス・リストにある値の組合せごとに、個別に一連の合計を生成します。

戻り値

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

構文

MOVINGTOTAL(expressionstartstopstep, [dimension [STATUS|limit-clause]])

パラメータ

expression

合計する値を持つ数値変数または計算。たとえば、UNITS、SALES-EXPENSEなど。

start
stop

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


注意:

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


ヒント:

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

step

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

dimension

移動合計が計算されるディメンション。任意のディメンションを指定できますが、通常は時間ディメンションです。

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

STATUS

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

limit-clause

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

販売実績の移動合計を計算する例は、例8-31「移動平均の計算」を参照してください。

NA2

NA2ファンクションは、NULLトラッキングを行うように定義されている変数のデバッグとテストに使用されます。このファンクションからはNA2ビットが考慮されたNA値が返されます。

戻り値

NAフラグがTRUEに設定されているNA値

構文

NA2

NAFILL

NAFILLファンクションは、NA値を指定の埋込み式に置き換えてソース式の値を返します。

戻り値

戻り値のデータ型はsource-expressionと同じです。埋込み式とソース式のデータ型が同じでない場合、Oracle OLAPは可能なかぎり埋込み式をソース式のデータ型に変換します。変換されない場合はエラーが生成されます。ソース式と埋込み式がどちらもNAである場合、NAFILLはNAを返します。

構文

NAFILL(source-expression fill-expression)

パラメータ

source-expression

評価される式。source-expressionの値がNAではない場合、NAFILLはsource-expressionの対応する値を返します。結果のディメンションおよびデータ型は、source-expressionによって決まります。

fill-expression

戻り値の置換後の式。fill-expressionのデータ型はsource-expressionと同じである必要があります。fill-expressionは、source-expressionの値がNAと等しい場合にのみ評価されます。

使用上の注意

埋込み式内のファンクション

ソース式と同じデータ型が返される場合、埋込み式には任意のファンクションを使用できます。

NAFILLより優先順位の高いNATRIGGER

Oracle OLAPは、NAFILLファンクションを適用する前に$NATRIGGERプロパティ式を評価します。$NATRIGGER式がNAである場合、NAFILLファンクションは有効です。

例8-32 NA値へのゼロの埋込み

変数salesNA値があり、そのNA値をゼロとみなして平均を計算するとします。通常、NA値はAVERAGEファンクションによって無視され、平均の計算の対象となる値の数にカウントされません。NAFILLをAVERAGEファンクション内で使用すると、その値は一時的にゼロとして扱われるため、NA値が平均の計算の対象としてカウントされます。

REPORT AVERAGE(NAFILL(sales 0.0))

NAFLAG

このファンクションは、NULLトラッキングを行うように定義されている変数のデバッグとテストに使用され、値がNA2値であるかどうかや、非NA値であるかどうかを判別します。

戻り値

INTEGER

非NA値の場合は0、NA値がNA2値である場合は2、それ以外のNA値の場合はすべて1

構文

NAFLAG (expression)

パラメータ

expression

OLAP DML式。

NEW_TIME

NEW_TIMEファンクションは、日付と時刻を別のタイムゾーンの日付と時刻に変換します。

戻り値

DATETIME

構文

NEW_TIME(datetime-exp this_zone new_zone)

パラメータ

this_zone

datetime-expの変換前のタイムゾーンを示すテキスト式。次の表に示す有効なタイムゾーンである必要があります。

new_zone

datetime-expの変換後のタイムゾーンを示すテキスト式。こちらが戻り値のタイムゾーンです。表8-1「タイムゾーン」に示す有効なタイムゾーンである必要があります。

表8-1タイムゾーン

AST 大西洋標準時

ADT

大西洋夏時間

BST

ベーリング標準時

BDT

ベーリング夏時間

CST

中部標準時

CDT

中部夏時間

EST

東部標準時

EDT

東部夏時間

GMT

グリニッジ標準時

HST

アラスカハワイ標準時

HDT

アラスカハワイ夏時間

MST

山地標準時

MDT

山地夏時間

NST

ニューファンドランド標準時

PST

太平洋標準時

PDT

太平洋夏時間

YST

ユーコン標準時

YDT

ユーコン夏時間


例8-33 現在の日時の使用

SYSDATEファンクションは、現在の日時をNEW_TIMEファンクションに返します。

SHOW new_time(SYSDATE 'EST' 'PST')

東部標準時の日時が2000年10月20日午前1時20分のとき、太平洋標準時(東部の3時間遅れ)の日付は2000年10月19日です。SYSDATEはNLS_DATE_FORMATによって指定される書式(デフォルトで日付のみを表示)を使用するので、時刻は表示されません。

19-OCT-00

例8-34 日時の指定

次の例では、TO_DATEファンクションがテキスト文字列を有効な日付および時刻に変換します。TO_CHARファンクションには、NLS_DATE_FORMATオプションで指定される日付書式を一時的に上書きする日付書式が含まれます。

SHOW TO_CHAR(NEW_TIME(TO_DATE('11-27-00 22:15:00', 'MM-DD-YY HH24:MI:SS'), -
   'HST' 'PST') 'MM-DD-YY HH24:MI:SS')

この文は、アラスカハワイ標準時の11月27日午後10時15分(22:15:00)を太平洋標準時の11月28日午前12時15分(00:15:00)に変換します。TO_CHARファンクションで指定される日付書式によって、日付とともに時刻も表示されます。

11-28-00 00:15:00

あるいは、NLS_DATE_FORMATの値を変更することもできます。

NLS_DATE_FORMAT = 'MM-DD-YY HH24:MI:SS'

これにより、TO_CHARを使用せずに、次の文によって同じ結果が生成されます。

SHOW NEW_TIME(TO_DATE('11-27-00 22:15:00', 'MM-DD-YY HH24:MI:SS'), -
   'HST' 'PST')

NEXT_DAY

NEXT_DAYファンクションは、指定した日付以降の特定の曜日の最初の日付を返します。

戻り値

DATETIME

構文

NEXT_DAY(datetime-expression, weekday)

パラメータ

datetime-expression

データ型がDATETIMEの式。

weekday

曜日(月曜日など)を指定するテキスト式。有効な名前は、NLS_DATE_LANGUAGEオプションによって制御されます。

例8-35 未来の日付の取得

次の文は、今日の日付以降の最初の火曜日の日付を返します。

SHOW NEXT_DAY(SYSDATE, 'Tues')

今日が2000年9月8日の金曜日の場合、次の火曜日の日付は次のとおりです。

11-SEP-00

NLS_CHARSET_ID

NLS_CHARSET_IDファンクションは、指定したキャラクタ・セット名に対応するキャラクタ・セット識別番号を返します。


関連項目:

NLS_CHARSET_NAME

戻り値

INTEGER(キャラクタ・セットの名前に対して有効な値を指定した場合)、数値、またはNA。

構文

NLS_CHARSET_ID (charset_name)

パラメータ

charset_name

有効なキャラクタ・セット名であるVARCHAR2テキスト式、または次のいずれかの値。

  • CHAR_CS: サーバーのデータベース・キャラクタ・セット識別番号を返すように指定します。

  • NCHAR_CS: サーバーの各国語キャラクタ・セットID番号を返すように指定します。


関連項目:

キャラクタ・セット名のリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

NLS_CHARSET_NAME

NLS_CHARSET_NAMEファンクションは、指定したキャラクタ・セット識別番号に対応するキャラクタ・セット名を返します。


関連項目:

NLS_CHARSET_ID

戻り値

VARCHAR2(番号が有効なキャラクタであると認識された場合)、またはNA。

構文

NSL_CHARSET_NAME (number-exp)

パラメータ

number-exp

キャラクタ・セットIDの番号。


関連項目:

キャラクタ・セット識別子のリストは、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

NLSSORT

NLSSORTファンクションは、テキスト文字列のソートに使用されるバイト文字列を返します。このファンクションを使用すると、文字列のバイナリ値ではなく言語ソート順に基づいてソートや比較の操作を指定できます。


関連項目:

『Oracle Databaseグローバリゼーション・サポート・ガイド』

戻り値

RAW

構文

NLSSORT(char [, 'NLS_SORT = sort[_ai |_ci]' ])

パラメータ

char

テキスト式。

sort

NLS言語。

_ai

アクセントを区別しないソートを指定します。

_ci

大/小文字を区別しないソートを指定します。

例8-36 言語ソート順に基づく値のソートに使用されるバイトの判断

ドイツ語において、大文字と小文字を区別せずに単一の値をソートするバイトを調べるとします。この場合、次のSHOWコマンドを実行できます。

show  NLSSORT('Mary Ann' , 'NLS_SORT = German_ai' )
501464820114555500010101010201010100

mynameというTEXTディメンションのすべての値に対してこの同じデータがソートされることを確認するために、次の文を実行します。

REPORT NLSSORT(MYname , 'NLS_SORT = German_ci' )
 
MYNAME           NLSSORT(MYNAME , 'NLS_SORT = German_ci')
---------------- ----------------------------------------
Adelaid          1423284B143C23000101010101010100
Maryann          50146482145555000101010101010100
Mary Ann         501464820114555500010101010201010100
Donna            235A55551400010101010100

NONE

NONEファンクションは、ブール式の値にTRUEが存在しない場合、YESを返します。ブール式のいずれかの値がTRUEの場合は、NOを返します。

戻り値

BOOLEAN、または式のすべての値がNAの場合はNA

構文

NONE(boolean-expression [CACHE] [dimension...])

パラメータ

boolean-expression

評価されるブール式。

CACHE

内部動作が若干変更されます。このキーワードは、元のパフォーマンスが非常に遅い場合にのみ指定してください。

dimension

結果のディメンションの名前。または、boolean-expressionの1つのディメンションと結果のディメンションとする別のディメンションとの間のリレーションの名前。

デフォルトでは、NONEはYES値またはNO値のどちらか1つを返します。結果に対し1つ以上のディメンションを指定すると、NONEは、指定されたディメンションに対してTRUE値の有無をテストし、値の配列を返します。各ディメンションは、boolean-expressionのディメンションであるか、そのディメンションの1つと関連付けられている必要があります。


ヒント:

指定したディメンションがboolean-expressionの実際のディメンションではなくboolean-expressionのディメンションに関連付けられたディメンションであり、かつ2つのディメンション間のリレーションが複数ある場合は、ディメンション間のデフォルトのリレーションを使用して計算が行われます。(デフォルトのリレーションの詳細は、RELATIONコマンドを参照してください。)Oracle OLAPでこのデフォルトのリレーションを使用しない場合は、リレーションの名前を指定して、関連付けられたディメンションを指定します。

使用上の注意

NONEでのNASKIPの影響

NONEはNASKIPオプションの影響を受けます。NASKIPの設定がYES(デフォルト)で、式の値がすべてNAの場合、NONEはNAを返しますが、1つでもNAでない値があれば、NONEは式にあるすべてのNA値を無視します。NASKIPの設定がNOである場合、式の値のいずれかがNAのとき、NONEはNAを返します。

例8-37 TRUE値の有無の確認(地区別)

売上が$50,000を下回る月がなかった地区を探すとします。NONEファンクションを使用して、ブール式(SALES LT 50000)でTRUEとなる月がないかどうかを判定します。結果を地区によってディメンション化するには、NONEの2番目の引数としてdistrictを指定します。

LIMIT product TO 'Sportswear'
REPORT NONE(sales LT 50000, district)

この文によって生成される出力は、次のとおりです。

               NONE(SALES
               LT 50000,
DISTRICT       DISTRICT)
-------------- ----------
Boston                 NO
Atlanta               YES
Chicago               YES
Dallas                YES
Denver                YES
Seattle                NO

例8-38 TRUE値の有無の確認(地域別)

すべての地区のスポーツウェア売上が$50,000以上であった月が存在しなかった地域を探すとします。regionディメンションはdistrictディメンションと関連があるので、ANYの結果のディメンションとして、districtではなくregionを指定できます。

REPORT NONE(sales LT 50000, region)

この文によって生成される出力は、次のとおりです。

               NONE(SALES
               LT 50000,
REGION          REGION)
-------------- ----------
East                   NO
Central               YES
West                   NO

NORMAL

NORMALファンクションは、指定した平均値および標準偏差を持つ正規分布からランダムな値を返します。NORMALによって返される結果のディメンションは、平均および標準偏差の式のすべてのディメンションによってディメンション化されます。

戻り値

DECIMAL

構文

NORMAL(mean standard-deviation)

パラメータ

mean

正規分布の平均値を表す数式。meanNAの場合、NORMALはNAを返します。

standard-deviation

正規分布の標準偏差を表す数式。standard-deviationNAの場合、NORMALは平均値を返します。

例8-39 ランダムな値の表示

次の例では、平均値が0で標準偏差が1の正規分布から返される乱数を示します。

最初に、次の文を実行します。

SHOW NORMAL(0 1)

次のような結果が生成されます。

-0.75

ただし、同じ文を再度実行すると、次のような結果が生成される場合があります。

0.87

NPV

NPVファンクションは、一連のキャッシュ・フロー額から正味現在価値を計算します。

戻り値

DECIMAL

NPVファンクションによって返される結果は、時間ディメンションを除くcashflowsのすべてのディメンションによってディメンション化されます。cashflowsのディメンションが時間ディメンションによってのみディメンション化される場合、NPVは単一の値を返します。

構文

NPV(cashflowsdiscount-rate, [time-dimension])

パラメータ

cashflows

time-dimensionによってディメンション化される、一連のキャッシュ・フロー額を指定する数式。


注意:

すべてのキャッシュ・フローは、関連付けられている期間の開始時に発生するとみなされます。キャッシュ・フローは、時間ディメンションの現行のステータスにある最も早い期間の先頭までさかのぼって割り引かれます。NPVは、ステータス外のディメンション位置に対応するキャッシュ・フローを無視します。

discount-rate

キャッシュ・フロー額を割り引くために使用する期間ごとの利率を指定する数式。単一の値でも、非時間ディメンションが1つ以上ある値の配列でもかまいません。割引率は小数で表現され、たとえば、8.25パーセントは.0825です。

NPVは、任意の正の割引率を受け入れますが、割引率が-1より大きい(割引率> -1)負の割引率も受け入れます。負の割引率を指定する場合は、割引率の前にカンマを付ける必要があります。

time-dimension

時間ディメンションを指定する名前。cashflowsにDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションがある場合、NPVはそのディメンションを自動的に使用するので、time-dimension引数は省略できます。

使用上の注意

NAの割引率

結果の値を計算するために使用する割引率がNAである場合、その結果の値はNAです。

キャッシュ・フローのタイミング

期間内でのキャッシュ・フローのタイミングの前提、つまり現在価値計算の基準となる時点の前提が異なる場合、適切な正または負の値を指数とした(1+割引率)の累乗とNPVファンクションの実行結果を乗算すれば、前提の違いを吸収できます。

例8-40 正味現在価値の計算

次の文は、projectという名前のディメンションを作成し、それに値を追加します。さらに、yearおよびprojectによってディメンション化されるcflowという名前の変数を作成します。

DEFINE project DIMENSION TEXT
MAINTAIN project ADD 'a' 'b' 'c' 'd' 'e'
DEFINE cflow VARIABLE DECIMAL <project year>

次の値をCFLOWに割り当てます。

             ------------------------CFLOW----------------------
             -----------------------PROJECT---------------------
YEAR             a          b          c          d          e
------------ ---------- ---------- ---------- ---------- -------
Yr95           -200.00    -200.00    -300.00    -100.00  -200.00
Yr96            100.00     150.00     200.00      25.00    25.00
Yr97            100.00     400.00     200.00     100.00   200.00

続いて、次の文

REPORT NPV(cflow, .08, year)

によって、8パーセントの割引率が適用され、cflowデータの正味現在価値に関して次のレポートが作成されます。

               NPV(CFLOW,
PROJECT        .08, YEAR)
-------------- ----------
a                  -21.67
b                  281.82
c                   56.65
d                    8.88
e                   -5.38

NULLIF

NULLIFファンクションは、ある式を他の式と比較し、2つの式が等しい場合はNA値を返し、そうでない場合は基準の式を返します。

戻り値

2つの式が等しい場合はNA、そうでない場合は基準の式。

構文

NULLIF (expr1 , expr2)

パラメータ

expr1

式。比較の基準の式。

expr2

expr1と比較する式。

例8-41 NULLIFを使用した値の比較

SHOW NULLIF(1, '1')
NA
 
SHOW NULLIF('red', 'Red')
red

NUMBYTES

NUMBYTESファンクションは、テキスト式のバイト数をカウントします。値が複数行のテキスト値である場合、NUMBYTESはすべての行の合計バイト数を返します。NUMBYTESによって返される結果のディメンションは、指定した式のディメンションと同じです。

戻り値

INTEGER

構文

NUMBYTES(text-expression)

パラメータ

text-expression

バイト数がカウントされるTEXT式。

例8-42 最長の名前のバイト数のカウント

レポートのラベル列に適切な幅を指定するために、製品の名前の長さを調べるとします。NUMBYTESファンクションとLARGESTファンクションを組み合せて使用すると、最長のラベルの長さがわかります。その値を使用して列のサイズを設定します。プログラムの次の文は、最長の名前を検索し、そのバイト数を使用してレポートの書式を設定します。

firstcol = LARGEST(NUMBYTES(name.product))+1
LIMIT month TO FIRST 3
FOR product
   DO
     ROW WIDTH FIRSTCOL name.product WIDTH 6 ACROSS month - 
     FIRST 3: units
   DOEND

プログラムを実行すると、次の出力が生成されます。

3-Person Tents      200    203    269
Aluminum Canoes     347    400    482
Tennis Racquets     992  1,076  1,114
Warm-up Suits     1,096  1,214  1,294
Running Shoes     2,532  2,405  2,775 

NUMCHARS

NUMCHARSファンクションは、テキスト式の文字数をカウントします。値が複数行のテキスト値である場合、NUMCHARSはすべての行の合計文字数を返します。NUMCHARSによって返される結果のディメンションは、指定した式のディメンションと同じです。


ヒント:

マルチバイト・キャラクタ・セットを使用している場合、NUMCHARSファンクションのかわりにNULLIFファンクションを使用できます。

戻り値

INTEGER

構文

NUMCHARS(text-expression)

パラメータ

text-expression

文字数がカウントされるテキスト式。NUMCHARSは、TEXT引数またはNTEXT引数を受け入れます。どちらのデータ型にも自動変換は行われません。指定した引数のデータ型に対応した情報が返されます。

例8-43 最長の名前の文字数のカウント

レポートのラベル列に適切な幅を指定するために、製品の名前の長さを調べるとします。NUMCHARSファンクションとLARGESTファンクションを組み合せて使用すると、最長のラベルの長さがわかります。その値を使用して列のサイズを設定します。プログラムの次の文は、最長の名前を検索し、その文字数を使用してレポートの書式を設定します。

firstcol = LARGEST(NUMCHARS(name.product))+1
LIMIT month TO FIRST 3
FOR product
   DO
     ROW WIDTH FIRSTCOL name.product WIDTH 6 ACROSS month - 
     FIRST 3: units
   DOEND

プログラムを実行すると、次の出力が生成されます。

3-Person Tents      200    203    269
Aluminum Canoes     347    400    482
Tennis Racquets     992  1,076  1,114
Warm-up Suits     1,096  1,214  1,294
Running Shoes     2,532  2,405  2,775 

NUMLINES

NUMLINESファンクションは、テキスト式の各値の行数をカウントします。NUMLINESによって返される結果のディメンションは、指定した式のディメンションと同じです。

NUMLINESは、TEXT引数またはNTEXT引数を受け入れます。どちらのデータ型にも自動変換は行われません。

戻り値

INTEGER

構文

NUMLINES(text-expression)

パラメータ

text-expression

行数がカウントされるテキスト式。

例8-44 行数のカウント

この例では、複数行のテキスト変数LASTNAMESの行数を調べます。LASTNAMES変数の値は、次のとおりです。

Adamson
Jones
Smith
Taylor

次の文

SHOW NUMLINES(lastnames)

によって、次の出力が生成されます。

4 

NUMTODSINTERVAL

NUMTODSINTERVALファンクションは数値をDSINTERVALリテラルに変換します。

構文

NUMTODSINTERVAL (number, interval_unit)

パラメータ

number

任意のNUMBER値、または暗黙的にNUMBER値に変換される式。

interval_unit

numberの単位を指定するテキスト値。DAY、HOUR、MINUTEまたはSECONDのいずれかの文字列値に解決できる必要があります。

interval_unitでは大文字と小文字は区別されません。カッコ内の前および後にある値は無視されます。デフォルトの場合、戻り値の精度は9です。

NUMTOYMINTERVAL

NUMTOYMINTERVALファンクションは数値をYMINTERVALリテラルに変換します。

構文

NUMTOYMINTERVAL (number, interval_unit)

パラメータ

number

任意のNUMBER値、または暗黙的にNUMBER値に変換される式。

interval_unit

numberの単位を指定するテキスト値。YEARまたはMONTHのいずれかの文字列値に解決できる必要があります。

interval_unitでは大文字と小文字は区別されません。カッコ内の前および後にある値は無視されます。デフォルトの場合、戻り値の精度は9です。

NVL

NVLファンクションは、NA値または空の文字列を特定の文字列に置換します。

指定した式を評価し、非NA値または空の文字列をある値に、NA値を別の値に置換するには、NVL2を使用します。

戻り値

基準の式の値がNAの場合は指定した置換値、または基準の式の値が非NAの場合は基準の式。戻り値のデータ型は、基準の式のデータ型と常に同じです。

構文

NVL (exp , replacement-exp)

パラメータ

expr

NA値または空の文字列がある場合に置換する式。

replacement-exp

NA値の置換後の値。

例8-45 NVLの使用方法

SHOW NVL('First String', 'Second String')
First String
 
SHOW NVL('', 'Second String')
Second String

NVL2

NVL2ファンクションは、指定した式の値がNAでも空の文字列でもない場合はある値を返し、NAまたは空の文字列の場合には別の値を返します。

NA値または空の文字列を特定の文字列に置換する場合は、NVLを使用します。

戻り値

戻り値のデータ型は、常にexpr2(expr1の値が非NAのときに返される値の式)のデータ型です。

構文

NVL2 (expr1 , expr2 , expr3)

パラメータ

expr1

このファンクションが評価する値の式。

expr2

expr1の値が空の文字列でもNAでもないときに返される値の式。

expr3

expr1の値がNAのときに返される値の式。

使用上の注意

データ型が異なる値の比較

expr2expr3のデータ型が異なる場合、expr3のデータ型がexpr2のデータ型に変換されてから値が比較されます。

例8-46 NVL2の使用方法

SHOW NVL2('Which string?', 'First String', 'Second String')
First String
 
SHOW NVL2('', 'First String', 'Second String')
Second String

OBJ

OBJファンクションは、アナリティック・ワークスペース・オブジェクトの情報を返します。

戻り値

戻り値は、choiceに指定した値によって異なります。また、choiceが特定の型のオブジェクトにのみ適用される場合、object-nameに別の型のオブジェクトを指定すると、特に記載がないかぎりNAを返します。

構文

OBJ(choice [object-name])

パラメータ

object-name

情報を取得するオブジェクトの名前であるTEXT式。

choice

必要な情報の型を指定するキーワードまたはキーワード句。構文、戻り値のデータ型および有効なキーワードの説明は、表8-2「OBJファンクションのchoice引数のキーワード」を参照してください。

表8-2 OBJファンクションのchoice引数のキーワード

指定可能なキーワード データ型 戻り値の説明

ACQUIRED

BOOLEAN

指定したオブジェクトが、マルチライタ・モードで修正するために取得されているかどうか。パーティション変数については、その変数のすべてのパーティションが取得されている場合にのみ、YESを返します。

ACQUIREDPARTITIONS

TEXT (複数行)

マルチライタ・モードで修正するために取得される、object-nameで指定された変数のパーティションの名前。

AGGMAP

TEXT (複数行)

指定したaggmapの仕様。

AGGMAPLIST

TEXT (複数行)

指定した計算式にあるaggmapオブジェクトの名前。

ALIASLIST

TEXT (複数行)

指定したディメンションの別名ディメンションの名前。

ALIASOF

TEXT

指定した別名ディメンションのベース・ディメンションの名前。

AW

TEXT

指定したオブジェクトが存在するアタッチされたワークスペースの名前。指定したオブジェクトが1つのアタッチされたワークスペースのみに存在する場合、AWはそのワークスペースの名前を返します。指定したオブジェクトが複数のアタッチされたワークスペースに存在する場合でも、AWは1つのワークスペースの名前のみを返します。該当するすべてのワークスペース名が返されるようにするには、AWLISTキーワードを使用する必要があります。アタッチされたワークスペースにオブジェクトが存在しない場合、AWはNAを返します。

AWLIST

TEXT (複数行)

指定した名前を持つオブジェクトが存在するアタッチされたワークスペースの名前。オブジェクトの修飾オブジェクト名を指定すると、AWLISTは該当するワークスペース名のみを返します。指定したオブジェクトがワークスペースに含まれない場合、AWLISTはNAを返します。

BTREE

BOOLEAN

指定した結合ディメンションまたはコンポジットにBTREE索引が指定されているかどうか。

CACHEEMPTY

BOOLEAN

指定した変数のデータがセッション・キャッシュから消去されているかどうか。キャッシュは、CLEAR文をCACHEキーワードとともに使用するとを空にできます。object-nameが変数ではない場合、またはそこにセッション・キャッシュがない場合、CACHEEMPTYはNAを返します。(セッション・キャッシュの詳細は、「Oracle OLAPセッション・キャッシュの概要」を参照してください。)

CACHECOUNT

LONG INTEGER

指定した変数の、セッション・キャッシュに存在する非NAセルの数。object-nameが変数ではない場合、またはそこにセッション・キャッシュがない場合、CACHECOUNTはNAを返します。(セッション・キャッシュの詳細は、「Oracle OLAPセッション・キャッシュの概要」を参照してください。)

CHANGED

BOOLEAN

指定した変数、リレーション、ディメンションまたは値セットが、最後にUPDATEを実行した後に変更されているかどうか。

CLASS

TEXT

指定したオブジェクトの記憶域クラス。可能な戻り値は次のとおりです。

  • TEMPORARY: 値がワークスペース内に保存されないオブジェクト。値セット、変数、リレーションおよびワークシートに該当します。

  • 空の文字列: 値を変更するといったんワークスペースの新しい場所に格納され、更新時に保存される永続オブジェクト。すべてのオブジェクト型に該当します。

DATA

TEXT

指定したオブジェクトのデータ型。

  • ディメンション、変数および計算式の場合、可能な戻り値はINTEGERSHORTINTEGERLONGINTEGERDECIMALNUMBERSHORT(SHORTDECIMALの場合)、BOOLEANIDTEXTNTEXTDATEまたはDATETIMEです。

  • リレーションの場合、関連ディメンションの名前を返します。

  • 連結ディメンション、結合ディメンション、コンポジット、またはパーティション・テンプレートの場合、オブジェクトのベース・ディメンションの名前を複数行のテキスト値で返します。

  • データ型によって定義されるプログラムの場合、データ型の名前を返します。ディメンションの値を返すために定義されたプログラムの場合、ディメンションの名前を返します。

  • 値セットの場合、値セットが定義されたディメンションの名前を返します。

  • その他の型のオブジェクトの場合、NAを返します。

DEFINE

TEXT (複数行)

指定したオブジェクトの説明。この値は、オブジェクトに対してDESCRIBEが表示する値から語DEFINEとオブジェクト名を省いたものと同じです。

DFNCHANGED

BOOLEAN

指定したオブジェクトの定義が、最後にUPDATEを実行した後に変更されているかどうか。

DFNDIMS

TEXT (複数行)

指定したオブジェクトの定義に使用されるディメンション・リスト内のディメンションおよびコンポジットの名前。次の点に注意してください。

  • 名前のないコンポジットの場合、オブジェクト定義で使用される形式(SPARSE<dim1 dim2 ...>)を返します。

  • ディメンション・サロゲートの場合、サロゲートが定義されたディメンションの名前を返します。

  • 指定したオブジェクトの定義時にディメンション・リストが使用されなかった場合、NAを返します。

DIMMAX

INTEGER

指定したディメンション内の値の数。他のオブジェクト型の場合は0(ゼロ)を返します。

注意: ディメンション値へのアクセスを制限する読取り権限が設定されているディメンションに対してDIMMAXを使用すると、返される結果は、そのディメンションがロードされていたかどうかによって異なります。権限はオブジェクトがロードされるときに評価されます。通常、セッションでオブジェクトを初めて参照するときに、Oracle OLAPはオブジェクトをロードしてその権限を評価します。ただし、OBJファンクションはオブジェクトの情報を表示するのみで、オブジェクトをロードしません。ロードされていないディメンションに関してDIMMAXを使用すると、ディメンションに読取り権限があるかどうかにかかわらず、結果はディメンション内の値の数全体を反映します。権限のあるディメンションがロードされている場合、DIMMAXを選択すると、許可サイズを反映します。DIMMAXを選択して許可サイズを返すようにするには、LOAD文を実行してからOBJファンクションを使用します。

DIMS

TEXT (複数行)

指定したオブジェクトのディメンションの名前。具体的には、次のようになります。

  • ディメンション(単純、連結または結合)の場合、そのディメンションの名前を返します。連結または結合ディメンションのベース・ディメンションを調べるには、DATAキーワードを使用します。

  • コンポジットの場合、そのコンポジットのベース・ディメンションを返します。

  • ディメンション・サロゲートの場合、サロゲートが定義されたディメンションの名前を返します。

  • ディメンション化されたオブジェクトの場合、そのオブジェクトのディメンションの名前を返します。

  • オブジェクトにディメンションがない場合、NAを返します。

DIMTYPE

TEXT

指定したディメンションのタイプ。具体的には、次のようになります。

  • 連結ディメンションの場合、CONCATを返します。

  • 結合ディメンションの場合、CONJOINTを返します。

  • コンポジットの場合、COMPOSITEを返します。

  • 単純なディメンションの場合、ディメンションのデータ型を返します。

  • パーティション・テンプレート・オブジェクトの場合、PARTITION TEMPLATEを返します。

  • それ以外のオブジェクトの場合はすべてNAを返します。

DISKSIZE

INTEGER

指定したオブジェクトの格納に使用される合計ページ数。

注意: 一時オブジェクトに関しては、OBJ(DISKSIZE)は0(ゼロ)の値を返します。一時オブジェクトの値は、データベース・ファイルではなく一時記憶域に格納されるためです。

FORMULA

TEXT

指定した計算式の定義に含まれる式。

HASAGGCOUNT

BOOLEAN

指定した変数にAggcountオブジェクトが関連付けられているかどうか。(Aggcount変数の詳細は、「Aggcount変数」を参照してください。)

HASCACHE

BOOLEAN

指定した変数のデータを格納するために、セッションに対してローカルなセッション・キャッシュが確立されたかどうか。(セッション・キャッシュの詳細は、「Oracle OLAPセッション・キャッシュの概要」を参照してください。)

HASH

BOOLEAN

指定した結合ディメンションまたはコンポジットにHASH索引が指定されているかどうか。

HASHSIZE

INTEGER

ハッシュされたディメンションのTBLSPACE(ハッシュ表のキー/値ノード・リストのアンカーを含むページ領域)に割り当てられたページ数。実際のキー/値ノードに使用されるページ数(RANSPACEのページ領域(KVPAGES)から割り当てられる)は含まれないことに注意してください。

HASPROPERTY prop-name

BOOLEAN

prop-nameによって指定されるプロパティが、指定したオブジェクトに存在するかどうか。(省略形はHASPRP)

HIDDEN

BOOLEAN

指定したプログラムまたはモデルが非表示になっているかどうか。(プログラムやモデルを非表示にする方法の詳細は、HIDEおよびUNHIDEコマンドを参照してください。)

INDEXSIZE

INTEGER

指定したリレーションまたは結合ディメンションに関連するすべてのインバージョンの合計サイズ。

INORDER

BOOLEAN

指定したオブジェクトのベース・ディメンションの値の論理順序が、アナリティック・ワークスペースでの物理順序と一致するかどうか。INORDERは、キーワードADD FIRST、ADD AFTER、ADD BEFOREまたはMOVEを指定したMAINTAINを使用してディメンション値の論理順序が指定されていない場合にTRUEを返します。

ISBY [RECURSIVE] dimname

BOOLEAN

object-nameを指定した場合は、指定したオブジェクトが、指定したディメンション(dimname)でディメンション化されているか、そのディメンションに関連しているか、またはそのディメンションのサロゲートかどうか。dimnameのみを指定した場合は、dimnameに指定したディメンションによってオブジェクトがディメンション化されているかどうか、または、このオブジェクトがaggmapの場合、指定したディメンションがaggmap内のモデルまたはリレーションのディメンションかどうか。

  • RECURSIVEは、指定したオブジェクトのベース・ディメンションでdimnameをすべてのレベルで検索することを指定します。例8-49「OBJとISBYの組合せ」を参照してください。

  • dimnameは、ディメンションの名前を表すテキスト式です。(Oracle OLAPは名前を自動的に大文字に変換します。)dimnameがコンポジットである場合、ISBYによって返される値は、オブジェクトがコンポジットによって定義されたかどうかを表します。

オブジェクトがディメンション・サロゲート、変数、リレーションまたは値セット名の場合は、object-nameの値を指定して、そのオブジェクトが、指定したディメンションによってディメンション化されているか、そのディメンションに関連しているか、またはそのディメンションのサロゲートであるかを調べます。ワークスペース・オブジェクトのリストをループして複数のオブジェクトの情報を取得する場合、またはOBJを使用してNAMEディメンションを制限する場合、object-nameを省略できます。

ISCOMPILED

BOOLEAN

指定したコンパイル可能なオブジェクト(プログラム、モデル、計算式など)のコンパイル・ステータス。戻り値は、オブジェクトの型、およびオブジェクトにコンパイル・エラーが検出されたかどうかによって異なります。次に例を示します。

  • プログラムでは、前回の変更以降にコンパイラによって処理されている場合、YESが返されます。戻り値YESは、必ずしもプログラムのすべての行がコンパイルされたことを示しません。詳細は、COMPILEコマンドを参照してください。

  • 計算式では、エラーが1つも検出されることなく計算式がコンパイルされて保存可能な場合にのみ、YESが返されます。アンパサンド置換が含まれる計算式は保存できません。計算式が空の場合、ISCOMPILEDを選択すると、NOを返します。

  • モデルでは、エラーが1つも検出されることなくモデルがコンパイルされた場合、またはモデルが空の場合にのみ、YESを返します。

  • プログラム、計算式およびモデルでは、プログラム、計算式またはモデルが参照するオブジェクトを削除するとNOが返されます。

ISCOMPRESSED

BOOLEAN

指定したオブジェクトが圧縮コンポジットかどうか。

ISLATEST

BOOLEAN

指定したオブジェクトが最新バージョンのオブジェクトかどうか。この構文は、OBJ(VERSION)EQ OBJ(LATESTVER)に相当します。

ISSOLVED

BOOLEAN

指定したオブジェクトが圧縮コンポジットによってディメンション化された変数の場合、この変数が集計されているかどうか。

KVSIZE

INTEGER

ハッシュ索引またはBツリー索引に現在割り当てられているページ数。

LATESTVER

INTEGER

最近コミットされたオブジェクトのバージョンに対する、指定したオブジェクトの現在の状態。戻り値は、OBJ(VERSION)で返される値と同じか、それ以上の値のいずれかです。LATESTVERの戻り値がOBJ(VERSION)によって返された値よりも大きいときは、アナリティック・ワークスペースが読取り専用モードまたは読取り/書込みモードでアタッチされた後、あるいはアナリティック・ワークスペースがマルチライタ・モードでアタッチされた場合は最後の同期化後に、別のユーザーによってこのオブジェクトが更新されています。

LD

TEXT (複数行)

指定したオブジェクトのLD(詳しい説明)。

MODEL

TEXT (複数行)

指定したモデルの仕様。

NACACHECOUNT

INTEGER

NAキャッシュされたセルの総数。

NACACHEEMPTY

BOOLEAN

NAキャッシュが空かどうか。

NAPAGES

INTEGER

NA値のみが含まれ、データベースに格納されていないページ数。

NOHASH

BOOLEAN

指定した結合ディメンションがデータのロードおよびアクセスにNOHASH索引アルゴリズムを使用しているかどうか。

NUMCELLS

INTEGER

指定した変数内の物理セルの総数。Oracle OLAPでは、この変数のディメンションに対するOBJ(DIMMAX)の値のデカルト積を求めることにより、コンポジットも考慮の上、この値を算出します。

NUMDELS

DECIMAL

指定したディメンション化オブジェクトの削除済のセルの数。

NUMDFNDIMS

INTEGER

指定したオブジェクトの定義に使用されるディメンション・リスト内のディメンションまたはコンポジットの数。このカウントでは、各コンポジットは1つとカウントされますが、コンポジットのディメンション・リスト内にあるディメンションはカウントされません。ディメンション・リストによって定義されるオブジェクトは、変数、リレーション、計算式、値セット、連結または結合ディメンション、ディメンション・サロゲート、またはコンポジットです。オブジェクト(単一セルの変数、プログラムなど)の定義時にディメンション・リストが使用されなかった場合、0(ゼロ)が返されます。

NUMDIMS

INTEGER

指定したディメンション化オブジェクトのディメンションの数、または指定したコンポジットのベース・ディメンションの数。指定したオブジェクトがディメンションまたはディメンション・サロゲートの場合は1を返し、それ以外のオブジェクトの場合はすべて0(ゼロ)を返します。

NUMSEGS

INTEGER

指定したオブジェクトが複数のディメンションを持つ場合に、そのオブジェクトに関連付けられたアナリティック・ワークスペース・セグメントの数。(Oracle OLAPはセグメントを内部的に使用して、オブジェクトの値の物理記憶域を追跡管理しています。セグメントの数が多すぎると、情報の取得に時間がかかる場合があります。)

NUMVALS

INTEGER

指定したオブジェクト内の値またはセルの数。圧縮コンポジット、または圧縮コンポジットによってディメンション化される変数の場合、オブジェクト内部の論理値(つまり、コンポジットがBツリー・コンポジットであった場合に返される値)の数を表すINTEGER値を返します。

OWNSPACE

BOOLEAN

指定したオブジェクトがBTREE索引アルゴリズムで定義された結合ディメンションまたはコンポジットの場合は、BTREEノードを格納するためにプライベート・ページ領域を使用しているかどうか。指定したオブジェクトが可変幅テキスト・ディメンション、リレーション、または可変幅テキスト変数の場合は、オブジェクトのデータがそのオブジェクトに関連付けられている1つ以上のプライベート・ページ領域に格納されているかどうか。

PARTBY

TEXT (複数行)

指定したパーティション変数またはパーティション・テンプレート・オブジェクトのパーティション・ディメンションの名前。これらの名前は、複数行のテキスト値(各ディメンションにつき1行)として返されます。

PARTDIMS partitions

TEXT (複数行)

指定したパーティション・テンプレートまたはパーティション変数のpartitionsのディメンションの名前。戻り値は、複数行のテキスト値(各ディメンションにつき1行)として返されます。

partitionsは、確認するパーティションを指定する複数行のテキスト値(パーティション名ごとに1行)です。有効なパーティションではないパーティション名をpartitionsに指定すると、エラーが発生します。

PARTITION partitions

TEXT (複数行)

パーティション変数またはパーティション・テンプレート・オブジェクトに対する、指定したパーティション・テンプレートまたはパーティション変数のpartitionsを説明するテキスト。パーティション・テンプレート上でコールした場合、返される説明はDEFINE PARTITION TEMPLATE文と同様です。パーティション変数上でコールした場合、返される説明はDEFINE VARIABLE文と同様です。

partitionsは、確認するパーティションを指定する複数行のテキスト値(パーティション名ごとに1行)です。有効なパーティションではないパーティション名をpartitionsに指定すると、エラーが発生します。

PARTMETH

TEXT

指定したパーティション・テンプレートまたはパーティション変数がパーティション化される方法(RANGEまたはLIST)。

PARTNAMES

TEXT (複数行)

指定したパーティション・テンプレートのすべての定義済パーティションの名前を含む複数行のTEXT値。nameがパーティション変数の名前である場合、変数のすべてのパーティションの名前を含む複数行のTEXT値を返します。

注意: パーティション・テンプレートによって定義されるパーティションは、そのすべてが各パーティション変数に必ずしも存在するわけではありません。パーティション変数上でOBJ(PARTNAMES)をコールした場合、変数内に実際に存在するパーティションのみが返されます。

PARTRANGE partitions

TEXT (複数行)

指定したRANGEパーティション・テンプレートまたはRANGEパーティション変数の各partitionsに対するLESS THAN句の値。

partitionsは、確認するパーティションを指定する複数行のテキスト値(パーティション名ごとに1行)です。有効なパーティションではないパーティション名をpartitionsに指定すると、エラーが発生します。

PERIOD

TEXT

指定したオブジェクトがDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションの場合、ディメンションの型に加えて、複数の時間間隔または段階があればそれを示す値。

PHYSMAX

INTEGER

指定したディメンションまたはコンポジット内の位置の最大物理値。

PMTMAINTAIN

TEXT

指定したディメンションに関連付けられているメンテナンス権限の権限条件。ディメンションのメンテナンス権限が存在しない場合、NAを返します。

PMTPERMIT

TEXT

指定したオブジェクトに関連付けられている許可権限の権限条件。オブジェクトの許可権限が存在しない場合、NAを返します。

PMTREAD

TEXT

指定したオブジェクトに関連付けられている読取り権限の権限条件。オブジェクトの読取り権限が存在しない場合、NAを返します。

PMTWRITE

TEXT

指定したオブジェクトに関連付けられている書込み権限の権限条件。オブジェクトの書込み権限が存在しない場合、NAを返します。

PRECISION

INTEGER

指定したNUMBERディメンションまたはNUMBER変数の精度。精度とは、桁数の合計のことです。精度を指定せずに変数を定義した場合、OBJはNAを返します。

PROGRAM

TEXT (複数行)

指定したプログラムのテキスト。

PROPCHANGED

BOOLEAN

指定したオブジェクトのプロパティが、最後にUPDATEを実行した後に変更されているかどうか。

PROPERTY prop-name

WORKSHEET

prop-name(プロパティの名前を指定するテキスト式)で指定した、指定したオブジェクトのプロパティの値。戻り値のデータ型は、実行時に決定されます。指定のプロパティが存在しない場合、NAを返します。(省略形はPRP)

PROPERTYLIST

TEXT (複数行)

指定したオブジェクトに関連付けられているプロパティの名前(各行に1つのプロパティ)。名前は大文字で、ASCII文字の照合順に格納されます。プロパティのないオブジェクトの場合、NAを返します。(省略形はPRPLIST)

PROPERTYTYPE prop-name

TEXT

prop-name(プロパティの名前を指定するテキスト式)で指定した、オブジェクトのプロパティのデータ型。この型は、プロパティを作成したPROPERTY文で使用される式を基に導出されます。可能な戻り値は、BOOLEANTEXTIDDATEDATETIMENUMBERINTEGERLONGINTEGERDECIMALおよびSHORTです。指定のプロパティが存在しない場合か、またはその値がNAである場合、NAを返します。(省略形はPRPTYPE)

PUSHCOUNT

INTEGER

指定したオブジェクトに対してPUSHを実行した回数(つまり、指定したオブジェクトに現在保存されているプッシュされた値の数)。

REFERS [RECURSIVE] text-expression

TEXT (複数行)

text-expressionに指定する語に一致する、指定したコンパイル可能オブジェクト(プログラムなど)の内部にある語。指定する語が見つからない場合、指定するオブジェクトがコンパイル可能なオブジェクトではない場合、またはワークスペースにコンパイル可能なオブジェクトが存在しない場合、REFERSはNAを返します。2つの引数を指定すると、REFERSは指定された語を指定されたオブジェクトのみで検索します。object-nameを省略すると、REFERSは現行のワークスペース内にあるすべてのコンパイル可能なオブジェクトを検索します。

  • text-expressionは、検索する語を表す複数行のTEXT式です。テキスト値の各行は、別の語として検索されます。text-expressionに対して、OBJLISTファンクションの結果である語のリストを指定すると、現行のワークスペース内にあるコンパイル可能なオブジェクトの相互参照を生成できます。

  • RECURSIVEは、Oracle OLAPによって、すべてのレベルでtext-expressionを(コール側ツリーに沿って)検索し、text-expressionのすべての出現箇所のリストを取得することを指定します。

ヒント: この検索では大文字と小文字が区別されないため、REFERSはTEXTVARTextvarを同じ語として処理します。REFERSは、コメントに記述したテキストおよび一重引用符で囲まれたテキストをすべて無視します。

RELATION relation-query

TEXT (複数行)

指定したオブジェクトのデフォルト・リレーション(RELATIONコマンドで指定)。戻り値は、relation-queryに指定する内容によって異なります。relation-queryの構文は次のとおりです。

DEFINELIST | DIMLIST | ACTUAL rel-dimname | SPECIFIED rel-dimname

ここで、

  • DEFINELISTは、ディメンションおよび関連するデフォルト・リレーションのすべての名前をファンクションが返すように指定します。次の例に示すように、名前および関連デフォルト・リレーションが1行につき1つずつ返され、ディメンション名と関連デフォルト・リレーションが交互に表示されます。

                      dimname1
                      relname1
                      dimname2
                      relname2
    
  • DIMLISTは、デフォルト・リレーションが指定されているディメンションのすべての名前をファンクションが返すように指定します。次の例に示すように、1行につき1つのディメンション名が返されます。

                      dimname1
                      dimname2
    
  • ACTUAL dimnameは、object-namerel-dimnameで指定した関連ディメンションとの間のデフォルト・リレーションとしてOracle OLAPが使用するリレーションをファンクションが返すように指定します。

  • SPECIFIED dimnameは、object-nameと、rel-dimnameで指定された関連ディメンションとの間のデフォルト・リレーションとして、RELATIONコマンドで指定されたリレーションの名前をファンクションが返すように指定します。これは、データの入力時にエラーが発生し、アナリティック・ワークスペースにそのようなリレーションが存在しない場合でもRELATIONコマンドで実際に入力した値となります。

RSSIZE

INTEGER

メイン・オブジェクトによって使用されるランダムなサブセットのページ数。

SCALE

INTEGER

NUMBERディメンションまたはNUMBER変数の位取り。正の位取りは、小数点の右側の桁数を示します。負の位取りは、小数点の左側の丸め桁数を示します。位取りを指定せずに変数を定義した場合、OBJはNAを返します。

SEGWIDTH {dim-name|ALL}

TEXT (複数行)

複数のディメンションを持ち、特定のディメンションまたはすべてのディメンションと関連付けられている変数のデフォルトまたはユーザー指定のセグメント・サイズ。各行の先頭はセグメント・サイズ(最大11桁)で、その後に関連付けられているディメンションまたはコンポジットの名前が続きます。ディメンションおよびそのディメンション化オブジェクトを指定した場合、そのディメンションの名前は行に表示されません。この場合はセグメント値のみが返されます。セグメント・サイズがゼロとレポートされたときはデフォルトのセグメント・サイズが有効ですが、CHGDFNを使用して変数のセグメントに対して適切なサイズを設定する必要がある場合があります。

  • dim-nameは、ディメンションの名前を表すテキスト式です。

  • ALLは、すべてのディメンションを指定します。

SESSION

BOOLEAN

指定したオブジェクトがセッション・オブジェクトかどうか。

SHAREMAP

BOOLEAN

指定したオブジェクトが複合ディメンションでディメンション化されている場合、その複合ディメンションが他のオブジェクトと共有されているかどうか。

SPARSE

TEXT (複数行)

指定したオブジェクトの定義に使用されるコンポジット。

SURROGATELIST

TEXT (複数行)

指定したサロゲートまたはディメンションに対して定義されたサロゲート。

TRIGGER [triggering-event}

TEXT (複数行)

triggering-eventキーワードを指定せずにTRIGGERを実行すると、指定したオブジェクトに関連付けられているすべてのtriggering-eventキーワードおよびトリガー・プログラム名が返され、オブジェクトに関連付けられているトリガー・プログラムが存在しない場合は、NAが返されます。triggering-eventキーワードを指定してTRIGGERを実行すると、指定したオブジェクト・イベントに関連付けられているトリガー・プログラムの名前が返されます。

次のいずれかのキーワードを使用してtriggering-eventを指定します。

MAINTAIN
DELETE
PROPERTY
ASSIGN
BEFORE_UPDATE
AFTER_UPDATE

TYPE

TEXT

指定したオブジェクトのオブジェクト型。

UNIQUE

BOOLEAN

指定した連結ディメンションが一意かどうか。その他のディメンションの場合はFALSE、パーティション・テンプレートなどその他のオブジェクト型の場合はNAを返します。

UPDATED

BOOLEAN

アナリティック・ワークスペースがマルチライタ・モードでアタッチされている場合、指定したオブジェクトが更新されているかどうか。その他のアタッチメント・モードの場合はNAを返します。

VALCOUNT

INTEGER

指定した圧縮コンポジットに含まれる圧縮されていない論理値の数。その他のディメンションの場合はすべて、DIMMAXと同じ結果になります。

VALSIZE

INTEGER

指定したオブジェクトの値の格納に使用されるページ数。WIDTHキーワードを使用せずに定義したテキスト・ディメンションおよびテキスト変数に関して、OBJ(VALSIZE)では、テキスト自身の記憶域ではなく、テキストの4バイト・ポインタを含むページのみをカウントします。一時変数に関しては、一時変数の値はアナリティック・ワークスペース内ではなく一時記憶域に格納されるため、OBJ(VALSIZE)は0(ゼロ)の値を返します。

VERSION

INTEGER

アタッチされたバージョンの指定したオブジェクトの現在の状態。(更新してコミットされた変更回数によってこの数値が大きくなります。)

VNF

TEXT

指定したオブジェクトが、ユーザーがVNF(値名書式)を定義したDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションの場合、そのディメンションのVNF。その他の型のオブジェクトの場合、NAを返します。

WIDTH

INTEGER

指定したオブジェクトの各値の記憶域の幅(バイト単位)。

  • ある幅で定義したディメンション化INTEGER変数およびBOOLEAN変数の場合、1を返します。

  • ある幅で定義したディメンション化テキスト変数およびテキスト・ディメンションの場合、定義した幅を表す1から4000の値を返します。

  • それ以外のオブジェクトの場合はすべてNAを返します。


object-name

目的のオブジェクトの名前が含まれるテキスト式。オブジェクトの場所は、アタッチされたワークスペースのいずれかです。テキスト・リテラルとしてobject-nameを指定する場合、一重引用符で囲む必要があります。(Oracle OLAPは名前を自動的に大文字に変換します。)プログラムの名前をobject-nameに指定して引用符を省略すると、Oracle OLAPはそのプログラムを実行し、その戻り値をobject-nameに指定されるオブジェクトの名前として使用します。

LIMITコマンドなど、NAMEディメンションをループする文の一部としてOBJファンクションを使用する場合、object-nameを省略できます。この場合、戻り値のディメンションは現行のワークスペースのNAMEディメンションによってディメンション化されます。


関連項目:

OBJファンクションを使用してデフォルト・リレーションの情報を取得する方法の例については、例10-95「RELATIONコマンドを使用したデフォルト・リレーションの指定」を参照してください。

例8-47 ディメンションのリスト表示

アナリティック・ワークスペースのすべてのディメンションをリスト表示するとします。最初に、LIMITコマンドおよびOBJファンクションを使用して、NAMEディメンションのステータスを制限します。次に、STATUS文を使用して、ディメンションのリストを生成します。OBJ(TYPE)によって返される値は常に大文字なので、それに合せるためにLIMIT文に'dimension'ではなく'DIMENSION'を使用する必要があります。次の文

LIMIT NAME TO OBJ(TYPE) EQ 'DIMENSION'
STATUS NAME

によって、次の出力が生成されます。

The current status of NAME is:
PRODUCT, DISTRICT, DIVISION, LINE, REGION, MARKETLEVEL, MARKET,
MONTH, YEAR, QUARTER

例8-48 リレーションのリスト表示

アナリティック・ワークスペースのすべてのリレーションの定義を参照するとします。LIMITコマンドおよびOBJファンクションを使用して、その名前を選択します。次に、DESCRIBEコマンドを使用して、その定義のリストを生成します。次の文

LIMIT NAME TO OBJ(TYPE) EQ 'RELATION'
DESCRIBE

によって、次の出力が生成されます。

DEFINE REGION.DISTRICT RELATION REGION <DISTRICT>
LD REGION for each DISTRICT
 
DEFINE DIVISION.PRODUCT RELATION DIVISION <PRODUCT>
LD DIVISION for each PRODUCT
 
DEFINE MLV.MARKET RELATION MARKETLEVEL <MARKET>
 
DEFINE MARKET.MARKET RELATION MARKET <MARKET>
LD Self-relation for the Market Dimension 

例8-49 OBJとISBYの組合せ

たとえば、次の文は、NAMEをmonthによってディメンション化されているすべてのオブジェクトに制限します。

LIMIT NAME TO OBJ(ISBY 'month')

ISBYを使用すると、あるディメンションが連結ディメンション、結合ディメンションまたはコンポジットのベース・ディメンションであるかどうかを確認できます。たとえば、ベース・ディメンションがproductおよびdistrictであるproddistという名前の結合ディメンションがあるとします。この場合、次の文はYESを返します。

SHOW OBJ(ISBY 'district' 'proddist')

ISBYを使用すると、あるディメンションがaggmapで使用されているリレーションまたはモデルのディメンションであるかどうかを確認できます。たとえば、myaggmapという名前のaggmapがあり、mydimensionという名前のディメンションがmyaggmap内のいずれかのリレーションまたはモデルに使用されたのかを調べるとします。この場合、次の文を発行します。

SHOW OBJ(ISBY 'mydimension' 'myaggmap')

指定したディメンションがいずれかのレベルでベース・ディメンションになっているのかを調べるには、ISBYとRECURSIVEキーワードを組み合せて使用する必要があります。たとえば、ベース・ディメンションがproddistおよびmonthであるproddist.monという名前の結合ディメンション、およびproddistによってディメンション化されている変数proddist.salesがあるとします。この場合、次のそれぞれの文はNOを返します。

SHOW OBJ(ISBY 'district' 'proddist.mon')
SHOW OBJ(ISBY 'district' 'proddist.sales')

ただし、ISBYとRECURSIVEキーワードを組み合せて使用すると、次の各文はYESを返します。

SHOW OBJ(ISBY RECURSIVE 'district' 'proddist.mon')
SHOW OBJ(ISBY RECURSIVE 'district' 'proddist.sales')

例8-50 変数に関する情報の取得

この例では、OBJファンクションのいくつかのキーワードを使用して変数salesに関する情報を取得する方法について説明します。salesの定義は次のとおりです。

DEFINE sales VARIABLE DECIMAL <month product district>
LD Sales Revenue
  • 次の文

    SHOW OBJ(TYPE 'sales')
    

    によって、次の出力が生成されます。

    VARIABLE
    
  • 次の文

    SHOW OBJ(DATA 'sales')
    

    によって、次の出力が生成されます。

    DECIMAL
    
  • 次の文

    SHOW OBJ(DIMS 'sales')
    

    によって、次の出力が生成されます。

    MONTH
    PRODUCT
    DISTRICT
    
  • 次の文

    SHOW OBJ(ISBY 'product' 'sales')
    

    によって、次の出力が生成されます。

    YES
    
  • 次の文

    SHOW OBJ(LD 'sales')
    

    によって、次の出力が生成されます。

    Sales Revenue
    

例8-51 オブジェクトの名前または型を返す

textvarは、geogという値を持つ変数で、この値はディメンションの名前を表しているとします。語textvarを引用符で囲むかどうかによって、次のOBJファンクションから返される語がVARIABLE(オブジェクトtextvarの型)になるか、DIMENSION(オブジェクトgeogの型)になるかが決まります。

SHOW OBJ(TYPE 'textvar')
VARIABLE

SHOW OBJ(TYPE textvar)
DIMENSION

例8-52 OBJによるオブジェクトの選択

この例では、OBJおよびDESCRIBEを使用して、アナリティック・ワークスペース内のすべてのリレーションの定義を調べます。Oracle OLAP文

LIMIT NAME TO OBJ(TYPE) EQ 'RELATION'
DESCRIBE

によって、次の出力が生成されます。

DEFINE REGION.DISTRICT RELATION REGION <DISTRICT>
LD REGION for each DISTRICT
 
DEFINE DIVISION.PRODUCT RELATION DIVISION <PRODUCT>
LD DIVISION for each PRODUCT
 
DEFINE MLV.MARKET RELATION MARKETLEVEL <MARKET>
 
DEFINE MARKET.MARKET RELATION MARKET <MARKET>
LD Self-relation for the Market Dimension

例8-53 コンパイル済オブジェクトのカウント

次の文は、ワークスペース内のコンパイル可能オブジェクトがコンパイルされる数とされない数をカウントします。それぞれの文は、現行のワークスペースのオブジェクトをループします。OBJファンクションは、コンパイルされた各オブジェクトに対してはYES、コンパイルされなかったコンパイル可能オブジェクトに対してはNO、コンパイル可能でないオブジェクトに対してはNAを返します。NASKIPがYES(デフォルト)である場合、最初の文のCOUNTファンクションがOBJファンクションから返されるYESの値の数をカウントし、2番目の文がOBJから返されるNOの値の数をカウントします。

SHOW COUNT(OBJ(ISCOMPILED))
SHOW COUNT(NOT OBJ(ISCOMPILED))

例8-54 OBJとREFERSの組合せ

次の文は、すべてのアタッチされたワークスペースのオブジェクトへの参照を現行のワークスペース内のコンパイル可能オブジェクトで検索します。この出力には、現行のワークスペースに存在するコンパイルできないオブジェクトも表示されますが、これに対する戻り値はNAです。

REPORT OBJ(REFERS OBJLIST(AW(LIST)))

次の例では、myprogプログラムにvar1var2またはvar3があるかどうかがOBJ(REFERS)によってわかります。OBJ(REFERS)の戻り値は、検出される参照を含む複数行のテキスト値です。var1およびvar3のみがプログラムにある場合、戻り値には1行に1つずつ2つの名前が示されます。次の文

SHOW OBJ(REFERS 'var1\nvar2\nvar3' 'myprog')

によって、次の出力が生成されます。

VAR1
VAR3

検索するプログラムまたは計算式の名前を指定しないと、OBJ(REFERS)は現行のワークスペースのNAMEディメンションのオブジェクトごとに単一行または複数行のテキスト値を返します。プログラムまたは計算式以外のオブジェクトの場合は、NAが返されます。次の文

REPORT OBJ(REFERS 'var1\nvar2\nvar3')

によって、次の出力が生成されます。

               OBJ(REFERS
                 'var1
                  var2
NAME           var3' )
-------------- ----------
PRODUCT        NA
DISTRICT       NA
DIVISION       NA
LINE           NA
QUARTER        NA
REGION         NA
YEAR           NA
MONTH          NA
   ...
MYPROG         VAR1
               VAR3
VAR1           NA
VAR2           NA
VAR3           NA

例8-55 OBJとPROPERTYの組合せ

次の例では、OBJ(PROPERTY)はactual変数のdecplaceプロパティに関する情報を返します。(詳細は、PROPERTYコマンドを参照してください。)小数点以下の桁数を格納するプロパティを作成し、その値を取得してactual変数のレポートを作成します。

次の文

CONSIDER actual
PROPERTY 'decplace' 4
LIMIT month TO FIRST 1
LIMIT division TO 'Camping'
REPORT ACROSS month W 20 DECIMAL OBJ(PROPERTY 'decplace' -
'actual') actual 

によって、次の出力が生成されます。

DIVISION: CAMPING
               -------ACTUAL-------
               -------MONTH--------
LINE                  JAN 95
-------------- --------------------
Revenue                533,362.8800
Cogs                   360,810.6600
Gross.Margin           172,552.2200
Marketing               37,369.5000
Selling                 89,007.3800
R.D                     24,307.5000
Opr.Income              21,867.8400
Taxes                   15,970.3900
Net.Income               5,897.4500

例8-56 OBJとSEGWIDTHの組合せ

次の文は、変数のすべてのディメンションに関するセグメント・サイズの値を変更して表示する方法を示します。

CHGDFN sales SEGWIDTH 150 5000 50
SHOW OBJ(SEGWIDTH ALL 'sales')

これらの文によって生成される出力は次のとおりです。

 150 MONTH
5000 PRODUCT
  50 DISTRICT

次の文は、特定のディメンションのセグメント・サイズの値を取得する方法を示します。

SHOW OBJ(SEGWIDTH 'product' 'sales')

この文によって生成される出力は、次のとおりです。

5000

次の文は、ディメンションに関連付けられているすべての多次元変数またはすべてのリレーションに関してセグメント・サイズのリストを取得する方法を示します。

object-nameを指定しない場合、NAMEディメンションのオブジェクトごとに値を取得するために、SHOWではなく、REPORTを使用する必要があります。

REPORT OBJ(SEGWIDTH 'product')

この文によって生成される出力は、次のとおりです。

NAME           OBJ(SEGWIDTH 'product')
-------------- -----------------------
SALES          5000
SALES.FORECAST 5000
SALES.PLAN     5000
SHARE          5000
UNITS          5000
UNITS.M        0
   ...

次の文は、現行のワークスペースにあるすべてのディメンションのセグメント・サイズのリストを生成する方法を示します。

REPORT OBJ(SEGWIDTH ALL)

この文によって生成される出力は、次のとおりです。

NAME           OBJ(SEGWIDTH ALL)
-------------- -----------------
SALES          150 MONTH
               5000 PRODUCT
               50 DISTRICT
 
SALES.FORECAST 150 MONTH
               5000 PRODUCT
               50 DISTRICT
    ...

OBJLIST

OBJLISTファンクションは、指定した1つ以上のワークスペースに含まれるオブジェクトのリストを表示します。OBJLISTによって返されるワークスペース・オブジェクトのリストでは、重複項目が削除され、昇順にソートされます。このファンクションを使用するときは、指定のワークスペースがアタッチされている必要があります。

結果の複数行のTEXT値は、REFERSキーワードと組み合せたOBJファンクションの引数として使用できます。このように使用すると、現行のワークスペースにあるコンパイル可能なオブジェクト(プログラム、モデルなど)の相互参照リストを生成するときに役立ちます。


注意:

OBJLISTは、NAMEディメンションを制限している場合でも常に、指定のワークスペースに存在するすべてのオブジェクトの名前を返します。

戻り値

TEXT

構文

OBJLIST[(text-expression)]

パラメータ

text-expression

現在アタッチされているワークスペースの1つまたは複数の名前が含まれるテキスト式。各ワークスペース名は、複数行のTEXT値の1行ごとに記述する必要があります。この引数を指定しなかった場合、OBJLISTは現行のワークスペース名を使用します。text-expressionに、アタッチされていないアナリティック・ワークスペースの名前が含まれる場合、OBJLISTは値を返しません。かわりにエラーが通知されます。

例8-57 3つのワークスペースにあるオブジェクトのリスト表示

次の例では、OBJLISTは、指定した3つのワークスペース(mycodemydataおよびmytools)にあるすべてのオブジェクトを含む複数行のTEXT値を返します。次の文

SHOW OBJLIST('mycode\nmydata\nmytools')

によって、次の出力が生成されます。

ACTUAL
ADDFIVE
ADVERTISING
BUDGET
CITYLIST
CITYREPINIT
CITYREPS
    ...
YEAR

例8-58 参照されるオブジェクトのリスト表示

次の例では、OBJ(REFERS)は、mycodemydataおよびmytoolsのワークスペースにあるオブジェクトのうち、myprogプログラムによって参照されるすべてのオブジェクトを含む複数行のTEXT値を返します。次の文

SHOW OBJ(REFERS OBJLIST('mycode\nmydata\nmytools') 'myprog')

によって、次の出力が生成されます。

ACTUAL
BUDGET
 ...
YEAR

OBJORG

OBJORGファンクションは、入力として、Oracleデータ・ディクショナリで定義されているOLAPのキューブまたはキューブ・ディメンション(論理OLAPオブジェクトとも呼ばれる)の名前をとり、そのキューブまたはキューブ・ディメンションが実装される下位レベルの物理的なアナリティック・ワークスペース・オブジェクトに関する情報を返します。

このファンクションは、OLAPのキューブまたはキューブ・ディメンションの名前ではなく、アナリティック・ワークスペース・オブジェクト名を必要とするOLAP DML文で使用してください。

戻り値

アナリティック・ワークスペース・オブジェクト名またはTEXT。アナリティック・ワークスペースに要求された定義情報が格納されているが、フィールドが空の場合はNA

構文

OBJORG(keyword [OWNER owner ] top-level-object-name [ sub-object-name ] )

パラメータ

keyword

有効なキーワードは、指定されたtop-level-objectまたはsub-objectの型によって異なります。詳細は次を参照してください。

表8-3 top-level-objectがキューブである場合のキーワード

キーワード 戻り値

Aggmap

キューブのaggmap。(注意: このキーワードを指定すると、ファンクションは絶対にNAを返しません。)

Composite

キューブに対してコンポジットが使用されている場合はコンポジットの名前、キューブのスパース性タイプがDENSEである場合やキューブがパーティション化されている場合はNA。(キーワードPartitionCompositeも参照してください。)

CubeStorageType

(プロパティ。)キューブのすべてのメジャーに対して使用されているDMLデータ型で、そのような単一のデータ型が存在しない場合(つまり、メジャーごとに異なるデータ型を使用している場合)はNA。

MeasureDim

キーワードCubeStorageTypeに対して返された値がNAではない場合は、キューブのベース・メジャーの参照に使用されるアナリティック・ワークスペース・メジャー・ディメンション。キーワードCubeStorageTypeに対して返された値がNAである場合はNA。

PartitionCompositeVar

キューブのパーティションに対して使用されているコンポジットの名前を含む、PartitionDimによってディメンション化されるテキスト変数で、キューブのスパース性タイプがDENSEである場合やキューブがパーティション化されていない場合はNA。(Compositeキーワードも参照してください。)

PartitionDim

キューブのパーティションの名前を含むアナリティック・ワークスペース・ディメンション。キューブがパーティション化されていない場合はNA。

PartitionRel

各キューブ・パーティションを対応するルート・ディメンション値に関連付ける、PartitionDimによってディメンション化されるリレーション。キューブがパーティション化されていない場合はNA。

PartitionTemplate

各キューブ・パーティションを対応するアナリティック・ワークスペース・ディメンション値に関連付けるパーティション・テンプレート。キューブがパーティション化されていない場合はNA。

SharedMeasureVar

キューブに記憶域タイプが指定されている場合は、キューブのすべてのメジャーを格納する(指定されたタイプの)変数。記憶域タイプが指定されていない場合はNA。

SparseType

(プロパティ。)キューブのスパース性タイプ。有効な値は、COMPRESSED、SPARSE、DENSEまたはSPARSE_GLOBALです。USER_CUBESおよびALL_CUBESビューのSPARSE_TYPE列に対応しています。


表8-4 top-level-objectがキューブおよびsub-objectがメジャーである場合のキーワード

キーワード 戻り値

メジャー

キューブに対してCubeStorageTypeキーワードを指定した際に返された値がNAである場合は、このメジャーを格納する変数。返された値がNAでない場合は、キューブの最上位レベルの変数からこのメジャーを抽出する式。

OverrideAggMap

メジャーがaggmapを持つ場合はメジャーのaggmapで、持たない場合はNAが返されます。(メジャーがaggmapを持たない場合は、キューブのaggmapが使用されることに注意してください。)


表8-5 top-level-objectがキューブおよびsub-objectがディメンション計算モデルである場合のキーワード

キーワード 戻り値

AggFloorValueSet

キューブの一貫した解決の仕様において特定のレベルでの集計が指定されている場合は、そのレベルに属するディメンションの全メンバーを含む値セット。それ以外の場合はNA。

HierValueSet

キューブが集計されるアナリティック・ワークスペース・ディメンションの全階層の名前を含む値セット。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

OperVar

キューブのメジャーのうち少なくとも1つのメジャーにOverrideAggMapが含まれている場合は、OverrideAggMapが存在する各メジャーに対して使用される集計演算子を含む、キューブのメジャー・ディメンションによってディメンション化される変数。それ以外の場合はNA。

PrecomputeValueSet

キューブ編成で事前計算の条件が指定されている場合は、その条件を満たすディメンションのメンバーすべてを含む値セットで、それ以外の場合はNA。(特に、キューブ編成で事前計算の割合が指定されている場合は、NAが返されます。)


表8-6 top-level-objectがキューブ・ディメンションである場合のキーワード

キーワード 戻り値

AggRel

(各階層内の)各ディメンション値を(その階層内の)親ディメンション値に関連付ける、DimおよびHierDimによってディメンション化されるリレーション。(このキーワードを指定すると、ディメンションに階層がない場合でも、ファンクションは絶対にNAを返さないことに注意してください。)

AttributeCubeGIDRel

各ディメンション値を___AW_GID_DIMENSIONのキューブGID(属性列を含む)に関連付ける、Dimによってディメンション化されるリレーション。AttributeCubeGIDRelは、属性列を含むこと以外はCubeGIDRelと同じです。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

CubeGIDRel

各ディメンション値を___AW_GID_DIMENSIONのキューブGIDに関連付ける、Dimによってディメンション化されるリレーション。ディメンションがマテリアライズド・ビュー(MV)を持たない場合、CubeGIDRelは空になります。GIDとキューブGIDの違いは、キューブGIDがすべての階層にわたる点です。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

Dim

アナリティック・ワークスペースのこの論理ディメンションに対応する物理的なディメンション。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

DimOrderVar

ソートに使用される(各言語の各ディメンション値に対する)整数を含む、Dimおよび___AW_ALL_LANGUAGESによってディメンション化される変数。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

FamilyRel

(各階層内の各レベルにおける)各ディメンション値を、(その階層内のそのレベルの)子孫となるディメンション値(存在する場合)に関連付ける、DimLevelDimおよびHierDimによってディメンション化されるリレーション。FamilyRelParentRelに似ていますが、自動的に1つ上のレベルが選択されるのではなく、レベルを指定することができます。FamilyRelValueFamilyRelに似ていますが、レベル階層に使用されます。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

GIDRel

(各階層内の)各ディメンション値を___AW_GID_DIMENSIONのGID(存在する場合)に関連付ける、DimおよびHierDimによってディメンション化されるリレーション。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

HierDim

このディメンションに対するすべての階層を含むディメンション。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

HierLevelValueSet

その階層に属する(LevelDimが持つ)すべてのレベルを含む、HierDimによってディメンション化される(各階層に対する)値セット。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

HierOrderVar

ソートに使用される(各言語の各階層内の各ディメンションの値に対する)整数を含む、DimHierDimおよび___AW_ALL_LANGUAGESによってディメンション化される変数。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

InHierValueSet

(その階層に含まれる)すべてのディメンション値を含む、HierDimによってディメンション化される(各階層に対する)値セット。(このキーワードを指定すると、ディメンションに階層がない場合でも、ファンクションは絶対にNAを返さないことに注意してください。)

LevelDim

このディメンションに対するすべてのレベルを含むディメンション。(このキーワードを指定すると、ディメンションにレベルがない場合でも、ファンクションは絶対にNAを返さないことに注意してください。)

LevelRel

各ディメンション値をLevelListのレベルに関連付ける、Dimによってディメンション化されるリレーション。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

MemberDepthRel

(各階層内の)各ディメンション値を___AW_DEPTH_DIMENSIONの深さ(存在する場合)に関連付ける、DimおよびHierDimによってディメンション化されるリレーション。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

MemberSourceRel

各ディメンション値を___AW_MEMBER_SOURCESの要素に関連付ける、Dimによってディメンション化されるリレーション。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

ParentRel

(各階層内の)各ディメンション値を(その階層内の)親ディメンション値に関連付ける、DimおよびHierDimによってディメンション化されるリレーション。(このキーワードを指定すると、ディメンションに階層がない場合でも、ファンクションは絶対にNAを返さないことに注意してください。)

ValueFamilyRel

(各階層内の各GIDに対する)各ディメンション値を(その階層内の同じGIDを持つ)子孫となるディメンション値(存在する場合)に関連付ける、Dim___AW_GID_DIMENSIONおよびHierDimによってディメンション化されるリレーション。ValueFamilyRelFamilyRelに似ていますが、値階層に使用されます。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)


表8-7 top-level-objectがキューブ・ディメンションおよびsub-objectがベース属性である場合のキーワード

キーワード 戻り値

Attribute

戻り値は、ディメンションが索引付けされているかどうかによって異なります。

  • ディメンションが索引付けされていない場合は、属性のディメンションに対応するDimによってディメンション化され、この(論理)属性を保持するために使用される(物理的な)変数。

  • ディメンションが索引付けされている場合は、各ディメンション値をAttributeDimからの対応する値に関連付ける、属性のディメンションに対応するDimによってディメンション化される(物理的な)リレーション。

(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)

AttributeDim

属性が索引付けされている場合は、すべての属性値を格納するディメンション。それ以外の場合はNA。

HierUniqueKeyRel

属性が一意のキー属性である場合は、(各階層内の)各アナリティック・ワークスペース・ディメンション値をAttributeDimからの対応する値に関連付ける、属性のディメンションに対応するDimおよびHierDimによってディメンション化されるリレーション。それ以外の場合はNA。

UniqueKeyRel

属性が一意のキー属性である場合(つまり、索引付けされている場合)は、各ディメンション値をAttributeDimからの対応する値に関連付ける、属性のディメンションに対応するDimによってディメンション化されるリレーション。それ以外の場合はNA。


表8-8 top-level-objectがキューブ・ディメンションおよびsub-objectがディメンション・レベルである場合のキーワード

キーワード 戻り値

SurrogateDim

このディメンション・レベルに含まれるディメンション値のみを含む、所有するディメンションのDimのサロゲート。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)


表8-9 top-level-objectがキューブ・ディメンションおよびsub-objectがディメンション計算モデルである場合のキーワード

キーワード 戻り値

Model

このディメンションの計算モデルに対応するモデル。(このキーワードを指定すると、ファンクションは絶対にNAを返さないことに注意してください。)


OWNER owner

top-level-objectで識別されるキューブまたはキューブ・ディメンションの所有者。この句を含めない場合、ファンクションは現行の所有者を使用します。

top-level-object

情報を要求するキューブまたはキューブ・ディメンションの名前を指定するテキスト式。

sub-object

情報を要求する論理的なOLAPサブオブジェクト(存在する場合)の名前を指定するテキスト式。有効な値は、top-level-objectがキューブまたはキューブ・ディメンションのどちらであるかによって異なります。

  • top-level-objectがキューブである場合は、メジャーまたはディメンション性の名前を指定できます。

  • top-level-objectがキューブ・ディメンションである場合は、ベース属性、階層、ディメンション・レベルまたはディメンション計算モデルの名前を指定できます。

様々なキーワードを使用したOBJORGの使用例については、このマニュアル内に掲載されている次のOLAP DMLプログラムのサンプルで説明しています。

OBSCURE

OBSCUREファンクションは、単一行のテキスト式をエンコードする2つの機能を備えています。使用する機能によっては、エンコードされた値を元の形式にリストアすることもできます。


注意:

このファンクションは、単純なエンコードを実行します。セキュアな暗号化の使用方法や、その他のOracleのセキュリティ機能については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

戻り値

TEXT


注意:

OBSCUREファンクションの戻り値は常にテキスト・データ型です。ただし、TEXTキーワードを指定しないかぎり、OBSCURE(HASH)およびOBSCURE(HIDE)によって返される実際の値はバイナリです。これらのエンコードされた値をテキストとして処理できるようにする(たとえば、テキスト・ファイルに格納する)には、TEXTキーワードを指定する必要があります。例8-59「テキスト・データの生成」を参照してください。

構文

OBSCURE({HASH|HIDE|UNHIDE} [TEXT] seed-exp input-exp)

パラメータ

HASH

指定したシード式に従って入力テキスト式をエンコードすることを指定します。HASHキーワードの動作は次のとおりです。

  • エンコードした値は元の形式にリストアできません

  • 同じシード式および入力テキストを使用すると、結果は常に同じです

HIDE

指定したシード式に従って入力テキスト式をエンコードすることを指定します。HIDEキーワードの動作は次のとおりです。

  • UNHIDEを指定することにより、エンコードした値を元の形式にデコードできます

  • 同じシード式および入力テキストを使用しても、結果は常に異なります

HIDEキーワードは、エンコードされた形式で値を格納する機能を備えていますが、実際に比較するのはエンコードされていない値です。

UNHIDE

元のシード式と組み合せて指定した場合、HIDEキーワードでエンコードした値が元の形式にデコードされます。「テキストのデコード」を参照してください。

TEXT

TEXTキーワードを指定すると、バイナリ・データがテキストに変換され、これによって戻り値がテキスト・データのみで構成されるようになります。TEXTキーワードを指定しなかった場合、OBSCUREの出力はバイナリ・データになります。「テキストのデコード」および「テキスト・データの生成」を参照してください。

seed-exp

入力テキスト式をエンコードする際にシード値として使用される単一行の大/小文字が区別されるテキスト式。

input-exp

OBSCUREによってエンコードまたはデコードされる単一行の大/小文字が区別されるテキスト式。

使用上の注意

テキストのデコード

OBSCURE(HIDE)とTEXTキーワードを組み合せて使用してテキスト式をエンコードした場合、その式を元の値にデコードするときにもOBSCURE(UNHIDE)とTEXTキーワードを組み合せて指定する必要があります。

例8-59 テキスト・データの生成

次の文は、TEXTキーワードを使用した例です。

DEFINE encoded_text VARIABLE TEXT
DEFINE unencoded_text VARIABLE TEXT
 
unencoded_text = 'max'
encoded_text = OBSCURE(HIDE TEXT 'XXXX' unencoded_text)
SHOW encoded_text

このSHOW文によって生成される出力は、次のとおりです。

c5WF/XfABuY

同じ文でもTEXTキーワードを指定しない場合、SHOW文からバイナリ出力が生成されます。

ORA_HASH

ORA_HASHファンクションは、特定の式のハッシュ値を計算します。このファンクションは、データのサブセットの分析やランダム・サンプルの生成などの操作に役立ちます。

戻り値

NUMBER

構文

ORA_HASH (expr [, max_bucket [, seed_value ] ])

パラメータ

expr

ハッシュ値を計算するデータ。exprによって表されるデータの型や長さに制約はありません。

max_bucket

ファンクションによって返される最大バケット値。0から4294967295の任意の値を指定できます。デフォルトは4294967295です。

seed_value

0から4294967295の値です。デフォルトは0です。同じデータのセットに異なるハッシュ値を生成する場合は、この引数に値を指定します。

PARTITION

PARTITIONファンクションは、値が格納されているパーティションの名前を返します。

戻り値

テキスト

構文

PARTITION (partition_template_values)

パラメータ

partition_template_values

パーティション・テンプレートの1つ以上の値を表す式(たとえば、パーティション・テンプレートやQDRの名前など)。

例8-60 パーティションの名前の取得

次のオブジェクトを定義したとします。

DEFINE time DIMENSION TEXT
DEFINE product DIMENSION TEXT
DEFINE time_parentrel RELATION time <time>
DEFINE partition_sales_by_year PARTITION TEMPLATE <time product> -
PARTITION BY LIST (time)(PARTITION time_2003 VALUES -
('2003','Dec2003', 'Jan2003','31Dec2003','01Dec2003','31Jan2003','01Jan2003')-
<time product> PARTITION time_2002 VALUES -
('2002', 'Dec2002', 'Jan2002', '31Dec2002', '01Dec2002','31Jan2002','01Jan2002')-
 <time product>)
DEFINE sales DECIMAL <partition_sales_by_year<time product>>

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

REPORT DOWN PARTITION(partition_sales_by_year) time product sales
 
PARTITION(PART
ITION_SALES_BY
_YEAR)            TIME     PRODUCT     SALES
-------------- ---------- ---------- ----------
TIME_2003      2003       00001              NA
TIME_2003      Dec2003    00001              NA
TIME_2003      Jan2003    00001              NA
TIME_2003      31Dec2003  00001           14.78
TIME_2003      01Dec2003  00001           15.52
TIME_2003      31Jan2003  00001           13.61
TIME_2003      01Jan2003  00001           10.39
TIME_2003      2003       00002              NA
TIME_2003      Dec2003    00002              NA
TIME_2003      Jan2003    00002              NA
TIME_2003      31Dec2003  00002           16.05
TIME_2003      01Dec2003  00002           12.27
TIME_2003      31Jan2003  00002           10.83
TIME_2003      01Jan2003  00002           11.07
TIME_2002      2002       00001              NA
TIME_2002      Dec2002    00001              NA
TIME_2002      Jan2002    00001              NA
TIME_2002      31Dec2002  00001           18.80
TIME_2002      01Dec2002  00001           13.64
TIME_2002      31Jan2002  00001           12.41
TIME_2002      01Jan2002  00001           16.97
TIME_2002      2002       00002              NA
TIME_2002      Dec2002    00002              NA
TIME_2002      Jan2002    00002              NA
TIME_2002      31Dec2002  00002           17.47
TIME_2002      01Dec2002  00002           16.58
TIME_2002      31Jan2002  00002           18.94
TIME_2002      01Jan2002  00002           18.36
         

次のコードに示すように、PARTITIONファンクションを使用すると、値が格納されているパーティションの名前を取得できます。

SHOW partition_sales_by_year
<2003, 00001>

" Use a QDR to identify the partition of a specific time value
SHOW PARTITION(partition_sales_by_year (time '31Jan2002'))
TIME_2002
 
REPORT DOWN time PARTITION(partition_sales_by_year)
 
               PARTITION(PARTITION_S
               ----ALES_BY_YEAR)----
               -------PRODUCT-------
TIME             00001      00002
-------------- ---------- ----------
2003           TIME_2003  TIME_2003
2002           TIME_2002  TIME_2002
Dec2003        TIME_2003  TIME_2003
Jan2003        TIME_2003  TIME_2003
Dec2002        TIME_2002  TIME_2002
Jan2002        TIME_2002  TIME_2002
31Dec2003      TIME_2003  TIME_2003
01Dec2003      TIME_2003  TIME_2003
31Jan2003      TIME_2003  TIME_2003
01Jan2003      TIME_2003  TIME_2003
31Dec2002      TIME_2002  TIME_2002
01Dec2002      TIME_2002  TIME_2002
31Jan2002      TIME_2002  TIME_2002
01Jan2002      TIME_2002  TIME_2002

PARTITIONCHECK

PARTITIONCHECKファンクションは、aggmapオブジェクトがパーティション・テンプレート・オブジェクトによって指定されるパーティション化と互換性があるかどうかを確認します。

集計は複数のパーティションにまたがって実行できますが、データ・フローは常に一方向である必要があります。データは同じパーティションの内部と外部を双方向に移動できないため、この処理を実行すると、集計時にエラーが発生します。

戻り値

BOOLEAN

指定したパーティション・テンプレートを使用してパーティション化される変数を、指定したaggmapを使用して集計するときにエラーが発生しない場合はYES、エラーが発生する場合はNOです。

構文

PARTITIONCHECK (aggmap partition-template)

パラメータ

aggmap

aggmapオブジェクトの名前を表すテキスト式。

partition-template

集計との互換性を確認するパーティション・テンプレート・オブジェクトの名前を表すテキスト式。

PERCENTAGE

PERCENTAGEファンクションは、数式の値ごとに合計に占めるパーセント値を計算します。

戻り値

DECIMAL

構文

PERCENTAGE(expression [CACHE] [BASEDON dimension-list])

パラメータ

expression

パーセント値が計算される数式。

CACHE

内部動作が若干変更されます。このキーワードは、元のパフォーマンスが非常に遅い場合にのみ指定してください。

BASEDON dimension-list

値ごとのパーセント計算の基準となるexpressionの1つ以上のディメンションのオプション・リスト。ディメンションを指定しなかった場合、PERCENTAGEによるパーセント計算の基準はexpressionのすべてのディメンションのすべての値の合計です。

使用上の注意

PERCENTAGEでのNASKIPの影響

PERCENTAGEはNASKIPオプションの影響を受けます。NASKIPがYESに設定されている場合(デフォルト)、PERCENTAGEはNA値を無視します。NASKIPがNOに設定されている場合、expressionのいずれかのセルの値がNAであると、PERCENTAGEはNAを返します。

例8-61 パーセント値の計算

次の文は、monthおよびdistrictディメンションを制限し、units変数のデータ値および小計をレポートします。

LIMIT month TO 'Jul96' TO 'Sep96'
LIMIT district TO 'Denver'
REPORT SUBTOTALS W 8 units

この文によって生成される出力は、次のとおりです。

DISTRICT: DENVER
               ----------UNITS-----------
               ----------MONTH-----------
PRODUCT         Jul96    Aug96    Sep96
-------------- -------- -------- --------
Tents               608      517      441
Canoes              467      363      411
Racquets          3,006    2,836    2,838
Sportswear        2,395    2,039    2,138
Footwear          1,581    1,532    1,667
-------------- -------- -------- --------
TOTAL DENVER      8,057    7,287    7,495

次の文は、ステータスにあるproductの値ごとに、各monthの値がmonthの合計値に占めるパーセント値をレポートします。productの値ごとにPERCENTAGEが返す値の合計は1です。

REPORT SUBTOTALS W 8 DOWN month PERCENTAGE(units BASEDON month)
DISTRICT: DENVER
         -----------PERCENTAGE(UNITS BASEDON MONTH)------------
         -----------------------PRODUCT------------------------
MONTH      Tents      Canoes    Racquets  Sportswear  Footwear
-------- ---------- ---------- ---------- ---------- ----------
Jul96          0.39       0.38       0.35       0.36       0.33
Aug96          0.33       0.29       0.33       0.31       0.32
Sep96          0.28       0.33       0.33       0.33       0.35
-------- ---------- ---------- ---------- ---------- ----------
TOTAL          1.00       1.00       1.00       1.00       1.00
DENVER

次の文は、ステータスにあるmonthの値ごとに、各productの値がproductの合計値に占めるパーセント値をレポートします。

REPORT SUBTOTALS W 8 PERCENTAGE(units BASEDON product)
DISTRICT: DENVER
               -PERCENTAGE(UNITS BASEDON-
               ---------PRODUCT)---------
               ----------MONTH-----------
PRODUCT         Jul96    Aug96    Sep96
-------------- -------- -------- --------
Tents              0.08     0.07     0.06
Canoes             0.06     0.05     0.05
Racquets           0.37     0.39     0.38
Sportswear         0.30     0.28     0.29
Footwear           0.20     0.21     0.22
-------------- -------- -------- --------
TOTAL DENVER       1.00     1.00     1.00

次の文は、units変数のすべてのディメンションを基準とするパーセント値をレポートします。PERCENTAGEが返すすべての値の合計は1です。

REPORT SUBTOTALS W 8 PERCENTAGE(units)
DISTRICT: DENVER
               ----PERCENTAGE(UNITS)-----
               ----------MONTH-----------
PRODUCT         Jul96    Aug96    Sep96
-------------- -------- -------- --------
Tents              0.03     0.02     0.02
Canoes             0.02     0.02     0.02
Racquets           0.13     0.12     0.12
Sportswear         0.10     0.09     0.09
Footwear           0.07     0.07     0.07
-------------- -------- -------- --------
TOTAL DENVER       0.35     0.32     0.33

productおよびmonthディメンションのすべての値の合計は1.00です。

QUAL

QUALファンクションを使用すると、修飾データ参照(QDR)を明示的に指定できます。QDRの構文があいまいで、Oracle OLAPによる誤った解釈や構文エラーが発生するおそれのある場合に、QUALを使用してください。

QDRは、式の1つ以上のディメンションを単一の値に制限する機能を提供します。QDRは、現行のステータスにない値を一時的に参照する場合に役立ちます。

戻り値

戻り値のデータ型は、修飾される式と同じです。

構文

QUAL(expressiondimname1 dimexp1 [, dimnameN dimexpN])

パラメータ

expression

修飾される式。QUALは、計算、ファンクション・コールまたはアンパサンド置換が含まれる複雑な式を修飾するときに使用します。QUALは、式が単純な変数名である場合にも使用できます。ただし、QUALは単純な式の場合には必要なく、次に示す標準のQDR構文を使用できます。

expression(dimname1 dimexp1 [, dimname2 dimexp2 ...])

dimname

制限されるディメンション。式のディメンションを1つ以上指定できます。各ディメンションは、dimexpとペアになっている必要があります。ディメンションのかわりにディメンション・サロゲートを指定できます。

dimexp

ディメンションを制限する値を表す式。この式は、ディメンションの値、結果がディメンションの値となるテキスト式、結果がディメンションの値の論理位置となる数式、ディメンションのリレーションのいずれでもかまいません。

制限されるディメンションが結合ディメンションである場合、dimexpは山カッコで囲み、そのベース・ディメンションごとの値を含める必要があります。

制限されるディメンションが連結ディメンションである場合、dimnameおよびdimexpは、表8-10「連結ディメンションに関するdimnameおよびdimexpの有効な組合せ」に示す組合せの1つになります。

表8-10 連結ディメンションに関するdimnameおよびdimexpの有効な組合せ

dimname dimexp

連結ディメンションの名前

連結ディメンションの値

連結ディメンションの名前

ベース・ディメンションの名前

連結ディメンションのベース・ディメンションの名前

ベース・ディメンションの値

連結ディメンションのベース・ディメンションの名前

連結ディメンションの名前


例8-62 QUALとMAXの組合せ

次の例は、最初に、データのディメンションを制限することによってデータがどのように表示されるかを示し、次に、QUALを使用した場合はどのように表示されるかを示します。

次のOLAP DML文を発行して、1996年1月から1996年6月までのスポーツ用品部門における売上原価の系列データの表示を制限し、次に毎月の実際原価または予算原価の最大値(MAX(actual,budget))、実際原価、および予算原価について月ごとのレポートを作成します。

LIMIT month TO 'Jan96' TO 'Jun96'
LIMIT line TO 'Cogs'
LIMIT division TO 'Sporting'
REPORT DOWN month W 11 MAX(actual,budget) W 11 actual W 11 budget

この文によって生成されるレポートは、次のとおりです。

DIVISION: SPORTING
               ---------------LINE----------------
               ---------------COGS----------------
               MAX(ACTUAL,
MONTH            BUDGET)     ACTUAL      BUDGET
-------------- ----------- ----------- -----------
Jan96           287,557.87  287,557.87  279,773.01
Feb96           323,981.56  315,298.82  323,981.56
Mar96           326,184.87  326,184.87  302,177.88
Apr96           394,544.27  394,544.27  386,100.82
May96           449,862.25  449,862.25  433,997.89
Jun96           457,347.55  457,347.55  448,042.45

今度は、lineまたはdivisionのステータスを変更せずに、MAX(actual,budget)の同じ数値がどのように表示されるかを確認します。

ALLSTAT
LIMIT month TO 'Jan96' TO 'Jun96'
REPORT HEADING 'For Cogs in Sporting Division' DOWN month -
   W 11 HEADING 'MAX(actual,budget)'-
   QUAL(MAX(actual,budget), line 'Cogs', division 'Sporting')

For Cogs in
Sporting       MAX(actual,
Division         budget)
-------------- -----------
Jan96           287,557.87
Feb96           323,981.56
Mar96           326,184.87
Apr96           394,544.27
May96           449,862.25
Jun96           457,347.55

標準のQDR構文を使用して同じレポートを生成しようとすると、エラーが発生します。

REPORT HEADING 'For Cogs in Sporting Division' DOWN month -
   W 11 HEADING 'MAX(actual,budget)'-
   MAX(actual,budget) (line cogs, division sporting)

次のエラー・メッセージが生成されます。

ERROR: A right parenthesis or an operator is expected after LINE.

例8-63 QUALと連結ディメンションの組合せ

次の例は、QUALファンクションで連結ディメンションの値を制限する2つの方法を示します。reg.dist.ccdim連結ディメンションには、そのベース・ディメンションとしてregionおよびdistrictがあります。rdsales変数は、monthproductおよびreg.dist.ccdimによってディメンション化されています。

LIMIT month TO 'Jan96' TO 'Jun96'
LIMIT product TO 'Tents' 'Canoes'
 
" Limit the concat by specifying one of its component dimensions
REPORT W 30 QUAL(rdsales * 2, month 'Feb96', district 'Boston')

この文によって生成されるレポートは次のとおりです。

                 QUAL(RDSALES * 2, MONTH
PRODUCT          'Feb96', DISTRICT 'Boston')
-------------- ------------------------------
Tents                               69,283.18
Canoes                             164,475.36
 
" Limit the concat by specifying one of its values
REPORT W 30 QUAL(rdsales * 2, month 'Mar96', reg.dist.ccdim  '<district: Boston>')
 
                  QUAL(RDSALES * 2, MONTH
                  'Mar96', REG.DIST.CCDIM
PRODUCT            '<district: Boston>')
-------------- ------------------------------
TENTS                               91,484.42
CANOES                             195,244.56

RANDOM

RANDOMファンクションは、指定した下限と上限の間に不規則に分散する数を生成します。不規則に生成される数は、アプリケーションのテストの作成および繰返しに役立ちます。特に、シミュレーションおよび予測アプリケーションに効果的です。


ヒント:

RANDOMでは、数値を計算するためにRANDOM.SEED.1およびRANDOM.SEED.2オプションの値を使用し、続いて次回のために値を変更します。独自のシードを作成する場合は、両方のオプションの値を奇数に設定します。これにより、生成される数値の不規則性が増大します。

戻り値

DECIMAL

構文

RANDOM([lowbound] [highbound])

パラメータ

lowbound

乱数列の下限を指定する数式。デフォルト値は0です。lowboundNAである場合、RANDOMファンクションの結果はNAです。

highbound

乱数列の上限を指定する数式。デフォルト値は1です。highboundNAである場合、RANDOMファンクションの結果はNAです

例8-64 乱数の生成

この例は、100から200までの間の乱数をproductによってディメンション化されたtestという名前の変数に代入します。

test = RANDOM(100 200)
REPORT test

この文によって生成されるレポートは、次のとおりです。

PRODUCT           TEST
-------------- ----------
Tents              122.93
Canoes             176.69
Racquets           168.32
Sportswear         150.92
Footwear           187.46

RANK

RANKファンクションは、数式の値のランクを計算します。

戻り値

DECIMAL

構文

RANK(expression method [attributes] [BASEDON dimension-list])

attributesは、次のいずれか1つ以上です。

RESET
NAFIRST
NALAST
LIMITSAVE (limit-expression...)
TIEBREAKERS (target-expression...)

パラメータ

expression

ランキングが計算される数式。

method

expressionの中の値のランクを計算するときに使用するメソッド。method引数は、次のキーワードのいずれかです。「メソッド値の結果」も参照してください。

表8-11 RANK計算のためのメソッド

メソッド 説明

MIN

等しい値が複数存在する場合、同一の最小ランクが付けられる。

MAX

等しい値が複数存在する場合、同一の最大ランクが付けられる。

AVERAGE

等しい値が複数存在する場合、同一の平均ランクが付けられる。

PACKED

等しい値が複数存在する場合、同一のランクが付けられるが、結果は連続INTEGER値になる。

UNIQUE

すべての値に一意のランクが付けられる。等しい値が複数存在する場合、ランクは不定。

PERCENTILE

式の中における値の出現の相対度数に応じて、1から100までのランクが付けられる。

DECILE

式の中における値の相対度数に応じて、1から10までのランクが付けられる。

QUARTILE

式の中における値の出現の相対度数に応じて、1から4までのランクが付けられる。


RESET

ループ文内(代入文など)のRANKの計算方法を変更します。

  • RESETを指定しない場合、各グループのメンバーのランクが計算されるのは1回のみで、ランク付けされたこれらの値はキャッシュに格納されます。ループ文の実行が繰り返され、同じ値セットに対してRANKが実行されると、RANKの戻り値にはキャッシュされた値が使用されます。

  • RESETを指定した場合、ループ文内のRANKは実行時に毎回再計算されます。その結果、RANKを含むループ文の実行にかかる時間が大幅に増加します。

ループ文の実行時にいずれかのグループ内のメンバーのランクが変わることがわかっている場合を除き、ループ文内のRANKに対してRESETは指定しません。

NAFIRST

値をランク付けする前に、すべてのNA値が正の最大小数か(10**308)に変換されます。


注意:

NAFIRSTまたはNALISTのいずれかを指定しないかぎり、NAの式値によってNAランクが生成されます。

NALAST

値をランク付けする前に、すべてのNA値が負の最大小数か-(10**308)に変換されます。


注意:

NAFIRSTまたはNALISTのいずれかを指定しないかぎり、NAの式値によってNAランクが生成されます。

LIMITSAVE

RANKの計算時に使用されるディメンションのステータスを指定します。LIMITSAVEはCHGDIMSで指定するのではなく、RANKファンクション内で指定することによって、RANKで新しい結果を計算する必要がある場合に、一度のみステータスを評価できます。

limit-expression

RANKの実行時に、ディメンション・ステータスの判別に使用されるディメンション値。limit-expression引数には、値セット、LIMITファンクションまたはSORTファンクションなど、あらゆる式を指定できます。

TIEBREAKERS

同じランクの値を順序付けする方法を指定します。

tiebreaker-expression

値セット、LIMITファンクションまたはSORTファンクションなど、あらゆる式を指定できます。Oracle OLAPは、指定された順序でtiebreaker-expressionを実行します。各tiebreaker-expressionのディメンションのステータスは、LIMITSAVE句で指定したステータス(指定した場合)か、ディメンションの現在のステータスとなります。


注意:

tiebreaker-expressionの値セットを指定すると、Oracle OLAPは、-(STATRANK)の順序でランク付けされた項目を返します。

BASEDON dimension-list

ランキングに含めるexpressionの1つ以上のディメンションのオプション・リスト。ディメンションを指定しなかった場合、expressionのすべてのディメンションがランキングの基準になります。


注意:

BASEDONディメンションの現在の値がランキング・ステータスにない場合、NAのランクが返されます。

使用上の注意

RANKの動作の監視

OLAP DMLには、RANKファンクションの動作を監視するために使用できるオプション(RANK_CALLS、RANK_CELLSおよびRANK_SORTS)があります。

RANK_CALLS: RANK_CALLSオプションINTEGERの読取り専用のオプションです。このオプションは、Oracle OLAPがRANKファンクションに対して行ったコール数を保持します。

RANK_CELLS: RANK_CELLSオプションINTEGERの読取り専用のオプションです。このオプションはRANKファンクションの実行時に計算された値の数を保持します。

RANK_SORTS: RANK_SORTSオプションは、RANKファンクションの実行によってトリガーされたソートの数を保持する読取り専用のオプションです。

メソッド値の結果

ここでは、値をランク付けする各種メソッドの結果について説明します。これらの結果は、次の文に示すsales2変数(「値のランク付け」を参照)およびgeographyディメンション(G2に制限)に基づいています。

LIMIT geography TO 'G2'
SORT items D sales2
REPORT DOWN geography sales2

この文によって生成される出力は、次のとおりです。

               ------------------------SALES2------------------------
               ------------------------ITEMS-------------------------
GEOGRAPHY        ITEM4      ITEM2      ITEM3      ITEM1      ITEM5
-------------- ---------- ---------- ---------- ---------- ----------
G2                  25.00      20.00      20.00      15.00       7.00

表8-12「各種メソッドによるランク付けの結果」は、次の形式の文によってランクを生成する各種メソッドの結果を示しています。

REPORT DOWN geography RANK(sales2 MIN BASEDON items)

さらに、MINを他のmethodキーワードで置き換えた場合の結果も示します。

表8-12 各種メソッドによるランク付けの結果

メソッド (ITEM4, G2) = 25 (ITEM2, G2) = 20 (ITEM3, G2) = 20 (ITEM1,G2) = 15 (ITEM5,G2) = 7

MIN

   1

 2

 2

 4

 5

MAX

   1

 3

 3

 4

 5

AVERAGE

   1

 2.5

 2.5

 4

 5

PACKED

   1

 2

 2

 3

 4

UNIQUE

   1

 2

 3

 4

 5

PERCENTILE

100

62

62

25

 1

DECILE

 10

 7

 7

 3

 1

QUARTILE

  4

 3

 3

 1

 1


Item2Item3に関してUNIQUEメソッドから返される値は、2の場合と3の場合があります。これは、式の中に複数の等しい値が存在する場合、RANKファンクションによって一意のランクが不規則に割り当てられるためです。

例8-65 値のランク付け

アナリティック・ワークスペースに、geographyディメンション、itemsディメンションおよびsales2変数が含まれているものとします。

DEFINE geography DIMENSION TEXT 
MAINTAIN geography ADD 'g1' 'g2' 'g3'
DEFINE items DIMENSION TEXT
MAINTAIN items ADD 'Item1' 'Item2' 'Item3' 'Item4' 'Item5'
DEFINE sales2 DECIMAL <geography items>

sales2変数には、次のデータ値が含まれているとします。

               -------------SALES2-------------
               -----------GEOGRAPHY------------
ITEMS              g1         g2         g3
-------------- ---------- ---------- ----------
Item1               30.00      15.00      12.00
Item2               10.00      20.00      18.00
Item3               15.00      20.00      24.00
Item4               30.00      25.00      25.00
Item5                  NA       7.00      21.00

次の文は、MINメソッドを使用してitemsディメンションを基準にsales2の値をランク付けした結果のレポートを生成します。

report rank(sales2 min basedon items)

この文によって生成される出力は、次のとおりです。

               -RANK(SALES2 MIN BASEDON ITEMS)-
               -----------GEOGRAPHY------------
ITEMS              g1         g2         g3
-------------- ---------- ---------- ----------
Item1                1.00       4.00       5.00
Item2                4.00       2.00       4.00
Item3                3.00       2.00       2.00
Item4                1.00       1.00       1.00
Item5                  NA       5.00       3.00

次の文は、MINメソッドを使用してgeographyディメンションを基準にsales2の値をランク付けした結果のレポートを生成します。

REPORT RANK(sales2 MIN BASEDON geography)

この文によって生成される出力は、次のとおりです。

               ----RANK(SALES2 MIN BASEDON-----
               -----------GEOGRAPHY)-----------
               -----------GEOGRAPHY------------
ITEMS              g1         g2         g3
-------------- ---------- ---------- ----------
Item1                1.00       2.00       3.00
Item2                3.00       1.00       2.00
Item3                3.00       2.00       1.00
Item4                1.00       2.00       2.00
Item5                  NA       2.00       1.00

次の文は、MINメソッドを使用してsales2のすべてのディメンションを基準にsales2の値をランク付けした結果のレポートを生成します。

REPORT RANK(sales2, MIN)

この文によって生成される出力は、次のとおりです。

               -------RANK(SALES2, MIN)--------
               -----------GEOGRAPHY------------
ITEMS              g1         g2         g3
-------------- ---------- ---------- ----------
Item1                1.00      10.00      12.00
Item2               13.00       7.00       9.00
Item3               10.00       7.00       5.00
Item4                1.00       3.00       3.00
Item5                  NA      14.00       6.00

RAWTOHEX

RAWTOHEXファンクションは、RAW値を16進数の文字列に変換します。


関連項目:

「RAWデータ型」、およびHEXTORAWファンクション。

戻り値

TEXT

構文

RAWTOHEX(raw-exp)

パラメータ

raw-exp

RAW式。

RECNO

RECNOファンクションは、読取り用に開かれているファイルの現行レコード番号をレポートします。Oracle OLAPがファイルの末尾に到達した場合、NAが返されます。

戻り値

INTEGER

構文

RECNO(fileunit)

パラメータ

fileunit

FILEOPENファンクションへの前のコールで読取り用に開かれたファイルに割り当てられるファイル・ユニット番号。

使用上の注意

ファイルのオープン

RECNOファンクションを使用するには、その前に読取り用にファイルを開く必要があります。開いているファイルとファイル・ユニット番号が関連付けられていない場合、またはファイルが書込み用に開かれている場合、RECNOはエラーを返します。

RECNOとFILEGETの組合せ使用

RECNOは、通常、すべてのレコードを読み取るFILEREADまたはFILENEXTと組み合せて使用します。レコードを部分的に読み取るFILEGETファンクションを指定してファイルからデータを読み取ると、RECNOからは、実際のレコードの数ではなく、ファイルからデータを読み取った回数が返されます。

LINENUMオプション

出力の現行の行数を保持するLINENUMオプションも参照してください。

テキスト・ファイル内のレコード

ファイルがテキスト・ファイルである場合、レコードは改行文字で区切られます。ファイルがバイナリ・ファイルである場合、FILESET文を使用して、ファイルのLSIZE属性をレコード長に設定する必要があります。TEXTがデフォルトのファイル・タイプです。

例8-66 RECNOとFILEREADの組合せ使用

次のサンプル・コードのFILEREAD文は、filenameに関連付けられている各レコード番号を追加して、INTEGERディメンションをメンテナンスします。各レコード番号に関連付けられているテキストは、それぞれが変数textvarの値になります。

DEFINE dim1 INTEGER DIMENSION
DEFINE textvar TEXT <dim1>
x = FILEOPEN('filename' R)
FILEREAD x APPEND dim1 = RECNO(x) W 8 TEXTVAR

REGEXP_COUNT

REGEXP_COUNTファンクションは、あるパターンがソース文字列に出現した回数を返します。このファンクションでは、入力キャラクタ・セットによって定義された文字を使用して文字列を評価します。


関連項目:

REGEXP_INSTR

戻り値

一致が見つかった場合はパターンの出現回数を示すINTEGER、それ以外の場合は0。

構文

REGEXP_COUNT (source_char, pattern [, position [, match_param]])

パラメータ

source_char

ファンクションで検索するテキスト式。

pattern

ファンクションで検索するテキスト式。通常は、テキスト・リテラルであり、最大512バイトを含むことができます。patternのデータ型がsource_charのデータ型と異なる場合、このファンクションはpatternsource_charのデータ型に変換します。

このファンクションでは、パターン内の副式のカッコは無視されます。たとえば、パターン'(123(45))'は、'12345'に相当します。また、ピリオドは任意の文字と一致するワイルドカード文字として解釈されます。


関連項目:

patternに指定できる演算子のリストについては、『Oracle Database SQL言語リファレンス』のOracleの正規表現のサポートに関する項を参照してください。

position

正のINTEGERは、source_charの検索を開始する文字を示します。デフォルトは1で、source_charの最初の文字から検索を開始します。パターンの最初の一致文字列を見つけると、最初の一致文字列の後の最初の文字から、2番目の一致文字列の検索を開始します。

match_parameter

ファンクションのデフォルトのマッチング動作を変更するテキスト式。次の表に示す値を1つ以上指定できます。

指定内容
c 大/小文字を区別するマッチング。
i 大/小文字を区別しないマッチング。
m ソース文字列を複数行として処理します。^(キャレット)および$(ドル記号)はそれぞれ、ソース文字列全体の先頭および末尾だけではなく、ソース文字列の任意の位置で任意の行の先頭および末尾として解釈されます。デフォルトでは、ソース文字列を単一行として処理します。
n ピリオド(ワイルドカード文字)と一致する文字に改行文字を含めます。デフォルトでは含まれません。
x 空白文字を無視します。

この引数に複数の矛盾する値を指定した場合、最後に指定した値が使用されます。たとえば、'ic'と指定した場合、大/小文字を区別するマッチングが使用されます。前述以外の文字を指定した場合、エラーが返されます。

このオプションの引数を省略した場合、デフォルトで大/小文字を区別するかどうかはNLS_SORTパラメータの値により決定され、ピリオド(.)は改行文字と一致せず、また、ソース文字列は単一行として処理されます。

REGEXP_INSTR

REGEXP_INSTRファンクションは、文字列から指定したパターンを持つサブストリングを検索し、そのサブストリングの位置を返します。

このファンクションでは、入力キャラクタ・セットによって定義された文字を使用して文字列を評価します。


関連項目:

REGEXP_COUNT, REGEXP_REPLACE、およびREGEXP_SUBSTR

戻り値

パターンが見つかった場合はNUMBER、それ以外の場合は0。

構文

REGEXP_INSTR (source_char, pattern[, position[, occurrence[, return_option[, match_parameter ]]]])

パラメータ

source_char

ファンクションで検索するテキスト式。

pattern

ファンクションで検索するテキスト式。通常は、テキスト・リテラルであり、最大512バイトを含むことができます。ピリオドは任意の文字と一致するワイルドカード文字として解釈されます。

position

source_charの検索を開始する文字を示す正の整数。positionのデフォルト値は1で、source_charの最初の文字から検索を開始します。

occurrence

patternのどの一致文字列を検索するかを示す正の整数。occurrenceのデフォルト値は1で、patternの最初の一致文字列を検索します。

return_option

最初に一致した文字の位置を返す場合(デフォルト)は0(ゼロ)を、一致文字列の次の文字の位置を返す場合は1を指定します。

match_parameter

ファンクションのデフォルトのマッチング動作を変更するテキスト式。次の表に示す値を1つ以上指定できます。

指定内容
c 大/小文字を区別するマッチング。
i 大/小文字を区別しないマッチング。
m ソース文字列を複数行として処理します。^(キャレット)および$(ドル記号)はそれぞれ、ソース文字列全体の先頭および末尾だけではなく、ソース文字列の任意の位置で任意の行の先頭および末尾として解釈されます。デフォルトでは、ソース文字列を単一行として処理します。
n ピリオド(ワイルドカード文字)と一致する文字に改行文字を含めます。デフォルトでは含まれません。
x 空白文字を無視します。

次の文

REGEXP_INSTR('Mississippi', 'i', 1, 3) 

によって、文字列Mississippiから、文字iの3つ目の出現箇所を検索し、検索は最初の文字から開始されます。値8が返されます。

REGEXP_REPLACE

REGEXP_REPLACEファンクションは、文字列から指定したパターンを持つサブストリングを検索し、そのサブストリングを別のサブストリングで置き換えます。


関連項目:

REGEXP_COUNT, REGEXP_INSTR、およびREGEXP_SUBSTR

戻り値

VARCHAR2

構文

REGEXP_REPLACE(source_char, pattern[, replace_string[, position[, occurrence[, match_parameter ]]]])

パラメータ

source_char

ファンクションで検索するテキスト式。

pattern

ファンクションで検索するテキスト式。通常は、テキスト・リテラルであり、最大512バイトを含むことができます。ピリオドは任意の文字と一致するワイルドカード文字として解釈されます。

replace_string

source_charpatternを置き換えるテキスト。

position

source_charの検索を開始する文字を示す正の整数。positionのデフォルト値は1で、source_charの最初の文字から検索を開始します。

occurrence

patternのどの一致文字列を検索するかを示す正の整数。occurrenceのデフォルト値は1で、patternの最初の一致文字列を検索します。

match_parameter

ファンクションのデフォルトのマッチング動作を変更するテキスト式。次の表に示す値を1つ以上指定できます。

指定内容
c 大/小文字を区別するマッチング。
i 大/小文字を区別しないマッチング。
m ソース文字列を複数行として処理します。^(キャレット)および$(ドル記号)はそれぞれ、ソース文字列全体の先頭および末尾だけではなく、ソース文字列の任意の位置で任意の行の先頭および末尾として解釈されます。デフォルトでは、ソース文字列を単一行として処理します。
n ピリオド(ワイルドカード文字)と一致する文字に改行文字を含めます。デフォルトでは含まれません。
x 空白文字を無視します。

次の文

REGEXP_REPLACE('500   Oracle     Parkway,    Redwood  Shores, CA', '( ){2,}', ' ')

によって、余分な空白を削除し、次の文字列を返します。

500 Oracle Parkway, Redwood Shores, CA

REGEXP_SUBSTR

REGEXP_SUBSTRファンクションは、文字列から指定したパターンを持つサブストリングを検索し、そのサブストリングを返します。


関連項目:

REGEXP_COUNT, REGEXP_INSTR、およびREGEXP_REPLACE

戻り値

VARCHAR2 | CLOB

構文

REGEXP_SUBSTR(source_char, pattern[, position[, occurrence[, match_parameter ]]])

パラメータ

source_char

ファンクションで検索するテキスト式。

pattern

ファンクションで検索するテキスト式。通常は、テキスト・リテラルであり、最大512バイトを含むことができます。ピリオドは任意の文字と一致するワイルドカード文字として解釈されます。

position

source_charの検索を開始する文字を示す正の整数。positionのデフォルト値は1で、source_charの最初の文字から検索を開始します。

occurrence

patternのどの一致文字列を検索するかを示す正の整数。occurrenceのデフォルト値は1で、patternの最初の一致文字列を検索します。

match_parameter

ファンクションのデフォルトのマッチング動作を変更するテキスト式。次の表に示す値を1つ以上指定できます。

指定内容
c 大/小文字を区別するマッチング。
i 大/小文字を区別しないマッチング。
m ソース文字列を複数行として処理します。^(キャレット)および$(ドル記号)はそれぞれ、ソース文字列全体の先頭および末尾だけではなく、ソース文字列の任意の位置で任意の行の先頭および末尾として解釈されます。デフォルトでは、ソース文字列を単一行として処理します。
n ピリオド(ワイルドカード文字)と一致する文字に改行文字を含めます。デフォルトでは含まれません。
x 空白文字を無視します。

例8-67 REGEXP_SUBSTRINGを使用した大/小文字を区別するサブストリング検索

次の文

REGEXP_SUBSTR('7 W 96th St, New York, New York', 'new york', 10, 2, 'i') 

によって、10番目の文字から検索を開始し、大/小文字を区別しないで、New Yorkの2番目の出現箇所と一致します。

例8-68 REGEXP_SUBSTRINGを使用した、一重引用符で囲んだ文字列からのサブストリングの取得

次の文

REGEXP_SUBSTR('parsley, sage, rosemary, thyme', ',[^,]+,', 1) 

によって、一重引用符(')で囲まれた最初のサブストリングに一致し、値「, sage」を返します。

REM

REMファンクションは、ある数式を別の数式で除算した後に剰余を返します。

戻り値

DECIMAL

構文

REM(expression1 expression2)

パラメータ

expression

REMは、expression1expression2で除算した剰余を返します。

例8-69 剰余の計算

この例は、REMを使用して、145で除算後の剰余を求める方法を示します。次の文

SHOW REM(14 5)

によって、次の結果が生成されます。

4.00

REMAINDER

REMAINDERファンクションは、ある数値を別の数値で除算したときの剰余を返します。

戻り値

数値。Oracle OLAPでは、最も大きな数値の引数が優先され、残りの引数はその引数と同じデータ型に暗黙的に変換されて、そのデータ型で戻り値が返されます。

構文

REMAINDER (dividend, divisor)

パラメータ

dividend

除算の対象とする数式(またはOracle OLAPで暗黙的に数式へと変換できる式)。

divisor

除数とする数式(またはOracle OLAPで暗黙的に数式へと変換できる式)。

例8-70 除算後の剰余の確認

SHOW REMAINDER(18,7)
-3.00

REMBYTES

REMBYTESファンクションは、テキスト式から1バイト以上を削除し、残りの値を返します。

戻り値

TEXT

構文

REMBYTES(text-expression start [length])

パラメータ

text-expression

REMBYTESがバイトを削除するTEXT式。text-expressionから削除される文字に埋込みの改行が含まれる場合、これらの改行も削除されます。その他の改行は維持されます。削除された改行の数は、削除された文字数の合計にはカウントされません。


ヒント:

NTEXT値に対してこのファンクションを使用する必要がある場合、CONVERTまたはTO_CHARファンクションを使用してNTEXT値をTEXTに変換します。

start

文字の削除を開始する文字位置を表すINTEGERtext-expressionの最初の文字の位置は1です。startの値がtext-expressionの長さより大きい場合、REMBYTESは単にtext-expressionを返します。

length

削除される文字の数を表すINTEGERlengthを指定しなかった場合、startの位置にある文字のみが削除されます。

例8-71 REMBYTESを使用したサブストリングの削除

この例は、サブストリングthereをテキスト値hellotherejoeから削除する方法を示します。

次の文

SHOW REMBYTES('hellotherejoe', 6, 5)

によって、次の出力が生成されます。

hellojoe

REMCHARS

REMCHARSファンクションは、テキスト式から1文字以上を削除し、残りの値を返します。


ヒント:

マルチバイト・キャラクタ・セットを使用している場合、REMCHARSファンクションのかわりにREMBYTESファンクションを使用できます。

戻り値

TEXTまたはNTEXT

構文

REMCHARS(text-expression start [length])

パラメータ

text-expression

REMCHARSが文字を削除する式。text-expressionから削除される文字に埋込みの改行が含まれる場合、これらの改行も削除されます。その他の改行は維持されます。削除された改行の数は、削除された文字数の合計にはカウントされません。

TEXT式を指定すると、戻り値はTEXTです。NTEXT式を指定すると、戻り値はNTEXTです。

start

文字の削除を開始する文字位置を表すINTEGERtext-expressionの最初の文字の位置は1です。startの値がtext-expressionの長さより大きい場合、REMCHARSは単にtext-expressionを返します。

length

削除される文字の数を表すINTEGERlengthを指定しなかった場合、startの位置にある文字のみが削除されます。

例8-72 REMCHARSを使用したサブストリングの削除

この例は、サブストリングthereをテキスト値hellotherejoeから削除する方法を示します。

SHOW REMCHARS('hellotherejoe', 6, 5)
hellojoe

例8-73 1種類の文字の削除

この例は、文字tをテキスト値hellotherejoeから削除する方法を示します。

SHOW REMCHARS('hellotherejoe', 6)
helloherejoe 

REMCOLS

REMCOLSファンクションは、複数行のTEXT値の各行から指定の列を削除します。このファンクションは、残りの列のみが含まれる複数行のテキスト値を返します。

列は、複数行のTEXT値の各行における文字位置です。各行の最初の文字は列1であり、2番目の文字は列2です(以降同様)。

戻り値

TEXTまたはNTEXT

空の行がある場合でも、REMCOLSは常にtext-expressionと同じ行数のTEXT値を返します。

構文

REMCOLS(text-expression start [length])

パラメータ

text-expression

指定した列が削除されるテキスト式。text-expressionが複数行のTEXT値である場合、その各行から指定した列の文字が削除されます。

TEXT式を指定すると、戻り値はTEXTです。NTEXT式を指定すると、戻り値はNTEXTです。

start

列の削除を開始する列の位置を表す1から32,767までのINTEGERtext-expressionの各行における最初の文字の列位置は1です。text expressionの特定の行にある最後の文字よりも右側にくる開始列を指定すると、戻り値の対応する行はその行と同一です。

length

削除される列の数を表すINTEGERlengthを指定しなかった場合、REMCOLSは先頭の列のみを削除します。text expressionの特定の行における開始位置に続く文字数を超える長さを指定すると、戻り値の対応する行には開始列より前にある文字が含まれます。

例8-74 テキスト列の削除

次の例では、CITYLISTの各行から2列目を先頭に4列が削除されます。

DEFINE citylist VARIABLE TEXT
CITYLIST = 'Boston\nHouston\nChicago\nDenver'

次の文

SHOW citylist

によって、次の出力が生成されます。

Boston
Houston
Chicago
Denver

次の文

SHOW REMCOLS(citylist 2 4)

によって、次の出力が生成されます。

Bn
Hon
Cgo
Dr 

REMLINES

REMLINESファンクションは、複数行のTEXT式から1行以上を削除し、残りの値を返します。

戻り値

TEXTまたはNTEXT

構文

REMLINES(text-expression start [length])

パラメータ

text-expression

REMLINESが1行以上を削除する値の複数行のテキスト式。TEXT式を指定すると、戻り値はTEXTです。NTEXT式を指定すると、戻り値はNTEXTです。

start

行の削除を開始する行番号を表すINTEGERtext-expressionの最初の行の位置は 1です。

length

抽出する行数を表すINTEGERlengthを指定しなかった場合、startの行のみが削除されます。

例8-75 テキスト行の削除

この例は、次の値を持つmktglistという変数の複数行のテキスト値から2番目の行を削除する方法を示します。

Salespeople
Products
Services

次の文

SHOW REMLINES(mktglist, 2)

によって、次の出力が生成されます。

Salespeople
Services 

REPLACE

REPLACEファンクションは、指定した文字列が別の文字列に置き換えられるたびに指定した文字を返すか、または指定した文字列が出現するとすべてを削除します。

REPLACEでは、TRANSLATEファンクションの機能に関連した機能が提供されます。TRANSLATEは、単一の文字を1つずつ置き換える機能を備えています。REPLACEは、ある文字列を別の文字列に置き換える機能や文字列を削除する機能を備えています。


関連項目:

詳細は、『Oracle Database SQL言語リファレンス』のREPLACEファンクションについての説明を参照してください。

戻り値

charと同じデータ型

構文

REPLACE ( char, search_string [, replacement_string ])

パラメータ

char

置換時に返す文字を表すテキスト式。

search_string

置換え対象の文字列を表すテキスト式。NAを指定すると、ファンクションはcharを返します。

replacement_string

search_stringの置換後の文字列を表すテキスト式。この引数の値を指定しない場合やNAの値を指定した場合、出現したsearch_stringはすべて削除されます。

REPLBYTES

REPLBYTESファンクションは、テキスト式の1バイト以上を置換します。


ヒント:

シングルバイト・キャラクタ・セットを使用している場合、REPLBYTESファンクションではなくREPLCHARSファンクションを使用できます。また、テキスト値に指定の文字列が1つ以上存在する場合に、その文字列を別の文字列に変更するには、CHANGECHARSファンクションを使用します。

戻り値

TEXT

構文

REPLBYTES(text-expression replacement [start])

パラメータ

text-expression

REPLBYTESがバイトを置換するTEXT式。text-expressionから置換されるバイトに埋込みの改行が含まれる場合、これらの改行は削除されます。その他の改行は維持されます。削除された改行の数は、置換されたバイト数の合計にはカウントされません。置換された式の改行も、REPLBYTESの出力に保持されますが、カウントの対象にはなりません。


ヒント:

NTEXT値に対してこのファンクションを使用する必要がある場合、CONVERTまたはTO_CHARファンクションを使用してNTEXT値をTEXTに変換します。

replacement

text-expressionの既存のバイトを置換する1バイト以上が含まれるテキスト式。

start

バイトの置換を開始するバイト位置を表すINTEGERtext-expressionの最初のバイト位置は1です。この引数を省略した場合、REPLBYTESは最初のバイトから開始します。REPLBYTESは、replacementによって指定されるバイトに対して必要なバイト数のtext-expressionを置換します。startの値がtext-expressionの長さより大きい場合、REPLBYTESは単にtext-expressionを返します。

例8-76 バイトとしてのテキストの置換

この例は、テキスト値Hello there, Joeの一部を置換する方法を示します。

次の文

SHOW REPLBYTES('Hello there, Joe', 'Jane', 14)

によって、次の出力が生成されます。

Hello there, Jane

例8-77 REPLBYTESによる改行の処理

この例は、REPLBYTESによって改行が保持されて無視されることを示します。

var1 = JOINLINES('Hello' 'there' 'Joe')
var2 = JOINLINES('Hi' 'Jane')

次の文

SHOW REPLBYTES(var1 var2)

によって、次の出力が生成されます。

Hi
Janehere
Joe

REPLBYTESは、var1の先頭の6バイト(HellothereJoeHellot)をvar2の6バイト(HiJane)に置換しました。var2Hiおよびvar1thereの後の改行は保持されます。

var1の13バイトをすべて置換するには、置換後のバイトに13バイト指定する必要があります。たとえば、Janeの後に7つの空白を追加します。

var2 = JOINLINES('Hi' 'Jane       ')

次の文

SHOW REPLBYTES(var1 var2)

によって、次の出力が生成されます。

Hi
Jane 

REPLCHARS

REPLCHARSファンクションは、テキスト式の1文字以上を置換します。


ヒント:

マルチバイト・キャラクタ・セットを使用している場合、REPLCHARSファンクションのかわりにREPLBYTESファンクションを使用できます。また、CHANGECHARSファンクションを使用すると、テキスト値に指定の文字列が1つ以上存在する場合、その文字列を別の文字列に変更できます。

戻り値

TEXTまたはNTEXT

このファンクションでは、TEXT値とNTEXT値を引数として使用できます。戻り値のデータ型は、引数として指定する値のデータ型によって次のように異なります。

  • すべての引数がTEXT値である場合、戻り値はTEXTです。

  • すべての引数がNTEXT値である場合、戻り値はNTEXTです。

  • 引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

構文

REPLCHARS(text-expression characters [start])

パラメータ

text-expression

置換される文字が含まれる式。text-expressionから置換される文字に埋込みの改行が含まれる場合、これらの改行は削除されます。その他の改行は維持されます。削除された改行の数は、置換された文字数の合計にはカウントされません。置換された式の改行も、REPLCHARSの出力には保持されますが、カウントの対象にはなりません。

characters

text-expressionの既存の文字を置換する1文字以上の文字が含まれるテキスト式。

start

文字の置換を開始する文字位置を表すINTEGERtext-expressionの最初の文字の位置は1です。この引数を省略した場合、REPLCHARSは最初の文字から開始します。REPLCHARSは、指定した新規のcharactersに対して必要な文字数のtext-expressionを置換します。startの値がtext-expressionの長さより大きい場合、REPLCHARSは単にtext-expressionを返します。

例8-78 テキスト文字の置換

この例は、テキスト値Hello there, Joeの一部を置換する方法を示します。

次の文

SHOW REPLCHARS('Hello there, Joe', 'Jane', 14)

によって、次の出力が生成されます。

Hello there, Jane

例8-79 REPLCHARSによる改行の処理

この例は、REPLCHARSによって改行が保持されて無視されることを示します。

var1 = JOINLINES('Hello' 'there' 'Joe')
var2 = JOINLINES('Hi' 'Jane')

次の文

show REPLCHARS(var1 var2)

によって、次の出力が生成されます。

Hi
Janehere
Joe

REPLCHARSは、var1の先頭の6文字(HellothereJoeHellot)をvar2の6文字(HiJane)に置換しました。var2Hiおよびvar1thereの後の改行は保持されます。

var1の13文字をすべて置換するには、置換後の文字を13文字に指定する必要があります。たとえば、Janeの後に7つの空白を追加します。

var2 = JOINLINES('Hi' 'Jane       ')

次の文

SHOW REPLCHARS(var1 var2)

によって、次の出力が生成されます。

Hi
Jane 

REPLCOLS

REPLCOLSファンクションは、複数行のTEXT値に存在する文字列の一部またはすべてを別の文字列に置換します。このファンクションの戻り値は、結果として得られる行で構成される複数行のTEXT値です。

列は、複数行のTEXT値の各行における文字位置です。各行の最初の文字は列1であり、2番目の文字は列2です(以降同様)。

戻り値

TEXTまたはNTEXT

このファンクションでは、TEXT値とNTEXT値を引数として使用できます。戻り値のデータ型は、引数として指定する値のデータ型によって次のように異なります。

  • すべての引数がTEXT値である場合、戻り値はTEXTです。

  • すべての引数がNTEXT値である場合、戻り値はNTEXTです。

  • 引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

戻り値の行数は、text-expressionの行数と常に同じです。columnsテキスト式の行数が少ない場合、戻り値の後続の各行で式の最後の行がREPLCOLSによって繰り返されます。

構文

REPLCOLS(text-expression columns [start])

パラメータ

text-expression

置換される1列以上を含むテキスト式。

columns

1行以上を含むテキスト式。この式は、text-expressionの一部またはすべての列を置換する列を指定します。

start

置換を開始する列の位置を表す1から32,767までのINTEGERtext-expressionの各行における最初の文字の列位置は1です。startを指定しなかった場合、置換は列1から開始されます。text-expressionの特定の行にある最後の文字よりも右側にくる開始列を指定すると、戻り値の対応する行にはその間の列を埋める空白が入ります。例8-80「列の結合および位置合せ」を参照してください。

例8-80 列の結合および位置合せ

次の例は、citylistの各行とcityrepsの各行を結合し、両方の値の位置を合せます。置換は列11から開始します。REPLCOLSのかわりにJOINCOLSを使用した場合、cityrepsリストの位置は合いません。

次の文

SHOW citylist

によって、次の出力が生成されます。

Boston
Houston
Chicago
Denver

次の文

SHOW cityreps

によって、次の出力が生成されます。

Brady
Lopez
Alfonso
Cody

次の文

SHOW REPLCOLS(citylist cityreps 11)

によって、次の出力が生成されます。

Boston    Brady
Houston   Lopez
Chicago   Alfonso
Denver    Cody 

REPLLINES

REPLLINESファンクションは、複数行のTEXT式の1行以上を置換します。

戻り値

TEXTまたはNTEXT

このファンクションでは、TEXT値とNTEXT値を引数として使用できます。戻り値のデータ型は、引数として指定する値のデータ型によって異なります。すべての引数がTEXT値である場合、戻り値はTEXTです。すべての引数がNTEXT値である場合、戻り値はNTEXTです。引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

構文

REPLLINES(text-expression lines [start])

パラメータ

text-expression

置換される1行以上を含む複数行のテキスト式。

lines

text-expressionの既存の行を置換する1行以上の行を含むテキスト式。

start

置換を開始する行番号を表すINTEGERtext-expressionの最初の行の位置は1です。この引数を省略すると、REPLLINESは1行目から開始します。REPLLINESは、指定した新規のlinesに対して必要な行数のtext-expressionを置換します。

例8-81 テキスト行の置換

この例は、次の値を持つmktglistという名前の変数における複数行のTEXT値の2番目の行を置換する方法を示します。最初に、文SHOW mktglistが次の出力を生成するとします。

Salespeople
Products
Services

REPLLINESを使用すると、Productsに対して異なる値を表示できます。

SHOW REPLLINES(mktglist, 'advertising', 2)
Salespeople
Advertising
Services 

RESERVED

RESERVEDファンクションは、OLAP DMLパーサーで定義されている予約済の語をすべて一覧表示したり、指定する語がOLAP DMLパーサーで定義済かどうかを示したりできます。「その他の予約語」で説明するように、他にも予約されている語があります。

戻り値

複数行のテキスト式またはBOOLEAN。引数を指定したかどうかによって決まります。

構文

RESERVED [(word-expression)]

パラメータ

word-expression

OLAP DMLで予約済かどうかわからない語を表すテキスト式。word-expressionを指定すると、RESERVEDファンクションは、指定した語がOLAP DMLで予約されているかどうかを示すBOOLEAN値を返します。引数を指定しない場合は、OLAP DMLのすべての予約語を表すTEXT値(各行に1語)を返します。

使用上の注意

その他の予約語

RESERVEDファンクションは、OLAP DMLパーサーに定義済の語のみを認識します。RESERVEDファンクションは、EXPRESSアナリティック・ワークスペースにあるオプション・オブジェクトやその他のオブジェクトの名前を認識しません。これらのオブジェクトの名前もOracle OLAPで予約されていますが、RESERVEDファンクションでは認識されません。これらのオブジェクトの名前を確認するには、次の文を実行します。

AW ATTACH EXPRESS
LISTNAMES 

予約済のNA

引数に対してNA(該当しない語)を指定すると、RESERVEDファンクションはNOを返します。NA自体を指定すると、RESERVEDファンクションはYESを返します。

大文字と小文字の区別

RESERVEDファンクションが返す予約語のリストには、すべてが大文字の語と大文字と小文字が混在している語があります。すべてが大文字の語は、その語が1語として予約されています。大文字と小文字が混在している語は、大文字で表示されている部分まで短縮できます。その同じ大文字の部分を含む他の語も予約されています。たとえば、RESERVEDで返されるリストにCODEVERsionという語があります。この語では、codevercodeversicodeversiocodeversionのすべてが予約されています。ただし、codeveは予約されていません。

例8-82 予約語かどうかの判別

次の例は、ある語がOLAP DMLで予約されているかどうかを判別するRESERVEDファンクションの使用方法を示します。

ファンクション・コール

SHOW RESERVED('update')

戻り値

YES

ROUND

ROUNDファンクションは、指定する構文に従って数値操作または日時操作を実行します。ROUNDファンクションの構文は操作のタイプごとに異なるため、次の2項目に分けて説明します。

ROUND(日時)

ROUND(日時)ファンクションは、書式モデルfmtで指定した単位に丸められた日付を返します。戻される値は、日付に異なる日時データ型を指定した場合でも、常にDATETIMEデータ型です。

戻り値

DATETIME

構文

ROUND(datetime_exp, [format ])

パラメータ

datetime-exp

日時の数値を指定する日時式。

format

次の表に示す書式モデルを指定するテキスト式。書式モデルは、日時の数字を丸める方法を示します。

この引数を省略した場合、datetime-expは最も近い日付に丸められます。

表8-13は、ROUNDおよびTRUNC日付ファンクションで使用できる書式モデルと、日付の丸めや切捨ての対象となる単位をまとめたものです。デフォルトのモデル「DD」では、時間が午前0時である日にちの形に丸められた、または切り捨てられた日付が返されます。

表8-13 ROUNDおよびTRUNC日付ファンクションの日時書式テンプレート

書式モデル 丸め/切捨て対象の単位
CC
SCC

4桁の年の最初の2桁より1大きい数

SYYYY
YYYY
YEAR
SYEAR
YYY
YY
Y

年(7月1日で切上げ)

IYYY
IY
IY
I

ISO年

Q

四半期(四半期の2番目の月の16日で切上げ)

MONTH
MON
MM
RM

月(16日で切上げ)

WW

年の最初の日と同じ曜日

IW

ISO年の最初の日と同じ曜日

W

月の最初の日と同じ曜日

DDD
DD
J

DAY
DY
D

週の開始日

HH
HH12
HH24

MI


書式モデルDAY、DYおよびDで使用される週の開始日は、初期化パラメータNLS_TERRITORYで暗黙的に指定されます。

例8-83 最も近い年への丸め

NLS_DATE_FORMATオプションの値がDD-MON-YYの場合、次の文を発行します。

SHOW ROUND (TO_DATE('27-OCT-92'),'year')

次の値が返されます。

01-JAN-93

例8-84 別の書式への丸め

アナリティック・ワークスペースに、次のような定義と値を持つmydatetimeという名前の変数があるとします。

DEFINE MYDATETIME VARIABLE DATETIME
DATE_FORMAT = 'MON-RRRR-DD-HH24'
mydatetime = CURRENT_TIMESTAMP
SHOW mydatetime
= 'AUG-2006-07-13'

次のそれぞれのSHOW文が示すように、指定する値の日付書式によって、ROUNDファンクションからmydatetime変数に返される値は異なります。

SHOW ROUND(mydatetime, 'RRRR')
01-JAN-07
 
SHOW ROUND(mydatetime, 'MON')
01-AUG-06
 
SHOW ROUND(mydatetime, 'DD')
08-AUG-06
 
SHOW ROUND(mydatetime)
= 'AUG-2006-08-00'

ROUND (数値)

数値を引数として指定すると、ROUNDファンクションは指定する2番目の数字に最も近い倍数に丸めた数字、または2番目の数字が示す小数桁数で丸めた数字を返します。

戻り値

DECIMAL(丸めのタイプがMULTIPLEの場合)

NUMBER(丸めのタイプがDECIMALの場合)

構文

ROUND(number_exp roundvalue) [MULTIPLE|DECIMAL]

パラメータ

number_exp

丸める数字を特定する式。

roundvalue

丸めの基礎を指定する値。

丸めのタイプがMULTIPLEの場合:

  • number_exproundvalueの最も近い倍数に丸められます。

  • roundvalueINTEGERまたは小数です。

 

丸めのタイプがDECIMALの場合:

  • roundvalueで小数点の右側または左側の桁数を指定し、number_expを丸めます。roundvalueが正の場合、小数点の右側の数字を指定した桁数で丸めます。負の場合、小数点の左側の数字を指定した桁数で丸めます。

  • roundvalueを省略すると、number_expは小数桁数0の整数に丸められます。

  • roundvalueINTEGERである必要があります。

MULTIPLE

(デフォルト)roundvalueの最も近い倍数に丸めることを指定します。

DECIMAL

roundvalueで指定した小数桁で丸めることを指定します。

使用上の注意

ROUNDを使用した式の比較

DECIMAL値は、使用する有効桁数のレベルで表示されますが、それとはわずかに異なる形式で格納される場合があります。このわずかな違いは、2つの式を比較する際に予期しない結果になることがあります。この問題は、計算の多くがINTEGER値をDECIMAL値に変換してから実行されるため、計算を伴うINTEGER式を比較する場合にも生じます。通常のレポートでは、表示される小数点以下は2桁または3桁のみであるため、この相違に気づきません。

たとえば、2つの数字をEQまたはNE演算子で比較するとき、最後の有効数字の相違を無視することが必要な場合が多くあります。expense100.00000001として格納されていた場合、最後の有効数字は単純な比較では無視されません。

次の文

SHOW expense EQ 100.00

によって、次の結果が生成されます。

NO

これに対し、EQまたはNEに意味のない最後の有効数字を無視させるようにROUNDを使用できます。

SHOW ROUND(expense, .01) EQ 100.00

この文によって生成される出力は、次のとおりです。

YES

ABSを使用した式の比較

アプリケーションで計算の速度を重視する場合は、EQまたはNEとともにROUNDを使用するかわりに、ABSファンクションをLTとともに使用して数字を比較することもできます。

例8-85 異なる倍数への丸め

次の文は、式2/3を異なる倍数に丸めた結果を示します。DECIMALS設定の値は2です。

次の文

SHOW ROUND(2/3, .01)

によって、次の結果が生成されます。

0.67

次の文

SHOW ROUND(2/3, .1)

によって、次の結果が生成されます。

0.70

次の文

SHOW ROUND(2/3, .5)

によって、次の結果が生成されます。

0.50

例8-86 最も近い千の単位への丸め

次の例は、最も近い千の単位に丸めたsalesを示します。

LIMIT month TO FIRST 4
LIMIT district TO FIRST 1
REPORT ROUND(sales 1000)

これらの文によって生成される出力は次のとおりです。

DISTRICT: BOSTON
               -------------ROUND(SALES 1000)-------------
               -------------------MONTH-------------------
PRODUCT          Jan95      Feb95      Mar95      Apr95
-------------- ---------- ---------- ---------- ----------
Tents           32,000.00  33,000.00  43,000.00  58,000.00
Canoes          66,000.00  76,000.00  92,000.00 126,000.00
Racquets        52,000.00  57,000.00  59,000.00  69,000.00
Sportswear      53,000.00  59,000.00  63,000.00  68,000.00
Footwear        91,000.00  87,000.00 100,000.00 108,000.00

例8-87 最も近い12の倍数への丸め

12の最も近い倍数に丸めたunitsを表示するには、次の文を使用します。

LIMIT month TO FIRST 4
LIMIT district TO FIRST 1
REPORT DECIMAL 0 ROUND(units 12)

これらの文によって生成される出力は次のとおりです。

DISTRICT: BOSTON
               --------------ROUND(UNITS 12)--------------
               -------------------MONTH-------------------
PRODUCT          Jan95      Feb95      Mar95      Apr95
-------------- ---------- ---------- ---------- ----------
Tents                 204        204        264        360
Canoes                348        396        480        660
Racquets              996      1,080      1,116      1,308
Sportswear          1,092      1,212      1,296      1,404
Footwear            2,532      2,400      2,772      2,976

例8-88 小数桁での丸め

次の文は、15.193を異なる小数桁で丸めた結果を示します。

次の文

ROUND(15.193, 1)

生成される結果は次のとおりです。

15.2

次の文

ROUND(15.193, -1)

生成される結果は次のとおりです。

20
 

ROWファンクション

ROWファンクションは、単一の行のセルに一連のデータを連続して返します。このファンクションは、ROWコマンドと同じですが、現行の出力ファイルにテキストを送信するのではなく、テキスト値を返す点が異なります。

ROWファンクションは、ROWコマンドと同様に、返されるデータおよびデータの出力書式(オプション)を指定する一連の列説明で構成されます。ROWファンクションでは、SHOWまたはREPORTコマンドによって戻り値のテキスト変数への代入や現行の出力ファイルへの送信ができる他、文字操作ファンクションの引数にしてさらに処理できます。


関連項目:

ROWコマンド

戻り値

TEXT

構文

ROW([attribs] [ACROSS dimension [limit-clause]:] {exp1|SKIP} -

     [[attribs] [ACROSS dimension [limit-clause]:] {expn|SKIP}])

引数の詳細は、ROWコマンドを参照してください。

引数を指定しないROWファンクションは、空白行を返します。

使用上の注意

ROWコマンドに関する注意は、ROWファンクションにも当てはまります。

例8-89 出力のテキスト変数への代入

次の代入文は、出力の3行をテキスト変数textvarに代入します。

textvar = ROW(OVER '-' UNDER '=' 'This is a Row.')
SHOW textvar

これらの文によって生成される出力は次のとおりです。

--------------
This is a Row.
==============

例8-90 複数行の出力の生成

プログラムでROWファンクションとJOINLINESを使用して、ディメンション値のグループをループ処理して複数行のデータをテキスト変数に代入できます。次のプログラムの抜粋でSHOWコマンドを使用せずに、textvarの内容を他の目的に使用することもできます。

LIMIT month TO 'Jan95' 'Feb95'
LIMIT district TO 'Boston' 'Atlanta' 'Chicago'
textvar = NA
textvar = ROW(W 8 SKIP ACROSS month: <month SKIP>)
textvar = JOINLINES(textvar ROW(W 8 SKIP ACROSS month: -
   CENTER <'Sales' 'Plan'>))
FOR district
textvar = JOINLINES(textvar ROW(W 8  district ACROSS month: -
   <sales sales.plan>))
SHOW textvar

これらの文によって生成される出力は次のとおりです。

OUTPUT:
         Jan95                 Feb95
          Sales       Plan      Sales       Plan
Boston   32,153.52  42,346.89  32,536.30  43,265.50
Atlanta  40,674.20  54,583.41  44,236.55  57,559.87
Chicago  29,098.94  36,834.37  29,010.20  37,667.66

ROWIDTOCHAR

ROWIDTOCHARファンクションは、ROWIDデータ型の値をTEXTデータ型の値に変換します。

戻り値

TEXT

この変換の結果は常に各国語のキャラクタ・セットで、18文字の長さになります。

構文

ROWIDTOCHAR (rowid)

パラメータ

rowid

変換するROWID型の値。

例8-91 ROWIDデータのTEXTまたはNTEXTデータへの変換

アナリティック・ワークスペースに次のオブジェクト定義があるとします。

DEFINE myrowid DIMENSION ROWID
DEFINE mytext VARIABLE TEXT
DEFINE myntext VARIABLE NTEXT

まず、MAINTAIN文を使用して、ROWIDデータ型を持つmyrowidにデータを移入します。続いてROWIDTOCHARファンクションを使用してTEXTデータ型を持つmytextに移入し、同じくROWIDTONCHARファンクションを使用してNTEXTデータ型を持つmyntextに移入します。すべての変数が移入されたことがレポートに示されます。

MAINTAIN myrowid ADD CHARTOROWID('AAAFd1AAFAAAABSAA/')
mytext = ROWIDTOCHAR (myrowid)
myntext = ROWIDTONCHAR (myrowid)
 
MYROWID
------------------------------
AAAFd1AAFAAAABSAA/

MYTEXT
------------------------------
AAAFd1AAFAAAABSAA/
 
MYNTEXT
------------------------------
AAAFd1AAFAAAABSAA/

ROWIDTONCHAR

ROWIDTONCHARファンクションは、ROWIDデータ型の値をNCHARデータ型の値に変換します。この変換の結果は常に各国語のキャラクタ・セットで、18文字の長さになります。

戻り値

NCHAR

この変換の結果は常に各国語のキャラクタ・セットで、18文字の長さになります。

構文

ROWIDTONCHAR (rowid)

パラメータ

rowid

変換するROWID型の値。

RPAD

RPADファンクションは、式を返す際、指定した長さになるように指定した文字を右側に埋め込みます。また、文字が埋め込まれる式が指定した長さよりも長い場合は、指定した長さまでの部分を返します。

戻り値

文字を埋め込む式(text-exp)のデータ型に応じてTEXTまたはNTEXT

構文

RPAD (text-exp , length [, pad-exp])

パラメータ

text-exp

埋め込むテキスト式。

length

端末画面に表示される戻り値の全長。ほとんどのキャラクタ・セットでは、戻り値の文字数です。ただし、一部のマルチバイト・キャラクタ・セットでは、文字列の表示長はその文字列の文字数と異なることがあります。

text-expの長さよりも短い値をlengthに指定すると、指定したその長さに式が切り捨てられます。

pad-exp

埋込み文字を指定するテキスト式。pad-expのデフォルト値は単一の空白です。

例8-92 文字列の右側への埋込み

次の例は、名前の右側に文字abを埋め込んで12文字にします。

SHOW RPAD('Morrison',12,'ab')
Morrisonabab

RTRIM

RTRIMファンクションは、テキスト式の右側から、別のテキスト式で示す文字をすべて削除します。このファンクションは、基準のテキスト式を最後の文字からスキャンし、トリム式にあるすべての文字をトリム式にない文字が見つかるまで削除し、その結果を返します。

戻り値

最初の引数のデータ型に応じてTEXTまたはNTEXT

構文

RTRIM (text-exp [, trim-exp])

パラメータ

text-exp

文字をトリミングするテキスト式。

trim-exp

削除する文字を示すテキスト式。trim-expのデフォルト値は単一の空白です。

例8-93 右側にある文字のトリミング

次の例は、文字列から右側にあるすべてのxおよびyをトリミングします。

SHOW RTRIM('Last Wordxxyxy','xy') 
Last Word

RUNTOTAL

RUNTOTALファンクションは、式の現在までの合計を返します。RUNTOTALファンクションをROWコマンド、ROWファンクションまたはREPORTコマンドで使用すると、式の値の現在までの合計を生成できます。

戻り値

DECIMAL

構文

RUNTOTAL(n)

パラメータ

n

レポートの現行の列についてOracle OLAPが累計する32の小計(1から32)のいずれか1つ。RUNTOTALは、指定された列の小計の値を返しますが、小計の値をゼロにリセットしません。

32の小計を参照する番号(1から32)には固有の意味はなく、すべての小計は参照されるまで同じです。

使用上の注意

RUNTOTALの機能

RUNTOTALは、SUBSTRファンクションと異なり、指示された小計をゼロにリセットせず、RUNTOTALで返す値を指示された小計に加えません。ただし、RUNTOTALが返す値、現行の列に関して他の31の累計合計に加えられます。

別の列のデータへのアクセス

レポートの別の列に表示されている式でも、その式をRUNTOTALに追加することにより、現在までの合計を取得できます。COALESCEファンクションを使用すると、他の列の値を参照できます。たとえば、行の最初のデータ列にある月ごとの売上および2番目のデータ列にある売上の累計を表示するには、次の文を使用します。

ROW month sales COLVAL(-1) + RUNTOTAL(1)

小計のリセット

ROW文を使用してレポートを作成する場合、ZEROTOTAL文を使用して任意の列の小計をゼロにリセットできます。通常、ZEROTOTALはレポート・プログラムの開始時に使用し、最初にすべての合計がゼロになるようにします。REPORT文は、出力を生成する前に、自動的にすべての小計をゼロにリセットします。

NA値とRUNTOTAL

RUNTOTALは、すべての値がNAではないかぎり、NA値を無視します。すべての値がNAである場合、合計はNAになります。

例8-94 レポートでの現在までの合計の計算

レポートで、列1の値の現在までの合計を列2に表示するとします。

次のOLAP DML文を発行します。

ZEROTOTAL ALL
ROW W 4 R 2 RUNTOTAL(1) + COLVAL(1)
ROW W 4 R 5 RUNTOTAL(1) + COLVAL(1)
ROW W 4 R 3 RUNTOTAL(1) + COLVAL(1)

これらの文によって生成される出力は次のとおりです。

2     2.00
5     7.00
3    10.00

例8-95 2つの地区に関する現在までの合計の計算

この例では、2つの地区の1996年1から6月に関するテントの売上数量を示すレポートを作成します。月ごとのテントの売上数量とともに、これらの地区における売上数量の現在までの合計を表示します。この累計を生成するために、RUNTOTALファンクションを使用します。

LIMIT product TO 'Tents'
LIMIT month TO 'Jan96' TO 'Jun96'
LIMIT district TO 'Boston' 'Chicago'
REPORT ACROSS district: units -
   DECIMAL 0 TOTAL(units, month)+RUNTOTAL(1)

これらの文によって生成される出力は次のとおりです。

PRODUCT: TENTS
               --------UNITS--------
               ------DISTRICT-------
                                     TOTAL(UNIT
                                         S,
                                     MONTH)+RUN
MONTH            Boston    Chicago    TOTAL(1)
-------------- ---------- ---------- ----------
Jan96                 307        189        496
Feb96                 209        190        895
Mar96                 277        257      1,429
Apr96                 372        318      2,119
May96                 525        433      3,077
Jun96                 576        466      4,119

SESSIONTIMEZONE

SESSIONTIMEZONEファンクションは、現在のセッションのタイムゾーンを返します。

戻り値

タイムゾーン・オフセット('[+|]TZH:TZM'という書式の文字型)またはタイムゾーン・リージョン名。ユーザーが直近のALTER SESSION文で指定したセッション・タイムゾーン値によって異なります。

構文

SESSIONTIMEZONE

例8-96 セッション・タイムゾーンの取得

SHOW SESSIONTIMEZONE
-05:00

SIGN

SIGNファンクションは、指定された数字が0(ゼロ)よりも小さい、等しいまたは大きいことを示す値を返します。

戻り値

INTEGER。n<0の場合は-1n=0の場合は0(ゼロ)、n>0の場合は1が返されます。

構文

SIGN (n)

パラメータ

n

数式。

例8-97 数式の結果がゼロより大きいか小さいかの判断

次の例は、ファンクションの引数(-15)が0(ゼロ)よりも小さいことを示します。

SHOW SIGN(-15) 
 -1

SIN

SINファンクションは、三角式の正弦を計算します。

戻り値

NUMBER

SINで返される結果は、指定した式と同じディメンションを持つ値です。

構文

SIN(angle-expression)

パラメータ

angle-expression

ラジアン単位で指定された角度値を含む数式。

例8-98 ラジアン単位による角度の正弦の計算

この例は、1ラジアンの角度の正弦を計算します。次の文

DECIMALS = 5
SHOW SIN(1)

によって、次の結果が生成されます。

0.84147

例8-99 度数による角度の正弦の計算

この例は、30度の角度の正弦を計算します。1度 = 2*(pi)/360ラジアンであるため、30度は約30*2*3.14159/360ラジアンになります。OLAP DML文

SHOW SIN(30 * 2 * 3.14159 / 360)

によって、次の結果が生成されます。

0.50000

SINH

SINHファンクションは、数値の双曲線正弦を計算します。

戻り値

NUMBER

構文

SINH(expression)

パラメータ

expression

ラジアン単位で指定された角度値を含む数式。

例8-100 角度の双曲線正弦の計算

この例は、1ラジアンの角度の双曲線正弦を計算します。次の文

DECIMALS = 5
SHOW SINH(1)

によって、次の結果が生成されます。

1.17520

SMALLEST

SMALLESTファンクションは、式の最小値を返します。このファンクションを使用して、数値または日付値を比較できます。

戻り値

式のデータ型。INTEGER、LONGINT、DECIMALまたはDATEになります。

構文

SMALLEST(expression [CACHE] [dimension...])

パラメータ

expression

最小値を返す式。

CACHE

内部動作が若干変更されます。このキーワードは、元のパフォーマンスが非常に遅い場合にのみ指定してください。

dimension

結果のディメンションの名前。または、expressionの1つのディメンションと結果のディメンションとする別のディメンションとの間のリレーションの名前。

デフォルトで、SMALLESTは単一の値を返します。結果のディメンションを1つ以上指定した場合、SMALLESTは、指定されたディメンションに対して値をテストし、値の配列を返します。各ディメンションは、expressionのディメンションであるか、そのディメンションの1つと関連している必要があります。


ヒント:

指定したディメンションがexpressionの実際のディメンションではなくexpressionのディメンションに関連付けられたディメンションであり、かつ2つのディメンション間のリレーションが2つ以上ある場合は、ディメンション間のデフォルトのリレーションを使用して計算が行われます。(デフォルトのリレーションの詳細は、RELATIONコマンドを参照してください。)Oracle OLAPでこのデフォルトのリレーションを使用しない場合は、リレーションの名前を指定して、関連付けられたディメンションを指定します。

使用上の注意

NA値とSMALLEST

SMALLESTは、他の集計ファンクションと同様に、NASKIPオプションの影響を受けます。NASKIPの設定がYES(デフォルト)である場合、SMALLESTはNA値を無視して最小値またはNAではない値を返します。NASKIPの設定がNOである場合、SMALLESTは式の値がNAである場合はNAを返します。式のすべての値がNAである場合、NASKIPの設定がいずれの場合でもSMALLESTはNAを返します。

例8-101 スポーツウェアの売上が最小である月の検索

この例は、SMALLESTファンクションを使用し、1996年の上半期における3地区のスポーツウェアの最小の月間売上を検索します。地区ごとに最小売上金額を表示するには、結果のディメンションにdistrictを指定します。

LIMIT product TO 'Sportswear'
LIMIT district TO FIRST 3
LIMIT month TO 'Jan96' TO 'Jun96'
REPORT HEADING 'Smallest Sales' SMALLEST(sales district)

この文によって生成される出力は、次のとおりです。

                Smallest
DISTRICT         Sales
-------------- ----------
Boston          57,079.10
Atlanta        129,616.08
Chicago         77,489.51

SMOOTH

SMOOTHファンクションは、数式の単純指数平滑または二重指数平滑を計算します。

戻り値

DECIMAL

構文

SMOOTH(expression {SINGLE alpha|DOUBLE alpha beta m} [BASEDON dimension-list])

パラメータ

expression

平滑化する値を持つ数式。

SINGLE
DOUBLE

expressionの値の指数平滑化で使用するメソッド。SINGLEメソッドは単純指数平滑法を指定し、引数alphaを必要とします。DOUBLEメソッドは二重指数平滑法(Holtの線形指数平滑法とも言います)を指定し、引数alphabetaおよびmを必要とします。

alpha

0から1の数字で、測定するデータの予測値と前の予測値の相違を平滑化します。この値が大きくなるほど、最近の予測が加重されるため、平滑化係数が大きくなるほど平滑化が低下します。平滑化係数が0の場合、予測値のみで平滑化が行われるため、常に最初の予測値、つまり最初のデータ測定値を返します。平滑化係数が1の場合は、平滑化がまったく行われないため、前回のデータ測定値が返されます。(alpha値の結果」を参照してください。)

beta

0から1の数字で、前回の予測値と現在の予測値の差を平滑化します。alpha引数と同じように、平滑化係数が増加するほど平滑化が低下します。

m

1以上の正のINTEGERで、データ系列のデータ期間の合計数を最大とします。引数mで指定する期間数に基づいて、予測値が得られます。

BASEDON dimension-list

指数平滑化に含めるexpressionの1つ以上のディメンションのリスト(オプション)。ディメンションを指定しない場合、SMOOTHはexpressionのすべてのディメンションについて平滑化を行います。

使用上の注意

SMOOTHでのNASKIPの影響

SMOOTHはNASKIPオプションの影響を受けます。NASKIPがYESに設定されている場合(デフォルト)、SMOOTHはNA値を無視します。NASKIPがNOに設定されている場合、SMOOTHはNAの予測値にはすべてNAを返します。

alpha値の結果

ここでは、1つの指数平滑化で異なるalpha値を使用した場合の結果を示します。この結果は、次の文でディメンションが制限されたsales変数に基づきます。

LIMIT month TO 'Jan96' TO 'Dec96'
LIMIT product TO 'Tents'
LIMIT district TO 'Boston'
REPORT DOWN month SMOOTH(sales, SINGLE, ALPHA, BASEDON month)

次の表は、sales変数のデータ値、およびこの文にあるSMOOTHファンクションを表に示すようにalpha引数変数の値を変えて実行した結果を示します。

MONTH ボストンのテントの売上 alpha = 0 alpha = .1 alpha = .5 alpha = .9
Jan96 50,808.96 NA NA NA NA
Feb96 34,641.59 50,808.96 50,808.96 50,808.96 50,808.96
Mar96 45,742.21 50,808.96 49,192.22 42,725.28 36,258.33
Apr96 61,436.19 50,808.96 48,847.22 44,233.74 44,793.82
May96 86,699.67 50,808.96 50,106.12 52,834.97 59,771.95
Jun96 95,120.83 50,808.96 53,765.47 69,767.32 84,006.90
Jul96 93,972.49 50,808.96 57,901.01 82,444.07 94,009.44
Aug96 94,738.05 50,808.96 61,508.16 88,208.28 93,976.18
Sep96 75,407.66 50,808.96 64,831.15 91,473.17 94,661.86
Oct96 70,622.91 50,808.96 65,888.80 83,440.41 77,333.08
Nov96 46,124.99 50,808.96 66,362.21 77,031.66 71,293.93
Dec96 36,938.27 50,808.96 64,338.49 61,578.33 48,641.88

例8-102 値の平滑化

次の文は、sales変数のディメンションを制限し、レポートのデータ列の幅を設定してsalesのデータ値をレポートします。

LIMIT month TO 'Jan96' TO 'Dec96'
LIMIT product TO 'Tents'
LIMIT district TO 'Boston'
COLWIDTH = 14

REPORT W 6 DOWN month sales

この文によって生成される出力は、次のとおりです。

DISTRICT: Boston
       ----SALES-----
       ---PRODUCT----
MONTH      Tents
------ --------------
Jan96       50,808.96
Feb96       34,641.59
Mar96       45,742.21
Apr96       61,436.19
...
Nov96       46,124.99
Dec96       36,938.27

この文は、SINGLEメソッドで、平滑化係数を.5とし、monthディメンションに基づいて、SMOOTHファンクションをsales変数に実行した結果のレポートを生成します。

REPORT W 6 DOWN month SMOOTH(sales, SINGLE, .5, BASEDON month)

この文によって生成される出力は、次のとおりです。

DISTRICT: Boston
       SMOOTH(SALES,-
       -SINGLE, .5,--
       BASEDON MONTH)
       ---PRODUCT----
MONTH      Tents
------ --------------
Jan96              NA
Feb96       50,808.96
Mar96       42,725.28
Apr96       44,233.74
...
Nov96       77,031.66
Dec96       61,578.33

SORTファンクション

SORTファンクションは、指定したSORTコマンドの結果として得られたディメンション値またはディメンション・サロゲート値を返すファンクションです。


関連項目:

SORTコマンド

戻り値

戻り値は、ファンクションの使用方法によって次のように異なります。

  • 戻り値が値セットであるOLAP DML文(ユーザー定義コマンドまたはユーザー定義ファンクションを含む)の引数としてSORTファンクションを使用した場合は、値セットが返されます。空の値セットは、NULLステータスを含む値セットとして返されます。

  • INTEGERキーワードを指定した場合は、値の位置番号がINTEGERとして返されます。

  • それ以外の場合はTEXT値が返されます。空のステータスを表すTEXT値は、NA値として返されます。

構文

SORT([INTEGER]dimension [byhierarchy] [bycriterion...])

ここで、

  • byhierarchyはオプションの句で、階層内のファミリ・リレーションに基づき、親リレーションを使用して、階層ディメンションまたはそのディメンション・サロゲートの現行のステータス・リストの値の順序を並べ替えたり、値セットに値を代入します。SORT文に指定できるbyhierarchy句は1つのみです。この句は、SORT文の最初の句である必要があります。

    HIERARCHY parent-relation [INVERT] [DEPTH n] [SORTORPHANS]

  • bycriterionは、明示的に指定された基準を使用して、ディメンションまたはそのディメンション・サロゲートの現行のステータス・リストの値の順序を並べ替えたり、値セットに値を代入したりします。SORT文に指定できるbycriterion句の数に制限はありません。

    {A|D} [NAFIRST] criterion

パラメータ

INTEGER以外の引数の詳細は、SORTコマンドを参照してください。

INTEGER

INTEGERキーワードを使用すると、デフォルトのディメンション・ステータス内の値は、名前ではなく位置番号で返されます。値セットでINTEGERを使用すると、デフォルトのディメンション・ステータス内の値は、値セットではなく位置番号で返されます。

SORTLINES

SORTLINESファンクションは、複数行のTEXT値の行をソートします。

戻り値

TEXTまたはNTEXT

構文

SORTLINES(text-expression [A|D])

パラメータ

text-expression

SORTLINESでソートする行を含む複数行のテキスト式。TEXT式を指定すると、戻り値はTEXTです。NTEXT式を指定すると、戻り値はNTEXTです。

A
D

ソート順を昇順であるアルファベット順(A)にするか、降順である逆アルファベット順(D)にするかを指定します。デフォルトはA(昇順)です。ソート順は、NLS_SORTオプションで制御されます。

例8-103 テキスト行のソート

この例は、MKTREGIONSという変数の複数行で構成されるテキスト値の行をソートする方法を示します。

次の文

SHOW mktregions

によって、次の出力が生成されます。

New York
Boston
Atlanta
San Francisco

次の文

SHOW SORTLINES(mktregions)

によって、次の出力が生成されます。

Atlanta
Boston
New York
San Francisco 

SOUNDEX

SOUNDEXファンクションは、テキスト式の発音表記を含む文字列を返します。このファンクションを使用すると、綴りが異なっても発音が類似した英単語を比較できます。


関連項目:

発音表記の構成方法の詳細は、『Oracle Database SQL言語リファレンス』のSOUNDEXファンクションに関する項を参照してください。

戻り値

text_expと同じデータ型

構文

SOUNDEX(text_exp)

パラメータ

text_exp

発音表記を取得する式。任意のテキスト・データ型を使用できます。

SQLFETCH

SQLFETCHファンクションは、リレーショナル・テキストの1つの列から1つ以上の行を取得します。

戻り値

TEXT

構文

SQLFETCH (cursorname [COLUMN column-number} {STOPAFTER number-of-rows])

パラメータ

cursorname

SQLカーソルの名前を示すTEXT式。カーソルはオープン状態であり、コール元によってクローズされる必要があります。

column-number

列の数を表すINTEGER値。デフォルトは1です。

number-of-rows

読取り対象の行の数。デフォルトは、残りのすべての行数です。

SQRT

SQRTファンクションは、式の平方根を計算します。

戻り値

DECIMAL

構文

SQRT(expression)

パラメータ

expression

平方根を計算する数式。

使用上の注意

負の式

expressionが負で、ROOTOFNEGATIVEがNOに設定されている場合、エラーが発生します。expressionが負で、ROOTOFNEGATIVEがYESに設定されている場合、SQRTは値NAを返します。

例8-104 平方根の計算

この例は、144の平方根を計算します。次の文

SHOW SQRT(144)

によって、次の結果が生成されます。

12.00

STARTOF

STARTOFファンクションは、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションの期間の開始日を返します。


重要:

このファンクションは、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションでのみ使用できます。TEXT型の階層ディメンションとして実装されている時間ディメンションには使用できません

戻り値

DATEまたはテキスト

構文

STARTOF(dwmqy-dimension)

パラメータ

dwmqy-dimension

DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンション。この型のディメンション間に独自のリレーションを明示的に定義している場合、ここでその時間リレーションの名前を使用できます。

使用上の注意

STARTOFの機能

STARTOFは、ディメンションの現行のステータス・リストの最初にある期間の最初の日を返します。

フェーズ化された期間または複数の期間

STARTOFは、特にディメンションにデフォルトと異なるフェーズがある場合、または期間が複数の週や年で構成されている場合に便利です。たとえば、ディメンションに複数の4週間の期間がある場合、STARTOFファンクションは特定の4週間の開始日を特定します。

STARTOFから返される結果の書式

STARTOFが返す結果が表示されるとき、その日付はDATEFORMATオプションの日付テンプレートに従って書式化されます。曜日や月の名前を日付テンプレートで使用している場合は、DAYNAMESオプションで指定した曜日の名前や、MONTHNAMESオプションで指定した月の名前が使用されます。STARTOFから返される結果は、DATE値が予期される箇所ではどこででも使用できます。

期間の有効な最終日の取得

期間の最終日を返すファンクションはENDOFファンクションです。

例8-105 会計年度開始日の検索

次の文は、年ディメンション(6月で終了する会計年度で、FYEARという名前)を定義し、年の書式を指定し、1996から1998年の会計年度のディメンション値を追加し、各会計年度の開始日をレポートします。

DEFINE fyear DIMENSION YEAR ENDING June
VNF 'FY<ff>'
MAINTAIN fyear ADD '30JUN96' '30JUN98'
REPORT W 14 STARTOF(fyear)

これらの文によって生成される出力は次のとおりです。

FYEAR          STARTOF(FYEAR)
---------      --------------
FY96           01JUL95
FY97           01JUL96
FY98           01JUL97

STATALL

STATALLファンクションは、指定したディメンションに関してデフォルトのステータスが現在有効であるかどうかを示します。つまり、STATALLがYESを返すのは、STATLISTがALLを返す場合です。そうでない場合、STATALLはNOを返します。

戻り値

BOOLEAN

構文

STATALL(dimension)

パラメータ

dimension

値がディメンションまたはディメンション・サロゲートの名前であるテキスト式。

使用上の注意

STATALLとSTATLISTの比較

STATALLは、STATLISTプログラムを実行せずに指定されたディメンションのステータスがALLかどうかを判別する別の方法です。

例8-106 STATALLの使用

次の文では、MONTHディメンションのステータスがALLかどうかわかります。

SHOW STATALL(month)

戻り値は、YESまたはNOのいずれかです。

STATCURR

STATCURRファンクションは、ディメンションの指定したステータス・リストの値を返します。

戻り値

返される値のデータ型は、ディメンションのデータ型によって異なります。

構文

STATCURR (dimension, integer)

パラメータ

dimension

ステータス・リストを検索するディメンションの名前。

integer

ファンクションが返すステータス・リストのステータス・リスト・スタックの位置を指定します。

指定内容
0 ディメンションの現行値。
-1 ディメンションのステータス・リスト・スタック内の、前のステータス・リストのステータスの現行値を返します。
1 ディメンションのステータス・リスト・スタック内の、一番下にあるステータス・リストの現行値を返します。

STATDEPTH

STATDEPTH ファンクションは、指定したディメンションについてOracle OLAPが保存しているステータス・リストの数を返します。ディメンションの現行のステータス・リストがスタックの最上部に置かれます(現行のステータス・リストが深さ1となります)。

戻り値

INTEGER

構文

STATDEPTH (dimension)

パラメータ

dimension

情報の取得対象となるディメンションの名前。

使用上の注意

ステータス・リスト・スタックとは

ディメンションのステータス・リスト・スタックは、PUSH文およびPOP文を実行する際に、Oracle OLAPがステータスを管理するために使用するディメンション・ステータスのスタックです。このリストの深さは、Oracle OLAPが実行した文の種類によって変化します。

  • アナリティック・ワークスペースの最初のアタッチ時は、各ディメンションの現行のステータスはALLとなり、各ディメンションのステータス・リスト・スタックの深さは1(つまり、スタックにあるステータス・リストは1つのみ)となります。

  • ディメンションのステータス・リスト・スタックの深さは、現行のステータスが何度変更されても(つまり、ディメンションに対してLIMITコマンドが何度実行されても)、1(現行のステータス・リスト)のままとなります。ただし、次の例外があります。

    • Oracle OLAPでディメンションに対してPUSH文が実行された場合。PUSH文の実行以降は、当該ディメンションに対してLIMITコマンドが実行されるたびに、そのディメンションのステータス・リスト・スタックにステータス・リストが追加されます。当該ディメンションに対してPOP文が実行されると、そのディメンションのステータス・リスト・スタックはクリアされます。そのディメンションのステータス・リスト・スタックは再び1に戻ります。

    • Oracle OLAPで、ディメンションのステータスを一時的に変更する文(CHGDIMSやTEMPSTATなど)が実行された場合。この場合、その文が有効な間のみステータス・リスト・スタックにステータス・リストが追加され、その後ただちに削除されます。一時的なステータスが有効になっている間のみ、ステータス・リスト・スタックからこのステータス・リストにアクセスできます。

STATEQUAL

STATEQUALファンクションは、ディメンションのステータス・リストを比較します。

戻り値

BOOLEAN

構文

STATEQUAL (statlist1, statlist2 [INORDER])

パラメータ

statlist1

ディメンションのステータス・リスト。ディメンションの名前、ディメンションによりディメンション化された値セット、ディメンションのLIMITファンクション、またはディメンションのSORTファンクションを使用して指定します。

statlist2

statlist1で指定されたのと同じディメンションのステータス・リスト。statlist2の指定には、ディメンションの名前、ディメンションによりディメンション化された値セット、ディメンションのLIMITファンクション、またはディメンションのSORTファンクションを使用できます。

INORDER

同一の順序による値の配列を必須とすることを指定します。

STATFIRST

 STATFIRSTファンクションは、ディメンションまたはディメンション・サロゲートの現行のステータス・リストの最初の値、あるいは値セットの最初の値を返します。

戻り値

STATFIRSTが返すデータ型は、ディメンション値またはディメンション・サロゲート値のデータ型、あるいはディメンションのデフォルトのステータス・リストでの位置を示すINTEGERです。STATFIRSTが返すディメンション値は、コンテキストに合せて数値またはテキスト値に変換されます。例8-107「STATFIRST値の別の型の変数への割当て」を参照してください。

構文

STATFIRST(dimension)

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

例8-107 STATFIRST値の別の型の変数への割当て

次の文

DEFINE textvar TEXT
textvar = STATFIRST(month)
SHOW textvar

によって、次の出力が生成されます。

Jun95

これに対し、次の文

DEFINE intvar INTEGER
intvar = STATFIRST(month)
SHOW INTVAR

によって、次の出力が生成されます。

6

例8-108 KEEPが指定されたSTATFIRST

次のプログラムの行は、STATFIRSTを使用して、onemonthという変数に先に格納されている値までのステータスにあるすべての値にmonthを制限します。キーワードKEEPは、新しいステータスが常に古いステータスのサブセットであることを意味します。

LIMIT month KEEP STATFIRST(month) TO onemonth

ここでは、特定のmonthの値ではなくSTATFIRSTが使用されているため、この制限はどのステータス・リストでも機能します。

STATLAST

STATLASTファンクションは、ディメンションまたはディメンション・サロゲートの現行のステータス・リストの最後の値、あるいは値セットの最後の値を返します。

戻り値

STATLASTが返すデータ型は、ディメンション値またはディメンション・サロゲート値のデータ型、あるいはディメンションのデフォルトのステータス・リストでの位置を示すINTEGERです。「返されるディメンション値の自動データ変換」を参照してください。

構文

STATLAST(dimension)

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

使用上の注意

返されるディメンション値の自動データ変換

STATLASTが返すディメンション値は、コンテキストに合せて数値またはテキスト値に変換されます。たとえば、jun95が6番目のmonth値であり、現行のステータス・リストの最後の値だとします。STATLAST(month)の値は、テキスト変数または数値変数に代入できます。

次の文ではテキスト出力値が生成されます。

DEFINE textvar TEXT
TEXTVAR = statlast(MONTH)
SHOW textvar
Jun95

これに対して、次の文では数値出力値が生成されます。

DEFINE intvar INTEGER
INTVAR = STATLAST(month)
SHOW INTVAR
6

例8-109 STATLASTによるステータスの設定

次のプログラムの行は、STATLASTを使用して、onemonthという変数に先に格納されている月で始まり、ステータスの最後の値で終わるステータスにある値にmonthを制限します。

LIMIT month KEEP onemonth TO STATLAST(month)

ここでは、特定のmonthの値ではなくSTATLASTが使用されているため、この制限はどのステータス・リストでも機能します。

STATLEN

STATLENファンクションは、ディメンションまたはディメンション・サロゲートの現行のステータス・リストの値の数、あるいは値セットの値の数を返します。

戻り値

INTEGER

構文

STATLEN(dimension)

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

例8-110 ステータスにある月のカウント

次の文は、monthディメンションの現行のステータス・リストにある月の数を現行の出力ファイルに送ります。

SHOW STATLEN(month) 

STATLIST

STATLISTファンクションは、ディメンションまたはディメンション・サロゲートの現行のステータス・リストの全値のリスト、あるいは値セットの全値のリストを返します。リストは、指定された幅に書式設定できます。STATLISTファンクションを採用しているSTATUSコマンドでは、ディメンションのステータスがまとめて表示されます。表示する幅または位置を制御する場合は、STATUSではなくSTATLISTを使用します。

戻り値

STATLISTは、ディメンション値またはディメンション・サロゲート値自体(たとえば、Jan95)、あるいはデフォルトのステータス・リストでの値の位置を示す数値(たとえば、6)のいずれかを含むTEXT値のリストを返します。

戻り値は、Jan96 TO Jun96などのように、value TO valueという形式になります。デフォルトのステータスが有効の場合は、ALLが表示されます。現行のステータス・リストまたは値セットが空の場合は、NULLが表示されます。

構文

STATLIST(dimension [keyword] [width])

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

keyword

表8-14「STATLISTのキーワード」に示すキーワード。このキーワードによって、現行のステータス・リストの値を表示する形式を指定できます。

表8-14 STATLISTのキーワード

キーワード 説明

INTEGER

STATLISTがディメンションの現行のステータスにある値のリストを返す際、そのディメンションのデフォルトのステータス・リストでの位置を示すINTEGERとして返すように指定。

TEXT

(デフォルト)STATLISTがディメンションの現行のステータスに含まれる値のリストを返す際、その値の値名として返すように指定。


width

リストの幅を文字数で指定するINTEGER式(オプション)。幅を指定しない場合、STATLISTではLSIZEオプションの現行の値が使用されます。LSIZEのデフォルト値は80です。

例8-111 ROWによるステータス・リストの作成

この例は、売上総額が$3,000,000を超える月をリストします。

次の文

LIMIT month TO TOTAL(sales, month) GE 3000000
ROW W 40 'Months with total sales over $3,000,000: '-
   W 40 STATLIST(month, 40)

によって、次の出力が生成されます。

Months with total sales over $3,000,000: Jun95 TO Sep95, May96 TO Sep96

例8-112 SHOWによるステータス・リストの作成

次のSTATLIST文は、ディメンション値を20文字幅に書式設定します。

LIMIT month TO 'Jan95' 'Mar95' 'May95' 'Jul96' 'Sep96' 'Nov96'
SHOW STATLIST(month 20)

この文によって生成される出力は、次のとおりです。

Jan95, Mar95, May95,
Jul96, Sep96, Nov96

次の文は、ディメンションの位置をリストします。

SHOW STATLIST(month INTEGER 20)

出力は次のとおりです。

1, 3, 5, 19, 21, 23 

STATMAX

STATMAXファンクションは、ディメンションまたはディメンション・サロゲートの現行のステータス・リストの最新の値、あるいは値セットの最新の値を返します。

戻り値

STATMAXが返すデータ型は、ディメンション値またはディメンション・サロゲート値のデータ型、あるいはディメンションまたはサロゲートのデフォルトのステータス・リストでの位置を示すINTEGERです。「STATMAXで返されるディメンション値の自動変換」を参照してください。

構文

STATMAX(dimension)

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

使用上の注意

STATMAXで返されるディメンション値の自動変換

STATMAXが返す値は、コンテキストに合せて数値またはテキスト値に変換されます。たとえば、monthのステータスがJun95からDec95に制限されており、Dec95がデフォルトのステータス・リストの12番目だとします。STATMAX(month)の値は、テキスト変数または数値変数に代入できます。

次の文

DEFINE textvar TEXT
textvar = STATMAX(month)
SHOW textvar

によって、次の出力が生成されます。

Dec95

これに対し、次の文

DEFINE intvar INTEGER
intvar = STATMAX(month)
SHOW intvar

によって、次の出力が生成されます。

12

例8-113 タイトルに使用するSTATMAX

次のプログラムの文は、STATMAXを使用して売上総額の上位10か月の中で一番最近の月を判別します。

LIMIT month TO BOTTOM 10 BASEDON TOTAL(sales, month)
SHOW JOINCHARS(STATMAX(month) ' is the latest month -
  of the ten months with the lowest sales.')
SHOW JOINCHARS('the months range from ' STATMIN(month) ' to '-  
  STATMAX(month)) 

この文によって生成される売上レポートは、次のとおりです。

Dec96 is the latest month of the ten months with the lowest sales.
The months range from Jan95 to Dec96

LIMITコマンドによってmonthの値が時間順ではなく売上の昇順に並べられているため、STATMAXのかわりにSTATLASTを使用した場合は別の値が生成されます。

STATMIN

STATMINファンクションは、ディメンションまたはディメンション・サロゲートの現在のステータス・リストで最も早い値、あるいは値セットの最も早い値を返します。

戻り値

ディメンション値またはサロゲート値、あるいはディメンションまたはサロゲートのデフォルトのステータス・リストでの値の位置を示すINTEGER。戻り値は、dimension引数および戻り値を受け取るオブジェクトによって変わります。「STATMINで返される値のデータ型の自動変換」を参照してください。

構文

STATMIN(dimension)

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

使用上の注意

STATMINで返される値のデータ型の自動変換

STATMINが返すディメンション値は、必要に応じて数値またはテキスト値に変換されます。たとえば、monthのステータスがJun95からDec95に制限されており、Jun95がデフォルトのステータス・リストの6番目のmonth値だとします。STATMIN(month)の値は、テキスト変数、数値変数またはDATE変数に代入できます。

次の文

DEFINE textvar TEXT
textvar = STATMIN(month)
SHOW textvar

によって、次の出力が生成されます。

Jun95

これに対し、次の文

DEFINE intvar INTEGER
intvar = STATMIN(month)
SHOW intvar

によって、次の出力が生成されます。

6

例8-114 タイトルに使用するSTATMIN

次のプログラムの文は、STATMINを使用して売上総額の上位10か月の中で一番早い月を判別します。

LIMIT month TO TOP 10 BASEDON TOTAL(sales, month)
SHOW JOINCHARS(STATMIN(month) ' is the earliest of the - 
  ten months with the highest sales.')
SHOW JOINCHARS( 'The months range from ' statmin(month) ' TO '- 
  statmax(month) )

この文によって生成される売上レポートは、次のとおりです。

May95 is the earliest of the ten months with the highest sales.
The months range from May95 to Sep96

例8-115 STATFIRSTとの比較

次の例では、STATMINと、現在のステータス・リストの最初の値を返すSTATFIRSTとの相違点がわかります。

次の文を発行するとします。

LIMIT month TO TOP 10 BASEDON TOTAL(sales, month)
REPORT WIDTH 20 TOTAL(sales, month)

この文を実行すると、次のレポートが作成されます。

MONTH          TOTAL(SALES, MONTH) 
-------------- --------------------
Jul96                  3,647,085.39
Jun96                  3,458,438.30
Jul95                  3,414,210.05
Aug96                  3,246,601.97
Jun95                  3,228,824.80
Sep96                  3,215,883.93
May96                  3,112,854.59
Aug95                  3,044,694.29
Sep95                  3,006,242.58
May95                  2,908,539.45

このレポートのmonthの値は、年代順ではなく降順の売上に並べられており、これが現在のステータス・リストの順序になります。

  • STATMINは、次の文および出力で示すように、ステータスにある時間順で最初の値(位置では最後)を返します。

    SHOW STATMIN(month)
    May95
     
    
  • STATFIRSTは、次の文と出力で示すように、ステータスでの位置で最初の値(時間順では8番目)を返します。

    SHOW STATFIRST(month)
    Jul96 
    

STATRANK

STATRANKファンクションは、ディメンション値またはディメンション・サロゲート値の現行のステータス・リストでの位置、あるいは値セットでの位置を返します。

戻り値

INTEGER

構文

STATRANK(dimension [value])

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

value

dimensionに適切なデータ型を持つ、チェックする値。valueには、たとえば、IDまたはTEXTディメンションの場合はテキスト式、INTEGERディメンションの場合はINTEGER、時間ディメンションの場合は日付、結合または連結ディメンションの場合は山カッコで囲んだ値の組合せを指定できます。テキスト式の値は、実際のディメンション値と大文字と小文字が完全に同じである必要があります。テキスト式を使用する場合は、単一行の値である必要があります。

結合ディメンションの値を指定する場合は、必ず山カッコで値を囲み、ベース・ディメンション値はカンマとスペースで区切ります。連結ディメンションの値を指定する場合は、必ず山カッコで値を囲み、ベース・ディメンション名と値はコロンとスペースで区切ります。

valueを指定しない場合、STATRANKは現行の値の位置を返します。現行のステータス・リストまたは値セットにはない有効なディメンション値の名前を指定すると、STATRANKはNAを返します。

例8-116 STATRANKによる位置番号の特定

売上総額の上位5か月を番号付きリストとして表示するレポートを作成するとします。STATRANKを使用して、各月に番号を付けることができます。次の定義および内容のレポート・プログラムを記述します。

DEFINE sales.rpt PROGRAM
PROGRAM
LIMIT month TO TOP 5 BASEDON TOTAL(sales, month)
SHOW 'Top five months by total sales:'
for month
    ROW WIDTH 4 JOINCHARS(STATRANK(month) '.') WIDTH 5 month
END

このレポート・プログラムによって次のレポートが生成されます。

Top five months by total sales:
1.   Jul96
2.   Jun96
3.   Jul95
4.   Aug96
5.   Jun95

sales.rptプログラムの実行後、SHOW文およびSTATRANKファンクションを使用して、売上総額の上位5か月に含まれる特定の月の位置を取得します。

次の文

SHOW STATRANK(month Jun96)

によって、次の出力が生成されます。

2

例8-117 結合ディメンションでのSTATRANKの使用

指定するdimensionが結合ディメンションの場合、value全体を一重引用符で囲む必要があります。

たとえば、アナリティック・ワークスペースにregionディメンションおよびproductディメンションがあるとします。regionディメンション値には、EastCentralおよびWestがあります。productディメンション値には、TentsCanoesおよびRacquetsがあります。

次の文は、結合ディメンションを定義してそれに値を追加します。

DEFINE reg.prod DIMENSION <region product>
MAINTAIN reg.prod ADD <'East', 'Tents'> <'West', 'Canoes'>

ベース位置を指定するには、次のような文を使用します。regionディメンションのEastの位置は1productディメンションのTentsの位置は1であるため、次の文は対応するreg.prod値の位置を返します。

SHOW STATRANK(reg.prod '<1, 1>')

1

ベース・テキスト値を指定するには、次のような文を使用します。

SHOW STATRANK(reg.prod '<\'East\', \'Tents\'>')

1

例8-118 連結ディメンションでのSTATRANKの使用

指定するdimensionが連結ディメンションの場合、value全体を一重引用符で囲む必要があります。次の文は、ベース・ディメンションregionおよびproductを持つreg.prod.ccdimという名前の連結ディメンションを定義します。

DEFINE reg.prod.ccdim DIMENSION CONCAT(region product)

reg.prod.ccdimのレポートで返される結果は、次のとおりです。

REG.PROD.CCDIM
----------------------
<Region: East>
<Region: Central>
<Region: West>
<Product: Tents>
<Product: Canoes>
<Product: Racquets>

ベース・ディメンション位置を指定するには、次のような文を使用します。productディメンションのracquetsの位置が3であるため、次の文は<product: Racquets>値のreg.prod.ccdimでの位置を返します。

SHOW STATRANK(reg.prod.ccdim '<product: 3>')

6

ベース・ディメンション・テキスト値を指定するには、次のような文を使用します。

SHOW STATRANK(reg.prod.ccdim '<product: Tents>')

4 

STATVAL

STATVALファンクションは、ディメンションまたはディメンション・サロゲートの現行のステータス・リストで指定した位置、あるいは値セットで指定した位置に対応するディメンション値を返します。

戻り値

STATVALが返すデータ型は、ディメンション値またはディメンション・サロゲート値のデータ型、あるいはディメンションのデフォルトのステータス・リストでの位置を示すINTEGERです。STATVALが返すディメンション値は、コンテキストに合せて数値またはテキスト値に変換されます。STATVALが常にINTEGER値を返すようにするには、INTEGERキーワードを指定します。例8-120「常にINTEGERを返すSTATVALの設定」を参照してください。

構文

STATVAL(dimension position [INTEGER])

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

position

ディメンションまたは値セットの現行のステータス・リストでの位置を指定するINTEGER式。値を持たない位置を指定すると、STATVALはNAを返します。

INTEGER

デフォルトのステータス・リストでのディメンション値の位置を示すINTEGERをSTATVALが常に返すように指定します。

使用上の注意

FORループのSTATVAL

ディメンションに対するFORループでは、ループの反復ごとにステータスが単一のディメンション値に制限されます。このため、STATVALは位置1の値のみを返します。他の位置にはNAを返します。

例8-119 修飾データ参照を持つSTATVAL

売上総額の上位10か月のうち、5番目の月の売上額を確認するとします。monthTOP 10に制限してから、修飾データ参照のSTATVALを使用して5番目の月の売上額を生成します。

LIMIT month TO TOP 10 BASEDON TOTAL(sales, month)
REPORT month

この文によって生成されるレポートは次のとおりです。

MONTH
--------------
Jul96
Jun96
Jul95
Aug96
Jun95
Sep96
May96
Aug95
Sep95
MAY95

次のようにSTATVALをREPORT文で使用すると、別のレポートが生成されます。

REPORT W 8 DOWN district HEADING -
   JOINCHARS('Sales: 5th of Top Ten - ' STATVAL(month 5)) -
   sales(month STATVAL(month 5))

この文によって生成されるレポートは、次のとおりです。

         ------------Sales: 5th of Top Ten - Jun95-------------
         -----------------------PRODUCT------------------------
DISTRICT   Tents      Canoes    Racquets  Sportswear  Footwear
-------- ---------- ---------- ---------- ---------- ----------
Boston    88,996.35 147,412.44  90,840.60  75,206.30 144,162.66
Atlanta  110,765.24 106,327.17 109,695.31 155,652.78 146,364.99
Chicago   70,908.96 108,039.05 100,030.29 104,900.66 148,386.81
Dallas   128,692.56  71,899.23 176,452.58 164,823.10  32,421.25
Denver    91,717.46  99,099.20 140,961.37  99,951.60  70,149.77
Seattle  113,806.48 143,037.62  54,926.87  57,739.03  75,457.04

次の文の修飾データ参照は「monthデフォルトのステータスにある5番目の月の売上」を意味します。

sales(month 5)

次の文の修飾データ参照は「month現行のステータスにある5番目の月の売上」を意味します。

sales(month STATVAL(month 5))

次の文は、monthの修飾データ参照で返される値、および引数monthを持つSTATVALで返される値を表示します。

SHOW month(month 5)
SHOW STATVAL(month 5)

この文によって生成される出力は、次のとおりです。

May95
Jun95 

例8-120 常にINTEGERを返すSTATVALの設定

コンテキストによって、STATVALはINTEGERキーワードを指定しなくてもINTEGER値を返す場合があります。

次の文

LIMIT month TO 'Jun95' TO 'Dec95'
SHOW STATVAL(month 3)

によって、次の出力が生成されます。

Aug95

INTEGERキーワードを付けます。

SHOW STATVAL(month 3 INTEGER)

生成される出力は次のとおりです。

8

STDDEV

STDDEVファンクションは、式の値の標準偏差を計算するファンクションです。

STDDEVは、NASKIPオプションの影響を受けます。NASKIPがYESに設定されている場合(デフォルト)、STDDEVはNA値を無視し、非NA値の標準偏差を返します。NASKIPがNOに設定されている場合、計算に含まれる値にNAが1つでもあると、STDDEVはNAを返します。計算に含まれるすべてのデータ値がNAの場合には、NASKIPの設定にかかわらず、STDDEVはNAを返します。

戻り値

DECIMAL

構文

STDDEV(expression [dimensions])

パラメータ

expression

標準偏差を計算する対象の数式。

dimensions

結果のディメンション。デフォルトでは、STDDEVは単一の値を返します。結果に対し1つ以上のディメンションを指定すると、STDDEVは、指定されたディメンションに対して標準偏差を計算し、値の配列を返します。各ディメンションは、expressionのディメンションであるか、そのディメンションの1つと関連している必要があります。関連ディメンションの場合は、ディメンション名のかわりにリレーションの名前を指定でき、これによって、ディメンション間のリレーションが複数ある場合に使用するリレーションを選択できます。

使用上の注意

DWMQYディメンションによってディメンション化された式を使用するSTDDEVの使用

expressionがDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションによりディメンション化されている場合は、関連dimensionとして、他のどのDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションでも指定できます。Oracle OLAPでは、ディメンション間の暗黙的なリレーションを使用します。DAY、WEEK、MONTH、QUARTERまたはYEAR型の一方のディメンションから他方のディメンションへのマッピング(週から月など)を制御するには、2つのディメンション間のリレーションを明示的に定義し、STDDEVファンクションへのdimension引数としてリレーションの名前を指定します。

DAY、WEEK、MONTH、QUARTERおよびYEAR型の関連ディメンションの各期間では、Oracle OLAPは、ターゲット期間に終了するソース期間のデータ値の標準偏差を計算します。この方法は、どのディメンションがより上位の集計期間を保持しているかにかかわらず、適用されます。DAY、WEEK、MONTH、QUARTERおよびYEAR型の2つのディメンションの期間の間における、データの集計または割当て方法を制御するには、TCONVERTファンクションを使用できます。

例8-121 月間売上の標準偏差の計算

この例では、1996年の最初の3か月間に販売したテントの平均数と同時に、その平均から標準偏差を計算します。

LIMIT district TO ALL
LIMIT month TO 'Jan96' TO 'Mar96'
LIMIT product TO 'Tents'
REPORT HEADING 'Average' AVERAGE(units month) -
   HEADING 'Stddev'STDDEV(units months)

これらの文によって生成される出力は次のとおりです。

MONTH           Average     Stddev
-------------- ---------- ----------
Jan96              262.33      49.32
Feb96              247.83      57.37
Mar96              320.50      68.17

SUBSTRファンクション

SUBSTRファンクション群(SUBSTR、SUBSTRBおよびSUBSTRC)は、文字列内の指定した位置から始まる部分文字列を返します。

戻り値となるサブストリングの長さの計算方法は各ファンクションで異なります。

  • SUBSTRは、入力キャラクタ・セットの定義どおりに文字を使用して長さを計算します。

  • SUBSTRBは、バイトを使用して長さを計算します。

  • SUBSTRCは、Unicodeの完全文字を使用して長さを計算します。

戻り値

戻り値は、文字列と同じデータ型です。

構文

{SUBSTR | SUBSTRB | SUBSTRC }(string, position [, substring_length ])

パラメータ

string

サブストリングが作成される基礎となる文字列のテキスト式。

position

返される文字列の最初の文字が始まる位置。

  • position0(ゼロ)の場合、1として扱われます。

  • positionが正の場合、ファンクションはstringの始めからカウントして最初の文字を見つけます。

  • positionが負の場合、ファンクションはstringの終わりから逆方向にカウントします。

substring_length

戻される文字列の長さ。SUBSTRは、入力キャラクタ・セットの定義どおりに文字を使用して長さを計算します。SUBSTRBは、文字数ではなくバイト数を使用します。SUBSTRCは、完全なUnicodeキャラクタを使用します。

この引数に値を指定しない場合、ファンクションはstringの終わりまでのすべての文字を返します。1未満の値を指定したり、stringの文字数を超える値を指定すると、ファンクションはNAを返します。

例8-122 文字サブストリングの取得

次の例では、「abcdefg」の指定したサブストリングが返されます。

SHOW SUBSTR('abcdefg',3,4) 
cdef

SHOW SUBSTR('abcdefg',-5,4) 
cdef

例8-123 バイトを使用したサブストリングの取得

AL32UTF8データベース・キャラクタ・セットを使用しているとします。Fußball文字列の場合、次の文では2バイト目からの長さ4バイトのサブストリングが戻されます。

SHOW SUBSTRB('Fußball',2,4)
ußb

SUBTOTAL

SUBTOTALファンクションは、レポートで累計される小計の1つの値を返すファンクションです。通常はROWコマンド内でSUBTOTALファンクションを使用して、レポートに小計または総計を追加します。Oracle OLAPは各列に32の現在までの合計を保持するため、最大32レベルの小計を含めることができます。


注意:

REPORT文では、GRANDTOTALSおよびSUBTOTALSキーワードを使用して、総計および小計の行を含めます。

戻り値

DECIMAL

構文

SUBTOTAL(n)

パラメータ

n

レポートにおける各数値列の現在までの合計のレベルを示すINTEGER値。たとえば、「Total」をレベル1の小計に、「Grand Total」をレベル2の小計にできます。列には最大32レベルの現在までの合計を含めることができるため、nは1から32のINTEGERにする必要があります。SUBTOTALは、現行の列のこの小計の値を返し、小計nの値をゼロにリセットします。

32の小計を参照する番号(1から32)には固有の意味はなく、すべての小計は参照されるまで同じです。

使用上の注意

自動的な小計のリセット

ROWコマンドでSUBTOTALファンクションを使用して現行の列の小計を含める場合、そのレベルの小計はゼロにリセットされます。

ZEROTOTALによる小計のリセット

ROWコマンドを使用してレポートを作成する場合、ZEROTOTAL文を使用すると任意の列の小計をゼロにリセットできます。通常、ZEROTOTALはレポート・プログラムの開始時に使用し、最初にすべての合計がゼロになるようにします。

NA値とSUBTOTAL

SUBTOTALは、NA値を無視します。すべての値がNAの場合、SUBTOTALはゼロを返します。

例8-124 レポートにおける小計および総計の計算

売上レポートに、各地域の小計を表示するとします。レポートの終わりには、すべての売上の総計も表示するとします。SUBTOTAL(1)を使用して、各地域の小計を生成できます。この小計は、使用するたびに0にリセットされるため、各地域別の小計が計算されます。レポートの終わりには、SUBTOTAL(2)を使用して総計を生成できます。レポート内ではこれを使用していないため、すべての地域の売上高の合計が保持されます。

LIMIT month TO FIRST 3
LIMIT region TO ALL
ZEROTOTAL ALL
FOR region
   DO 
   ROW region
   LIMIT DISTRICT TO region
   FOR district
      DO
      ROW INDENT 5 district ACROSS month: sales
      DOEND
   ROW INDENT 5 'Total' ACROSS month: OVER '-' SUBTOTAL(1)
   BLANK
   DOEND
ROW 'Grand Total' ACROSS month: OVER '=' SUBTOTAL(2)

このプログラムによって生成される出力は、次のとおりです。

East
     Boston     32,153.52  32,536.30  43,062.75
     Atlanta    40,674.20  44,236.55  51,227.06
               ---------- ---------- ----------
     Total      72,827.72  76,772.85  94,289.81
Central
     Chicago    29,098.94  29,010.20  39,540.89
     Dallas     47,747.98  50,166.81  67,075.44
               ---------- ---------- ----------
     Total      76,846.92  79,177.01 106,616.33
West
     Denver     36,494.25  33,658.24  45,303.93
     Seattle    43,568.02  41,191.28  51,547.23
               ---------- ---------- ----------
     Total      80,062.27  74,849.52  96,851.16
 
               ========== ========== ==========
Grand Total    229,736.91 230,799.38 297,757.30

SYS_CONTEXT

SYS_CONTEXTファンクションは、コンテキスト・ネームスペースに関連付けられたパラメータの値を返します。


関連項目:

詳細は、『Oracle Database SQL言語リファレンス』のSYS_CONTEXTファンクションに関する項を参照してください。

戻り値

VARCHAR2.

構文

SYS_CONTEXT(namespace, parameter [, length ])

パラメータ

namespace

有効なSQL識別子であるネームスペースを指定するテキスト式。コンテキスト・ネームスペースが作成済で、関連付けられているパラメータとその値もDBMS_SESSION.set_contextプロシージャで設定されている必要があります。

parameter

ネームスペースに関連付けられている属性を指定するテキスト式。このパラメータとその値は、DBMS_SESSION.set_contextプロシージャであらかじめ設定されている必要があります。このパラメータでは大文字と小文字は区別されませんが、30バイトを超える長さには指定できません。

length

戻り値の最大サイズを指定する数式。指定する値はNUMBER(または暗黙的にNUMBERに変換される値)で、1から4000バイトの範囲内にする必要があります。無効な値を指定すると、その値は無視されてデフォルト値である256バイトが使用されます。

使用上の注意

組込みネームスペースUSERENV

Oracleには、現行のセッションを記述するUSERENVという組込みネームスペースが用意されています。

USERENVネームスペースの事前定義パラメータの詳細は、『Oracle Database SQL言語リファレンス』のSYS_CONTEXTファンクションに関する項を参照してください。

例8-125 セッションのユーザー名の取得

次の例では、データベースにログインしたユーザーの名前であるJOHNSMITHという値を取得します。

SHOW SYS_CONTEXT ('USERENV', 'SESSION_USER')
JOHNSMITH

SYSDATE

SYSDATEファンクションは、現在の日付および時刻をDATETIME値として返すファンクションです。日付の形式は、NLS_DATE_FORMATオプションによって制御されます。デフォルトのDATETIME形式(DD-MM-RR)では、時刻は表示されません。

戻り値

DATETIME

構文

SYSDATE

例8-126 現在の日付の表示

次の文

SHOW SYSDATE

によって、次のように現在の日付が返されます。

08-Sep-00

SYSINFO

SYSINFOファンクションは、現行のセッションのOracleユーザーIDに関する情報を返すファンクションです。

戻り値

TEXT

構文

SYSINFO (keyword)

ここで、keywordは次のいずれかです。

USER
ROLES
PROFILES
HOSTNAME
OSUSER
INSTNAME
PID
PROGNAME
CHOSTNAME
COSUSER
TERMNAME

パラメータ

USER

Oracle Databaseセッションが実行されているユーザーIDを示すTEXT値を返します。この値は、USERIDで返される値と同じです。

ROLES

セッションのユーザーIDに適用されるロールをリストする複数行のTEXT値を返します。

PROFILES

セッションのユーザーIDに適用されるプロファイルをリストする複数行のTEXT値を返します。

OSUSER

Oracle Databaseサーバーが実行されているオペレーティング・システムのユーザー名を示すTEXT値を返します。

INSTNAME

Oracle Databaseサーバーのインスタンス名であるTEXT値を返します。

PID

Oracle Databaseセッションのオペレーティング・システムのID番号であるTEXT値を返します。

HOSTNAME

Oracle Databaseサーバーのホスト名であるTEXT値を返します。

PROGNAME

データベースに接続しているクライアントを表すTEXT値を返します。

CHOSTNAME

クライアントのホスト名であるTEXT値を返します。

COSUSER

クライアントのオペレーティング・システムのユーザー名であるTEXT値を返します。

TERMNAME

クライアントの端末名であるTEXT値を返します。

例8-127 ユーザーIDの取得

SYSINFOファンクションを使用して、現行のセッションのユーザーを取得できます。

SHOW SYSINFO(USER)

生成される出力は次のとおりです。

Scott

SYSTEM

SYSTEMファンクションは、Oracle OLAPが実行されているプラットフォームを識別するファンクションです。

データ型

TEXT

構文

SYSTEM

使用上の注意

プラットフォームの関連性

Oracle OLAPはOracle Databaseに組み込まれているため、Oracle OLAPが稼働しているオペレーティング・システムはその動作において重要な要素ではありません。


注意:

外部ファイルへのすべての参照は、プラットフォームに固有ではないディレクトリ・オブジェクトを介して行われます。

例8-128 プラットフォームの表示

Intel NTで次のSYSTEM文を発行すると、値NTX86が返されます。

SHOW SYSTEM
NTX86 

SYSTIMESTAMP

SYSTIMESTAMPファンクションは、現在の日時をTIMESTAMP_TZ値として返します。

データ型

TIMESTAMP_TZ

構文

SYSTIMESTAMP

例8-129 TIMESTAMP値として取得する現在の日時

SHOW systimestamp
26-APR-07 02.18.47.030587 PM -04:00

TALLY

TALLYファンクションは、1つ以上の関連ディメンションの各値に対応するディメンションの値の数をカウントするファンクションです。

戻り値

INTEGER

構文

TALLY(dimension [related-dimensions])

パラメータ

dimension

値をカウントする対象のディメンション。related-dimensionsを指定すると、TALLYは単一の関連ディメンションの各値、または複数の関連ディメンションの値の各組合せに対応するdimensionの値の数をカウントします。related-dimensionsを指定しない場合、TALLYはディメンション内の値の数をカウントします。dimensionの現行のステータスにある値のみがカウントされます。

related-dimensions

結果の1つ以上の関連ディメンション。これらは、dimensionに関連付けられる必要があります。または、ディメンション名のかわりにリレーションの名前を指定でき、これによって、ディメンション間のリレーションが複数ある際に使用するリレーションを選択できます。related-dimensionsが指定されていない場合、TALLYはdimensionの現行のステータスにある値の総数を返します。

使用上の注意

TALLYがNAを返す場合

TALLYは、対応するdimension値がないrelated-dimensionの位置にはNAを返します。

DWMQYディメンションとともに使用するTALLY

expressionがDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションによりディメンション化されている場合は、related-dimensionとして、他のどのDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションでも指定できます。Oracle OLAPでは、ディメンション間の暗黙的なリレーションを使用します。1つのDAY、WEEK、MONTH、QUARTERまたはYEARディメンションと別のディメンションとのマッピング(たとえば週から月)を制御するには、2つのディメンション間に明示的リレーションを定義し、そのリレーションの名前をTALLYファンクションのrelated-dimension引数として指定します。

Oracle OLAPは、関連ディメンションの期間ごとに、ターゲット期間に終了するすべてのソース期間を計算します。この方法は、どのディメンションがより上位の集計期間を保持しているかにかかわらず、適用されます。

例8-130 TALLYの結果の生成

ここでは、TALLYを使用して、各部門によって生産される製品の数を調べます。division.productリレーションは、各製品が属する部門を記録します。次の例は、division.productのレポートです。

PRODUCT          DIVISION.PRODUCT
---------------------------------
Tents          Camping
Canoes         Camping
Racquets       Sporting
Sportswear     Clothing
Footwear       Clothing

次の文には、各部門によって生産される製品の数を出力するTALLYが含まれています。

REPORT HEADING 'Products' TALLY(product, division)

この文によって生成されるレポートは次のとおりです。

DIVISION        Products
-------------------------
Camping                 2
Sporting                1
Clothing                2

TAN

TANファンクションは、三角式の正接を計算するファンクションです。

戻り値

NUMBER

構文

TAN(expression)

パラメータ

expression

ラジアン単位で指定された角度値を含む数式。

例8-131 角度の正接の計算

この例では、1ラジアンの角度の正接を計算します。次の文

DECIMALS = 5
SHOW TAN(1)

によって、次の結果が生成されます。

1.55741

TANH

TANHファンクションは、三角式の双曲線正接を計算するファンクションです。

戻り値

NUMBER

構文

TANH(expression)

パラメータ

expression

ラジアン単位で指定された角度値を含む数式。

例8-132 角度の双曲線正接の計算

この例では、1ラジアンの角度の双曲線正接を計算します。次の文

DECIMALS = 5
SHOW TANH(1)

によって、次の結果が生成されます。

0.76159

TCONVERT

TCONVERTファンクションは、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションの時系列データを、DAY、WEEK、MONTH、QUARTERまたはYEAR型の他のディメンションに変換するファンクションです。変換で使用する集計方法または割当て方法を指定できます。


重要:

このファンクションは、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションでのみ使用できます。TEXT型の階層ディメンションとして実装されている時間ディメンションには使用できません

戻り値

TCONVERTファンクションにより返される値は、指定した変換のタイプおよび変換するディメンションの型により異なります。

構文

TCONVERT(expression time-dimension method [method])

methodの構文は、使用する方法の種類によって次のように異なります。


SUM|AVERAGE|LAST [BY PERIOD|BY DAY] [STATUS|NOSTATUS]

SPLIT|REPEAT|INTERPOLATE [BY PERIOD|BY DAY]

パラメータ

expression

変換する値を含む式。expressionは、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションによりディメンション化されている必要があります。このディメンションは、ソース・ディメンションと呼ばれます。通常、expressionは数値ですが、一部の変換方法ではテキスト・データも変換できます。「テキスト・データの変換」を参照してください。

time-dimension

expressionの変換後のDAY、WEEK、MONTH、QUARTERまたはYEARディメンション。このディメンションは、ターゲット・ディメンションと呼ばれます。

method

データをソース・ディメンションからターゲット・ディメンションに変換する際に使用する方法。次の集計方法または割当て方法を指定できます。

  • 集計方法は、SUM、AVERAGEおよびLASTです。これらは通常、データを小さい方の時間間隔から大きい方の時間間隔(たとえば、月から年)に変換する際に使用されます。

  • 割当て方法は、SPLIT、REPEATおよびINTERPOLATEです。これらは通常、データを大きい方の時間間隔から小さい方の時間間隔(たとえば、年から四半期)に変換する際に使用されます。すべての割当て方法で、ソース・ディメンションの完全デフォルト・ステータスが使用されて、割当てに使用される期間が決定されます。

ソース・ディメンションおよびターゲット・ディメンションに重複する同じ長さの期間(暦年と会計年度など)が含まれる場合以外は、集計方法および割当て方法の両方を指定できます。「互換性のある集計方法と割当て方法」および「集計および割当ての両方の使用」を参照してください。

どの方法においても、ターゲット・ディメンションの現行のステータスにある値について結果が計算されます。

取得する結果は、指定した方法と、同じ長さの期間または異なる長さの期間のどちらを持つディメンション間でデータを変換するかによって異なります。「集計および割当ての両方の使用」「同じ長さの重複する期間」および「互換性のある代替方法」を参照してください。

SUM [BY PERIOD]

元となるソース期間のデータを合計することにより、ターゲット期間に対してデータを集計します。各ターゲット期間について、SUM BY PERIODはターゲット期間内で終了するすべてのソース期間の合計を返します。SUMは、ソースおよびターゲット・ディメンション間の暗黙的なリレーションを使用します。

SUM BY DAY

ソース値に含まれる各ターゲットの日数に従って、各ソース値に加重します。各ターゲット期間について、SUM BY DAYは元となる各ソース期間の値を、次の形式の加重係数で乗算しますが、ここで、source-days-in-targetは実際にターゲット期間に含まれるソース期間の日数、total-days-in-periodはソース期間の日数の合計です。

source-days-in-target / total-days-in-period

その後、SUM BY DAYはそれらの加重ソース値の合計を返します。SUM BY DAYを使用すると、個々のソース期間の値が、隣接するターゲット期間にまたがって分配されることがあります。

たとえば、週単位のデータを月単位のデータに変換するとします。週の3日間が1月に属し、4日間が2月に属する場合、SUM BY DAYはその週のデータの3/7を1月の合計に加算し、4/7を2月の合計に加算します。一方、SUM BY PERIODは週のデータ値全体を2月の合計に加算します(週が2月に終了するため)。

別の例として、暦年データを、6月に終了する会計年度に変換するとします。暦年1996(Cal96)は、会計年度1997(Fy97)に終了する唯一の暦年です。SUM BY PERIODメソッドでは、Cal96の値をFy97に割り当てます。一方、SUM BY DAYはCal96の値を、各会計年度に属する暦日の数に従って、会計年度Fy96Fy97に分配します。Cal96の366日のうち、182日(1月1日から6月30日)がFy96に属し、184日(7月1日から12月31日)がFy97に属します。このため、CAL96のデータについて、SUM BY DAYはFy96には加重係数182/366を、Fy97には加重係数184/366を使用します。

AVERAGE [BY PERIOD]

元となるソース期間のデータを平均することにより、ターゲット期間に対してデータを集計します。各ターゲット期間について、AVERAGE BY PERIODはターゲット期間内に終了するすべてのソース期間のデータを合計し、この合計をソース期間の数で除算します。AVERAGE BY PERIODは、2つの時間ディメンション間の暗黙的なリレーションを使用します。

AVERAGE BY DAY

ソース値に含まれる各ターゲットの日数に従って、元となる各ソース期間の値に加重します。各ターゲット期間について、AVERAGE BY DAYは各ソース期間の値を、実際にターゲット期間に含まれるソース期間の日数で乗算します。その後、それらの加重ソース値を合計し、ターゲット期間に含まれる合計日数で除算することにより平均が計算されます。AVERAGE BY DAYを使用すると、単一のソース期間の値が、隣接するターゲット期間にまたがって分配されることがあります。

LAST [BY PERIOD]

各ターゲット期間について、LAST BY PERIODはターゲット期間内で終了する最後のソース期間のデータ値を返します。ソース・ディメンションおよびターゲット・ディメンション間の暗黙的なリレーションが使用されます。

LAST BY DAY

小さい方の期間から大きい方の期間にデータを変換する場合は、LAST BY PERIODと同じ機能を持ちます。「互換性のある代替方法」を参照してください。

STATUS

ソース・ディメンションの現行のステータスが使用されることを示します。これは、SUMおよびAVERAGEメソッドのデフォルトです。

NOSTATUS

ソース・ディメンションの完全デフォルト・ステータスが使用されることを示します。これは、LASTメソッドのデフォルトです。

SPLIT [BY PERIOD]

ソース期間のデータを分割することにより、ターゲット期間にデータを割り当てます。SPLIT BY PERIODは、そのソース期間内に終了するターゲット期間の間で、ソース値を等分します。SPLIT BY PERIODは、2つのDAY、WEEK、MONTH、QUARTERまたはYEARディメンション間の暗黙的なリレーションを使用します。

SPLIT BY DAY

ソース値に含まれる各ターゲットの日数に従って、各ソース値に加重します。各ターゲット期間について、SPLIT BY DAYは元となる各ソース期間の値を、次の形式の加重係数で乗算しますが、ここで、target-days-in-sourceは実際にソース期間に含まれるターゲット期間の日数、total-period-daysはソース期間の日数の合計です。

target-days-in-source / total-period-days

その後、SPLIT BY DAYはそれらの加重ソース値の合計を返します。SPLIT BY DAYを使用すると、個々のソース期間の値が、隣接するターゲットにまたがって分配されることがあります。

REPEAT

各ターゲット期間について、REPEATはソース期間の値を返します。ターゲット期間は、ソース期間内に終了する期間です。REPEATは、ソースおよびターゲット・ディメンション間の暗黙的なリレーションを使用します。大きい方の期間から小さい方の期間にデータを変換する場合は、REPEAT BY DAYはREPEAT BY PERIODと同じ機能を持ちます。「互換性のある代替方法」を参照してください。

INTERPOLATE [BY PERIOD]

INTERPOLATEメソッドは、まず現行および前のソース期間の値の間にある差異を計算し、次に結果をターゲット期間に増分的に分割することにより、データをターゲット期間に割り当てます。INTERPOLATEは、現行および前のソース期間の間にある差異を、ソース期間内に終了するターゲット期間の数で除算し、この結果によって各ターゲット期間を増分します。

INTERPOLATE BY DAY

各ターゲット期間について、前のソース期間の値を次のように計算された値に加算します。ここで、end-daysは前のソース期間の終わりから現行のターゲット期間の終わりまでの日数で、period-daysは現行のソース期間に含まれる日の総数です。

(end-days / period-days) * (current-source-value - previous-source-value)

複数のソース期間にまたがる日がターゲット期間に含まれている場合、各ソース期間について同様の計算が行われます。

使用上の注意

TCONVERTから返される結果のディメンション

TCONVERTにより返される結果は、ターゲットのDAY、WEEK、MONTH、QUARTERまたはYEARディメンション、およびDAY、WEEK、MONTH、QUARTERまたはYEARディメンションではないすべてのexpressionディメンションによってディメンション化されます。

割当てで使用されるステータス

STATUSおよびNOSTATUSキーワードは、割当て方法には影響を与えません。割当て方法では、常にソース・ディメンションの完全デフォルト・ステータスが使用されて、元となる期間が決定されます。

互換性のある集計方法と割当て方法

ソース・ディメンションおよびターゲット・ディメンションに重複する同じ長さの期間が含まれる場合以外は、集計方法および割当て方法の両方を指定できます。ただし、2つの方法に互換性が必要です。表8-15「互換性のある集計方法と割当て方法」は、互換性のある方法を示しています。

表8-15 互換性のある集計方法と割当て方法

集計 互換性のある割当て

SUM

SPLIT

AVERAGE

REPEAT

LAST

INTERPOLATE


集計方法と割当て方法の両方を指定した場合、どちらかの方法にBY PERIODまたはBY DAYを使用できます。一方の方法にBY PERIODを(明示的にまたはデフォルトとして)指定して、もう一方の方法にBY DAYを指定した場合、BY DAYが優先されます。

集計および割当ての両方の使用

集計方法と互換性のある割当て方法の両方を指定した場合、Oracle OLAPはこれを次のように処理します。

  • 小さい方の期間から大きい方の期間にデータを変換する場合、Oracle OLAPは(BY DAYをどちらかの方法に指定した場合はBY DAYを使用して)集計方法を採用します。

  • 大きい方の期間から小さい方の期間にデータを変換する場合、Oracle OLAPは(BY DAYをどちらかの方法に指定した場合はBY DAYを使用して)割当て方法を採用します。

  • 3月に終了する四半期と6月に終了する四半期など、同じ長さの重複しない期間を持つディメンション間でデータを変換する場合、集計方法および割当て方法の結果は同じになります。

同じ長さの重複する期間

暦年と会計年度、または3月で終了する四半期と4月に終了する四半期など、同じ長さの重複する期間を持つ、DAY、WEEK、MONTH、QUARTERまたはYEAR型の2つのディメンション間でデータを変換する場合、集計方法または割当て方法のどちらかを指定する必要がありますが、両方を指定することはできません。これらのディメンションについて、互換性のある集計方法と割当て方法では異なる結果が生成される可能性があります。

たとえば、暦年ディメンションから6月に終了する会計年度ディメンションにデータを変換する場合、SUMおよびSPLITメソッドは次のように異なる結果を返します。

  • SUMメソッドは、ターゲット期間内に終了するソース期間のデータを合計します。暦年1996は会計年度1997内に終了するため、SUMメソッドは暦年1996の値を会計年度1997に割り当てます。

  • SPLITメソッドは、ソース・データ値を、ソース期間内に終了するターゲット期間に割り当てます。会計年度1996は暦年1996内に終了するため、SPLITメソッドは暦年1996の値を会計年度1996に割り当てます。

互換性のある代替方法

単一の変換方法を指定し、集計方法を使用してデータを大きい方の期間から小さい方の期間(たとえば、月から週など)に変換する場合、Oracle OLAPは自動的に、指定した集計方法のかわりに互換性のある割当て方法を使用します。同様に、割当て方法を使用してデータを小さい方の期間から大きい方の期間に変換する場合、Oracle OLAPは自動的に互換性のある集計方法を使用します。「互換性のある集計方法と割当て方法」を参照してください。

結果のデータ型

可能な場合、TCONVERTはexpressionと同じデータ型の結果を返します。expressionがDECIMALの場合、結果は常にDECIMALになります。expressionがINTEGERの場合、必要な計算に除算が含まれない場合は結果はINTEGERとなります。たとえば、2つのディメンションが揃っている(つまり、暦年ディメンションと12月に終了する四半期ディメンションなど、それらが同じフェーズを持っており、同じ期間に基づいている)場合、REPEATメソッドを使用してINTEGER expressionを大きい方の期間から小さい方の期間に変換する場合は、結果がINTEGERとなります。同様に、SUMまたはLASTメソッドを使用してexpressionを小さい方の期間から大きい方の期間に変換する場合、結果はINTEGERとなります。

テキスト・データの変換

TCONVERTを使用して、変換に数値計算が必要ない場合にテキスト式の値を変換することもできます。たとえば、揃っているディメンションの場合、LASTメソッドを使用してテキスト値を小さい方の期間から大きい方の期間に変換でき、REPEATメソッドを使用してテキスト値を大きい方の期間から小さい方の期間に変換できます。さらに、LASTおよびREPEATメソッドを使用すると、同じ長さの期間を持つディメンション間でテキスト・データを変換することもできます。数値計算が必要なメソッドを使用してテキスト式を変換しようとすると、エラー・メッセージが表示されます。

財務データのメソッド

財務データを扱う場合、各タイプのデータに適切な変換メソッドを使用できます。表8-16「様々なタイプの財務データの変換メソッドの例」に、いくつかの例を示します。

表8-16 様々なタイプの財務データの変換メソッドの例

財務データのタイプ 変換内容 変換メソッド

収入および経費

月から年

SUM

株価

日から四半期

AVERAGE

貸借対照表の項目

月から四半期

LAST

四半期ごとの納税

年から四半期

SPLIT BY PERIOD

マネー・サプライ

年から四半期

INTERPOLATE


TCONVERTでのNA値の処理

TCONVERTはNASKIPオプションの影響を受けます。NASKIPがNOに設定されている場合、TCONVERTはNA値を持つソース期間からデータを受け取るターゲット期間にNAを返します。

例8-133 四半期をまたがるデータの分割

この例は、SPLITメソッドとSPLIT BY DAYメソッドを使用して、$120,000の年間予算収入を1996年の各四半期に割り当てた場合の結果を示しています。既存のyearディメンションがソース・ディメンションで、既存のquarterディメンションがターゲット・ディメンションです。

次の文

DEFINE budget.revenue DECIMAL <year>
budget.revenue(year 'Yr96') = 120000
LIMIT quarter TO year 'Yr96'
REPORT W 12 HEADING 'Split Evenly' -
   TCONVERT(budget.revenue quarter SPLIT) -
   W 12 HEADING 'Split by Day' -
   TCONVERT(budget.revenue quarter Split by day)

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

QUARTER        Split Evenly Split by Day
-------------- ------------ ------------
Q1.96             30,000.00    29,836.07
Q2.96             30,000.00    29,836.07
Q3.96             30,000.00    30,163.93
Q4.96             30,000.00    30,163.93

例8-134 TCONVERTを使用した週単位から月単位へのデータの集計

この例では、週単位のデータを月単位のデータに集計します。まず、weekという名前の週ディメンションを定義し、1996年1月1日から1996年6月30日までの日付を含む週を追加します(間の週はOracle OLAPによって自動的に追加されます)。

DEFINE week DIMENSION WEEK
MAINTAIN week ADD '01Jan96' '30Jun96'

次に、weekによりディメンション化されるweekvarという名前の変数を定義し、各週に値7を割り当てます。

DEFINE weekvar DECIMAL <week>
weekvar = 7

次の文を発行すると、weekvarに非NAデータが含まれる最初の週の開始日が1995年12月31日で、weekvarに非NAデータが含まれる最後の週の終了日が1996年7月6日であることが表示されます。

SHOW BEGINDATE(weekvar)
SHOW ENDDATE(weekvar)

この文によって生成される出力は次のとおりです。

31Dec95
06Jul96

これらの開始日と終了日に基づき、月単位のデータに変換される際、データはDec95からJul96までの月を基準として集計されます。次の文は、SUMメソッドとSUM BY DAYメソッドを使用して、weekvarの週単位のデータを月単位のデータに変換した場合の結果を出力します。

LIMIT month TO 'Jan96' TO 'Jul96'
REPORT HEADING 'Sum' TCONVERT(weekvar month SUM) -
   HEADING 'Sum by Day' -
   TCONVERT(weekvar month SUM BY day)

この文によって生成されるレポートは次のとおりです。

MONTH              Sum    Sum by Day
-------------- ---------- ----------
Jan96               28.00      31.00
Feb96               28.00      29.00
Mar96               35.00      31.00
Apr96               28.00      30.00
May96               28.00      31.00
Jun96               35.00      30.00
Jul96                7.00       6.00

TEXTFILL

TEXTFILLファンクションは、テキスト値の書式を再設定して、現行の書式にかかわらず指定した幅の行に収めるファンクションです。TEXTFILLは通常、行の幅に統一性がなく右側に不必要な余白があるテキストや、特に幅の大きい行があるテキストの書式を再設定する際に使用されます。


注意:

TEXTFILLは書式の再設定時にテキストの行を結合し、一方、ROWおよびREPORTは行を結合せずに書式を再設定します。例8-135「ROW内でのTEXTFILLの影響」を参照してください。

戻り値

TEXTまたはNTEXT

構文

TEXTFILL(text-expressionwidth)

パラメータ

text-expression

データの現行の書式にかかわらず、指定した幅に書式を再設定する対象のテキスト式。TEXT式を指定すると、戻り値はTEXTです。NTEXT式を指定すると、戻り値はNTEXTです。

width

データの書式が再設定される幅。1から132までのINTEGER値として指定します。

構造化されたレポートでは、指定された幅がレポートの列の幅を超えない場合、TEXTFILLはtext-expressionの書式をその幅に再設定します。widthの値が列の幅を超える場合、TEXTFILLはそれを無視し、式の書式は列の幅に再設定されます。

TEXTFILLは、単語間に空白を1つのみ配置して余分な空白を削除することにより、text-expressionの単語をできるだけ多く1行に収めます。単語がwidthより長い場合、TEXTFILLは2行以上に分割します。この場合、行の最後に余分な空白が配置されることがあります。

例8-135 ROW内でのTEXTFILLの影響

次の例は、適切に書式が設定されたテキスト変数textvarを使用して、ROWコマンド内でTEXTFILLを使用した場合の影響を示しています。

次の文

SHOW textvar

によって、次の出力が生成されます。

You can use the following options to control the format of 
   your display.
 
   BMARGIN    Controls the bottom margin.
   COLWIDTH   Controls column width.
   COMMAS     Controls the use of commas in numbers.
   DECIMALS   Controls number of decimal places in numbers.
   LSIZE      Controls the maximum length of a line.
   NASPELL    Controls the spelling of NA values in output.

次のROW文

ROW W 50 textvar

によって、次の出力が生成されます。

You can use the following options to control the
format of your
display.
BMARGIN       Controls the bottom margin.
COLWIDTH      Controls column width.
COMMAS        Controls the use of commas in
numbers.
DECIMALS      Controls the number of decimal
places in numbers.
LSIZE         Controls the maximum length of a
line.
NASPELL       Controls the spelling of NA values
in output.

それに対して、TEXTFILLを指定したROW文

ROW W 50 TEXTFILL(textvar, 50)

によって、次の出力が生成されます。

You can use the following options to control the
format of your display. BMARGIN Controls the
bottom margin. COLWIDTH Controls column width.
COMMAS Controls the use of commas in numbers.
DECIMALS Controls the number of decimal places in
numbers. LSIZE Controls the maximum length of a 
line. NASPELL Controls the spelling of NA values
in output. 

TO_BINARY_DOUBLE

TO_BINARY_DOUBLEファンクションは、テキスト式または数式をDECIMALの数式に変換します。

戻り値

DECIMAL

構文

TO_BINARY_DOUBLE(expr [, fmt [, nlsparam ] ])

パラメータ

expr

テキスト式または数式。exprがテキスト式の場合、次の値(大/小文字を区別しない)が特定の値に変換されます。

  • INF: 正の無限大に変換されます。

  • -INF: 負の無限大に変換されます。

  • NaN: NaN(非数)に変換されます

fmt

数値の書式モデルを指定するテキスト式。この引数は、exprがテキスト式の場合にのみ有効です。


関連項目:

『Oracle Database SQL言語リファレンス』の数値書式モデルに関する項

数値のデフォルトの書式モデルでは、NLS_NUMERIC_CHARACTERSによって指定される小数点と3桁区切りが使用されます。


注意:

テキスト式では、浮動小数点数の書式要素(F、f、D、またはd)は使用できません。

nlsparams

テキスト式を変換する際に使用する3桁区切り、小数点および通貨記号を指定するテキスト式。この引数は、exprがテキスト式の場合にのみ有効です。この式には、次の1つ以上のパラメータを含め、カンマで区切ります。

NLS_CURRENCY symbol 

NLS_ISO_CURRENCY territory 

NLS_NUMERIC_CHARACTERS dg 

TO_BINARY_FLOAT

TO_BINARY_FLOATファンクションは、テキスト式または数式をSHORTDECIMALの数式に変換します。

戻り値

SHORTDECIMAL

構文

TO_BINARY_FLOAT(expr [, fmt [, nlsparam ] ])

パラメータ

expr

テキスト式または数式。exprがテキスト式の場合、次の値(大/小文字を区別しない)が特定の値に変換されます。

  • INF: 正の無限大に変換されます。

  • -INF: 負の無限大に変換されます。

  • NaN: NaN(非数)に変換されます

fmt

数値の書式モデルを指定するテキスト式。この引数は、exprがテキスト式の場合にのみ有効です。


関連項目:

『Oracle Database SQL言語リファレンス』の数値書式モデルに関する項

数値のデフォルトの書式モデルでは、NLS_NUMERIC_CHARACTERSによって指定される小数点と3桁区切りが使用されます。


注意:

テキスト式では、浮動小数点数の書式要素(F、f、D、またはd)は使用できません。

nlsparams

テキスト式を変換する際に使用する3桁区切り、小数点および通貨記号を指定するテキスト式。この引数は、exprがテキスト式の場合にのみ有効です。この式には、次の1つ以上のパラメータを含め、カンマで区切ります。

NLS_CURRENCY symbol 

NLS_ISO_CURRENCY territory 

NLS_NUMERIC_CHARACTERS dg 

TO_CHAR

TO_CHARファンクションは、DATETIME、数値またはNTEXT式を、指定した書式のTEXT式に変換するファンクションです。このファンクションは通常、出力データの書式の設定に使用されます。

戻り値

TEXT

構文

TO_CHAR(datetime-exp, [datetime-fmt,] [option setting])

または

TO_CHAR(num-exp, [num-fmt,] [nlsparams])

または

TO_CHAR(ntext-exp)

パラメータ

datetime-exp

TEXTに変換されるDATETIME式。

datetime-fmt

日時書式テンプレートを指定するテキスト式。このテンプレートでDATETIMEデータ型からTEXTへの変換方法を指定します。日時書式テンプレートの詳細は、表9-4「日時の書式要素」を参照してください。datetime-fmtのデフォルト値は、NLS_DATE_FORMATオプションによって制御されます。

option setting

現在セッションで有効な設定を一時的に上書きするOLAPオプション(NLS_DATE_LANGUAGEなど)およびその新しい設定。一般に、このオプションにはdatetime-expの翻訳対象の言語を指定します。例8-138「現在日時のスペイン語での表示」を参照してください。

他のオプションを設定するオプションは指定しないでください。たとえば、NLS_DATE_LANGUAGEやNLS_TERRITORYは設定せず、かわりにNLS_DATE_LANGUAGEを設定してください。TO_CHARは、文の実行中にのみ新しい値を保持できるように、指定したオプションの現行の設定を保存およびリストアしますが、そのオプションの変更結果を保存およびリストアできません。たとえば、NLS_TERRITORYは、NLS_DATE_FORMAT、NLS_NUMERIC_CHARACTERS、NLS_CURRENCY、NLS_CALENDARなどの値およびその他のオプションを制御します。TO_CHARに対するコールでNLS_TERRITORYの値を変更した場合、すべてのオプションはそれらの領域に適したデフォルト値に2回リセットされます(1回目はNLS_TERRITORYがTO_CHAR文の実行中にその新しい値に設定されたとき、2回目はNLS_TERRITORYの保存された値がリストアされたとき)。

num-exp

TEXTに変換される数式。

num-fmt

数値の書式モデルを示すテキスト式。このモデルは、数値データ型(NUMBER、INTEGER、SHORTINTEGER、LONGINTEGER、DECIMAL、SHORTDECIMAL)からTEXTへの変換の実行方法を指定します。

数値のデフォルトの書式モデルでは、NLS_NUMERIC_CHARACTERSによって指定される小数点と3桁区切りが使用されます。


関連項目:

『Oracle Database SQL言語リファレンス』の数値書式モデルに関する項

nlsparams

num-expで使用される3桁区切り、小数点および通貨記号を指定するテキスト式。この式には、次の1つ以上のパラメータを含め、カンマで区切ります。

NLS_CURRENCY symbol 

NLS_ISO_CURRENCY territory 

NLS_NUMERIC_CHARACTERS dg 

symbol

各国通貨記号を指定するテキスト式。11文字以上を指定することはできません。

territory

ISO通貨記号が使用されている地域を示すテキスト式。

dg

小数点(d)および3桁区切り(g)を示す、2つの異なるシングルバイト文字で構成されるテキスト式。

これらのパラメータは、NLS_CURRENCY、NLS_ISO_CURRENCYおよびNLS_NUMERIC_CHARACTERSオプションにより指定されるデフォルト値を上書きします。

ntext-exp

TEXTに変換されるNTEXT式。NTEXTからTEXTへの変換では、NTEXT値がデータベース・キャラクタ・セットで表せない場合、データの損失をまねくことがあります。

使用上の注意

TO_CHARによる数値データ型の処理

TO_CHARファンクションは、INTEGER、SHORTINTEGER、LONGINTEGER、DECIMALおよびSHORTDECIMAL値を、TEXTに変換する前にNUMBERに変換します。このため、TO_CHARはNUMBER値を他の数値データ型より速く変換します。

TO_CHARの端数処理により発生する可能性のある影響

数値のすべての書式モデルにより、数値が指定した有効桁数に端数処理されます。表8-17「端数処理により発生する可能性のある影響」に、端数処理による一部の影響を示します。

表8-17 端数処理により発生する可能性のある影響

num-expの条件 戻り値への影響 

小数桁の左側に、書式で指定された数より多くの有効桁がある場合

番号記号(#)で表示

指定した書式で表示できない非常に大きい正の値である場合

ティルド(~)で表示。

指定した書式で表示できない非常に小さい負の値である場合

負の記号とその後に続くティルド(-~)で表示


例8-136 日付のCHARへの変換

次の文では、今日の日付を変換し、書式を指定します。

SHOW TO_CHAR(SYSDATE, 'Month DD, YYYY HH24:MI:SS')

指定した日付書式に従った日付と時刻が表示されます。

November  30, 2000 10:01:29

例8-137 数値のテキストへの変換

この文では、数値をテキストに変換し、小数点として空白を、3桁区切りとしてピリオドを指定します。

SHOW TO_CHAR(1013.50, NA, NLS_NUMERIC_CHARACTERS ' .')

この結果、値1013.50は、次のように表示されます。

1.013 50

例8-138 現在日時のスペイン語での表示

次の文では、デフォルトの言語をスペイン語に設定し、新しい日付書式を指定します。

NLS_DATE_LANGUAGE = 'spanish'
NLS_DATE_FORMAT = 'Day: Month dd, yyyy HH:MI:SS am'

次の文により、現在の日付と時刻がスペイン語で表示されます。

SHOW TO_CHAR(SYSDATE)
Viernes  : Diciembre  01, 2000 08:21:17 AM

NLS_DATE_LANGUAGEオプションは、文の実行中に言語を変更します。次の文により、日付と時刻がドイツ語で表示されます。

SHOW TO_CHAR(SYSDATE, NA, NLS_DATE_LANGUAGE 'german')
Freitag   : Dezember  01, 2000 08:26:00 AM 

TO_DATE

TO_DATEファンクションは、書式が設定されたTEXTまたはNTEXT式を、DATETIME値に変換するファンクションです。

戻り値

DATETIME

構文

TO_DATE(text-exp, [fmt,] [option setting])

パラメータ

text-exp

変換する日付を含むテキスト式。式には、TEXTまたはNTEXTデータ型を使用できます。NTEXT値を日付として解釈できない場合は、NTEXTからの変換は不適切な結果となります。

fmt

日時書式テンプレートを指定するテキスト式。このテンプレートでテキストからDATETIMEへの変換方法を指定します。日時書式テンプレートの詳細は、表9-4「日時の書式要素」を参照してください。

option setting

現在セッションで有効な設定を一時的に上書きするOLAPオプション(NLS_DATE_LANGUAGEなど)およびその新しい設定。通常、このオプションはtext-expの言語がセッションの言語と異なる場合にその言語を指定します。例8-140「デフォルト言語および日付書式の指定」を参照してください。

他のオプションを設定するオプションは指定しないでください。たとえば、NLS_LANGUAGEやNLS_TERRITORYは設定せず、かわりにNLS_DATE_LANGUAGEを設定してください。TO_DATEは、文の実行中にのみ新しい値を保持できるように、指定したオプションの現行の設定を保存およびリストアしますが、そのオプションの変更結果を保存およびリストアできません。たとえば、NLS_TERRITORYは、NLS_DATE_FORMAT、NLS_NUMERIC_CHARACTERS、NLS_CURRENCY、NLS_CALENDARなどの値およびその他のオプションを制御します。TO_DATEに対するコールでNLS_TERRITORYの値を変更した場合、すべてのオプションはそれらの領域に適したデフォルト値に2回リセットされます(1回目はNLS_TERRITORYがTO_DATE文の実行中にその新しい値に設定されたとき、2回目はNLS_TERRITORYの保存された値がリストアされたとき)。

使用上の注意

大文字の使用

書式要素において単語、略称またはローマ数字で大文字が使用されると、対応する大文字が戻り値に生成されます。たとえば、書式要素DAYによりMONDAYが、DayによりMondayが、dayによりmondayが生成されます。

認識されない日付

TO_DATEがfmtを使用して、有効なDATE値で値を構成できない場合、エラーが返されます。たとえば、fmtが句読記号文字を示す場合で、text-expに英数字が含まれる場合、エラーが発生します。

例8-139 テキスト値のDATE値への変換

次の文は、January 15, 2002, 11:00 A.M.を、デフォルトの日付書式である15JAN02に変換し、その値をbonusdateという名前のDATE変数に格納します。

bonusdate = TO_DATE('January 15, 2002, 11:00 A.M.', -
   'Month dd, YYYY, HH:MI A.M.')

例8-140 デフォルト言語および日付書式の指定

次の文では、デフォルトの言語をスペイン語に設定し、新しい日付書式を指定します。NLS_DATE_LANGUAGEオプションをTO_DATEファンクションで使用して、米語の月の名前を変換できます。

NLS_DATE_FORMAT = 'Day: Month dd, yyyy HH:MI:SS am'
NLS_DATE_LANGUAGE = 'spanish'
SHOW TO_DATE('November 15, 2001', 'Month dd, yyyy', -
   NLS_DATE_LANGUAGE 'american')

日付が米語からスペイン語に変換され、新しい日付書式で表示されます。

Jueves   : Noviembre  15, 2001 12:00:00 AM 

TO_DSINTERVAL

TO_DSINTERVALファンクションは、文字をDSINTERVAL値に変換するファンクションです。

戻り値

DSINTERVAL

構文

TO_DSINTERVAL(char)


パラメータ

char

変換する文字列を指定します。

TO_NCHAR

TO_NCHARファンクションは、TEXT式、日付または数値を、指定した書式でNTEXT式に変換するファンクションです。このファンクションは通常、出力データの書式の設定に使用されます。

戻り値

NTEXT

構文

TO_NCHAR(text-exp)

または

TO_NCHAR(datetime-exp, [datetime-fmt,] [option setting]

または

TO_NCHAR(num-exp, [num-fmt,] [nlsparams]

パラメータ

text-exp

NTEXTに変換されるTEXT式。

datetime-exp

NTEXTに変換されるDATETIME式。

datetime-fmt

日時書式テンプレートを指定するテキスト式。このテンプレートでDATETIMEデータ型からNTEXTへの変換方法を指定します。日時書式テンプレートの詳細は、表9-4「日時の書式要素」を参照してください。datetime-fmtのデフォルト値は、NLS_DATE_FORMATオプションによって制御されます。

option setting

現在セッションで有効な設定を一時的に上書きするOLAPオプション(NLS_DATE_LANGUAGEなど)およびその新しい設定。一般に、このオプションにはdatetime-expの翻訳対象の言語を指定します。例8-143「デフォルト言語および日付書式の指定」を参照してください。

他のオプションを設定するオプションは指定しないでください。たとえば、NLS_LANGUAGEやNLS_TERRITORYは設定せずに、かわりにNLS_DATE_LANGUAGEを設定してください。TO_NCHARは、文の実行中にのみ新しい値を保持できるように、指定したオプションの現行の設定を保存およびリストアしますが、そのオプションの変更結果を保存およびリストアできません。たとえば、NLS_TERRITORYは、NLS_DATE_FORMATE、NLS_NUMERIC_CHARACTERS、NLS_CURRENCY、NLS_CALENDARなどのオプションの値を制御します。TO_NCHARに対するコールでNLS_TERRITORYの値を変更した場合、すべてのオプションはそれらの領域に適したデフォルト値に2回リセットされます(1回目はNLS_TERRITORYがTO_NCHAR文の実行中にその新しい値に設定されたとき、2回目はNLS_TERRITORYの保存された値がリストアされたとき)。

num-exp

NTEXTに変換される数式。

num-fmt

数値の書式モデルを示すテキスト式。このモデルは、数値データ型(NUMBER、INTEGER、SHORTINTEGER、LONGINTEGER、DECIMAL、SHORTDECIMAL)からTEXTへの変換の実行方法を指定します。


関連項目:

『Oracle Database SQL言語リファレンス』の数値書式モデルに関する項

数値のデフォルトの書式モデルでは、NLS_NUMERIC_CHARACTERSオプションにより識別される小数点と3桁区切りが使用されます。

nlsparams

num-expで使用される3桁区切り、小数点および通貨記号を指定するテキスト式。この式には、次の1つ以上のパラメータを含め、カンマで区切ります。

NLS_CURRENCY symbol 

NLS_ISO_CURRENCY territory 

NLS_NUMERIC_CHARACTERS dg 

symbol

各国通貨記号を指定するテキスト式。11文字以上を指定することはできません。

territory

ISO通貨記号が使用されている地域を示すテキスト式。

dg

小数点(d)および3桁区切り(g)を示す、2つの異なるシングルバイト文字で構成されるテキスト式。

これらのパラメータは、NLS_CURRENCY、NLS_ISO_CURRENCYおよびNLS_NUMERIC_CHARACTERSオプションにより指定されるデフォルト値を上書きします。

例8-141 日付の変換

次の文では、今日の日付を変換し、書式を指定します。

SHOW TO_NCHAR(SYSDATE, 'Month DD, YYYY HH24:MI:SS')

指定した日付書式に従った日付と時刻が表示されます。

November  30, 2000 10:01:29

例8-142 数値データのNTEXTデータへの変換

この文では、数値をNTEXTに変換し、小数点として空白を、3桁区切りとしてピリオドを指定します。

SHOW TO_NCHAR(1013.50, NA, NLS_NUMERIC_CHARACTERS ' .')

この結果、値1013.50は、次のように表示されます。

1.013 50

例8-143 デフォルト言語および日付書式の指定

次の文では、デフォルトの言語をスペイン語に設定し、新しい日付書式を指定します。

NLS_DATE_LANGUAGE = 'spanish'
NLS_DATE_FORMAT = 'Day: Month dd, yyyy HH:MI:SS am'

次の文

SHOW TO_NCHAR(SYSDATE)

によって、次のように現在の日付と時刻がスペイン語で表示されます。

Viernes  : Diciembre  01, 2000 08:21:17 AM

NLS_DATE_LANGUAGEオプションは、文の実行中に言語を変更します。次の文

SHOW TO_NCHAR(SYSDATE, NA, NLS_DATE_LANGUAGE 'german')

によって、次のように日付と時刻がドイツ語で表示されます。

Freitag   : Dezember  01, 2000 08:26:00 AM

TO_NUMBER

TO_NUMBERファンクションは、書式が設定されたTEXTまたはNTEXT式を、数値に変換するファンクションです。このファンクションは通常、通貨記号、小数点、3桁区切りなどを含むアプリケーションで、書式が設定されている数値出力を他のアプリケーションの入力として使用できるように変換するために使用します。

戻り値

NUMBER。書式モデルにMISまたはPRの書式要素が含まれている場合以外は、負の戻り値の前には負の記号が含まれ、正の値の名前には空白が含まれます。

構文

TO_NUMBER(text-exp, [fmt,] [nlsparams])

パラメータ

text-exp

変換する数値を含むテキスト式。式には、TEXTまたはNTEXTデータ型を使用できます。NTEXT値を数値として解釈できない場合は、NTEXTからの変換は不適切な結果となります。

fmt

数値の書式モデルを示すテキスト式。このモデルは、NUMBERへの変換の実行方法を指定します。


関連項目:

『Oracle Database SQL言語リファレンス』の数値書式モデルに関する項

デフォルトの数値書式では、ピリオド(.)が小数点として識別され、他の記号は認識されません。

nlsparams

text-expで使用される3桁区切り、小数点および通貨記号を指定するテキスト式。この式には、次の1つ以上のパラメータを含め、カンマで区切ります。

NLS_CURRENCY symbol 

NLS_ISO_CURRENCY territory 

NLS_NUMERIC_CHARACTERS dg 

symbol

各国通貨記号を指定するテキスト式。11文字以上を指定することはできません。

territory

ISO通貨記号が使用されている地域を示すテキスト式。

dg

小数点(d)および3桁区切り(g)を示す、2つの異なるシングルバイト文字で構成されるテキスト式。

これらのパラメータは、NLS_CURRENCY、NLS_ISO_CURRENCYおよびNLS_NUMERIC_CHARACTERSオプションにより指定されるデフォルト値を上書きします。追加情報は、NLSオプションの項を参照してください。

使用上の注意

デフォルトの数値書式値

一部の書式の値は、NLS_TERRITORYの値によって決定されます

TO_NUMBERの端数処理により発生する可能性のある影響

数値のすべての書式モデルにより、数値が指定した有効桁数に端数処理されます。表8-17「端数処理により発生する可能性のある影響」に、端数処理による一部の影響を示します。

例8-144 テキスト・データの10進データへの変換

次の文で、テキスト文字列が現在の数値の書式(米語)のDECIMALデータ型に変換されます。text-expパラメータは、欧語の書式のテキスト文字列です。fmtパラメータは、現地の通貨記号(L)、3桁区切り文字(G)および小数点記号(D)を表します。text-expパラメータのGおよびDの書式がセッションの現行の設定とは異なるため、NLS_NUMERIC_CHARACTERSオプションにこれらの書式で使用されている文字を指定します。text_expDはカンマで、Gはスペースです。

DEFINE money VARIABLE DECIMAL
money = TO_NUMBER('$94 567,00', 'L999G999D00', NLS_NUMERIC_CHARACTERS ', ')
SHOW money

この文によって生成される出力は次のとおりです。

94,567.00 

TO_TIMESTAMP

TO_TIMESTAMPファンクションは、テキスト・データをTIMESTAMPデータ型の値に変換するファンクションです。

戻り値

TIMESTAMP

構文

TO_TIMESTAMP(char-exp [, fmt [ 'nlsparam' ] ])

パラメータ

char-exp

変換するテキスト式。

fmt

テキスト式の変換に使用する日時書式テンプレートを指定します。日時書式テンプレートの詳細は、表9-4「日時の書式要素」を参照してください。

この引数を省略した場合は、オブジェクトに対してTIMESTAMPのデフォルトの書式が使用されます。

nlsparam

戻り値となる月や曜日の名前と省略形に使用する言語を指定します。この引数は次のような形式で指定できます。

'NLS_DATE_LANGUAGE = language' 

この引数を省略した場合、このファンクションではセッションのデフォルトの日付の言語が使用されます。

例8-145 タイムスタンプ・データへの変換とタイムスタンプ・データからの抽出

SHOW NLS_DATE_FORMAT
DD-MON-RR

SHOW TO_TIMESTAMP('10-SEP-0614:10:10:10.123000' 'DD MON RR HH24:MI:SS.FF')
10-SEP-14 10.10.10.123 AM

SHOW TO_TIMESTAMP_TZ ('2006-03-26 7:33:00 -4:00', 'YYYY-MM-DD HH:MI:SS TZH:TZM')
26-MAR-06 07.33.00 AM -04:00

DEFINE mytimestamp VARIABLE TIMESTAMP
DEFINE mytimezone VARIABLE TEXT
DEFINE mytimestamptz VARIABLE TIMESTAMP_TZ
mytimestamp = '26-MAR-06'
mytimezone = '-04:00'
mytimestamptz = FROM_TZ (mytimestamp mytimezone)
REPORT mytimestamptz
 
MYTIMESTAMPTZ
------------------------------
  26-MAR-06 12.00.00 AM -04:00
SHOW EXTRACT (TIMEZONE_HOUR FROM mytimestamptz)
-4.00

TO_TIMESTAMP_TZ

TO_TIMESTAMP_TZファンクションは、テキスト・データをTIMESTAMP_TZデータ型の値に変換するファンクションです。

戻り値

TIMESTAMP_TZ

構文

TO_TIMESTAMP_TZ (char-exp [, fmt [ 'nlsparam' ] ])

パラメータ

char-exp

変換するテキスト式。

fmt

テキスト式の変換に使用する日時書式テンプレートを指定します。日時書式テンプレートの詳細は、表9-4「日時の書式要素」を参照してください。

この引数を省略した場合は、オブジェクトに対してTIMESTAMP_TZのデフォルトの書式が使用されます。

nlsparam

戻り値となる月や曜日の名前と省略形に使用する言語を指定します。この引数は次のような形式で指定できます。

'NLS_DATE_LANGUAGE = language' 

この引数を省略した場合、このファンクションではセッションのデフォルトの日付の言語が使用されます。

例8-146 テキスト・データのTIMESTAMP_TZデータへの変換

SHOW TO_TIMESTAMP_TZ ('2006-03-26 7:33:00 -4:00', 'YYYY-MM-DD HH:MI:SS TZH:TZM')
26-MAR-06 07.33.00 AM -04:00

TO_YMINTERVAL

TO_YMINTERVALファンクションは、文字をYMINTERVAL値に変換するファンクションです。

戻り値

YMINTERVAL

構文

TO_YMINTERVAL(char)


パラメータ

char

変換する文字列を指定します。

TOD

TODファンクションは、24時間の書式を使用したhh:mm:ssの形式で現在の時刻を返すファンクションです。

戻り値

ID

構文

TOD

例8-147 現在の時刻の表示

次の文により、現在の時刻が現行の出力ファイルに送信されます。

show tod

この文によって生成される出力は、次のとおりです。

17:30:46

TODAY

TODAYファンクションは、現在の日付をDATE値またはTEXT値として返すファンクションです。

戻り値

予期されるデータ型に応じてDATEまたはTEXT

  • DATE

    返されるDATE値を表示すると、値の書式はDATEFORMATオプションの日付テンプレートによって指定されている書式になります。日付テンプレートで曜日または月名が使用されている場合、TODAYはDAYNAMESオプションで指定されている曜日名と、MONTHNAMESオプションで指定されている月名を使用します。

  • TEXT

    テキスト値が予期される場合。TODAYは、日付を自動的にTEXT値に変換し、その際、DATEFORMATオプションの現行のテンプレートを使用して、テキスト値の書式が設定されます。現行のDATEFORMATテンプレートを上書きする場合は、date-format引数を指定したCONVERTファンクションを使用することによって、日付の結果をテキストに変換できます。

構文

TODAY

例8-148 今日の日付の表示

次の文により、現在の日付がDATE書式で現行の出力ファイルに送信されます。

DATEFORMAT = '<wtextl> <mtextl> <d>, <yyyy>'
SHOW TODAY

現在の日付が1996年1月15日の場合、これらの文によって生成される出力は次のとおりです。

Monday January 15, 1996

例8-149 TODAYファンクションを使用した日付の計算

次の文により、今日から60日後の日付が計算されます。

SHOW TODAY + 60

現在の日付が1996年1月15日の場合、この文によって生成される出力は次のとおりです。

Friday March 15, 1996

TOTAL

TOTALファンクションは、式の値の合計を計算するファンクションです。

戻り値

式のデータ型。INTEGER、LONGINTまたはDECIMALになります。

構文

TOTAL(expression [CACHE] [dimension...])

パラメータ

expression

合計する対象の式。

CACHE

内部動作が若干変更されます。このキーワードは、元のパフォーマンスが非常に遅い場合にのみ指定してください。

dimension

結果のディメンションの名前。または、expressionの1つのディメンションと結果のディメンションとする別のディメンションとの間のリレーションの名前。

デフォルトでは、TOTALは単一の値を返します。結果のディメンションを1つ以上指定した場合、TOTALは、指定されたディメンションに対して値を計算し、値の配列を返します。各ディメンションは、expressionのディメンションであるか、そのディメンションの1つと関連している必要があります。


ヒント:

指定したディメンションがexpressionの実際のディメンションではなくexpressionのディメンションに関連付けられたディメンションであり、かつ2つのディメンション間のリレーションが2つ以上ある場合は、ディメンション間のデフォルトのリレーションを使用して計算が行われます。(デフォルトのリレーションの詳細は、RELATIONコマンドを参照してください。)Oracle OLAPでこのデフォルトのリレーションを使用しない場合は、リレーションの名前を指定して、関連付けられたディメンションを指定します。

使用上の注意

TOTALでのNA値の処理

TOTALはNASKIPオプションの影響を受けます。NASKIPがYESに設定されている場合(デフォルト)、TOTALはNA値を無視し、非NA値の合計を返します。NASKIPがNOに設定されている場合、計算に含まれる値にNAが1つでもあると、TOTALはNAを返します。計算に含まれるすべてのデータ値がNAの場合には、NASKIPの設定にかかわらず、TOTALはNAを返します。

DWMQYディメンションでの合計

expressionがDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションによってディメンション化されている場合、それ以外のDAY、WEEK、MONTH、QUARTERまたはYEARディメンションを関連dimensionとして指定できます。Oracle OLAPでは、ディメンション間の暗黙的なリレーションを使用します。1つのDAY、WEEK、MONTH、QUARTERまたはYEARディメンションと別のディメンションとのマッピング(たとえば週から月)を制御するには、2つのディメンション間に明示的リレーションを定義し、そのリレーションの名前をTOTALファンクションのdimension引数として指定します。

Oracle OLAPは、関連ディメンションの期間ごとに、ターゲット期間に終了するすべてのソース期間のデータを合計します。この方法は、どのディメンションがより上位の集計期間を保持しているかにかかわらず、適用されます。2つの時間ディメンションの期間の間でデータを集計または割り当てる方法を制御するには、TCONVERTファンクションを使用します。

TOTALファンクションの複数リレーション

関連ディメンションによって合計を中断すると、式のディメンション性を変更しているため、Oracle OLAPはこの新しいディメンション性に基づく値を必要とします。そのディメンションの値を保持するリレーションを選択します。

Oracle OLAPは、必要なディメンションの値を保持するリレーションが複数ある場合、最初に定義されたリレーションを使用します。関連ディメンションが必要なディメンションとなるリレーションが存在しない場合、必要なディメンションによってディメンション化されるリレーションを検索します。

たとえば、districtおよびregionの間に次のような2つのリレーションがあるとします。

DEFINE REGION.DISTRICT RELATION REGION <DISTRICT>
LD The region each district belongs to
 
DEFINE DISTRICT.REGION RELATION DISTRICT <REGION>
LD The primary district in each region

アナリティック・ワークスペースに前述の2つのリレーションが存在するときに次のTOTALファンクションを指定した場合、指定したディメンションの値はリレーションregion.districtに格納されているため、Oracle OLAPではデフォルトでこのリレーションが使用されます。

REPORT TOTAL(sales region)

例8-150 すべての月の売上の合計

地区ごとのすべての月のスポーツウェアの合計売上を調べるとします。TOTALファンクションを使用して、売上総額を計算します。各地区の合計を参照するには、結果のディメンションとしてdistrictを指定します。

LIMIT product TO 'Sportswear'
REPORT W 15 HEADING 'Total Sales' TOTAL(sales district)

この文によって生成される出力は、次のとおりです。

DISTRICT         Total Sales
-------------- ---------------
Boston            1,659,609.90
Atlanta           3,628,616.62
Chicago           2,296,631.81
Dallas            3,893,829.30
Denver            2,133,425.29
Seattle           1,298,215.59

TRANSLATE

TRANSLATEファンクションは、ある文字列に出現する各文字をそれぞれ対応する別の文字列の文字に置き換えるファンクションです。


注意:

TRANSLATEでは、REPLCHARSファンクションの機能に関連した機能が提供されます。REPLCHARSは、ある文字列を別の単一の文字列に置き換える機能や文字列を削除する機能を持つファンクションです。TRANSLATEでは、一度の操作で複数の単一の文字を1つずつ置き換えることが可能です。

戻り値

テキスト。

構文

TRANSLATE ( exp from_string to_string)

パラメータ

exp

置き換えられる文字を含むテキスト式。

from_string

置換え対象の文字を表すテキスト式。

to_string

from_stringの順序で置換えに使用する文字を表すテキスト式。この引数に指定した文字数がfrom_stringに指定した文字数よりも少ない場合、from_stringの残りの文字がこのファンクションによって戻り値から削除されます。ただし、空の文字列はNULL引数として解釈されるため、from_stringのすべての文字を削除するためにto_stringに空の文字列を指定することはできません。

例8-151 TRANSLATEでの複数文字の置換え

次の文は、本のタイトルを、ファイル名などに使用するために文字列に変換します。from_stringには、アスタリスク、空白、アポストロフィ(エスケープ文字としてバックスラッシュを付加)の3文字を含めています。to_stringにはアンダースコアを2つのみ含めていますが、このように指定するとfrom_stringの3番目の文字に対応する置換文字がない状態となり、戻り値にはアポストロフィが含まれないことになります。

SHOW TRANSLATE ('SQL*Plus User\'s Guide' '* \'' '__')
SQL_Plus_Users_Guide

TRIGGERファンクション

TRIGGERファンクションは、トリガー・プログラム(つまり、TRIGGER_DEFINE、TRIGGER_AFTER_UPDATE、TRIGGER_BEFORE_UPDATEのいずれかのプログラム、またはTRIGGERコマンドを使用してトリガー・プログラムとして指定された任意のプログラム)を実行するイベント、サブイベント、オブジェクトまたはアナリティック・ワークスペースの名前のいずれかを検索するファンクションです。

現行のプログラムがトリガー・プログラムの場合、TRIGGERファンクションはプログラムのトリガー情報を返します。そうでない場合、TRIGGERファンクションは、最後に実行されたトリガー・プログラムのトリガー情報を返します。

戻り値

TEXT

構文

TRIGGER (NAME | EVENT | SUBEVENT)

パラメータ

NAME

TRIGGERコマンドを使用してトリガー・プログラムとして指定したプログラムの場合は、トリガー・プログラムと関連付けられているオブジェクトを返します。TRIGGER_AW、TRIGGER_DEFINE、TRIGGER_AFTER_UPDATE、TRIGGER_BEFORE_UPDATEのいずれかのプログラムの場合は、プログラムを実行するアナリティック・ワークスペースの名前を返します。

EVENT

プログラムの実行をトリガーしたイベント(DML文)の名前を返します。

AW
MAINTAIN
DELETE
DEFINE
PROPERTY
ASSIGN
BEFORE_UPDATE
AFTER_UPDATE

関連項目:

イベントの詳細は、「トリガー・プログラム」および「TRIGGERコマンド」を参照してください。

SUBEVENT

EVENTからの戻り値がMAINTAINAFTER_UPDATEまたはBEFORE_UPDATEの場合は、プログラムの実行をトリガーしたOLAP DML文の詳細な情報を返します。AWの有効なサブイベントについては、表8-18「AWイベントのサブイベント」で説明しています。MAINTAINの有効なサブイベントについては、表8-19「MAINTAINイベントのサブイベント」で説明しています。UPDATEの有効なサブイベントについては、表8-20「UPDATEイベントのサブイベント」で説明しています。

表8-18 AWイベントのサブイベント

サブイベント 説明

CREATE

AW CREATE文がプログラムの実行をトリガーすると返される。

ATTACH

AW ATTACH文がプログラムの実行をトリガーすると返される。

DELETE

AW DELETE文がプログラムの実行をトリガーすると返される。

DETACH

AW DETACH文がプログラムの実行をトリガーすると返される。


表8-19 MAINTAINイベントのサブイベント

サブイベント 説明

ADD

MAINTAIN ADD文がプログラムの実行をトリガーすると返される。

DELETE

MAINTAIN DELETE ALL文を除く任意のMAINTAIN DELETE文がプログラムの実行をトリガーすると返される。

DELETE ALL

MAINTAIN DELETE ALL文がプログラムの実行をトリガーすると返される。

MERGE

MAINTAIN MERGE文がプログラムの実行をトリガーすると返される。

MOVE

MAINTAIN MOVE文がプログラムの実行をトリガーすると返される。

RENAME

MAINTAIN RENAME文がプログラムの実行をトリガーすると返される。


表8-20 UPDATEイベントのサブイベント

サブイベント 説明

AW

UPDATEコマンドがTRIGGER_AFTER_UPDATEプログラムまたはTRIGGER_BEFORE_UPDATEプログラムの実行をトリガーすると返される。

MULTI

オブジェクトをマルチライタ・モードで取得したときに、TRIGGERコマンドを使用してトリガー・プログラムとして指定したプログラムの実行をUPDATEコマンドがトリガーすると返される。


TRIGGERファンクションの使用例は、例6-3「TRIGGER_BEFORE_UPDATEプログラム」および例10-166「Assignトリガーを使用した代替値の代入」を参照してください。

TRIM

TRIMファンクションを使用すると、先行または後続文字(あるいはその両方)を文字列から削除できます。

先行文字を削除するにはLTRIMを、後続文字を削除するにはRTRIMを使用する方法もあります。

戻り値

削除元となる文字列(trim-source)のデータ型

構文

TRIM ([{{LEADING|TRAILING|BOTH} [trim_characters])|trim_character} FROM] trim_source)

パラメータ

trim-characters

削除の対象とする文字値を指定する式。このテキスト式のデータ型は、任意のテキスト・データ型にできます。

trim-charactersに複数の文字を指定すると、trim_sourceの各文字が順に検索され、trim_sourceにあるがtrim-charactersにはない文字が出現するまでtrim_sourceから文字が削除されます。

値を指定しなかった場合、デフォルト値は空白となり、先行および後続の空白が削除されます。

LEADING

trim_charactersと等しいすべての先行文字をtrim_sourceから削除することを指定します。

TRAILING

trim_charactersと等しいすべての後続の文字をtrim_sourceから削除することを指定します。

BOTH

trim_charactersと等しいすべての先行および後続の文字をtrim_sourceから削除することを指定します。

trim-source

削除の対象とする文字列値を表す式。このテキスト式のデータ型は、任意のテキスト・データ型にできます。

TRUNCATE

TRUNCATEファンクション(省略形TRUNC)は、数値または日時値の切捨てを行うファンクションです。TRUNCファンクションの構文は、その対象が数値または日時の値のどちらであるかに応じて異なるため、次のように2つに分けて説明します。

TRUNCATE(日時)

TRUNCATE(日時)ファンクションは、時間部分を伴う日付を書式モデルで指定された単位に切り捨てた値を返します。

戻り値

DATETIME

構文

TRUNC (datetime_exp, [fmt])

パラメータ

datetime-exp

日時の数値を指定する日時式。

fmt

表8-13「ROUNDおよびTRUNC日付ファンクションの日時書式テンプレート」に示す書式モデルを指定するテキスト式。書式モデルは、日時の値をどのように切り捨てるかを示します。fmtを省略した場合、dateは最も近い日付に切り捨てられます。

例8-152 最も近い年への切捨て

NLS_DATE_FORMATオプションの値がDD-MON-YYの場合、次の文を発行します。

SHOW TRUNC (TO_DATE('27-OCT-92'),'YEAR')

次の値が返されます。

01-JAN-92

例8-153 様々な書式での切捨て

次のオプション値、変数および値がアナリティック・ワークスペースにあるとします。

SHOW NLS_DATE_FORMAT
DD-MON-RR
DEFINE MYDATETIME VARIABLE DATETIME
DATE_FORMAT = 'MON-RRRR-DD-HH24'
mydatetime = CURRENT_TIMESTAMP
SHOW mydatetime
= 'AUG-2006-07-14'

次のSHOW文が示すように、TRUNCATEファンクションの書式引数に指定する値に応じて、ファンクションから返される値が決まります。

SHOW TRUNCATE(mydatetime, 'MON')
01-AUG-06
SHOW TRUNCATE(mydatetime, 'DD')
07-AUG-06
SHOW TRUNCATE(mydatetime)
= 'AUG-2006-07-00'

TRUNCATE(数値)

数値を引数として指定すると、TRUNCATEファンクションは、指定された小数点以下の桁数に数値を切り捨てます。

戻り値

DECIMAL

構文

TRUNC (numbertruncvalue)

パラメータ

number

切捨ての対象となる数値。numberに指定した値の後には、カンマを付ける必要があります。

truncvalue

numberが切り捨てられる、小数点の右側または左側の桁数を指定するINTEGER値。truncvalueが正の値の場合は、小数点の右側の桁が切り捨てられます。負の値の場合は、小数点の左側の桁が切り捨てられます(つまり、ゼロになります)。truncvalueを省略すると、numberの小数点以下の桁数は0桁に切り捨てられます。

例8-154 小数点の右側の切捨て

次の文

SHOW TRUNC (15.79, 1)

によって、次の値が返されます。

15.7

例8-155 小数点の左側の切捨て

次の文

SHOW TRUNC (15.79, -1)

によって、次の値が返されます。

10

TZ_OFFSET

TZ_OFFSETファンクションは、文が実行される日付に基づいて引数に対応するタイムゾーン・オフセットを返します。


注意:

夏時間機能には、タイムゾーン地域名が必要です。地域名は、2つのタイムゾーン・ファイルに格納されます。デフォルトのタイムゾーン・ファイルは、パフォーマンスを最大にするために一般的なタイムゾーンのみを含む小さなファイルです。タイムゾーンがデフォルトのファイルに存在しない場合は、環境変数ORA_TZFILEを使用して完全な(大きい)ファイルへのパスを指定しないかぎり、夏時間はサポートされません。

戻り値

オフセットを表す次の形式のテキスト値

'{ + | - } hh : mi'

構文

TZ_OFFSET( 'time_zone_name' | '{ + | - } hh : mi' | SESSIONTIMEZONE | DBTMEZONE)

パラメータ

time_zone_name

有効なタイムゾーン名を指定するテキスト値。time_zone_nameの有効な値のリストについては、V$TIMEZONE_NAMES動的パフォーマンス・ビューのTZNAME列を問い合せてください。


注意:

夏時間機能には、タイムゾーン地域名が必要です。地域名は、2つのタイムゾーン・ファイルに格納されます。デフォルトのタイムゾーン・ファイルは、パフォーマンスを最大にするために一般的なタイムゾーンのみを含む小さなファイルです。タイムゾーンがデフォルトのファイルに存在しない場合は、環境変数ORA_TZFILEを使用して完全な(大きい)ファイルへのパスを指定しないかぎり、夏時間はサポートされません。

{ + | - } hh : mi'

単純に自身を返すUTCからのタイムゾーン・オフセットを指定します。

SESSIONTIMEZONE

現行セッションのタイムゾーンを指定します。

DBTIMEZONE

データベースのタイムゾーンの値を指定します。

UNIQUELINES

UNIQUELINESファンクションは、複数行のテキスト値に存在する重複行を削除し、行を昇順にソートするファンクションです。このファンクションの戻り値は、結果として得られる行で構成される複数行のテキスト値です。

戻り値

TEXTまたはNTEXT

構文

UNIQUELINES(text-expression)

パラメータ

text-expression

UNIQUELINESが重複行を削除して、残りの行をソートする対象の複数行のテキスト式。UNIQUELINESは、重複を調べるときと空白を含むすべての文字を比較するときに、大文字と小文字を区別します。

TEXT式を指定すると、戻り値はTEXTです。NTEXT式を指定すると、戻り値はNTEXTです。

例8-156 重複するテキスト行の削除

次の例では、officelistの値から1行が削除され、残りの行がソートされます。

次の文

SHOW officelist

によって、次の出力が生成されます。

MIAMI
Providence
Miami
Baltimore
Saratoga
Baltimore

次の文

show uniquelines(officelist)

によって、次の出力が生成されます。

Baltimore
Miami
MIAMI
Providence
Saratoga 

UNRAVEL

UNRAVELファンクションは、代入文と組み合せて使用し、式のディメンションが変数のディメンションと異なる場合に、式の値を変数のセルにコピーするファンクションです。

代入文を使用して作成した代入文は、ターゲット変数のディメンション・ステータスをループ処理することにより、UNRAVELから取得した値を代入します。変数の定義にリストされている最初のディメンションは、最も速く変化します。UNRAVELは、式の値を同じように取得し、最も速く変化する最初のディメンションを持つ式のディメンション・ステータスをループ処理します。UNRAVELによる値の取得順序を変更するには、ループ処理の対象となるディメンションを指定します。

戻り値

UNRAVELから返されるデータ型は、式で指定された値のデータ型になります。

構文

UNRAVEL(expression [dimension1...])

パラメータ

expression

コピーの対象となる値が属している式。

dimension

ループ処理の対象となる1つ以上のディメンションを指定します。最初に指定したディメンションは、データが解読されると、最も速く変化します。

UNRAVELでディメンションを指定すると、デフォルトのループ処理順序や式を解読する範囲が変更されます。デフォルトでは、式のすべてのディメンションが解読の範囲です。ただし、式のすべてのディメンションではなく一部を指定した場合、指定しなかったディメンションは解読されません。そのかわりに、解読される値は、省略した各ディメンションの最初の値のみになります。

使用上の注意

ワークシート・データの移動

UNRAVELの一般的な用途の1つは、ワークシートから変数へのデータの移動で、これは、ワークシートのディメンションは、通常、変数のディメンションとは異なるためです。例8-157「ワークシートから変数へのデータのコピー」を参照してください。

追加のターゲット・セルの埋込み

代入文が式の最後の値を使用した後に、(この代入文を使用して作成した)埋込みを目的とする代入文のターゲットにセルが残っている場合、UNRAVELは最初の値から埋込みをやり直します。

ステータスの設定

解読した値を代入する順序は、変数と式の両方のディメンションの現行のステータスによって決まるため、セルが適合するように、適切なLIMITコマンドを指定していることを確認してください。

データ値の代入

データ値の代入方法は、SETを参照してください。

例8-157 ワークシートから変数へのデータのコピー

あるアナリティック・ワークスペースで、一部の製品の価格データをスプレッドシートからワークシートにインポートしました。ここで、newpriceという変数にデータを送信します。pricedataというワークシートのレポートを生成するには、次の文を発行します。

LIMIT wksrow TO 1 TO 6
LIMIT wkscol TO 1 2 3
REPORT pricedata

これが生成されたレポートです。

               -----------PRICEDATA------------
               -------------WKSCOL-------------
WKSROW             1          2          3
-------------- ---------- ---------- ----------
             1            Jan95      Jan96
             2 Tents          191.39     194.00
             3 Canoes         279.92     300.00
             4 Racquets        83.34      85.00
             5 Sportswear     107.90     110.00
             6 Footwear       183.18     195.00

行1には月のラベルが、列1には製品のラベルがそれぞれ入っていることがわかります。変数newpriceは、その定義に示すように、monthおよびproductによってディメンション化されています。

DEFINE newprice VARIABLE DECIMAL <month product>
LD Wholesale Unit Selling Price

ワークシートのディメンション(wkscolおよびwksrow)はnewpriceのディメンションとは異なりますが、ワークシートに格納されているデータは変数への転送に適した形に編成されています。

ただし、ワークシートのすべての行および列からデータを取得するわけではないため、wkscolおよびwksrowを、価格データ自体が格納されている行と列に制限します。

LIMIT wkscol TO 2 3
LIMIT wksrow TO 2 TO 6

また、変数newpriceに値を設定するのは、1995年1月と1996年1月のみです。したがって、まずmonthをこれらの値に制限してから、UNRAVELを使用して代入文を入力し、ワークシートから変数へ値を移動します。

LIMIT month TO 'Jan95' 'Jan96'
newprice = UNRAVEL(pricedata)

wkscolは最も変化の速いディメンションであるため、UNRAVELファンクションのディメンションを指定する必要はありません。したがって、2つの月とも、最初の製品の価格データを解読してから2番目の製品に移ります。この変数の最も変化の速いディメンションはmonthであるため、SETによって変数に代入される値の順序は同じになります。

newpriceのレポートは次のようになります。

               ------NEWPRICE-------
               --------MONTH--------
PRODUCT          Jan95      Jan96
-------------- ---------- ----------
Tents              191.39     194.00
Canoes             279.92     300.00
Racquets            83.34      85.00
Sportswear         107.90     110.00
Footwear           183.18     195.00

UPPER

UPCASEファンクションは、テキスト式に存在するすべてのアルファベット文字を大文字に変換するファンクションです。TEXT式を指定すると、戻り値はTEXTです。NTEXT式を指定すると、戻り値はNTEXTです。

戻り値

TEXTまたはNTEXT

構文

UPCASE(text-expression)

パラメータ

text-expression

変換の対象となる文字が存在するテキスト式。

例8-158 テキスト式の一部の大文字への変換

メーリング・リストに追加する新しいデータをいくつか入手したとします。既存のメーリング・リストでは、氏名の最初の文字を大文字にしています。ところが新しいデータでは、名前全体が小文字になっています。UPCASEを使用すると、次のような文により、新しいデータを現行のデータに対応させることができます。

lastname = JOINCHARS(UPCASE(EXTCHARS(lastname, 1, 1)), -
           EXTCHARS(lastname, 2, NUMCHARS(lastname))) 

UPPER

UPPERファンクションは、テキスト式に存在するすべてのアルファベット文字を大文字に変換するファンクションです。

戻り値

text-expressionのデータ型。


関連項目:

『Oracle Database SQL言語リファレンス』のUPPERファンクションに関する項

構文

UPPER(text-expression)

パラメータ

text-expression

変換の対象となる文字が存在するテキスト式。

VALSPERPAGE

VALSPERPAGEプログラムは、1つのページに収まる指定の幅を持つ変数値の最大数を計算するプログラムです。ページとは、ワークスペース内の格納単位です。

戻り値

INTEGER

構文

VALSPERPAGE(n)

パラメータ

n

変数の幅をバイト単位で指定するINTEGER式。この値の範囲は1から4000の間です。4000を超える値や1未満の値を指定すると、結果はNAになります。

使用上の注意

大きい変数

Oracle OLAPを使用すると、非常に大きい多次元変数を作成できます。理論上、変数には2**63セルまで格納できますが、この最大値はメモリー制約やシステムに固有のその他の要因の影響を受けます。

例8-159 1ページのセルの数の計算

次の文を実行すると、INTEGERデータ型の変数について、1ページで利用できるセルの最大数が計算されます。Oracle OLAPでは、INTEGER値のデフォルトの幅は4バイトです。

SHOW VALSPERPAGE(4)

この文の出力は次のとおりです。

992 

VALUES

VALUESファンクションは、ディメンションやディメンション・サロゲートのデフォルトのステータス・リストまたは現行のステータス・リストを返すか、または値セットの値を返すファンクションです。VALUESは、1行に1つのディメンション値が格納された複数行のテキスト値を返します。


注意:

コンポジットにはステータスがないため、VALUESファンクションとコンポジットを組み合せて使用することはできません。使用した場合、エラー・メッセージが表示されます。

戻り値

TEXT

構文

VALUES(dimension [keyword] [INTEGER])

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

keyword

ディメンションまたはサロゲートの現行のステータス・リストまたはデフォルトのステータス・リストが必要かどうかを指定する、次のいずれかのキーワード。

  • NOSTATUS: VALUESから返されるリストが、ディメンションまたはディメンション・サロゲートの現行のステータス・リストではなく、デフォルトのステータス・リストであることを指定します。

  • STATUS: VALUESから返されるリストが、ディメンションまたはディメンション・サロゲートの現行のステータス・リストであることを指定します(デフォルト)。

これらのキーワードは値セットには影響しません。値セットの場合は、NOSTATUSSTATUSのいずれかを指定しても、あるいは何も指定しなくても、この値セットのすべての値がVALUESから返されます。

INTEGER

INTEGERキーワードを使用すると、このファンクションからは、ディメンション値またはディメンション・サロゲート値ではなく、その位置番号が返されます。INTEGERと値セットを組み合せて使用すると、このファンクションからは、値セットではなく既存のディメンションでの値の位置番号が返されます。

使用上の注意

VALUESにかわる、STATUSキーワードを使用するLIMIT文の使用

Oracle OLAPで現在ステータス内にあるディメンション値を使用する場合、可能であれば、VALUES文を使用するのではなく、STATUSキーワードを使用するLIMITコマンド(値を使用)(または、同様の構成を持つLIMITファンクション)を使用してください。STATUSキーワードを使用するLIMITは、VALUES(dimname)文よりも効率的です。

VALUESとCHARLISTの比較

VALUESファンクションはCHARLISTファンクションと非常に似ています。VALUES(MONTH)ではCHARLIST(MONTH)と同じリストが返されます。

主な相違点は次のとおりです。

  • ディメンションの場合、VALUESのNOSTATUSキーワードを指定すると、最初にディメンション値をALLに制限することなく、デフォルトのステータスが使用できます。

  • VALUESファンクションを使用すると、テキスト式を使用してディメンション名または値セット名を指定できます。例8-162「テキスト変数とともに使用するVALUES」を参照してください。

アンパサンド(&)に関する特別な注意事項

特定の環境では、ディメンション値の名前にアンパサンド(&)を使用すると、アンパサンド置換と解釈されます。この場合、エラー・メッセージが表示されます。

これは、テキスト式のタプルに特殊文字を使用すると、ディメンション値の名前に含まれる特殊文字がOracle OLAPに認識されるからです。たとえば、ディメンション値に名前を付ける場合などに、NewYorkではなくNew Yorkのように空白を挿入できます。名前にアンパサンドが含まれるディメンション値がある場合は、例8-163「アンパサンドを含むディメンション値の名前に関する回避策」を参照してください。

例8-160 値セットの値の表示

値セットの値を表示する方法として最も簡単なのは、SHOWまたはREPORT文でその値セットの名前を使用することです。また、VALUESを使用して値セットの値を表示することもできます。

たとえば、アナリティック・ワークスペースに、値Jan95May95およびDec95を持つmonthsetという値セットが格納されているとします。次の文によって、これらの値が表示されます。

SHOW VALUES(monthset)
Jan95
May95
Dec95

例8-161 ディメンションの位置番号の表示

VALUESを使用すると、ディメンションまたは値セットに存在する実際の値のかわりに、その位置番号を表示できます。この例では、INTEGERキーワードをディメンションではなく値セットとともに使用しているため、次に示すように、ファンクションからは、monthディメンションでの値の位置番号が返されます。

SHOW VALUES(monthset INTEGER)
61
65
72

したがって、値Jan95monthディメンションの61番目の値として、May95は65番目の値として、Dec95は72番目の値として表示されますが、これらはmonthsetでは、それぞれ1番目、2番目、3番目の値になります。

例8-162 テキスト変数とともに使用するVALUES

この例では、ディメンション名をテキスト変数に割り当てて、変数名自体ではなくVALUESファンクションのテキスト変数を使用する方法を示します。次に示すように、変数textvarに値districtが存在する場合、VALUES(textvar)の戻り値はdistrict値のリストになります。

textvar = 'district'
SHOW VALUES(textvar)
Boston
Atlanta
Chicago
Dallas
Denver
Seattle

VALUESファンクションではなくCHARLISTファンクションを使用してdistrictの値を表示するには、アンパサンドを使用する必要があります。

SHOW CHARLIST(&textvar)

プログラムにアンパサンドを使用するとパフォーマンスが低下する可能性があるため、このような場合はCHARLISTではなくVALUESを使用してください。

例8-163 アンパサンドを含むディメンション値の名前に関する回避策

ディメンション値の名前の文字としてアンパサンド(&)が含まれる場合、およびこのディメンションが結合ディメンションのベース・ディメンションである場合、タプルにディメンション値の名前が記述されているテキスト式は、特定の環境でエラーが発生する可能性があります。この例では、このようなエラーを回避する方法を示します。

次の文を使用して2つのディメンションを定義するとします。

DEFINE prod DIMENSION TEXT
DEFINE geog DIMENSION TEXT

次に、次の文を使用して2つの結合ディメンションを定義します。

DEFINE conj1 DIMENSION <prod geog>
DEFINE conj2 DIMENSION <prod geog>

次の文を実行すると、prodディメンションとgeogディメンションにディメンション値が追加されます。

MAINTAIN prod ADD 'prod1' 'prod&val2'
MAINTAIN geog ADD 'geog1' 'geog&val2'

次の文を実行すると、CONJ1結合ディメンションにタプル(ディメンション値の組合せ)が追加されます。

MAINTAIN conj1 ADD <'prod1' 'geog1'>
MAINTAIN conj1 ADD <'prod&val2' 'geog1'>

今度は、VALUEファンクションとMAINTAIN文を組み合せて使用し、前出の同じタプルをconj2結合ディメンションに追加します。次の文を使用しようとすると、エラー・メッセージが表示されます。

MAINTAIN conj2 ADD VALUES(conj1)
ERROR: (MXMSERR) val2 does not exist in any attached workspace.

このエラーが発生する理由は、ディメンション値の名前prod&val2のアンパサンドが、アンパサンド置換と解釈されるからです。

前出のMAINTAIN文を使用するかわりに、次の文を使用してタプルをCONJ2結合ディメンションに追加できます。

MAINTAIN conj2 MERGE < KEY(conj1 prod) KEY(conj1 geog) > 

VINTSCHED

VINTSCHEDファンクションは、指定した期間数で全額返済する一連の変動金利分割払い融資に関する支払いの金利の部分を計算するファンクションです。VINTSCHEDは、特定の期間の結果を、その期間に受けた融資または未払いの融資ごとに、支払い期限に到達した金利の合計として計算します。期間ごとに、該当期間に受ける融資の初期金額と、新規の融資または未払いの融資ごとに該当期間内に請求される金利を指定します。

戻り値

DECIMAL

VINTSCHEDファンクションから返された結果は、loansおよびratesのすべてのディメンションと、time-dimension引数として使用したディメンションの結合によってディメンション化されます。

構文

VINTSCHED(loansratesn, [time-dimension] [STATUS])

パラメータ

loans

初期融資額を含む数式。loansに時間ディメンションがない場合、またはloansが複数の時間ディメンションによってディメンション化されている場合、time-dimension引数が必要です。

rates

loansに対する金利を含む数式。ratesがディメンション化された変数の場合、この変数は、異なる時間ディメンションなどの任意のディメンションによってディメンション化できます。ratesが時間ディメンションによってディメンション化されている場合は、該当期間に受けた融資または未払いの融資に適用する期間ごとに金利を指定します。金利は小数値で表し、たとえば、5%は.05として表します。

n

一連の融資の全額返済に必要な支払い回数を指定する数式。n式はディメンション化できますが、時間ディメンション引数でディメンション化することはできません。loansがディメンション化される時間ディメンションの各期間に、またはtime-dimension引数で指定されるディメンションの各期間に、1回の支払いが行われます。たとえば、1か月に1回の支払いは、loansmonthでディメンション化すると実行されます。

time-dimension

金利支払い額が計算される基準になるディメンションの名前。loansに、DAY、WEEK、MONTH、QUARTER、YEARのいずれかの型のディメンションが存在する場合は、loansにこれらの型のディメンションが複数存在しないかぎり、time-dimension引数はオプションになります。

STATUS

VINTSCHEDが支払いの金利部分を計算する際に、現行のステータス・リスト(つまり現在ステータスにあり、現行のステータスの順序に並んでいるディメンション値のみ)を使用することを指定します。デフォルトでは、デフォルトのステータス・リストが使用されます。

使用上の注意

VINTSCHEDとNA値

loansの値がNA以外の値で、対応するratesの値がNAの場合、エラーが発生します。

VINTSCHEDはNASKIPオプションの影響を受けます。NASKIPをYES(デフォルト)に設定し、影響を受ける期間の融資の値がNAの場合、VINTSCHEDからの戻り値は、対応する金利の値がNAか非NAかによって異なります。表8-21「特定期間の融資または金利の値がNAの場合のNASKIPによる結果への影響」は、特定の期間の融資または金利の値がNAの場合、NASKIPが結果にどのように影響するかを示しています。

表8-21 特定期間の融資または金利の値がNAの場合のNASKIPによる結果への影響

融資の値 金利の値 NASKIP = YESの場合の結果 NASKIP = NOの場合の結果

NA

NA

エラー

エラー

NA

NA

金利の値(融資の値NAはゼロとして処理される)

影響を受ける期間に対してNA

NA

NA

影響を受ける期間に対してNA

影響を受ける期間に対してNA


たとえば、融資額の式と対応する金利の式の両方の値が1997年に対してNAであり、その後の年に対してNA以外であるとします。支払い回数が3回の場合、1997年、1996年および1995年のVINTSCHEDからの戻り値はNAになります。1997年の場合、VINTSCHEDは、1995年、1996年および1997年に受けた融資の支払い期限に到達した支払いの金利の部分を値として返します。

時間ディメンションのステータスの影響を受けないVINTSCHED

VINTSCHEDでは、時間ディメンションのステータスがどのように制限されているかにかかわらず、時間ディメンションの最初の値から計算を開始します。たとえば、loansyearによってディメンション化されており、yearの値の範囲はYr95からYr99までの間であるとします。yearのステータスを制限してYr95を対象外にしている場合でも、計算は必ずYr95から開始されます。

ただし、loansが時間ディメンションによってディメンション化されていない場合は、VINTSCHEDによって、時間ディメンションの現行のステータスの最初の値から計算が開始されます。たとえば、loansyearによってディメンション化されていないが、yeartime-dimensionとして指定されているとします。yearのステータスがYr97からYr99までに制限されると、計算はYr95からではなくYr97から開始されます。

例8-164 VINTSCHEDの使用方法

次の文を実行すると、loansおよびratesという2つの変数が作成されます。

DEFINE loans DECIMAL <year>
DEFINE rates DECIMAL <year>

変数loansおよびratesに、次の値を代入したとします。

YEAR             LOANS      RATES
-------------- ---------- ----------
Yr95               100.00       0.05
Yr96               200.00       0.06
Yr97               300.00       0.07
Yr98                 0.00       0.07
Yr99                 0.00       0.07

各年のloansには、その年に受ける変動金利融資の初期値が格納されます。各年のratesの値は、その年に受ける融資または未払いの融資に対する、その年に請求される金利です。

次の文を実行すると、各融資の返済が3回払いと指定され、融資の支払いの金利の部分が計算されます。

REPORT W 20 HEADING 'Payment' VINTSCHED(loans, rates, 3, year)

生成されるレポートは次のとおりです。

YEAR                        Payment
-------------- --------------------
Yr95                           5.00
Yr96                          16.10
Yr97                          33.06
Yr98                          19.43
Yr99                           7.48

1995年に支払う金利は、1995年に5%の金利で融資を受けた$100に対する金利です。1996年の金利支払いは、1995年に受けた融資の元金の支払い残高に対する金利と、1996年に受けた$200の融資に対する金利の合計になり、この2つの融資に対する金利は6%です。1997年の金利支払いは、1995年に受けた融資の元金の支払い残高に対する金利、1996年に受けた融資の元金の支払い残高に対する金利、さらに1997年に受けた$300の融資に対する金利の合計になり、この3つすべての融資に対する金利は7%です。1995年の融資は1997年に全額返済されるので、1998年の支払いは、1996年と1997年の融資の元金の支払い残高に対する7%の金利に相当します。1999年には、金利支払いの対象は1997年に受けた融資の元金の支払い残高になります。

VPMTSCHED

VPMTSCHEDファンクションは、一連の変動金利分割払い融資を指定した期間数にわたって全額返済するための返済スケジュール(元金および金利)を計算するファンクションです。VPMTSCHEDは、特定の期間の支払い額を、その期間に受けた融資または未払いの融資ごとに、支払い期限に到達した元金と金利の合計として計算します。期間ごとに、該当期間に受ける融資の初期金額と、新規の融資または未払いの融資ごとに該当期間内に請求される金利を指定します。

戻り値

DECIMAL

VPMTSCHEDファンクションから返された結果は、loansおよびratesのすべてのディメンションと、time-dimension引数として使用したディメンションの結合によってディメンション化されます。

構文

VPMTSCHED(loansratesn, [time-dimension] [STATUS])

パラメータ

loans

初期融資額を含む数式。loansに時間ディメンションがない場合、またはloansが複数の時間ディメンションによってディメンション化されている場合、time-dimension引数が必要です。

rates

loansに対する金利を含む数式。ratesがディメンション化された変数の場合、この変数は、異なる時間ディメンションなどの任意のディメンションによってディメンション化できます。ratesが時間ディメンションによってディメンション化されている場合は、該当期間に受けた融資または未払いの融資に適用する期間ごとに金利を指定します。金利は小数値で表し、たとえば、5%は.05として表します。

n

一連の融資の全額返済に必要な支払い回数を指定する数式。n式はディメンション化できますが、時間ディメンション引数でディメンション化することはできません。loansがディメンション化される時間ディメンションの各期間に、またはtime-dimension引数で指定されるディメンションの各期間に、1回の支払いが行われます。たとえば、1か月に1回の支払いは、loansmonthでディメンション化すると実行されます。

time-dimension

金利支払い額が計算される基準になるディメンションの名前。loansに、DAY、WEEK、MONTH、QUARTER、YEARのいずれかの型のディメンションが存在する場合は、loansにこの型のディメンションが複数存在しないかぎり、time-dimension引数はオプションになります。

STATUS

VPMTSCHEDが支払いスケジュールを計算する際に、現行のステータス・リスト(つまり現在ステータスにあり、現行のステータスの順序に並んでいるディメンション値のみ)を使用することを指定します。デフォルトでは、デフォルトのステータス・リストが使用されます。

使用上の注意

VPMTSCHEDとNA値

loansの値がNA以外の値で、対応するratesの値がNAの場合、エラーが発生します。

VPMTSCHEDはNASKIPオプションの影響を受けます。NASKIPをYES(デフォルト)に設定し、影響を受ける期間の融資の値がNAの場合、VPMTSCHEDからの戻り値は、対応する金利の値がNAか非NAかによって異なります。表8-21「特定期間の融資または金利の値がNAの場合のNASKIPによる結果への影響」は、特定の期間の融資または金利の値がNAの場合、NASKIPが結果にどのように影響するかを示しています。

たとえば、融資額の式と対応する金利の式の両方の値が1994年に対してNAであり、その後の年に対してNA以外であるとします。支払い回数が3回の場合、1994年、1995年および1996年のVPMTSCHEDからの戻り値はNAになります。1997年の場合、VPMTSCHEDは、1995年、1996年および1997年に受けた融資の支払い期限に到達した支払い額を返します。

時間ディメンションのステータスの影響を受けないVPTMPTSCHED

VPMTSCHEDでは、時間ディメンションのステータスがどのように制限されているかにかかわらず、時間ディメンションの最初の値から計算を開始します。たとえば、loansyearによってディメンション化されており、yearの値の範囲はYr95からYr99までの間であるとします。yearのステータスを制限してYr95を対象外にしている場合でも、計算は必ずYr95から開始されます。

ただし、loansが時間ディメンションによってディメンション化されていない場合は、VPMTSCHEDによって、時間ディメンションの現行のステータスの最初の値から計算が開始されます。たとえば、loansyearによってディメンション化されていないが、yeartime-dimensionとして指定されているとします。yearのステータスがYr97からYr99までに制限されると、計算はYr95からではなくYr97から開始されます。

例8-165 VPMTSCHEDの使用方法

次の文を実行すると、loansおよびratesという2つの変数が作成されます。

DEFINE loans DECIMAL <year>
DEFINE rates DECIMAL <year>

変数loansおよびratesに、次の値を代入したとします。

YEAR             LOANS      RATES
-------------- ---------- ----------
Yr95               100.00       0.05
Yr96               200.00       0.06
Yr97               300.00       0.07
Yr98                 0.00       0.07
Yr99                 0.00       0.07

各年のloansには、その年に受ける変動金利融資の初期値が格納されます。各年のratesの値は、その年に受ける融資または未払いの融資に対する、その年に請求される金利です。

次の文を実行すると、各融資の返済が3回払いと指定され、融資の元金と金利を全額返済する返済スケジュールが計算されます。

REPORT W 20 HEADING 'Payment' VPMTSCHED(loans, rates, 3, year)

生成されるレポートは次のとおりです。

YEAR                        Payment
-------------- --------------------
Yr95                          36.72
Yr96                         112.06
Yr97                         227.78
Yr98                         190.19
Yr99                         114.32

1995年の支払い額は、1995年に受けた$100の融資のうち支払い期限に到達した元金と、この融資に対する5パーセントの金利の合計額です。1996年が期限の支払い額は、1995年に受けた融資の元金の2回目の支払い額、1996年に受けた$200の融資の元金の1回目の支払い額、さらにこの2つの融資の元金の支払い残高に対する6パーセントの金利の合計になります。1997年の支払い額は、1995年に受けた融資の元金の3回目(最終回)の支払い額、1996年に受けた融資の3回中2回目の元金の支払い額、1997年に受けた$300の融資の元金の1回目の支払い額、さらにこの3つの融資の元金の支払い残高に対する7パーセントの金利の合計になります。1995年の融資は1997年に全額返済されるので、1998年の支払いは、1996年と1997年の融資の元金と金利が対象になります。1999年の支払いは、1997年の融資に対する元金および金利の最後の支払いです。

VSIZE

VSIZEファンクションは、式の内部表現のバイト数を返します。

戻り値

INTEGER

exprがNULLの場合、NAが返されます。

構文

VSIZE(expr)

パラメータ

expr

任意のデータ型の式。

WEEKOF

WEEKOFファンクションは、指定した日付が含まれる週番号を示す、1から53までの範囲のINTEGERを返すファンクションです。結果は、指定したDATE式と同じディメンションを持ちます。

戻り値

INTEGER

構文

WEEKOF(date-expression)

パラメータ

date-expression

DATEデータ型の式、または日付を指定するテキスト式。テキスト式の値は自動的にDATE値へ変換され、指定した値が不明瞭な場合は、DATEORDERオプションの現行の設定を使用して値が解決されます。

使用上の注意

第1週の決定

WEEKDAYSNEWYEARの値は、WEEKOFが示す週を新しい年の第1週とみなすために、この週に含まれる必要がある新しい年の日数を表します。たとえば、1月1日が水曜日の場合、12月29日から1月4日までの週には、新しい年に含まれる日数が4日間あります。したがって、この週を第1週と数えるためには、WEEKDAYSNEWYEARの値を4以下にする必要があります。第1週をこのように決定すると、この年のすべての週の番号付けに影響します。

例8-166 今日の週番号の検索

次の文を実行すると、今日の日付が含まれる週の週番号が現行の出力ファイルに送られます。

SHOW WEEKOF(TODAY)

たとえば、今日の日付が1996年8月5日の月曜日の場合、この文によって生成される出力は次のとおりです。

32

例8-167 特定の日付の週番号の検索

次の文を実行すると、1996年7月4日が含まれる週の週番号が現行の出力ファイルに送られます。

SHOW WEEKOF('04JUL96')

この文によって生成される出力は、次のとおりです。

27

WIDTH_BUCKET

WIDTH_BUCKETファンクションは、ある特定の式について、この式の値が評価後に式に割り当てられるバケット番号を返すファンクションです。

戻り値

INTEGER

構文

WIDTH_BUCKET (expr , min_value , max_value , num_buckets)

パラメータ

expr

ヒストグラムの作成対象となる式。この式は、数値または日時の値に評価される必要があります。exprNAに評価される場合、式の戻り値はNAになります。

min_value

exprの許容範囲の最小の端点に解決される式。この式は、数値または日時の値に評価される必要があり、NAに評価されることはできません

max_value

exprの許容範囲の最大の端点に解決される式。この式は、数値または日時の値に評価される必要があり、NAに評価されることはできません

num_buckets

バケットの数を示す定数に解決される式。この式は、正のINTEGERに評価される必要があります。

使用上の注意

アンダーフロー・バケットとオーバーフロー・バケット

WIDTH_BUCKETは、(必要に応じて)0という番号の付いたアンダーフロー・バケットおよびnum_buckets+1という番号の付いたオーバーフロー・バケットも作成します。これらのバケットではmin_value未満の値やmax_valueを超える値が処理され、端点の妥当性を確認するときに役立ちます。

等幅ヒストグラムの作成

WIDTH_BUCKETを使用すると、ヒストグラムの範囲が同一サイズのインターバルに分割される、等幅ヒストグラムを作成できます。(等度数ヒストグラムを作成するNTILEとこのファンクションを比較してください。)理想的には、各バケットは実数直線のクローズ/オープン・インターバルです。たとえば、バケットを10.0019.999...の間のスコアに割り当てると、10はこのインターバルに含まれ、20は除外されることを示すことができます。このサイズのバケットは、(10, 20)と表記されることもあります。

例8-168 バケットが10個のヒストグラムへの値のグループ化

次の例では、customer_idが825から853までの顧客に制限し、これらの顧客に対応するcredit_limit変数を対象に、バケットが10個のヒストグラムを作成します。各顧客のバケット番号の計算には、credit_group式を使用します。与信限度額が最大値を超える顧客には、オーバーフロー・バケットの11が割り当てられます。

DESCRIBE
DEFINE customer_id DIMENSION INTEGER
DEFINE cust_last_name VARIABLE TEXT <customer_id>
DEFINE credit_limit VARIABLE INTEGER <customer_id>
DEFINE credit_group FORMULA INTEGER <customer_id> 
EQ WIDTH_BUCKET(credit_limit, 100, 5000, 10)

LIMIT customer_id to 825 TO 853
REPORT cust_last_name, credit_limit, credit_group

CUSTOMER_ID     CUST_LAST_NAME    CREDIT_LIMIT     CREDIT_GROUP
-------------- ---------------- ---------------- ----------------
           825 Dreyfuss                      500                1
           826 Barkin                        500                1
           827 Siegel                        500                1
           828 Minnelli                    2,300                5
           829 Hunter                      2,300                5
           830 Dutt                        3,500                7
           831 Bel Geddes                  3,500                7
           832 Spacek                      3,500                7
           833 Moranis                     3,500                7
           834 Idle                        3,500                7
           835 Eastwood                    1,200                3
           836 Berenger                    1,200                3
           837 Stanton                     1,200                3
           838 Nicholson                   3,500                7
           839 Johnson                     3,500                7
           840 Elliott                     1,400                3
           841 Boyer                       1,400                3
           842 Stern                       1,400                3
           843 Oates                         700                2
           844 Julius                        700                2
           845 Fawcett                     5,000               11
           846 Brando                      5,000               11
           847 Streep                      5,000               11
           848 Olmos                       1,800                4
           849 Kaurusmdki                  1,800                4
           850 Finney                      2,300                5
           851 Brown                       2,300                5
           852 Tanner                      2,300                5
           853 Palin                         400                1
 

WKSDATA

WKSDATAファンクションは、ワークシートの各セルのデータ型や、WORKSHEETデータ型を持つプログラム引数のデータ型を返すファンクションです。WKSDATAを使用すると、テキスト・ファイルとOracle OLAPとの間でのラベルやデータの転送処理に役立ちます。

戻り値

個々のワークシート・セルのデータ型

構文

WKSDATA(worksheetname)

パラメータ

worksheetname

workunitsなど、Oracle OLAP Worksheetオブジェクトの名前を指定します。

使用上の注意

1つ以上のセルの確認

WKSDATAでは、セルの修飾データ参照を次の書式に示すように使用することにより、1つのワークシート・セルのデータ型を返すことができます。

SHOW WKSDATA(worksheetname(WKSROW n, WKSCOL n))

または、次の書式でREPORT文とWKSDATAを組み合せて使用すると、ワークシート内のすべてのセルの内容をそのデータ型と並べて表示できます。

REPORT worksheetname WKSDATA(worksheetname)

複数のデータ型

式にワークシート・オブジェクトを使用するときは、常に注意が必要です。ワークシート・オブジェクトには複数のデータ型を使用できるため、OLAP DML文のコンパイル時には、個々のワークシート・セルの実際のデータ型は考慮されません。そのかわり、式の中のワークシート・セルの位置で予想されるデータ型に各ワークシート・セルを変換するコードが生成されるため、場合によっては予期しない結果につながることがあります。

テキスト・データ

(数値、ブール、日付などとは対照的に)ワークシート内のテキスト・データのデータ型はすべてTEXTです。IDデータ型およびNTEXTデータ型は、ワークシートではサポートされていません。

例8-169 ワークシートからインポートしたデータの確認

workunitsというワークシートにフラット・データ・ファイルをインポートしたとします。WKSDATAを使用すると、ワークシートを標準のOLAPワークスペース書式に変換するときに、ディメンション値として処理する領域やデータ値として処理する領域をすばやく判別できます。

次の文を実行すると、workunitsのデータを表示する文の後に次の出力が生成されます。

REPORT workunits

               -----------------WORKUNITS-----------------
               ------------------WKSCOL-------------------
WKSROW             1          2          3          4
-------------- ---------- ---------- ---------- ----------
             1         NA Jan96      Feb96      Mar96
             2 Tents             307        209        277
             3 Canoes            352        411        488
             4 Racquets        1,024      1,098      1,144
             5 Sportswear      1,141      1,262      1,340
             6 Footwear        2,525      2,660      2,728

この文では、WKSDATAファンクションを使用して、ワークシート内の各セルのデータ型を示すレポートを文の後に生成しています。

REPORT WKSDATA(workunits)

               ------------WKSDATA(WORKUNITS)-------------
               ------------------WKSCOL-------------------
WKSROW             1          2          3          4
-------------- ---------- ---------- ---------- ----------
             1         NA TEXT       TEXT       TEXT
             2 TEXT       INTEGER    INTEGER    INTEGER
             3 TEXT       INTEGER    INTEGER    INTEGER
             4 TEXT       INTEGER    INTEGER    INTEGER
             5 TEXT       INTEGER    INTEGER    INTEGER
             6 TEXT       INTEGER    INTEGER    INTEGER 

WRITABLE

WRITABLEファンクションは、ユーザーがオブジェクトに対するWRITE権限を持っている場合はTRUEを返し、ユーザーがオブジェクトに対するWRITE権限を持っていない場合、およびオブジェクトが変数、ワークシート・オブジェクト、リレーションまたは値セットでない場合はFALSEを返すファンクションです。

戻り値

BOOLEAN

結果は、expressionと同じディメンションを持ちます。

構文

WRITABLE (expression)

パラメータ

expression

値を持つオブジェクト(変数、リレーション、値セットまたはワークシート・オブジェクト)の名前またはQDRを表す式。

YYOF

YYOFファンクションは、指定した日付が含まれる年を示す、1000から9999までの範囲のINTEGERを返すファンクションです。YYOFによって返される結果のディメンションは、指定した日付の式のディメンションと同じです。

戻り値

INTEGER

構文

YYOF(date-expression)

パラメータ

date-expression

DATEデータ型の式、または日付を指定するテキスト式。テキスト式の値は自動的にDATE値へ変換され、指定した値が不明瞭な場合は、DATEORDERオプションの現行の設定を使用して値が解決されます。

使用上の注意

年の値のカンマ

YYOFから返される値を表示するときにCOMMASオプションをYESに設定していると、年の表示が3桁区切りを示すカンマ付きになります(たとえば、1,996)。これを回避するには、年を表示する前にCOMMASオプションをNOに設定します。

例8-170 現在の年の取得

次の文を実行すると、今日の日付が含まれる年が現行の出力ファイルに送られます。

COMMAS = NO
SHOW YYOF(TODAY)

たとえば、今日の日付が1996年1月15日の場合、これらの文を実行すると次の出力が生成されます。

1996