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

前
 
次
 

7 OLAP DMLファンクション: AからK

この章では、次の項目について説明します。

この他のOLAP DMLファンクションについては、第8章「OLAP DMLファンクション: LからZ」でアルファベット順に説明しています。

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

OLAP DMLファンクションの概要

OLAPファンクションの動作は、他のプログラミング言語のファンクションの動作とほとんど同じです。アクションを開始したり値を返します。OLAP DMLファンクションには、「すべてのデータ・オブジェクトの値に対するOLAP DML文の適用」で説明する、ループ特性がある点が異なります。

OLAP DMLファンクションの多くは、標準のテキスト・ファンクションと計算ファンクションです。他のOLAP DMLファンクションは、さらに複雑な情報を返します。たとえば、OLAP DMLでは、アナリティック・ワークスペースおよびそのオブジェクトに関する様々な種類の情報を取得できるAWファンクションやOBJファンクション、およびユーザーの要求により集計データの計算をその場で実行できるAGGREGATEファンクションが提供されています。

また、ファンクションとして実行可能なOLAP DMLプログラムを作成することにより、OLAP DMLの機能を強化できます。


ヒント:

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

ファンクション: アルファベット順

A B C D E F G H I J K L M N O P Q R S T U V W Y

A


ABS
ADD_MONTHS
AGGCOUNT
AGGMAPINFO
AGGREGATEファンクション
AGGREGATION
AGGROPS
ALLOCOPS
ANTILOG
ANTILOG10
ANY
ARCCOS
ARCSIN
ARCTAN
ARCTAN2
ARG
ARGCOUNT
ARGFR
ARGS
ASCII
ASCIISTR
AVERAGE
AWファンクション

B


BACK
BASEDIM
BASEVAL
BEGINDATE
BIN_TO_NUM
BITAND
BLANKSTRIP

C


CALLTYPE
CHARTOROWID
CATEGORIZE
CEIL
CHANGEBYTES
CHANGECHARS
CHANGEDRELATIONS
CHANGEDVALUES
CHARLIST
CHGDIMS
CHR
COALESCE
COLVAL
CONTEXTファンクション
CONVERT
CORRELATION
COS
COSH
COUNT
CUMSUM
CURRENT_DATE
CURRENT_TIMESTAMP

D


DAYOF
DBTIMEZONE
DDOF
DECODE
DEPRDECL
DEPRDECLSW
DEPRSL
DEPRSOYD

E


ENDDATE
ENDOF
EVERY
EXISTS
EXP
EVERSION
EXTBYTES
EXTCHARS
EXTCOLS
EXTLINES
EXTRACT

F


FCOPEN
FCQUERY
FILEERROR
FILEGET
FILENEXT
FILEOPEN
FILEQUERY
FILTERLINES
FINDBYTES
FINDCHARS
FINDLINES
FINTSCHED
FLOOR
FPMTSCHED
FROM_TZ

G


GET
GREATEST
GROUPINGIDファンクション
GROWRATE

H


HEXTORAW
HIERCHECK
HIERHEIGHT
HIERSHAPE

I


INFO
INITCAP
INLIST
INSBYTES
INSCHARS
INSCOLS
INSLINES
INSTAT
INSTRファンクション
INTPART
IRR
ISDATE
ISEMPTY
ISINFINITE
ISNAN
ISSESSION
ISVALUE

J


JOINBYTES
JOINCHARS
JOINCOLS
JOINLINES

K


KEY

L


LAG
LAGABSPCT
LAGDIF
LAGPCT
LARGEST
LAST_DAY
LEAD
LEAST
LIMITファンクション
LIMITMAPINFO
LNNVL
LOCALTIMESTAMP
LOGファンクション
LOG10
LOWCASE
LOWER
LPAD
LTRIM

M


MAKEDATE
MAX
MAXBYTES
MAXCHARS
MEDIAN
MIN
MMOF
MODE
MODULO
MONTHS_BETWEEN
MOVINGAVERAGE
MOVINGMAX
MOVINGMIN
MOVINGTOTAL

N


NA2
NAFILL
NAFLAG
NEW_TIME
NEXT_DAY
NLS_CHARSET_ID
NLS_CHARSET_NAME
NLSSORT
NONE
NORMAL
NPV
NULLIF
NUMBYTES
NUMCHARS
NUMLINES
NUMTODSINTERVAL
NUMTOYMINTERVAL
NVL
NVL2

O


OBJ
OBJLIST
OBJORG
OBSCURE
ORA_HASH

P


PARTITION
PARTITIONCHECK
PERCENTAGE

Q


QUAL

R


RANDOM
RANK
RAWTOHEX
RECNO
REGEXP_COUNT
REGEXP_INSTR
REGEXP_REPLACE
REGEXP_SUBSTR
REM
REMAINDER
REMBYTES
REMCHARS
REMCOLS
REMLINES
REPLACE
REPLBYTES
REPLCHARS
REPLCOLS
REPLLINES
RESERVED
ROUND
ROWファンクション
ROWIDTOCHAR
ROWIDTONCHAR
RPAD
RTRIM
RUNTOTAL

S


SESSIONTIMEZONE
SIGN
SIN
SINH
SMALLEST
SMOOTH
SORTファンクション
SORTLINES
SOUNDEX
SQLFETCH
SQRT
STARTOF
STATALL
STATDEPTH
STATEQUAL
STATFIRST
STATLAST
STATLEN
STATLIST
STATMAX
STATMIN
STATRANK
STATVAL
STDDEV
SUBSTRファンクション
SUBTOTAL
SYS_CONTEXT
SYSDATE
SYSINFO
SYSTEM
SYSTIMESTAMP

T


TALLY
TAN
TANH
TCONVERT
TEXTFILL
TO_BINARY_DOUBLE
TO_BINARY_FLOAT
TO_CHAR
TO_DATE
TO_DSINTERVAL
TO_NCHAR
TO_NUMBER
TO_TIMESTAMP
TO_TIMESTAMP_TZ
TO_YMINTERVAL
TOD
TODAY
TOTAL
TRANSLATE
TRIGGERファンクション
TRIM
TRUNCATE
TZ_OFFSET

U


UNIQUELINES
UNRAVEL
UPPER
UPPER

V


VALSPERPAGE
VALUES
VINTSCHED
VPMTSCHED
VSIZE

W


WEEKOF
WIDTH_BUCKET
WKSDATA
WRITABLE

Y


YYOF

カテゴリ別のファンクション

OLAP DMLの代表的な数値ファンクションやテキスト・ファンクションには次のようなものがあります。

変換ファンクション
日時ファンクション
日付のみのファンクション
財務ファンクション
ファイル管理ファンクション
NAファンクション
数値(一般)ファンクション
数値集計ファンクション
プログラム引数およびコンテキストのファンクション
レポート・ファンクション
統計ファンクションおよび予測ファンクション
テキスト・ファンクション

データ・モデルに特有の次のようなファンクションもあります。

アナリティック・ワークスペースおよびオブジェクト情報のファンクション
集計、割当ておよびモデル仕様のファンクション
システムおよびデータベース情報のファンクション
時系列ファンクション
オブジェクトの値取得ファンクション
ステータス操作ファンクション

アナリティック・ワークスペースおよびオブジェクト情報のファンクション


AWファンクション
CHANGEDRELATIONS
CHANGEDVALUES
BASEDIM
EXISTS
ISEMPTY
ISSESSION
ISVALUE
LIMITMAPINFO
OBJ
OBJLIST
OBJORG
PARTITION
RESERVED
TALLY
TRIGGERファンクション
VALSPERPAGE
VSIZE
WRITABLE

集計、割当ておよびモデル仕様のファンクション


AGGCOUNT
AGGMAPINFO
AGGREGATEファンクション
AGGREGATION
AGGROPS
ALLOCOPS
HIERCHECK
INFO
CHANGEDRELATIONS
CHANGEDVALUES
ISEMPTY
PARTITIONCHECK

変換ファンクション


ASCII
ASCIISTR
BIN_TO_NUM
CHR
CONVERT
FROM_TZ
HEXTORAW
RAWTOHEX
TCONVERT
TO_BINARY_DOUBLE
TO_BINARY_FLOAT
TO_CHAR
TO_DATE
TO_NCHAR
TO_NUMBER
TO_TIMESTAMP
TO_TIMESTAMP_TZ

システムおよびデータベース情報のファンクション


CURRENT_DATE
CURRENT_TIMESTAMP
DBTIMEZONE
LOCALTIMESTAMP
SESSIONTIMEZONE
SYS_CONTEXT
SYSDATE
SYSINFO
SYSTEM

日時ファンクション


ADD_MONTHS
CURRENT_DATE
CURRENT_TIMESTAMP
DBTIMEZONE
EXTRACT
FROM_TZ
LAST_DAY
LOCALTIMESTAMP
MONTHS_BETWEEN
NEW_TIME
ROUND(日時)
NEW_TIME
NUMTODSINTERVAL
NUMTOYMINTERVAL
SESSIONTIMEZONE
SYSDATE
SYSTIMESTAMP
TO_DSINTERVAL
TO_TIMESTAMP
TO_TIMESTAMP_TZ
TO_YMINTERVAL
TOD
TRIM
TRUNCATE(日時)
TZ_OFFSET

日付のみのファンクション


BEGINDATE
DAYOF
DDOF
ENDDATE
ENDOF
ISDATE
MAKEDATE
MMOF
STARTOF
TODAY
WEEKOF
YYOF

財務ファンクション


DEPRDECL
DEPRDECLSW
DEPRSL
DEPRSOYD
FINTSCHED
FPMTSCHED
GROWRATE
IRR
NPV
VINTSCHED
VPMTSCHED

ファイル管理ファンクション


FILEERROR
FILEGET
FILENEXT
FILEOPEN
FILEQUERY
GET
RECNO

NAファンクション


COALESCE
NA2
NAFILL
NAFLAG
NULLIF
NVL
NVL2

数値(一般)ファンクション


ABS
ANTILOG
ANTILOG10
ARCCOS
ARCSIN
ARCTAN
ARCTAN2
BIN_TO_NUM
BITAND
CEIL
COS
COSH
DECODE
EXP
FLOOR
GREATEST
INTPART
ISINFINITE
ISNAN
LEAST
LOGファンクション
LOG10
MAX
MIN
MODULO
NULLIF
ORA_HASH
RANDOM
RANK
REM
REMAINDER
ROUND(数値)
SIGN
SIN
SINH
SMOOTH
SORTファンクション
SQRT
TAN
TANH
TRUNCATE(数値)
VSIZE
WIDTH_BUCKET

数値集計ファンクション


ANY
AVERAGE
COUNT
EVERY
LARGEST
MEDIAN
MODE
NONE
PERCENTAGE
SMALLEST
TCONVERT
TOTAL

オブジェクトの値取得ファンクション


BASEVAL
CHGDIMS
HIERHEIGHT
KEY
QUAL
ROWファンクション
SORTファンクション
UNRAVEL
VALUES
WKSDATA

プログラム引数およびコンテキストのファンクション


ARG
ARGCOUNT
ARGFR
ARGS
BACK
CALLTYPE
CONTEXTファンクション

レポート・ファンクション


COLVAL
RUNTOTAL
SUBTOTAL

統計ファンクションおよび予測ファンクション


CATEGORIZE
CORRELATION
FCOPEN
FCQUERY
INFO
NORMAL
ORA_HASH
RANDOM
STDDEV

ステータス操作ファンクション


CHGDIMS
INSTAT
LIMITファンクション
STATALL
STATDEPTH
STATEQUAL
STATFIRST
STATLAST
STATLEN
STATLIST
STATMAX
STATMIN
STATRANK
STATVAL
VALUES

テキスト・ファンクション


ASCII
ASCIISTR
BLANKSTRIP
CHANGEBYTES
CHANGECHARS
CHARLIST
EXTBYTES
EXTCHARS
EXTCOLS
EXTLINES
FILTERLINES
FINDBYTES
FINDCHARS
FINDLINES
INITCAP
INLIST
INSBYTES
INSCHARS
INSCOLS
INSLINES
INSTRファンクション
JOINBYTES
JOINCHARS
JOINCOLS
JOINLINES
LEAST
LENGTHファンクション
LOWCASE
LOWER
LPAD
LTRIM
MAXBYTES
MAXCHARS
NLS_CHARSET_ID
NLS_CHARSET_NAME
NLSSORT
NULLIF
NUMBYTES
NUMCHARS
NUMLINES
OBSCURE
REGEXP_COUNT
REGEXP_INSTR
REGEXP_REPLACE
REGEXP_SUBSTR
REMBYTES
REMCHARS
REMCOLS
REMLINES
REPLACE
REPLBYTES
REPLCHARS
REPLCOLS
REPLLINES
RPAD
RTRIM
SORTファンクション
SORTLINES
SOUNDEX
SUBSTRファンクション
TEXTFILL
TRANSLATE
TRIM
UNIQUELINES
UPPER
UPPER
VSIZE

時系列ファンクション


CUMSUM
LAG
LAGABSPCT
LAGDIF
LAGPCT
LEAD
MOVINGAVERAGE
MOVINGMAX
MOVINGMIN
MOVINGTOTAL

ABS

ABSファンクションは、式の絶対値を計算するファンクションです。実数の絶対値は、符号に関係なくその数値そのものであるため、このファンクションが返す値は常に正の値になります。たとえば、3は3と-3の両方の絶対値です。

戻り値

DECIMAL。

結果のディメンション性は、指定された式と同じになります。

構文

ABS(expression)

パラメータ

expression

絶対値を計算する対象の式。

例7-1 絶対範囲の値の検索

1996年のBostonにおけるスポーツウェアの予定売上高と、実際の売上高の差を求めるとします。予定額と実際の売上高の差が、プラスとマイナスの両方で$5,000より大きい月を調べます。ABSを使用して、それらの月を検索できます。

LIMIT product TO 'Sportswear'
LIMIT district TO 'Boston'
LIMIT month TO YEAR 'Yr96'
LIMIT month KEEP ABS(sales - sales.plan) GT 5000
REPORT DOWN month sales sales.plan sales - sales.plan

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

DISTRICT: BOSTON
               ------------PRODUCT-------------
               -----------SPORTSWEAR-----------
                                      SALES -  
MONTH            SALES    SALES.PLAN SALES.PLAN
-------------- ---------- ---------- ----------
Jun96           79,630.20  73,568.52   6,061.68
Jul96           95,707.30  80,744.18  14,963.12
Aug96           82,004.00  71,811.45  10,192.55
Sep96           89,988.60  78,282.07  11,706.53
Dec96           50,281.40  56,720.87  -6,439.47

ADD_MONTHS

ADD_MONTHSファンクションは、指定した日付からnか月後の日付を返すファンクションです。

戻り値

DATETIME

構文

ADD_MONTHS(start_datetimen)

パラメータ

start_datetime

開始日を識別するDATETIME式。start_datetimeの日の構成要素が月の最後の日である場合や、返される月の日数が少ない場合は、返される日の構成要素が月末の最後の日になります。それ以外は、返される日付の日の構成要素はstart_datetimeの日の構成要素と同じになります。例7-2「月末の計算」を参照してください。

n

start_datetimeに追加される月数を表すINTEGER

例7-2 月末の計算

次の文を使用すると、2000年1月30日の1か月後の日付が表示されます。

SHOW ADD_MONTHS('30Jan00', 1)

2月29日は2000年2月の最後の日であるため、ADD_MONTHSにより2000年2月29日が返されます。

29-Feb-00

AGGCOUNT

AGGCOUNTファンクションは、指定した変数に関連付けられたAggcount変数の値を取得します。Aggcount変数はINTEGER変数で、Oracle OLAPは、USING AGGOUNT句を含むDEFINE VARIABLE文を実行する際に、Aggcount変数を自動的に作成します。


関連項目:

「Aggcount変数」

戻り値

INTEGER

AVERAGE、HAVERAGE、WAVERAGEまたはHWAVERAGEを持つRELATION(集計用)文の実行時に、集計値の計算に加えられるリーフ・ノード数の非NAカウント数であるAggcount変数の値。

構文

AGGCOUNT(variable-name)

パラメータ

variable-name

Aggcount変数が関連付けられた変数の名前。

例7-3 Aggcount変数についてのレポート

アナリティック・ワークスペースに次の定義を持つオブジェクトが格納されているとします。

DEFINE geog DIMENSION TEXT
DEFINE time DIMENSION TEXT
DEFINE product DIMENSION TEXT
DEFINE cc_geog_product COMPOSITE <geog product> COMPRESSED
DEFINE sales VARIABLE DECIMAL <time cc_geog_product <geog product>> WITH AGGCOUNT
DEFINE geog_parentrel RELATION geog <geog>
DEFINE product_parentrel RELATION product <product>
DEFINE time_parentrel RELATION time <time>
DEFINE aggsales AGGMAP
   AGGMAP
   RELATION time_parentrel OPERATOR AVERAGE ARGS COUNT YES
   RELATION geog_parentrel
   RELATION product_parentrel
   END
 

注意すべき点は、sales変数の定義にはAggcount変数の定義が含まれていること、およびaggsales aggmapではtime_parentrelリレーションのRELATION文にAVERAGE演算子が含まれていることです。

また、sales変数のベース値のみが移入され、RadioおよびTVに対するsalesの値が次のようになったとします。

REPORT sales

PRODUCT: Radio
               -------------SALES--------------
               --------------TIME--------------
GEOG              2004       2005     Average
-------------- ---------- ---------- ----------
Maine              122.93     176.69         NA
California         168.32     150.92         NA
Quebec                 NA         NA         NA
Ontario            187.46     164.46         NA
USA                    NA         NA         NA
Canada                 NA         NA         NA
World                  NA         NA         NA
 
PRODUCT: TV
               -------------SALES--------------
               --------------TIME--------------
GEOG              2004       2005     Average
-------------- ---------- ---------- ----------
Maine              184.75     135.40         NA
California         139.89     145.71         NA
Quebec                 NA         NA         NA
Ontario            123.63     113.32         NA
USA                    NA         NA         NA
Canada                 NA         NA         NA
World                  NA         NA         NA
 
PRODUCT: AV
               -------------SALES--------------
               --------------TIME--------------
GEOG              2004       2005     Average
-------------- ---------- ---------- ----------
Maine                  NA         NA         NA
California             NA         NA         NA
Quebec                 NA         NA         NA
Ontario                NA         NA         NA
USA                    NA         NA         NA
Canada                 NA         NA         NA
World                  NA         NA         NA
 

AVに対しては集計が行われなかったため、Aggcount変数への移入はまだ行われず、salesのAggcount変数にはNA値が格納されます。

ここで、次の文を発行してsales変数の集計を行います。

AGGREGATE sales USING aggsales

salesのレポートには、次の値が表示されます。

REPORT sales

PRODUCT: Radio
               -------------SALES--------------
               --------------TIME--------------
GEOG              2004       2005     Average
-------------- ---------- ---------- ----------
Maine              122.93     176.69     149.81
California         168.32     150.92     159.62
Quebec                 NA         NA         NA
Ontario            187.46     164.46     175.96
USA                291.24     327.61     309.42
Canada             187.46     164.46     175.96
World              478.70     492.07     485.38
 
PRODUCT: TV
               -------------SALES--------------
               --------------TIME--------------
GEOG              2004       2005     Average
-------------- ---------- ---------- ----------
Maine              184.75     135.40     160.07
California         139.89     145.71     142.80
Quebec                 NA         NA         NA
Ontario            123.63     113.32     118.47
USA                324.64     281.11     302.87
Canada             123.63     113.32     118.47
World              448.27     394.42     421.35
 
PRODUCT: AV
               -------------SALES--------------
               --------------TIME--------------
GEOG              2004       2005     Average
-------------- ---------- ---------- ----------
Maine              307.67     312.08     309.88
California         308.21     296.63     302.42
Quebec                 NA         NA         NA
Ontario            311.09     277.78     294.43
USA                615.88     608.71     612.30
Canada             311.09     277.78     294.43
World              926.97     886.49     906.73

Aggcount変数のレポートからは、salesの平均値を集計するために必要なINTEGER値がAggcount変数に移入されていることがわかります。

REPORT AGGCOUNT (sales)

PRODUCT: Radio
               --------AGGCOUNT (SALES)--------
               --------------TIME--------------
GEOG              2004       2005     Average
-------------- ---------- ---------- ----------
Maine                  NA         NA          2
California             NA         NA          2
Quebec                 NA         NA         NA
Ontario                NA         NA          2
USA                     2          2          4
Canada                 NA         NA          2
World                   3          3          6
 
PRODUCT: TV
               --------AGGCOUNT (SALES)--------
               --------------TIME--------------
GEOG              2004       2005     Average
-------------- ---------- ---------- ----------
Maine                  NA         NA          2
California             NA         NA          2
Quebec                 NA         NA         NA
Ontario                NA         NA          2
USA                     2          2          4
Canada                 NA         NA          2
World                   3          3          6
 
PRODUCT: AV
               --------AGGCOUNT (SALES)--------
               --------------TIME--------------
GEOG              2004       2005     Average
-------------- ---------- ---------- ----------
Maine                   2          2          4
California              2          2          4
Quebec                 NA         NA         NA
Ontario                 2          2          4
USA                     4          4          8
Canada                  2          2          4
World                   6          6         12

AGGMAPINFO

AGGMAPINFOファンクションは、アナリティック・ワークスペース内のaggmapオブジェクトの仕様に関する情報を返すファンクションです。

集計仕様(AGGMAP型のaggmapオブジェクト)に関する情報は、コンパイル後にのみ取得できます。集計仕様をコンパイルするには、COMPILE文を使用するか、またはFUNCDATAキーワードを指定してAGGREGATEコマンドを実行します。AGGMAPINFOファンクションで使用する前に集計仕様がコンパイルされていない場合は、AGGMAPINFOでコンパイルされます。ALLOCATEで使用するaggmapはコンパイルする必要がありません。

戻り値

要求する情報の種類によって異なります。詳細は、表7-1「AGGMAPINFOファンクションのchoiceパラメータのキーワード」を参照してください。

構文

AGGMAPINFO (name {choice | {choice-at-position rel-pos} })

パラメータ

name

aggmapオブジェクトの名前。

choice

返される情報の種類を指定します。詳細は、表7-1「AGGMAPINFOファンクションのchoiceパラメータのキーワード」を参照してください。

表7-1 AGGMAPINFOファンクションのchoiceパラメータのキーワード

キーワード データ型 説明

ADDED_MODELS

TEXT

AGGMAP ADDまたはREMOVEモデル文を使用して現在aggmapに追加されているモデル。モデルの名前を複数行のテキスト文字列で返す。

AGGINDEX

BOOLEAN

aggmapにあるAGGINDEX文の設定を示す。YESに設定すると、aggmapが再コンパイルされるたびにすべての使用可能な索引(コンポジット・タプル)が作成されることを示す。(AGGMAP型のaggmapにのみ適用。)

CHILDREN member-name

TEXT

MAINTAIN ADD SESSION文を使用して追加されるディメンション・メンバーで、一時計算メンバーを計算するために使用する方程式の右側に使用。メンバーの名前を複数行のテキスト文字列で返す。

CUSTOMMEMBERS

TEXT

MAINTAIN ADD SESSION文で追加されるメンバー。メンバーの名前を複数行のテキスト文字列で返す。

DIMENSION

TEXT

aggmapで使用されるモデルまたはリレーションのディメンションの名前。メンバーの名前を複数行のテキスト文字列で返す。

FCACHE

BOOLEAN

AGGREGATEファンクションのキャッシュがOracle OLAPにあるかどうかを示す。(AGGMAP型のaggmapにのみ適用。)

MAPTYPE

TEXT

aggmapの型。

  • AGGMAP文で仕様が入力されている場合、集計仕様の型としてAGGMAPを返す。この型のaggmapは、AGGREGATEコマンドまたはAGGREGATEファンクションでのみ使用可能。

  • ALLOCMAP文で仕様が入力されている場合、割当て仕様の型としてALLOCMAPを返す。この型のaggmapは、ALLOCATEでのみ使用可能。

  • aggmapは定義されているがAGGMAPまたはALLOCMAP文で仕様が入力されていない場合、NAを返す。

MODELS

TEXT

aggmapのモデル。モデルの名前を複数行のテキスト文字列で返す。

NUMRELS

INTEGER

aggmap仕様にあるRELATION文の合計数。

RELATIONS

TEXT

aggmap仕様のRELATION文で指定されているリレーションの名前。各文を別々の行で表示。

STORE

BOOLEAN

aggmapのCACHE文がSTOREに設定されているかどうかを示す。YESに設定すると、即時計算されるデータがキャッシュに格納されることを示す。(AGGMAP型のaggmapにのみ適用。)

VARIABLES

TEXT

AGGMAP ADDまたはREMOVEモデル文または$AGGMAPプロパティを使用してデフォルトのaggmapとして指定されているaggmapオブジェクトの変数。変数の名前を複数行のテキスト文字列で返す。


choice-at-position

返される情報を具体的に指定します。

PRECOMPUTEを指定すると、RELATION文のPRECOMPUTEキーワードの後にある制限句のテキストを返します。単一のRELATION文を指定するには、rel-pos引数を使用する必要があります。RELATION文にPRECOMPUTEキーワードがない場合はNAを返します。(AGGMAP型のaggmapにのみ適用。)

RELATIONを指定すると、rel-pos引数で指定したRELATION文の後にあるリレーションの名前を返します。

STATUSを指定すると、rel-pos引数で指定したRELATION文のPRECOMPUTE句をコンパイルした結果のステータス・リストを返します。(AGGMAP型のaggmapにのみ適用。)

rel-pos

aggmapのRELATION文を指定するINTEGER。このINTEGER値はRELATION文のリストにおける文の位置を示します。rel-pos引数はRELATION、PRECOMPUTEまたはSTATUSキーワードでのみ使用できます。たとえば、aggmapの最初のRELATION文に関する情報を取得するには、rel-pos引数としてINTEGER値の1を使用します。aggmapの4番目のRELATION文に関する情報を取得するには、INTEGER値の4を使用します(以降同様)。使用できるのは、1からaggmap仕様にあるRELATION文の合計数までの任意のINTEGER値です。aggmapオブジェクトのRELATION文の合計数を取得するには、NUMRELSキーワードを使用します。

例7-4 aggmapオブジェクトに関する情報の取得

sales.aggという名前のaggmapが次の文で定義されているとします。

DEFINE sales.agg AGGMAP <time, product, geography>

次の仕様がAGGMAP文でsales.aggに追加されているとします。

AGGMAP
RELATION time.r PRECOMPUTE (time ne 'Year98')
RELATION product.r
RELATION geography.r
CACHE STORE
END

aggmapに仕様が追加されている場合、AGGMAPINFOを使用してその仕様に関する情報を取得できます。

RELATION文で指定されている各階層の名前を参照するには、次の文を使用します。

SHOW AGGMAPINFO(sales.agg RELATIONS)

次の結果が表示されます。

time.r
product.r
geography.r

次の文と結果で、aggmapオブジェクトにあるRELATION文の数を取得できます。

SHOW AGGMAPINFO(sales.agg NUMRELS)
3

次の文と結果で、即時計算されるデータがセッションのキャッシュに格納されることを確認できます。aggmapにCACHE STORE文が含まれているので、結果はYESです。

show AGGMAPINFO(sales.agg STORE)
YES

次の文によって、aggmapにある2番目のRELATION文で指定されているリレーション名が表示されます。

SHOW AGGMAPINFO(sales.agg RELATION 2)
product.r

次の文によって、aggmapにある最初のRELATION文のPRECOMPUTEキーワードの後にある制限句が表示されます。

SHOW AGGMAPINFO(sales.agg PRECOMPUTE 1)
time NE 'YEAR98'

timeディメンション値がJan98からDec99Year98およびYear99であるとします。次の文によって、aggmapにある最初のRELATION文のディメンションに対するステータス・リストが表示されます。

SHOW AGGMAPINFO(sales.agg STATUS 1)
Jan98 TO Dec99, Year99

RELATION文の制限句でtimeディメンション値がYear98と等しくないように指定されているので、Year98以外のすべてのtimeディメンション値がステータスに含まれます。

次の文によって、sales.aggのaggmapの型が表示されます。

SHOW AGGMAPINFO(sales.agg MAPTYPE)
AGGMAP 

AGGREGATEファンクション

AGGREGATEファンクションは、指定されたaggmapでPRECOMPUTEと指定されていない変数のデータを計算します。 (事前計算するデータを指定する方法は、PRECOMPUTE文およびRELATION(集計用)文のPRECOMPUTE句を参照してください。)集計の対象になるのは、現在ステータスにある値に限られます。


関連項目:

AGGREGATEコマンド


注意:

集計対象の変数に$AGGMAPプロパティが指定されている場合は、事前計算の対象でないデータを集計するためにAGGREGATEファンクションを使用する必要はありません。

戻り値

集計された変数と同じデータ型

構文

AGGREGATE (var ... [USING aggmap] -

[FROM fromspec|FROMVAR textvar] [FORCECALC FORCEORDER] [COUNTVAR countvar])

パラメータ

var

(必要な場合は)計算されてから返されるデータの変数の名前。

USING

このキーワードは、指定したaggmapを使用して集計が実行されることを示します。

aggmap

データの集計方法を指定する事前定義されたaggmapの名前。aggmapの詳細は、DEFINE AGGMAPを参照してください。

FROM

このキーワードは、異なるオブジェクトから詳細データが取得されることを示します。FROM句は、集計の実行時における詳細データの取得元の変数を指定する唯一の方法です。「集計の詳細データの取得元を指定する方法」を参照してください。

fromspec

集計の詳細データの取得元である任意にディメンション化された変数、計算式またはリレーション。

FROMVAR

このキーワードは、キャップストーン集計を実行するために異なるオブジェクトから詳細データが取得されることを示します。FROMVAR句は、集計の実行時における詳細データの取得元の変数を指定する唯一の方法です。「集計の詳細データの取得元を指定する方法」を参照してください。

textvar

リーフ・ノードを解決するために使用される任意にディメンション化された変数。値を計算するときにノードが詳細データを必要としない場合は、NAを指定します。

FORCECALC

該当するセルに値が格納されている場合でも、aggmap内にあるRELATION文のPRECOMPUTE句で指定されていない値は再計算するように指定します。ユーザーが詳細データ・セルを変更し、動的計算集計セルに反映された変更値を参照できるようにする場合に、FORCECALCキーワードを使用します。


注意:

変数に$AGGREGATE_FORCECALCプロパティを設定すると、この動作を集計時のデフォルトの動作にすることができます。この場合、FORCECALCキーワードをAGGREGATEファンクションで指定する必要はありません。

FORCEORDER

aggmapにリストされているRELATION文と同じ順序で計算を実行するよう指定します。AGGREGATEコマンドで計算された値の一部を変更した場合に、このオプションを使用します。このオプションを指定しないと、AGGREGATEファンクションで使用する最適化方法において、変更された値が無視されることがあります。FORCEORDERを使用するとパフォーマンスが低下します。


注意:

変数に$AGGREGATE_FORCEORDERプロパティを設定すると、この動作を集計時のデフォルトの動作にすることができます。この場合、FORCEORDERキーワードをAGGREGATEファンクションで指定する必要はありません。

COUNTVAR countvar

AVERAGE、HAVERAGE、HWAVERAGEまたはWAVERAGE演算子を含むRELATION(集計用)文について計算された集計値に加えられたリーフ・ノードの数の非NAカウント数を格納する場合、countvarで指定されたユーザー定義の変数を使用するよう指定します。


注意:

通常、平均集計値の格納にユーザー定義のCountvar変数は使用しません。かわりに、Oracle OLAPが作成したAggcount変数を使用します。圧縮コンポジット用の平均演算子を持つRELATION(集計用)文が集計仕様に含まれる場合は、Aggcount変数を使用する必要があります

Aggcount変数の詳細は、「Aggcount変数」を参照してください。


countvar変数は、varで指定された変数と同一のディメンションが同一の順序で定められているINTEGER変数である必要があります。複数の変数を同時に集計する場合、個別に結果を記録するためにINTEGER変数をそれぞれ定義する必要があります。

使用上の注意

実行時計算をサポートする手順

事前集計と実行時集計を組み合せる手順は次のとおりです。

  1. 事前計算されるデータの量を制限するaggmapを作成します。

  2. AGGREGATEコマンドをFUNCDATA引数で実行します。

  3. AGGREGATEコマンドの実行後に変更を加えた場合(「aggmapのコンパイル」を参照)、COMPILE文でaggmapを再コンパイルします。

  4. $AGGREGATE_FROMプロパティをデータ変数に追加します(「実行時計算をトリガーするためのNA値の使用」を参照)。

  5. アナリティック・ワークスペースに対してUPDATEおよびCOMMITを実行します。

aggmapのコンパイル

データをロードする場合は、明示的にCOMPILE文を実行するかAGGREGATEコマンドをFUNCDATA引数で実行し、必ずaggmapをコンパイルしてください。コンパイルされていない場合、AGGREGATEファンクションを使用する各セッションでaggmapは実行時に再コンパイルされます。aggmapをコンパイルするときは、モデルの計算など他の計算を先に実行しておきます。

aggmap定義のディメンションまたはaggmapのテキストに含まれるリレーションをメンテナンスした後は、aggmapを再コンパイルする必要があります。

データ値の実行時変更

ユーザーが実行時にデータ値を変更する可能性がある場合、そのデータが同期化されていないことがあります。この問題を回避する方法は次のとおりです。

  • ALLOCATE文を使用して、新しい集計のデータを階層の下位にある関係する値に配布する。

  • 実行時の変更の影響を受けるデータを事前計算しない(格納された集計値は、実行時の変更を関係する値に反映するように変更できないため)。

実行時計算をトリガーするためのNA値の使用

$NATRIGGERプロパティを変数に追加することで、データが問い合されるたびにAGGREGATEファンクションを暗黙的にコールできます。次の文によって、sales.aggmapというaggmapを使用してsalesデータが集計されます。

CONSIDER sales
PROPERTY '$NATRIGGER' 'AGGREGATE(sales USING sales.aggmap)'

以降は、REPORT SALESなどの文でAGGREGATEファンクションが実行され、NAではなく計算された値が返されます。

部分ロールアップ後のAGGREGATEファンクションの使用

生成するすべてのデータを事前計算できるほどバッチ・ウィンドウが長くない場合、連日に分けて集計を実行し、AGGREGATEファンクションを使用して残りを計算します。各段階で次のように実行します。

  1. 新しいデータが集計されるように、aggmapにあるRELATION文のPRECOMPUTE句を変更します。

  2. AGGREGATEコマンドをFUNCDATAキーワードで実行します。

  3. AGGREGATEファンクションが残りのデータを計算するように、$NATRIGGERプロパティが変数に設定されていることを確認します。

複数のaggmapの使用

変数をロールアップする際に使用するaggmapは、可能なかぎり1つにしてください。ただし、場合によっては、希望する方法でデータをロールアップするために複数のaggmapが必要となる変数もあります。データをロールアップするために複数のaggmapが必要となる変数がある場合、最後のaggmapが、AGGREGATEファンクション用として確保されるメタデータに相当するため、一部のデータを即時計算すると問題が発生します。AGGREGATEファンクションでは、AGGREGATEコマンドで使用するすべてのaggmapを結合したメタデータが必要です。この問題を解決するには、NA値を正しく識別する別のaggmapを作成し、AGGREGATEファンクションで使用します。このaggmapは必ずコンパイルしてください。

次の質問に対する答えが確実ではない場合、AGGREGATEファンクションで複数のaggmapを使用しないでください。

AGGREGATEファンクションで使用するaggmapをコンパイルしたときに、各PRECOMPUTE句から得られたステータスが、データを事前計算したディメンション内のノードを正しく定義しているか。

この質問に対して「定義している」と確実に答えられない場合は、AGGREGATEファンクションで複数のaggmapを使用しないでください。

この項では、一部のAGGREGATEファンクションの使用例を示します。その他の集計の例は、AGGMAPコマンドの例を参照してください。

例7-5 式の計算式としてのAGGREGATEファンクションの使用

例9-32「キャップストーン集計」は、AGGREGATEコマンドを使用して最終キャップストーン集計を実行する例です。キャップストーン集計は、計算式の式として実行時に実行することもできます。

アナリティック・ワークスペースに次のオブジェクト定義が含まれているとします。

DEFINE GEOG.D DIMENSION TEXT
DEFINE GEOG.PARENTREL RELATION GEOG.D <GEOG.D>
DEFINE TIME.D DIMENSION TEXT
DEFINE TIME.PARENTREL RELATION TIME.D <TIME.D>
DEFINE SALES_JAN76 VARIABLE INTEGER <GEOG.D>
DEFINE SALES_FEB76 VARIABLE INTEGER <GEOG.D>
DEFINE SALES_MAR76 VARIABLE INTEGER <GEOG.D>
DEFINE SALES_CAPSTONE76 VARIABLE INTEGER <GEOG.D TIME.D>
DEFINE CAPSTONE_SOURCE VARIABLE TEXT <TIME.D>

次の定義で2つのaggmapオブジェクトを作成します。ここでは、capstone_aggmapが、PRECOMPUTE NA句を使用したRELATION文で構成されていることに注意してください。

DEFINE LEAF_AGGMAP AGGMAP
AGGMAP
RELATION geog.parentrel OPERATOR SUM
END
 
DEFINE CAPSTONE_AGGMAP AGGMAP
AGGMAP
RELATION time.parentrel OPERATOR SUM PRECOMPUTE (NA)
END

例9-32「キャップストーン集計」では、AGGREGATEコマンドを使用して最終キャップストーン集計が実行されます。この例では、AGGREGATEファンクションを計算式の式として含むf_sales_capstone76という名前の計算式としてキャップストーン集計を定義します。

DEFINE F_SALES_CAPSTONE76 FORMULA INTEGER <GEOG.D TIME.D>
EQ AGGREGATE ( sales_capstone76 USING capstone_aggmap fromvar capstone_source)
 

アナリティック・ワークスペースで集計されない変数および計算式に対してレポートを作成すると、結果は次のとおりになります。

GEOG.D          SALES_JAN76    SALES_FEB76    SALES_MAR76
-------------- -------------- -------------- --------------
Boston                  1,000          2,000          3,000
Medford                 2,000          4,000          6,000
San Diego               3,000          6,000          9,000
Sunnydale               4,000          8,000         12,000
Massachusetts              NA             NA             NA
California                 NA             NA             NA
United States              NA             NA             NA
 
               --------------------F_SALES_CAPSTONE76---------------------
               --------------------------TIME.D---------------------------
GEOG.D             Jan76          Feb76          Mar76           76Q1
-------------- -------------- -------------- -------------- --------------
Boston                  1,000          2,000          3,000          6,000
Medford                 2,000          4,000          6,000         12,000
San Diego               3,000          6,000          9,000         18,000
Sunnydale               4,000          8,000         12,000         24,000
Massachusetts              NA             NA             NA             NA
California                 NA             NA             NA             NA
United States              NA             NA             NA             NA
 
               ---------------------SALES_CAPSTONE76----------------------
               --------------------------TIME.D---------------------------
GEOG.D             Jan76          Feb76          Mar76           76Q1
-------------- -------------- -------------- -------------- --------------
Boston                  1,000          2,000          3,000             NA
Medford                 2,000          4,000          6,000             NA
San Diego               3,000          6,000          9,000             NA
Sunnydale               4,000          8,000         12,000             NA
Massachusetts              NA             NA             NA             NA
California                 NA             NA             NA             NA
United States              NA             NA             NA             NA
 

次のAGGREGATE文を使用してリーフ変数を集計します。

AGGREGATE sales_jan76 sales_feb76 sales_mar76 USING leaf_aggmap

リーフ変数のレポートには、集計された値が表示されます。

GEOG.D          SALES_JAN76    SALES_FEB76    SALES_MAR76
-------------- -------------- -------------- --------------
Boston                  1,000          2,000          3,000
Medford                 2,000          4,000          6,000
San Diego               3,000          6,000          9,000
Sunnydale               4,000          8,000         12,000
Massachusetts           3,000          6,000          9,000
California              7,000         14,000         21,000
United States          10,000         20,000         30,000

f_sales_capstone76計算式のレポートには、76Q1の集計された値が表示されます。

               --------------------F_SALES_CAPSTONE76---------------------
               --------------------------TIME.D---------------------------
GEOG.D             Jan76          Feb76          Mar76           76Q1
-------------- -------------- -------------- -------------- --------------
Boston                  1,000          2,000          3,000          6,000
Medford                 2,000          4,000          6,000         12,000
San Diego               3,000          6,000          9,000         18,000
Sunnydale               4,000          8,000         12,000         24,000
Massachusetts           3,000          6,000          9,000         18,000
California              7,000         14,000         21,000         42,000
United States          10,000         20,000         30,000         60,000

これに対し、sales_capstone76変数には76Q1の集計値が格納されないので、この変数のレポートには集計値は表示されません。

               ---------------------SALES_CAPSTONE76----------------------
               --------------------------TIME.D---------------------------
GEOG.D             Jan76          Feb76          Mar76           76Q1
-------------- -------------- -------------- -------------- --------------
Boston                  1,000          2,000          3,000             NA
Medford                 2,000          4,000          6,000             NA
San Diego               3,000          6,000          9,000             NA
Sunnydale               4,000          8,000         12,000             NA
Massachusetts           3,000          6,000          9,000             NA
California              7,000         14,000         21,000             NA
United States          10,000         20,000         30,000             NA

例7-6 レポートに対するデータの即時集計

units変数は、tp.aggというaggmapを使用して即時集計されます。

units変数のオブジェクト定義は次のとおりです。

DEFINE units VARIABLE INTEGER <time product>

timeの親リレーションには次の値が含まれます。

      ---TIME.PARENTREL----
      --TIME.HIERARCHIES---
TIME       STANDARD   YTD
---------- ---------- ----------
Jan01      Q1.01      Last.Ytd
Feb01      Q1.01      Last.Ytd
Mar01      Q1.01      Last.Ytd
Q1.01      2001       NA

productディメンションの親リレーションには次の値が含まれます。

    PRODUCT.PA
PRODUCT    RENTREL
---------- ----------
Food       Na
Snacks     Food
Drinks     Food
Popcorn    Snacks
Cookies    Snacks
Cakes      Snacks
Soda       Drinks
Juice      Drinks

units変数では、データは各ディメンション階層の最下位レベルにのみ格納されます。

  -------------------UNITS-------------------
  -------------------TIME--------------------
PRODUCT     Jan01      Feb01      Mar01      Q1.01
----------- ---------- ---------- ---------- ----------
Food        NA         NA         NA         NA
Snacks      NA         NA         NA         NA
Drinks      NA         NA         NA         NA
Popcorn     2          2          4          NA
Cookies     3          6          3          NA
Cakes       4          4          2          NA
Soda        7          3          9          NA
Juice       1          3          2          NA

aggmapは、すべてのデータが即時計算されることを指定しています。

DEFINE tp.agg AGGMAP
LD <time product> Aggmap
AGGMAP
RELATION time.parentrel PRECOMPUTE (NA)
RELATION product.parentrel PRECOMPUTE (NA)
END

次のREPORT文は、AGGREGATEファンクションを使用してデータを計算します。

REPORT aggregate(units USING tp.agg)

  -------AGGREGATE(UNITS USING TP.AGG)-------
  -------------------TIME--------------------
PRODUCT     Jan01      Feb01      Mar01      Q1.01
----------- ---------- ---------- ---------- ----------
Food        17         18         20         55
Snacks       9         12          9         30
Drinks       8          6         11         25
Popcorn      2          2          4          8
Cookies      3          6          3         12
Cakes        4          4          2         10
Soda         7          3          9         19
Juice        1          3          2          6

例7-7 $NATRIGGERを使用したデータ集計

$NATRIGGERプロパティでAGGREGATEファンクションをunitsに追加すると、単純なREPORT文で集計結果を表示できます。

CONSIDER units
PROPERTY '$NATRIGGER' 'AGGREGATE(units USING tp.agg)'
REPORT units
 
  -------------------UNITS-------------------
  -------------------TIME--------------------
PRODUCT     Jan01      Feb01      Mar01      Q1.01
----------- ---------- ---------- ---------- ----------
Food        17         18         20         55
Snacks       9         12          9         30

例7-8 1つの値を除くすべての値の即時計算

AGGREGATEファンクションは、RELATION文のPRECOMPUTE句で指定されたデータの補数を計算します。これにより現在ステータスにある値が返されます。

たとえば、次のRELATION文を含むaggmapを使用するとします。

RELATION letter.letter PRECOMPUTE ('AA')

AGGREGATEファンクションは、次に示すようにAA除くすべての集計を計算します

REPORT AGGREGATE(units USING letter.aggmap)

                 AGGREGATE(UNITS
LETTER         USING LETTER.AGGMAP)
-------------- --------------------
A                                 3
AA                               NA
AB                                3
AAB                               2
ABA                               1
ABB                               2
AAAA                              1
AABA                              2
ABAA                              1
ABBB                              1
ABBA                              1
...

AGGREGATION

AGGREGATIONファンクションをモデル内で使用すると、カスタム集計を表すモデルの作成が可能です。このようなaggmapは、AGGREGATEファンクションの動的集計で使用できます。


注意:

AGGREGATIONファンクションは動的集計でのみ使用されるため、このようなファンクションを含むモデルはAGGREGATEコマンドでは使用できません

構文

AGGREGATION(dimval-list)

パラメータ

dimval-list

カスタム集計に含まれる1つ以上のディメンション値のリスト。指定する値は、ターゲット・ディメンション値が属しているディメンションと同じディメンションに属している必要があります。各ディメンション値はテキスト・リテラルとして指定する必要があります。変数のようにテキスト式によって表すことはできません。

例7-9 カスタム集計を作成するためのAGGREGATIONファンクションの使用

それぞれのステップで、次のような各コード行をプログラムで実行します。

  1. 新しいディメンション値my_timetimeディメンションに追加します。

    MAINTAIN time ADD 'My_Time'
    
  2. モデルmytime_custaggを定義し、AGGREGATIONファンクションを使用してこのモデルの仕様を設定します。

    DEFINE mytime_custagg MODEL
    MODEL JOINLINES('DIMENSION time' 'My_Time = AGGREGATION(\'23\' \'24\')')
    

    (引用符付き文字列に引用符を使用する場合は、バックスラッシュのエスケープ文字が必要です。)

  3. sales_aggmapというaggmapを定義します。

    DEFINE sales_aggmap AGGMAP <time cpc <customer product channel> >
    AGGMAP
    RELATION prntrel.time
    RELATION prntrel.chan
    RELATION prntrel.prod
    RELATION prntrel.cust
    END
    
  4. モデルmytime_custaggsales_aggmapに追加します。

    AGGMAP ADD mytime_custagg TO sales_aggmap
    
  5. 対象とする値に各ディメンションを制限し、レポートを作成します。 

    " Run a report
    LIMIT time TO 'My_Time' '23' '24'
    LIMIT channel TO '5'
    LIMIT product TO '70'
    LIMIT customer TO '114'
    REPORT DOWN time AGGREGATE(sales USING sales_aggmap)
    

    レポートによって生成される出力は次のとおりです

    CHANNEL: 5
    PRODUCT: 70
                   --AGGREGATE(SALES---
                   USING SALES_AGGMAP)-
                   ------CUSTOMER------
    TIME                   114
    -------------- --------------------
    my_time                  682,904.34
    23                        84,982.92
    24                       597,921.42
    

AGGROPS

AGGROPSファンクションは、RELATION(集計用)文で指定できるすべての集計演算子のキーワードを、各行に1つずつ表示される複数行のテキスト値として返します。

戻り値

TEXT

構文

AGGROPS

例7-10 集計演算子のリスト表示

AGGROPS文を発行すると、Oracle OLAPによりすべての集計演算子のリストが返されます。

SHOW AGGROPS

SUM
WSUM
SSUM
AND
OR
FIRST
LAST
HFIRST
HLAST
AVERAGE
WAVERAGE
HAVERAGE
HWAVERAGE
MIN
MAX
WFIRST
WLAST
HWFIRST
HWLAST
WMIN
WMAX
NOAGG

ALLOCOPS

ALLOCOPSファンクションは、RELATION(割当て用)文で指定できるすべての割当て演算子のキーワードを、各行に1つずつ表示される複数行のテキスト値として返します。

戻り値

TEXT

構文

ALLOCOPS

例7-11 割当て演算子のリスト表示

ALLOCOPS文を発行すると、Oracle OLAPによりすべての割当て演算子のリストが返されます。

SHOW ALLOCOPS

FIRST
LAST
HFIRST
HLAST
MIN
MAX
EVEN
HEVEN
COPY
HCOPY
PROPORTIONAL

ANTILOG

ANTILOGファンクションは、指定した指数で累乗したe(自然対数の底)の値を計算するファンクションです。

戻り値

DECIMAL

構文

ANTILOG(n)

パラメータ

n

ANTILOGファンクションによって返されるeの累乗指数。

例7-12 eの2乗の値の計算

次のファンクションによって、eの2乗の値が計算されます。

ANTILOG(2)

このファンクションによって次の値が返されます。

7.38906

ANTILOG10

ANTILOG10ファンクションは、指定した指数で累乗した10の値を計算するファンクションです。

戻り値

DECIMAL

構文

ANTILOG10(n)

パラメータ

n

ANTILOG10ファンクションによって返される10の累乗指数。

 

例7-13 10の3乗の値の計算

次のファンクションによって10の3乗の値が計算されます。

ANTILOG10(3)

このファンクションによって次の値が返されます。

1,000.00

ANY

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

戻り値

BOOLEAN

構文

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

パラメータ

boolean-expression

評価されるブール式。

CACHE

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

dimension

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

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


ヒント:

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

使用上の注意

ANYでのNASKIPの影響

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

DAY、WEEK、MONTH、QUARTERまたはYEAR型のデータ

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

Oracle OLAPは、関連ディメンションの期間ごとに、ターゲット期間に終了するすべてのソース期間のデータ値を調べます。この方法は、どのディメンションがより上位の集計期間を保持しているかにかかわらず、適用されます。

例7-14 TRUE値の有無の調査(地区別)

スポーツウェアの売上が$150,000を超える月が最低1回あった地区を探すとします。ANYファンクションを使用して、いずれかの月でブール式(sales GT 150000)がTRUEであるかどうかを判断します。districtでディメンション化された結果を得るために、ANYファンクションの2番目の引数としてdistrictを指定します。

LIMIT product TO 'SPORTSWEAR'
REPORT HEADING 'High Sales' ANY(sales GT 150000, district)

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

DISTRICT       High Sales
-------------- ----------
Boston                 NO
Atlanta               YES
Chicago                NO
Dallas                YES
Denver                 NO
Seattle                NO

例7-15 TRUE値の有無の調査(地域別)

スポーツウェアの売上が$150,000を超える地区が最低1つある月が最低1回あった地域も探すことができます。regionディメンションはdistrictディメンションと関連があるので、ANYの結果のディメンションとして、districtではなくregionを指定できます。

report heading 'High Sales' any(sales gt 150000, region)

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

REGION         High Sales
-------------- ----------
East                  YES
Central               YES
west                   NO

ARCCOS

ARCCOSファンクションは、指定した余弦の角度値をラジアン単位で計算するファンクションです。

戻り値

NUMBER

構文

ARCCOS(expression)

パラメータ

expression

余弦の10進値を含む式。

使用上の注意

無効な余弦値

余弦のに対して不適当な値(1より大きい値または-1より小さい値)を指定すると、ARCCOSはNAの値を返します。

例7-16 逆余弦の計算

この例では、値0.54030の逆余弦を計算します。次の文

SHOW ARCCOS(.54030)

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

1.00

ARCSIN

ARCSINファンクションは、指定した正弦の角度値をラジアン単位で計算するファンクションです。

戻り値

NUMBER

構文

ARCSIN(expression)

パラメータ

expression

正弦の10進値を含む式。

使用上の注意

無効な正弦値

正弦に対して不適切な値(1より大きい値または-1より小さい値)を指定すると、ARCSINはNAの値を返します。

例7-17 逆正弦の計算

この例では、値0.84147の逆正弦を計算します。次の文

SHOW ARCSIN(.84147)

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

1.00

ARCTAN

ARCTANファンクションは、指定した正接の角度値をラジアン単位で計算するファンクションです。

特定の比の逆正接を示す全範囲(0から2π)の数値を取得するには、ARCTAN2を使用します。

戻り値

NUMBER

構文

ARCTAN(expression)

パラメータ

expression

正接の10進値を含む式。

例7-18 逆正接の計算

この例では、値1.56の逆正接を計算します。次の文

SHOW ARCTAN(1.56)

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

1.00

ARCTAN2

ARCTAN2ファンクションは、特定の比の逆正接を示す全範囲(0から2π)の数値を返すファンクションです。このファンクションは、引数の符号に応じて-πからπまでの範囲で値を返します。値はラジアン単位で表されます。

指定した正接の角度値(比以外)をラジアン単位で計算するには、ARCTANを使用します。

戻り値

NUMBER

構文

ARCTAN2 (n / m)

パラメータ

n

比の一方のコンポーネントを指定する数式。引数nの範囲は無制限です。

m

比のもう一方のコンポーネントを指定する数式。

例7-19 逆正接の取得

次の例では、.3.2の逆正接が返されます。

SHOW ARCTAN2(.3/.2) 

.982793723

ARG

OLAP DMLプログラムの内部でARGファンクションを使用すると、プログラムに渡される引数を参照できます。このファンクションは、1つの引数をテキスト値として返します。


注意:

通常は、プログラムに渡される引数の参照にARGファンクションを使用しなくても済むよう、ARGUMENT文を使用して、プログラム内で引数を定義します。プログラムに渡される引数をARGUMENTを使用して定義する方法の詳細は、「プログラムに渡される引数の宣言」を参照してください。

戻り値

TEXT

構文

ARG(n)

パラメータ

n

参照する引数の位置に応じた数値。ARG(1)を指定するとプログラムの最初の引数が返され、ARG(2)を指定するとプログラムの2番目の引数が返されます(以降同様)。プログラムによってコールされる引数の数がn個未満の場合、ARGはNULL値を返します。また、ARGはnの値がゼロまたは負の値の場合にもNULL値を返します。

例7-20 引数の代入

売上レポートを生成するプログラムがあるとします。任意の2つの期間(月単位)を対象にしてレポートを生成できるようにするため、プログラム内ではmonthディメンションを特定の月に制限しないことにします。そのかわりに、ARGファンクションをLIMITコマンド内で使用し、2か月間の開始月と終了月は、プログラムの実行時に引数で指定するようにします。

ARGファンクションの前にはUPCASEファンクションが記述されています。UPCASEファンクションを使用すると、アナリティック・ワークスペース内のディメンション値が大文字で指定されている場合、引数を大文字または小文字で指定できます。&(アンパサンド)を接頭辞として使用した場合、Oracle OLAPは、LIMITコマンドの実行前にARGの値(この場合はmonthディメンションの値)を置換すると判断するため、同様の効果があります。ただし、&(アンパサンド)が付いているプログラム行はコンパイルできないので、プログラムの実行結果の表示速度が遅くなるというデメリットがあります。

DEFINE salesrpt PROGRAM
PROGRAM
PUSH month product district
TRAP ON cleanup 
LIMIT month TO UPCASE(ARG(1)) TO UPCASE(ARG(2))
LIMIT product TO 'CANOES'
LIMIT district TO all
REPORT grandtotals DOWN district sales
LIMIT month TO UPCASE(ARG(3)) TO UPCASE(ARG(4))
REPORT grandtotals DOWN district sales
cleanup:
POP month product district
END

このプログラムを実行するには、プログラム名(salesrpt)を指定し、その後に2組の月(レポートの対象となる売上期間の開始月と終了月)を指定します。その後、LIMIT MONTH文を実行すると、コマンドラインに指定した月は、LIMITコマンドのARG(1)ARG(2)ARG(3)およびARG(4)の戻り値として渡されます。

salesrpt 'Jan95' 'Mar95' 'Jan96' 'Mar96'

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

PRODUCT: Canoes
              ------------SALES--------------
              ------------MONTH--------------
DISTRICT        Jan95       Feb95     Mar95
---------------------------------------------
Boston        66,013.92  76,083.84  91,748.16
Atlanta       49,462.88  54,209.74  67,764.20
Chicago       45,277.56  50,595.75  63,576.53
Dallas        33,292.32  37,471.29  43,970.59
Denver        45,467.80  51,737.01  58,437.11
Seattle       64,111.50  71,899.23  83,943.86
             ----------  ---------  ---------
             303,625.98 341,996.86 409,440.44
             ========== ========== ==========
PRODUCT: Canoes
             ------------SALES---------------
             ------------MONTH---------------
DISTRICT        Jan96      Feb96       Mar96
---------------------------------------------
Boston        70,489.44  82,237.68  97,622.28
Atlanta       56,271.40  61,828.33  77,217.62
Chicago       48,661.74  54,424.94  68,815.71
Dallas        35,244.72  40,218.43  46,810.68
Denver        44,456.41  50,623.19  57,013.01
Seattle       67,085.12  74,834.29  87,820.04
             ----------  ---------  ---------
             322,208.83 364,166.86 435,299.35
             ========== ========== ========== 

ARGCOUNT

OLAP DMLプログラムの内部でARGCOUNTファンクションを使用すると、現行のプログラムが起動したときに指定されていた引数の数が返されます。

戻り値

INTEGER

構文

ARGCOUNT

例7-21 引数の数の確認

次の例では、3つの引数が渡されたことをプログラム(ユーザー定義ファンクション)で確認します。渡された引数の数が3と等しくない場合、プログラムは戻り値として-1を返して終了します。

DEFINE threearg PROGRAM INTEGER
LD User-defined function expecting three arguments
PROGRAM
ARGUMENT division TEXT
ARGUMENT product TEXT
ARGUMENT month MONTH
IF ARGCOUNT NE 3
   THEN RETURN -1
    ELSE
     DO
     ...

ARGFR

OLAP DMLプログラムの内部でARGFRファンクションを使用すると、プログラムに渡される引数を参照できます。このファンクションは、1つ以上の引数のグループを、指定した引数の番号を先頭に単一のテキスト値として返します。ARGFRは、コマンドとして起動したプログラムの内部でのみ使用でき、プログラムをユーザー定義ファンクションとして起動したりCALL文で起動した場合は使用できません。


注意:

通常は、プログラムに渡される引数の参照にARGFRファンクションを使用しなくても済むよう、ARGUMENT文を使用して、プログラム内で引数を定義します。プログラムに渡される引数をARGUMENTを使用して定義する方法の詳細は、「プログラムに渡される引数の宣言」を参照してください。

戻り値

TEXT

構文

ARGFR(n)

パラメータ

n

参照する引数のグループにある最初の引数の位置に応じた数値。ARGFR(1)を指定すると最初の引数とその後のすべての引数が返され、ARGFR(2)を指定すると2番目の引数とその後のすべての引数が返されます(以降同様)。存在する引数の数がn個未満の場合、ARGFRはNULL値を返します。また、ARGFRはnの値が0(ゼロ)または負の値の場合にもNULL値を返します。

例7-22 ARGおよびARGFRによる引数の受渡し

売上レポートを生成するプログラムがあるとします。任意の製品および任意の期間(月単位)を対象にしてレポートを生成できるようにするため、プログラム内ではproductmonthの2つのディメンションを特定の値に制限しないことにします。そのかわりに、product引数にはARG、month引数にはARGFRファンクションを使用したLIMITコマンドを使用します。これによって、プログラムを実行したときにこれらの項目を指定できます。

ARGFRの前にアンパサンド(&)を付けてLIMITコマンド内に記述すると、Oracle OLAPでは、&ARGFRの値が置換されてからコマンドが実行されるため、引数全体がLIMITコマンドの句として処理されます。salesrprtプログラムには、&ARGFRを指定したLIMITコマンドが記述されています。

DEFINE salesrpt PROGRAM
PROGRAM
PUSH product month district
TRAP ON cleanup
LIMIT product TO UPCASE(ARG(1))
LIMIT month TO &ARGFR(2)
LIMIT district TO ALL
REPORT grandtotals DOWN district sales
cleanup:
POP product month district
END

salesrptプログラムのコマンドラインには、2つ以上の引数を指定する必要があります。最初の引数はレポートの対象製品を表し、2番目以降の引数は月を表します。LIMIT month文では、コマンドラインに引数として指定した月が&ARGFR(2)ファンクションによって返されます。

次の文によって、monthの値としてJan96Feb96Mar96およびApr96を指定したsalesrptプログラムが実行されます。

salesrpt 'Canoes' 'Jan96' TO 'Apr96'

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

PRODUCT: CANOES
        -------------------SALES------------------
        -------------------MONTH------------------
DISTRICT    Jan96     Feb96      Mar96     Apr96   
------- ---------- ---------- ---------- --------- 
Boston  70,489.44  82,237.68  97,622.28 134,265.60 
Atlanta 56,271.40  61,828.33  77,217.62 109,253.38 
Chicago 48,661.74  54,424.94  68,815.71  93,045.46 
Dallas  35,244.72  40,218.43  46,810.68  64,031.28 
Denver  44,456.41  50,623.19  57,013.01  78,038.13 
Seattle 67,085.12  74,834.29  87,820.04 119,858.56 
       ---------- ---------- ---------- ---------- 
       322,208.83 364,166.86 435,299.34 598,492.41 
       ========== ========== ========== ========== 

次の文では、1996年の最初の3か月が指定されています。

salesrpt 'Tents' quarter 'Q1.96'

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

PRODUCT: TENTS
               -------------SALES-------------
               -------------MONTH-------------
DISTRICT          Jan96     Feb96      Mar96
-------------- ---------- ---------- ---------
Boston         50,808.96  34,641.59  45,742.21
Atlanta        46,174.92  50,553.52  58,787.82
Chicago        31,279.78  31,492.35  42,439.52
Dallas         50,974.46  53,702.75  71,998.57
Denver         35,582.82  32,984.10  44,421.14
Seattle        45,678.41  43,094.80  54,164.06
              ----------  ---------- ---------
              260,499.35 246,469.11 317,553.32
              ========== ========== ========== 

ARGS

OLAP DMLプログラムの内部でARGSファンクションを使用すると、プログラムに渡される引数を参照できます。このファンクションは、すべての引数を1つのテキスト値として返します。ARGSは、コマンドとして起動したプログラムの内部でのみ使用でき、プログラムをユーザー定義ファンクションとして起動したりCALL文で起動した場合は使用できません。


注意:

通常は、プログラムに渡される引数の参照にARGSファンクションを使用しなくても済むよう、ARGUMENT文を使用して、プログラム内で引数を定義します。プログラムに渡される引数をARGUMENTを使用して定義する方法の詳細は、「プログラムに渡される引数の宣言」を参照してください。

戻り値

TEXT

プログラムに引数を指定しなかった場合、ARGSはNULL値を返します。

構文

ARGS

例7-23 ARGSによる引数の受渡し

簡単な売上レポートを生成するプログラムがあるとします。任意の月を対象にしてレポートを生成できるようにするため、プログラム内ではmonthディメンションを特定の月に制限しないことにします。LIMITコマンドでARGSファンクションを使用し、レポートの対象月は、プログラムの実行時に引数で指定するようにします。

ARGSの前にアンパサンド(&)を付けてLIMITコマンド内に記述すると、Oracle OLAPでは、&ARGSの値が置換されてからコマンドが実行されるため、引数全体がLIMITコマンドの句として処理されます。salesreportプログラムには、&ARGSを指定したLIMITコマンドが記述されています。

DEFINE salesrpt PROGRAM
PROGRAM
PUSH month product district
TRAP ON cleanup 
LIMIT month TO &ARGS
LIMIT product TO 'CANOES'
LIMIT district TO ALL
REPORT grandtotals DOWN district sales
cleanup:
POP month product district
END

次の文を実行すると、LIMITコマンドによって、monthディメンションに値Jan96およびFeb96が適用されます。

salesrpt 'Jan96' 'Feb96'

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

PRODUCT: CANOES
       --------SALES--------
       --------MONTH--------
DISTRICT       Jan96      Feb96
----------------------------------
Boston       70,489.44  82,237.68
Atlanta      56,271.40  61,828.33
Chicago      48,661.74  54,424.94
Dallas       35,244.72  40,218.43
Denver       44,456.41  50,623.19
Seattle      67,085.12  74,834.29
         ---------- ---------- --
            322,208.83 364,166.86
         ========== ========== == 

ASCII

ASCIIファンクションは、ある式の最初の文字の10進表現を返すファンクションです。

戻り値

INTEGER

構文

ASCII (text-exp)

パラメータ

text-exp

テキスト式。

使用上の注意

EBCDIC値の戻り値

データベースのキャラクタ・セットが7ビットのASCIIの場合、このファンクションはASCII値を返します。データベースのキャラクタ・セットがEBCDICコードの場合、このファンクションはEBCDIC値を返します。EBCDIC文字用のファンクションはありません。

例7-24 文字と等価のASCII 10進数の検索

次の例では、文字Qと等価のASCII 10進数を返します。

SHOW ASCII('Q') 
81

ASCIISTR

ASCIISTRファンクションは、任意のキャラクタ・セットの文字列を受け取り、その文字列のASCIIバージョンを返します。

戻り値

NTEXT

構文

ASCIISTR(text-exp)

パラメータ

text-exp

テキスト式。

使用上の注意

ASCIISTRによる非ASCII文字の変換

ASCIISTRファンクションは、非ASCII文字を\xxxxに変換します。ここで、xxxxはUTF-16コード・ユニットです。


参照:

Unicodeキャラクタ・セットおよびキャラクタ・セマンティクスの情報については、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

AVERAGE

AVERAGEファンクションは、式の値の平均値を計算するファンクションです。

戻り値

DECIMAL

構文

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

パラメータ

expression

平均を計算する値の式。

CACHE

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

dimension

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

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


ヒント:

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

使用上の注意

NA値とAVERAGE

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

DAY、WEEK、MONTH、QUARTER、YEAR型のディメンションの平均値計算

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

関連ディメンションの各期間では、Oracle OLAPによって、ターゲット期間で終了するすべてのソース期間のデータの平均が計算されます。この方法は、どのディメンションがより上位の集計期間を保持しているかにかかわらず、適用されます。2つのディメンションの期間の間でデータを集計または割り当てる方法を制御するには、TCONVERTファンクションを使用します。

例7-25 月間売上の平均値の計算

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

LIMIT product TO 'SPORTSWEAR'
REPORT W 14 HEADING 'Average Sales' AVERAGE(sales district)

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

DISTRICT    Average Sales
----------- --------------
Boston      69,150.41
Atlanta    151,192.36
Chicago     95,692.99
Dallas     162,242.89
Denver      88,892.72
Seattle     54,092.32

地域ごとの月間平均売上を調べることもできます。regionディメンションはdistrictディメンションに関連しているので、AVERAGEファンクションの結果のディメンションとしてdistrictではなくregionを指定します。

AWファンクション

AWファンクションは、現在アタッチされているワークスペースの情報を返すファンクションです。

戻り値

戻り値は、表7-2「AWファンクションのキーワード」で説明されているように、指定するキーワードによって異なります。

構文

AW(keyword [workspace])

パラメータ

keyword

必要な特定の情報を示します。AWファンクションで使用できるキーワードと、それぞれの戻り値のデータ型および意味について、表7-2「AWファンクションのキーワード」で説明します。

表7-2 AWファンクションのキーワード

キーワード データ型 返される情報

ACQUIRED

TEXT

アナリティック・ワークスペースにマルチライタ・モードでアタッチしている場合、アナリティック・ワークスペースで取得された変数、リレーション、値セット、ディメンション名またはパーティションの名前が返される。

AGGMAP

TEXT

ワークスペースに存在するすべてのaggmapオブジェクトのリスト。複数のオブジェクトが存在する場合は、各オブジェクト名が個別の行に配置された複数行のテキスト値が返される。

ALIASLIST

TEXT

ワークスペースに現在割り当てられている別名のリスト。複数の別名が存在する場合は、各別名が個別の行に配置された複数行のテキスト値が返される。

ATTACHED

BOOLEAN

指定したワークスペースがアタッチされているかどうかを示す。引数としてワークスペース名が必要。

CHANGED

BOOLEAN

ワークスペースへの読取り/書込みアクセス権を持っている場合、ワークスペースの前回の更新以降に変更を行ったかどうかを示す。ワークスペースに対するアクセス権が読取り専用の場合は、ワークスペースのアタッチ後、このワークスペースを他のユーザーが更新し、変更をコミットしたかどうかを示す。

COMPOSITE

TEXT

指定したワークスペースに存在するすべての名前付きコンポジット・オブジェクトのリスト。

DATE

DATE

現行のセッションにおける最新の更新日。現行のセッションで更新されていない場合は、ワークスペースにアタッチする前の最新のコミット日が返される。共有ワークスペースに読取り専用でアタッチした場合、ワークスペースへのアタッチ後に実行された更新またはコミットはDATEの対象にならない。

DIMENSION

TEXT

ワークスペースに定義されているすべてのディメンションのリスト。複数のディメンションが存在する場合は、各ディメンション名が個別の行に配置された複数行のテキスト値が返される。

EXISTS

BOOLEAN

指定したアナリティック・ワークスペースがOracle Databaseインスタンスで定義されているかどうかを示す。

FORMULA

TEXT

ワークスペースに定義されているすべての計算式のリスト。複数の計算式が存在する場合は、各計算式の名前が個別の行に配置された複数行のテキスト値が返される。

FROZEN

ブール

指定されたアナリティック・ワークスペースが現在固定されている場合はTRUE、固定されていない場合はFALSE

FULLNAME

TEXT

指定したワークスペースのフルネーム。このフルネームは、ワークスペースを含むスキーマを示す。

ISUPDATED

TEXT

指定したアナリティック・ワークスペースがマルチライタ・モードでアタッチされていない場合、ワークスペースを更新し、コミットしていないときに、TRUEが返される。指定したアナリティック・ワークスペースがマルチライタ・モードでアタッチされている場合、ワークスペースに属している少なくとも1つの変数またはディメンションを更新し、コミットしていないときに、TRUEが返される。

LIST

TEXT

現在アタッチされているすべてのワークスペースのリスト。複数行のテキスト値の各行に個々のアナリティック・ワークスペースの名前が含まれている。

LISTNAMES

TEXT

ワークスペースに定義されているすべてのオブジェクトのリスト。複数行のテキスト値の各行に個々のアナリティック・ワークスペース・オブジェクトの名前が含まれている。

MODEL

TEXT

ワークスペースに定義されているすべてのモデルのリスト。複数のモデルが存在する場合は、各モデル名が個別の行に配置された複数行のテキスト値が返される。

MULTI

TEXT

アナリティック・ワークスペースへのマルチライタ・アクセス権が付与されているかどうかを示す。

NAME

TEXT

現行のワークスペースの名前。

OPTION

TEXT

EXPRESSワークスペースに定義されているすべてのOracle OLAPオプションのリスト。ワークスペースがEXPRESSではない場合、オプションはEXPRESSワークスペースでのみ定義されるため、AW(OPTION)NAを返す。EXPRESSワークスペースの場合、AW(OPTION)は各オプション名が個別の行に配置された複数行のテキスト値を返す。

PAGESIZE

INTEGER

ページのサイズ(バイト単位)。

PROGRAM

TEXT

ワークスペースに定義されているすべてのプログラムのリスト。複数のプログラムが存在する場合は、各プログラム名が個別の行に配置された複数行のテキスト値が返される。

READERS

INTEGER

現在データベースに対して読取り専用アクセス権を持つユーザーの総数。

RELATION

TEXT

ワークスペースに定義されているすべてのリレーションのリスト。複数のリレーションが存在する場合は、各リレーション名が個別の行に配置された複数行のテキスト値が返される。

RO

TEXT

ワークスペースへの読取り専用アクセス権が付与されているかどうかを示す。

RW

TEXT

ワークスペースへの読取り/書込みアクセス権が付与されているかどうかを示す。

SEGMENTSIZE

DECIMAL

ワークスペースの現行の最大セグメント・サイズ。AW SEGMENTSIZE文を使用して指定した最新の値。

SHARED

BOOLEAN

ワークスペースが他のユーザーによって共有されているかどうかを示す。

TIME

ID

現行のセッションにおける最新の更新時刻。現行のセッションで更新されていない場合は、ワークスペースにアタッチする前の最新のコミット時刻が返される。共有ワークスペースに読取り専用でアタッチした場合、ワークスペースのアタッチ後に実行された更新またはコミットはTIMEの対象にならない。

VALUSET

TEXT

ワークスペースに定義されているすべての値セットのリスト。複数の値セットが存在する場合は、各値セット名が個別の行に配置された複数行のテキスト値が返される。

VARIABLE

TEXT

ワークスペースに定義されているすべての変数のリスト。複数の変数が存在する場合は、各変数名が個別の行に配置された複数行のテキスト値が返される。

WRITERS

INTEGER

現在データベースに対して書込みアクセス権を持つユーザーの数。


workspace

情報を取得するワークスペースの名前を示すテキスト式。この引数を指定しなかった場合、現行のワークスペースに関する情報がAWファンクションによって返されます。ATTACHED、LIST、NAMEの各キーワードは、このルールの例外です。

使用上の注意

アナリティック・ワークスペースのステータス情報

SHARED、CHANGED、RO、RWの各キーワードを使用すると、共有ワークスペースの現行のステータスに関する情報を取得できます。アナリティック・ワークスペースにアタッチした後に別のユーザーがそのアナリティック・ワークスペースを更新したかどうかを調べるには、SHARED、ROおよびCHANGEDがTRUEかどうかを確認します。

例7-26 アクティブ・ワークスペースの確認

次のプログラム行は、現在アクティブなワークスペースを確認して、プログラムがレポート対象の適切なデータを選択できるようにします。この方法によって、異なるデータが含まれている複数のワークスペースに同じレポート・プログラムを使用できます。

REPORT IF AW(NAME) EQ 'mysales' THEN mysales ELSE gensales 

BACK

BACKファンクションは、現在実行しているすべてのプログラムの名前を、それぞれ1行で表示する複数行のテキスト値として返すファンクションです。複数のプログラムを実行している場合、あるプログラムが、ネストしたプログラムの一連の実行として他のプログラムをコールしています。

戻り値の中の最初の名前は、BACKのコールが記述されているプログラムの名前です。最後の名前は、他のプログラムのコールを最初に実行したプログラムの名前です。

BACKは、プログラム内でのみ使用可能です。

戻り値

TEXT

構文

BACK

例7-27 BACKファンクションによるプログラムのデバッグ

次の例では、3つのプログラムを使用します。program1program2をコールし、program2program3をコールします。

DEFINE program1 PROGRAM
PROGRAM
SHOW 'This is program number 1'
CALL program2
END
DEFINE program2 PROGRAM
PROGRAM
SHOW 'This is program number 2'
CALL program3
END
DEFINE program3 PROGRAM
PROGRAM
SHOW 'This is program number 3'
SHOW 'These programs are currently executing:'
SHOW BACK
END

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

This is program number 1
This is program number 2
This is program number 3
These programs are currently executing:
PROGRAM3
PROGRAM2
PROGRAM1 

BASEDIM

BASEDIMファンクションは、連結ディメンションのループ処理を行い、連結ディメンションの現行値の基になるディメンションの名前を返します。

戻り値

TEXT

構文

BASEDIM(concatdim [LEAF])

パラメータ

concatdim

ベース・ディメンションまたはコンポーネントのディメンションの名前を必要とする連結ディメンションを指定します。戻り値のデータ型はTEXTです。

LEAF

LEAFキーワードを指定すると、concatdimディメンションのコンポーネント・ディメンションの名前がBASEDIMによって返されます。連結ディメンションのベース・ディメンションは、連結ディメンションを定義したときにbasedimlist引数で指定した単純なディメンション、結合ディメンションまたは他の連結ディメンションです。単純なディメンションおよび結合ディメンションは、連結ディメンションの最下位レベルのコンポーネント、つまりリーフです。

連結ディメンションを定義する際に連結ディメンションをベース・ディメンションとして指定すると、内部連結のベース・ディメンションは外部連結のコンポーネントのディメンションになります。LEAFキーワードを指定すると、内部連結ディメンションのコンポーネントの単純なディメンションおよび結合ディメンションの名前がBASEDIMによって返されます。

ベース・ディメンションがすべて単純なディメンションまたは結合ディメンションの場合は、ベース・ディメンションが最下位レベルのコンポーネントになるため、LEAFキーワードの指定の有無にかかわらず、BASEDIMによってこれらのディメンションの名前が返されます。

ベース・ディメンションがすべて単純なディメンションまたは結合ディメンションの場合は、ベース・ディメンションが最下位レベルのコンポーネントになるため、LEAFキーワードの指定の有無にかかわらず、BASEDIMによってこれらのディメンションの名前が返されます。

例7-28 ベース・ディメンション名の戻り値

この例では、productディメンションは2つの値に、districtディメンションは最初の3つの値に、regionディメンションは3つの値のみに制限されます。ベース・ディメンションとしてregionおよびdistrictを持つ一意ではない連結ディメンションを定義し、次に、ベース・ディメンションとしてproductディメンションと最初の連結ディメンションを持つ一意でない別の連結ディメンションを定義します。さらに、外部連結ディメンションのベース・ディメンションの名前を取得します。

LIMIT district TO 'Boston' TO 'Chicago'
LIMIT product TO 'Tents''Canoes'
DEFINE region.district DIMENSION CONCAT(region district)
DEFINE product.region.district DIMENSION CONCAT(product region.district)
REPORT BASEDIM(product.district.region)

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

PRODUCT
PRODUCT
REGION.DISTRICT
REGION.DISTRICT
REGION.DISTRICT
REGION.DISTRICT
REGION.DISTRICT
REGION.DISTRICT

例7-29 コンポーネントのディメンション名の戻り値

この例では、前の例と同じオブジェクトを使用します。ここでは、連結ディメンションのコンポーネント・ディメンションの名前を取得します。

REPORT BASEDIM(product.region.district LEAF)

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

PRODUCT
PRODUCT
REGION
REGION
REGION
DISTRICT
DISTRICT
DISTRICT

BASEVAL

BASEVALファンクションは、連結ディメンションのループ処理を行い、連結ディメンションのベース・ディメンションの値を返します。ベース・ディメンションが連結ディメンションの場合は、そのベース・ディメンションの値も返します。

戻り値

BASEVALの戻り値のデータ型は次のルールに従って決まります。

  • concatdimの任意のコンポーネント・ディメンションのデータ型がNTEXTの場合、または任意のコンポーネント・ディメンションがNTEXT型の単純なディメンションを使用する結合ディメンションの場合、戻り値のデータ型はNTEXTになります。

  • すべてのコンポーネント・ディメンションのデータ型が同じで、コンポーネント・ディメンションの中に結合ディメンションが存在しない場合、戻り値のデータ型はコンポーネント・ディメンションのデータ型になります。

  • これ以外の場合、戻り値のデータ型はTEXTになります。

構文

BASEVAL(concatdim)

パラメータ

concatdim

ベース値を必要とする連結ディメンションを指定します。戻り値のデータ型は、連結ディメンションのベース・ディメンションのデータ型によって異なります。

例7-30 NTEXT値の戻り値

次の例では、単純なディメンション2つと一意でない連結ディメンション1つを作成し、連結ディメンションの値を取得します。

DEFINE textdim DIMENSION TEXT
DEFINE ntextdim DIMENSION NTEXT
MAINTAIN textdim ADD 'v1' 'v2'
MAINTAIN ntextdim ADD 'n1' 'n2'
DEFINE concatdim DIMENSION CONCAT(textdim ntextdim)
REPORT w 18 BASEVAL(concatdim)

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

CONCATDIM            BASEVAL(CONCATDIM)
-------------------- ------------------
<textdim: v1>        v1
<textdim: v2>        v2
<ntextdim: n1>       n1
<ntextdim: n2>       n2

戻り値のデータ型はNTEXTです。v1およびv2というTEXT値は、BASEVALファンクションによってNTEXT値に変換されてから返されます。

例7-31 ベース連結ディメンションのベース値の戻り値

この例では、単純なディメンションstateおよびcityを定義し、これらに値を追加します。ベースとしてstateおよびcityを持つ一意でない連結ディメンションstatecityを定義し、次に、ベースとしてregiondistrictおよびstatecityを持つ一意でない別の連結ディメンションgeogを定義します。最後に、BASEVALファンクションによって返される値がREPORT文によって返されます。

DEFINE city DIMENSION TEXT
DEFINE state DIMENSION TEXT
MAINTAIN city ADD 'Boston' 'Worcester' 'Portsmouth' 'Portland' -
  'Burlington' 'Hartford' 'New York' 'Albany'
MAINTAIN state ADD 'MA' 'NH' 'ME' 'VT' 'CT' 'NY'
DEFINE statecity DIMENSION CONCAT(state city)
DEFINE geog DIMENSION CONCAT(region district statecity)
LCOLWIDTH = 20
REPORT W 16 BASEVAL(geog)

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

GEOG                 BASEVAL(GEOG)
-------------------- ----------------
<region: East>       East
<region: Central>    Central
<region: West>       West
<district: Boston>   Boston
<district: Atlanta>  Atlanta
<district: Chicago>  Chicago
<district: Dallas>   Dallas
<district: Denver>   Denver
<district: Seattle>  Seattle
<state: MA>          MA
<state: NH>          NH
<state: ME>          ME
<state: VT>          VT
<state: CT>          CT
<state: NY>          NY
<city: Boston>       Boston
<city: Worcester>    Worcester
<city: Portsmouth>   Portsmouth
<city: Portland>     Portland
<city: Burlington>   Burlington
<city: Hartford>     Hartford
<city: New York>     New York
<city: Albany>       Albany

BEGINDATE

DAY、WEEK、MONTH、QUARTERおよびYEAR型のディメンションの場合、BEGINDATEファンクションは、式が非NA値になるディメンション・ステータスの最初の期間の開始日を返します。たとえば、式がmonthでディメンション化され、式が非NA値になる最初のディメンション値がJan97であるとします。この場合、BEGINDATEによって返される日付はJanuary 1, 1997です。


注意:

データ型がTEXTの階層ディメンションとして実装されている時間ディメンションでこのファンクションは使用できません

戻り値

日付のみまたはテキスト

式のすべての値がNA値の場合、BEGINDATEファンクションの戻り値はNAになります。

構文

BEGINDATE(expression)

パラメータ

expression

式(expression)には、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションを1つのみ含める必要があります。

例7-32 開始日の検索

次の文では、monthproductdistrictの各ディメンションの値が制限され、Chicago地区におけるテントの売上数量のunits変数が非NA値になった最初の日付を現行の出力ファイルに送信します。

LIMIT month TO ALL
LIMIT product TO 'TENTS'
LIMIT district TO 'CHICAGO'
SHOW BEGINDATE(units)

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

01JAN95

BIN_TO_NUM

BIN_TO_NUMファンクションは、ビット・ベクトルを等価の数値に変換するファンクションです。

BIN_TO_NUMは、データ・ウェアハウス・アプリケーションでグルーピング・セットを使用して目的のグループを選択するために役立ちます。

戻り値

NUMBER

構文

BIN_TO_NUM(expression [, expression ]... )

パラメータ

expression

ビット・ベクトル内のビットの値である0(ゼロ)または1のいずれかに評価される式。

例7-33 ビット・ベクトルの数値への変換

SHOW BIN_TO_NUM(1,0,1,0)
10.00

BITAND

BITANDファンクションは、2つの負でない値のビットに対して論理演算ANDを実行します。このファンクションは、通常、DECODEファンクションと組み合せて使用します。

AND演算は2つのビット値を比較します。値が同じ場合には、演算子から1が返されます。値が異なる場合には0(ゼロ)が返されます。重要なビットのみが比較対象とされます。たとえば、整数5(バイナリ101)と整数1(バイナリ001または1)をAND演算で比較すると、右端のビットのみが比較対象とされ、結果の値は1(バイナリ1)となります。

戻り値

INTEGER

構文

BITAND (argument1 , argument2)

パラメータ

argument1

負の数以外のINTEGER式。

argument2

負の数以外のINTEGER式。

例7-65「BITANDを使用したDECODE」を参照してください。

BLANKSTRIP

BLANKSTRIPファンクションは、テキスト値の先行または後続の空白を削除するファンクションです。BLANKSTRIPは、インポートした固定長フィールドから不要な空白を削除するときなどに有効です。

戻り値

TEXTまたはNTEXT

構文

BLANKSTRIP(text-expression [TRAILING|LEADING|BOTH])

パラメータ

text-expression

空白を削除するテキスト式。TEXT式を指定すると、戻り値はTEXTです。NTEXT式を指定すると、戻り値はNTEXTです。

TRAILING

テキストの後続の空白を削除します。

LEADING

テキストの先行の空白を削除します。

BOTH

先行の空白と後続の空白を両方削除します。

例7-34 先行および後続の空白の削除

この例では、インポートしたワークシートのフィールドprodlabelから先行の空白と後続の空白を削除し、productという変数に結果を格納します。

product = BLANKSTRIP(prodlabel, BOTH) 

CALLTYPE

OLAP DMLプログラムの内部でCALLTYPEファンクションを使用すると、プログラムがファンクションまたはコマンドとして起動されたか、CALL文コマンドを使用して起動されたか、あるいはOLAP DML文の実行によってトリガーされたかどうかが示されます。

戻り値

TEXT

CALLTYPEの戻り値は次のとおりです。

  • FUNCTION。値を返すファンクションとしてプログラムが起動された場合。

  • COMMAND。コマンドとしてプログラムが起動された場合。

  • CALL。CALL文を使用してプログラムが起動された場合。

  • TRIGGER。プログラムがOLAP DML文に応答して起動したトリガー・プログラム(TRIGGERコマンドによってプログラムとオブジェクト・イベントが関連付けられている)の場合。

構文

CALLTYPE

例7-35 コールする方法の判別

myprogというこのサンプル・プログラムでは、プログラムの起動方法に応じて、CALLTYPEからどのように異なる値が返されるかを示します。

DEFINE myprog PROGRAM
PROGRAM
SHOW CALLTYPE
RETURN('This is the return value')
END

次の文を実行すると、myprogは1)コマンドとして、2)CALL文によって、3)ファンクションとして起動されます。

myprog
CALL myprog
SHOW myprog

この3つの文を実行した場合、次の出力が現行の出力ファイルに送信されます。myprogの戻り値は、プログラムがファンクションとしてコールされた場合にのみ表示されます。

COMMAND
CALL
FUNCTION
This is the return value

CATEGORIZE

CATEGORIZEファンクションは、数式の値をカテゴリ別にグループ化します。カテゴリは、一連の増加する数値を指定することによって定義します。CATEGORIZEから返された結果は、expressionのすべてのディメンションによってディメンション化されます。expressionのセルごとに、CATEGORIZEによって、数値がカテゴリの範囲内の場合はそのカテゴリ、最初のカテゴリの範囲より小さい値の場合は0、最後のカテゴリの範囲を超える値の場合は-1NA値の場合はNA、のいずれかが返されます。

戻り値

DECIMAL

構文

CATEGORIZE(expression {values|group-expression})

ただし、valuesの構文は次のとおりです。

     bottom-value [next-lowest-break-valuetop-value

パラメータ

expression

分類対象となる値を持つ数式。

bottom-value

一連の数値のうちの最低値を表し、かつカテゴリ1の下限となる数値。

next-lowest-break-value

次のカテゴリの範囲の先頭を表す数値。

top-value

一連の数値のうちの最高値を表し、かつ最上位のカテゴリの上限となる数値。

group-expression

カテゴリのブレーク値を定義する1次元の数式。

例7-36 カテゴリ範囲の値の指定

アナリティック・ワークスペースに、次の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

次の文を発行すると、sales2変数の分類結果が表示されます。

REPORT CATEGORIZE(sales2 10 15 20 25)

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

               -CATEGORIZE(SALES2 10 15 20 25)-
               -----------GEOGRAPHY------------
ITEMS              g1         g2         g3
-------------- ---------- ---------- ----------
Item1               -1.00       2.00       1.00
Item2                1.00       3.00       2.00
Item3                2.00       3.00       3.00
Item4               -1.00       3.00       3.00
Item5                  NA       0.00       3.00

例7-37 グループ式の指定

次の文によって、groupsディメンションとgroupval変数が定義されます。

DEFINE groups DIMENSION TEXT
MAINTAIN groups ADD 'Grp1' 'Grp2' 'Grp3' 'Grp4'
DEFINE groupvals DECIMAL <groups>
groupvals(groups 'Grp1') = 10
groupvals(groups 'Grp2') = 15
groupvals(groups 'Grp3') = 20
groupvals(groups 'Grp4') = 25

次の文を発行すると、sales変数をexpression引数とし、groupvals変数をgroup-expression引数として指定したCATEGORIZEファンクションがコールされ、その実行結果が表示されます。

REPORT CATEGORIZE(sales, groupvals)

この文の実行結果は、「カテゴリ範囲の値の指定」に記載されている文の実行結果と同じです。

CEIL

CEILファンクションは、指定した数値以上の整数のうち最も小さい値を返すファンクションです。

戻り値

NUMBER

構文

CEIL(n)

パラメータ

n

指定する数字(NUMBERデータ型)。

例7-38 ある数値以上の最小の整数の表示

次の文は、CEILによって返される結果を表示します。

  • 次の文

    SHOW CEIL(15.7)
    

    生成される結果は次のとおりです。

    16
    
  • 次の文

    SHOW CEIL(-6.457)
    

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

    -6
    

CHANGEBYTES

CHANGEBYTESファンクションは、指定した文字列がテキスト式に1つ以上存在する場合、この文字列を別の文字列に変更するファンクションです。

戻り値

TEXT

構文

CHANGEBYTES(text-expression oldtext newtext [number])

パラメータ

text-expression

変更されるバイト・データが含まれているTEXT式。text-expressionが複数行のTEXT式の場合、改行はCHANGEBYTESの戻り値でも維持されます。

oldtext

変更される1つ以上のバイト・データが含まれているTEXT式。

newtext

oldtextを置換する1つ以上のバイト・データが含まれているTEXT式。

number

text-expressionoldtextが複数回出現する場合、oldtextnewtextに置換する回数を表すINTEGER。デフォルトでは、出現するすべてのoldtextを変更します。

例7-39 バイト・データを使用したテキスト値の変更

この例では、テキスト値の一部を変更する方法の一例を示します。

次の文

SHOW CHANGEBYTES('Hello there, Joe\nHello there, Jane', 
   'there', - 'to you', 1)

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

Hello to you, Joe
Hello there, Jane 

CHANGECHARS

CHANGECHARSファンクションは、指定した文字列がテキスト式に1つ以上存在する場合、この文字列を別の文字列に変更するファンクションです。

戻り値

すべての引数がTEXT値である場合、戻り値はTEXTです。すべての引数がNTEXT値である場合、戻り値はNTEXTです。引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

構文

CHANGECHARS(text-expression oldtext newtext [number] [UPCASE])

パラメータ

text-expression

変更される文字が含まれているTEXT式またはNTEXT式。text-expressionが複数行のテキスト値の場合、改行はCHANGECHARSの戻り値でも維持されます。

oldtext

変更される1つ以上の文字が含まれているTEXT式またはNTEXT式。

newtext

oldtextが置換される1つ以上の文字が含まれているTEXT式またはNTEXT式。

number

text-expressionoldtextが複数回出現する場合、oldtextnewtextに置換する回数を表すINTEGER。デフォルトでは、出現するすべてのoldtextを変更します。

UPCASE

CHANGECHARSに対して、text-expressionoldtextの文字を大文字に変更してから一致検索を実行することを指定します。CHANGECHARSの戻り値は大文字になりません。

例7-40 テキスト文字の値の変更

この例では、テキスト値の一部を変更する方法の一例を示します。

次の文

SHOW CHANGECHARS('Hello there, Joe\nHello there, Jane', 
   'there', - 'to you', 1)

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

Hello to you, Joe
Hello there, Jane 

CHANGEDRELATIONS

CHANGEDRELATIONSファンクションは、特定の変数およびaggmapオブジェクトについて、その変数が最後に集計されたとき以降にaggmap内およびaggmap内のリレーションに変更があったかどうかを識別するファンクションです。

戻り値

BOOLEAN

変更があった場合はTRUE、なかった場合はFALSE、変更の有無をファンクションで識別できない場合はNA

構文

CHANGEDRELATIONS( variable [ [(PARTITION partition [,PARTITION partition]...) ] aggmap] )

パラメータ

variable

変更を確認するaggmapオブジェクトがある変数の名前。

partition

変更を確認するaggmapがある、変数の1つ以上のパーティションの名前(カンマ区切りで指定)。

aggmap

変更を確認するaggmapオブジェクトの名前。aggmapに値を指定しない場合は、variable$AGGMAPプロパティに指定されたaggmapが使用されます(存在する場合)。

CHANGEDVALUES

CHANGEDVALUESファンクションは、変数が最後に集計されたとき以降に、変数の値が変更されたかどうかを識別する(または変更された値の数を返す)ファンクションです。

戻り値

returntypeNUMBERを指定した場合以外はBOOLEAN。

このファンクションからBOOLEAN値が返される場合、変数が最後に集計されたとき以降に値の変更があればTRUE、値の変更がなければFALSE、値の変更の有無をファンクションで判別できない場合はNA。

このファンクションからNUMBER値が返される場合、その値は変数が最後に集計されたとき以降に変更された値の数を表します。

構文

CHANGEDVALUES ( variable [(PARTITION partition [,PARTITION partition]...)] [returntype] )

パラメータ

variable

変更された値を確認する変数の名前。

partition

変更された値を確認する、変数の1つ以上のパーティションの名前(カンマ区切りで指定)。

returntype

変更された値の数を示す数値がファンクションによって返されるようにする場合は、NUMBER。最後の集計以降に変更された値の有無がファンクションによって返されるようにする場合は、BOOLEANを指定するか、またはこの引数を空のままにします(BOOLEANがreturntypeのデフォルト値であるため)。

CHARLIST

CHARLISTファンクションは、1つの式をその値ごとに別の行にして、複数行のテキスト値に変換するファンクションです。

戻り値

NTEXT式の場合はNTEXT、それ以外の場合はTEXT

構文

CHARLIST(expression [dimensions])

パラメータ

expression

複数行のテキスト値に変換する式。式のデータ型がTEXTまたはNTEXT以外である場合、その式はCHARLISTにより自動的にTEXTに変換されます。

dimensions

戻り値のディメンション。ディメンションを指定しないと、CHARLISTの戻り値は単一の値になります。戻り値に1つ以上のディメンションを指定すると、CHARLISTによって、指定したディメンションの現行のステータス・リストにある値ごとに複数行のテキスト値が返されます。各ディメンションは、式の実際のディメンションである必要があり、関連ディメンションやベース・ディメンションは指定できません。

例7-41 ワークスペース・オブジェクトの削除

NAMEディメンションを指定してCHARLISTを使用すると、ワークスペース・オブジェクトのリストを作成できます。ワークスペース内にあるすべてのワークシートなど、特定の種類のオブジェクトをすべて削除するとします。この場合、CHARLISTとアンパサンド(&)を使用します。

LIMIT NAME TO OBJ(TYPE) EQ 'WORKSHEET'
DELETE &CHARLIST(NAME)

例7-42 営業成績最優秀者リストの作成

製品ごとの営業成績最優秀者の名前を、productというディメンションを指定したテキスト変数であるproduct.memoに格納してあるとします。次に、営業成績最優秀者のリストを製品別に作成します。これを行うには、productでディメンション化された変数を作成し、次にCHARLISTとproductを組み合せて使用して、すべての営業成績最優秀者のリストを製品ごとに作成します。

DEFINE topsales VARIABLE TEXT <product>
topsales = CHARLIST(product.memo product) 

CHARTOROWID

CHARTOROWIDファンクションは、テキスト・データ型からROWIDデータ型に値を変換するファンクションです。

戻り値

ROWID

構文

CHARTOROWID(char)

パラメータ

char

変換するテキスト式。

例7-43 テキストからROWIDへの値の変換

アナリティック・ワークスペースに次の定義を持つerowidディメンションが含まれているとします。

DEFINE erowid DIMENSION ROWID

次のコードに示すように、CHARTOROWIDファンクションを使用してこのディメンションにテキスト値を追加できます。

MAINTAIN erowid ADD CHARTOROWID('AAAFd1AAFAAAABSAA/')
REPORT erowid
 
EROWID
------------------------------
AAAFd1AAFAAAABSAA/

CHGDIMS

CHGDIMSファンクションは、式のディメンション性を変更したり、式の評価時にディメンション・ステータスを変更するファンクションです。

戻り値

元の式のデータ型

構文

CHGDIMS (expression, limit-type)

ここで、limit-typeは次のいずれかです。

[CACHE] LIMITSAVE valueset-list

[CACHE] LIMIT valueset-list

TO dimension-list

ADD dimension-list

パラメータ

expression

変更する対象の式。

CACHE

制限の結果をキャッシュするように指定し、CHGDIMSをコールしたOLAP DML文の実行が終了するまでCHGDIMSの後続の実行で使用できるように、その結果を保存します。

LIMITSAVE

式のディメンション・ステータスの値が位置に設定されてから、CHGDIMSコマンドが実行されます(つまり、LIMITSAVEを指定した場合、現行のディメンション・ステータスの値は変更されません)。たとえば、式がLAGファンクションの場合に相対位置変更が現在の値から計算されるようにしたり、SQL SELECT文のような外部ループ内にCHGDIMSをコーディングする場合に、外部ループで設定されるディメンション・ステータスの値を保持したいときに、CHGDIMSにLIMITSAVEを指定します。

LIMIT

expressionのディメンション・ステータスの値が新しいステータスの最初の位置に設定されてからexpressionが評価されます。これは、expressionが評価される直前に発行されたLIMIT TOコマンドとほぼ同じ方法で行われます。

valueset-list

値セットの名前またはLIMITファンクション

TO dimension-list

expressionのディメンションをdimension-listで指定されたディメンションとして、expressionの評価が行われるように指定します。

ADD dimension-list

expressionのディメンションをexpressionのディメンションおよびdimension-listで指定されたディメンションとして、expressionの評価が行われるように指定します。

アナリティック・ワークスペースに次のオブジェクトがあるとします。

DEFINE PRODUCT DIMENSION TEXT
DEFINE GEOG DIMENSION TEXT
DEFINE SALES VARIABLE INTEGER <PRODUCT GEOG>
 

さらに、sales変数に次のような値が含まれているとします。

               -------------------SALES-------------------
               ------------------PRODUCT------------------
GEOG            Trousers    Skirts    Dresses     Shoes
-------------- ---------- ---------- ---------- ----------
USA                    13         20         32         18
Canada                 17         32         15         28
 

次のコード行は、式の条件付けに応じて、TOTAL(sales)式により返される値がどのように異なるかを示しています。

"Total over all dims with standard status
SHOW TOTAL(sales)
175
 
"Total over all dims using new status for product
SHOW CHGDIMS(TOTAL(sales) LIMIT LIMIT(product TO FIRST 2))
82
 
"Total just over product
SHOW TOTAL(CHGDIMS(sales TO product))
83

CHR

CHRファンクションは、整数値(または暗黙的に整数値に変換可能な値)を文字に変換するファンクションです。


注意:

このファンクションを含むコードを、ASCIIベースのマシン・アーキテクチャとEBCDICベースのアーキテクチャ間で共有することはできません。

戻り値

テキスト値。シングルバイト・キャラクタ・セットでは、number > 256の場合、number MOD 256に相当するバイナリ値が返されます。マルチバイト・キャラクタ・セットでは、numberは1つの完全なコード・ポイントに解決可能でなければなりません。無効なコード・ポイントは検証されず、無効なコード・ポイントを指定した場合の結果はそのコード・ポイントによって異なります。

構文

CHR(number [ USING NCHAR_CS ])

パラメータ

number

整数値、または暗黙的に整数値に変換可能な値。

USING NCHAR_CS

値を各国語キャラクタ・セットで返すように指定します。この句を指定しない場合、値はデータベース・キャラクタ・セットで返されます。

例7-44 整数値の文字への変換

WE8ISO8859P1データベース・キャラクタ・セットを使用するASCIIベースのシステムがあるとします。この場合、次の文は文字Cを返します。

SHOW CHR(67)
C 

COALESCE

COALESCEファンクションは、式のリストの最初の非NA式を返します。すべての式がNAと評価された場合は、NAを返します。

戻り値

最初の引数のデータ型

構文

COALESCE (expr [, expr]...)

パラメータ

expr

式。

例7-45 COALESCEによる製品の販売価格の算出

アナリティック・ワークスペースに次のオブジェクトが定義されているとします。(計算式saleでは、計算にCOALESCEファンクションを使用します。)

DEFINE product_id DIMENSION TEXT
DEFINE supplier_id DIMENSION TEXT
DEFINE list_price VARIABLE DECIMAL <product_id supplier_id>
DEFINE min_price VARIABLE DECIMAL <product_id supplier_id>
 
DEFINE sale FORMULA DECIMAL <Product_id supplier_id>
EQ COALESCE(0.9*list_price, min_price, 5)
 

次のコードは、supplier_idを1つの値に限定し、当該仕入先により指定されている製品の表示価格、最低価格および販売価格を示すレポートを表示します。

LIMIT supplier_id TO '102050'
REPORT DOWN product_id list_price min_price sale

               ----------SUPPLIER_ID-----------
               -------------102050-------------
PRODUCT_ID     LIST_PRICE MIN_PRICE     SALE
-------------- ---------- ---------- ----------
2382               850.00     731.00     765.00
3355                   NA         NA       5.00
1770                   NA      73.00      73.00
2378               305.00     247.00     274.50
1769                48.00         NA      43.20
1660                16.45      16.45      14.80

COLVAL

COLVALファンクションは、ある列の数値を、レポート内の同じ行内で現行の列の左に返すファンクションです。COLVALは、ROWコマンドおよびREPORTコマンドでのみ使用できます。

戻り値

選択した列に数値データまたはブール・データが含まれる場合はDECIMAL、列(n)に含まれる値がTEXTまたはIDのみの場合はNA、現行の列、現行の列の右側の列または存在しない列を指定した場合はエラー。

構文

COLVAL(n)

パラメータ

n

値を取得する対象の、現行の行内の列の番号。nは任意のINTEGER式です。

絶対列番号(レポートの左端から右方向へカウント)で指定するには正の数を使用します。絶対列番号を指定する際は、レポート内にあるすべての列をカウントする必要があります。たとえば、レポートの左側にラベルの列を生成するREPORTコマンドを使用している場合、このラベルの列を列1としてカウントします。たとえば、COLVAL(2)はレポートの左端から2番目の列を表します。

相対列番号(現行の列から、右から左の方向へカウント)で指定するには負の数を使用します。たとえば、COLVAL(-2)は現行の列から2列左の列を表します。

例7-46 レポート内での列の計算

レポート上に、実際の売上高と予定売上高を、両者間の差額とともに表示するとします。この場合、COLVALファンクションを使用して差額を計算できます。

LIMIT month TO 'Jun96'
LIMIT district TO 'Boston'
FOR product
   ROW product sales sales.plan COLVAL(2)-COLVAL(3)

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

Tents          95,120.83  80,138.18  14,982.65
Canoes        157,762.08 132,931.39  24,830.69
Racquets       97,174.44  84,758.46  12,415.98
Sportswear     79,630.20  73,568.52   6,061.68
Footwear      153,688.02 109,219.15  44,468.87

CONTEXTファンクション

CONTEXTファンクションは、コンテキストに保存されているオブジェクト値についての情報を取得するためのファンクションです。最初にCONTEXTコマンドを使用してコンテキストを作成する必要があります。

戻り値

CONTEXTファンクションの戻り値のデータ型は、指定する引数に応じて異なります。引数を指定せずにCONTEXTファンクションを使用する場合は、現行のセッション内のすべてのコンテキストの名前を含む複数行のテキスト値が返されます。

構文

CONTEXT ([context-name [UPDATE|name]])

パラメータ

context-name

コンテキストの名前を含むテキスト式。CONTEXTファンクションの引数としてcontext-nameしか指定しない場合は、コンテキストに保存されているすべてのオブジェクトの名前を含む複数行のテキスト値が返されます。

UPDATE

CONTEXTファンクションでUPDATEを指定すると、値がコンテキストに保存または削除された回数が返されます。

name

コンテキスト内に値が保存されているオブジェクトの名前。CONTEXTファンクションでnameを指定すると、そのオブジェクトの保存済のステータスまたは値が返されます。

例7-47 コンテキスト名のリスト

次の文では、CONTEXTファンクションは現行セッションのコンテキスト名のみを返します。これは、例9-72「ディメンション・ステータスの保存」で使用されているのと同じコンテキストです。

SHOW CONTEXT

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

democontext1

例7-48 保存値のリスト

次の文では、CONTEXTファンクションはdemocontext1という名前のコンテキストに保存されているproductディメンションの値を返します。

SHOW CONTEXT('democontext1' product)

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

Tents
Canoes

CONVERT

CONVERTファンクションは、値をあるデータ型から別のデータ型へ変換するファンクションです。

戻り値

戻り値は、type引数の値によって異なります。

構文

CONVERT(expressiontype [argument...])

パラメータ

expression

変換する対象の式または変数。

type

expressionの変換後のデータ型。データ型を表すキーワードについては、表7-3「CONVERTファンクションのtypeパラメータのキーワード」で説明します。

表7-3 CONVERTファンクションのtypeパラメータのキーワード

キーワード 説明

BINARY

Oracle標準データ型への変換を示すものではないが、付加的な変換機能を提供。BINARYは変換を行わない。データ型にかかわりなく、すべての値の内部表現はテキスト値として返される。

  • TEXTデータ型では、結果は値それ自体となるため可変長。

  • IDおよびDECIMALデータ型では、結果は8バイト長。ID値は必要に応じて空白で埋められる。

  • BOOLEANまたはINTEGERデータ型では、デフォルトの結果はそれぞれ2または4バイト長(幅をわずかに変更するための追加引数については、argumentの説明を参照)。

  • それ以外のデータ型では、結果は4バイト長。

「PACKEDおよびBINARY変換」を参照。

BOOLEAN

Oracle OLAP BOOLEANデータ型への変換。

BYTE

単一文字を0から255の範囲のASCIIのINTEGER値に変換する。または、この範囲のINTEGERを文字に変換する。この範囲外のINTEGERはmodulo 256とみなされて変換され、つまり、残りが256より小さくなるまでINTEGERから256が減算され、範囲内に収まった残余分が文字に変換される。

DATE

Oracle OLAP DATEデータ型への変換。

DATETIME

Oracle OLAP DATETIMEデータ型への変換。

DECIMAL

Oracle OLAP DECIMALデータ型への変換。

DSINTERVAL

Oracle OLAP DML DSINTERVALデータ型への変換。

ID

Oracle OLAP IDデータ型への変換。

INFILE

IDTEXTDATEまたはRELATIONの値を一重引用符で囲み、INFILE文で読み取れるようにする。したがって、expressionには、IDTEXTDATEまたはRELATIONのいずれかの値が必要。英数字で等価なものがないTEXT値の場合、それらの値は正しいエスケープ・シーケンスに変換される。

INTEGER

Oracle OLAP INTEGERデータ型への変換。

LONGINTEGER

Oracle OLAP LONGINTEGERデータ型への変換。

NTEXT

Oracle OLAP標準データ型への変換。NCHARおよびNVARCHAR2 SQLデータ型に対応。NTEXT文字はUTF8 Unicodeでエンコードされる。この文字コードは、データベースのNCHARキャラクタ・セットの場合(UTF16など)とは異なる可能性あり。NTEXTからTEXTへの変換では、NTEXT値がデータベース・キャラクタ・セットで表せない場合、データの損失をまねくことがあります。

NUMBER [(p,[s])]

Oracle OLAP NUMBERデータ型への変換。

PACKED

数値を10進値に変換してから、パック形式(15桁およびプラス記号またはマイナス記号を含む8バイト長のテキスト値)に変換。小数部はパック形式の数字には表せないため、変換処理により小数は直近のINTEGERに丸められる。「PACKEDおよびBINARY変換」を参照。

ROWID

テキスト値からROWID値への変換。

SHORTDECIMAL

Oracle OLAP SHORTDECIMALデータ型への変換。

SHORTINTEGER

Oracle OLAP SHORTINTEGERデータ型への変換。

TEXT

Oracle OLAP標準データ型への変換。SQLのCHARおよびVARCHAR2データ型に相当。TEXT文字はデータベース・キャラクタ・セットでエンコードされる。

TIMESTAMP

Oracle OLAP DML TIMESTAMPデータ型への変換。

TIMESTAMP_LTZ

Oracle OLAP DML TIMESTAMP_LTZデータ型への変換。

TIMESTAMP_TZ

Oracle OLAP DML TIMESTAMP_TZデータ型への変換。

UROWID

テキスト値からUROWID値への変換。

YMINTERVAL

Oracle OLAP DML YMINTERVALデータ型への変換。


argument

typeにTEXT、NTEXT、ID、DATEまたはINFILEを指定する場合は、追加引数を指定して変換の方法を決定できます。これを、表7-4「TEXT、NTEXT、ID、DATEおよびINFILEの変換方法を指定する構文」にまとめます。

表7-4 TEXT、NTEXT、ID、DATEおよびINFILEの変換方法を指定する構文

type引数のキーワード 変換前の値 すべてのパラメータの構文

TEXT

任意の数値

TEXT [decimal-int|DECIMALS [comma-bool|COMMAS [paren-bool|PARENS]]]

NTEXT

任意の数値

NTEXT [decimal-int|DECIMALS [comma-bool|COMMAS [paren-bool|PARENS]]]

ID

任意の数値

ID [decimal-int|DECIMALS]

TEXT、NTEXTまたはID

任意の日時

ID|TEXT|NTEXT ['date_format']

TEXT、NTEXTまたはID

DATE

ID|TEXT|NTEXT ['dateformat']

VNFを持つDAY、WEEK、MONTH、QUARTER、YEAR型のディメンションのIDまたはTEXT

DATE

ID [dwmqy-dimension]|TEXT [dwmqy-dimension|'vnf ']

DATE

TEXT、NTEXTまたはID

DATE [date-order|dwmqy-dimname]

NTEXT

TEXT

NOXLATE

TEXT

NTEXT

NOXLATE

INFILE


INFILE [width-exp|LSIZE [escape-int|0]]

BOOLEANまたはINTEGERを持つBINARY


BINARY [width-exp]


decimal-int

数値データをTEXTまたはID値に変換する際に使用される小数点以下の桁数を制御するINTEGER式。この引数を指定しない場合、CONVERTではDECIMALSオプションの現行の値(デフォルトは2)を使用します。

comma-bool

数値データのテキスト表現でカンマを使用して3桁を区切るかどうかを決定するブール式。式の値をYESに設定すると、カンマが使用されます。この引数を指定しない場合、CONVERTではCOMMASオプションの現行の値(デフォルトはYES)を使用します。

paren-bool

数値データのテキスト表現で負の値をカッコで囲むかどうかを決定するブール式。式の値をYESに設定すると、カッコが使用され、NOに設定すると、負の値の前にマイナス記号が付きます。この引数を指定しない場合、CONVERTではPARENSオプションの現行の値(デフォルトはNO)を使用します。

date_format

日時式をテキストに変換する際に使用するテンプレートを指定するテキスト式。各データ・フィールドの有効な書式は、DATE_FORMATコマンドを使用して指定できる書式と同じです。

date_format引数を含めない場合、結果の書式はセッションのデフォルトの日付書式によって決まります。詳細は、「デフォルトの日時書式テンプレート」を参照してください。

dateformat

日付のみの式をテキストに変換する際に使用するテンプレートを指定するテキスト式。テンプレートには、日付の4つの構成要素(日、月、年、曜日)についての書式指定を含めることができます。テンプレート内の各構成要素は、左の山カッコ(<)と右の山カッコ(>)で囲む必要があります。構成要素の前後または構成要素間には、別のテキストを入れることが可能です。

日付の各構成要素についての有効な書式は、DATEFORMATオプションで許可されている書式と同じです。

次の文では、CONVERTは今日の日付をdateformat引数で指定されている書式でのテキスト値として返します。

SHOW CONVERT(TODAY TEXT '<MM>-<DD>-<YY>')

この例では、今日の日付は1998年3月31日です。SHOW文は、この日付を次のように表示します。

03-31-98

dateformat引数を含めない場合、結果の書式はDATEFORMATオプションの現行の設定により決定されます。

dwmqy-dimension

DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションの名前。Oracle OLAPでは、日付のみの値をTEXTまたはID値に変換する際、dwmqy-dimensionVNFを使用します。dwmqy-dimensionのVNFが指定されていない場合は、デフォルトのVNFが使用されます。

次の文では、CONVERTは今日の日付を、YEARディメンションのVNFで指定されている書式でのテキスト値として返します。

show convert(today text year)

この例では、今日の日付は1998年3月31日です。SHOW文は、この日付を次のように表示します。

YR98
vnf

DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションの値をテキストに変換する際に使用する値名書式を指定する、テキスト・テンプレート。テンプレートには、時間間隔の構成要素の書式指定を含めることができます。時間間隔の構成要素には、日付の全構成要素(日、月、年、曜日)と、会計年度および会計期間の構成要素が含まれます。また、テンプレートには、構成要素として、DAY、WEEK、MONTH、QUARTERまたはYEARディメンションの名前も含められます。テンプレート内の各構成要素は、左の山カッコと右の山カッコで囲む必要があります。構成要素の前後または構成要素間には、別のテキストを入れることが可能です。

CONVERTファンクションに対するvnf引数は、VNFコマンド内のテンプレートと似ています。ただし、VNFコマンド・テンプレートでは入力の解釈を厳密かつ明白に設計する必要があるのに対し、vnf引数はそれほどの制約はありません。したがって、vnf引数で使用できる書式スタイルは、VNFコマンド・テンプレートで許可されるものよりも広範です。

vnf引数で有効な書式スタイルには、VNFコマンド・テンプレートで許可されるすべての書式スタイルに加え、DATEFORMATテンプレートで許可されるすべての書式スタイルが含まれます。DATEFORMATでは、VNFコマンド・テンプレートでは許可されない次のような書式スタイルを提供しますが、これらは、CONVERTファンクションへのvnf引数では有効です。

  • 日付の序数スタイル(DT、DTL)

  • 月のfirst-letterスタイル(MT)

  • 曜日のスタイル(W、WT、WTXT、WTXTL、WTEXT、WTEXTL)

その期間の最後の日または月ではなく、最初の日または月を表示するように指定するには、これらの書式にBコードを追加します。

DAY、WEEK、MONTH、QUARTERまたはYEAR型のどのディメンションに対しても、VNFおよびDATEFORMATの両書式スタイルを任意の組合せで使用できます。この構文は、ディメンションの各型に対し特定の書式組合せしか有効でないVNFコマンドのテンプレートと対照的です。

次の文では、CONVERTはMONTHディメンションの現行の値を、vnf引数で指定されている書式でのテキスト値として返します。

SHOW CONVERT(month TEXT '<MTEXTL>, <YYYY>')

この例では、ステータスにある最初のMONTH値はDEC97で、SHOW文はこれを次のように表示します。

December, 1997

vnf引数を含めない場合は、結果の書式は、変換する値が属するディメンションのVNFにより決定されます。ディメンションにVNFがない場合には、変換するディメンションの型のデフォルトVNFに基づく書式が使用されます。

date-order

テキスト値の構成要素(月、日、年)の順序があいまいな場合に、指定されたテキスト値を日付のみの値として解釈する方法を指定するテキスト式。式は、'MDY''DMY''YMD''YDM''MYD''DYM'のいずれかです。各文字は、日付の構成要素(Mは月、Dは日、Yは年)を表します。

date-orderまたはdwmqy-dimname引数を含めない場合には、テキスト式内の解釈のあいまいな点は、DATEORDERオプションの現行の設定によって解決されます。日付のみの値の完全な説明とその解釈方法については、DATEORDERオプションを参照してください。

dwmqy-dimname

テキスト値の構成要素の順序があいまいな場合に、指定されたテキスト値を日付のみの値として解釈する方法の決定に使用するVNFまたはデフォルト日付順序を持つ、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションの名前。

date-orderまたはdwmqy-dimname引数を含めない場合には、テキスト式内の解釈のあいまいな点は、DATEORDERオプションの現行の設定によって解決されます。日付のみの値の完全な説明とその解釈方法については、DATEORDERオプションを参照してください。

width-exp

CONVERTからの出力の幅を指定するINTEGER式。最小幅は7です。デフォルトの幅は、LSIZEオプションの現行の値です。escape-int引数を指定している場合、この引数は必須です。

escape-int

出力にエスケープ・シーケンスを使用するかどうかを指定します。この引数には、表7-5「CONVERTのescape-intパラメータの値」に示されている値を指定できます。

表7-5 CONVERTのescape-intパラメータの値

説明

-1

エスケープを使用しない。先行するWIDTH引数から1が減算されないように、-1の前にカンマが付く(,-1)。

0

(デフォルト)印刷不可の文字にエスケープを使用する。

1

すべての文字にエスケープを使用する。


OLAP DMLにおけるエスケープ・シーケンスの詳細は、「エスケープ・シーケンス」を参照してください。

width-exp

変換後の結果の幅を制御するINTEGER式。12または4バイトを評価できます。デフォルトの幅は、BOOLEANでは2INTEGERでは4です。INTEGER値が大きすぎて指定された幅に収まらない場合は、NAが返されます。幅が無効または他のデータ型について指定されている場合は、エラーが発生します。

NOXLATE

キャラクタ・セット変換の実行を禁止することを示すキーワード。Oracle OLAPでは、かわりに、変換後の値にターゲット・データ型のタグのみを付け、データはCONVERTファンクションがコールされる前の状態のまま維持します。このキーワードは、TEXTまたはNTEXT変数にバイナリ・データを保存するために必要な場合のみ使用してください。

使用上の注意

INFILE変換

1行の最大文字数は4,000です。4,000文字を超える行を生成するINFILE変換を試行すると、エラーが発生します。ソース行が99文字を超えており、それらのうち相当数がエスケープ・シーケンスを必要とする場合、このタイプのエラーが発生する可能性があります。

日付のみの値の数値への変換

日付のみのデータ型の値を数値データ型の値に変換すると、その結果は日付を表す順序番号になります(順序番号1は1900年1月1日を表します)。

Oracle OLAPではまず、日付のみの値は、それに対応する順序番号のINTEGER値として変換されます。ターゲット・データ型がINTEGER以外の数値データ型である場合はさらに、そのINTEGER値が、指定された数値データ型に変換されます。

SHORTINTEGER値が取り得る最大値は32,767で、(INTEGER値としては)1992年9月17日を表します。したがって、この日付以降の日付のみの値をSHORTINTEGER値に変換しようとすると、CONVERTによりNAが返されます。

数値の日付のみの値への変換

結果は、指定した数値と等しい順序番号に対応する日付のみの値(1900年1月1日が順序番号1に対応)となりますが、結果が有効な日付の範囲にない場合はNA値となります。有効な日付範囲は、1900年1月1日(順序番号1)から9999年12月31日(順序番号2,958,464)までです。

数値データ型がINTEGERデータ型の場合、そのINTEGER値は、指定した数値と等しい順序番号に対応する日付のみの値に直接変換されます。数値データ型がINTEGERでない場合、その値はまずINTEGER値に変換され、さらにそのINTEGER値が日付のみの値に変換されます。

日付のみのディメンション値のID値への変換

変換の結果が8文字を超える場合、その結果は切り捨てられます。

リレーション値のINTEGER値への変換

変換の結果は、リレーションのディメンションにおけるその値の位置を表すINTEGER値となります。この動作は、リレーションの値がディメンション値であり、TEXT値ではないことによります。

数値データ型から他のデータ型への値の変換

変換の結果は、指定したデータ型の値になります。ただし、ターゲット・データ型に対して有効な値の範囲にない場合はNAとなります。

たとえば、32,767より大きいINTEGER値または-32,767より小さいINTEGER値をSHORTINTEGER値に変換しようとすると、CONVERTからはNAが返されます。

文字列から日時への変換ルール

文字列値を日時値に変換する際には、次の書式設定のルールが適用されます。

  • 先行ゼロを含む数値書式要素の桁がすべて指定されている場合は、日時文字列の書式文字列に含まれる句読点を省略できます。たとえば、MM、DD、YYなどの2桁の書式要素で、2ではなく02を指定する場合です。

  • 日時文字列の書式文字列で最後にある時刻フィールドを省略できます。

  • 日時書式要素と日付文字列内の対応する文字の一致に失敗した場合、かわりの書式要素が適用されます(表7-6「Oracleの書式一致」を参照)。

表7-6 Oracleの書式一致

元の書式要素 元の書式要素のかわりに使用される書式要素
'MM'

'MON'および'MONTH'

'MON

'MONTH'

'MONTH'

'MON'

'YY'

'YYYY'

'RR'

'RRRR'


NULL値および空白テキスト値のバイト値への変換

CONVERTでは、NULL文字列('')と空白文字列(' ')に対しては同じ値を返します。どちらも、変換の結果は32です。

PACKEDおよびBINARY変換

PACKEDおよびBINARY型は、PACKEDおよびBINARYのデータを含むバイナリ・ファイルを作成するのに役立ちます。そのようなファイルを作成するには、BINARYキーワードとともにFILEOPEN文を使用してファイルを開き、FILEPUTを使用して値を書き込みます。FILEPUT文の引数としてROWファンクションを使用することで、ファイルの形式を設定できます。

例7-49 10進値のテキストへの変換

この例では、JOINCHARSとCONVERTファンクションを使用して、製品および月について一定のテキストを変数priceの値と結び付け、価格を小数点以下の桁なしで表す方法を示します。

LIMIT month TO 'Jul96'
LIMIT product to 'Canoes'
SHOW JOINCHARS('Price of Canoes = $' CONVERT(price TEXT 0))
Price of Canoes = $200

例7-50 テキスト値のエスケープ・シーケンスへの変換

この例では、CONVERTファンクションをESCAPEBASEオプションとともに使用して、TEXT値を、デフォルトの10進エスケープ・シーケンスから16進エスケープ・シーケンスへ変換する方法を示します。

DEFINE textvar VARIABLE TEXT
textvar = 'testvalue'
SHOW CONVERT(textvar INFILE 9 1)
'\d116\d101\d115\d116\d118\d097\d108\d117\d101'
ESCAPEBASE = 'x'
SHOW CONVERT(textvar INFILE 9 1)
'\x74\x65\x73\x74\x76\x61\x6C\x75\x65' 

CORRELATION

CORRELATIONファンクションは、2つの式のデータ値のペアについて相関係数を返すファンクションです。相関係数は、データ値間の関係の強度を示します。相関係数が正の1または負の1に近いほど、式内のデータ値間の関係は強くなります。相関係数0(ゼロ)は相関がないことを意味し、+1(プラス1)または-1(マイナス1)は完全な相関を意味します。正の相関係数は、一方の式のデータ値が増加(または減少)すると、もう一方の式のデータ値も増加(または減少)することを示します。負の相関係数は、一方の式のデータ値が増加すると、もう一方の式のデータ値は減少することを示します。

戻り値

DECIMAL

構文

CORRELATION(expression1 expression2 [PEARSON|SPEARMAN|KENDALL] -

     [BASEDON dimension-list])

パラメータ

expression1

少なくとも1つのディメンションがexpression2と共通している、ディメンション化された数式。

expression2

少なくとも1つのディメンションがexpression1と共通している、ディメンション化された数式。

PEARSON

Pearsonの積率相関係数(Pearson product-moment)を計算します。たとえば販売個数と単価などのように、データ水準が間隔尺度または比例尺度で、式のデータ値が線形関係を持ち、正規分布する場合、このメソッドを使用します。

SPEARMAN

Spearmanの順位相関係数(Spearman's rho)を計算します。式が線形関係を持たないか、正規分布しない場合に、このノンパラメトリック・メソッドを使用します。相関係数の計算時に、このメソッドではexpression1およびexpression2のデータ値に順位を付け、expression1の各要素の順位をexpression2の対応する要素と比較します。このメソッドは、式のほとんどの値が一意であることを前提としています。

KENDALL

Kendallの順位相関係数(Kendall's tau)を計算します。このノンパラメトリック・メソッドでは、SPEARMANメソッドと同様に、まずexpression1およびexpression2のデータ値を順位付けます。ただし、KENDALLメソッドでは、各ペアの順位を次に続くペアと比較します。このメソッドは、expression1およびexpression2のデータ値のほとんどが一意でない場合に使用します。

BASEDON dimension-list

CORRELATIONが相関係数を計算する、オプションのディメンション・リスト。expression1およびexpression2の両方が、dimension-listにあるすべてのディメンションでディメンション化されている必要があります。CORRELATIONは、dimension-listのすべてのディメンションに対して、expression1のデータ値をexpression2のデータ値と相関させます。CORRELATIONは、dimension-listのディメンション以外のexpression1expression2のすべてのディメンションによってディメンション化された各セルに対し1つの相関係数を含む、1つの配列を返します。

dimension-list引数を指定しない場合は、expression1およびexpression2で共通するディメンション全体の相関係数がCORRELATIONによって計算されます。2つの式のディメンションがすべて同じ場合は、CORRELATIONは単一の相関係数を返します。いずれかの式にもう一方の式では共有されていないディメンションが含まれている場合には、CORRELATIONは、各セルに1つの相関係数を含んだ配列を返しますが、このとき、セルは、式内の共有されていないディメンションによってディメンション化されています。

使用上の注意

CORRELATIONでのNASKIPの影響

CORRELATIONはNASKIPオプションの影響を受けます。NASKIPがYESに設定されている場合(デフォルト)、CORRELATIONではNA値を無視します。NASKIPがNOに設定されている場合、式のNA値はNA相関係数になります。

例7-51 PEARSONメソッドによる相関付け

アナリティック・ワークスペースにunitsおよびpriceの2つの変数があるとします。price変数の2つのディメンション(monthおよびproduct)は、units変数と共有されていて、units変数には、3つ目のディメンションとしてdistrictがあります。

次のCORRELATION文では、dimension-list引数は指定されていません。この文のCORRELATIONファンクションからは、2つの変数で共有されていないディメンション内の各ディメンション値についての相関係数が返されます。

REPORT CORRELATION(units price pearson)

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

               CORRELATION
                 (UNITS
                  PRICE
DISTRICT        PEARSON)
-------------- -----------
Boston               -0.75
Atlanta              -0.85
Chicago              -0.83
Dallas               -0.66
Denver               -0.83
Seattle              -0.69

次の文で、monthおよびproductディメンションを制限します。

LIMIT month to 'Jan96' TO 'Mar96'
LIMIT product TO 'Tents' TO 'Racquets'

次の文により、ステータスにある制限されたディメンション値について、productディメンションを基準とした相関係数がレポートされます。

REPORT CORRELATION(units price pearson basedon product)

               CORRELATION(UNITS PRICE PEARSON-
               --------BASEDON PRODUCT)--------
               -------------MONTH--------------
DISTRICT         Jan96      Feb96      Mar96
-------------- ---------- ---------- ----------
Boston              -0.96      -0.90      -0.89
Atlanta             -0.97      -0.97      -0.97
Chicago             -0.96      -0.95      -0.95
Dallas              -0.98      -0.98      -0.99
Denver              -0.97      -0.97      -0.97
Seattle             -0.89      -0.83      -0.83

次の文により、制限されたディメンション値について、monthディメンションを基準とした相関係数がレポートされます。

REPORT CORRELATION(units price pearson basedon month)

               CORRELATION(UNITS PRICE PEARSON-
               ---------BASEDON MONTH)---------
               ------------PRODUCT-------------
DISTRICT         Tents      Canoes    Racquets
-------------- ---------- ---------- ----------
Boston              -0.59      -0.92      -0.55
Atlanta             -0.73      -0.83       0.03
Chicago             -0.91      -0.84      -0.68
Dallas              -0.86      -0.92       0.31
Denver              -0.98      -0.94      -0.67
Seattle             -0.98      -0.89      -0.70

COS

COSファンクションは、三角式の余弦を計算するファンクションです。

戻り値

NUMBER

COSで返される結果は、指定した式と同じディメンションを持つ値です。

構文

COS(angle-expression)

パラメータ

angle-expression

ラジアン単位で指定された角度値を含む数式。

例7-52 ラジアン単位の角度の余弦計算

この例では、1ラジアンの角度の余弦を計算します。次の文

DECIMALS = 5
SHOW COS(1)

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

0.54030

例7-53 度数による角度の余弦計算

この例では、60度の角度の余弦を計算します。1度は2 * (pi) / 360ラジアンなので、60度は約60 * 2 * 3.14159 / 360ラジアンです。次の文

SHOW COS(60 * 2 * 3.14159 / 360)

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

0.50000

COSH

COSHファンクションは、三角式の双曲線余弦を計算するファンクションです。

戻り値

NUMBER

構文

COSH(expression)

パラメータ

expression

ラジアン単位で指定された角度値を含む数式。

例7-54 角度の双曲線余弦の計算

この例では、1ラジアンの角度の双曲線余弦を計算します。次の文

DECIMALS = 5
SHOW COSH(1)

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

1.54030

COUNT

COUNTファンクションは、ブール式のTRUE値の件数をカウントします。式にTRUE値がない場合は、0(ゼロ)が返されます。

戻り値

INTEGER

構文

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

パラメータ

boolean-expression

TRUE値をカウントする対象のブール式。

CACHE

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

dimension

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

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


ヒント:

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

使用上の注意

COUNTでのNASKIPの影響

COUNTは、NASKIPオプションの影響を受けます。NASKIPがYESに設定されている場合(デフォルト)、NA値の数にかかわらず、COUNTはブール式のTRUE値の件数を返します。NASKIPがNOに設定されている場合、式の値にNAが1つでもあると、COUNTはNAを返します。式のすべての値がNAの場合には、NASKIPがどちらに設定されていても、COUNTはNAを返します。

例7-55 地区ごとのTRUE値のカウント

COUNTを使用して、各地区でスポーツウェアを2,000枚以上販売した月の数を検索できます。各地区の販売件数を取得するには、結果のディメンションとしてdistrictを指定します。

LIMIT product TO 'SPORTSWEAR'
REPORT HEADING 'Count' COUNT(units GT 2000, district)

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

DISTRICT         Count
-------------- ----------
Boston                  0
Atlanta                23
Chicago                11
Dallas                 24
Denver                  7
Seattle                 0

CUMSUM

CUMSUMファンクションは、時間ディメンション全体または別のディメンション全体の累積合計を計算するファンクションです。合計されるデータが1次元である場合、CUMSUMでは、一連の累積合計を1回(該当ディメンションのすべての値に対し1回)行います。データに、合計する対象のディメンション以外のディメンションがある場合、CUMSUMは、他のディメンションにあるステータス中の値の各組合せに対し別個に、一連の累積合計を行います。

戻り値

DECIMAL

構文

CUMSUM(cum-expression [STATUS] total-dim [reset-dim] [INSTAT])

パラメータ

cum-expression

値を合計する対象の数値変数または演算。たとえば、UNITSなど。

STATUS

cum-expressionが多次元の場合、CUMSUMによりファンクションの処理中に使用する一時変数が作成されます。STATUSキーワードを指定すると、一時変数のサイズの計算時に、ディメンションのデフォルト・ステータスのかわりに現行のステータスが使用されます。式のディメンションがいくつかの値に制限されており、物理的に断片化されている場合は、STATUSを指定することで、CUMSUMのパフォーマンスを向上させることができます。

結果がステータス外になる式(たとえば、LEADまたはLAGファンクションを使用した場合、または修飾データ参照を使用した場合)でCUMSUMをSTATUSキーワードとともに使用した場合、ステータス外の結果はNAとして返されます。


注意:

合計されるデータが1次元の場合にSTATUSキーワードを指定すると、エラーが発生します。

total-dim

合計の対象とする、cum-expressionのディメンション。

reset-dim

各新年の開始時など、新しいリセット・ディメンション値ごとに一連の累積合計をやり直すかどうかを指定します。リセット・ディメンションは、次のいずれかです。

  • 明示的に定義されたリレーションを介してtotal-dimに関連付けられている任意のディメンション。

  • total-dimがDAY、WEEK、MONTH、QUARTER、YEAR型のいずれかである場合、DAY、WEEK、MONTH、QUARTERまたはYEAR型の任意のディメンション。CUMSUMでは2つのディメンション間の暗黙的なリレーションを使用するため、それらは明示的なリレーションで関連付けられている必要はありません。「暗黙的なリレーションの変更」を参照してください。

  • total-dimによってディメンション化されたリレーション。CUMSUMでは、関連ディメンションをリセット・ディメンションとして使用しますが、これによって、リレーションが複数ある際にどのリレーションを使用するかを選択できます。

INSTAT

CUMSUMで、現行のステータスにあるtotal-dimの値のみを使用するように指定します。INSTATを指定しないと、現行のステータスにかかわらず、total-dimすべての値の合計が算出されます。「デフォルトで現行のステータスを無視するINSTAT」を参照してください。

使用上の注意

暗黙的なリレーションの変更

total-dim引数とreset-dim引数の両方にDAY、WEEK、MONTH、QUARTERまたはYEAR型を持つディメンションを指定すると、CUMSUMでは、明示的なリレーションが存在する場合にも、2つのディメンション間の暗黙的なリレーションを使用します。ただし、reset-dim引数に対しリレーションの名前を指定することで、このデフォルトの動作を無効にして、明示的なリレーションを使用できます。

デフォルトで現行のステータスを無視するINSTAT

INSTATキーワードを指定しない場合は、CUMSUMでは、合計の計算時に現行のステータスを無視します。全体を合計するディメンションがMONTHであるとします(INSTATは指定されていません)。ある月のCUMSUM合計には、それ以前の月のいくつかがステータス中でなくても、それらのすべての月の値が使用されます。リセット・ディメンションが指定されていると、ある月の合計には、先行する月のうち、リセット・ディメンションの同じ値に呼応するすべての月の値が使用されます(たとえば、同じ年内の先行するすべての月)。年の初めから当日までの合計を計算するには、リセット・ディメンションとしてYEARを指定します。

例7-56 多次元CUMSUM計算

この例では、1996年の最初の6か月間について、Atlanta地区におけるテントおよびカヌーの個数(units)の累積合計を計算します。レポートには、月ごとの個数、リセット・ディメンションとして年(year)を使用して計算した年の初めから当日までの合計数、およびリセット・ディメンションなしに先行するすべての月で計算した合計数が示されます。次の文を発行するとします。

LIMIT district TO 'Atlanta'
LIMIT product TO 'Tents' 'Canoes'
LIMIT month TO 'Jan96' TO 'Jun96'
REPORT DOWN month units CUMSUM(units, month year) -
   CUMSUM(units, month)

次のレポートが表示されます。

DISTRICT: ATLANTA
         ------------------------PRODUCT------------------------ 
         ---------TENTS------------- ---------CANOES------------ 
               CUMSUM(UNI                   CUMSUM(UNI
                TS, MONTH CUMSUM(UNI         TS, MONTH CUMSUM(UNI
MONTH    UNITS    YEAR)   TS, MONTH)  UNITS    YEAR)   TS, MONTH)
-----  -------- --------- ---------- ------- --------- ----------
Jan96      279       279      5,999      281       281      5,162
Feb96      305       584      6,304      309       590      5,471
Mar96      356       940      6,660      386       976      5,857
Apr96      537     1,477      7,197      546     1,522      6,403
May96      646     2,123      7,843      525     2,047      6,928
Jun96      760     2,883      8,603      608     2,655      7,536

CUMSUM(UNITS, MONTH)の合計には、最初の月JAN95以降のすべての月の値が含まれます。CUMSUM(UNITS, MONTH YEAR)の合計には、JAN96以降の値のみが含まれます。

例7-57 四半期でのリセット

この例では、同じ製品および地区について、1996年1年間の累積合計を計算します。リセット・ディメンションとしてquarterが指定されているため、合計は各四半期の初めで累積が開始されます。Jan96Apr96Jul96およびOct96の累積合計は、これらの月の個数と同じです。次の文を発行するとします。

LIMIT district TO 'Atlanta'
LIMIT product TO 'Tents' 'Canoes'
limit month TO year 'Yr96'
REPORT DOWN month units CUMSUM(units, month quarter)

次のレポートが表示されます。

DISTRICT: ATLANTA
             ------------------PRODUCT------------------
             --------TENTS-------- -------CANOES--------
                          CUMSUM(UNI          CUMSUM(UNI
                           TS, MONTH           TS, MONTH
MONTH           UNITS     QUARTER)    UNITS     QUARTER)
------------ ---------- ---------- ---------- ----------
Jan96             279        279        281        281
Feb96             305        584        309        590
Mar96             356        940        386        976
Apr96             537        537        546        546
May96             646      1,183        525      1,071
Jun96             760      1,943        608      1,679
Jul96             852        852        626        626
Aug96             730      1,582        528      1,154
Sep96             620      2,202        520      1,674
Oct96             554        554        339        339
Nov96             380        934        309        648
Dec96             284      1,218        288        936

「CURRENT_DATE」

CURRENT_DATEファンクションは、セッションのタイムゾーンでの現在の日付をグレゴリオ暦の値として返します。

戻り値

DATETIME

構文

CURRENT_DATE

例7-58 現在の日付の取得

2007年2月13日の時点で日付を取得するとします。

SHOW NLS_DATE_FORMAT
DD-MON-RR
SHOW CURRENT_DATE
13-FEB-07

「CURRENT_TIMESTAMP」

CURRENT_TIMESTAMPファンクションは、セッションのタイムゾーンでの現在の日時をTIMESTAMP_TZデータ型の値として返します。タイムゾーン・オフセットがセッションの現在のローカル時間を示します。

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

戻り値

TIMESTAMP_TZ

構文

CURRENT_TIMESTAMP [ (precision) ]

パラメータ

precision

返される時間値の秒の小数精度。この引数を省略した場合、このファンクションではデフォルト値の6が使用されます。

例7-59 現在のタイムスタンプの取得

現在のタイムスタンプを取得するとします。

SHOW CURRENT_TIMESTAMP
13-FEB-07 09.11.33.454685 AM -08:00

DAYOF

DAYOFファンクションは、指定した日付の曜日を示す、1から7までの範囲のINTEGERを返すファンクションです。結果の1は日曜日を表します。結果は、指定したDATE式と同じディメンションを持ちます。

戻り値

INTEGER

構文

DAYOF(date-expression)

パラメータ

date-expression

DATEデータ型の式、または日付を指定するテキスト式。DATE式のかわりに、有効な日付入力スタイルに従った値を持つテキスト式を指定できます。DAYOFでは、テキスト式の値が自動的にDATE値に変換され、DATEORDERオプションの現行の設定を使用して、解釈のあいまいな点が解決されます。

例7-60 今日の曜日の検索

次の文で、今日の日付に当たる曜日を現行の出力ファイルに送信します。

SHOW DAYOF(TODAY)

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

4

例7-61 特定の日付の曜日の検索

次の文で、1996年の7月4日に当たる曜日を現行の出力ファイルに送信します。

SHOW DAYOF('04jul96')

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

5

DBTIMEZONE

DBTIMEZONEファンクションは、データベースのタイムゾーンの値を返します。

戻り値

タイムゾーン・オフセット('[+|-]TZH:TZM'という書式の文字型)またはタイムゾーン・リージョン名。ユーザーが直近のCREATE DATABASEまたはALTER DATABASE文で指定したデータベース・タイムゾーン値によって異なります。

構文

DBTIMEZONE

例7-62 データベースのタイムゾーンの取得

SHOW DBTIMEZONE
-08:00

DDOF

DDOFファンクションは、指定した日付の日にちを示す、1から31までの範囲のINTEGERを返すファンクションです。DDOFにより返される結果は、指定したDATE式と同じディメンションを持ちます。

戻り値

INTEGER

構文

DDOF(date-expression)

パラメータ

date-expression

DATEデータ型の式、または日付を指定するテキスト式。テキスト式の有効な形式については、「日付のみの入力値」を参照してください。

例7-63 今日の日にちの検索

次の文では、今日の日付の日にちが返されます。

SHOW DDOF(TODAY)

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

8

DECODE

DECODEファンクションは、ある式を1つ以上の他の式と比較し、基準の式が検索式と等しい場合に呼応する結果式を返します。一致する式がまったくない場合にはデフォルトの式(デフォルトが指定されている場合)またはNA(デフォルトが指定されていない場合)を返すファンクションです。

戻り値

最初のresult引数のデータ型

構文

DECODE (expr , search, result [, search , result]... [, default])

パラメータ

expr

(比較の基準とする)検索される式。このファンクションでは、比較の前に、exprを1番目のsearch値のデータ型に自動変換します。

search

(比較する対象の)検索する式。このファンクションでは、比較の前に、各search値を1番目のsearch値のデータ型に自動変換します。

result

expressionsearchと等しいときに返される式。

default

expressionsearchと等しくないときに返される式。

使用上の注意

値の評価の順序

searchresultおよびdefaultの値は、式から導出されます。このファンクションでは、いずれかの値をexprと比較する前にまずすべてのsearch値を評価するのではなく、各search値を、それぞれexprと比較する前にのみ評価します。したがって、先行するsearchexprと等しい場合、以後のsearchは評価されません。

例7-64 IDフィールドのデコード

アナリティック・ワークスペースに次のオブジェクトが含まれているとします。計算式inventory_locationでは、DECODEファンクションを使用して、warehouse_idINTEGER値に対応するテキスト値を特定しています。

DESCRIBE
DEFINE product_id DIMENSION TEXT
DEFINE warehouse_id DIMENSION INTEGER
DEFINE inventories VARIABLE DECIMAL <product_id warehouse_id>
DEFINE inventory_location FORMULA TEXT <warehouse_id>
EQ -
DECODE (warehouse_id, 1, 'Southlake', 2, 'San Francisco', 4, 'Seattle', -
'Non domestic')
 
REPORT inventories
                     ---------------INVENTORIES---------------
                     ---------------PRODUCT_ID----------------
WAREHOUSE_ID                 1770                 1775
-------------------- -------------------- --------------------
                   1                30.63                79.02
                   2                71.49                55.83
                   3                88.71                68.02
                   4                86.27                41.86
 
 
REPORT inventory_location
WAREHOUSE_ID          INVENTORY_LOCATION
-------------------- --------------------
                   1 Southlake
                   2 San Francisco
                   3 Non domestic
                   4 Seattle
 

次の各レポートにより、inventory_locationを使用すると、warehouse_idの実際の値ではなく、デコードされたwarehouse_idの値をレポートに表示できることがわかります。

LIMIT product_id to '1775'
 
REPORT DOWN warehouse_id inventories
                     ----INVENTORIES-----
                     -----PRODUCT_ID-----
WAREHOUSE_ID                 1775
-------------------- --------------------
                   1                79.02
                   2                55.83
                   3                68.02
                   4                41.86
 
REPORT DOWN inventory_location inventories
                     ----INVENTORIES-----
                     -----PRODUCT_ID-----
INVENTORY_LOCATION           1775
-------------------- --------------------
Southlake                           79.02
San Francisco                       55.83
Non domestic                        68.02
Seattle                             41.86

例7-65 BITANDを使用したDECODE

アナリティック・ワークスペースに、レポート済の値を持つ次のオブジェクトがあるとします。

DEFINE order_id DIMENSION TEXT
DEFINE customer_id DIMENSION TEXT
DEFINE order_customer COMPOSITE <order_id customer_id>
DEFINE order_status VARIABLE NUMBER(2) <order_customer<order_id customer_id>>
 
REPORT DOWN order_customer order_status
  ORDER_ID   CUSTOMER_ID  ORDER_STATUS
------------ ------------ ------------
2458         101                  0.00
2397         102                  1.00
2454         103                  1.00
2354         104                  0.00
2358         105                  2.00
2381         106                  3.00
2440         107                  3.00
2357         108                  5.00
2394         109                  5.00
2435         144                  6.00
2455         145                  7.00
2356         105                  5.00
2360         107                  4.00
 
 

order_statusの値は、最初の3ビットに注文に関する情報が格納され、その他のビットは常に0であるビットマップとして使用されるとします。

  • 最初のビットは、場所に関する情報に使用されます。

    0=郵便局(Post Office)。0、2、4、6の整数値に対応します。

    1=倉庫(Warehouse)。1、3、5、7の整数値に対応します。

  • 2番目のビットは、輸送方法に使用されます。

    0=航空便(Air)。0、1、4、5の整数値に対応します。

    1=地上便(Ground)。2、3、6、7の整数値に対応します。

  • 3番目のビットは、受領方法に使用されます。

    0=保証付き(Certified)。0、1、2、3の整数値に対応します。

    1=保険付き(Insured)。4、5、6、7の整数値に対応します。

次の計算式は、DECODEを使用してビット値をテキスト値に置き換えます。

DEFINE location FORMULA DECODE(BITAND(order_status, 1), 1, 'Warehouse', 'PostOffice')
DEFINE method FORMULA DECODE(BITAND(order_status, 2), 2, 'Ground', 'Air')
DEFINE receipt FORMULA DECODE(BITAND(order_status, 4), 4, 'Insured', 'Certified')

これにより、デコードされた値を表示するレポートを発行できます。

REPORT DOWN order_customer order_status location method receipt

  ORDER_ID   CUSTOMER_ID  ORDER_STATUS   LOCATION      METHOD      RECEIPT
------------ ------------ ------------ ------------ ------------ ------------
2458         101                  0.00 PostOffice   Air          Certified
2397         102                  1.00 Warehouse    Air          Certified
2454         103                  1.00 Warehouse    Air          Certified
2354         104                  0.00 PostOffice   Air          Certified
2358         105                  2.00 PostOffice   Ground       Certified
2381         106                  3.00 Warehouse    Ground       Certified
2440         107                  3.00 Warehouse    Ground       Certified
2357         108                  5.00 Warehouse    Air          Insured
2394         109                  5.00 Warehouse    Air          Insured
2435         144                  6.00 PostOffice   Ground       Insured
2455         145                  7.00 Warehouse    Ground       Insured
2356         105                  5.00 Warehouse    Air          Insured
2360         107                  4.00 PostOffice   Air          Insured

DEPRDECL

DEPRDECLファンクションは、一連の資産の減価償却費を計算するファンクションです。DEPRDECLは、指定した資産の耐用年数に基づいて資産を定率法で減価償却します(「DEPRDECLで使用される計算方法」を参照)。期首価額と期末価額は、各期間に取得した資産に対して指定します。


ヒント:

DEPRDECLに使用されている減価償却の純粋な定率法は、最も一般的な形式の定率法とは異なります。より一般的な形式の定率法については、定率法と定額法を組み合せて使用しているDEPRDECLSWファンクションの項を参照してください。

戻り値

DECIMAL

戻り値は、start-expのすべてのディメンションによってディメンション化されます。

構文

DEPRDECL(start-exp end-exp n [STATUS] [decline-factor [ {FULL|HALF|portion-exp}[time-dimension] ] ])

パラメータ

start-exp

資産の期首価額が格納された数式。start-exp式は、時間ディメンションによってディメンション化する必要があります。start-expには、時間ディメンションの値ごとに、その期間に取得した資産の初期価額が格納されます。start-expには、時間ディメンションに加えて、非時間ディメンションもあります。

end-exp

資産の期末価額が格納された数式。end-exp式は、start-expと同じディメンションでディメンション化する必要があります。end-expには、時間ディメンションの値ごとに、その期間に取得した資産の最終(または残存)価額が格納されます。start-expのそれぞれの値には、これに対応するend-exp値が必要です。たとえば、1996年に取得した資産の残存価額が$200であった場合、1996年のend-expの値は$200になります。

n

資産の減価償却期間の期間数が格納されるINTEGER式。n式には、start-expの任意の非時間ディメンションを格納できますが、時間ディメンションは格納できません。

STATUS

DEPRDECLが減価償却費を計算する際に、現行のステータス・リスト(つまり現在ステータスにあり、現行のステータスの順序に並んでいるディメンション値のみ)を使用することを指定します。デフォルトでは、デフォルトのステータス・リストが使用されます。

decline-factor

減価償却費の計算に使用するために定率を指定する数式。decline-factor式には、start-expの任意の非時間ディメンションを格納できますが、時間ディメンションは格納できません。

係数が2の場合は、定率が2倍であることを示します。デフォルト値は2です。

FULL

(デフォルト)ある期間の減価償却費全額を、資産の取得期間に計上することを指定します。一連の全資産に対する全額を計上します。

HALF

ある期間の減価償却費の半額を、資産の取得期間に計上することを指定します。一連の全資産に対する半額を計上します。取得した期間に計上される減価償却費の一部としてHALFを指定すると、各期間にHALF係数が適用されます。各期間の全減価償却の半分は次の期間にロールされ、後半の減価償却は期間n + 1に実施されます。HALFは、ある期間の下半期に資産を取得した場合などに使用します。

portion-exp

一定の資産については全額を計上し、それ以外の資産については半額を計上する場合は、start-expの任意の非時間ディメンションによってディメンション化されるportion-exp式を指定できます。portion-exp式は、FULLまたはHALFの値を指定したテキスト式にする必要があります。

time-dimension

start-expおよびend-expがディメンション化される時間ディメンションの名前。時間ディメンションが、DAY、WEEK、MONTH、QUARTER、YEAR型のいずれかである場合、time-dimension引数はオプションです。

使用上の注意

DEPRDECLで使用される計算方法

DEPRDECLでは、償却が全額は完了していない一連の全資産について、特定の期間の減価償却費が、その期間の減価償却費の合計として計算されます。ある資産の最初の減価償却期間とは、その資産を取得した期間を指します。

DEPRDECLでは、当期資産額にdecline-factorを乗算し、この値を資産の有効期間内の期間数で除算することによって、定率法による減価償却費が期間ごとに計算されます。ただし、特定の期間について計算した結果、当期資産額が期末価額を下回る場合、減価償却費は調整されます。この場合、減価償却費は当期資産額から期末価額を減算した値として計算されます。

低い期末価額

ある資産に対して指定した期末価額が、最後の期間の減価償却費を調整する必要がないほど低い場合、全期間にわたる減価償却費の合計は、通常、期首価額から指定の期末価額を減算した値より小さくなります。

高い期末価額

ある資産に対して指定した期末価額が比較的高い場合は、減価償却の有効期間として指定した期間よりも短い期間内に全額が償却される場合があります。この場合、減価償却の指定した有効期間全体にわたってこの減価償却費を適用するには、decline-factorを小さくします。

DEPRDECLとNA値

start-expの値がNAで、これに対応するend-expの値がNAでない場合は、エラーが発生します。同様に、end-expの値がNAで、これに対応するstart-expの値がNAでない場合もエラーが発生します。

start-expの値とこれに対応するend-expの値がどちらもNAの場合、DEPRDECLの動作はNASKIPオプションの影響を受けます。NASKIPの設定がYES(デフォルト)の場合、DEPRDECLでは、減価償却費の計算時に値が0とみなされます。NASKIPの設定がNOの場合は、DEPRDECLからの戻り値は、影響するすべての期間に対してNAになります。

例7-66 単一期間に取得した資産のDEPRDECLによる減価償却費の計算

この例では、DEPRDECLを使用して、単一の期間に取得した資産の減価償却費を計算する方法を示します。

次の文を実行すると、assetsおよびsalvageという2つの変数が作成されます。

DEFINE assets DECIMAL <year>
DEFINE salvage DECIMAL <year>

変数assetsおよびsalvageに対して、次の値を代入します。

YEAR             ASSETS    SALVAGE
-------------- ---------- ----------
Yr95             1,000.00     100.00
Yr96                 0.00       0.00
Yr97                 0.00       0.00
Yr98                 0.00       0.00
Yr99                 0.00       0.00
Yr00                 0.00       0.00

assets変数には、1995年に取得した資産の期首価額が格納されています。salvage変数には、1995年に取得した資産の期末価額が格納されています。

次の文を実行すると、資産価額と残存価額の他に、資産の減価償却費もレポートされます。DEPRDECLをコールして減価償却費を計算する場合は、資産の有効期間内の5期間(この場合は5年)、償却係数として2(2倍の定率)が指定されます。

REPORT assets salvage W 12 HEADING 'Depreciation' -
   DEPRDECL(assets salvage 5 2 FULL year)

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

YEAR             ASSETS    SALVAGE   Depreciation 
-------------- ---------- ---------- ------------
Yr95             1,000.00     100.00       400.00
Yr96                 0.00       0.00       240.00
Yr97                 0.00       0.00       144.00
Yr98                 0.00       0.00        86.40
Yr99                 0.00       0.00        29.60
Yr00                 0.00       0.00         0.00 

この例では、1999年の減価償却費は、当期資産額が残存価額を下回らないように調整されています。当期資産額は、期首資産価額から減価償却累計額を減算することによって計算されます。たとえば、1998年では、減価償却累計額は$870.40($400.00+$240.00+$144.00+$86.40=$870.40)となります。したがって、1998年の当期資産額は、$129.60($1,000.00-$870.40=$129.60)となります。この例では、通常、当期資産額と2の乗算結果を5で除算することによって減価償却費を計算します。ここで、$129.60と2の乗算結果を5で除算すると、求められる減価償却費は$51.84となります。この減価償却費を1998年の当期資産額である$129.60から減算すると、1999年の当期資産額は$77.76となり、残存価額である$100を下回ります。当期資産額が残存価額を下回らないように、DEPRDECLファンクションでは、当期資産額($129.60)から残存価額($100.00)を減算して減価償却費($29.60)を計算します。

例7-67 複数の期間に取得した資産のDEPRDECLによる減価償却費の計算

DEPRDECLを使用すると、一連の資産の減価償却費も計算できます。

次のレポートに示す変数assetsおよびsalvageの1997年の値を変更するとします。

YEAR             ASSETS    SALVAGE
-------------- ---------- ----------
Yr95             1,000.00     100.00
Yr96                 0.00       0.00
Yr97               500.00      50.00
Yr98                 0.00       0.00
Yr99                 0.00       0.00
Yr00                 0.00       0.00
Yr01                 0.00       0.00
Yr02                 0.00       0.00

ここで、assetssalvageの1995年と1997年の値には、ゼロ以外の値が格納されています

次の文を実行すると、資産額と残存価額がレポートされ、DEPRDECLを使用して各年の減価償却費が計算されます。ここでは、資産の有効期間として5年、償却係数として2(2倍の定率)が指定されています。

REPORT assets SALVAGE W 12 HEADING 'Depreciation'  - 
   DEPRDECL(assets salvage 5 2 FULL year)

この文によって生成される出力は、次のとおりです。(1997年に取得した資産があるため、この年の減価償却費は増加しています。)

YEAR             ASSETS    SALVAGE   Depreciation 
-------------- ---------- ---------- ------------
Yr95             1,000.00     100.00       400.00
Yr96                 0.00       0.00       240.00
Yr97               500.00      50.00       344.00
Yr98                 0.00       0.00       206.00
Yr99                 0.00       0.00       101.00
Yr00                 0.00       0.00        43.20
Yr01                 0.00       0.00        14.80
Yr02                 0.00       0.00         0.00

DEPRDECLSW

DEPRDECLSWファンクションは、一連の資産の減価償却費を計算するファンクションです。DEPRDECLSWは、指定した資産の耐用年数に基づいて資産を定率法の変動で減価償却します(「DEPRDECLSWで使用される計算方法」を参照)。DEPRDECLSWでは、最初は定率法が使用され、時系列における次のいずれかの時点で定額法に切り替わります。

  • 残りの期間全体にわたる減価償却を定額法にした場合、同じ期間の減価償却を定率法にした場合より減価償却額が上回る最初の期間(デフォルト)

  • switch-period引数で指定した期間

このバリエーションの定率法は、最も一般的に使用されている形式の減価償却の定率法です。

戻り値

DECIMAL。start-expのすべてのディメンションによってディメンション化されます。

構文

DEPRDECLSW(start-exp end-exp n [STATUS]

     [decline-factor [{FULL|HALF| portion-exp [switch-period [time-dimension]]]])

パラメータ

start-exp

資産の期首価額が格納された数式。start-exp式は、時間ディメンションによってディメンション化する必要があります。start-expには、時間ディメンションの値ごとに、その期間に取得した資産の初期価額が格納されます。start-expには、時間ディメンションに加えて、非時間ディメンションもあります。

end-exp

資産の期末価額が格納された数式。end-exp式は、start-expと同じディメンションでディメンション化する必要があります。end-expには、時間ディメンションの値ごとに、その期間に取得した資産の最終(または残存)価額が格納されます。start-expのそれぞれの値には、これに対応するend-exp値が必要です。たとえば、1990年に取得した資産の残存価額が$200であった場合、1990年のend-expの値は$200になります。

n

資産の減価償却期間の期間数が格納されるINTEGER式。n式には、start-expの任意の非時間ディメンションを格納できますが、時間ディメンションは格納できません。

STATUS

DEPRDECLSWが減価償却費を計算する際に、現行のステータス・リスト(つまり現在ステータスにあり、現行のステータスの順序に並んでいるディメンション値のみ)を使用することを指定します。デフォルトでは、デフォルトのステータス・リストが使用されます。

decline-factor

減価償却費の計算に使用するために定率を指定する数式。decline-factor式には、start-expの任意の非時間ディメンションを格納できますが、時間ディメンションは格納できません。

係数が2の場合は、定率が2倍であることを示します。デフォルトは2です。

FULL

(デフォルト)ある期間の減価償却費全額を、資産の取得期間に計上することを指定します。一連の全資産に対する全額を計上します。この引数はオプションですが、この引数を指定するときは、先行するオプション引数も指定する必要があります。

HALF

ある期間の減価償却費の半額を、資産の取得期間に計上することを指定します。一連の全資産に対する半額を計上します。HALFは、ある期間の下半期に資産を取得した場合などに使用します。取得した期間に計上される減価償却費の一部としてHALFを指定すると、各期間にHALF係数が適用されます。各期間の全減価償却の半分は次の期間にロールされ、後半の減価償却は期間n + 1に実施されます。この引数はオプションですが、この引数を指定するときは、先行するオプション引数も指定する必要があります。

portion-exp

一定の資産については全額を計上し、それ以外の資産については半額を計上する場合は、start-expの任意の非時間ディメンションによってディメンション化されるportion-exp式を指定できます。portion-exp式は、FULLまたはHALFの値を指定したテキスト式にする必要があります。この引数はオプションですが、この引数を指定するときは、先行するオプション引数も指定する必要があります。

switch-period

計算を定額法に切り替える期間を示すINTEGER式。この引数はオプションですが、この引数を指定するときは、先行するオプション引数も指定する必要があります。

一般的な会計慣行では、残りの期間全体にわたる減価償却を定額法にした場合、同じ期間の減価償却を定率法にした場合より減価償却額が上回る最初の期間中に定額法に切り替えます。この動作は、switch-period引数を指定しないことで指定できます。

switch-period引数を指定しなかったとき、あるいはこの引数の値がNAまたは0のときは、残りの期間全体にわたる減価償却を定額法にした場合、同じ期間の減価償却を定率法にした場合より減価償却額が上回る最初の期間中に、計算方法が定率法から定額法に切り替わります。この場合、DEPRDECLSWファンクションの動作はDEPRDECLファンクションの動作と変わりません。

様々な資産に対して異なる切替え期間を指定する場合は、start-expの任意の非時間ディメンションでディメンション化される式を指定できます。

time-dimension

start-expおよびend-expがディメンション化される時間ディメンションの名前。時間ディメンションが、DAY、WEEK、MONTH、QUARTER、YEAR型のいずれかである場合、time-dimension引数はオプションです。この引数を指定するときは、先行するオプション引数も指定する必要があります。

使用上の注意

DEPRDECLSWで使用される計算方法

DEPRDECLSWでは、償却が全額は完了していない一連の全資産について、特定の期間の減価償却費が、その期間の減価償却費の合計として計算されます。ある資産の最初の減価償却期間とは、その資産を取得した期間を指します。

DEPRDECLSWでは、定率法による減価償却の計算対象となる期間ごとに、当期資産額にdecline-factorを乗算し、その結果を資産の有効期間の数で除算することによって減価償却費が計算されます。DEPRDECLSWが定額法に切り替わると、(前期からの)減価償却費が資産価額から減算され、得られた金額が資産の有効期間の残りの期間数で除算されます。ただし、特定の期間について減価償却費を計算した結果、当期資産額が期末価額を下回る場合、減価償却費は調整されます。この場合、減価償却費は当期資産額から期末価額を減算した値として計算されます。

DEPRDECLSWで使用されている定額法は、DEPRSLで使用されている従来の定額法とは異なります。減価償却の定率法では、減価償却の他の方法とは異なり、算出された減価償却費が減価償却可能な残りの金額を上回る期間まで、資産の残存価額が無視されます。DEPRDECLSWでは、定率法から定額法に切り替わった後でも、この方法で残存価額が無視されます。たとえば、資産の期首価額が16,000で、5期間後の残存価額が1,000であるとします。定率法を使用した期間(ここでは最初の3期間)を通じた減価償却費の合計は11,544です。残りの期間について定額法で計算する場合、残りの総額(16,000-11,544=3,456)が計算の基礎になり、総額から残存価額を減算した値(2,456)にはなりません。したがって、最後の2期間の減価償却費は1,728になりますが、最後の1期間については残存価額が差し引かれるため、728になります。

想定外の調整法

ある資産に対して指定した期末価額が比較的高い場合は、減価償却の有効期間として指定した期間よりも短い期間内に全額が償却される場合があります。この場合、減価償却の指定した有効期間全体にわたってこの減価償却費を適用するには、decline-factorを小さくします。

DEPRDECLSWとNA値

start-expの値がNAで、これに対応するend-expの値がNAでない場合は、エラーが発生します。同様に、end-expの値がNAで、これに対応するstart-expの値がNAでない場合もエラーが発生します。

start-expの値とこれに対応するend-expの値がどちらもNAの場合、DEPRDECLSWの動作はNASKIPオプションの影響を受けます。NASKIPの設定がYES(デフォルト)の場合、DEPRDECLSWでは、減価償却費の計算時に値が0とみなされます。NASKIPの設定がNOの場合は、DEPRDECLSWからの戻り値は、影響するすべての期間に対してNAになります。

例7-68 単一期間に取得した資産の減価償却費の計算

この例では、DEPRDECLSWを使用して、単一の期間に取得した資産の減価償却費を計算する方法を示します。切替え期間を指定しなかった場合のDEPRDECLSWの動作も示します。

次の文を実行すると、assetsおよびsalvageという2つの変数が作成されます。

DEFINE assets DECIMAL <year>
DEFINE salvage DECIMAL <year>

変数assetsおよびsalvageに対して、次の値を代入します。

YEAR        ASSETS     SALVAGE
------- ---------- -----------
Yr95      1,000.00      100.00
Yr96          0.00        0.00
Yr97          0.00        0.00
Yr98          0.00        0.00
Yr99          0.00        0.00
Yr00          0.00        0.00

変数assetsには、1995年に取得した資産の期首価額が格納されています。salvageには、1995年に取得した資産の期末価額が格納されています。

次の文を実行すると、資産額と残存価額がレポートされ、DEPRDECLSWを使用して各年の減価償却費が計算されますが、ここでは、資産の有効期間として5年、償却係数として2(2倍の定率)が指定されています。この文では、switch-period引数は指定されていません。このため、DEPRDECLSWではswitch-periodのデフォルトが使用され、この結果、残りの期間全体にわたる減価償却を定額法にした場合、同じ期間の減価償却を定率法にした場合より減価償却額が上回る最初の期間中に、計算方法が定率法から定額法に切り替わります。

REPORT assets salvage W 12 HEADING 'Depreciation' -
    DEPRDECLSW (assets salvage 5 2 FULL)

この文によって生成されるレポートは、次のとおりです。

YEAR        ASSETS     SALVAGE   Depreciation
------- ---------- ----------- --------------
Yr95      1,000.00      100.00      400.00
Yr96          0.00        0.00      240.00
Yr97          0.00        0.00      144.00
Yr98          0.00        0.00      108.00
Yr99          0.00        0.00        8.00
Yr00          0.00        0.00        0.00

例7-69 切替え期間の指定

あるいは、切替えが実行される期間を指定することもできます。

3年目(Yr97)に減価償却を定率法から定額法に切り替えるには、次の文に示すように、切替え期間として3を指定します。

REPORT assets salvage W 12 HEADING 'DEPRECIATION' -
    DEPRDECLSW (assets salvage 5 2 FULL 3 year)

この文によって生成されるレポートは、次のとおりです。

YEAR        ASSETS     SALVAGE   Depreciation
-------- ---------- ----------- --------------
Yr95      1,000.00      100.00      400.00
Yr96          0.00        0.00      240.00
Yr97          0.00        0.00      120.00
Yr98          0.00        0.00      120.00
Yr99          0.00        0.00       20.00
Yr00          0.00        0.00        0.00

例7-70 複数の期間に取得した資産の減価償却費の計算

DEPRDECLSWを使用すると、一連の資産の減価償却費を計算できます。次のレポートに示す変数assetsおよびsalvageの1997年の値を変更するとします。

YEAR             ASSETS    SALVAGE
-------------- ---------- ----------
Yr95             1,000.00     100.00
Yr96                 0.00       0.00
Yr97               500.00      50.00
Yr98                 0.00       0.00
Yr99                 0.00       0.00
Yr00                 0.00       0.00
Yr01                 0.00       0.00
Yr02                 0.00       0.00

ここで、assetssalvageの1995年と1997年の値には、ゼロ以外の値が格納されています。

次の文を実行すると、資産価額と残存価額の他に、資産の減価償却費もレポートされます。DEPRDECLSWをコールして減価償却費を計算する場合は、資産の有効期間内の5期間(この場合は年)、償却係数として2(2倍の定率)が指定されます。この文では、switch-period引数は指定されていません。このため、DEPRDECLSWではswitch-periodのデフォルトが使用され、この結果、残りの期間全体にわたる減価償却を定額法にした場合、同じ期間の減価償却を定率法にした場合より減価償却額が上回る最初の期間中に、計算方法が定率法から定額法に切り替わります。

REPORT assets salvage W 12 HEADING 'Depreciation'  -
          DEPRDECLSW(assets salvage 5 2 FULL)

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

YEAR             ASSETS    SALVAGE   Depreciation
-------------- ---------- ---------- ------------
Yr95             1,000.00     100. 00       400.00
Yr96                 0.00       0.00        240.00
Yr97               500.00      50.00        344.00
Yr98                 0.00       0.00        228.00
Yr99                 0.00       0.00         80.00
Yr00                 0.00       0.00         54.00
Yr01                 0.00       0.00          4.00
Yr02                 0.00       0.00          0.00

1997年に取得した資産があるため、この年の減価償却費は増加しています。

DEPRSL

DEPRSLファンクションは、一連の資産の減価償却費を計算するファンクションです。DEPRSLは、指定した資産の耐用年数に基づいて資産を定額法で減価償却します(「DEPRSLの計算方法」を参照)。期首価額と期末価額は、各期間に取得した資産に対して指定します。

戻り値

DECIMAL。start-expのすべてのディメンションによってディメンション化されます。

構文

DEPRSL(start-exp end-exp n [STATUS] [{FULL|HALF| portion-exp [time-dimension]])

パラメータ

start-exp

資産の期首価額が格納された数式。start-exp式は、時間ディメンションによってディメンション化する必要があります。start-expには、時間ディメンションの値ごとに、その期間に取得した資産の初期価額が格納されます。start-expには、時間ディメンションに加えて、非時間ディメンションもあります。

end-exp

資産の期末価額が格納された数式。end-exp式は、start-expと同じディメンションでディメンション化する必要があります。end-expには、時間ディメンションの値ごとに、その期間に取得した資産の最終(または残存)価額が格納されます。start-expのそれぞれの値には、これに対応するend-exp値が必要です。たとえば、1995年に取得した資産の残存価額が$200であった場合、1995年のend-expの値は$200になります。

n

資産の減価償却の有効期間が格納されたINTEGER式。n式には、start-expの任意の非時間ディメンションを格納できますが、時間ディメンションは格納できません。

STATUS

DEPRSLが減価償却費を計算する際に、現行のステータス・リスト(つまり現在ステータスにあり、現行のステータスの順序に並んでいるディメンション値のみ)を使用することを指定します。デフォルトでは、デフォルトのステータス・リストが使用されます。

FULL

(デフォルト)ある期間の減価償却費全額を、資産の取得期間に計上することを指定します。一連の全資産に対する全額を計上します。

HALF

ある期間の減価償却費の半額を、資産の取得期間に計上することを指定します。一連の全資産に対する半額を計上します。取得した期間に計上される減価償却費の一部としてHALFを指定すると、各期間にHALF係数が適用されます。各期間の減価償却費総額の半分は次の期間にロールされ、後半の減価償却は期間n + 1に実施されます。HALFは、ある期間の下半期に資産を取得した場合などに使用します。

portion-exp

一定の資産については全額を計上し、それ以外の資産については半額を計上する場合は、start-expの任意の非時間ディメンションによってディメンション化されるportion-exp式を指定できます。portion-exp式は、FULLまたはHALFの値を指定したテキスト式にする必要があります。

time-dimension

start-expおよびend-expがディメンション化される時間ディメンションの名前。時間ディメンションが、DAY、WEEK、MONTH、QUARTER、YEAR型のいずれかである場合、time-dimension引数はオプションです。

使用上の注意

DEPRSLの計算方法

DEPRSLでは、償却が全額は完了していない一連の全資産について、特定の期間の減価償却費が、その期間の減価償却費の合計として計算されます。ある資産の最初の減価償却期間とは、その資産を取得した期間を指します。

DEPRSLとNA値

start-expの値がNAで、これに対応するend-expの値がNAでない場合は、エラーが発生します。同様に、end-expの値がNAで、これに対応するstart-expの値がNAでない場合もエラーが発生します。

start-expの値とこれに対応するend-expの値がどちらもNAの場合、DEPRSLの動作はNASKIPオプションの影響を受けます。NASKIPの設定がYES(デフォルト)の場合、DEPRSLでは、減価償却費の計算時に値が0とみなされます。NASKIPの設定がNOの場合は、DEPRSLからの戻り値は、影響するすべての期間に対してNAになります。

例7-71 単一期間に取得した資産のDEPRSLによる減価償却費の計算

この例では、DEPRSLを使用して、単一の期間に取得した資産の減価償却費を計算する方法を示します。

次の文を実行すると、assetsおよびsalvageという2つの変数が作成されます。

DEFINE assets DECIMAL <year>
DEFINE salvage DECIMAL <year>

変数assetsおよびsalvageに対して、次の値を代入します。

YEAR               ASSETS    SALVAGE
-------------- ---------- ----------
Yr95             1,000.00     100.00
Yr96                 0.00       0.00
Yr97                 0.00       0.00
Yr98                 0.00       0.00
Yr99                 0.00       0.00
Yr00                 0.00       0.00

変数assetsには、1995年に取得した資産の期首価額が格納されています。変数salvageには、1995年に取得した資産の期末価額が格納されています。

次の文を実行すると、資産額と残存価額がレポートされ、DEPRSLによって各年の減価償却費が計算されます。ここでは、資産の有効期間として5年が指定されています。

REPORT assets salvage W 12 HEADING 'Depreciation' -
   DEPRSL(assets salvage 5 FULL year)

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

YEAR               ASSETS    SALVAGE Depreciation
-------------- ---------- ---------- ------------
Yr95             1,000.00     100.00       180.00
Yr96                 0.00       0.00       180.00
Yr97                 0.00       0.00       180.00
Yr98                 0.00       0.00       180.00
Yr99                 0.00       0.00       180.00
Yr00                 0.00       0.00         0.00

例7-72 複数の期間に取得した資産のDEPRSLによる減価償却費の計算

DEPRSLを使用すると、一連の資産の減価償却費も計算できます。次のレポートに示す変数assetsおよびsalvageの1997年の値を変更するとします。

YEAR               ASSETS    SALVAGE
-------------- ---------- ----------
Yr95             1,000.00     100.00
Yr96                 0.00       0.00
Yr97               500.00      50.00
Yr98                 0.00       0.00
Yr99                 0.00       0.00
Yr00                 0.00       0.00
Yr01                 0.00       0.00
Yr02                 0.00       0.00

ここで、assetssalvageの1995年と1997年の値には、ゼロ以外の値が格納されています。

次の文を実行すると、資産価額と残存価額の他に、資産の減価償却費もレポートされます。DEPRSLをコールして減価償却費を計算する場合は、資産の有効期間として5期間(この場合は5年)が指定されています。

REPORT assets salvage W 12 HEADING 'Depreciation' -
    DEPRSL(assets salvage 5 FULL year)

この文によって生成されるレポートは、次のとおりです。

YEAR              ASSETS        SALVAGE         Depreciation
-------------- ---------- ------------- --------------------
Yr95             1,000.00       100.00                180.00
Yr96                 0.00         0.00                180.00
Yr97               500.00        50.00                270.00
Yr98                 0.00         0.00                270.00
Yr99                 0.00         0.00                270.00
Yr00                 0.00         0.00                 90.00
Yr01                 0.00         0.00                 90.00
Yr02                 0.00         0.00                  0.00

1995年に取得した資産は、1999年に全額が償却されました。したがって、2000年と2001年にDEPRSLによって返される数字は、1997年にのみ取得した資産の減価償却費を含む数字となります。

DEPRSOYD

DEPRSOYDファンクションは、一連の資産の減価償却費を計算するファンクションです。DEPRSOYDは、指定した資産の耐用年数に基づいて資産を級数法で減価償却します(「DEPRSOYDで使用される計算方法」を参照)。期首価額と期末価額は、各期間に取得した資産に対して指定します。

戻り値

DECIMAL。start-expのすべてのディメンションによってディメンション化されます。

構文

DEPRSOYD(start-exp end-exp n [STATUS] [{FULL|HALF| portion-exp} [time-dimension]])

パラメータ

start-exp

資産の期首価額が格納された数式。start-exp式は、時間ディメンションによってディメンション化する必要があります。start-expには、時間ディメンションの値ごとに、その期間に取得した資産の初期価額が格納されます。start-expには、時間ディメンションに加えて、非時間ディメンションもあります。

end-exp

資産の期末価額が格納された数式。end-exp式は、start-expと同じディメンションでディメンション化する必要があります。end-expには、時間ディメンションの値ごとに、その期間に取得した資産の最終(または残存)価額が格納されます。start-expのそれぞれの値には、これに対応するend-exp値が必要です。たとえば、1995年に取得した資産の残存価額が$200であった場合、1995年のend-expの値は$200になります。

n

資産の減価償却の有効期間が格納されたINTEGER式。n式には、start-expの任意の非時間ディメンションを格納できますが、時間ディメンションは格納できません。

STATUS

DEPRSOYDが減価償却費を計算する際に、現行のステータス・リスト(つまり現在ステータスにあり、現行のステータスの順序に並んでいるディメンション値のみ)を使用することを指定します。デフォルトでは、デフォルトのステータス・リストが使用されます。

FULL

(デフォルト)ある期間の減価償却費全額を、資産の取得期間に計上することを指定します。一連の全資産に対する全額を計上します。

HALF

ある期間の減価償却費の半額を、資産の取得期間に計上することを指定します。一連の全資産に対する半額を計上します。取得した期間に計上される減価償却費の一部としてHALFを指定すると、各期間にHALF係数が適用されます。各期間の減価償却費総額の半分は次の期間にロールされ、後半の減価償却費は期間n + 1に償却されます。HALFは、ある期間の下半期に資産を取得した場合などに使用します。

portion-exp

一定の資産については全額を計上し、それ以外の資産については半額を計上する場合は、start-expの任意の非時間ディメンションによってディメンション化されるportion-exp式を指定できます。portion-exp式は、FULLまたはHALFの値を指定したテキスト式にする必要があります。

time-dimension

start-expend-expがディメンション化される時間ディメンションの名前。時間ディメンションがDAY、WEEK、MONTH、QUARTER、YEAR型のいずれかである場合、time-dimension引数はオプションです。

使用上の注意

DEPRSOYDで使用される計算方法

DEPRSOYDでは、償却が全額は完了していない一連の全資産について、特定の期間の減価償却費が、その期間の減価償却費の合計として計算されます。ある資産の最初の減価償却期間とは、その資産を取得した期間を指します。

DEPRSOYDでは、資産の有効期間中の1期間ごとに、減価償却総額のうち特定の減価額を基準にすることによって減価償却費が計算されます。減価額とは、減価額と未償却期間の数とを乗算することにより、資産の有効期間全体にわたる減価償却費を全額完了できる金額のことです。

たとえば、資産の有効期間が5年の場合、減価額xは、DEPRSOYDによって次のように計算されます。

5x + 4x + 3x + 2x + 1x = total depreciation 

この場合、減価額は減価償却費総額の1/15になります。初期の資産額が$1,000で、その残存価額が$100の場合、減価償却の総額は$900.00、xは$60($900/15)となります。最初の期間では、減価償却費は$300($60 x 5)となります。2番目の期間では、減価償却費は$240($60 x 4)となります(以降同様)。

DEPRSOYDとNA値

start-expの値がNAで、これに対応するend-expの値がNAでない場合は、エラーが発生します。同様に、end-expの値がNAで、これに対応するstart-expの値がNAでない場合もエラーが発生します。

start-expの値とこれに対応するend-expの値がどちらもNAの場合、DEPRSOYDの動作はNASKIPオプションの影響を受けます。NASKIPの設定がYES(デフォルト)の場合、DEPRSOYDでは、減価償却費の計算時に値が0とみなされます。NASKIPの設定がNOの場合は、DEPRSOYDからの戻り値は、影響するすべての期間に対してNAになります。

例7-73 単一期間に取得した資産のDEPRSOYDによる減価償却費の計算

この例では、DEPRSOYDを使用して、単一の期間に取得した資産の減価償却費を計算する方法を示します。

次の文を実行すると、assetsおよびsalvageという2つの変数が作成されます。

DEFINE assets DECIMAL <year>
DEFINE salvage DECIMAL <year>

変数assetsおよびsalvageに対して、次の値を代入します。

YEAR               ASSETS    SALVAGE
-------------- ---------- ----------
Yr95             1,000.00     100.00
Yr96                 0.00       0.00
Yr97                 0.00       0.00
Yr98                 0.00       0.00
Yr99                 0.00       0.00
Yr00                 0.00       0.00

変数assetsには、1995年に取得した資産の期首価額が格納されています。変数salvageには、1995年に取得した資産の期末価額が格納されています。

次の文を実行すると、assetssalvageの値がレポートされ、DEPRSOYDによって各年の減価償却費が計算されます。ここでは、資産の有効期間として5年が指定されています。

REPORT assets salvage W 12 HEADING 'Depreciation' -
     DEPRSOYD(assets salvage 5 FULL year)

この文によって生成されるレポートは、次のとおりです。

YEAR               ASSETS    SALVAGE Depreciation
-------------- ---------- ---------- ------------
Yr95             1,000.00     100.00       380.00
Yr96                 0.00       0.00       240.00
Yr97                 0.00       0.00       180.00
Yr98                 0.00       0.00       120.00
Yr99                 0.00       0.00        60.00
Yr00                 0.00       0.00         0.00

例7-74 複数の期間に取得した資産のDEPRSOYDによる減価償却費の計算

DEPRSOYDを使用すると、一連の資産の減価償却費も計算できます。次のレポートに示す変数assetsおよびsalvageの1997年の値を変更するとします。

   YEAR             ASSETS    SALVAGE
   -------------- ---------- ----------
   Yr95             1,000.00     100.00
   Yr96                 0.00       0.00
   Yr97               500.00      50.00
   Yr98                 0.00       0.00
   Yr99                 0.00       0.00
   Yr00                 0.00       0.00
   Yr01                 0.00       0.00
   Yr02                 0.00       0.00

ここで、assetssalvageの1995年と1997年の値には、ゼロ以外の値が格納されています。

次の文を実行すると、資産価額と残存価額の他に、資産の減価償却費もレポートされます。DEPRSOYDをコールして減価償却費を計算する場合は、資産の有効期間として5期間(この場合は5年)が指定されています。

REPORT assets salvage W 12 HEADING 'Depreciation' -
     DEPRSOYD(assets salvage 5 FULL year)

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

   YEAR             ASSETS    SALVAGE   Depreciation
   -------------- ---------- ---------- ------------
   Yr95             1,000.00     100.00       300.00
   Yr96                 0.00       0.00       240.00
   Yr97               500.00      50.00       330.00
   Yr98                 0.00       0.00       240.00
   Yr99                 0.00       0.00       160.00
   Yr00                 0.00       0.00        60.00
   Yr01                 0.00       0.00        30.00
   Yr02                 0.00       0.00         0.00

2番目の資産があるために、減価償却費は1997年に増加しています。減価償却費は、最初の資産の$180.00($60 x 3)と2番目の資産の$150.00($30 x 5)の合計になります。

ENDDATE

ENDDATEファンクションは、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションでディメンション化された式に対し、式が非NA値を持つディメンション・ステータスの最後の期間の最終日を返します。たとえば、式がMONTH型のディメンションでディメンション化され、式が非NA値を持つ最後のディメンション値がDEC98である場合、ENDDATEを実行すると、日付December 31, 1998が返されます。

戻り値

日付のみまたはテキスト

構文

ENDDATE(expression)

パラメータ

expression

式(expression)には、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションを1つのみ含める必要があります。式のすべての値がNA値の場合、ENDDATEファンクションの戻り値はNAになります。

例7-75 最終日の検索

次の文を実行すると、units変数のディメンションの値が制限され、次に非NA値と関連付けられている最終日が現行の出力ファイルに送られます。

LIMIT month TO ALL
LIMIT product TO 'Tents'
LIMIT district TO 'Chicago'
SHOW ENDDATE(units)

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

31DEC96

ENDOF

ENDOFファンクションは、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションでディメンション化された式に対し、そのディメンションの現行のステータス・リストでの先頭の期間の最終日を返します。

ENDOFが特に有用なのは、ディメンションにデフォルトとは異なるフェーズがある場合や、期間が数週間または数年間で構成されている場合です。たとえば、ディメンションの期間が4週間である場合、ENDOFファンクションを使用すると、特定の4週間という期間の最終日を特定できます。

戻り値

日付のみまたはテキスト

構文

ENDOF(dwmqy-dimension)

パラメータ

dwmqy-dimension

DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンション。この型のディメンション間に独自のリレーションを明示的に定義している場合、ここでその時間リレーションの名前を使用できます。

例7-76 会計年度最終日の検索

次の文を実行すると、年のディメンション(7月に始まる税制年度用のtaxyearというディメンション)が定義され、1998年から2000年までの税制年度のディメンション値が追加されて、各税制年度の最終日を示すレポートが生成されます。

DEFINE taxyear DIMENSION YEAR BEGINNING july
VNF 'TY<ffb>'
MAINTAIN taxyear ADD '01july98' '01july00'
REPORT W 14 ENDOF(taxyear)

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

TAXYEAR        ENDOF(TAXYEAR)
-------------- --------------
TY98           30JUN99
TY99           30JUN00
TY00           30JUN01

EVERY

EVERYファンクションは、ブール式のすべての値がTRUEの場合にYESを返し、ブール式のいずれかの値がFALSEの場合にNOを返すファンクションです。

戻り値

BOOLEAN

構文

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

パラメータ

boolean-expression

評価の対象となる値を持つブール式。

CACHE

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

dimension

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

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


ヒント:

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

使用上の注意

EVERYでのNASKIPの影響

EVERYはNASKIPオプションの影響を受けます。NASKIPをYES(デフォルト)に設定すると、EVERYでは、式のすべての非NATRUEの場合、NA値は無視されてYESが返され、TRUEでない値がある場合は、NOが返されます。NASKIPをNOに設定すると、EVERYでは、式の値のいずれかがNA値の場合、NA値が返されます。式のすべての値がNAの場合、NASKIPの設定にかかわらず、EVERYはNAを返します。

例7-77 すべての値がTRUEかどうかの調査(地区別)

EVERYファンクションを使用して、各地区のスポーツウェアの販売実績が毎月$50,000を超えたかどうかを調査できます。地区でディメンション化された結果を得るためには、EVERYの2番目の引数としてdistrictを指定します。

LIMIT product TO 'Sportswear'
REPORT HEADING 'Top Sales' EVERY(sales GT 50000, district)

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

DISTRICT       Top Sales
-------------- ----------
Boston                 No
Atlanta               Yes
Chicago               Yes
Dallas                Yes
Denver                Yes
Seattle                NO

例7-78 すべての値がTRUEかどうかの調査(地域別)

すべての地区のスポーツウェア販売実績が毎月$50,000を超える地域を調査する必要があるとします。regionディメンションはdistrictディメンションに関連付けられているため、EVERYファンクションの結果のディメンションとして、districtのかわりにregionを指定できます。

REPORT HEADING 'Top Sales' EVERY(sales GT 50000, region)

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

REGION         Top Sales
-------------- ----------
East                   No
Central               Yes
West                   NO

EXISTS

EXISTSファンクションは、アタッチされたワークスペース内でオブジェクトが定義されているかどうかを判別するファンクションです。EXISTSファンクションは、オブジェクトを使用する前にその定義が存在するかどうかをプログラムの内部で調べるときに役立ちます。

戻り値

BOOLEAN

構文

EXISTS(name-expression)

パラメータ

name-expression

調べる名前を表すテキスト式。

使用上の注意

複数の名前の指定

name-expressionに複数のオブジェクト名を含めると、name-expressionで指定したすべてのオブジェクトがアタッチされたワークスペースに存在する場合でも、EXISTSからはNOが返されます。

例7-79 EXISTSの使用方法

この例は、変数actualがいずれかのアタッチされたワークスペース内で定義されているかどうかを調べます。次の文

SHOW EXISTS('actual')

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

YES

EXP

EXPファンクションは、en乗(e2.71828183...に等しい)を返すファンクションです。

戻り値

NUMBER

構文

EXP (n)

パラメータ

n

eの累乗。

例7-80 式の累乗

次の例では、eの4乗が返されます。

SHOW EXP(4) 

54.59815 

EVERSION

EVERSIONファンクションは、Oracle OLAPの内部ビルド番号を表すテキスト値を返すファンクションです。

戻り値

TEXT

構文

EVERSION

使用上の注意

EVERSIONとメジャー・リリース

EVERSIONファンクションの出力に示されるビルド番号は、Oracle Databaseのリリース番号ではありません。EVERSIONの値がデータベースのメジャー・リリースに伴って変わることはありません

例7-81 リリース番号の取得

次の文を実行すると、Oracle OLAPのビルド番号を示すテキスト出力が生成されます。

SHOW EVERSION

この文によって生成される出力は次のようになります。

Oracle OLAP Build 80020

EXTBYTES

EXTBYTESファンクションは、テキスト式の一部を抽出します。

戻り値

TEXT

構文

EXTBYTES(text-expression [start [length]])

パラメータ

text-expression

一部が抽出されるTEXT式。text-expressionが複数行のTEXT値である場合、改行はEXTBYTESの戻り値でも維持されます。

start

抽出を開始するバイト位置を表すINTEGERtext-expressionの最初のバイト位置は1です。この引数を省略した場合、EXTBYTESは最初のバイトから開始します。

length

抽出するバイト数を表すINTEGERlengthを指定しない場合、またはtext-expressionstartから最後までのバイト数を超える場合、text-expressionstartから最後までが抽出されます。

例7-82 バイトによるテキスト文字の抽出

この例は、TEXT値'hellotherejoe'からテキストの一部を抽出する方法を示します。

  • 次の文

    SHOW EXTBYTES('hellotherejoe', 6, 5)
    

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

    there
    
  • 次の文

    SHOW EXTBYTES('hellotherejoe', 11)
    

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

    joe 
    

EXTCHARS

EXTCHARSファンクションは、テキスト式の一部を抽出します。


ヒント:

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

戻り値

TEXTまたはNTEXT

構文

EXTCHARS(text-expression [start [length]])

パラメータ

text-expression

一部が抽出されるTEXTまたはNTEXT式。text-expressionが複数行のテキスト値である場合、改行はEXTCHARSの戻り値でも維持されます。

start

抽出を開始する文字位置を表すINTEGERtext-expressionの最初の文字位置は1です。この引数を省略した場合、EXTCHARSは最初の文字から開始します。

length

抽出する文字数を表すINTEGERlengthを指定しない場合、またはtext-expressionstartから最後までの文字数を超える場合、text-expressionstartから最後までが抽出されます。

例7-83 テキスト文字の抽出

この例は、TEXT値'hellotherejoe'からテキストの一部を抽出する方法を示します。

  • 次の文

    SHOW EXTCHARS('hellotherejoe', 6, 5)
    

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

    there
    
  • 次の文

    SHOW EXTCHARS('hellotherejoe', 11)
    

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

    joe 
    

EXTCOLS

EXTCOLSファンクションは、複数行のテキスト値の各行から指定した列を抽出します。このファンクションは、抽出された列のみを含む複数行のテキスト値を返します。列は、複数行のテキスト値の各行における文字位置を示します。各行の最初の文字は列1であり、2番目の文字は列2です(以降同様)。

戻り値

TEXTまたはNTEXT

空の行がある場合でも、EXTCOLSは常にtext-expressionと同じ行数のテキスト値を返します。

構文

EXTCOLS(text-expression [start [numcols]])

パラメータ

text-expression

指定した列の抽出元のTEXTまたはNTEXT式。text-expressionが複数行のテキスト値である場合、その各行から指定した列の文字が抽出されます。

start

抽出を開始する列位置を表すINTEGER(1から32767)。text-expressionの各行における最初の文字の列位置は1です。text expressionの特定の行にある最後の文字よりも右側にくる開始列を指定した場合、戻り値の対応する行は空です。

numcols

抽出する列数を表すINTEGERnumcolsを指定しない場合、EXTCOLSは各行の最初の列から最後までのすべての文字を抽出します。text expressionの特定の行における開始位置に続く文字数を超える長さを指定した場合、戻り値の対応する行には存在する文字のみが含まれます。EXTCOLSは、欠落した列を埋めるための空白をその行の最後に返しません。

例7-84 テキスト列の抽出

この例では、citylistの各行から2番目の列から始まる4列を抽出します。

DEFINE citylist VARIABLE TEXT
citylist = 'Boston\nHouston\nChicago'
  • 次の文

    SHOW citylist
    

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

    Boston
    Houston
    Chicago
    
  • 次の文

    SHOW EXTCOLS(citylist 2 4)
    

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

    osto
    oust
    hica 
    

EXTLINES

EXTLINESファンクションは、複数行のテキスト式から行を抽出します。

戻り値

TEXTまたはNTEXT

構文

EXTLINES(text-expression [start [numlines]])

パラメータ

text-expression

1行以上の行の値の抽出元である複数行のTEXTまたはNTEXT式。

start

抽出を開始する行番号を表すINTEGERtext-expressionの最初の行の位置は1です。この引数を省略した場合、EXTLINESは行1から開始します。

numlines

抽出する行数を表すINTEGERnumlinesを指定しない場合、またはtext-expressionstartから最後までの行数を超える数を指定した場合、text-expressionstartから最後までのすべての行がコピーされます。

例7-85 1つのテキスト行の抽出

この例は、mktglistという変数の複数行のテキスト値から2行目を抽出する方法を示します。mktglist変数の値は、次のとおりです。

Salespeople
Products
Services

次の文

SHOW EXTLINES(mktglist 2 1)

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

Products 

EXTRACT

EXTRACTファンクションは、日時値または期間値の式から、指定した日時の値を抽出して返します。このファンクションは、非常に大きな変数内の日時値を操作するときに利用すると便利です。

戻り値

戻り値は次のように場合によって異なります。

  • タイムゾーン値を持つ日時から抽出する場合は、UTC形式の値が返されます。

  • TIMEZONE_REGIONまたはTIMEZONE_ABBR(省略形)を抽出する場合は、適切なタイムゾーン名または省略形であるテキスト文字列が返されます。

  • その他の値を抽出する場合は、グレゴリオ暦の値が返されます。

  • 指定した値にあいまいさがある場合は、NAが返されます。

構文

EXTRACT(time |timezone_hour_or_nimute |timezone_regn_or_abbr FROM datetime_exp| interval_exp )

パラメータ

time

YEAR、MONTH、DAY、HOUR、MINUTEまたはSECONDのいずれかのキーワードを使用して、ファンクションによって返される時刻要素を指定します。

timezone_hour_or_minute

TIMEZONE_HOURまたはTIMEZONE_MINUTEのいずれかのキーワードを使用して、TIMESTAMP_TZ式の時間または分の部分が返されるように指定します。

timezone_regn_or_abbr

TIMEZONE_REGIONまたはTIMEZONE_ABBRのいずれかのキーワードを使用して、地域名またはその省略形のいずれかの文字列が返されるように指定します。

datetime_exp

DATETIMETIMESTAMPTIMESTAMP_TZまたはTIMESTAMP_LTZ式。これらの式の指定方法は、「日時式」を参照してください。

interval_exp

DSINTERVALまたはYMINTERVAL式。これらの式の指定方法は、「期間式」を参照してください。

使用上の注意

抽出する値は、適切なdatetime_expまたはinterval_expの値である必要があります。たとえば、DATETIME値からは、YEAR、MONTHおよびDAYのみを抽出できます。同様に、TIMESTAMP_TZデータ型からは、TIMEZONE_HOURおよびTIMEZONE_MINUTEのみを抽出できます。

例7-86 タイムスタンプからの時間の抽出

DEFINE mytimestamptz VARIABLE TIMESTAMP_TZ
REPORT mytimestamptz
 
MYTIMESTAMPTZ
------------------------------
  26-MAR-06 12.00.00 AM -04:00

SHOW EXTRACT (TIMEZONE_HOUR FROM mytimestamptz)
-4.00

FCOPEN

FCOPENファンクションは、予測コンテキストを作成してそのコンテキストへのハンドルを返します。

FCOPENファンクションは、「予測プログラム」に示すように他のOLAP DML文と組み合せて使用する必要があります。

戻り値

INTEGER

構文

FCOPEN(text-expression [prototype-handle])

パラメータ

text-expression

予測コンテキストの名前。

prototype-handle

FCOPENファンクションを使用して前に作成した異なる予測コンテキストへのハンドルであるINTEGER式。Oracle OLAPは、このパラメータで指定される予測コンテキストと同じオプションで新しい予測コンテキストを初期化します。(予測コンテキストの特性を指定するオプションの説明は、FCSETコマンドを参照してください。)

予測プログラムの例は、例9-119「予測プログラム」を参照してください。

FCQUERY

FCQUERYファンクションは、FCEXECコマンドの実行によって作成された予測の結果を問い合せます。

FCQUERYファンクションは、「予測プログラム」に示すように他のOLAP DML文と組み合せて使用する必要があります。

戻り値

戻り値は、このページの表に示すように、使用するオプションによって異なります。

構文

FCQUERY(HANDLELIST|handle-expression option -

     [TRIAL trial-num] [CYCLE cycle-num])

パラメータ

HANDLELIST

HANDLELISTキーワードを指定すると、FCQUERYファンクションは、現在開かれている予測コンテキストへのハンドルのリストである複数行のテキスト式を返します。

handle-expression

これから問い合せる予測コンテキスト、およびFCOPENファンクションを使用して前に開いた予測コンテキストへのハンドルであるINTEGER式。

option

取得する次のような特定の情報。

  • 予測全体に指定されているオプションに関する情報を取得する場合、TRIALキーワードは使用しません。この場合のoptionは、FCSETコマンドを使用して指定可能なオプション、および表7-7「予測全体に指定可能なオプション」に示すオプションです。

    表7-7 予測全体に指定可能なオプション

    キーワード 戻り値 説明

    HANDLEID

    TEXT

    FCOPENコマンドを使用して予測コンテキストが開かれたときに値が指定された場合の予測コンテキストの名前。または、そのときに名前が指定されなかった場合はNA

    TRIALSRUN

    INTEGER

    データを使用できる試行の数。または、試行が実行されていない場合はNA


  • 特定の試行に関する情報を取得する場合、TRIAL trial-num句を使用します。この場合のoptionは、表7-8「個別の試行に指定可能なオプション」に示すオプションです。

    表7-8 個別の試行に指定可能なオプション

    オプション 戻り値 説明

    ALLOCLAST

    BOOLEAN

    過調整の可能性を最後のサイクルの予測ではなく割当てによって削減するかどうかを示す。

    ALPHA

    DOUBLE

    予測の試行に対するアルファの値。アルファは、単純指数平滑法、二重指数平滑法およびHolt-Winters予測法に使用されるレベルまたはベースラインのパラメータ。

    BETA

    DOUBLE

    予測の試行に対するベータの値。ベータは傾向の予測を制御する傾向パラメータ。ベータは二重指数平滑法およびHolt-Winters予測法に使用される。

    COMPSMOOTH

    BOOLEAN

    中央値平滑データ系列に対して最適化を行うかどうかを示す。

    CYCDECAY

    DOUBLE

    予測の試行に対する周期減衰パラメータの値。周期減衰は、Oracle OLAPが線形回帰および非線形回帰を行う際にベースライン・アクティビティからのずれをどこまで考慮するかに関係する。

    GAMMA

    DOUBLE

    予測の試行に対するガンマの値。ガンマはHolt-Winters予測法に使用される季節パラメータ。

    HISTUSED

    INTEGER

    先行するすべてのNA値を省いた後で実際に使用される履歴期間の数。

    MAD

    DOUBLE

    予測の試行に対する平均絶対偏差(MAD)。

    MAPE

    DOUBLE

    予測の試行に対する平均誤差率(MAPE)。

    MAXFCFACTOR

    DECIMAL

    予測データの上限。

    METHOD

    TEXT

    予測の試行に対してOracle OLAPが使用した予測法。各種の方法の説明は、FCSETコマンドのMETHODオプションを参照。

    MINFCFACTOR

    DECIMAL

    予測データの下限。

    MPTDECAY

    DOUBLE

    予測の試行に対する移動周期的合計(MPT)系列の予測の解読の際に使用されたベース値の評価の減衰を調整したときにOracle OLAPが使用したパラメータの値。

    NCYCLES

    INTEGER

    FCSETのPERIODICITY引数を使用して指定されるサイクルの数。

    PERIODICITY

    INTEGER

    1つ以上のサイクルの期間における長さ。戻り値は、次のようにFCQUERYファンクションをコールする方法によって異なる。

    CYCLE引数を指定した場合、PERIODICITYは指定したサイクルの期間の数を返す。

    CYCLE引数を指定せず、FCSET ALLOCLASTがNOの場合、PERIODICITYはすべてのサイクル長の積を返す。

    CYCLE引数を指定せず、FCSET ALLOCLASTがYESの場合、PERIODICITYは、最後の(最小集計)サイクルの長さを省いたすべてのサイクル長の積を返す。

    RMSE

    DOUBLE

    予測の試行に対するルート平均2乗誤差(RMSE)。

    SMOOTHING

    BOOLEAN

    予測の試行に対してOracle OLAPがデータを平滑化したかどうかを示す。YESはデータが平滑化されたことを示し、NOはデータが平滑化されなかったことを示す。

    TRANSFORM

    TEXT

    予測の試行に対してOracle OLAPが使用したデータ・フィルタ。各種のフィルタの説明は、FCSETコマンドのTRANSFORMオプションを参照。

    TRENDHOLD

    DOUBLE

    予測の試行に対する傾向保持パラメータの値。傾向保持パラメータは、二重指数平滑法およびHolt-Winters予測法における傾向の信頼性を示す。


trial-num

情報を取得する試行の番号であるINTEGER式。

cycle-num

PERIODICITYオプションから情報を取得するサイクルを指定するINTEGER式(表7-8「個別の試行に指定可能なオプションを参照)。FCSETコマンドでPERIODICITY引数を使用して一連のサイクルを指定した場合、cycle-numの値は指定した一連のサイクルでの目的のサイクルの位置を示します。たとえば、FCSET PERIODICITY <52,7>を指定したとします。この場合、1のcycle-numは52を返し、2のcycle-numは7を返します。FCSETコマンドでPERIODICITY引数を使用して一連のサイクルを指定しなかった場合、この引数を指定する必要はありません。

使用上の注意

オプションの使用方法

予測全体に指定されているオプションに関する情報または特定の試行に関する情報を取得できます。

  • 予測全体に指定されているオプションに関する情報を取得する場合、TRIALキーワードは使用しません。この場合のoptionは、HANDLEID、TRIALSRUN、またはFCSETコマンドを使用して指定できるオプションです。

  • 特定の試行に関する情報を取得する場合、TRIAL trial-num句を使用します。この場合のoptionは、ALPHA、BETA、CYCDECAY、GAMMA、MAD、MAPE、METHOD、MPTDECAY、RMSE、SMOOTHING、TRANSFORMまたはTRENDHOLDです。

ディメンション化されたデータへのアクセス

FCEXECコマンドを実行するときに複数の時系列がステータスにある場合、TRIALSRUNおよびNTRIALのディメンション化されたデータも時系列式のディメンションによってディメンション化されます。Oracle OLAPはFCQUERYファンクションによって返される値をスカラー式として扱いますが、次の方法でそのディメンション化されたデータにアクセスできます。

  • FORループで、FCQUERYはFORディメンションの現行値に対するデータを返します。

  • QUALファンクションで、FCQUERYは修飾ディメンションの指定値に対するデータを返します。

  • その他のすべての場合で、FCQUERYは各ディメンションのステータスにある最初の値に対するデータを返します。

例7-87 予測の問合せ

例9-119「予測プログラム」に示すautofcstプログラムは、queryallという名前のプログラムをコールします。queryallプログラムは、次のコードを使用して予測の試行の特性を取得します。

DEFINE queryall PROGRAM
PROGRAM
VARIABLE numtrials INTEGER
VARIABLE loopindx INTEGER
numtrials = FCQUERY(hndl trialsrun)
row numtrials 'TRIALS'
loopindx = 1
WHILE loopindx LE numtrials
  DO
    ROW loopindx 'METHOD' FCQUERY(hndl method trial loopindx)
    ROW loopindx 'TRANSFORM' FCQUERY(hndl transform trial loopindx)
    ROW loopindx 'SMOOTHING' FCQUERY(hndl smoothing trial loopindx)
    ROW loopindx 'ALPHA' FCQUERY(hndl alpha trial loopindx)
    ROW loopindx 'BETA' FCQUERY(hndl beta trial loopindx)
    ROW loopindx 'GAMMA' FCQUERY(hndl gamma trial loopindx)
    ROW loopindx 'TRENDHOLD' FCQUERY(hndl trendhold trial loopindx)
    ROW loopindx 'CYCDECAY' FCQUERY(hndl cycdecay trial loopindx)
    row loopindx 'MPTDECAY' FCQUERY(hndl mptdecay trial loopindx)
    ROW loopindx 'MAD' FCQUERY(hndl mad trial loopindx)
    ROW loopindx 'MAPE' FCQUERY(hndl mape trial loopindx)
    ROW loopindx 'RMSE' FCQUERY(hndl rmse trial loopindx)
    loopindx = loopindx + 1
  DOEND
END

QUERYALLプログラムの出力から作成されたサンプル・レポートは、次のとおりです。

             3 TRIALS
             1 METHOD     HOLT/WINTERS
             1 TRANSFORM  TRNOSEA
             1 SMOOTHING          NO
             1 ALPHA             0.2
             1 BETA              0.3
             1 GAMMA             0.3
             1 TRENDHOLD         0.8
             1 CYCDECAY           -1
             1 MPTDECAY           -1
             1 MAD         324.97047
             1 MAPE       23.6192147
             1 RMSE        389.40202
             2 METHOD     HOLT/WINTERS
             2 TRANSFORM  TRNOSEA
             2 SMOOTHING          NO
             2 ALPHA             0.2
             2 BETA              0.3
             2 GAMMA             0.2
             2 TRENDHOLD         0.8
             2 CYCDECAY           -1
             2 MPTDECAY           -1
             2 MAD         324.97047
             2 MAPE       23.6192147
             2 RMSE        389.40202
             3 METHOD     HOLT/WINTERS
             3 TRANSFORM  TRNOSEA
             3 SMOOTHING          NO
             3 ALPHA             0.2
             3 BETA              0.3
             3 GAMMA             0.1
             3 TRENDHOLD         0.8
             3 CYCDECAY           -1
             3 MPTDECAY           -1
             3 MAD         324.97047
             3 MAPE       23.6192147
             3 RMSE        389.40202 

FILEERROR

FILEERRORファンクションは、データ読取り文FILEREADおよびFILEVIEWを使用した入力ファイルからのレコードの処理時に発生した最初のエラーに関する情報を返します。これによって、発生したエラーのタイプとOracle OLAPが読み取ろうとしていたレコードの位置がわかります。引数として指定するキーワードによって、返される情報の種類が決まります。

FILEERRORをコールしてエラーのタイプを確認します。次に、再びFILEERRORをコールしてエラーの原因に関する詳細を取得します。エラーのタイプに関する戻り値は、FILEERRORのキーワードでもあります。FILEERRORがNA以外の値を返した場合、2回目はその戻り値を引数としてFILEERRORをコールします。

FILEERRORの省略形はFILEERRです。

戻り値

指定したキーワードによって異なります。

構文

FILEERROR (TYPE|POSITION|WIDTH|VALUE|DIMENSION)

パラメータ

TYPE

発生したエラーのタイプを指定するテキスト式を返します。エラーのタイプとその意味を、表7-9「FILEERRORによって返されるエラーのタイプ」に示します。

表7-9 FILEERRORによって返されるエラーのタイプ

戻り値 意味

DIMENSION

データ読取り文がディメンションのステータスを設定(暗黙的または明示的なMATCH属性による)しようとしましたが、指定された位置または値が存在しませんでした。

NA

現行レコードの処理でエラーは発生しませんでした。

POSITION

データ読取りプログラムがレコードの無効な位置から読み取ろうとしました。フィールドまたは列がレコードの先頭より前にある場合、またはフィールドがレコードの末尾を超えて拡張される場合、POSITIONエラーが発生することがあります。レコードの末尾を超えるエラーは、バイナリ・データまたはパック・データの場合にのみ発生し、シンボリック(テキスト)データの場合、データ読取り文によって短いレコードが空白文字で埋められます。

VALUE

値を、要求されたデータ型に変換できませんでした。パック・データの場合、レコードに無効な16進数がありました。

WIDTH

データ読取り文が無効なフィールド幅を指定しました。無効な幅は、次のようにデータの形式(シンボリック、パックまたはバイナリ)によって異なります。

  • シンボリック形式の場合、1より小さい幅またはNAである幅が無効です。ただし、NAはIDデータに対しては許容されます。

  • パック形式の場合、1より小さい幅、8より大きい幅またはNAである幅が無効です。

バイナリ形式の場合、幅に関する要件はデータがINTEGERであるかDECIMAL(浮動小数点)であるかによって異なります。整数データは1、2または4の幅が必要です。小数データは4または8の幅が必要です。


POSITION

エラーが発生したときの列番号(ルール化レコード)またはフィールド番号(構造化レコード)であるINTEGERを返します。

WIDTH

現行フィールド幅であるINTEGERを返します。幅としてNAが指定されていた場合、またはエラーがPOSITIONエラーだった場合、NAが返されます。POSITIONエラーでは、幅が評価される前に処理が停止されます。

VALUE

エラー・タイプがVALUEである場合、変換されなかった値であるテキスト式を返します。パック・データの場合、無効な値が16進エスケープとして示されます。エラー・タイプがDIMENSIONである場合、既存のディメンション値と一致しなかった値を返します。他のエラー・タイプの場合、NAを返します。

DIMENSION

エラー・タイプがDIMENSIONだった場合、一致するディメンション値がなかったディメンションの名前であるテキスト式を返します。他のエラー・タイプの場合、NAを返します。

使用上の注意

制御のフロー

FILEREADまたはFILEVIEWでエラーが発生すると、現行レコードの処理が停止され、該当するエラー・メッセージが表示されます。次に、プログラムにトラップ・ラベルがある場合、問題を調査するためにFILEERRORをコールするラベルに制御が分岐します。FILEREADまたはFILENEXTファンクションに分岐して戻ると、次のレコードの処理が続行されます。そのレコードにさらにエラーがある場合、それらのエラーは評価されません。

現行の出力ファイルでのエラー・メッセージの表示

現行の出力ファイルにエラー・メッセージが表示されるようにするには、データ読取りプログラムでECHOPROMPTをYESに設定します。FILEREADまたはFILEVIEWでエラーが発生した場合、エラー・メッセージの後にFILEERRORによる評価が行われます。

例7-88 TRAPによるエラー処理

この例では、トラップ・ラベル(ERROR:)のサンプルとそれに続くエラー処理コードを示します。(エラー・トラッピングおよびトラップ・ラベルについては、TRAPコマンドを参照。)このコードは、ファイルが開かれているかどうかをチェックします。開かれている場合、分岐の原因になったエラーがデータ読取りエラーであるかどうかをチェックします。その場合、プログラムはSHOWコマンドでFILEERRORをコールしてエラーに関する情報を表示します。ここには示されていないプログラムの本体には、ファイルを開いてファイル・ユニット番号を変数fil.unitに割り当てるコードが含まれます。ERRTYPEはプログラムの先頭で宣言されているローカル変数です。

error:
IF fil.unit EQ NA
  THEN DO
    POPLEVEL 'save'
    RETURN
  DOEND
IF ERRORNAME NE 'attn'
  THEN DO
    ERRTYPE = FILEERROR(TYPE)
    IF ERRTYPE NE NA
      THEN SHOW JOINCHARS('Error in record ' RECNO(fil.unit) -
         ' in column ' FILEERROR(POSITION) ': ' -
         ERRTYPE ' ' FILEERROR(&ERRTYPE))
    TRAP ON ERROR
    GOTO NEXT
  DOEND
FILECLOSE fil.unit
POPLEVEL 'save'
RETURN

FILEGET

FILEGETファンクションは、読取り用に開かれているバイナリ以外のファイルのテキストを返します。FILEGETがそのファイルの末尾に達すると、NAを返します。FILEGETで読み取られるすべてのテキストは、データベース・キャラクタ・セットに変換されます。FILEGETは、データベース・キャラクタ・セットで表せないデータを読み取ることはできません。

戻り値

TEXT

構文

FILEGET(fileunit [LENGTH int-expression])

パラメータ

fileunit

FILEOPENファンクションを事前にコールすることによって読取り用に開かれたファイルに割り当てられるINTEGER値。

LENGTH int-expression

FILEGETがファイルから返すバイト数を指定するINTEGER式。入力ファイルで行端文字に達すると、FILEGETは作成中の結果でそのまま新しい行を開始します。LENGTHを省略した場合、FILEGETは、含まれるバイト数にかかわらず1行または1レコードを読み取ります。

使用上の注意

読み取られるバイト数と返されるバイト数の違い

LENGTHで指定する値は、FILEGETファンクションが読み取るバイト数ではなく、返すバイト数を参照します。これらの値は、異なる値になる場合があります。たとえば、読取り対象のファイルにタブ文字が含まれている場合、FILEGETが返すバイト数にはタブ拡張のバイト数も含まれるため(存在する場合)、FILEGETが返すバイト数は、FILEGETが読み取ったバイト数よりも大きくなります。

例7-89 ファイルを読み取るプログラム

引数としてファイル名を取るreadfileという名前のプログラムがあるとします。このプログラムは、ファイルを開いてファイルの各行を読み取り、それをwholetextという名前の複数行のテキスト変数に追加し、ファイルを閉じます。readfileはローカル変数を使用して、ファイル・ユニット番号、および読み取られるとおりにファイルの各行を格納します。

DEFINE wholetext VARIABLE TEXT
LD Multiline text variable
DEFINE readfile PROGRAM
LD Program to store data from a file in a multiline text variable
PROGRAM
VARIABLE fil.unit INTEGER  "Local Var To Store File Unit
VARIABLE fil.text TEXT     "Local Var To Store Single Lines
FIL.UNIT = FILEOPEN(ARG(1) READ)
FIL.TEXT = FILEGET(fil.unit)        "Read The First Line
WHILE fil.text NE NA                "Test For End-of-file
  DO
  wholetext = JOINLINES(wholetext, fil.text)
  fil.text = FILEGET(fil.unit)      "Read The Next Line
  DOEND
FILECLOSE fil.unit
END 

FILENEXT

FILENEXTファンクションは、レコードをFILEVIEWコマンドによって処理できるようにします。レコードを読み取れた場合にYESを返し、ファイルの末尾に達した場合にNOを返します。

戻り値

BOOLEAN

構文

FILENEXT(fileunit)

パラメータ

fileunit

FILEOPENファンクションを事前にコールすることによって、またはOUTFILEコマンドによって読取り用に開かれたファイルに割り当てられるINTEGER値。

使用上の注意

ファイルの開閉

FILENEXTでファイルからレコードを取得するには、まずFILEOPENファンクションを使用してファイルを読取り用(READモード)として開きます。終了したらFILECLOSE文でファイルを閉じます。

データの処理

FILENEXTでレコードを読み取った後、FILEVIEW文を使用してレコードを処理します。FILEVIEWは、入力データを処理し、それを各フィールドの説明に従ってアナリティック・ワークスペース・オブジェクトまたはローカル変数に割り当てます。FILEVIEWは、同じレコードを連続処理するために複数回コールできます。別のレコードを処理するには、FILENEXTを再びコールします。

自動ループ

すべてのレコードが基本的に同じ方法で処理される場合、FILEREADコマンドを使用すると、ファイルのレコードが自動的にループされるので便利です。

レコードの書込み

選択したレコードの出力ファイルへの書込みについては、FILEPUTコマンドを参照してください。

レコード数

RECNOファンクションを使用すると、読取り専用アクセスで開かれているファイルの現行レコード数を取得できます。

バイナリ・ファイルおよびテキスト・ファイルの読取り

ファイルを開くときにBINARYを指定しなかった場合、FILENEXTは次の改行文字を含めてそこまでデータを読み取ります。ファイルを開くときにBINARYを指定した場合、FILENEXTファンクションを使用する前に、FILESETを使用してLSIZEを適切なレコード長に設定する必要があります。その後、FILENEXTはデータを一度に1レコードずつ読み取ります。

例7-90 FILENEXTを使用するプログラム

レコードが次のようにレイアウトされているファイルの月間販売データを受け取るとします。

Column        Width         Format             Data
 
1             1             Text               Division code
2             10            Text               District name
12            10            Text               Product name
30            4             Packed binary      Sales in dollars
34            4             Packed binary      Sales in units

コードがAである部門に関してのみレコードを処理します。次のプログラムの抜粋は、ファイルを開き、ファイルの各行を読み取って部門Aのデータであるかどうかを判別し、部門Aのデータである場合に販売データを読み取った後、ファイルを閉じます。ファイル名は、プログラム名の後のステートメント行で引数として指定します。

VARIABLE fil.unit INTEGER
. . .
fil.unit = FILEOPEN(arg(1) READ)
LIMIT month TO &arg(2)
 
WHILE FILENEXT(fil.unit)
  DO
    FILEVIEW fil.unit WIDTH 1 rectype
    IF rectype EQ 'A'
      THEN FILEVIEW fil.unit COLUMN 2 WIDTH 10 district -
                             WIDTH 10 product -
                             COLUMN 30 WIDTH 4 BINARY sales -
                             WIDTH 4 BINARY UNITS
  DOEND
FILECLOSE fil.unit

FILEOPEN

FILEOPENファンクションは、ファイルを開き、それにファイル・ユニット番号(不定のINTEGER)を割り当て、その番号を返します。その後でそのファイルを参照する場合、ファイル名ではなくこのファイル・ユニット番号を使用します。Oracle OLAPがファイルを開くことができない場合、エラーが発生します。


関連項目:

OUTFILE

戻り値

INTEGER

構文

FILEOPEN(file-name {READ|WRITE|APPEND} [BINARY]) [NLS_CHARSET charset-exp]

パラメータ

file-name

開くファイルの名前を指定するテキスト式。そのファイルがカレント・ディレクトリにない場合、ファイルの名前にディレクトリ・オブジェクトの名前を含める必要があります。


注意:

ディレクトリ・オブジェクトはデータベースで定義され、ディレクトリおよびディレクトリ内のファイルへのアクセスを制御します。CDA文を使用して、カレント・ディレクトリ・オブジェクトを特定および指定できます。使用するデータベース・ユーザー名で読取りおよび書込み可能なファイルがあるディレクトリ・オブジェクトへのアクセス権については、Oracle DBAに問い合せてください。

READ

(省略形はR)読取り用としてファイルを開きます。

WRITE

(省略形はW)書込み用としてファイルを開きます。ファイル・アクセスはファイルの先頭から開始されます。したがって、既存のファイルをWRITEモードで開くと、ファイルにデータが書き込まれる前にそのすべての内容が消去されます。

APPEND

書込み用としてファイルを開きます。ファイル・アクセスはファイルの末尾から開始され、既存の内容にデータが追加されます。

BINARY

バイナリ形式のファイル(パック・データまたはバイナリ・データのファイル)を開きます。BINARYを指定すると、Oracle OLAPはファイル内のすべての文字をデータとして認識します。レコードの終端の指定に改行文字を使用しない場合、固定長のレコードとみなされ、レコード長はFILESET(...LSIZE)で設定できます。デフォルトのレコード長は80です。

NLS_CHARSET charset-exp

file-nameによって指定されるファイルからデータを読み取る際にOracle OLAPが使用するキャラクタ・セットを指定します。この引数を省略すると、Oracle OLAPでは、ファイルのデータは、NLS_LANGオプションに記録されているデータベース・キャラクタ・セットを持つものとして処理されます。

使用上の注意

ファイル・ユニットの数

同時に開くことができるファイルの数は、オペレーティング・システムの設定と同じです。

アクセス・モード

アクセス・モード(READ、WRITEまたはAPPEND)は、ファイルに適したものを指定する必要があります。

例7-91 プログラムに渡される引数があるFILEOPEN

次のプログラムの行は、プログラム引数として指定された名前のファイルを開き、ファイル・ユニット番号を変数fil.unitに保存します。

fil.unit = FILEOPEN(ARG(1), READ)

例7-92 バイナリ・ファイルのFILEOPEN

次の文は、バイナリ・ファイルを開き、レコード長を設定します。

VARIABLE filenum INTEGER
filenum = FILEOPEN('mydata' READ BINARY)
FILESET filenum LSIZE 132 

FILEQUERY

FILEQUERYファンクションは、ファイルに関する情報を返します。FILEQUERYファンクション・コールに指定する属性引数によって、返される情報の種類が決まります。

戻り値

戻り値のデータ型は指定する属性によって異なります。詳細は、表7-10「FILEQUERYによって返されるファイル属性」を参照してください。

構文

FILEQUERY(file-id attrib-arg)

パラメータ

file-id

ファイル・ユニット番号またはファイル名。

  • ファイル・ユニット番号は、FILEOPENファンクションを事前にコールすることによって開かれたファイル、またはOUTFILEコマンドによって開かれたファイルに割り当てられる番号です。FILEOPENファンクションの戻り値またはOUTFILEUNITオプションの値を使用できます。

  • ファイル名は、移動または名前を変更するファイルの名前を指定するテキスト式です。そのファイルがカレント・ディレクトリにない場合、ファイルの名前にディレクトリ・オブジェクトの名前を含める必要があります。


    注意:

    ディレクトリ・オブジェクトはデータベースで定義され、ディレクトリおよびディレクトリ内のファイルへのアクセスを制御します。CDA文を使用して、カレント・ディレクトリ・オブジェクトを特定および指定できます。使用するデータベース・ユーザー名で読取りおよび書込み可能なファイルがあるディレクトリ・オブジェクトへのアクセス権については、Oracle DBAに問い合せてください。

ファイル・ユニット番号を指定する必要がある属性と、ファイル名が必要な属性があります。どちらを指定しても構わない属性もあります。詳細は、表7-10「FILEQUERYによって返されるファイル属性」を参照してください。

attrib-arg

ファイルに関して取得する情報の種類を指定します。FILEQUERYの戻り値のデータ型は、指定する属性によって異なります。指定する属性はファイルに対応する必要があり、対応しない場合はエラーが発生します。表7-10「FILEQUERYによって返されるファイル属性」に、attrib-argに有効なキーワードをリストし、各キーワードを説明し、file-id引数にファイル名のファイル・ユニット番号を指定するかどうかを示します。

表7-10 FILEQUERYによって返されるファイル属性

キーワード 戻り値 戻り値のデータ型 file-idパラメータ

APPEND

ファイルが最後に書込み用で開かれている場合はTRUE(つまり、APPENDおよびWRITEの場合はTRUE)。それ以外の場合はFALSE

BOOLEAN

ファイル・ユニット番号

BMARGIN

下マージンになる空白行の数。

INTEGER

ファイル・ユニット番号

CHANGED

ファイルのアーカイブ・ビットが設定されている場合はTRUE。設定されていない場合はFALSE

BOOLEAN

ファイル・ユニット番号またはファイル名

EOF

ファイルの末尾に達した場合はTRUE。達していない場合はFALSE

BOOLEAN

ファイル・ユニット番号

EXISTS

ファイルが存在する場合はTRUE。存在しない場合はFALSE

BOOLEAN

ファイル・ユニット番号またはファイル名

FILENAME

ファイル・ユニットに関連付けられたファイル名。

TEXT

ファイル・ユニット番号

LINENUM

現行の行数。PAGINGがオンの場合は改ページのたびにリセットされ、PAGINGがオフの場合は増え続ける。ファイルが現在READモードで開かれている場合、現行レコード数を返す。

INTEGER

ファイル・ユニット番号

LINESLEFT

ページの残りの行数。

INTEGER

ファイル・ユニット番号

LSIZE

書込み用に開かれているファイルの場合、標準のOracle OLAPページ・ヘッダーの行の長さ。(STDHDRプログラムを参照。)読取り用に開かれているファイル・ユニットの場合、バイナリ入力ファイルのレコード長を示す。

INTEGER

ファイル・ユニット番号

NLS_CHARSET

ファイル・ユニットに使用されているキャラクタ・セット。詳細は、FILEOPENファンクションを参照。

TEXT

ファイル・ユニット番号

NUMBYTES

ファイルのサイズ(バイト単位)。

INTEGER

ファイル・ユニット番号またはファイル名

ORIGIN

作成されたファイルがあるコンピュータのタイプ。ORIGIN属性が関連するのは読取り用に開かれたファイルのみで、FILESET文を発行するときに設定される。

TEXT

ファイル・ユニット番号

PAGENUM

現行のページ数。「ページング属性」を参照。

INTEGER

ファイル・ユニット番号

PAGEPRG

出力がページングされる際にヘッダーを生成するOracle OLAPプログラムまたは文。「ページング属性」を参照。

TEXT

ファイル・ユニット番号

PAGESIZE

各ページの行数。「ページング属性」を参照。

INTEGER

ファイル・ユニット番号

PAGING

出力がページで書式化される場合はTRUE、書式化されない場合はFALSE「ページング属性」を参照。

BOOLEAN

ファイル・ユニット番号

PAUSEATPAGEEND

各ページの終わりでOracle OLAPが一時停止する場合はTRUE、一時停止しない場合はFALSE「ページング属性」を参照。

BOOLEAN

ファイル・ユニット番号

R[EAD]

読取り用にファイルが開かれている場合はTRUE。それ以外の場合はFALSE

BOOLEAN

ファイル・ユニット番号

RO

ファイルの読取り専用属性が設定されている場合はTRUE。設定されていない場合はFALSE

BOOLEAN

ファイル・ユニット番号またはファイル名

TABEXPAND

ファイルがFILEGETまたはFILEREADによって読み取られるときにタブ文字が拡張される場合はTRUE、拡張されない場合はFALSE「タブの処理」を参照。

BOOLEAN

ファイル・ユニット番号またはファイル名

TMARGIN

上部余白になる空白行の数。

INTEGER

ファイル・ユニット番号

UNIT

指定されたファイル名のファイル・ユニット。

INTEGER

ファイル名

W[RITE]

書込み用にファイルが開かれている場合はTRUE。それ以外の場合はFALSE

BOOLEAN

ファイル・ユニット番号


使用上の注意

タブの処理

ソース・ファイルのタブ文字がFILEGETまたはFILEREADによって読み取られるときに拡張されるようにするには、FILESETコマンドでTABEXPAND属性を指定できます。TABEXPANDがゼロの場合、タブ文字は拡張されません。0より大きい値は、タブ間の距離のバイト数を示します。TABEXPANDのデフォルト値は8です。

ページング属性

ページング属性は、特に指定のないかぎり、PAGINGがYESに設定されていて、WRITEモードで現在開かれているファイル(FILEOPEN(...WRITE)やFILEOPEN(...APPEND)で開かれたファイルなど)にのみ適用されます。FILESETコマンドによって任意のページング属性を設定できます。

ワイルド・カード文字

(UNIXのみ)UNIXファイル名の問合せにおいて、EXISTS属性引数による検索でワイルドカード文字(* ?)を使用できます。

例7-93 書込み用に開かれたファイルのページング・オプションの設定

次の各文は、書込み用に開かれたファイルに対してページング・オプションがどのように設定されているかを表示します。

DEFINE fil.unit INTEGER
fil.unit = FILEOPEN('REPORT' WRITE)
  • 次の文

    SHOW FILEQUERY(fil.unit PAGING)
    

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

    YES
    
  • 次の文

    SHOW FILEQUERY(fil.unit PAGESIZE)
    

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

    66
    
  • 次の文

    SHOW FILEQUERY(fil.unit TMARGIN)
    

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

    5
    

次の文はファイルを閉じます。

FILECLOSE fil.unit

FILTERLINES

FILTERLINESファンクションは、作成したフィルタ式を複数行のテキスト式の各行に適用します。

戻り値

TEXTまたはNTEXT

このファンクションでは、TEXT値とNTEXT値を引数として使用できます。戻り値のデータ型は、引数として指定する値のデータ型によって次のように異なります。

  • すべての引数がTEXT値である場合、戻り値はTEXTです。

  • すべての引数がNTEXT値である場合、戻り値はNTEXTです。

  • 引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

構文

FILTERLINES(source-expression filter-expression)

パラメータ

source-expression

filter-expressionに従って各行が変更される複数行のテキスト式。

filter-expression

source-expressionの各行に対してフィルタとして適用される式。フィルタ式の語は、ソース式の各行に対してFILTERLINESが実行する処理を指定します。

フィルタ式によってNAが生成されることがありますが、これはソース式の現行の行に対応する行が結果のテキスト式にないことを示します。

フィルタ式にVALUEキーワードを使用して、ソース式の現行の行を表すことができます。

使用上の注意

FILTERLINESの結果

FILTERLINESは、ソース式の各行に対するフィルタ式のアクションの結果である行で構成されるテキスト式を返します。フィルタ式は、入力ソース行のいずれかまたはすべてに対する複数行のテキストを返すことがあります。これらの行はフィルタ式によって再度処理されません。

例7-94 ファイル名からの拡張子の削除

次の例は、ファイル名のリストに対してFILTERLINESを使用して、拡張子のない同じファイル名のリストを生成します。

評価されるfilelistという名前の複数行のテキスト変数は、次のとおりです。

myfile1.txt
file2.txt
myfile3
file4.txt

次の文の場合、

SHOW FILTERLINES(FILELIST -
   IF FINDCHARS(VALUE '.') GT 0 -
      THEN EXTCHARS(VALUE 1 FINDCHARS(VALUE '.') -1) -
      ELSE VALUE)

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

myfile1
file2
myfile3
file4

FINDBYTES

FINDBYTESファンクションは、テキスト式内のバイトにおける、指定したグループの先頭のバイト位置を返します。


ヒント:

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

戻り値

INTEGER

構文

FINDBYTES(text-expressionbytes [starting-pos [LINENUM]])

パラメータ

text-expression

指定するバイトの検索元のTEXT式。text-expressionの値は複数行も可能です。その場合、FINDBYTESは指定するバイトをすべての行で検索します。大文字および小文字の区別も含めて完全一致する必要があります。


ヒント:

NTEXT値に対してこのファンクションを使用する必要がある場合、CONVERTまたはTO_CHARファンクションを使用してNTEXT値をTEXTに変換します。

bytes

検索対象のバイトのグループ。bytesが複数行の値である場合、FINDBYTESは最初の行以外をすべて無視します。

text-expressionbytesが見つからない場合、FINDBYTESはゼロを返します。バイトのグループが複数回出現する場合、FINDBYTESは最初に出現する位置を返します。

starting-pos

text-expressionで検索を開始するバイト位置を指定するINTEGER式。デフォルトはtext-expressionの位置1(最初のバイト)です。

LINENUM

指定したテキストの先頭のバイト位置ではなく行数をFINDBYTESが返すことを指定します。

例7-95 バイト・グループの開始位置の検索

この例は、リテラルTEXT値hellotherejoeにおいてバイトの様々なグループの開始位置を検索する方法を示します

次の文

SHOW FINDBYTES('hellotherejoe', 'joe')

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

11

次の文

SHOW FINDBYTES('hellotherejoe', 'al')

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

0 

FINDCHARS

FINDCHARSファンクションは、テキスト式内の文字における、指定したグループの先頭の文字位置を返します。


ヒント:

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

戻り値

INTEGER

構文

FINDCHARS(text-expressioncharacters [starting-pos [LINENUM]])

パラメータ

text-expression

指定する文字の検索元のテキスト式。text-expressionは複数行の値も可能です。その場合、FINDCHARSは指定した文字をすべての行で検索します。大文字および小文字の区別も含めて完全一致する必要があります。

FINDCHARSでは、引数としてTEXT値およびNTEXT値を使用できます。1つの引数のみがNTEXTである場合、FINDCHARSはファンクション操作を実行する前に、他の引数をNTEXTに自動的に変換します。

characters

検索対象の文字のグループ。charactersが複数行の値である場合、FINDCHARSは最初の行以外をすべて無視します。

text-expressioncharactersが見つからない場合、FINDCHARSはゼロを返します。文字のグループが複数回出現する場合、FINDCHARSは最初に出現する位置を返します。

starting-pos

text-expで検索を開始する文字位置を指定するINTEGER式。デフォルトはtext-expの位置1(最初の文字)です。

LINENUM

指定したテキストの先頭の文字位置ではなく行数をFINDCHARSが返すことを指定します。

例7-96 文字グループの開始位置の検索

この例は、リテラルTEXT値hellotherejoeにおいて文字の様々なグループの開始位置を検索する方法を示します

次の文

SHOW FINDCHARS('hellotherejoe', 'joe')

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

11

次の文

SHOW FINDCHARS('hellotherejoe', 'al')

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

0 

FINDLINES

FINDLINESファンクションは、複数行のテキスト式における1行以上の位置を判別します。

戻り値

INTEGER

構文

FINDLINES(text-expressionlines)

パラメータ

text-expression

テキスト式の値内で、特定の行または行のグループの位置を特定します。FINDLINESは指定する行をtext-expressionで検索します。大文字および小文字の区別も含めて完全一致する必要があります。また、複数行を指定した場合、FINDLINESでは、指定したすべての行がtext-expression内の単一の連続ブロックとして検索されます。すべての行がtext-expressionで出現するが、連続ブロックではない場合、FINDLINESは見つからないものとして0(ゼロ)を返します。

FINDLINESでは、引数としてTEXT値およびNTEXT値を使用できます。1つの引数のみがNTEXTである場合、FINDLINESはファンクション操作を実行する前に、他の引数をNTEXTに自動的に変換します。

text-expressionの値がNAである場合、FINDLINESはNAを返すことに注意してください。

lines

検索する行を指定するテキスト式。text-expressionlinesが見つからない場合、FINDLINESは0を返します。linesが複数回出現する場合、FINDLINESは最初に出現する行数を返します。

例7-97 連続した2行の検索

この例は、newlistというTEXT変数の複数行の値における2行「products」と「services」の位置を検索する方法を示します。newlist変数の値は、次のとおりです。

salespeople
products
services
regions
priorities

次のFINDLINESファンクション・コールに対するlines引数の文字「\n」は、「product」と「services」が別の行であることを示す改行を表します。

SHOW FINDLINES(newlist, 'products\nservices')

この文の結果は次のとおりです。

2 

FINTSCHED

FINTSCHEDファンクションは、指定の期間数で完済する一連の固定金利分割払い融資に関する返済額の金利部分を計算します。期間ごとに、その期間に受けた融資額および返済期間にわたって融資に適用される単一の金利を指定します。

FINTSCHEDは、所定期間の結果を、その期間で受けた各融資または未払いの各融資に対する金利支払い額の合計として計算します。

戻り値

DECIMAL

FINTSCHEDファンクションによって返される結果は、loans, rates, nのすべてのディメンションおよびtime-dimension引数として使用されるディメンションの結合によってディメンション化されます。

構文

FINTSCHED(loansratesn, [time-dimension] [STATUS])

パラメータ

loans

初期融資額を含む数式。loansに時間ディメンションがない場合、またはloansが複数の時間ディメンションによってディメンション化されている場合、time-dimension引数が必要です。

rates

loansに対する金利を含む数式。ratesがディメンション化された変数の場合、この変数は、異なる時間ディメンションなどの任意のディメンションによってディメンション化できます。ratesが時間ディメンションによってディメンション化される場合、その期間に受けた融資額に適用される各期間の金利を指定します。融資を受ける期間の金利は、その融資の返済期間を通じて適用されます。金利は小数値で表し、たとえば、5%は.05として表します。

n

一連の融資の全額返済に必要な支払い回数を指定する数式。n式にはディメンション化変数を指定できますが、この式を時間ディメンション引数でディメンション化することはできません。loansがディメンション化される時間ディメンションの各期間に、またはtime-dimension引数で指定されるディメンションの各期間に、1回の支払いが行われます。たとえば、loansがMONTHによってディメンション化される場合、毎月1回支払いが行われます。

time-dimension

金利支払い額が計算される基準になるディメンションの名前。時間ディメンションがDAY、WEEK、MONTH、QUARTERまたはYEARの型である場合、loansに複数の時間ディメンションがないかぎり、time-dimension引数はオプションです。

STATUS

FINTSCHEDが支払いの金利部分を計算する際に、現行のステータス・リスト(つまり現在ステータスにあり、現行のステータスの順序に並んでいるディメンション値のみ)を使用することを指定します。デフォルトでは、デフォルトのステータス・リストが使用されます。

使用上の注意

FINTSCHEDとNA値

loansの値がNA以外の値で、対応するratesの値がNAの場合、エラーが発生します。

FINTSCHEDはNASKIPオプションの影響を受けます。NASKIPの設定がYES(デフォルト)であり、影響を受ける期間の融資の値がNAである場合、FINTSCHEDによって返される結果は、対応する金利の値がNAであるかNA以外であるかによって異なります。表7-11「特定期間の融資または金利の値がNAである場合のNASKIPの影響」は、特定の期間の融資または金利の値がNAである場合、NASKIPが結果にどのように影響するかを示しています。

表7-11 特定期間の融資または金利の値がNAである場合のNASKIPの影響

融資の値 金利の値 NASKIP = YESの場合の結果 NASKIP = NOの場合の結果

NA

NA

エラー

エラー

NA

NA

金利の値

(NAの融資の値はゼロとして処理される)

影響を受ける期間に対してNA

NA

NA

影響を受ける期間に対してNA

影響を受ける期間に対してNA


たとえば、融資額の式と対応する金利の式の両方の値が1997年に対してNAであり、その後の年に対してNA以外であるとします。支払い回数が3である場合、FINTSCHEDは1997、1998および1999年に対してNAを返します。2000年に対しては、FINTSCHEDは1998、1999および2000年に受けた融資に対する支払い額の金利部分を返します。

時間ディメンションのステータスの影響を受けないFINTSCHED

FINTSCHEDでは、時間ディメンションのステータスがどのように制限されているかにかかわらず、時間ディメンションの最初の値から計算を開始します。たとえば、loansyearによってディメンション化されており、yearの値の範囲はYr95からYr99までの間であるとします。yearのステータスを制限してYr95を対象外にしている場合でも、計算は必ずYr95から開始されます。

ただし、loansが時間ディメンションによってディメンション化されていない場合は、FINTSCHEDによって、時間ディメンションの現行のステータスの最初の値から計算が開始されます。たとえば、loansyearによってディメンション化されていないが、yeartime-dimensionとして指定されているとします。yearのステータスがYr97からYr99までに制限されると、計算はYr95からではなくYr97から開始されます。

例7-98 金利の計算

次の文を実行すると、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.00
Yr99                 0.00       0.00

各年のloansには、その年に受けた固定金利融資額の初期値が含まれます。各年のratesの値は、その年に受けた融資に対する金利で、それぞれの融資に対して、融資の返済が完了するまでその同一の金利が課されます。

次の文を実行すると、各融資の返済が3回払いと指定され、融資の支払いの金利の部分が計算されます。

REPORT W 20 HEADING 'Payment' FINTSCHED(loans, rates, 3, year)

生成されるレポートは次のとおりです。

YEAR                        Payment
--------------   --------------------
Yr95                           5.00
Yr96                          15.41
Yr97                          30.98
Yr98                          18.70
Yr99                           7.48

1995年に支払う金利は、1995年に5%の金利で融資を受けた$100に対する金利です。1996年に支払う金利分は、1995年に5%の金利で受けた融資の残りの元金に対する金利と、1996年に6%の金利で融資を受けた$200に対する金利の合計です。1997年に支払う金利分は、1995年に5%の金利で受けた融資の残りの元金に対する金利、1996年に6%の金利で受けた融資の残りの元金に対する金利、および1997年に7%の金利で融資を受けた$300に対する金利の合計です。1995年の融資は1997年に完済するので、1998年に支払う金利分は、1996年および1997年の融資の残りの元金に対する金利です。1999年には、金利支払いの対象は1997年に受けた融資の元金の支払い残高になります。

FLOOR

FLOORファンクションは、指定する数値以下の最大整数を返します。

戻り値

NUMBER

構文

FLOOR(n)

パラメータ

n

数値。

例7-99 ある数値以下の最大整数の表示

次の文は、FLOORファンクションによって返される結果を示します。

  • 次のSHOW FLOOR文は、次の行に示す結果を生成します。

    SHOW FLOOR(15.7)
    
    15
    
  • 次のSHOW FLOOR文は、次の行に示す結果を生成します。

    SHOW FLOOR(4)
    
    4
    
  • 次のSHOW FLOOR文は、次の行に示す結果を生成します。

    SHOW FLOOR(-6.457)
    
    -7
    

FPMTSCHED

FPMTSCHEDファンクションは、一連の固定金利分割払い融資を指定の期間数で完済するための返済スケジュール(元金と金利)を計算します。期間ごとに、その期間に受けた融資額および返済期間にわたって融資に適用される単一の金利を指定します。

FPMTSCHEDは、所定期間の支払い額を、その期間で受けた各融資または未払いの各融資に対する元金および金利支払い額の合計として計算します。

戻り値

DECIMAL

FPMTSCHEDファンクションによって返される結果は、loansratesのすべてのディメンション、およびtime-dimension引数として使用されるディメンションの結合によってディメンション化されます。

構文

FPMTSCHED(loansratesn, [time-dimension] [STATUS])

パラメータ

loans

初期融資額を含む数式。loansに時間ディメンションがない場合、またはloansが複数の時間ディメンションによってディメンション化されている場合、time-dimension引数が必要です。

rates

loansに対する金利を含む数式。ratesがディメンション化された変数の場合、この変数は、異なる時間ディメンションなどの任意のディメンションによってディメンション化できます。ratesが時間ディメンションによってディメンション化される場合、その期間に受けた融資額に適用される各期間の金利を指定します。融資を受ける期間の金利は、その融資の返済期間を通じて適用されます。金利は小数値で表し、たとえば、5%は.05として表します。

n

一連の融資の全額返済に必要な支払い回数を指定する数式。n式はディメンション化できますが、時間ディメンション引数でディメンション化することはできません。loansがディメンション化される時間ディメンションの各期間に、またはtime-dimension引数で指定されるディメンションの各期間に、1回の支払いが行われます。たとえば、loansmonthによってディメンション化される場合、毎月1回支払いが行われます。

time-dimension

金利支払い額が計算される基準になるディメンションの名前。loansの時間ディメンションがDAY、WEEK、MONTH、QUARTERまたはYEARの型である場合、loansに複数の時間ディメンションがないかぎり、time-dimension引数はオプションです。

STATUS

FPMTSCHEDが支払いスケジュールを計算する際に、現行のステータス・リスト(つまり現在ステータスにあり、現行のステータスの順序に並んでいるディメンション値のみ)を使用することを指定します。デフォルトでは、デフォルトのステータス・リストが使用されます。

使用上の注意

FPMTSCHEDとNA値

loansの値がNA以外の値で、対応するratesの値がNAの場合、エラーが発生します。

FPMTSCHEDはNASKIPオプションの影響を受けます。NASKIPの設定がYES(デフォルト)であり、影響を受ける期間に対して融資額の値がNAである場合、FPMTSCHEDによって返される結果は、対応する金利の値がNAであるかNA以外であるかによって異なります。表7-11「特定期間の融資または金利の値がNAである場合のNASKIPの影響」は、特定の期間の融資または金利の値がNAである場合、NASKIPが結果にどのように影響するかを示しています。

たとえば、融資額の式と対応する金利の式の両方の値が1997年に対してNAであり、その後の年に対してNA以外であるとします。支払い回数が3である場合、FPMTSCHEDは1997、1998および1999年に対してNAを返します。2000年に対しては、FPMTSCHEDは1998、1999および2000年に受けた融資に対する支払い額を返します。

時間ディメンションのステータスの影響を受けないFPMTSCHED

FPMTSCHEDでは、時間ディメンションのステータスがどのように制限されているかにかかわらず、時間ディメンションの最初の値から計算を開始します。たとえば、loansyearによってディメンション化されており、yearの値の範囲はYr95からYr99までの間であるとします。yearのステータスを制限してYr95を対象外にしている場合でも、計算は必ずYr95から開始されます。

ただし、loansが時間ディメンションによってディメンション化されていない場合は、FPMTSCHEDによって、時間ディメンションの現行のステータスの最初の値から計算が開始されます。たとえば、loansyearによってディメンション化されていないが、yeartime-dimensionとして指定されているとします。yearのステータスがYr97からYr99までに制限されると、計算はYr95からではなくYr97から開始されます。

例7-100 返済スケジュールの計算

次の文を実行すると、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.00
Yr99                 0.00       0.00

各年のloansには、その年に受けた固定金利融資額の初期値が含まれます。各年のratesの値は、その年に受けた融資に対する金利で、それぞれの融資に対して、融資の返済が完了するまでその同一の金利が課されます。

次の文を実行すると、各融資の返済が3回払いと指定され、融資の元金と金利を全額返済する返済スケジュールが計算されます。

REPORT W 20 HEADING 'Payment' FPMTSCHED(loans, rates, 3, year)

生成されるレポートは次のとおりです。

YEAR                        Payment
-------------- --------------------
Yr95                          36.72
Yr96                         111.54
Yr97                         225.86
Yr98                         189.14
Yr99                         114.32

1995年の支払い額は、1995年に受けた$100の融資のうち支払い期限に到達した元金と、この融資に対する5パーセントの金利の合計額です。1996年の支払いは、1995年に受けた融資に対する2回目の支払い(元金および5%の金利)、および1996年に受けた$200の融資に対する1回目の支払い(元金および6%の金利)の合計です。1997年の支払いは、1995年に受けた融資に対する3回目の最後の支払い、1996年に受けた融資に対する3回払いのうちの2回目の支払い、および1997年に受けた$300の融資に対する1回目の支払い(元金および7%の金利)の合計です。1995年の融資は1997年に全額返済されるので、1998年の支払いは、1996年と1997年の融資の元金と金利が対象になります。1999年の支払いは、1997年の融資に対する元金および金利の最後の支払いです。

例7-101 毎月の返済額の決定

次の文は、年利8.75%の$125,000の融資に関する毎月の返済額を決定します。

SHOW FPMTSCHED(125000, .0875/12, 360, month)

生成される出力は、次のとおりです。

983.38

FROM_TZ

FROM_TZファンクションは、タイムスタンプ値およびタイムゾーンをTIMESTAMP_TZ値に変換します。

戻り値

TIMESTAMP_TZ

構文

FROM_TZ (timestamp_value , time_zone_value)

パラメータ

timestamp_value

TIMESTAMPデータ型のテキスト式。

time_zone_value

TZH:TZMまたはTZR(オプションでTZDも伴う)書式で文字列を返すテキスト式。


関連項目:

タイムスタンプおよびタイムゾーンの値の指定方法は、「日時式」を参照してください。

例7-102 タイムスタンプ値およびタイムゾーンからのTIMESTAMP_TZ値の作成

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

GET

GETファンクションは、現行の入力ストリームから入力を要求します。入力は、単一アイテムのデータ、ディメンション値、アナリティック・ワークスペース・オブジェクト、または単に入力ストリームの次の項目の場合があります。GETファンクションの最も単純な形式でも、特定のデータ型の値が必要です。

GET(datatype)


GETには、入力を確認する引数も複数あります。

GETはファンクションであるため、OLAP DMLコマンド内で使用する必要があります。また、代入文で変数に入力を格納して後で使用でき、またはLIMITコマンドで使用して、ディメンションのステータスを設定することもできます。プログラムでGETを使用することにより、プログラムの完了に必要な情報を要求できます。

戻り値

戻り値は、構文に示すように要求する入力によって異なります。

構文

GET({RAW TEXT|[NEW|VALID|POSLIST] input} -

     [VERIFY condition-exp [IFNOT result-exp]])

ここで、inputは次のいずれかです。

dim-name     
NAME
datatype

パラメータ

dim-name

ディメンションの名前を指定するテキスト式。dim-nameを指定した場合、GETはこのディメンションの値を入力として要求し、その入力がディメンションの有効な値であることを確認します。

RAW TEXT

GETが入力ストリームの次の項目を入力されているとおりに返すことを指定します。「RAW TEXTを指定したGET」を参照してください。

NEW dim-name

dim-name引数のあるNEWキーワードによって、GETはディメンションの新しい値を要求します。NEWを指定してディメンション値を要求すると、GETは入力が既存のディメンション値ではないことを確認します。

VALID dim-name

dim-name引数のあるVALIDキーワードによって、GETはディメンションの新しい値または既存の値を要求します。VALIDを指定してディメンション値を要求すると、GETは入力が既存のディメンション値または有効な新規ディメンション値のいずれかであることを確認します。

POSLIST dim-name

dim-name引数のあるPOSLISTキーワードによって、GETはディメンションのその位置によって識別されるディメンション値を要求します。POSLISTを指定してディメンション値を要求すると、GETは入力がディメンションの既存の位置番号であることを確認します。「POSLISTを指定したGET」を参照してください。

NAME

GETが現行アナリティック・ワークスペースのオブジェクトの名前を要求することを指定します。NAMEを指定した場合、GETは入力が現行アナリティック・ワークスペースに存在するオブジェクトであることを確認します。オブジェクト名は一重引用符で囲まず、DEFINEに示す有効なオブジェクト名のルールに従う必要があります。GETは、自動的にオブジェクト名を大文字に変換します。

NEW NAME

NEW NAMEキーワードを使用すると、新しいアナリティック・ワークスペース・オブジェクトの名前を要求できます。NEWを指定してアナリティック・ワークスペースのオブジェクト名を要求すると、GETは入力を確認して、アタッチされたアナリティック・ワークスペース(EXPRESS.DBを含む)の既存のオブジェクト名ではないことを確認します。

VALID NAME

VALID NAMEキーワードを使用すると、アナリティック・ワークスペース・オブジェクトの名前を要求できます。VALIDを指定してアナリティック・ワークスペースのオブジェクト名を要求すると、現行のアナリティック・ワークスペースがない場合や、該当の名前が存在するかどうかに関係なく、GETは、入力が有効なオブジェクト名のルールに従っていることを確認します。

POSLIST NAME

POSLIST NAMEキーワードを使用すると、NAMEディメンションでの位置によって識別されるアナリティック・ワークスペースのオブジェクト名を要求できます。POSLISTを指定してアナリティック・ワークスペースのオブジェクト名を要求すると、GETは入力がNAMEディメンションの既存の位置番号であることを確認します。

datatype

GETによって要求されるデータの型を指定しますが、これは、Oracle OLAPデータ型(INTEGER、SHORTINTEGER、DECIMAL、SHORTDECIMAL、BOOLEAN、ID、TEXTおよびDATE)のいずれも可能です。データ型を要求する場合、GETはNAの値を受け入れます。

VERIFY condition-exp [IFNOT result-exp]

VERIFYでは、GETに対する入力が適合する必要があるブール条件を指定できます。condition-expにVALUEキーワードを使用すると、代入が実行される前に入力を検証できます。たとえば、LSIZEの値を要求する場合のブール条件は次のようになります。

VALUE NE NA AND VALUE GE 1 AND VALUE LE 80

IFNOT句には、入力がcondition-expに適合しない場合に備えるテキスト式を指定します。たとえば、プログラム内のエラー処理ルーチンにジャンプするようにします。IFNOTを使用しないでエラーが発生した場合、GETはエラー・メッセージを生成し、入力の待機を再開します。

使用上の注意

現行の入力ストリーム

Oracle OLAPは、現行の入力ストリームから処理の文を取得します。INFILE文を使用すると、デフォルトの入力ストリームを無効にできます。INFILEによって、Oracle OLAPはファイルから入力を読み取ります。入力ファイルの各行には、単一の文を含める必要があります。

INFILEからの入力

GETファンクションが入力ファイルにある場合、Oracle OLAPは入力ファイルの次の行をGETに対する入力であるとみなします。GETファンクションをコールする文に続く行(複数可)に、GETに対する必要な入力を必ず指定する必要があります。

たとえば、使用する小数点以下の桁数を取得するためにGETをコールするレポート・プログラムを起動する1行が入力ファイルに含まれているとします。入力ファイルは、この後に他の文が続きます。プログラム・コールに続く行に小数点以下の必要な桁数を指定しない場合、GETは入力ファイルのその後の行を文として実行せずに検査して目的の数値を探します。「テキスト値を取得するGETの使用方法」を参照してください。

INTEGERのディメンション値

GETがINTEGERディメンションの値を要求する場合、通常、入力はディメンション値の位置番号の形式です。

INTEGER以外のディメンション値

整数以外のディメンション値は、大文字で入力して一重引用符で囲む必要があります。

DWMQYディメンションへの値の入力

DAY、WEEK、MONTH、QUARTERまたはYEARディメンションの値は、ディメンションのVNF書式(ディメンションのVNFがないときはデフォルトのVNFの書式)で、または日付として入力できます。VNF書式で値を入力する方法の説明は、VNFコマンドを参照してください。日付として値を入力する場合の有効な入力スタイルの説明は、「日付のみの入力値」を参照してください。

VNF書式を使用する場合でも、日付として値を指定する場合でも、時間ディメンションのその型に関連する日付の構成要素のみを指定する必要があります。たとえば、MONTHディメンションの場合、月および年のみを指定します。

TEXT値またはID値

GETに対する入力として指定したTEXT値やID値の大文字と小文字の区別は、入力したときと同じ状態で維持されます。TEXT値およびID値は、一重引用符または二重引用符で始まる場合および埋め込まれた空白や\dnnn\nなどのエスケープ・シーケンスが含まれる場合を除き、引用符で囲む必要はありません。(値中の一重引用符は、Oracle OLAPがリテラルと解釈するように、\'のようにバックスラッシュを前に置きます。)

日付のみの値

GETがDATE値を要求する場合、「日付のみの入力値」の説明に示す日付の有効なスタイルで入力できます。Oracle OLAPはDATEORDERオプションの現行値を使用して、日付のみの値のあいまいさを解決します。

数値

GETは、SHORTDECIMAL値またはDECIMAL値をINTEGER値に変換する際に値を丸めます。GETがINTEGER値またはSHORTINTEGER値を要求し、入力がそのデータ型の範囲外の数値である場合、GETはエラー・メッセージを生成し、入力の待機を再開します。

RAW TEXTを指定したGET

GETがRAW TEXT入力を要求し、入力が提供されない場合、GETはNULL文字列('')を返します。RAW TEXT以外の型のデータの場合、GETは入力があるまで待機します。

POSLISTを指定したGET

GETファンクションとともにPOSLISTキーワードを使用した場合、Oracle OLAPは、ディメンション名ではなく、ディメンション値を識別する位置の値の入力を要求します。POSLISTキーワードの構文は、代入文を使用して作成された代入文とともにGETファンクションを使用するのか、LIMITコマンドとともにGETファンクションを使用するのかによって異なります。GETファンクションの結果と等しい変数を設定するには、次の構文を使用します。

expression = GET(POSLIST dimension)

ディメンションをGETファンクションによって返される値に制限するには、次の構文に示すようにPOSLISTキーワードを2回指定します。

LIMIT dimension TO POSLIST GET(POSLIST dimension)

例7-103 テキスト値を取得するGETの使用方法

myconnという名前のOracle OLAPプログラムがあるとします。このプログラムには、テキスト値を要求するGETに対するコールが含まれています。

DEFINE myconn PROGRAM
PROGRAM
...
MYTEXT = GET(TEXT)
...
END

GREATEST

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

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

戻り値

最初の式のデータ型

構文

GREATEST (expr [, expr]...)

パラメータ

expr

式。

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

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

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

例7-105 最大の数式の検索

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

SHOW GREATEST (5, 3, 18)
18

GROUPINGIDファンクション

GROUPINGIDファンクションは、GROUPINGIDコマンドで作成済のグルーピング・リレーションを使用して、階層ディメンションの値のグルーピングIDを取得します。

戻り値

NUMBER

構文

GROUPINGID (gidrel...)

パラメータ

gidrel

GROUPINGIDコマンドを使用して作成済の階層ディメンションのグルーピングIDリレーション。

例7-106 単一のグルーピングID値の取得

例9-145「リレーションにグルーピングIDを移入するGROUPINGIDコマンドの使用方法」の説明どおりに、GROUPINGIDコマンドを使用してgeogディメンションの2つの階層のグルーピングIDを定義するとします。この場合、GROUPINGIDファンクションを使用して、geogディメンションの値のグルーピングIDを取得できます。

" For the Political Geog hierarchy
LIMIT geog TO 'Hartford'
LIMIT geog_hierlist TO 'Political_Geog'
SHOW GROUPINGID(geog_gidrel)
0.00
SHOW OBJ(PROPERTY '$GID_DEPTH' 'geog_gidrel')
4
LIMIT geog TO ALL
LIMIT geog TO 'Canada'
SHOW GROUPINGID(geog_gidrel)
3.00
SHOW OBJ(PROPERTY '$GID_DEPTH' 'geog_gidrel')
4
 
" For the Sales Geog hierarchy
LIMIT geog TO 'Hartford'
LIMIT geog_hierlist TO 'Sales_Geog'
SHOW GROUPINGID(geog_gidrel)
0.00
SHOW OBJ(PROPERTY '$GID_DEPTH' 'geog_gidrel')
4
LIMIT geog TO ALL
LIMIT geog TO 'West'
SHOW GROUPINGID(geog_gidrel)
3.00
SHOW OBJ(PROPERTY '$GID_DEPTH' 'geog_gidrel')
4

GROWRATE

GROWRATEファンクションは、時系列式の増加率をその系列の最初と最後の値を基準にして計算します。

GROWRATEは、時間ディメンションのステータスの最初と最後の値に対応するexpressionの値を基準にして計算を行います。expressionのその間の値は無視されます。GROWRATEが使用する計算は、次のとおりです。

GROWRATE = ((last/first)**(1/(n-1))-1

指数のnは、時間ディメンションのステータスの値の数です。

戻り値

DECIMAL

GROWRATEによって返される結果は、time-dimensionで指定したディメンションを除くexpressionのすべてのディメンションによってディメンション化されます。

構文

GROWRATE(expression [time-dimension])

パラメータ

expression

増加率を計算する数式。式は時間ディメンションによってディメンション化されている必要があります。expressionの最初と最後の値には、次のルールが適用されます。

  • expressionの最初の値はゼロにできません。(これは、GROWRATE計算でゼロによる除算を回避するためです。)

  • expressionの最初と最後の値は、両方とも正数であるか両方とも負数である必要があります。(あるいは、expressionの最後の値は、最初の値が正数であるか負数であるかにかかわらずゼロにできます。)

  • expressionの最初と最後の値のいずれもNAにはできません。

time-dimension

expressionがディメンション化される時間ディメンションの名前。時間ディメンションがDAY、WEEK、MONTH、QUARTERまたはYEARの型である場合、loansに複数の時間ディメンションがないかぎり、time-dimension引数はオプションです。

例7-107 増加率の測定

次の文は、actual変数のディメンションを制限し、レポートを生成します。

LIMIT month TO 'Dec95' TO 'Mar96'
LIMIT line TO 'net.income'
REPORT DOWN division ACROSS month: actual

この文によって生成されるレポートは次のとおりです。

LINE: NET.INCOME
               ------------------ACTUAL-------------------
               -------------------MONTH-------------------
DIVISION         Dec95      Jan96      Feb96      Mar96
-------------- ---------- ---------- ---------- ----------
Camping          4,378.09  19,915.13  22,510.38  34,731.63
Sporting         6,297.02  13,180.29  17,429.17  18,819.14
Clothing        87,471.74 107,257.85 133,566.01 127,132.55

REPORT W 20 GROWRATE(actual)によって、1995年12月から1996年3月におけるdemoワークスペースの実際の純益の増加率を表示するレポートが生成されます。

               --GROWRATE(ACTUAL)--
               --------LINE--------
DIVISION            NET.INCOME
-------------- --------------------
Camping                        0.99
Sporting                       0.44
Clothing                       0.13

HEXTORAW

HEXTORAWファンクションは、16進数の文字列をRAW値に変換します。


関連項目:

「RAWデータ型」およびRAWTOHEXファンクション。

戻り値

RAW

構文

HEXTORAW(text-exp)

パラメータ

text-exp

16進数を含むテキスト式。

HIERCHECK

HIERCHECKは、指定したaggmapの特定のリレーションまたはすべてのリレーションにおける階層に循環構造があるかどうかをチェックするためのファンクションです。階層ディメンションの親リレーションは、ディメンションのそれぞれの値の親を表します。(循環構造が現れるのは、親リレーションの中でディメンション値が誤ってそれ自身の祖先または子孫として指定された場合です。)

またHIERCHECKによるチェックを、階層に関するその他の状況について行うよう指定することもできます。


関連項目:

HIERSHAPEファンクション

戻り値

BOOLEAN

構文

コマンドとして使用する場合

HIERCHECK parent-relation [STATUS|NOSTATUS|valueset-name] [MULTIPATH] [CONSISTENT]-

[BALANCED levelrelation-name]

または

HIERCHECK aggmap-name [MULTIPATH] [CONSISTENT]levelrelation-name]

パラメータ

parent-relation

チェックする親リレーションの名前を指定するテキスト式。

aggmap-name

aggmapの名前を表すテキスト式。HIERCHECKでは、aggmapにおけるすべてのリレーションがチェックされます。

STATUS

HIERCHECKにおいて、リレーションの現行のディメンション・ステータスが使用されるよう指定します。

valueset

ステータスにおいて、HIERCHECKの実行対象となるリレーションのディメンションの値を指定します。

NOSTATUS

HIERCHECKにおいて、リレーションのデフォルトのディメンション・ステータスが使用されるよう指定します。

MULTIPATH

HIERCHECKにおいて、それぞれの子からその親へのパスが複数存在するかどうかのチェックが行われるよう指定します。

CONSISTENT

HIERCHECKにより、階層に整合性があるかどうかのチェックが行われるよう指定します。階層に整合性があるとは、異なる階層のすべてのノードが同じ子を持つことをいいます。

BALANCED levelrel-name

levelrel-nameに指定したレベル・リレーションを使用することにより、HIERCHECKにおいて、次の項目がすべて真かどうかのチェックが行われるよう指定します。

  • 階層内でNAレベルを持つ要素はすべて、リーフを持たないルートであるか、またはリーフであるかのどちらかである。

  • 階層内で同じ(非NA)レベルにある要素はすべて、その階層のルート(複数可)からの深さが同じである。

  • 階層内でレベル(非NA)が異なる要素は互いに深さが異なる。

使用上の注意

HIERCHECKを使用する理由

階層を作成したときに、それが有効であることを確認するための方法としてHIERCHECKを使用することをお薦めします。つまり、変数のデータをロールアップする前に、ディメンションの階層が正しく構成されているかどうかを確認する必要があるということです。たとえば、AGGREGATEコマンドでは、HIERCHECKを使用して、実行時の無限ループの発生を回避します。階層ディメンションのレベルを設定した後は、階層ディメンションによってディメンション化される変数にデータをロードする前、または変数に対して初めてAGGREGATEコマンドを使用する前に、親リレーションでループがあるかどうかをチェックしてください。最初にHIERCHECKを使用してすべての階層ディメンションの親リレーションをチェックしなくても変数をロールアップできますが、最初にHIERCHECKを使用することを習慣にしてください。

AggmapでHIERCHECKを使用する場合のステータス

aggmapにおけるリレーション内に値セットが存在する場合、HIERCHECKではこの値セットを使用して、リレーションのディメンション・ステータスが決定されます。それ以外の場合はすべて、リレーションのデフォルトのディメンション・ステータスが使用されます。

リレーションのディメンションではないすべてのディメンションに対しては、現在のステータスが使用されます。

HIERCHECKによってトリガーされるエラー・メッセージ

HIERCHECKでは、親リレーションの中にループが検出されるとエラーが通知され、実行が停止されます(つまり、HIERCHECKは常に、最初のエラー・メッセージが出た段階で停止します)。エラー・メッセージに示されるのは、ループに含まれるディメンション値、ループが発生する追加ディメンション値と呼ばれる階層の名前(親リレーションに1つ以上の名前付き階層がある場合)、およびループが検出された親リレーションの名前です。親リレーションにループがない場合、メッセージは表示されません。例7-108「ループのチェック」を参照してください。

例7-108 ループのチェック

次の例は、親リレーションを作成し、それにループがあるかどうかをチェックする方法を示します。最初に、ディメンションを定義してそれに値を追加します。

DEFINE geography DIMENSION ID
MAINTAIN geography ADD 'U.S.'
MAINTAIN geography ADD 'East' 'Central' 'West'
MAINTAIN geography ADD 'Boston' 'Atlanta' 'Chicago' 'Dallas' 'Denver' 'Seattle'

次に、そのディメンションをそれ自身に関連付けます。次の文は、GEOG.GEOGという名前の親リレーションを定義し、この親リレーションは、GEOGRAPHYディメンションをそれ自身に関連付けます。

define geog.geog RELATION geography <geography>

さらに、ディメンション値の階層を指定します。この例では、階層に3つのレベル(国、地域、都市)があります。階層を指定して、最上位レベルを除くすべてのレベルに対して、親ディメンション値を子ディメンション値に(たとえば、EastBostonに)割り当てます。これを行うために、値をリレーションに格納します。最初にLIMITコマンドを使用して子をグループ化し、次に、グループ化した子に親を割り当てます。

LIMIT geography TO 'East' 'Central' 'West'
geog.geog = 'U.S.'
LIMIT geography TO 'Boston' 'Atlanta'
geog.geog = 'East'
LIMIT geography TO 'Chicago' 'Dallas'
geog.geog = 'Central'
LIMIT geography TO 'Denver' 'Seattle'
geog.geog = 'West'

これにより、次の文に示すように、親リレーションgeog.geogでループがあるかどうかをチェックできます。

HIERCHECK geog.geog

この場合、HIERCHECKはエラー・メッセージを生成しないので、geog.geogにはループがありません。HIERCHK.LOOPFNDがNOに設定され、HIERCHK.LOOPVALSおよびHIERCHK.XTRADIMSがNAの設定のままです。

リレーションに格納される値に次の誤りがあったとします。

LIMIT geography TO 'East' 'Central' 'West'
geog.geog = 'East'

この文は、Eastをそれ自身の親としているのが誤りなので、AGGREGATEコマンドで無限ループが発生します。次に示すように、geog.geogリレーションでループがあるかどうかをチェックする文を実行するとエラー・メッセージが生成されます。

HIERCHECK geog.geog
ERROR: HIERCHECK has detected one or more loops in the hierarchy represented by GEOG.GEOG. The values involved are 'East'.

HIERHEIGHT

HIERHEIGHTファンクションは、指定されたレベルのノードの値を、階層ディメンションの現行のステータス・リストの最初の値として返します。

指定された階層ディメンションの値を、事前定義済のリレーションにレベル別に移入するには、HIERHEIGHTコマンドを使用します。

戻り値

HIERHEIGHTから返されるデータ型は、parentrelのディメンション値のデータ型です。

構文

HIERHEIGHT(parentrel [,] level)

パラメータ

parentrel

階層ディメンションの親子のセルフ・リレーション。詳細は、「parentrelリレーション」を参照してください。

level

階層ディメンションのレベルを表すINTEGER値。値1は階層ディメンションの最下位レベルを表します。

使用上の注意

階層ディメンションの制限

HIERHEIGHTファンクションは、常に階層ディメンションの単一の値を返します。HIERHEIGHTファンクションをコールする前に階層ディメンションを単一の値に制限しない場合、ディメンションの現行のステータス・リストの最初の値に対してHIERHEIGHTファンクションが実行されます。通常、HIERHEIGHTファンクションをコールする前に階層ディメンションを単一の値に制限するか、階層ディメンションの各値に対してHIERHEIGHTファンクションを実行するためにFOR文の後にHIERHEIGHTファンクションを使用します。

例7-109 単純なコマンドとしてのHIERHEIGHTの使用方法

アナリティック・ワークスペースに、geographyという名前の階層ディメンション、およびgeographyStandard階層にあるgeography値のセルフ・リレーションであるg0.stanparentという名前のリレーションがあるとします。

DEFINE g0.newparent RELATION geography <geography>
LD Parent-child when hierarchy of geography is 1

REPORT g0.stanparentのような文を発行すると、g0.stanparentの値が表示されます。

GEOGRAPHY          G0.STANPARENT
---------------- ----------------
World            NA
Americas         World
Canada           Americas
Toronto          Canada
Montreal         Canada
Ottawa           Canada
...              ...
USA              Americas
Boston           USA
LosAngeles       USA
...              ...
Mexico           Americas
Mexicocity       Mexico
Argentina        Americas
BuenosAires      Argentina
Brazil           Americas
Saopaulo         Brazil
Colombia         Americas
Bogota           Colombia
Australia        World
East.Aust        Australia
Sydney           East.Aust
Madrid           Spain
Budapest         Hungary
Athens           Greece
Vienna           Austria
Melbourne        East.Aust
Central.aust     Australia
...              ...
Perth            West.Aust
Bombay           India
Malaysia         Asia
Europe           World
France           Europe
Caen             France
Paris            France

次のOLAP DML文を発行して、geographyを値Americasに制限します。

LIMIT geography TO 'Americas'

HIERHEIGHTファンクションを使用して階層の最下位レベル(レベル1)のAmericasのノードを検索するには、次のOLAP DML文を発行します。

REPORT HIERHEIGHT(g0.stanparent 1)

生成されるレポートは次のとおりです。

HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
NA

HIERHEIGHTファンクションを使用して階層の最上位レベル(レベル4)のAmericasのノードを検索するには、次のOLAP DML文を発行します。

REPORT HIERHEIGHT(g0.stanparent 4)

生成されるレポートは次のとおりです。

HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
World

HIERHEIGHTファンクションを使用して階層のレベル2および3Americasのノードを検索するには、次のOLAP DML文を発行します。

REPORT HIERHEIGHT(g0.stanparent 2)
REPORT HIERHEIGHT(g0.stanparent 3)

生成されるレポートは次のとおりです。

HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
NA
 
HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
Americas

各レベルの出力は、HIERHEIGHTコマンドを使用して作成したリレーションに作成された値との間に対応関係があることに注意してください。たとえば、geographyのStandard階層に対してgeog.stanhierrelという名前のリレーションを作成し、geographyAmericasに制限したとします。geog.stanhierrelのレポートには、レベルごとに同じgeographyの値が表示されます。

LIMIT geography TO 'AMERICAS'
REPORT DOWN geography geog.stanhierrel

                 ---------------------------GEOG.STANHIERREL--------------------
                 ----------------------------GEOG.LVLDIM------------------------
GEOGRAPHY               1                2                3                4
---------------- ---------------- ---------------- ---------------- ------------
Americas         NA               NA               Americas         World

例7-110 FOR文の後のHIERHEIGHTの使用方法

アナリティック・ワークスペースに、findnodesという次のようなプログラムがあるとします。このプログラムは、geography値がすべてステータスにあるノードを検索します。

DEFINE FINDNODES PROGRAM
PROGRAM
VARIABLE level INTEGER
FOR geography
DO
counter = 1
WHILE counter LE statlen(geog.lvldim)
DO
REPORT HIERHEIGHT(g0.stanparent level)
level = level + 1
DOEND
DOEND
END

次のOLAP文を発行して、geographyAmericasおよびAsiaに制限し、Standard階層のレベルごとにHIERHEIGHTファンクションをコールするとします。

LIMIT geography TO 'Americas', 'Asia'
CALL findnodes

AmericasおよびAsiageography値に関するfindnodesプログラムの出力は、次のとおりです。プログラムのレポートは、最初にAmericasの各レベルの値を表示します。次に、Asiaの各レベルの値がレポートされます。

HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
NA
 
HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
NA
 
HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
Americas
 
HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
World
 
HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
NA
 
HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
NA
 
HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
Asia
 
HIERHEIGHT(G0.STANPARENT
COUNTER)
------------------------------
World

各レベルの出力は、HIERHEIGHTコマンドを使用して作成したリレーションに作成された値との間に対応関係があることに注意してください。

LIMIT geography TO 'Americas' 'Asia'
REPORT DOWN geography geog.stanhierrel

                 ---------------------------GEOG.STANHIERREL--------------------
                 ----------------------------GEOG.LVLDIM------------------------
GEOGRAPHY               1                2                3                4
---------------- ---------------- ---------------- ---------------- ------------
Americas         NA               NA               Americas         World
Asia             NA               NA               Asia             World

HIERSHAPE

HIERSHAPEファンクションは、階層ディメンションが指定されたシェイプを持つかどうかを識別します。

戻り値

BOOLEAN

構文

HIERSHAPE(parent-relation[(qdr)] {LEVEL | RAGGED | SKIPLEVEL | REGULAR} USING levelrel -

[INHIERARCHY inhvalueset] LEVELORDER levelvalueset)

パラメータ

parent-relation

階層ディメンションの親子のセルフ・リレーションの名前を表すテキスト式。(「parentrelリレーション」を参照してください。)

qdr

parent-relationを修飾するQDRの名前を表すテキスト式。

LEVEL

このオプションは、すべてのメンバーが、levelrelで定義されているレベルと同じレベルの一部であるかどうかを決めます。

RAGGED

リーフ・ノードが階層内の異なるレベルに位置する階層。

SKIPLEVEL

1つ以上のリーフ・ノードが、その次の最も明らかなレベルより上位に位置する親にリンクされている階層。

REGULAR

それぞれの子が階層の次のレベルに位置する親を持つ、従来のレベルベース階層。

levelrel

階層ディメンションのレベル・リレーションの名前を表すテキスト式。(「levelrelリレーション」を参照してください。)

inhvalueset

階層ディメンションのinhier値セットの名前を表すテキスト式。(「inhier値セットまたは変数」を参照してください。)

levelvalueset

階層ディメンションのhierlevels値セットの名前を表すテキスト式。(「hierlevels値セット」を参照してください。)

使用上の注意

スターに矛盾しない階層

ディメンションのすべてのレベル階層を、ディメンション・レベルごとに1つの列およびリーフ・メンバーごとに1つの行を持つ単一の表として表すことができる場合、ディメンションはスターに矛盾しません。このように表すことができない場合、ディメンションはスターに矛盾します。

スターに矛盾するディメンションの例として、時間ディメンションにYEAR、QUARTERおよびMONTHという3つのレベルがあり、さらにFISCALおよびCALENDARという2つの階層があるとします。両方の階層には、降順に、YEAR、QUARTERおよびMONTHというレベルがあります。階層には次のメンバーがあるとします。

CALENDAR階層:

CY2012
  CYQ1_2012
     Jan_2012
     Feb_2012
     Mar_2012
  CYQ2_2012
     Apr_2012
     May_2012
     Jun_2012
    ...

FISCAL階層:

FY2012
  FYQ1_2012
     Apr_2012
     May_2012
     Jun_2012
  FYQ2_2012
     Jul_2012
     Aug_2012
     Sep_2012
   ...

これは有効かつ矛盾しないディメンションですが、1つの表で3つの列のみを使用して表すことができないため、スターに矛盾します。たとえば、MONTHがApr_2012である列には、CYQ2_2012およびFYQ1_2012というQUARTERに対する2つの異なる値が必要になりますが、これは可能ではありません。

このディメンションをスターに矛盾にしないようにするには、MONTHレベルを、FISCAL_MONTHおよびCALENDAR_MONTHという2つの異なるレベルに置き換え、同様に、YEAR年レベルを、FISCAL_YEARおよびCALENDAR_YEARに置き換える必要があります。

INFO

INFOファンクションは、FORECAST、PARSEまたはREGRESS文によって生成される情報、あるいはアナリティック・ワークスペースのモデルに関して生成される情報を取得します。

INFOファンクションの構文は、取得する情報の種類によって異なるので、次のように4つに分けて説明します。

INFO(FORECAST)

INFO(FORECAST)ファンクションは、FORECAST文によって生成されてOracle OLAPによって内部的に格納される情報を取得します。INFOにキーワードを使用することにより、計算した予測に関する特定の情報を抽出できます。


注意:

INFOを使用する前に、結果に関する標準的なレポートで、これによって必要な情報がすべて得られるため、FORECAST.REPORTについて理解しておいてください。INFOは、主にカスタマイズされたレポートの作成やさらに詳細な結果の分析の実行に効果的です。

予測が計算されていない情報を抽出しようとすると、INFOはエラーを生成します。キーワードAVAILABLEを使用すると、現在取得できる結果があるかどうかを判断できます。

戻り値

後述の表に示すように、戻り値は使用するキーワードによって異なります。範囲外の索引を使用した場合、または直前に使用した予測法に適用されないキーワードを選択した場合、INFOはNAを返します。たとえば、予測の計算式に2つの係数がある場合に12番目の係数を要求すると、INFOはNAを返します。

構文

INFO(FORECAST choice [index])

パラメータ

FORECAST

FORECAST文によって生成される情報を取得することを示します。

choice

取得する特定の情報。FORECASTに関して使用可能なキーワードを、表7-12「すべての方法に対するキーワード」表7-13「TRENDおよびEXPONENTIAL予測に対するキーワード」および表7-14「WINTERS予測に対するキーワード」に示します。索引付けが必須と示されているキーワードには、index引数が必要です。

index

複数の異なる結果がありうるchoiceに関して、取得する結果を指定するINTEGER式。たとえば、傾向方程式には複数の係数がある可能性があります。indexを使用することによって、情報を取得する係数を指定できます。indexが必須のchoiceで省略すると、エラーが発生します。

表7-12 すべての方法に対するキーワード

キーワード タイプ 索引付け 意味

AVAILABLE

BOOL

なし

情報を取得できる計算予測があるか

DEPENDENT

TEXT

なし

予測される変数または式

METHOD

TEXT

なし

予測法

MAPE

DEC

なし

平均絶対誤差率(適合度の程度)

LENGTH

INT

なし

計算される予測期間の数

TIME

TEXT

なし

予測が実行されるディメンション

FCNAME

TEXT

なし

適合値および予測値が含まれる変数の名前(予測が保存されていない場合はNA)


表7-13 TRENDおよびEXPONENTIAL予測に対するキーワード

キーワード タイプ 索引付け 意味

FORMULA

TEXT

なし

予測方程式のテキスト。

NUMCOEFS

INT

なし

係数の数。

COEFFICIENT

DEC

あり

予測方程式の指定される係数。取得する係数をindexで指定。


表7-14 WINTERS予測に対するキーワード

キーワード タイプ 索引付け 意味

PERIODICITY

INT

なし

季節サイクルの期間の数。

ALPHA

DEC

なし

平滑データ系列の平滑化定数。

BETA

DEC

なし

季節指数系列の平滑化定数。

GAMMA

DEC

なし

傾向系列の平滑化定数。

STSMOOTHED

DEC

なし

平滑データ系列の開始値。

STSEASONAL

DEC

あり

季節指数系列の開始値。取得する開始値をindexで指定。

STTREND

DEC

なし

傾向系列の開始値。

FCSMOOTHED

TEXT

なし

平滑データ系列を保持する変数。

FCSEASONAL

TEXT

なし

季節指数系列を保持する変数。

FCTREND

TEXT

なし

傾向系列を保持する変数。


例7-111 予測情報の取得

この例では、売上が予測されているとします。

次の文は、sales変数のディメンションを制限し、予測の計算式を取得します。

LIMIT product TO 'Sportswear'
LIMIT district TO 'Chicago'
LIMIT month TO 'Jan95' TO 'Dec96'
FORECAST LENGTH 12 METHOD EXPONENTIAL FCNAME fcst time -
month sales
SHOW INFO(FORECAST FORMULA)

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

87718.0009541865 * (1.005533834579 ** MONTH)

次の文は、予測の平均絶対誤差率を取得します。

SHOW INFO(FORECAST MAPE)

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

.17

INFO(MODEL)

INFO(MODEL)ファンクションは、アナリティック・ワークスペースのモデルに関してOracle OLAPにより生成されて内部的に格納される情報を取得します。INFOにキーワードを使用することにより、コンパイルされたモデルの構造および現行セッションで実行したモデルのステータスに関する特定の情報を抽出できます。


注意:

INFOを使用する前に、MODEL.COMPRPT、MODEL.DEPRTおよびMODEL.XEQRPTによって作成されるレポート(必要とする情報をすべて含む)について理解しておいてください。

キーワードAVAILABLEをINFOで指定すると、現在取得できるモデルの結果があるかどうかを判断できます。それ以外の情報を、現行セッションでモデルを検討または定義しないで抽出しようとすると、INFOはエラーを生成します。

戻り値

後述の表に示すように、戻り値は使用するキーワードによって異なります。範囲外の索引を使用した場合、または関係のない情報を要求した場合、INFOはNAを返します。たとえば、モデルに5つの文が含まれている場合に文6に関する情報を要求すると、INFOはNAを返し、あるいは、代入ターゲットが実際は変数である場合にDIMENSION REFERENCEを指定すると、INFOはNAを返します。

構文

INFO(MODEL choice [index1 [index2 [index3]]])

ここで、indexは、複数の異なる結果がありうるchoiceに関して、取得する結果を指定する引数です。選択するキーワードによって、次の索引引数を1つ以上指定できます。

block-num
dimension-num
element-num
model-num
qualifier-num
source-num
stmnt-num

パラメータ

MODEL

アナリティック・ワークスペースのモデルに関する情報を取得することを示します。INFOは、最も新しく定義したモデル、または現行セッションで検討したモデルに関する情報を返します(DEFINE MODELおよびCONSIDERコマンドを参照)。

choice

取得する情報を特定するキーワード。モデルに関して使用可能なキーワードを、それぞれの情報カテゴリを表す次の表に示します。

各表は4つの列で構成され、キーワード、戻り値のデータ型、キーワードに関連付けられた索引引数、および意味を示します。

表7-15 モデルに関する一般情報を取得するINFO(MODEL)のキーワード

キーワード データ型 索引引数 意味

AVAILABLE

BOOL

(引数なし)

情報を取得できるモデルがあるか。

NAME

TEXT

[MODEL model-num]

model-numがない場合(またはmodel-numが0の場合)、現行モデルの名前。model-numが0より大きい場合、現行モデル内の指定されたmodel-numであるインクルードされたモデルの名前。

COUNT STATEMENTS

INT

(引数なし)

現行モデルの文の数。この数には、コメント、方程式、およびDIMENSIONとINCLUDEのコマンド(ある場合)が含まれるが、インクルードされたモデルの文は含まれない。

STATEMENT

TEXT

stmnt-num

stmnt-numのテキスト。

SIMULTANEOUS

BOOL

(引数なし)

現行モデルに連立ブロックが含まれるか。 


表7-16 モデルの構造に関する情報を取得するINFO(MODEL)のキーワード

キーワード データ型 索引引数 意味

COUNT ELEMENTS

INT

[BLOCK block-num]

block-numがない場合、現行モデルのブロックの数。block-numがある場合、現行モデルのブロックblock-num内の文およびネストされたブロックの合計数。

特定要素に関して詳細情報を要求する場合(たとえば、TYPE ELEMENTキーワードによって)、その要素が属するブロック番号およびブロック内の要素番号を常に指定する。

TYPE ELEMENT

TEXT

element-num BLOCK block-num

ブロックblock-numの要素element-numがネストされたブロックであるか文であるかに従って、BLOCKまたはSTATEMENTが返される。

NUMBER BLOCK

INT

element-num BLOCK block-num

ブロックblock-numの要素element-numであるネストされたブロックのブロック番号。

TYPE BLOCK

TEXT

block-num

ブロックblock-numの実行タイプに従って、SIMPLE、STEP-FORWARD、STEP-BACKWARDまたはSIMULTANEOUSが返される。

COUNT DIMS

INT

[BLOCK block-num]

block-numがない場合、現行モデルのモデル・ディメンションの数。block-numがある場合、現行モデル内のブロックblock-numのステップフォワード・ディメンション、ステップバックワード・ディメンションまたは連立ディメンションの数。

DIMENSION

TEXT

dimension-num [BLOCK block-num]

block-numがない場合、現行モデルのモデル・ディメンションdimension-numの名前。block-numがある場合、ブロックblock-numの指定されたステップフォワード・ディメンション、ステップバックワード・ディメンションまたは連立ディメンションの名前。

NUMBER STATEMENT

INT

element-num BLOCK block-num

ブロックblock-numの要素element-numである文の文番号。

文番号はそのモデル内の文の位置を表す。文に関してさらに情報を要求する(たとえば、HIDDENキーワードによって)には、そのモデルが現在検討しているモデルでなければならない。

HIDDEN

BOOL

stmnt-num

stmnt-numが後続の文によってマスクされているか。

NUMBER MODEL

INT

element-num BLOCK block-num

 

ブロックblock-numの要素element-numである文がどこから受け取られるかを示すインクルードされたモデルの番号。

 


表7-17 ターゲット、ソースおよび依存関係に関する情報を取得するINFO(MODEL)のキーワード

キーワード データ型 索引引数 意味

COUNT SOURCES

INT

STATEMENT stmnt-num

現行モデル内の文stmnt-numのデータソースの数。

TYPE REFERENCE

TEXT

STATEMENT stmnt-num [SOURCE source-num]

source-numがない場合、文stmnt-numの代入ターゲットのオブジェクト型。source-numがある場合、文stmnt-numのデータソースsource-numのオブジェクト型。参照が変数に対する場合、オブジェクト型はVARIABLE。参照がディメンションの値に対する場合、オブジェクト型はDIMENSION。

VARIABLE REFERENCE

TEXT

STATEMENT stmnt-num [SOURCE source-num]

source-numがない場合、文stmnt-numの代入ターゲットである変数の名前。source-numがある場合、文stmnt-numのデータソースsource-numである変数の名前。

VALUE REFERENCE

TEXT

STATEMENT stmnt-num [SOURCE source-num]

source-numがない場合、文stmnt-numの代入ターゲットであるディメンション値。source-numがある場合、文stmnt-numのデータソースsource-numであるディメンション値。

DIMENSION REFERENCE

TEXT

STATEMENT stmnt-num [SOURCE source-num]

source-numがない場合、文stmnt-numのターゲット・ディメンション値のモデル・ディメンション。source-numがある場合、文stmnt-numのソース・ディメンション値source-numのモデル・ディメンション。

COUNT QUALIFIERS

INT

STATEMENT stmnt-num [SOURCE source-num]

source-numがない場合、文stmnt-numの代入ターゲットの修飾子の数。source-numがある場合、文stmnt-numのデータソースsource-numの修飾子の数。

TYPE QUALIFIER

TEXT

qualifier-num STATEMENT stmnt-num [SOURCE source-num]

source-numがない場合、文stmnt-numのターゲットの修飾子qualifier-numの修飾子型。source-numがある場合、文stmnt-numのデータソースsource-numの修飾子qualifier-numの修飾子型。修飾子型は、LAG(前のディメンション値のみ)、LEAD(後の値のみ)、BOTH(前と後の両方の値)、VARIABLE(モデルが実行される際の変数の値に従って前または後の値)というように、ディメンションの依存関係を示す。さらに、QDR(修飾データ参照)の修飾子型もある。

DIMENSION QUALIFIER

TEXT

qualifier-num STATEMENT stmnt-num [SOURCE source-num]

qualifier-num STATEMENT stmnt-num [SOURCE source-num]

source-numがない場合、文stmnt-numの代入ターゲットの修飾子qualifier-numのディメンション。source-numがある場合、文stmnt-numのデータソースsource-numの修飾子qualifier-numのディメンション。


表7-18 実行ステータスに関する情報を取得するINFO(MODEL)のキーワード

キーワード データ型 索引引数 意味

XEQSTATUS

TEXT

[BLOCK block-num]

block-numがない場合は、モデル全体の実行ステータスで、モデルが実行されていなかったときのステータスはNOT EXECUTED。block-numがある場合は、ブロックblock-numの実行ステータスで、モデルが実行されていなかったときはエラーが返される。モデルが実行されていたとき、モデル全体またはブロックのステータスはSOLVED、DIVERGEDまたはFAILED TO CONVERGE。外部レベルのブロックのステータスは、その中のネストされたブロックが発散した場合または収束に失敗した場合はEXECUTION INCOMPLETEになる。

COUNT ITERATIONS

INT

BLOCK block-num

ブロックblock-numが解決されるまでに、またはそのブロックが発散するか収束に失敗するまでにそれに対して実行された反復の数。

DAMP

DEC

(引数なし)

モデルが実行されたときのMODDAMPオプションの値。(解決方法がGAUSSの場合のみ該当。)

DIVERGSTMT

INT

BLOCK block-num

ブロックblock-numの計算時に発散した文の要素番号。

GAMMA

INT

(引数なし)

モデルが実行されたときのMODGAMMAオプションの値。

MAXITERS

INT

(引数なし)

モデルが実行されたときのMODMAXITERSオプションの値。

OVERFLOW

INT

(引数なし)

モデルが実行されたときのMODOVERFLOWオプションの値。

SIMULTYPE

TEXT

(引数なし)

モデルが実行されたときのMODSIMULTYPEオプションの値(AITKENSまたはGAUSS)。

TOLERANCE

INT

(引数なし)

モデルが実行されたときのMODTOLERANCEオプションの値。 


block-num

情報を取得するブロックを指定するINTEGER式。block-numは、MODEL.COMPRPTプログラムによって生成されるレポートで特定されるブロック番号に一致します。

dimension-num

情報を取得するモデル・ディメンションまたはブロック・ディメンションを指定するINTEGER式。モデル全体の場合、そのモデルで最初にリストされるディメンションはdimension-num 1になります。たとえば、MODEL.COMPRPTによってモデル・ディメンションが<line month>として指定されるとします。この場合、linedimension-num 1で、monthdimension-num 2です。現行モデルの連立ブロックの場合、ブロックの最初のディメンションがdimension-num 1になり、それに続きます。ステップフォワード・ブロックまたはステップバックワード・ブロックのディメンションは1つなので、ブロックのディメンションは常にdimension-num 1です。モデル全体のディメンションのリスト、またはモデルの各ブロックのディメンションのリストを参照するには、MODEL.COMPRPTプログラムを実行します。

element-num

情報を取得する要素を指定するINTEGER式。要素に関する情報を要求する場合、要素が属するブロック番号を常に指定します。要素は指定したブロックの文であるか、指定したブロック内のネストされたブロックです。要素番号はコンパイルされたモデルの文およびブロックの順序に一致します。MODEL.COMPRPTプログラムを実行すると、コンパイルされたモデルの要素のリストを参照できます。

たとえば、現行モデルのコンパイルされた構造が次のとおりであるとします。

block 1
statement a
  block 2
  statement b
  statement c
  END block 2
statement d
END block 1

この前のモデルのblock 1に関する情報を要求する場合、statement aelement-num 1block 2element-num 2statement delement-num 3です。block 2に関する情報を要求する場合、statement belement-num 1statement celement-num 2です。

model-num

インクルードされたモデルの階層の場合、情報を取得するモデルを指定するINTEGER式。現在検討しているモデルはmodel-num 0(ゼロ)、そのモデルがインクルードするモデルはmodel-num 1などとなります。ルート・モデルが階層で最も大きいモデル番号になります。

qualifier-num

情報を取得する修飾子を指定するINTEGER式。修飾子は、変数またはディメンション値の参照のディメンション性を変更します。参照は、LAG、LEAD、TOTALなどのファンクション、または修飾データ参照(QDR)で修飾できます。文の修飾子を参照するには、その文を含むモデルに対してMODEL.DEPRTプログラムを実行します。

モデル内の方程式ごとに、MODEL.DEPRTのレポートは、代入ターゲットとその修飾子を1行で示してその後にデータソースを続けます。各データソースはその修飾子とともに別の行に示されます。さらに、MODEL.DEPRTのレポートは、各修飾子の修飾子型LAG、LEAD、BOTH、VARIABLEまたはQDRも示します(INFOのキーワードを示す3つ目の表のTYPE QUALIFIERを参照)。

ターゲットおよび各ソースに関して、qualifier-numは、MODEL.DEPRTのレポートでリストされる修飾子の順序に一致します。

source-num

情報を取得するデータソースを指定するINTEGER式。計算において、変数またはディメンション値に対する各参照が代入ターゲットのデータのソースとして数えられます。定数値はソースとして数えられません。

文のデータソースを参照するには、その文を含むモデルに対してMODEL.DEPRTプログラムを実行します。モデル内の方程式ごとに、MODEL.DEPRTのレポートは、代入ターゲットを1行で示してその後にデータソースを続けます。各データソースは別の行に示されます。

stmnt-num

情報を取得する文を指定するINTEGER式。常に、Stmnt-numは現在検討しているモデルの文を指します。インクルードされたモデルから受け取る文は指しません。

現行モデルの文番号を参照するには、MODEL.COMPRPTプログラムを実行します。このレポートによって、各文の左側に、文の取得元のモデルとそのモデル内の文番号がリストされます。

例7-112 修飾子情報の取得

次の文は、income.planという名前のモデルの文3であるとします。

budget(line revenue) = LAG(actual(line revenue), 1, month) -
   + plan.factor

MODEL.DEPRPTプログラムを実行すると、この文のターゲットおよびソースの修飾子を参照できます。

MODEL.DEPRPT income.plan

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

MODEL INCOME.PLAN
...
3    BUDGET(QDR <LINE>):
       ACTUAL(LAG <MONTH>)(QDR <LINE>)
       PLAN.FACTOR
...

このレポートによって、代入ターゲットbudgetには2つのデータソースactualおよびplan.factorがあることがわかります。

例7-113 修飾子情報のチェック

次の文は、INCOME.PLANを現行モデルにして、文3の代入ターゲットの修飾子の数と型をチェックします。

CONSIDER income.plan
SHOW INFO(MODEL COUNT QUALIFIERS STATEMENT 3)

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

1

OLAP DML文

SHOW INFO(MODEL TYPE QUALIFIER 1 STATEMENT 3)

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

QDR

例7-114 異なるデータソースのチェック

次に示す各文は、文3の2つのデータソースの修飾子の数および型をチェックします。

OLAP DML文

SHOW INFO(MODEL COUNT QUALIFIERS STATEMENT 3 SOURCE 1)

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

2

OLAP DML文

SHOW INFO(MODEL TYPE QUALIFIER 1 STATEMENT 3 SOURCE 1)

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

LAG

OLAP DML文

SHOW INFO(MODEL TYPE QUALIFIER 2 STATEMENT 3 SOURCE 1)

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

QDR

OLAP DML文

SHOW INFO(MODEL COUNT QUALIFIERS STATEMENT 3 SOURCE 2)

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

0

INFO(PARSE)

INFO(PARSE)ファンクションは、PARSE文によって生成されてOracle OLAPによって内部的に格納される情報を取得します。INFOにキーワードを使用することにより、解析した式に関する特定の情報を抽出できます。

戻り値

戻り値は、表7-19に示すように、使用するキーワードによって異なります。取得できない情報を抽出しようとした場合、または範囲外の索引を使用した場合、INFOはNAを返します。たとえば、4つの式を含む句を解析してから12番目のFORMULAを要求すると、INFOはNAを返します。

構文

INFO(PARSE choice [index])

パラメータ

PARSE

PARSE文によって生成される情報を取得することを示します。

choice

取得する特定の情報。PARSEに対して選択可能なキーワードを、表7-19「INFO PARSEのキーワード」に示します。索引付けが可能と示されているキーワードは、オプションのindex引数を取ることができます。

index

複数の異なる結果がありうるchoiceに関して、取得する結果を指定するINTEGER式。たとえば、3つの式を含むテキストを解析した場合、各式にはそれぞれの計算式およびデータ型があります。indexを使用することによって、対象とする式を指定できます。

indexを省略した場合、INFOはすべての情報を複数行の値で返します。

表7-19 INFO PARSEのキーワード

キーワード タイプ 索引付け 意味

PARSEABLE

BOOL

なし

Oracle OLAPがテキストを解析できたか。

ERRORTEXT

TEXT

なし

式が解析されなかった場合のエラー・メッセージのテキスト。

NUMFORMULAS

INT

なし

解析された式(計算式)の数。

NUMDIMS

INT

なし

解析されたすべての式の結合にあるディメンションの数。

FORMULA

TEXT

あり

指定された式のテキスト(計算式)。取得するテキストをindexで指定。

DATA

TEXT

あり

指定された式のデータ型。

TYPE

TEXT

あり

指定された式のオブジェクトの型。式がオブジェクトの名前である場合はその型が返され、式が修飾データ参照である場合はQDR、式がそれ以外である場合はEXPが返される。

DIMENSION

TEXT

あり

式のすべてのディメンションの結合にある指定されたディメンションの名前。 


例7-115 修飾子情報の取得

単純なレポート・プログラムにおいて、レポートの対象とするデータをプログラムに対する引数としてユーザーが指定できるようにします。ユーザーが指定できるのは、データ変数の式および名前です。ARGS文では式の引数を処理できないので、PARSEおよびINFOを使用して、プログラムの引数を解析してレポートを生成します。

次の文は、単純なレポート・プログラムを作成します。

DEFINE report1 PROGRAM
PROGRAM
PUSH month product district DECIMALS
DECIMALS = 0
LIMIT month TO FIRST 2
LIMIT product TO ALL
LIMIT district TO 'Chicago'
PARSE ARGS
REPORT ACROSS month: WIDTH 8 <&INFO(PARSE FORMULA 1) -
        WIDTH 13 &INFO(PARSE FORMULA 2)>
POP month product district DECIMALS
END

ユーザーがこのプログラムを実行する場合、変数の名前(sales)または式(sales-expense)、あるいはその両方を引数として指定できます。

次の文

REPORT1 sales sales-expense

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

DISTRICT: CHICAGO
             --------------------MONTH--------------------
             --------Jan95--------- --------Feb95---------
PRODUCT       SALES   SALES-EXPENSE  SALES   SALES-EXPENSE
------------ -------- ------------- -------- -------------
Tents          29,099         1,595   29,010         1,505
Canoes         45,278           292   50,596           477
Racquets       54,270         1,400   58,158         1,863
Sportswear     72,123         7,719   80,072         9,333
Footwear       90,288         8,117   96,539        13,847

INFO(REGRESS)

INFO(REGRESS)ファンクションは、REGRESS文によって生成されてOracle OLAPによって内部的に格納される情報を取得します。INFOにキーワードを使用することにより、計算した回帰に関する特定の情報を抽出できます。


注意:

INFOを使用する前に、結果に関する標準的なレポートを生成するもので、これによって必要な情報がすべて得られるため、REGRESS.REPORTについて理解しておいてください。INFOは、主にカスタマイズされたレポートの作成やさらに詳細な結果の分析の実行に効果的です。

戻り値

戻り値は、表7-20「INFO REGRESSのキーワード」に示すように、使用するキーワードによって異なります。

構文

INFO(REGRESS choice [index])

パラメータ

REGRESS

REGRESS文によって生成される情報を取得することを示します。

choice

取得する特定の情報。REGRESSに対して選択可能なキーワードを、表7-20「INFO REGRESSのキーワード」に示します。索引付けが必須と示されているキーワードには、index引数が必要です。

index

複数の異なる結果がありうるchoiceに関して、取得する結果を指定するINTEGER式。たとえば、回帰において複数の独立変数がある場合があります。indexを使用することによって、情報を取得する独立変数を指定できます。indexが必須のchoiceで省略すると、エラーが発生します。

表7-20 INFO REGRESSのキーワード

キーワード タイプ 索引付け 意味

AVAILABLE

BOOL

なし

情報を抽出できる計算された回帰があるか。

DEPENDENT

TEXT

なし

回帰の従属変数の名前。

NOINTERCEPT

BOOL

なし

切片によって計算される回帰が抑止されたか。

WEIGHTED

BOOL

なし

直前の回帰は加重されたか。

WEIGHT

TEXT

なし

直前の回帰を加重するために使用された式。

NUMCOEFS

INT

なし

係数の数。

INDEPENDENT

TEXT

あり

独立変数。取得する独立変数をindexで指定(切片が抑止されなかった場合、切片が最初となる)。

COEFFICIENT

DEC

あり

予測係数。取得する係数をindexで指定。

STDERROR

DEC

あり

予測係数の標準エラー。取得する標準エラーをindexで指定。

TRATIO

DEC

あり

予測係数のT-比率。取得するT-比率をindexで指定。

NUMOBS

INT

なし

使用された測定値の数。

FRATIO

DEC

なし

回帰のF-比率。

RBSQ

DEC

なし

回帰の修正R-2乗。

FORMULA

TEXT

なし

回帰計算式。

STDERROREST

DEC

なし

回帰に対する予測の標準エラー。

RESET

BOOL

 


AVAILABLEの元の状態をリセットしてNOに戻す場合に使用。 


使用上の注意

回帰結果を取得可能かどうかの判断

回帰が実行されていない情報を抽出しようとすると、INFOはエラーを生成します。キーワードAVAILABLEを使用すると、現在取得できる結果があるかどうかを判断できます。回帰が一度正常に実行されると、その後で1回以上回帰が失敗しても前の成功した回帰の結果が取得可能なので、AVAILABLEはTRUEのままです。AVAILABLEの状態を変更するためにRESETを使用して元の値のNOに戻すまで、AVAILABLEはTRUEのままです。

索引が原因のNAの結果

範囲外の索引を使用した場合、INFOはNAを返します。たとえば、回帰において5つの独立変数がある場合に12番目の独立変数の係数を要求すると、INFOはNAを返します。

例7-116 回帰情報の取得

次の文は、最後に計算された回帰から3番目の係数を現行の出力ファイルに送信します。

SHOW INFO(REGRESS COEFFICIENT 3)

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

7.55

INITCAP

INITCAPファンクションは、指定されたテキスト式を返す際、各単語の先頭の英字を大文字、他のすべての英字を小文字にして返します。各単語は空白または英数字以外の文字で区切られます。

戻り値

式と同じデータ型

構文

INITCAP (text-exp)

パラメータ

text-exp

テキスト式。

例7-117 各単語の先頭文字の大文字化

次の例は、文字列の各単語の先頭の文字を大文字にしています。

SHOW INITCAP('the soap')  
The Soap

INLIST

INLISTファンクションは、テキスト値のすべての行が別のテキスト値の行であるかどうかを判別します。通常、INLISTは、リスト(複数行のテキスト値の形式)のすべての行がマスター・リスト(別の複数行のテキスト値の形式)にあるかどうかを判断するために使用します。

INLISTでは、引数としてTEXT値およびNTEXT値を使用できます。1つの引数のみがNTEXTである場合、INLISTはファンクション操作を実行する前に、他の引数をNTEXTに自動的に変換します。

戻り値

BOOLEAN

構文

INLIST(masterlist list)

パラメータ

masterlist

listの各行の比較対象とする複数行のテキスト式。

list

各行をmasterlistの行と比較する複数行のテキスト式。listのすべての行がmasterlistの行にある場合、INLISTは値YESを返します。listの1つ以上の行がmasterlistの行にない場合、INLISTは値NOを返します。

例7-118 リストとマスター・リストの比較

この例では、INLISTを使用して、1つのリストの各行がマスター・リストにあるかどうかを確認する方法を示します。この例のマスター・リストは、deptsという変数の複数行のテキスト値です。depts変数の値は、次のとおりです。

Marketing
Purchasing
Accounting
Engineering
Personnel

最初のファンクション・コールでは、テキスト・リテラルとして指定したリストをマスター・リストと比較します。戻り値はYESです。

INLIST(depts, 'Accounting\nPersonnel')

2番目のファンクション・コールでは、次の値を持つ変数newlistを比較します。

Development
Accounting

これをdeptsのマスター・リストと比較します。戻り値はNOです。

INLIST(depts, newlist)

INSBYTES

INSBYTESファンクションは、テキスト式に1バイト以上を挿入します。

シングルバイト・キャラクタ・セットを使用している場合は、INSCHARSを使用します。

戻り値

TEXT

構文

INSBYTES(text-expression bytes [after])

パラメータ

text-expression

バイトを挿入するTEXT式。text-expressionが複数行のTEXT値である場合、改行はINSBYTESの戻り値でも維持されます。

bytes

text-expressionに挿入する1バイト以上のバイト。

after

指定されたbytesが挿入される位置の前のバイト位置を表すINTEGERtext-expressionの最初のバイト位置は1です。テキストの先頭にバイトを挿入するには、afterに0を指定します。この引数を省略した場合、INSBYTESはtext-expressionの最後のバイトの後ろにバイトを挿入します。

text-expressionの長さより大きな値をafterに指定した場合、INSBYTESはtext-expressionの末尾に空白を追加します。挿入される空白の数は、afterの値とtext-expressionの長さとの差です。たとえば、insbytes('abc' 'def' 4)では、次のようにdefabcに追加される前に1つの空白が挿入されます。

abc def

例7-119 テキストへのバイトの挿入

この例は、TEXT値hellojoeにバイトthereを挿入する方法を示します。

次のファンクションをコールします。

INSBYTES('hellojoe', 'there', 5)

次の値が返されます。

hellotherejoe 

INSCHARS

INSCHARSファンクションは、テキスト式に1文字以上を挿入します。

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

戻り値

TEXTまたはNTEXT

このファンクションでは、TEXT値とNTEXT値を引数として使用できます。戻り値のデータ型は、引数として指定する値のデータ型によって次のように異なります。

  • すべての引数がTEXT値である場合、戻り値はTEXTです。

  • すべての引数がNTEXT値である場合、戻り値はNTEXTです。

  • 引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

構文

INSCHARS(text-expression characters [after])

パラメータ

text-expression

文字を挿入する式。text-expressionが複数行のTEXT値である場合、改行はINSCHARSの戻り値でも維持されます。

characters

text-expressionに挿入する1文字以上の文字。

after

指定されたcharactersが挿入される位置の前の文字位置を表すINTEGERtext-expressionの最初の文字位置は1です。テキストの先頭に文字を挿入するには、afterに0を指定します。この引数を省略した場合、INSCHARSはtext-expressionの最後の文字の後ろに文字を挿入します。

text-expressionの長さより大きな値をafterに指定した場合、INSCHARSはtext-expressionの末尾に空白を追加します。挿入される空白の数は、afterの値とtext-expressionの長さとの差です。たとえば、INSCHARS('abc' 'def' 4)では、次のように'def'が'abc'に追加される前に1つの空白が挿入されます。

abc def

例7-120 テキストへの文字の挿入

この例は、TEXT値hellojoeに文字thereを挿入する方法を示します。

INSCHARS('hellojoe', 'there', 5)

hellotherejoe 

INSCOLS

INSCOLSファンクションは、複数行のTEXT値の列に別のTEXT値のすべての列を挿入します。挿入される列は指定した列位置の後ろに配置され、各行の元の列は右に移動します。このファンクションは、挿入された列で構成された複数行のTEXT値を返します。

戻り値

TEXTまたはNTEXT

このファンクションでは、TEXT値とNTEXT値を引数として使用できます。戻り値のデータ型は、引数として指定する値のデータ型によって次のように異なります。

  • すべての引数がTEXT値である場合、戻り値はTEXTです。

  • すべての引数がNTEXT値である場合、戻り値はNTEXTです。

  • 引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

戻り値の行数は、text-expressionの行数と常に同じです。columnsのTEXT式の行がこれより少ない場合、INSCOLSはその式の最後の行を戻り値の後続の行で繰り返します。

構文

INSCOLS(text-expression columns [after])

パラメータ

text-expression

列を挿入する式。

columns

各行に1つ以上の列を含む式。この式のすべての列がtext-expressionの対応する行に挿入されます。

after

列が挿入される前の列位置を表す0から32,767のINTEGER。各行における最初の文字の列位置は1です。afterを指定しない場合、挿入は各行の末尾から開始されます。1行の全体の長さは、シングルバイト文字では32,767列またはマルチバイト文字ではそれより少ない列を超えることができません。

text-expressionのある行における最後の文字よりも右側にくるafter列を指定した場合、戻り値の対応する行における間の列は空白で埋められます。

例7-121 テキスト列の挿入

次の例では、カラー・コード(複数行のTEXT値itemcolorに格納)を、itemidテキスト値に格納される項目識別子に挿入します。列は列3の後ろに挿入します。

itemcolor値は、次のとおりです。

Blu
Red
Gre
Ora

itemid値は、次のとおりです。

542-Fra
379-Eng
968-USA
369-Can

INSCOLSファンクションをコールします。

INSCOLS(itemid itemcolor 3)

次の値が返されます。

542Blu-Fra
379Red-Eng
968Gre-USA
369Ora-Can 

INSLINES

INSLINESファンクションは、複数行のテキスト式に1行以上を挿入します。

戻り値

TEXTまたはNTEXT

このファンクションでは、TEXT値とNTEXT値を引数として使用できます。戻り値のデータ型は、引数として指定する値のデータ型によって次のように異なります。

  • すべての引数がTEXT値である場合、戻り値はTEXTです。

  • すべての引数がNTEXT値である場合、戻り値はNTEXTです。

  • 引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

構文

INSLINES(text-expression lines [after])

パラメータ

text-expression

1行以上を値に挿入する複数行の式。

lines

text-expressionに挿入するテキストの1行以上を表す式。

after

指定されたlinesが挿入される位置の前の行数を表すINTEGERtext-expressionの最初の行の位置は1です。最初の行の前に挿入するには、after0(ゼロ)を指定します。この引数を省略した場合、INSLINESはtext-expressionの最後の行の後ろに新しい行を挿入します。

例7-122 テキスト行の挿入

この例は、次の値を持つmktglistという変数における複数行のテキスト値に新しい行を挿入する方法を示します。

Salespeople
Products
Services

INSLINESファンクションをコールします。

INSLINES(mktglist, 'Advertising', 2)

次の値が返されます。

Salespeople
Products
Advertising
Services 

INSTAT

INSTATファンクションは、ディメンション値またはディメンション・サロゲート値が現行のステータス・リストにあるか、またはディメンション値が値セットにあるかどうかをチェックします。

戻り値

BOOLEAN

値が現行のステータス・リストまたは値セットにある場合はYES、ない場合はNO。

構文

INSTAT(dimensionvalue)

パラメータ

dimension

ディメンション、ディメンション・サロゲートまたは値セットの名前。

value

テストするディメンション値またはディメンション・サロゲート値で、テキスト・リテラル(一重引用符で囲む)または値を指定する式のどちらかです。結合ディメンションまたは連結ディメンションの値を指定するには、値を山カッコで囲みます。結合ディメンションの場合、複数のベース・ディメンション値をカンマと空白で区切ります。連結ディメンションの場合、ベース・ディメンションとその値をコロンと空白で区切ります。

使用上の注意

無効な値のチェック

INSTAT文でディメンション名およびディメンション値を指定すると、値がディメンションの現行のステータス・リストにあるかどうかがわかります。それに対し、ISVALUEファンクションでは、あるアイテムがステータスにあるかどうかにかかわらず、ディメンションの値であるかどうかがわかります。valueがディメンション値ではない場合、INSTATはエラーを生成し、ISVALUEは単にFALSEの値を返します。

例7-123 値セットを指定したINSTATの使用

アナリティック・ワークスペースに、次のような定義および値を持つgeogディメンションがあるとします。

DEFINE geog TEXT DIMENSION
GEOG
--------------
Austria
Belgium
Canada

また、値セットmygeogsを定義し、次の文を使用してこの値セットの値を識別するとします。

DEFINE mygeogs VALUESET geog
LIMIT mygeogs TO 'Belgium'
 

値セットに対してREPORTは発行できません。これを試行すると、Oracle OLAPによってエラー・メッセージが発行されます。

REPORT mygeogs
ORA-34104: INSTATTEST!MYGEOGS is not a type of object that contains data values.
 

ただし、INSTATファンクションを使用して、ディメンションのどの値が値セットにあるかを表示できます。

REPORT INSTAT (mygeogs, geog)

GEOG            INSTAT (MYGEOGS, GEOG)
-------------- ------------------------
Austria                              no
Belgium                             yes
Canada                               no

例7-124 現行のステータスのチェック

次の例では、プログラムに引数としてmonthディメンションの値を渡しています。プログラムの最初の部分でINSTATを使用して、引数として渡されたディメンション値がmonthの現行のステータスにあるかどうかをチェックします。現行のステータスにある場合、プログラムはレポート・プログラムをコールします。現行のステータスにない場合、プログラムはエラー処理セクションに分岐します。

ARGUMENT onemonth month
 
IF INSTAT(month onemonth)
   THEN sales_report
   ELSE GOTO error
...

例7-125 ディメンションが結合ディメンションの場合のINSTATの使用

指定するディメンションが結合ディメンションである場合、値全体を一重引用符で囲む必要があります。たとえば、アナリティック・ワークスペースにregionディメンションおよびproductディメンションがあるとします。regionディメンション値には、EastCentralおよびWestがあります。productディメンション値には、TentsCanoesおよびRacquetsがあります。

次の文は、結合ディメンションを定義してそれに値を追加します。

DEFINE reg.prod DIMENSION <geography product>
MAINTAIN reg.prod ADD <'East', 'Tents'> <'West', 'Canoes'>

ベース位置を指定するには、次のような文を使用します。

SHOW INSTAT(reg.prod '<1, 1>')
YES

ベース・テキスト値を指定するには、次のような文を使用します。

SHOW INSTAT(reg.prod '<\'East\', \'Tents\'>')
YES

例7-126 ディメンションが連結ディメンションの場合のINSTATの使用

指定するディメンションが連結ディメンションである場合、コンポーネントのディメンションとディメンション値のペアである<component dimension: dimension value>全体を一重引用符で囲む必要があります。次の文は、ベース・ディメンションとしてregionおよびproductを持つ連結ディメンションを定義します。

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>

ベース・ディメンション位置を指定するには、次のような文を使用します。

SHOW INSTAT(reg.prod.ccdim '<product: 3>')
yes

ベース・ディメンション・テキスト値を指定するには、次のような文を使用します。

SHOW INSTAT(reg.prod.ccdim '<product: Tents>')
YES

INSTRファンクション

INSTRファンクション群(INSTR、INSTRB、およびINSTRC)は、文字を使用して文字列からサブストリングを検索し、文字列のうち指定したサブストリングに一致する部分の最初の文字の位置を返します。戻り値となるサブストリング位置の決定方法は各ファンクションで異なります。

  • INSTRは、入力キャラクタ・セットの定義どおりに文字を使用して長さを計算します。

  • INSTRBは、バイトを使用して長さを計算します。

  • INSTRCは、Unicodeの完全文字を使用して長さを計算します。

戻り値

検索が成功した場合はゼロ以外のINTEGER、成功しなかった場合は0(ゼロ)。

構文

{INSTR | INSTRB | INSTRC} (string , substring [, position [, occurrence]])

パラメータ

string

検索元のテキスト式。

substring

検索元で検索する文字列。

position

string内でファンクションが検索を開始する位置を示すゼロ以外のINTEGER。INSTRは、入力キャラクタ・セットでの定義どおりに文字を使用してpositionを計算します。INSTRBは、バイトを使用してpositionを計算します。INSTRCは、Unicodeの完全文字を使用してpositionを計算します。

positionが負数である場合、INSTRはstringの最後から逆方向に数えて検索します。positionのデフォルト値は1なので、ファンクションはstringの最初の位置から検索を開始します。

occurrence

stringでどの一致文字列をファンクションが検索するかを示すINTEGER。occurrenceの値は正数である必要があります。occurrenceのデフォルト値は1なので、ファンクションはsubstringの最初の一致文字列を検索します。

例7-127 文字位置を使用したサブストリング位置の順方向検索

次の例は、文字列「Corporate Floor」で文字列「or」の検索を3番目の文字から開始します。「Corporate Floor」で「or」が2回目に出現する位置を返します。

SHOW INSTR('Corporate Floor','or', 3, 2)
14

例7-128 文字位置を使用したサブストリング位置の逆方向検索

この例では、ファンクションは、最後の文字から最後から3番目の文字まで、つまり、「Floor」の最初の「o」まで逆方向にカウントします。次に、ファンクションは2回目に現れる「or」を逆方向に検索し、2回目に現れるこの文字列が、検索文字列の2番目の文字で始まることを認識します。

SHOW INSTR('Corporate Floor','or', -3, 2)
2

例7-129 マルチバイト・キャラクタ・セットを使用したサブストリング位置の検索

この例では、マルチバイト・キャラクタ・セットを想定しています。

SHOW INSTRB('Corporate Floor','or',5,2) 
27               

INTPART

INTPARTファンクションは、小数の小数部を切り捨てて整数部を計算します。

戻り値

INTEGER

構文

INTPART(expression)

パラメータ

expression

整数部が返される小数式。

使用上の注意

大きな値

expressionINTEGERに許可されている値(-2,147,483,647から2,147,483,647)より大きな値である場合、INTPARTはNA値を返します。

例7-130 小数の整数部の計算

次の例は、数値3.14の整数部を示します。次の文

show intpart(3.14)

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

3

IRR

IRRファンクションは、一連のキャッシュ・フロー値に関連付けられている内部収益率を計算します。結果の各値は、対応するキャッシュ・フローの正味現在価値がゼロに等しくなる各期間の割引率として計算されます。

戻り値

DECIMAL(たとえば、n 8.25パーセントの内部収益率では、.0825の結果値が生成される)

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

構文

IRR(cashflows, [time-dimension])

パラメータ

cashflows

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


注意:

結果値の計算に使用されるすべてのキャッシュ・フローは、それらが関連付けられている期間内の同じ相対時点に発生するとみなされます。ステータス外のディメンション位置に対応するキャッシュ・フローは無視されます。

time-dimension

時間ディメンションを指定する名前。cashflowsのディメンションがDAY、WEEK、MONTH、QUARTERまたはYEAR型である場合、time-dimensionの値を指定しないと、IRRは自動的にcashflowsのDAY、WEEK、MONTH、QUARTERまたはYEARのディメンションを使用するため、time-dimension引数はオプションです。

使用上の注意

複数の割引率

キャッシュ・フローの系列には、正味現在価値がゼロに等しくなる割引率が複数ある場合があります。この場合、IRRはそれらの割引率のうちの1つを内部収益率とみなして結果を返します。解が1つのみで-99.9から10,000パーセントである場合、IRRファンクションはそれを内部収益率とします。IRRが内部収益率を計算できない場合、結果の対応する値はNAです。

例7-131 内部収益率の計算

次の文は、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 IRR(cflow, year)

によって生成される内部収益率のレポートは、次のとおりです。

               IRR(CFLOW,
PROJECT          YEAR)
-------------- ----------
a                    0.00
b                    0.84
c                    0.22
d                    0.13
E                    0.06

ISDATE

ISDATEプログラムは、テキスト式が有効な日付を表しているかどうかを決定します。ISDATEは、テキスト式が日付のみの値に変換可能かどうかを確認するテストを行うのみで、実際の変換は行いません。変換を実行するには、CONVERTを使用する必要があります。

戻り値

BOOLEAN

テキスト式が有効な日付を表す場合はYESを、有効な日付を表さない場合はNOを返します。

構文

ISDATE(test-date)

パラメータ

test-date

日付のみのデータ型による定義どおりに有効な値を表しているかどうかをテストする1行のIDまたはTEXT式。日付を入力する場合の有効なスタイルの説明は、「日付のみの入力値」を参照してください。

例7-132 テキスト式のテスト

次の文では、ISDATEプログラムがリテラル・テキスト式をテストして有効な日付であるかどうかを確認し、出力が現行の出力ファイルに送信されます。

SHOW ISDATE('3 5 1995')

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

YES

ISEMPTY

ISEMPTYファンクションは、変数またはその1つ以上のパーティションが値を持つかどうかを識別するファンクションです。

戻り値

BOOLEAN

指定した変数またはパーティションに値がある場合はFALSE、空の場合はTRUE。

構文

ISEMPTY( variable [(PARTITION partition [,PARTITION partition]...)])

パラメータ

variable

値を確認する変数の名前。

partition

値を確認する、変数の1つ以上のパーティションの名前(カンマ区切りで指定)。

ISINFINITE

ISINFINITEファンクションは、数式の値が無限大であるかどうかを示す値を返します。


関連項目:

このファンクションは、SQLの浮動小数点条件IS [NOT] INFINITEと同様の情報を返します(『Oracle Database SQL言語リファレンス』を参照)。

戻り値

BOOLEAN

expressionが+INF(NOTを指定していない場合は-INF)の場合、TRUEが返されます。それ以外の場合は、FALSEが返されます。


注意:

OLAP DMLは計算実行時に+INFまたは-INF値をNAに変換します。このため、このファンクションは、SQLで移入したデータベースからアナリティック・ワークスペースにインポートされた、OLAP DMLの計算にはまだ使用されていないデータに対して実行された場合にのみ、TRUEを返すことができます。

構文

ISINFINITE(expression)

パラメータ

expression

小数式。

ISNAN

ISNANファンクションは、数式の値が特殊なNaN値であるかどうかを示す値を返します。


関連項目:

このファンクションは、SQLの浮動小数点条件IS [NOT] NANと同様の情報を返します(『Oracle Database SQL言語リファレンス』を参照)。

戻り値

BOOLEAN

expressionが+NaN(NOTを指定していない場合は-NaN)の場合、TRUEが返されます。それ以外の場合は、FALSEが返されます。


注意:

OLAP DMLは計算実行時に+NaNまたは-NaN値をNAに変換します。このため、このファンクションは、SQLで移入したデータベースからアナリティック・ワークスペースにインポートされた、OLAP DMLの計算にはまだ使用されていないデータに対して実行された場合にのみ、TRUEを返すことができます。

構文

ISNAN(expression)

パラメータ

expression

小数式。

ISSESSION

ISSESSIONファンクションは、指定したディメンションの現在のメンバーが一時的なメンバー(つまり、MAINTAIN ADD SESSION文を実行して追加したメンバー)かどうかを判別します。

戻り値

BOOLEAN

メンバーが一時的なメンバーの場合はYESを、そうでない場合はNOを返します。

構文

ISSESSION( [RECURSIVE]dimension)

パラメータ

RECURSIVE

ベース・ディメンションを持つディメンションに対して、判別の際にOracle OLAPがベース・ディメンションの値をテストすることを指定します。

dimension

現在のメンバー値がOracle OLAPによってテストされるディメンションの名前。

ISVALUE

ISVALUEファンクションは、指定された値がディメンションまたはコンポジットにあるかどうかを調べます。


ヒント:

ディメンションの値がディメンションの現在のステータスにあるかどうかを判別する場合には、INSTATを使用します。

戻り値

BOOLEAN

構文

ISVALUE(namevalue)

パラメータ

name

チェックされるディメンションまたはコンポジットの名前。

コンポジットに名前がない場合、そのコンポジットを指すSPARSEキーワードを使用します(たとえば、SPARSE <market product>)。

value

調べる値。IDまたはTEXTディメンションの場合はテキスト・リテラルまたはテキスト式、INTEGERディメンションの場合はINTEGER、あるいはコンポジットおよび結合ディメンションの場合は山カッコで囲んだ値の組合せ。

例7-133 有効な値かどうかの確認

Packsproductディメンションの値であるかどうかを確認するとします。次の文によって生成される結果は、YESまたはNOです。

SHOW ISVALUE(product, 'Packs')

例7-134 論理位置番号の確認

結合ディメンションのベース・ディメンション値の論理位置番号を調べることができます。たとえば、marketおよびproductが結合ディメンションmarkprodのベース・ディメンションであるとします。次の文は、4番目のmarketディメンション値および3番目のproductディメンション値の組合せに割り当てられている値があるかどうかを調べます。

SHOW ISVALUE(markprod, '<4 3>')

JOINBYTES

JOINBYTESファンクションは、複数のテキスト値を単一行として結合します。

JOINBYTESは、NAの値を持つ引数を無視し、結合するテキストから改行を削除します。(複数行のテキスト式の改行を維持するには、INSCHARSファンクションを使用します。)また、結合される行の長さが32,767(結合される行の最大の長さ)を超える場合、JOINBYTESは自動的に改行して残りのバイトを次の行に移します。マルチバイト文字のバイトの間で改行が発生することもあります。この場合、JOINBYTESはいずれかのバイトの後で1行を終了し、その文字の次のバイトで次の行を開始します。

戻り値

TEXT

構文

JOINBYTES(first-expressionnext-expression...)

パラメータ

first-expression

JOINBYTESがnext-expressionに結合する式。first-expressionのデータ型がTEXTまたはNTEXT以外である場合、JOINBYTESはそれをTEXTに変換します。NTEXT式をTEXTに変換するには、CONVERTまたはTO_CHARファンクションを使用します。

next-expression

first-expressionと結合する1つ以上の式。連結する式のデータ型がTEXTまたはNTEXT以外である場合、JOINBYTESはそれをTEXTに変換します。NTEXT式をTEXTに変換するには、CONVERTまたはTO_CHARファンクションを使用します。

例7-135 JOINBYTESを使用した値の連結

この例は、JOINBYTESを使用して、2つの変数name.productおよびpriceの現行値を組み合せる方法を示します。変数priceのデータ型はDECIMALですが、JOINBYTESはその値を他のテキスト値と結合するために自動的にTEXTに変換します。

LIMIT product TO 'Canoes'
LIMIT month TO 'Dec96'

JOINBYTESファンクションをコールします。

JOINBYTES('Current Price for ' name.product ' is:  $' price)

次の値が返されます。

Current Price for Aluminum Canoes is:  $200.03 

JOINCHARS

JOINCHARSファンクションは、複数の非NA式を単一行テキストとして結合します。JOINCHARSは、結合するテキストから改行を削除します。(改行を維持するには、INSCHARSを使用します。)

結合される行の長さが32,767バイトを超える場合、JOINCHARSは自動的に改行して残りの文字を次の行に移します。マルチバイト文字のバイトの間で改行が発生する場合、JOINCHARSはマルチバイト文字を分割せず、かわりに、マルチバイト文字のすべてのバイトを次の行に移します。


ヒント:

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

戻り値

TEXTまたはNTEXT

戻り値のデータ型は、引数として指定する値のデータ型によって次のように異なります。

  • すべての引数がTEXT値である場合、戻り値はTEXTです。

  • すべての引数がNTEXT値である場合、戻り値はNTEXTです。

  • 引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

構文

JOINCHARS(first-expressionnext-expression...)

パラメータ

first-expression

JOINCHARSがnext-expressionに結合する式。first-expressionのデータ型がTEXTまたはNTEXT以外である場合、JOINCHARSはそれをTEXTに変換します。

next-expression...

first-expressionと結合する1つ以上の式。連結する式のデータ型がTEXTまたはNTEXT以外である場合、JOINCHARSはそれをTEXTに変換します。

例7-136 JOINCHARSを使用した値の連結

この例は、JOINCHARSを使用して、2つの変数name.productおよびpriceの現行値を組み合せる方法を示します。変数priceのデータ型はDECIMALですが、JOINCHARSはその値を他のテキスト値と結合するために自動的にTEXTに変換します。

LIMIT product TO 'Canoes'
LIMIT month TO 'Dec96'

JOINCHARSファンクションをコールします。

JOINCHARS('Current Price for ' name.product ' is:  $' price)

次の値が返されます。

Current Price for Aluminum Canoes is:  $200.03 

JOINCOLS

JOINCOLSファンクションは、2つ以上の複数行のテキスト値の対応する行を結合します。このファンクションは、最大32,767バイト(単一の連結行の最大長さ)までの連結された行から構成される複数行のテキスト値を返します。

戻り値の行の数は、行が最も多い引数式の行の数と常に同じです。これより行が少ない引数式に対しては、JOINCOLSはその式の最後の行を戻り値の後続の行で繰り返します。この繰返し機能は、引数式が空白、ハイフンなどの単一行セパレータである場合に便利です。例7-137「2つのテキスト式の列の結合」を参照してください。

戻り値

TEXTまたはNTEXT

すべての引数がTEXT値である場合、戻り値はTEXTです。すべての引数がNTEXT値である場合、戻り値はNTEXTです。引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

構文

JOINCOLS(first-expressionnext-expression...)

パラメータ

first-expression

JOINCOLSが行をnext-expressionの行に結合する式。式のデータ型がTEXTまたはNTEXT以外である場合、JOINCOLSはそれをTEXTに変換します。JOINCOLSは、値がNAである引数を無視します。

next-expression...

first-expressionと結合する1つ以上の式。連結する式のデータ型がTEXTまたはNTEXT以外である場合、JOINCOLSはそれをTEXTに変換します。JOINCOLSは、値がNAである引数を無視します。

例7-137 2つのテキスト式の列の結合

この例では、citylistの各行が引用符付きテキスト値およびcityrepsの対応する行と結合されます。

citylist値は、次のとおりです。

Boston
Houston
Chicago
Denver

cityrep値は、次のとおりです。

Brady
Lopez
Alfonso
Cody

JOINCOLSファンクションをコールします。

JOINCOLS(citylist ' -- ' cityreps)

次の値が返されます。

Boston -- Brady
Houston -- Lopez
Chicago -- Alfonso
Denver -- Cody 

JOINLINES

JOINLINESファンクションは、2つ以上の式の値を単一の複数行のテキスト値に結合します。複数行のテキスト値が結合される場合、先頭にくるのは最初の式のすべての行で、その後に2番目の式のすべての行と続きます。通常、JOINLINESの引数はテキスト値ですが、他のデータ型も可能です。

戻り値

TEXTまたはNTEXT

すべての引数がTEXT値である場合、戻り値はTEXTです。すべての引数がNTEXT値である場合、戻り値はNTEXTです。引数にTEXTとNTEXTの両方の値が存在する場合は、すべてのTEXT値がNTEXT値に変換されてからファンクションの演算が実行され、戻り値はNTEXTになります。

構文

JOINLINES(first-expression next-expression...)

パラメータ

first-expression

JOINLINESがnext-expressionを追加する式。式のデータ型がTEXTまたはNTEXT以外である場合、JOINLINESはそれをTEXTに変換します。JOINLINESは、値がNAである引数を無視します。

next-expression...

first-expressionと結合する1つ以上の式。連結する式のデータ型がTEXT以外である場合、JOINLINESはそれをTEXTに変換します。JOINLINESは、値がNAである引数を無視します。

例7-138 2つのテキスト式の行の結合

この例は、mktglistという名前の変数の最後に値Regionsを追加して新しいリストを作成する方法を示します。

mktglistの初期値は、次のとおりです。

Salespeople
Products
Services

次の文

newlist = JOINLINES(mktglist 'Regions')

newlistに次の結果が代入されます。

Salespeople
Products
Services
Regions 

KEY

KEYファンクションは、結合ディメンションまたはコンポジットの値に対して指定されたベース・ディメンションの値を返します。

戻り値

戻り値は、指定されたベース・ディメンションのデータ型によって異なります。

構文

KEY(dimension-expbase-dimension-exp)

パラメータ

dimension-exp

結合ディメンションまたはコンポジットの値を指定する式。結合ディメンションを指定した場合、KEYはステータスにある最初の値を使用します。コンポジットを指定した場合、KEYはコンポジットのすべてのベース・ディメンションについて、ステータスにある最初の値を使用します。

base-dimension-exp

ベース・ディメンション値を調べる対象である、以前に指定した結合ディメンションまたはコンポジットのベース・ディメンションの名前を表す式。

例7-139 結合に関するレポート

結合ディメンションによってディメンション化されたデータに関するレポートを生成するとします。KEYファンクションを使用すると、各結合ディメンション値のベース値を各行のラベルにすることができます。ベース値はそれぞれ別々の列に配置されるため見やすくなります。

次のプログラムの抜粋は、結合ディメンションproddistをループ処理しますが、このディメンションの値はproductおよびdistrictの組合せです。また、proddistによってディメンション化されるdsalesという名前の変数があるとします。

DEFINE proddist DIMENSION <product district>
LD Conjoint dimension made up of combinations of product and district values
DEFINE dsales VARIABLE DECIMAL <month proddist>
LD Sparse sales data made dense by dimensioning by conjoint dimension proddist

次のプログラムの抜粋は、3か月間のdsalesを表示します。結合ディメンション値のベース値はそれぞれ独立した列として表示されます。比較のため、2番目のループではKEYファンクションを使用せずに結合ディメンションを直接使用します。結合ディメンション値は1つの列で山カッコで囲まれて表示されます。

LIMIT month TO FIRST 3
FOR proddist
  ROW KEY(proddist district) KEY( proddist product) ACROSS month: dsales
BLANK 2
FOR proddist
  ROW W 25 proddist ACROSS month: dsales

このプログラムによって次のレポートが生成されます。

Boston         Tents       32,153.52  32,536.30  43,062.75
Denver         Canoes      45,467.80  51,737.01  58,437.11
Atlanta        Sportswear 114,446.26 123,164.92 138,601.64
<Tents, Boston>            32,153.52  32,536.30  43,062.75
<Canoes, Denver>           45,467.80  51,737.01  58,437.11
<Sportswear, Atlanta>     114,446.26 123,164.92 138,601.64