$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