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

前
 
次
 

VNF

VNFコマンドは、日付のみのデータ型(DATE)を持つオブジェクト(DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションを含む)の定義に値名書式(VNF)を割り当てるコマンドです。VNFは、日付のみの値の入力書式および表示書式を制御するテンプレートです。テンプレートには、期間を特定する構成要素(日、月、暦年、会計年度および会計年度内の期間)の書式を指定できます。


重要:

この文は、DATEデータ型のディメンション(つまり、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンション)についてのみ使用できます。SQLの日時データ型に対応する日時データ型を持つ時間ディメンションや、TEXT型の階層ディメンションとして実装されているディメンションには使用できません

VNFを割り当てる定義は、最新の定義または現行のセッション中に検討された定義である必要があります。そうでない場合は、最初にCONSIDER文を使用し、現行の定義にする必要があります。

構文

VNF [template]

パラメータ

template

現行のディメンションの値を入力および表示するための書式を指定するテキスト式。templateを省略すると、現行の定義の既存のVNFは削除され、デフォルトのVNFが適用されます(表2-5「DWMQYディメンションに対するデフォルトのVNF」を参照)。


注意:

VNFに準拠しないディメンション値を入力すると、Oracle OLAPは値を日付として解釈しようとします。「ディメンション値の日付としての入力」を参照してください。

テンプレートには、現行のディメンションの期間を説明するために使用する構成要素ごとにコードが記述されています。各構成要素のコードは、左の山カッコと右の山カッコで囲む必要があります。テンプレートのコーディングに関する基本的な情報は、表10-12「VNFテンプレートの構成要素の基本コード」表10-13「VNFテンプレートで許可されている構成要素の組合せ」および表10-14「VNFテンプレートで使用可能な日の書式スタイル」を参照してください。

表10-12「VNFテンプレートの構成要素の基本コード」には、期間の構成要素に関する基本コードが記載されています。6月に終了するQUARTERディメンションである、MYQTRというサンプル・ディメンションを使用しています。この例は、1995年7月1日から9月30日までの四半期を基にしています。期間コード(P)は、会計年度内の期間の数値的な位置を指定します。Pコードはすべてのディメンションに使用できますが、FFコードまたはFFBコードと組み合せて使用する場合に限定されます。Bコードは、開始期間を指定します。

表10-12 VNFテンプレートの構成要素の基本コード

コード 意味 値の例

<D>

期間が終了する日付

30

<M>

期間が終了する月

9

<YY>

期間が終了する暦年

95

<FF>

会計年度が終了する暦年で指定する、対象期間を含む会計年度

96

<DB>

期間が開始される日付

1

<MB>

期間が開始される月

7

<YYB>

期間が開始される暦年

95

<FFB>

会計年度が開始される暦年で指定する、対象期間を含む会計年度

95

<P>

対象期間の会計年度内における数値的な位置

1

<NAME>

ディメンションの名前

MYQTR


表10-13「VNFテンプレートで許可されている構成要素の組合せ」には、DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションごとに、VNFで組み合せることが可能な構成要素の組合せが記載されています。会計年度コード(FFまたはFFB)は、DAY、WEEK、MONTH、QUARTERまたはYEAR型のどのディメンションのテンプレートにも使用できます。ただし、会計年度コードは、WEEKディメンションや、フェーズ化されたMONTH、QUARTERおよびYEARディメンションでは特別な意味を持っています。その他のディメンションの場合、会計年度は暦年と同一です。「WEEK型のディメンションの会計年度」「MONTH、QUARTERまたはYEAR型のディメンションの会計年度」および「DAY型のディメンションの会計年度」を参照してください。

表10-13 VNFテンプレートで許可されている構成要素の組合せ

ディメンションの型 構成要素の組合せ 値の例

DAY、WEEK、MONTH、QUARTER、YEAR

<D> <M> <YY>

<DB> <MB> <YYB>

<P> <FF>

<P> <FFB>

31 3 96

1 4 95

1 96

1 95

MONTH、QUARTER、YEAR

<M> <YY>

<MB> <YYB>

<M> <FF>

<M> <FFB>

<MB> <FF>

<MB <FFB>

3 96

4 95

3 96

3 95

4 96

4 95

YEAR

<YY>

<FF>

<FFB>

96

96

95


表10-13「VNFテンプレートで許可されている構成要素の組合せ」に記載されている基本コードのかわりに、表10-14「VNFテンプレートで使用可能な日の書式スタイル」に記載されているいずれかの書式スタイルを代用できます。表10-13に記載されている構成要素のすべての組合せに<NAME>構成要素を追加できます。

構成要素の数が少なすぎるか多すぎるテンプレートは指定できません。VNFには、あいまいな部分のないディメンション値を入力できるようにする必要があります。「あいまいさを排除するためのVNFのコーディング」を参照してください。

ただし、特定の型のディメンションに使用できる構成要素の組合せのみを指定し、VNFで入力値の明確な解釈が可能な場合は、次に示すようにかなり柔軟にVNFテンプレートを指定できます。

  • 構成要素を任意の順序で指定できます。

  • 構成要素の前後や構成要素間にテキストを挿入できます。

表10-13「VNFテンプレートで許可されている構成要素の組合せ」に記載されている日、月、暦年、会計年度および期間の基本コードのかわりに、表10-14「VNFテンプレートで使用可能な日の書式スタイル」表10-15「VNFテンプレートで使用可能な月の書式スタイル」表10-16「VNFテンプレートで使用可能な年の書式スタイル」および表10-17「VNFテンプレートで使用可能な期間の書式スタイル」に記載されている書式スタイルを代用できます。

表10-14 VNFテンプレートで使用可能な日の書式スタイル

書式 意味 1995年1月3日 2051年11月12日

<D>

1桁または2桁

3

12

<DD>

2桁

03

12

<DS>

空白詰め、2桁

3

12


表10-15 VNFテンプレートで使用可能な月の書式スタイル

書式 意味 1995年1月3日 2051年11月12日
<M> 1桁または2桁 1 11
<MM> 2桁 01 11
<MS> 空白詰め、2桁 1 11
<MTXT> 先頭の3文字、大文字 JAN NOV
<MTXTL> 先頭の3文字、小文字 jan nov
<MTEXT> 完全名、大文字 JANUARY NOVEMBER

<MTEXTL>

完全名、小文字

january

november


MTXTMTXTLMTEXTおよびMTEXTLの場合、表示される実際の値は、次に示すようにMONTHNAMESオプションで指定した値によって異なります。

  • MTXTおよびMTEXTでは、MONTHNAMESオプションで指定した名前がすべて小文字の場合、名前全体が大文字に変換されます。そうでない場合は、最初の文字が大文字に変換され、2番目以降の文字は元のままです。

  • MTXTLおよびMTEXTLでは、MONTHNAMESオプションで指定した名前がすべて大文字の場合、名前全体が小文字に変換されます。そうでない場合は、最初の文字が小文字に変換され、2番目以降の文字は元のままです。

表10-16 VNFテンプレートで使用可能な年の書式スタイル

書式 意味 1995年1月3日 2051年11月12日

<YY>

2桁または4桁

95

2051

<YYYY>

4桁

1995

2051

<FF>

2桁または4桁

95

2051

<FFFF>

4桁

1995

2051


表10-17 VNFテンプレートで使用可能な期間の書式スタイル

書式 意味 1995年1月3日 2051年11月12日

<P>

1桁、2桁または3桁

3

316

<PP>

2桁または3桁

03

316

<PS>

空白詰め、2桁または3桁

3

316

<PPP>

3桁

003

316

<PPS>

空白詰め、3桁

3

316


使用上の注意

VNFの廃棄

あるディメンションのVNFを廃棄してデフォルトのVNFを使用するには、CONSIDER文を使用してディメンションの定義を現行の定義に設定してから、引数を指定せずにVNF文を使用します。

VNFテンプレートで山カッコをテキストとして指定する方法

テンプレート内に追加テキストとして山カッコを挿入するには、テキストとして挿入する山カッコごとに2つの山カッコを追加して指定します(たとえば、値全体を山カッコで囲んで表示するには、<<<D> <M> <YY>>>と指定します)。

月の名前

MTXTMTXTLMTEXTおよびMTEXTL書式の月の構成要素に使用される名前は、MONTHNAMESオプションの現行の設定から読み取ります。

会計年度コード

会計年度コード(FFまたはFFB)は、DAY、WEEK、MONTH、QUARTERまたはYEAR型のどのディメンションのテンプレートにも使用できます。

WEEK型のディメンションの会計年度

WEEK型のディメンションの場合、会計年度は、新しい暦年に終了する最初の期間(単一週または複数週)の開始日に始まります。会計年度は、期間全体が暦年に含まれる最終期間の最終日に終了します。

この定義は、WEEKディメンションの定義時にこのディメンションに指定した開始日または終了日にかかわらず有効です。ただし、会計年度では、(曜日または日付として)指定した開始日または終了日の曜日が考慮されます。

たとえば、myweekというWEEK型のディメンションを定義し、これに終了日が1995年6月2日(金曜日)の単一週の期間を設定したとします。1995年6月2日を含む会計年度は、1994年12月31日(日曜日)に始まり、1995年12月29日(金曜日)に終わります。myweekのVNFにFFコードがある場合、この会計年度は1995年と認識されます。VNFにFFBコードがある場合、会計年度は1994年と認識されます。

MONTH、QUARTERまたはYEAR型のディメンションの会計年度

開始フェーズや終了フェーズのないMONTH、QUARTERまたはYEAR型のディメンションの場合、会計年度は暦年と同一です。

開始フェーズや終了フェーズの設定されているMONTH、QUARTERまたはYEAR型のディメンションの場合、ディメンションの各会計年度は、開始フェーズの開始月から始まり、終了フェーズの終了月に終わります。

たとえば、MONTH型のディメンションであるmymonthを、3月に終了する4か月の期間と定義したとすると、各会計年度は4月1日に始まり3月31日に終わります。MYMONTHのVNFにFFコードを使用すると、1995年4月1日に始まり1996年3月31日に終わる会計年度は1996年と認識されます。FFBコードを使用すると、この会計年度は1995年と認識されます。

DAY型のディメンションの会計年度

DAY型のディメンションの場合、会計年度は暦年と同一です。

VNFにおける有効範囲外の年

VNFにYYYYBFFFFBのいずれかの書式が指定され、1950から2049年の範囲外となる年が表示の対象になっている場合、該当する年は4桁で表示されます。年を入力するときも、4桁すべてを入力する必要があります。

あいまいさを排除するためのVNFのコーディング

VNFテンプレートには、あいまいさを排除したディメンション値を入力できる必要があります。あいまいさを排除するには、VNFテンプレートをコーディングするときに次の制限事項を順守する必要があります。

  • 長さが指定されていないテキスト構成要素(たとえば、任意の長さの月の完全名を指定する<MTEXT>)の直後に文字を配置することは(構成要素のコードとリテラル・テキストのどちらの場合でも)できません。

  • 長さが指定されていない数値の構成要素(たとえば、1桁または2桁になる<M>や、2桁または4桁になる<YY>)の直後に数字を配置することは(構成要素のコードとリテラル・テキストのどちらの場合でも)できません。

モデル・ディメンションに対するVNFのコーディング

DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションに基づく方程式を含むモデルを定義した場合、このディメンションのVNFには、次の書式特性(値は文字で始まり、値には文字、数字、アンダースコアおよびピリオドのみが使用できる)を持つディメンション値を指定する必要があります。

ディメンション値の入力

VNFをDAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションに割り当てると、このディメンションに値を入力するためにデフォルトのVNFを使用することはできなくなります。設定したVNFの書式か、または日付として値を入力する必要があります。

VNF書式でのディメンション値の入力

VNF書式でディメンション値を入力する場合は、次のような柔軟性があります。

  • 文字は、(構成要素のコードとリテラル・テキストのどちらの場合でも)VNFに指定されている大文字の使用法に厳密に合せる必要はなく、大文字と小文字を自由に使用できます。

  • 月の名前の先頭の3文字を示す<MTXT>または<MTXTL>をテンプレートに指定した場合は、先頭の3文字から完全名まで、必要な文字数の月の名前を入力できます。長さが不定の月の名前を示す<MTEXT>または<MTEXTL>をテンプレートに指定した場合は、先頭の文字から完全名まで、必要な文字数の月の名前を入力できます。ただし、いずれの場合も、MONTHNAMESオプションで名前を一意に識別するために十分な文字数を入力する必要があります。たとえば、AprilとAugustを区別するには、少なくともこれらの名前の先頭の2文字を入力する必要があります。

  • ディメンション値の構成要素間やテキスト要素間には、空白を必要なだけ挿入できます。

  • 特定のディメンションの期間を指定するために必須ではない日付の構成要素がテンプレートに含まれる場合は、目的の期間内の任意の日付を指定できます。たとえば、テンプレート<DD><MTXT><YY><DD>構成要素は、MONTHディメンションの期間を指定するために必須の構成要素ではありません。したがって、1995年6月の場合、01JUN95から30JUN95までの任意の日付を指定できます。

ディメンション値の日付としての入力

DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションの値を日付として入力する場合は、DATEORDERの項に記載されているいずれかの入力スタイルを使用できます。日付として年月日をすべて指定すると、Oracle OLAPはDATEORDERオプションを使用してあいまいさを解消します。ただし、指定する必要があるのは、使用しているディメンションの型に該当する日付構成要素のみです。

  • DAYまたはWEEKディメンションの場合は、すべての構成要素(年、月、日)を入力する必要があります。

  • MONTHまたはQUARTERディメンションの場合は、月と年の構成要素のみを入力する必要があります。'0106'のようなあいまいな値を入力すると、あいまいさを解消するために、DATEORDERオプションの先頭の2文字が使用されます。したがってこの状況では、DATEORDERオプションをMYDまたはYMDにする必要があります。

  • YEARディメンションの場合、入力する必要があるのは年のみです。

VNFの変更

DAY、WEEK、MONTH、QUARTERまたはYEAR型のディメンションの値を表示する場合の柔軟性として、VNF引数を指定したCONVERTファンクションを使用して、ディメンションのVNF(およびディメンションに独自のVNFがない場合はデフォルトのVNF)を変更できることがあげられます。

CONVERTにVNF引数を指定すると、VNF文のテンプレート内で使用できるすべてのテンプレート・コードを記述できますが、この引数を指定しても、値の識別に必要な数よりも構成要素を過度に少なく指定したり多く指定したりすることができなくなるわけではありません。さらに、VNF引数を指定すると、VNFテンプレートでは許可されない追加コードを使用できます。

例10-173 MONTH型のディメンションへのVNFの割当て

次の文を実行すると、monthというMONTH型の既存のディメンションに対してVNFが割り当てられます。

CONSIDER month
VNF <mtextl>, <yyyy>

例10-174 MONTH型のディメンションへの値の追加

次の文を実行すると、VNFの<MTEXTL>コードで指定した完全名ではなく、月の名前を識別するのに必要十分な文字数を使用して、新しいVNFのスタイルでディメンション値が追加されます。

MAINTAIN month ADD 'JA, 1995' 'MAR, 1995'
Limit month TO LAST 3
REPORT month

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

MONTH
--------------
January, 1995
February, 1995
March, 1995

Oracle OLAPでは、MAINTAIN文で指定した期間の間にある期間が自動的に追加されます。

例10-175 VNFのWEEKへの割当て

次の文を実行すると、weekというWEEK型のディメンションが定義され、VNFがweekの定義に追加されて、値がweekディメンションに追加されます。

DEFINE week DIMENSION WEEK
VNF Week <p>.<ff>
MAINTAIN week ADD '01JAN95' '30JAN95'
REPORT week

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

WEEK
--------------
Week 1.95
Week 2.95
Week 3.95
Week 4.95
Week 5.95

MAINTAIN文を使用して値をweekディメンションに追加する場合は、新しい値をVNFに準拠する値ではなく、日付として指定できます。ただし、目的の書式で出力を表示するためにVNFが使用されます。