VALUESファンクションは、ディメンションやディメンション・サロゲートのデフォルトのステータス・リストまたは現行のステータス・リストを返すか、または値セットの値を返すファンクションです。VALUESは、1行に1つのディメンション値が格納された複数行のテキスト値を返します。
注意: コンポジットにはステータスがないため、VALUESファンクションとコンポジットを組み合せて使用することはできません。使用した場合、エラー・メッセージが表示されます。 |
パラメータ
値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。
ディメンションまたはサロゲートの現行のステータス・リストまたはデフォルトのステータス・リストが必要かどうかを指定する、次のいずれかのキーワード。
NOSTATUS: VALUESから返されるリストが、ディメンションまたはディメンション・サロゲートの現行のステータス・リストではなく、デフォルトのステータス・リストであることを指定します。
STATUS: VALUESから返されるリストが、ディメンションまたはディメンション・サロゲートの現行のステータス・リストであることを指定します(デフォルト)。
これらのキーワードは値セットには影響しません。値セットの場合は、NOSTATUS
とSTATUS
のいずれかを指定しても、あるいは何も指定しなくても、この値セットのすべての値がVALUESから返されます。
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を使用して値セットの値を表示することもできます。
たとえば、アナリティック・ワークスペースに、値Jan95
、May95
およびDec95
を持つmonthset
という値セットが格納されているとします。次の文によって、これらの値が表示されます。
SHOW VALUES(monthset) Jan95 May95 Dec95
例8-161 ディメンションの位置番号の表示
VALUESを使用すると、ディメンションまたは値セットに存在する実際の値のかわりに、その位置番号を表示できます。この例では、INTEGERキーワードをディメンションではなく値セットとともに使用しているため、次に示すように、ファンクションからは、month
ディメンションでの値の位置番号が返されます。
SHOW VALUES(monthset INTEGER) 61 65 72
したがって、値Jan95
はmonth
ディメンションの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) >