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

前
 
次
 

VALUES

VALUESファンクションは、ディメンションやディメンション・サロゲートのデフォルトのステータス・リストまたは現行のステータス・リストを返すか、または値セットの値を返すファンクションです。VALUESは、1行に1つのディメンション値が格納された複数行のテキスト値を返します。


注意:

コンポジットにはステータスがないため、VALUESファンクションとコンポジットを組み合せて使用することはできません。使用した場合、エラー・メッセージが表示されます。

戻り値

TEXT

構文

VALUES(dimension [keyword] [INTEGER])

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

keyword

ディメンションまたはサロゲートの現行のステータス・リストまたはデフォルトのステータス・リストが必要かどうかを指定する、次のいずれかのキーワード。

  • NOSTATUS: VALUESから返されるリストが、ディメンションまたはディメンション・サロゲートの現行のステータス・リストではなく、デフォルトのステータス・リストであることを指定します。

  • STATUS: VALUESから返されるリストが、ディメンションまたはディメンション・サロゲートの現行のステータス・リストであることを指定します(デフォルト)。

これらのキーワードは値セットには影響しません。値セットの場合は、NOSTATUSSTATUSのいずれかを指定しても、あるいは何も指定しなくても、この値セットのすべての値がVALUESから返されます。

INTEGER

INTEGERキーワードを使用すると、このファンクションからは、ディメンション値またはディメンション・サロゲート値ではなく、その位置番号が返されます。INTEGERと値セットを組み合せて使用すると、このファンクションからは、値セットではなく既存のディメンションでの値の位置番号が返されます。

使用上の注意

VALUESにかわる、STATUSキーワードを使用するLIMIT文の使用

Oracle OLAPで現在ステータス内にあるディメンション値を使用する場合、可能であれば、VALUES文を使用するのではなく、STATUSキーワードを使用するLIMITコマンド(値を使用)(または、同様の構成を持つLIMITファンクション)を使用してください。STATUSキーワードを使用するLIMITは、VALUES(dimname)文よりも効率的です。

VALUESとCHARLISTの比較

VALUESファンクションはCHARLISTファンクションと非常に似ています。VALUES(MONTH)ではCHARLIST(MONTH)と同じリストが返されます。

主な違いは次のとおりです。

  • ディメンションの場合、VALUESのNOSTATUSキーワードを指定すると、最初にディメンション値をALLに制限することなく、デフォルトのステータスが使用できます。

  • VALUESファンクションを使用すると、テキスト式を使用してディメンション名または値セット名を指定できます。例8-162「テキスト変数とともに使用するVALUES」を参照してください。

アンパサンド(&)に関する特別な注意事項

特定の環境では、ディメンション値の名前にアンパサンド(&)を使用すると、アンパサンド置換と解釈されます。この場合、エラー・メッセージが表示されます。

これは、テキスト式のタプルに特殊文字を使用すると、ディメンション値の名前に含まれる特殊文字がOracle OLAPに認識されるからです。たとえば、ディメンション値に名前を付ける場合などに、NewYorkではなくNew Yorkのように空白を挿入できます。名前にアンパサンドが含まれるディメンション値がある場合は、例8-163「アンパサンドを含むディメンション値の名前に関する回避策」を参照してください。

例8-160 値セットの値の表示

値セットの値を表示する方法として最も簡単なのは、SHOWまたはREPORT文でその値セットの名前を使用することです。また、VALUESを使用して値セットの値を表示することもできます。

たとえば、アナリティック・ワークスペースに、値Jan95May95およびDec95を持つmonthsetという値セットが格納されているとします。次の文によって、これらの値が表示されます。

SHOW VALUES(monthset)
Jan95
May95
Dec95

例8-161 ディメンションの位置番号の表示

VALUESを使用すると、ディメンションまたは値セットに存在する実際の値のかわりに、その位置番号を表示できます。この例では、INTEGERキーワードをディメンションではなく値セットとともに使用しているため、次に示すように、ファンクションからは、monthディメンションでの値の位置番号が返されます。

SHOW VALUES(monthset INTEGER)
61
65
72

したがって、値Jan95monthディメンションの61番目の値として、May95は65番目の値として、Dec95は72番目の値として表示されますが、これらはmonthsetでは、それぞれ1番目、2番目、3番目の値になります。

例8-162 テキスト変数とともに使用するVALUES

この例では、ディメンション名をテキスト変数に割り当てて、変数名自体ではなくVALUESファンクションのテキスト変数を使用する方法を示します。次に示すように、変数textvarに値districtが存在する場合、VALUES(textvar)の戻り値はdistrict値のリストになります。

textvar = 'district'
SHOW VALUES(textvar)
Boston
Atlanta
Chicago
Dallas
Denver
Seattle

VALUESファンクションではなくCHARLISTファンクションを使用してdistrictの値を表示するには、アンパサンドを使用する必要があります。

SHOW CHARLIST(&textvar)

プログラムにアンパサンドを使用するとパフォーマンスが低下する可能性があるため、このような場合はCHARLISTではなくVALUESを使用してください。

例8-163 アンパサンドを含むディメンション値の名前に関する回避策

ディメンション値の名前の文字としてアンパサンド(&)が含まれる場合、およびこのディメンションが結合ディメンションのベース・ディメンションである場合、タプルにディメンション値の名前が記述されているテキスト式は、特定の環境でエラーが発生する可能性があります。この例では、このようなエラーを回避する方法を示します。

次の文を使用して2つのディメンションを定義するとします。

DEFINE prod DIMENSION TEXT
DEFINE geog DIMENSION TEXT

次に、次の文を使用して2つの結合ディメンションを定義します。

DEFINE conj1 DIMENSION <prod geog>
DEFINE conj2 DIMENSION <prod geog>

次の文を実行すると、prodディメンションとgeogディメンションにディメンション値が追加されます。

MAINTAIN prod ADD 'prod1' 'prod&val2'
MAINTAIN geog ADD 'geog1' 'geog&val2'

次の文を実行すると、CONJ1結合ディメンションにタプル(ディメンション値の組合せ)が追加されます。

MAINTAIN conj1 ADD <'prod1' 'geog1'>
MAINTAIN conj1 ADD <'prod&val2' 'geog1'>

今度は、VALUEファンクションとMAINTAIN文を組み合せて使用し、前出の同じタプルをconj2結合ディメンションに追加します。次の文を使用しようとすると、エラー・メッセージが表示されます。

MAINTAIN conj2 ADD VALUES(conj1)
ERROR: (MXMSERR) val2 does not exist in any attached workspace.

このエラーが発生する理由は、ディメンション値の名前prod&val2のアンパサンドが、アンパサンド置換と解釈されるからです。

前出のMAINTAIN文を使用するかわりに、次の文を使用してタプルをCONJ2結合ディメンションに追加できます。

MAINTAIN conj2 MERGE < KEY(conj1 prod) KEY(conj1 geog) >