OLAP_EXPRESSION_BOOL
は、OLAP_TABLE
ファンクションのコンテキスト内でOLAP DMLブール式を動的に実行するSQLファンクションです。このファンクションを使用すると、戻り値としてカスタム・メジャーを取得できる他、WHERE
句やORDER BY
句内で使用してアナリティック・ワークスペースの問合せで返される結果セットを変更することもできます。
OLAP_EXPRESSION_TEXT
は文字データを返します。数値データ、テキスト・データ、日付データを返すには、OLAP_EXPRESSION、OLAP_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_EXPRESSION
、OLAP_EXPRESSION_DATE
またはOLAP_EXPRESSION_TEXT
ファンクションを使用します。
パラメータ
制限マップのROW2CELL
句で指定された列の名前。OLAP_TABLEの「ROW2CELL句」を参照してください。
ブール値を結果として返す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