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

前
 
次
 

OLAP_EXPRESSION_BOOL

OLAP_EXPRESSION_BOOLは、OLAP_TABLEファンクションのコンテキスト内でOLAP DMLブール式を動的に実行するSQLファンクションです。このファンクションを使用すると、戻り値としてカスタム・メジャーを取得できる他、WHERE句やORDER BY句内で使用してアナリティック・ワークスペースの問合せで返される結果セットを変更することもできます。

OLAP_EXPRESSION_TEXTは文字データを返します。数値データ、テキスト・データ、日付データを返すには、OLAP_EXPRESSIONOLAP_EXPRESSION_TEXTまたはOLAP_EXPRESSION_DATE SQLファンクションを使用します。

このファンクションを使用するときは、OLAP_TABLEで使用される制限マップにROW2CELL句を指定しておく必要があります。ROW2CELLには、OLAP単一行ファンクションで使用される情報をOLAP_TABLEが移入するRAW列を指定します。


注意:

OLAPワークシート内からはこのファンクションを実行できません。SQLワークシートなどのSQLツール内で実行してください。

返される内容

OLAP_TABLEによって返された表オブジェクトの各行に対するboolean_expressionの評価。

OLAP_EXPRESSION_BOOLは、falseの場合は0を、trueの場合は1をブール・データとして返します。数値データ、日付データ、テキスト・データを返すには、OLAP_EXPRESSIONOLAP_EXPRESSION_DATEまたはOLAP_EXPRESSION_TEXTファンクションを使用します。

構文

OLAP_EXPRESSION_BOOL(
          r2c                  IN   RAW(32),
          boolean_expression   IN   VARCHAR2)
      RETURN NUMBER;

パラメータ

r2c

制限マップのROW2CELL句で指定された列の名前。OLAP_TABLEのROW2CELL句を参照してください。

boolean_expression

ブール値を結果として返すOLAP DML式。

次のスクリプトは、awunits_viewを作成するためのものです。このビューは、OLAP_EXPRESSION_BOOLの使用例を示すために例A-14で使用されます。

サンプル・ビュー: MYAW_AW.AWUNITS_VIEW

-- Create the logical row
CREATE TYPE awunits_row AS OBJECT (
             awtime                  VARCHAR2(12),
             awcustomer              VARCHAR2(30),
             awproduct               VARCHAR2(30),
             awchannel               VARCHAR2(30),
             awunits                 NUMBER(16),
             r2c                     RAW(32));
/
-- Create the logical table
CREATE TYPE awunits_table AS TABLE OF awunits_row;
/
-- Create the view
CREATE OR REPLACE VIEW awunits_view AS
   SELECT awunits,
          awtime, awcustomer, awproduct, awchannel, r2c 
      FROM TABLE(OLAP_TABLE(
         'myaw_aw.myawaw DURATION SESSION', 
         'awunits_table', 
         '',
         'MEASURE awunits FROM units_cube_aw_units_aw
          DIMENSION awtime FROM time_aw WITH
             HIERARCHY time_aw_parentrel
          DIMENSION awcustomer FROM customer_aw WITH 
             HIERARCHY customer_aw_parentrel
                       (customer_aw_hierlist ''MARKET_ROLLUP_AW'')
                INHIERARCHY customer_aw_inhier
          DIMENSION awproduct FROM product_aw WITH
             HIERARCHY product_aw_parentrel
          DIMENSION channel_aw WITH
             HIERARCHY channel_aw_parentrel
             ATTRIBUTE  awchannel FROM channel_aw_short_description
          ROW2CELL r2c'))
      WHERE awunits IS NOT NULL;
/

次の問合せは、このビューの集計データの一部を返します。2001年の全市場での全商品の売上数量がチャネル別に示されます。

SQL> SELECT awchannel, awunits FROM awunits_view 
     WHERE    awproduct = '1'
     AND      awcustomer = '7'
     AND      awtime = '4';
     
AWCHANNEL            AWUNITS
---------            -------  
All Channels         415392  
Direct Sales         43783  
Catalog              315737  
Internet             55872  

次の文は、この問合せで使用されているProduct、Customer、Timeの各ディメンション・メンバーの説明を表示します。

SQL>execute dbms_aw.execute('limit product_aw to ''1''');
SQL>execute dbms_aw.execute('rpr product_aw_short_description');
 
PRODUCT_AW                 PRODUCT_AW_SHORT_DESCRIPTION
--------------- --------------------------------------------------
1               Total Product

SQL>execute dbms_aw.execute('limit customer_aw to ''7''');
SQL>execute dbms_aw.execute('rpr customer_aw_short_description');
 
CUSTOMER_AW               CUSTOMER_AW_SHORT_DESCRIPTION
--------------- --------------------------------------------------
7               Total Market
 
SQL>execute dbms_aw.execute('limit time_aw to ''4''');
SQL>execute dbms_aw.execute('rpr time_aw_short_description');
 
TIME_AW                     TIME_AW_SHORT_DESCRIPTION
--------------- --------------------------------------------------
4               2001

例A-14 SELECT構文のリストに指定されたOLAP_EXPRESSION_BOOL

この例では、「サンプル・ビュー: MYAW_AW.AWUNITS_VIEW」のビューを使用します。次のSELECT文は、lowest_unitsという別名が付いた式を計算しますが、この式は、各商品の個数が500個未満かどうかを示します。

SQL>SELECT awproduct products,
       olap_expression_bool(r2c, 'units_cube_aw_units_aw le 500') lowest_units
          FROM awunits_view
               WHERE     awproduct > 39
               AND       awproduct < 46 
               AND       awcustomer = '7'
               AND       awchannel = 'Internet'
               AND       awtime = '4';

PRODUCTS        LOWEST_UNITS
--------------- ------------
40              0
41              1
42              1
43              1
44              1
45              0

この問合せにより、商品41から44はすべて500個未満だったことが示されます。これらの商品は、ドイツ語、フランス語、スペイン語およびイタリア語のドキュメント・セットです。選択された商品は次のとおりです。

SQL>execute dbms_aw.execute
           ('limit product_aw to product_aw gt 39 and product_aw lt 46');
SQL>execute dbms_aw.execute('rpr product_aw_short_description');
 
PRODUCT_AW                 PRODUCT_AW_SHORT_DESCRIPTION
--------------- --------------------------------------------------
40              O/S Documentation Set - English
41              O/S Documentation Set - German
42              O/S Documentation Set - French
43              O/S Documentation Set - Spanish
44              O/S Documentation Set - Italian
45              O/S Documentation Set - Kanji