$AGGMAPプロパティは、ディメンション化された変数にあって変数のセッション・キャッシュ(存在する場合)にはないNA値の代替値として、指定のaggmapを使用して事前計算されていないデータを自動集計するよう指定するプロパティです。$AGGMAPプロパティを変数で使用すると、その変数に含まれる事前計算されていないデータを集計するためにAGGREGATEファンクションを明示的に使用する必要がなくなります。
変数が、USING句を含まないAGGREGATEコマンドのターゲットになる場合、Oracle OLAPでは、その変数の$AGGMAPプロパティで指定されたaggmapが使用されます。
構文
次のPROPERTY文を使用して、直近に定義または検討されたオブジェクト(DEFINEコマンドおよびCONSIDERコマンドを参照)に対し、$AGGMAPプロパティの追加または削除を行います。
プロパティを追加する場合は、次の文を発行します。
PROPERTY '$AGGMAP' agggmap-name
プロパティを削除する場合は、次の文を発行します。
PROPERTY DELETE '$AGGMAP'
例
例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プロパティを使用してmyaggmapをsalesのデフォルト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