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

前
 
次
 

4 OLAP DMLプロパティ

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

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

OLAP DMLプロパティの概要

プロパティは、アナリティック・ワークスペース・オブジェクトの定義に関連付けられた名前付きの値です。OLAP DMLのPROPERTYコマンドを使用すると、プロパティの名前付け、作成およびオブジェクトへの割当てができます。

$(ドル記号)で始まるプロパティは、Oracle OLAPによりシステム・プロパティとして認識されます。システム・プロパティは、作成はできませんが、オブジェクトへの割当ては可能な場合があります。具体的には、OLAP DMLと相互に関連するシステム・プロパティは割り当てることができます。

カテゴリ別のシステム・プロパティ

OLAP DMLには、様々なシステム・プロパティが用意されています。これらのシステム・プロパティを使用すると、次のような各処理の実行方法を指定するための値を設定または取得できます。

集計プロパティ
割当てプロパティ
グルーピングIDプロパティ
計算式プロパティ
言語プロパティ
NA値プロパティ

集計プロパティ


$AGGMAP
$AGGREGATE_FORCECALC
$AGGREGATE_FORCEORDER
$AGGREGATE_FROM
$AGGREGATE_FROMVAR
$COUNTVAR
$VARCACHE

割当てプロパティ


$ALLOCMAP

グルーピングIDプロパティ


$GID_DEPTH
$GID_LIST
$GID_TYPE

計算式プロパティ


$LOOP_AGGMAP
$LOOP_DENSE
$LOOP_TYPE
$LOOP_VAR

言語プロパティ


$DEFAULT_LANGUAGE

NA値プロパティ


$NATRIGGER
$STORETRIGGERVAL
$VARCACHE

$AGGMAP

$AGGMAPプロパティは、ディメンション化された変数にあって変数のセッション・キャッシュ(存在する場合)にはないNA値の代替値として、指定のaggmapを使用して事前計算されていないデータを自動集計するよう指定するプロパティです。$AGGMAPプロパティを変数で使用すると、その変数に含まれる事前計算されていないデータを集計するためにAGGREGATEファンクションを明示的に使用する必要がなくなります。

変数が、USING句を含まないAGGREGATEコマンドのターゲットになる場合、Oracle OLAPでは、その変数の$AGGMAPプロパティで指定されたaggmapが使用されます。

構文

次のPROPERTY文を使用して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$AGGMAPプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$AGGMAP' agggmap-name

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$AGGMAP'

パラメータ

aggmap-name

以前に定義されたaggmapオブジェクトの名前であるTEXT式。

例4-1 $AGGMAPを使用したデータの動的な集計


geogという階層ディメンションとyearという単純なディメンションがあり、これらによってディメンション化されているsalesという変数があるとします。この変数は詳細レベルのデータのみを保持しています。

2005年のConnecticutのsalesセルに対して明示的に値8000を指定するとします。これを行うには、次の代入文を発行すると、salesのレポートに値が表示されます。

sales (geog 'Connecticut' year '2005') = 8000
REPORT sales;
 
               -----------SALES-----------
               -----------YEAR------------
GEOG            2004   2005   2006   2007
-------------- ------ ------ ------ ------
Toronto         1,000  1,333  1,954  1,260
Norfolk         1,131  1,867  1,843  1,767
Montreal        1,571  1,754  1,316  1,905
Quebec City     1,914  1,728  1,386  1,847
Hartford        1,870  1,943  1,085  1,335
New Haven       1,684  1,330  1,458  1,402
Springfield     1,630  1,116  1,897  1,690
Boston          1,780  1,310  1,368  1,581
Ontario            NA     NA     NA     NA
Quebec             NA     NA     NA     NA
Connecticut        NA  8,000     NA     NA
Massachusetts      NA     NA     NA     NA
Canada             NA     NA     NA     NA
USA                NA     NA     NA     NA
All Geog           NA     NA     NA     NA

今度は、salesにaggmapを定義します。このaggmap定義では、次のように、Canadaの上位レベルのデータと最上位レベル(All Geog)のデータのみをAGGREGATEコマンドで集計するように指定しています。

DEFINE MYAGGMAP AGGMAP
AGGMAP
RELATION geogParentrel PRECOMPUTE ('Quebec' 'Ontario' 'Canada' 'All Geog')
END
 

次の文を発行するとします。

CONSIDER sales
PROPERTY '$AGGMAP' 'Myaggmap'
 

$AGGMAPプロパティを使用してmyaggmapsalesのデフォルトaggmapにした結果、salesに対する簡単なREPORT文でUSAのすべてのデータを集計できるようになります。(PRECOMPUTEとして指定していない値、および以前はNA値だった値のみが計算されている点に注意してください。明確に代入した2005年のConnecticutの値8,000は再計算されていません。)

REPORT sales
 
               -----------SALES-----------
               -----------YEAR------------
GEOG            2004   2005   2006   2007
-------------- ------ ------ ------ ------
Toronto         1,000  1,333  1,954  1,260
Norfolk         1,131  1,867  1,843  1,767
Montreal        1,571  1,754  1,316  1,905
Quebec City     1,914  1,728  1,386  1,847
Hartford        1,870  1,943  1,085  1,335
New Haven       1,684  1,330  1,458  1,402
Springfield     1,630  1,116  1,897  1,690
Boston          1,780  1,310  1,368  1,581
Ontario            NA     NA     NA     NA
Quebec             NA     NA     NA     NA
Connecticut     3,554  8,000  2,543  2,737
Massachusetts   3,410  2,426  3,265  3,271
Canada             NA     NA     NA     NA
USA             6,964  5,699  5,808  6,008
All Geog           NA     NA     NA     NA

AGGREGATEコマンドを使用してsalesを集計すると、salesのすべてのPRECOMPUTEセルの値が集計されます。

REPORT sales
 
               -----------SALES-----------
               -----------YEAR------------
GEOG            2004   2005   2006   2007
-------------- ------ ------ ------ ------
Toronto         1,000  1,333  1,954  1,260
Norfolk         1,131  1,867  1,843  1,767
Montreal        1,571  1,754  1,316  1,905
Quebec City     1,914  1,728  1,386  1,847
Hartford        1,870  1,943  1,085  1,335
New Haven       1,684  1,330  1,458  1,402
Springfield     1,630  1,116  1,897  1,690
Boston          1,780  1,310  1,368  1,581
Ontario         2,131  3,200  3,797  3,027
Quebec          3,485  3,482  2,702  3,752
Connecticut     3,554  8,000  2,543  2,737
Massachusetts   3,410  2,426  3,265  3,271
Canada          5,616  6,682  6,499  6,779
USA             6,964  5,699  5,808  6,008
All Geog       12,580 12,381 12,307 12,787

例4-2 AGGREGATEコマンドに対する$AGGMAPプロパティの影響

例4-3「$AGGREGATE_FROMプロパティの使用」では、例9-13「集計仕様におけるCACHE文の使用」に示されているAGGREGATEコマンドを次の文に簡略化する方法を説明します。

AGGREGATE sales_by_revenue USING revenue_aggmap

$AGGMAPプロパティをsales_by_revenue変数に定義すると、AGGREGATEコマンドをさらに簡略化できます。$AGGMAPプロパティをsales_by_revenue変数に定義するには、次の文を発行します。

CONSIDER sales_by_revenue
PROPERTY '$AGGMAP' 'revenue_aggmap'

これで、USING句を含まない次のAGGREGATEコマンドを発行することにより、データを集計できるようになります。

AGGREGATE sales_by_revenue

$AGGREGATE_FORCECALC

$AGGREGATE_FORCECALCプロパティには、AGGREGATEファンクションのFORCECALCキーワードで指定されるのと同じ動作が指定されます。変数に$AGGREGATE_FORCECALCプロパティを追加することにより、変数の集計が行われる際、そこで使用されるAGGREGATEファンクションにFORCECALCキーワードが含まれていない場合でも、この動作を確実に実行できます。

$AGGREGATE_FORCECALCプロパティおよびFORCECALCキーワードの両方により指定される動作とは、AGGREGATEファンクションにより変数の集計が行われる際、該当するセルに値が格納されている場合でも、変数のaggmapに含まれるRELATION(集計用)文のPRECOMPUTE句に指定されていない任意の値がOracle OLAPにより再計算されるというものです。PRECOMPUTE句で指定されていない値の再計算は、ユーザーが詳細データ・セルを変更し、動的計算集計セルに反映された変更値を参照できるようにする場合に必要な動作です。

構文

次のPROPERTY文を発行して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$AGGREGATE_FORCECALCプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$AGGREGATE_FORCECALC' 

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$AGGREGATE_FORCECALC'

$AGGREGATE_FORCEORDER

$AGGREGATE_FORCEORDERプロパティには、AGGREGATEコマンドまたはAGGREGATEファンクションのFORCEORDERキーワードで指定されるのと同じ動作が指定されます。変数に$AGGREGATE_FORCEORDERプロパティを追加することにより、変数の集計が行われる際、そこで使用されるAGGREGATE文にFORCEORDERキーワードが含まれていない場合でも、この動作を確実に実行できます。

$AGGREGATE_ORDERプロパティおよびFORCEORDERキーワードに指定される動作とは、集計に使用されるaggmapにRELATION(集計用)文がリストされているのと同じ順序で計算が行われるというものです。通常この動作は、集計を通して計算される一部の値が変更された場合に必要となります。この動作が指定されていない場合、変更された値は、AGGREGATEによる最適化の処理によって無視されます。(ただし、実行順序を強制すると、パフォーマンスが低下する場合があります。)

構文

次のPROPERTY文を発行して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$AGGREGATE_FORCEORDERプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$AGGREGATE_FORCEORDER' 

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$AGGREGATE_FORCEORDER'

$AGGREGATE_FROM

$AGGREGATE_FROMプロパティには、AGGREGATEコマンドまたはAGGREGATEファンクションのFROM句で指定されるのと同じ動作が指定されます。変数に$AGGREGATE_FROMプロパティを追加することにより、変数の集計が行われる際、そこで使用されるAGGREGATE文にFROM句が含まれていない場合でも、この動作を確実に実行できます。

$AGGREGATE_FROMプロパティおよびFROM句には、集計時に詳細データの取得元となるオブジェクトが指定されます。

構文

次のPROPERTY文を発行して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$AGGREGATE_FROMプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$AGGREGATE_FROM' fromspec

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$AGGREGATE_FROM'

パラメータ

fromspec

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

例4-3 $AGGREGATE_FROMプロパティの使用

例9-15「異なる変数への集計」では次のAGGREGATEコマンドを使用して、sales変数から計算された集計値がtotal_sales_exclud_north変数に移入されます。

AGGREGATE total_sales_exclud_north USING agg_sales_exclud_north FROM sales

次の文を発行することにより、$AGGREGATE_FROMプロパティをtotal_sales_exclud_north変数に定義できます。

CONSIDER total_sales_exclud_north
PROPERTY '$AGGREGATE_FROM' 'sales'

これで、FROM句を含まない次のAGGREGATEコマンドを発行することにより、データを集計できるようになります。

AGGREGATE total_sales_exclud_north USING agg_sales_exclud_north

$AGGREGATE_FROMVAR

$AGGREGATE_FROMVARプロパティには、AGGREGATEコマンドまたはAGGREGATEファンクションのFROMVAR句で指定されるのと同じ動作が指定されます。変数に$AGGREGATE_FROMVARプロパティを追加することにより、変数の集計が行われる際、そこで使用されるAGGREGATE文にFROMVAR句が含まれていない場合でも、この動作を確実に実行できます。

$AGGREGATE_FROMVARプロパティおよびFROMVAR句には、集計時に詳細データの取得元となる複数のオブジェクトが指定されます。

構文

次のPROPERTY文を発行して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$AGGREGATE_FROMVARプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$AGGREGATE_FROMVAR' textvar ACROSS dimname

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$AGGREGATE_FROMVAR'

パラメータ

textvar

キャップストーン集計時に詳細データを取得する対象になるオブジェクト名を指定する、任意のディメンション化された変数または計算式を指定するTEXT式。値を計算するときにノードが詳細データを必要としない場合は、NAを指定します。

ACROSS dimname

textvarにより指定されるオブジェクトにあるセルを検出するため、集計がループ処理するディメンションまたは名前付きコンポジットを指定します。textvarにより指定されるオブジェクトは計算式になるため、ループするディメンションを使用してスパース性を排除することにより、大きなパフォーマンス効果を実現できます。

例4-4 $AGGREGATE_FROMVARプロパティを使用したキャップストーン集計

例9-32「キャップストーン集計」では、次のAGGREGATEコマンドを使用して、最終キャップストーン集計が実行されています。

AGGREGATE sales_capstone76 USING capstone_aggmap FROMVAR capstone_source

次に示す文のように、sales-capstone76変数上に適切なFROMVARプロパティを作成する場合はFROMVAR句を省略できます。

CONSIDER sales_capstone76
PROPERTY '$AGGREGATE_FROMVAR'  'capstone_source'
AGGREGATE sales_capstone76 USING capstone_aggmap

$ALLOCMAP

$ALLOCMAPプロパティは、変数割当て用のデフォルトaggmapを指定するプロパティです。変数が、USING句を含まないALLOCATE文のターゲット変数になる場合、Oracle OLAPでは、このプロパティで指定されたaggmapが使用されます。

構文

次のPROPERTY文を使用して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$ALLOCMAPプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$ALLOCMAP' aggmap-name

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$AALLOCMAP'

パラメータ

aggmap-name

以前に定義されたALLOCMAP型のaggmapオブジェクトの名前を指定するTEXT式。

例4-5 $ALLOCMAPを使用したデフォルト割当て仕様の指定

例9-35「ロックを伴う再帰的均等割当て」では、次の文を使用して、projbudgmap割当て仕様によりprojbudget変数にデータを割り当てています。

ALLOCATE projbudget USING projbudgmap

次の文を発行することにより、projbudgmapprojbudget変数のデフォルト割当て仕様に指定できます。

CONSIDER projbudget
PROPERTY '$ALLOCMAP' "projbugmap'

これで、次の文を発行することにより、projbudgmap割当て仕様を使用してprojbudget変数にデータを割り当てることができます。

ALLOCATE projbudget

$COUNTVAR

$COUNTVARプロパティには、AGGREGATEコマンドまたはAGGREGATEファンクションのCOUNTVAR句で指定されるのと同じ動作が指定されます。変数に$COUNTVARプロパティを追加することにより、変数の集計が行われる際、そこで使用されるAGGREGATE文にCOUNTVAR句が含まれていない場合でも、この動作を確実に実行できます。

$COUNTVARプロパティおよびCOUNTVAR句に指定される動作とは、AVERAGE、HAVERAGE、HWAVERAGEまたはWAVERAGE演算子を持つRELATION(集計用)文について計算された集計値に加えられたリーフ・ノード数の非NAカウント数を格納する際、定義済の変数(Countvar変数とも呼ばれる)を使用するというものです。


注意:

平均集計値の格納には通常、ユーザー定義のCountvar変数ではなく、Oracle OLAPで生成されたAggcount変数が使用されます。圧縮コンポジットに対する平均演算子を持つRELATION(集計用)文が集計仕様に含まれる場合、Countvar変数は使用できません。詳細は、「Aggcount変数」を参照してください。

構文

次のPROPERTY文を使用して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$COUNTVARプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$COUNTVAR' countvar

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$COUNTVAR'

パラメータ

countvar

以前に定義されたCountvar変数の名前を指定するTEXT式。Countvar変数は、$COUNTVARプロパティを追加した変数と同一のディメンションが同じ順序で含まれているINTEGER変数である必要があります。

例4-6 $COUNTVARの使用

v1という名前の変数について、次の文を使用するとAGGREGATEファンクションによるmyaggmap aggmapオブジェクトの実行結果の集計値に加えられたリーフ・ノードの数がOracle OLAPによりカウントされます。

CONSIDER v1
PROPERTY '$COUNTVAR' 'mycountvar'

$DEFAULT_LANGUAGE

$DEFAULT_LANGUAGEプロパティは、ディメンションがその定義先のアナリティック・ワークスペースの言語ディメンションであることを示し、その言語ディメンションのデフォルトの言語を指定するプロパティです。


注意:

各アナリティック・ワークスペースには言語ディメンションが1つしか存在せず、$DEFAULT_LANGUAGEプロパティを指定できるのはその言語ディメンションのみです。


関連項目:

LOCK_LANGUAGE_DIMSSESSION_NLS_LANGUAGEおよびSTATIC_SESSION_LANGUAGEオプション

構文

言語ディメンションに対して$DEFAULT_LANGUAGEプロパティの追加または削除を行う場合は、そのディメンションを、直近に定義または検討されたオブジェクト(DEFINEおよびCONSIDERコマンドを参照)にする必要があります。$DEFAULT_LANGUAGEプロパティは、次のPROPERTY文を使用して追加します。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$DEFAULT_LANGUAGE' language

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$DEFAULT_LANGUAGE'

パラメータ

language

言語ディメンションに含まれる値または空の文字列を表すTEXT式。

使用上の注意

言語ディメンションに関連する処理

言語ディメンションは、$DEFAULT_LANGUAGEプロパティが定義されているディメンションです。各アナリティック・ワークスペースには言語ディメンションが1つしか存在しません。言語ディメンションに関連する処理は次のとおりです。

言語ディメンションの作成 言語ディメンションは次の手順に従って作成します。

  1. DEFINE DIMENSIONを使用してTEXTディメンションを定義します。

  2. サポートする言語名を言語ディメンションに移入します。言語名には、NLS_LANGUAGEに対して有効な値を使用する必要があります。

  3. $DEFAULT_LANGUAGEプロパティをディメンションに追加します。これにより、このディメンションは、Oracle OLAPにおいてアナリティック・ワークスペースの言語ディメンションとして認識されます。

言語ディメンションによりディメンション化された複数言語変数の定義 複数言語変数を作成するには、言語ディメンションを変数のディメンションに加えます(例4-8「言語ディメンションのアタッチ」を参照)。

言語ディメンション・ステータスの処理 言語ディメンションを持つアナリティック・ワークスペースがアタッチされると、Oracle OLAPでは次のように、言語ディメンションのステータスが初期化されます。

  1. 言語ディメンションにSESSION_NLS_LANGUAGEオプションの値が含まれている場合は、言語ディメンションがその値に制限されます。

  2. SESSION_NLS_LANGUAGEオプションに設定されている値が言語ディメンションに含まれていない場合、$DEFAULT_LANGUAGEプロパティに言語ディメンションの値が設定されていれば、言語ディメンションは、そのディメンションの$DEFAULT_LANGUAGEプロパティに指定されている言語に制限されます。

  3. SESSION_NLS_LANGUAGEオプションに設定されている値が言語ディメンションに含まれていないのに加え、言語ディメンションの$DEFAULT_LANGUAGEプロパティに値が設定されていない、もしくは存在しない値が指定されている場合、言語ディメンションは、ディメンションのデフォルトの順序における先頭の値に制限されます。

デフォルトでは、初期化後に言語ディメンション・ステータスは変更できません。ただし、LOCK_LANGUAGE_DIMSオプションの値をTRUEからFALSEに変更すれば、言語ディメンションのステータスはALLに変更され、ディメンションに対してLIMIT文を発行できるようになるため、言語ディメンション・ステータスの変更は可能になります。

言語ディメンションのエクスポート

EXPORT(EIF)を使用してアナリティック・ワークスペースをエクスポートする場合、Oracle OLAPでは、エクスポートする言語ディメンションの値が次の手順に従って決定されます。

  • EXPORT文が実行される際にLOCK_LANGUAGE_DIMSオプションの値がFALSEであれば、Oracle OLAPでは、現行の言語ディメンション・ステータスに従ってエクスポートが実行されます。

  • EXPORT文が実行される際にLOCK_LANGUAGE_DIMSオプションの値がTRUEの場合は、Oracle OLAPにより次の処理が行われます。

    1. EXPORT文が実行される前に、LOCK_LANGUAGE_DIMSオプションの値がFALSEに変更(したがってステータスはALLに設定)されます。

    2. EXPORT文が実行されます。言語ディメンションのすべての値がエクスポートされます。

    3. LOCK_LANGUAGE_DIMSオプションの値がTRUEに変更され、SESSION_NLS_LANGUAGEオプションの値に基づいて言語ディメンション・ステータスがリセットされます。

例4-7 言語ディメンションの作成

ここでは例として、mylangsという言語ディメンションを作成します。この言語ディメンションはデフォルト言語が英語で、フランス語と英語をサポートします。

NLS_LANGUAGE = 'AMERICAN'
DEFINE mylangs DIMENSION TEXT
MAINTAIN mylangs ADD 'FRENCH' 'AMERICAN'
CONSIDER mylangs
PROPERTY '$DEFAULT_LANGUAGE' 'AMERICAN'
 
SHOW OBJ(PROPERTY '$DEFAULT_LANGUAGE' 'mylangs')
AMERICAN
 
REPORT mylangs
MYLANGS
--------------
FRENCH
AMERICAN

例4-8 言語ディメンションのアタッチ

ここでは、myawというアナリティック・ワークスペースで、言語ディメンションmylangsを作成(例4-7「言語ディメンションの作成」を参照)したとします。また、次のような定義と値を持つproductsディメンションおよびprod-desc変数を作成したとします。

DEFINE MYLANGS DIMENSION TEXT
SHOW OBJ(PROPERTY '$DEFAULT_LANGUAGE' 'mylangs')
AMERICAN
 
DEFINE PRODUCTS DIMENSION TEXT
DEFINE PROD_DESC VARIABLE TEXT <PRODUCTS MYLANGS>

MYLANGS
--------------
FRENCH
AMERICAN
 
PRODUCTS
--------------
PROD01
PROD02
 
               ------PROD_DESC------
               ------PRODUCTS-------
MYLANGS          PROD01     PROD02
-------------- ---------- ----------
FRENCH         Pantalons  JupesAMERICAN       Trousers   Skirts
 

アナリティック・ワークスペースをアタッチするとします。アナリティック・ワークスペースのオプションを表示し、mylangsおよびprod_descのレポートを要求すると、mylangsディメンションが、SESSION_NLS_LANGUAGEオプションの値であるAMERICAN(英語)に制限されていることがわかります。

SHOW NLS_LANGUAGE
AMERICAN
AW ATTACH myaw RW
" Get the default language in our language dimension
SHOW OBJ(PROPERTY '$DEFAULT_LANGUAGE' 'mylangs')
AMERICAN
SHOW SESSION_NLS_LANGUAGE
AMERICAN
SHOW LOCK_LANGUAGE_DIMS
yes
SHOW STATIC_SESSION_LANGUAGE
no

REPORT mylangs

MYLANGS
--------------
AMERICAN
 
REPORT prod_desc
               ------PROD_DESC------
               ------PRODUCTS-------
MYLANGS          PROD01     PROD02
-------------- ---------- ----------
AMERICAN       Trousers   Skirts

例4-9 NLS_LANGUAGEの変更

例4-8「言語ディメンションのアタッチ」で説明したアナリティック・ワークスペースmyawをアタッチしたとします。NLS_LANGUAGEの値をFRENCH(フランス語)に変更します。STATIC_SESSION_LANGUAGEの値がNOに設定されているため、NLS_LANGUAGEの値の変更によって、SESSION_NLS_LANGUAGEオプションの値がFRENCHに変更されます。mylangsおよびprod_descのレポートに表示されているとおり、SESSION_NLS_LANGUAGEオプションの値がFRENCHになれば、mylangsディメンションはフランス語に制限されます。

SET NLS_LANGUAGE= 'FRENCH'
SHOW OBJ(PROPERTY '$DEFAULT_LANGUAGE' 'mylangs')
AMERICAN
SHOW NLS_LANGUAGE
FRENCH
SHOW SESSION_NLS_LANGUAGE
FRENCH
SHOW LOCK_LANGUAGE_DIMS
oui
SHOW STATIC_SESSION_LANGUAGE
non

REPORT mylangs
MYLANGS
--------------
FRENCH
 
REPORT prod_desc
               ------PROD_DESC------
               ------PRODUCTS-------
MYLANGS          PROD01     PROD02
-------------- ---------- ----------
FRENCH         Pantalons  Jupes

例4-10 NLS_LANGUAGEを言語ディメンションに指定されていない値に設定する

アナリティック・ワークスペースmyaw(例4-9「NLS_LANGUAGEの変更」を参照)において、NLS_LANGUAGEの値をまずAMERICANに設定し、続いてSPANISH(スペイン語)に設定します。次のコードに示されているとおり、言語ディメンションmylangsにはSPANISHという値は指定されていないため、mylangsディメンションは$DEFAULT_LANGUAGEプロパティの値(ここではAMERICAN)に制限されます。

"Change the value of NLS_LANGUAGE to AMERICAN
SET NLS_LANGUAGE= 'AMERICAN'
"Change the value of NLS_LANGUAGE to SPANISH
SET NLS_LANGUAGE= 'SPANISH'
 
SHOW OBJ(PROPERTY '$DEFAULT_LANGUAGE' 'mylangs')
AMERICAN
 
SHOW NLS_LANGUAGE
SPANISH
 
SHOW SESSION_NLS_LANGUAGE
SPANISH
 
SHOW LOCK_LANGUAGE_DIMS
sí

SHOW STATIC_SESSION_LANGUAGE
no
 
REPORT mylangs
MYLANGS
--------------
AMERICAN
 
REPORT prod_desc
               ------PROD_DESC------
               ------PRODUCTS-------
MYLANGS          PROD01     PROD02
-------------- ---------- ----------
AMERICAN       Trousers   Skirts

次のコードを使用し、デフォルトの言語を指定しないで言語ディメンションmylangsを定義したとします。

DEFINE mylangs DIMENSION TEXT
MAINTAIN mylangs ADD 'FRENCH' 'AMERICAN'
CONSIDER mylangs
PROPERTY '$DEFAULT_LANGUAGE' ''

この場合、NLS_LANGUAGEの値をSPANISHに設定すると、言語ディメンションmylangsには$DEFAULT_LANGUAGEプロパティに指定された値が含まれていないため、mylangsディメンションは、その先頭の値(ここではFRENCH)に制限されます。

NLS_LANGUAGE = 'SPANISH'
SHOW OBJ(PROPERTY '$DEFAULT_LANGUAGE' 'mylangs')

SHOW NLS_LANGUAGE
SPANISH
SHOW SESSION_NLS_LANGUAGE
SPANISH
SHOW LOCK_LANGUAGE_DIMS
sí
SHOW STATIC_SESSION_LANGUAGE
no

REPORT mylangs
MYLANGS
--------------
FRENCH

REPORT prod_desc
               ------PROD_DESC------
               ------PRODUCTS-------
MYLANGS          PROD01     PROD02
-------------- ---------- ----------
FRENCH         Pantalons  Jupes

$GID_DEPTH

$GID_DEPTHプロパティは、GROUPINGIDコマンドでグルーピングIDリレーションが移入されると自動的に作成および設定されます。このプロパティには、追加先グルーピングIDリレーション内のグルーピングIDのレベル数が指定されます。

構文

$GID_DEPTHプロパティは明示的には定義できません。グルーピングIDリレーションの$GID_DEPTHプロパティは、GROUPIONGIDコマンドの実行でそのリレーションが作成されたときに自動的に作成されます。

$GID_DEPTH = intlevels

パラメータ

intlevels

グルーピングIDのレベル数を指定するINTEGER値。

$GID_LIST

$GID_LISTプロパティには、リレーション内にグルーピングIDを作成する際に使用するレベルの名前が格納されます。このリレーションは、GROUPINGIDコマンドがROLLUPまたはGROUPSETキーワードを伴って実行されたときに作成されます。

構文

$GID_LISTプロパティは明示的には定義できません。グルーピングIDリレーションの$GID_LISTプロパティは、ROLLUPまたはGROUPSETキーワードを伴うGROUPIONGIDコマンドの実行によってそのリレーションが作成されたときに、自動的に作成されます。

$GID_LIST = levels

パラメータ

levels

グルーピングIDの作成対象となるディメンション階層のハイフン(-)で区切られたレベルを表すTEXT式。

$GID_TYPE

$GID_TYPEプロパティは、GROUPINGIDコマンドをROLLUPまたはGROUPSETキーワードとともに実行してグルーピングIDリレーションが移入されたときに、自動的に作成および設定されます。このプロパティには、グルーピングIDのグループ化のタイプが指定されます。

構文

$GID_TYPEプロパティは明示的には定義できません。グルーピングIDリレーションの$GID_TYPEプロパティは、ROLLUPまたはGROUPSETキーワードを伴うGROUPIONGIDコマンドの実行によってそのリレーションが作成されたときに、自動的に作成されます。

$GID_TYPE = ROLLUP | GROUPSET

パラメータ

ROLLUP

グルーピングIDがロールアップ・タイプであることを指定します。

このタイプのグループ化の詳細は、『Oracle Database SQL言語リファレンス』でSQL SELECT文のROLLUP CUBE句におけるROLLUPの説明を参照してください。

GROUPSET

グルーピングIDがグループ化設定タイプであることを指定します。

このタイプのグループ化の詳細は、『Oracle Database SQL言語リファレンス』でSQL SELECT文のGROUPING SETS句におけるグルーピング・セットの説明を参照してください。

$LOOP_AGGMAP

$LOOP_AGGMAPプロパティは、SQL OLAP_TABLEファンクションがLOOP OPTIMIZED句を伴って実行されたときに代入された、その計算式のループ処理方法の決定に使用されます。Oracle OLAPが計算式を含むUNION副次句を生成するときに使用するaggmapオブジェクトの名前を、このプロパティに指定します。変数に関連付けられているその他のすべてのaggmap(変数に$AGGMAPプロパティが指定されたaggmapなど)は、このプロパティに指定する値で上書きされ、計算式の基礎となる変数が別のaggmapと関連付けられている場合に、Oracle OLAPが使用するaggmapを明確にするためにこの値を使用できます。


参照:

OLAP_TABLEでのループ処理の詳細は、LOOP句に関する説明を参照してください。

構文

次のPROPERTY文を使用して、直近に定義または検討された計算式(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$LOOP_AGGMAPプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$LOOP_AGGMAP' agggmap-name

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$LOOP_AGGMAP'

パラメータ

aggmap_name

aggmapオブジェクトの名前。

$LOOP_DENSE

$LOOP_DENSEプロパティは、OLAP_TABLE SQLファンクションがLOOP OPTIMIZED句を伴って実行されたときに代入された、その計算式のループ処理方法の決定に使用されます。このプロパティは、計算式に対して稠密なループ処理を行うことを指定します(つまり、値のないメンバー・セルも含め、すべての計算式のタプルに対してループ処理が行われます)。


関連項目:


構文

次のPROPERTY文を使用して、直近に定義または検討された計算式(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$LOOP_DENSEプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$LOOP_DENSE' dimension_list

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$LOOP_DENSE'

パラメータ

dimension_list

計算式の1つ以上のディメンション名(カンマ区切り)。

$LOOP_TYPE

$LOOP_TYPEプロパティは、複数の変数を含む計算式が、LOOP OPTIMIZED句を持つOLAP_TABLE SQLファンクションで使用されたときに、その計算式のループ処理方法を指定します。ループ処理のタイプは、計算式にNVLなどのNA対応ファンクションが含まれるとき、またはNULL TRACKINGが無効な場合に返される数値行およびパフォーマンスに影響を与える可能性があります。NULLトラッキングについては、「NA2ビットとNULLトラッキング」を参照してください。

構文

次のPROPERTY文を使用して、直近に定義または検討された計算式(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$LOOP_TYPEプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$LOOP_TYPE' {'DENSE' | 'INNER' | 'OUTER'}

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$LOOP_TYPE'

パラメータ

DENSE

タプルの可能なすべての組合せに対する変数値を返します。コンポジットに対してNULLトラッキングが指定されていない場合は、存在しないデータおよび意図的にNULLにした値に対してNA値を受け取ります。

DENSEは、SQL SELECT文のcross結合に似ています。結果的に、変数のすべてのベース・ディメンションのデカルト積になります。

INNER

(デフォルト) タプルがすべての変数にデータを持っている場合にのみ、変数値を返します。NVL値を含みません。

INNERは、SQLの内部結合に似ています。

OUTER

タプルが変数のいずれかにデータを持っている場合に、変数値を返します。NVL値を含みます。

OUTERは、SQLの外部結合に似ています。

$LOOP_VAR

$LOOP_VARプロパティは、OLAP_TABLE SQLファンクションがLOOP OPTIMIZED句を伴って実行されたときに、代入先の計算式を当該プロパティに指定された変数またはQDRと同様にループ処理することを指定するプロパティです。


関連項目:


構文

次のPROPERTY文を使用して、直近に定義または検討された計算式(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$LOOP_VARプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$LOOP_VAR' qdr | variable

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$LOOP_VAR'

パラメータ

qdr

計算式のディメンションに対するQDR。

variable

計算式と同じディメンションの変数。

$NATRIGGER

$NATRIGGERプロパティには、ディメンション化された変数にあって変数のセッション・キャッシュ(存在する場合)にはないNA値に対するOracle OLAP用の代替値が指定されます。値を計算するため、Oracle OLAPは「Oracle OLAPがNA値を持つ変数のデータを計算する方法」で説明されている手順を実行します。計算の結果は、「$NATRIGGERの結果を格納またはキャッシュするかどうかのOracle OLAPによる決定方法」で説明されているように、変数に格納されるか、変数のセッション・キャッシュにキャッシュされるかのどちらかです。


注意:

変数の集計を実行する場合は、$NATRIGGERプロパティではなく、$AGGMAPプロパティを使用します。

構文

次のPROPERTY文を使用して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$NATRIGGERプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$NATRIGGER' value

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$NATRIGGER'

パラメータ

value

プロパティの値であるTEXT式。テキストは、計算式の定義に有効なものであればどのような式でもかまいません。

使用上の注意

Oracle OLAPがNA値を持つ変数のデータを計算する方法

ディメンション化された変数のデータを計算する際、Oracle OLAPは変数の各セルについて次の手順を使用します。

  1. 変数にセッション・キャッシュがあるか。

    • あり。手順2に進みます。

    • ない場合は、手順3に進みます。

  2. 変数のセッション・キャッシュ内のセルにNA値があるか。

    • あり。手順3に進みます。

    • ない場合は、手順7に進みます。

  3. 変数の格納内のセルにNA値があるか。

    • あり。手順4に進みます。

    • ない場合は、手順7に進みます。

  4. 変数に$AGGMAPプロパティが設定されているか。

    • あり。$AGGMAPプロパティに指定されているaggmapを使用して変数を集計してから、手順5に進みます。

    • 設定されていない場合は、手順6に進みます。

  5. 変数を集計した後のセルの値は何か。

    • NAの場合は、手順6に進みます。

    • 非NAの場合は、手順7に進みます。

  6. 変数に$NATRIGGERプロパティが設定されているか。

    • あり。$NATRIGGERプロパティに指定されている式を実行してから、手順7に進みます。

    • ない場合は、手順7に進みます。

  7. データを計算します。

  8. 必要に応じて、NAFILLファンクション、またはNASKIP、NASKIP2、NASPELLのいずれかのオプションを適用します。

再帰的または相互に再帰的に設定するNAトリガー

トリガー・オブジェクトを値式に含めることにより、NAトリガーを再帰的または相互に再帰的にできます。計算式、プログラムまたは他の$NATRIGGER式の実行中に再びトリガー式が実行されるようにするには、RECURSIVEオプションをYESに設定する必要があります。同時に実行可能なトリガーの数を制限するには、TRIGGERMAXDEPTHオプションを参照してください。

コンポジットを持つ$NATRIGGERの使用

コンポジットによりディメンション化される変数に$NATRIGGER式を設定できますが、Oracle OLAPはコンポジット内に存在するディメンション値の組合せに対してのみ$NATRIGGER式を評価します。

EXPORTおよびAGGREGATEにより無視される$NATRIGGER

AGGREGATEコマンドおよびAGGREGATEファンクションは、集計処理中、変数の$NATRIGGERプロパティ設定を無視します。格納された値のみが文によりフェッチされ、$NATRIGGER式は実行されません。$NATRIGGERプロパティは、他の操作に対しては引き続き有効です。

Oracle OLAPでは、EXPORT(EIF)文が実行される際、エクスポートの対象が変数のみの場合は、変数の$NATRIGGERプロパティ式は評価されません。ただし、変数が、エクスポート操作時にOracle OLAPにより計算される式の一部である場合、Oracle OLAPは$NATRIGGERプロパティ式を評価します。

例4-11 $NATRIGGERプロパティの変数への追加

次の文は、3つの値を持つディメンションを定義し、そのディメンションによりディメンション化される変数を定義します。次に、$NATRIGGERプロパティを変数に追加して、値を変数の1つのセルに含め、他のセルを空のままにしてそれらの値をNAにします。最後に、変数のセルの値をレポートします。

DEFINE d1 INTEGER DIMENSION
MAINTAIN d1 ADD 3
DEFINE v1 DECIMAL <d1>
PROPERTY '$NATRIGGER' '500.0'
v1(d1 1) = 333.3
REPORT v1

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

D1            V1
--------- ----------
        1     333.3
        2     500.0
        3     500.0

$STORETRIGGERVAL

$STORETRIGGERVALプロパティは、$NATRIGGER式が実行される際、Oracle OLAPが変数のNA値を式の結果で置き換えるかどうかを指定するためのプロパティです。


注意:

$STORETRIGGERVALプロパティの持つ機能は$VARCACHEプロパティに含まれているため、アプリケーションでは通常、$STORETRIGGERVALプロパティではなく$VARCACHEプロパティが使用されます。

構文

次のPROPERTY文を使用して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$STORETRIGGERVALプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$STORETRIGGERVAL' value

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$ASTORETRIGGERVAL'

パラメータ

value

プロパティの値を含むブール式。

例4-12 $NATRIGGERプロパティ値の格納

次の文を実行するとOracle OLAPでは、式の評価の際に$NATRIGGER式の値がv1変数のNAセルに格納されます

TRIGGERSTOREOK = yes
CONSIDER v1
PROPERTY '$STORETRIGGERVAL' yes 

$VARCACHE

$VARCACHEプロパティは、AGGREGATEファンクションまたは$NATRIGGER式の実行結果である変数データを、Oracle OLAPが格納またはキャッシュするかどうかを指定するプロパティです。

構文

次のPROPERTY文を使用して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$VARCACHEプロパティの追加または削除を行います。

  • プロパティを追加する場合は、次の文を発行します。

    PROPERTY '$VARCACHE' value

  • プロパティを削除する場合は、次の文を発行します。

    PROPERTY DELETE '$VARCACHE'

パラメータ

value

AGGREGATEファンクションまたは$NATRIGGER値の実行時に実行される計算の結果である変数データを、Oracle OLAPが配置する場所を示す次のいずれかのTEXT式。

  • VARIABLEは、AGGREGATEファンクションまたは$NATRIGGERプロパティの実行結果であるデータを変数に移入するように指定します。このオプションを指定した場合、集計結果のデータは、アナリティック・ワークスペースを更新またはコミットしたとき、永続的に変数に格納されます。

  • SESSIONは、AGGREGATEファンクションまたは$NATRIGGERプロパティの実行結果であるデータをセッション・キャッシュにキャッシュするように指定します(「Oracle OLAPセッション・キャッシュの概要」を参照)。このオプションを指定した場合、AGGREGATEファンクションまたは$NATRIGGERプロパティの実行結果であるデータは、更新時やコミット時には無視され、セッション後に廃棄されます。


    重要:

    SESSCACHEがNOに設定されている場合、SESSIONを指定してもOracle OLAPはデータをキャッシュしません。この場合、SESSIONの指定は、NONEの指定と同じことになります。

  • NONEは、AGGREGATEファンクションまたは$NATRIGGER値が実行されるたびに新しい変数データを計算するように指定します。データは格納もキャッシュもされません。

  • DEFAULTは、AGGREGATEファンクションによって計算されたデータの処理方法を決定する際に、Oracle OLAPが$VARCACHEプロパティを使用しないように指定します。(「集計データを格納またはキャッシュするかどうかのOracle OLAPによる決定方法」を参照してください。)

使用上の注意

$NATRIGGERの結果を格納またはキャッシュするかどうかのOracle OLAPによる決定方法

$NATRIGGER式が実行される際、式の実行結果である変数データをOracle OLAPが処理する方法は、$NATRIGGERプロパティを含む変数に$STORETRIGGERVALプロパティも含まれるかどうかに基づいて決定され、含まれない場合は$NATRIGGERプロパティの値がAGGREGATEファンクションであるかどうかに基づいて決定されます。

$NATRIGGER式が実行されると、Oracle OLAPでは次のプロセスに沿って処理方法が決定されます。

  1. $NATRIGGERプロパティを含む変数に、$STORETRIGGERVALプロパティも含まれているか。含まれている場合は、Oracle OLAPは手順1aに進みます。含まれていない場合は、Oracle OLAPは手順2に進みます。

    1. TRIGGERSTOREOKオプションの値は、YESか、それともNOか。YESの場合は、Oracle OLAPは手順1bに進みます。NOの場合は、Oracle OLAPは手順2に進みます。

    2. $STORETRIGGERVALプロパティの値は、YESか、それともNOか。YESの場合は、Oracle OLAPは$NATRIGGER式の結果を格納し、決定のプロセスを終了します。NOの場合は、Oracle OLAPは$NATRIGGER式の結果を格納せず、決定のプロセスを終了します。

  2. $NATRIGGER式はAGGREGATEファンクションか。当てはまる場合、Oracle OLAPは「集計データを格納またはキャッシュするかどうかのOracle OLAPによる決定方法」で説明されている手順に従って、$NATRIGGER式の実行結果の処理方法を決定します。当てはまらない場合、Oracle OLAPは手順3に進みます。

  3. $NATRIGGERプロパティを含む変数には$VARCACHEプロパティも含まれるか。含まれている場合は、Oracle OLAPは手順4に進みます。含まれていない場合は、Oracle OLAPは手順5に進みます。

  4. $VARCACHEプロパティに、DEFAULTの値が含まれるか。含まれている場合は、手順5に進みます。含まれない場合、Oracle OLAPは$VARCACHEプロパティの値(つまりSTORECACHEまたはNONE)を使用して、$NATRIGGER式の実行結果である変数データ値の処理方法を決定し、決定のプロセスを終了します。

  5. VARCACHEオプションの現行設定を使用して、$NATRIGGER式の実行結果である変数データ値の処理方法を決定し、決定のプロセスを終了します。

集計データを格納またはキャッシュするかどうかのOracle OLAPによる決定方法

AGGREGATEコマンドを実行すると、Oracle OLAPは代入文の結果を格納する場合と同様の方法で、常に計算結果を変数に直接格納します。ただし、AGGREGATEファンクションが実行される際、Oracle OLAPは、計算結果を直接変数に格納する場合と、セッション・キャッシュにキャッシュする場合があります。(セッション・キャッシュの詳細は、「Oracle OLAPセッション・キャッシュの概要」を参照してください。)

AGGREGATEファンクションの実行結果であるデータを格納する場所を決定するため、Oracle OLAPでは次のプロセスに沿って、集計された変数データを格納またはキャッシュするかどうかが判断されます。

  1. 現行のAGGREGATEファンクションにより使用されているaggmapの仕様に、CACHE文が含まれているか。含まれている場合は、Oracle OLAPは手順2に進みます。含まれていない場合、Oracle OLAPは手順3に進みます。

  2. CACHE文は、CACHE DEFAULT文か。当てはまる場合、Oracle OLAPは手順3に進みます。当てはまらない場合、Oracle OLAPは集計仕様のCACHE文を使用して、計算結果である変数データの処理方法を決定し、決定のプロセスを終了します。

  3. 集計される変数には$VARCACHEプロパティが含まれるか。含まれている場合は、Oracle OLAPは手順4に進みます。含まれていない場合は、Oracle OLAPは手順5に進みます。

  4. $VARCACHEプロパティに、DEFAULTの値が含まれるか。含まれている場合は、Oracle OLAPは手順5に進みます。含まれていない場合、Oracle OLAPは$VARCACHEプロパティの値を使用して、AGGREGATEファンクションによって計算される変数データの処理方法を決定し、決定のプロセスを終了します。

  5. VARCACHEオプションの現行設定を使用して、AGGREGATEファンクションによって計算される変数データの処理方法を決定します。決定のプロセスが終了します。

例4-13 $VARCACHEプロパティの設定

v1という名前の変数について、次の文を使用すると、Oracle OLAPはAGGREGATEファンクションまたは$NATRIGGER式の実行結果である変数データをキャッシュします。

CONSIDER v1
PROPERTY '$SVARCACHE' 'v1'