ヘッダーをスキップ
Oracle® Warehouse Builderデータ・モデリング、ETLおよびデータ・クオリティ・ガイド
11gリリース2 (11.2)
B61350-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

28 Oracle Warehouse Builder変換リファレンス

この章ではデータを変換するためにOracle Warehouse Builderが提供する事前定義済の変換について説明します。

パブリックOracle事前定義済ライブラリの事前定義済の変換

パブリックOracle事前定義済ライブラリの事前定義済の変換は次のように分類されます。

管理変換

管理変換により事前構築ファンクションが提供され、ETLプロセスで定期的に実行されるアクションを実行します。これらの変換は主に、DBA関連領域、またはパフォーマンスの向上にフォーカスがおかれています。たとえば、表をロードする際に制約を無効化して、ロードが完了した後に再度有効化するのが一般的です。

Oracle Warehouse Builderの管理変換は、カスタム・ファンクションです。Oracle Warehouse Builderが提供する管理変換は、次のとおりです。

WB_ABORT

構文

WB_ABORT(p_code, p_message)

p_codeは停止コードで、-20000から-29999の範囲です。また、p_messageは、ユーザーが指定する停止メッセージです。

目的

WB_ABORTを使用すると、Oracle Warehouse Builderコンポーネントからアプリケーションを終了できます。マッピング後プロセスから、またはマッピング内の変換として、これを実行できます。

この管理ファンクションを使用して、アプリケーションを終了します。マッピングにエラーがある場合、マッピング後プロセスでこのファンクションを使用して配布を終了できます。

WB_COMPILE_PLSQL

構文

WB_COMPILE_PLSQL(p_name, p_type)

p_nameはコンパイルされるオブジェクトの名前です。p_typeは、コンパイルされるオブジェクトのタイプです。有効なタイプは次のとおりです。

'PACKAGE'
'PACKAGE BODY'
'PROCEDURE'
'FUNCTION'
'TRIGGER'

目的

このプログラム・ユニットは、データベースに格納されているオブジェクトをコンパイルします。

次の例では、add_employee_procというプロシージャをコンパイルすると仮定します。

EXECUTE WB_COMPILE_PLSQL('ADD_EMPLOYEE_PROC', 'PROCEDURE');

WB_DISABLE_ALL_CONSTRAINTS

構文

WB_DISABLE_ALL_CONSTRAINTS(p_name)

p_nameは制約が無効化される表の名前です。

目的

このプログラム・ユニットは、プログラム・コールで指定した、表によって所有されるすべての制約を無効化します。

データ・セットをより迅速にロードするため、表の制約を無効化できます。これでデータは検証されずにロードされます。これは主として比較的クリーンなデータ・セットについて行われます。

次の例では、表OE.CUSTOMERSの制約の無効化を示しています。

SELECT constraint_name
,      DECODE(constraint_type,'C','Check','P','Primary') Type
,      status
FROM user_constraints
WHERE table_name = 'CUSTOMERS';
CONSTRAINT_NAME                TYPE    STATUS
------------------------------ ------- --------
CUST_FNAME_NN                  Check   ENABLED
CUST_LNAME_NN                  Check   ENABLED
CUSTOMER_CREDIT_LIMIT_MAX      Check   ENABLED
CUSTOMER_ID_MIN                Check   ENABLED
CUSTOMERS_PK                   Primary ENABLED

すべての制約を無効化するには、SQL*PlusまたはOracle Warehouse Builderで次を実行します。

EXECUTE WB_DISABLE_ALL_CONSTRAINTS('CUSTOMERS');

CONSTRAINT_NAME                TYPE    STATUS
------------------------------ ------- --------
CUST_FNAME_NN                  Check   DISABLED
CUST_LNAME_NN                  Check   DISABLED
CUSTOMER_CREDIT_LIMIT_MAX      Check   DISABLED
CUSTOMER_ID_MIN                Check   DISABLED
CUSTOMERS_PK                   Primary DISABLED

注意:

この文では、カスケード・オプションを使用して、キーの無効化によって依存性を解除できます。

WB_DISABLE_ALL_TRIGGERS

構文

WB_DISABLE_ALL_TRIGGERS(p_name)

p_nameはトリガーが無効化される表の名前です。

目的

このプログラム・ユニットは、プログラム・コールで指定した表によって所有されるすべてのトリガーを無効化します。表の所有者は現行ユーザー(変数USER)である必要があります。このアクションはトリガーを停止し、パフォーマンスを向上します。

次の例では、表OE.OC_ORDERSのすべてのトリガーの無効化を示しています。

SELECT trigger_name
,      status
FROM user_triggers
WHERE table_name = 'OC_ORDERS';

TRIGGER_NAME                   STATUS
------------------------------ --------
ORDERS_TRG                     ENABLED
ORDERS_ITEMS_TRG               ENABLED

OC_ORDERSのすべてのトリガーを無効化するには、SQL*PlusまたはOracle Warehouse Builderで次を実行します。

EXECUTE WB_DISABLE_ALL_TRIGGERS ('OC_ORDERS');
TRIGGER_NAME                   STATUS
------------------------------ --------
ORDERS_TRG                     DISABLED
ORDERS_ITEMS_TRG               DISABLED

WB_DISABLE_CONSTRAINT

構文

WB_DISABLE_CONSTRAINT(p_constraintname, p_tablename)

p_constraintnameは、無効化される制約名です。p_tablenameは、指定した制約が定義される表の名前です。

目的

このプログラム・ユニットは、プログラム・コールで指定した表によって所有されるすべての制約を無効化します。ユーザーは現行ユーザー(変数USER)です。

データ・セットをより迅速にロードするため、表の制約を無効化できます。これで、データは検証されずにロードされます。これによりオーバーヘッドが削減されます。これは主として比較的クリーンなデータ・セットについて行われます。

次の例では、表OE.CUSTOMERSの指定された制約の無効化を示しています。

SELECT constraint_name
, DECODE(constraint_type
, 'C', 'Check'
, 'P', 'Primary'
) Type
, status
FROM user_constraints
WHERE table_name = 'CUSTOMERS';

CONSTRAINT_NAME                TYPE    STATUS
------------------------------ ------- --------
CUST_FNAME_NN                  Check   ENABLED
CUST_LNAME_NN                  Check   ENABLED
CUSTOMER_CREDIT_LIMIT_MAX      Check   ENABLED
CUSTOMER_ID_MIN                Check   ENABLED
CUSTOMERS_PK                   Primary ENABLED

指定された制約を無効化するには、SQL*PlusまたはOracle Warehouse Builderで次を実行します。

EXECUTE WB_DISABLE_CONSTRAINT('CUSTOMERS_PK','CUSTOMERS');

CONSTRAINT_NAME                TYPE    STATUS
------------------------------ ------- --------
CUST_FNAME_NN                  Check   ENABLED
CUST_LNAME_NN                  Check   ENABLED
CUSTOMER_CREDIT_LIMIT_MAX      Check   ENABLED
CUSTOMER_ID_MIN                Check   ENABLED
CUSTOMERS_PK                   Primary DISABLED

注意:

この文では、カスケード・オプションを使用して、キーの無効化によって依存性を解除できます。

WB_DISABLE_TRIGGER

構文

WB_DISABLE_TRIGGER(p_name)

p_nameは無効化されるトリガー名です。

目的

このプログラム・ユニットは、指定されたトリガーを無効化します。トリガーの所有者は現行ユーザー(変数USER)である必要があります。

次の例では、表OE.OC_ORDERSのトリガーの無効化を示しています。

SELECT trigger_name, status
FROM user_triggers
WHERE table_name = 'OC_ORDERS';

TRIGGER_NAME                   STATUS
------------------------------ --------
ORDERS_TRG                     ENABLED
ORDERS_ITEMS_TRG               ENABLED

指定された制約を無効化するには、SQL*PlusまたはOracle Warehouse Builderで次を実行します。

ECECUTE WB_DISABLE_TRIGGER ('ORDERS_TRG');

TRIGGER_NAME                   STATUS
------------------------------ --------
ORDERS_TRG                     DISABLED
ORDERS_ITEMS_TRG               ENABLED

WB_ENABLE_ALL_CONSTRAINTS

構文

WB_ENABLE_ALL_CONSTRAINTS(p_name)

p_nameは、すべての制約を有効化する必要がある表の名前です。

目的

このプログラム・ユニットは、プログラム・コールで指定した表によって所有されるすべての制約を有効化します。

データ・セットをより迅速にロードするため、表の制約を無効化できます。データをロードした後、このプログラム・ユニットを使用してこれらの制約を再び有効化する必要があります。

次の例では、表OE.CUSTOMERSの制約の有効化を示しています。

SELECT constraint_name
, DECODE(constraint_type
, 'C', 'Check'
, 'P', 'Primary)
Type
, status
FROM user_constraints
WHERE table_name = 'CUSTOMERS';

CONSTRAINT_NAME                TYPE    STATUS
------------------------------ ------- --------
CUST_FNAME_NN                  Check   DISABLED
CUST_LNAME_NN                  Check   DISABLED
CUSTOMER_CREDIT_LIMIT_MAX      Check   DISABLED
CUSTOMER_ID_MIN                Check   DISABLED
CUSTOMERS_PK                   Primary DISABLED

すべての制約を有効化するには、SQL*PlusまたはOracle Warehouse Builderで次を実行します。

EXECUTE WB_ENABLE_ALL_CONSTRAINTS('CUSTOMERS');

CONSTRAINT_NAME                TYPE    STATUS
------------------------------ ------- --------
CUST_FNAME_NN                  Check   ENABLED
CUST_LNAME_NN                  Check   ENABLED
CUSTOMER_CREDIT_LIMIT_MAX      Check   ENABLED
CUSTOMER_ID_MIN                Check   ENABLED
CUSTOMERS_PK                   Primary ENABLED

WB_ENABLE_ALL_TRIGGERS

構文

WB_ENABLE_ALL_TRIGGERS(p_name)

p_nameはトリガーが有効化される表の名前です。

目的

このプログラム・ユニットは、プログラム・コールで指定した表によって所有されるすべてのトリガーを有効化します。表の所有者は現行ユーザー(変数USER)である必要があります。

次の例では、表OE.OC_ORDERSのすべてのトリガーの有効化を示しています。

SELECT trigger_name
,      status
FROM user_triggers
WHERE table_name = 'OC_ORDERS';

TRIGGER_NAME                   STATUS
------------------------------ --------
ORDERS_TRG                     DISABLED
ORDERS_ITEMS_TRG               DISABLED

OE.OC_ORDERSに定義されたすべてのトリガーを有効化するには、SQL*PlusまたはOracle Warehouse Builderで次を実行します。

EXECUTE WB_ENABLE_ALL_TRIGGERS ('OC_ORDERS');

TRIGGER_NAME                   STATUS
------------------------------ --------
ORDERS_TRG                     ENABLED
ORDERS_ITEMS_TRG               ENABLED

WB_ENABLE_CONSTRAINT

構文

WB_ENABLE_CONSTRAINT(p_constraintname, p_tablename)

p_constraintnameは、無効化される制約名です。p_tablenameは、指定した制約が定義される表の名前です。

目的

このプログラム・ユニットは、プログラム・コールで指定した表によって所有されるすべての制約を有効化します。ユーザーは現行ユーザー(変数USER)です。データ・セットをより迅速にロードするため、表の制約を無効化できます。ロードが完了した後、これらの制約を再び有効化する必要があります。このプログラム・ユニットは制約を個別に有効化する方法を示します。

次の例は、表OE.CUSTOMERSの指定された制約の有効化を示しています。

SELECT constraint_name
,      DECODE(constraint_type
       , 'C', 'Check'
       , 'P', 'Primary'
       ) Type
,      status
FROM user_constraints
WHERE table_name = 'CUSTOMERS';

CONSTRAINT_NAME                TYPE    STATUS
------------------------------ ------- --------
CUST_FNAME_NN                  Check   DISABLED
CUST_LNAME_NN                  Check   DISABLED
CUSTOMER_CREDIT_LIMIT_MAX      Check   DISABLED
CUSTOMER_ID_MIN                Check   DISABLED
CUSTOMERS_PK                   Primary DISABLED

指定された制約を有効化するには、SQL*PlusまたはOracle Warehouse Builderで次を実行します。

EXECUTE WB_ENABLE_CONSTRAINT('CUSTOMERS_PK', 'CUSTOMERS');

CONSTRAINT_NAME                TYPE    STATUS
------------------------------ ------- --------
CUST_FNAME_NN                  Check   DISABLED
CUST_LNAME_NN                  Check   DISABLED
CUSTOMER_CREDIT_LIMIT_MAX      Check   DISABLED
CUSTOMER_ID_MIN                Check   DISABLED
CUSTOMERS_PK                   Primary ENABLED

WB_ENABLE_TRIGGER

構文

WB_ENABLE_TRIGGER(p_name)

p_nameは、有効化するトリガー名です。

目的

このプログラム・ユニットは、指定されたトリガーを無効化します。トリガーの所有者は現行ユーザー(変数USER)である必要があります。

次の例では、表OE.OC_ORDERSでのトリガーの有効化を示します。

SELECT trigger_name
,      status
FROM user_triggers
WHERE table_name = 'OC_ORDERS';

TRIGGER_NAME                   STATUS
------------------------------ --------
ORDERS_TRG                     DISABLED
ORDERS_ITEMS_TRG               ENABLED

指定された制約を有効化するには、SQL*PlusまたはOracle Warehouse Builderで次を実行します。

EXECUTE WB_ENABLE_TRIGGER ('ORDERS_TRG');

TRIGGER_NAME                   STATUS
------------------------------ --------
ORDERS_TRG                     ENABLED
ORDERS_ITEMS_TRG               ENABLED

WB_TRUNCATE_TABLE

構文

WB_TRUNCATE_TABLE(p_name)

p_nameは、切り捨てる表名です。

目的

このプログラム・ユニットは、コマンド・コールで指定した表を切り捨てます。トリガーの所有者は現行ユーザー(変数USER)である必要があります。このコマンドは、すべての参照制約を無効化および再有効化し、表の切捨てコマンドを有効化します。このコマンドをマッピング前プロセスで使用してステージング表を明示的に切り捨て、このステージング表のすべてのデータが新しくロードされたデータになるようにします。

次の例では、表OE.OC_ORDERSの切捨てを示します。

SELECT COUNT(*) FROM oc_orders;

  COUNT(*)
----------
       105

指定された制約を有効化するには、SQL*PlusまたはOracle Warehouse Builderで次を実行します。

EXECUTE WB_TRUNCATE_TABLE ('OC_ORDERS');

  COUNT(*)
----------
         0

文字変換

Oracle Warehouse Builderユーザーは、文字変換により、文字オブジェクトで変換を実行できます。Oracle Warehouse Builderが提供するカスタム・ファンクションには、接頭辞WB_が付いています。

Oracle Warehouse Builderで使用できる文字変換は次のとおりです。これらのほとんどは基本的なSQLファンクションまたはプロシージャの実装です。このような変換に対する説明はありません。

表28-1に、Database SQLファンクションを利用した文字変換を示します。これは縦欄式の表で、領域を節約するため左から右に列が整列して表示されています。

表28-1 SQL文字ファンクションに基づいた文字変換

文字変換名 文字変換名(続き) 文字変換名(続き)
  • ASCII

  • CHR

  • CONCAT

  • INITCAP

  • INSTR

  • INSTR2

  • INSTR4

  • INSTRB

  • INSTRC

  • LENGTH

  • LENGTH2

  • LENGTH4

  • LENGTHB

  • LENGTHC

  • LOWER

  • LPAD

  • LTRIM

  • NLSSORT

  • NLS_INITCAP

  • NLS_LOWER

  • NLS_UPPER

  • REPLACE

  • REGEXP_INSTR

  • REGEXP_REPLACE

  • REGEXP_SUBSTR

  • RPAD

  • RTRIM

  • SOUNDEX

  • SUBSTR

  • SUBSTR2

  • SUBSTR4

  • SUBSTRB

  • SUBSTRC

  • TRANSLATE

  • TRIM

  • UPPER


これらのファンクションの説明および例は、『Oracle Database SQL言語リファレンス』の文字ファンクションに関する項を参照してください。

次に、カスタム文字変換のリストを示します。

WB_LOOKUP_CHAR (number)

構文

WB.LOOKUP_CHAR (table_name
, column_name
, key_column_name
, key_value
)

table_nameは参照を実行する表の名前で、column_nameは、戻されるVARCHAR2列の名前です。たとえば、key_column_nameの参照結果は、参照表で照合するキーとして使用されるNUMBER列の名前です。key_valueは、照合を実行するkey_column_nameにマッピングされるキー列の値です。

目的

照合キーとしてNUMBER列を使用し、数値でキー参照を実行して、データベース表からVARCHAR2値を戻します。

参照表LKP1として、次の表を使用するとします。

KEY_COLUMN    TYPE    COLOR
10            Car     Red
20            Bike    Green

次のようなコールで、このパッケージを使用します。

WB.LOOKUP_CHAR ('LKP1'
, 'TYPE'
, 'KEYCOLUMN'
, 20
)

この場合は、この変換の出力として値「Bike」が戻されます。この出力は、インライン・ファンクション・コールの結果として、マッピングで処理されます。


注意:

このファンクションは、行ベースのキー参照です。セット・ベースの参照は、参照演算子を使用した場合にサポートされます。

WB_LOOKUP_CHAR(varchar2)

構文

WB.LOOKUP_CHAR (table_name
, column_name
, key_column_name
, key_value
)

table_nameは参照を実行する表の名前で、column_nameは参照結果などで戻されるVARCHAR2列の名前です。key_column_nameは、参照表で照合するキーとして使用されるVARCHAR2列の名前です。key_valueは、照合を実行するkey_column_nameにマッピングされる値などのキー列の値です。

目的

照合キーとしてVARCHAR2列を使用し、VARCHAR2の文字でキー参照を実行して、データベース表からVARCHAR2値を戻します。

次の表を参照表LKP1として使用します。

KEYCOLUMN  TYPE  COLOR
ACV        Car   Red
ACP        Bike  Green

次のようなコールで、このパッケージを使用します。

WB.LOOKUP_CHAR ('LKP1'
, 'TYPE'
, 'KEYCOLUMN'
, 'ACP'
)

この場合は、この変換の出力として値「Bike」が戻されます。この出力は、インライン・ファンクション・コールの結果として、マッピングで処理されます。


注意:

このファンクションは、行ベースのキー参照です。セット・ベースの参照は、参照演算子を使用した場合にサポートされます。

WB_IS_SPACE

構文

WB_IS_SPACE(attibute)

目的

文字列値に空白のみが含まれているかどうかをチェックします。このファンクションは、ブール値を戻します。メインフレーム・ソースでは、固定長書式にファイルを合せるため、一部のフィールドに多くの空白が含まれます。このファンクションでは、この空白をチェックできます。

WB_IS_SPACEは、attributeに空白のみが含まれる場合、TRUEを戻します。

コントロール・センター変換

コントロール・センター変換をプロセス・フローまたはカスタム変換で使用すると、実行時にコントロール・センターに関する情報にアクセスできます。たとえば、推移に関する式にコントロール・センター変換を使用すると、実行時にプロセス・フローを使用してフローを制御しやすくなります。また、カスタム・ファンクションの中でコントロール・センター変換を使用することもできます。そしてそのカスタム・ファンクションをプロセス・フローの設計に使用できます。

すべてのコントロール・センター変換には、コントロール・センター・ワークスペースに格納された監査データへのハンドルとなる監査IDが必要です。監査IDは、パブリック・ビューALL_RT_AUDIT_EXECUTIONSへのキーです。この変換を使用して、実行時にその監査ID固有のデータを取得します。プロセス・フローで実行すると、プロセス・フロー式で疑似変数audit_idを使用して、実行時に監査IDを取得できます。この変数は、現在実行中のジョブの監査IDとして評価されます。たとえば、マップ入力パラメータの場合はマップの実行を表し、推移の場合は推移元のジョブを表します。

コントロール・センター変換は、次のとおりです。

WB_RT_GET_ELAPSED_TIME

構文

WB_RT_GET_ELAPSED_TIME(audit_id)

目的

このファンクションは、指定されたaudit_idで与えられたジョブの実行の経過時間を秒単位で戻します。指定された監査IDが存在しない場合は、NULLを戻します。たとえば、前のアクティビティの所要時間に応じて選択する場合、このファンクションを推移に使用できます。

次の例では、audit_idで表されるアクティビティが開始されてから経過した時間を戻します。

declare
   audit_id NUMBER := 1812;
   l_time NUMBER;
begin
   l_time:= WB_RT_GET_ELAPSED_TIME(audit_id);
end;

WB_RT_GET_JOB_METRICS

構文

WB_RT_GET_JOB_METRICS(audit_id, no_selected, no_deleted, no_updated, no_inserted, no_discarded, no_merged, no_corrected)

ジョブの実行時において、no_selectedは選択された行数、no_deleted削除された行数、no_updatedは更新された行数、no_insertedは挿入された行数、no_discardedは破棄された行数、no_mergedはマージされた行数、no_correctedは修正された行数を表します。

目的

このプロシージャは、指定されたaudit_idで表されるジョブ実行のメトリックを戻します。このメトリックには選択、削除、更新、挿入、破棄、マージおよび修正された行の数があります。

次の例では、audit_idで表される監査IDのジョブ・メトリックを取得します。

declare
   audit_id NUMBER := 16547;
   l_nselected NUMBER;
   l_ndeleted NUMBER;
   l_nupdated NUMBER;
   l_ninserted NUMBER;
   l_ndiscarded NUMBER;
   l_nmerged NUMBER;
   l_ncorrected NUMBER;
begin
   WB_RT_GET_JOB_METRICS(audit_id, l_nselected, l_ndeleted, l_nupdated,
                         l_ninserted, l_ndiscarded, l_nmerged, l_ncorrected);
   dbms_output.put_line('sel=' || l_nselected || ', del=' l_ndeleted ||
                        ', upd=' || l_nupdated);
   dbms_output.put_line('ins='|| l_ninserted || ' , dis=' || l_ndiscarded );
   dbms_output.put_line('mer=' || l_nmerged || ', cor=' ||l_ncorrected);
 end;

WB_RT_GET_LAST_EXECUTION_TIME

構文

WB_RT_GET_LAST_EXECUTION_TIME(objectName, objectType, objectLocationName)

objectNameはオブジェクト名、objectTypeはオブジェクトのタイプ(MAPPING、DATA_AUDITOR、PROCESS_FLOW、SCHEDULABLEなど)、objectLocationNameはオブジェクトが配布される場所を表します。

目的

この変換により、時間ベースのデータにアクセスできます。一般的には、これはプロセス・フローで使用して、時間に関連する設計の側面をモデル化します。たとえば、前回の実行から2日以上経過した場合に別のマップを実行できるように、パスを設計できます。

また、この変換を使用して、同時に実行される複数のプロセス・フローで、時間の同期化を決定することもできます。たとえば、別のプロセス・フローが完了しているかどうかに従って、プロセス・フローのパスを選択できます。

次の例では、TIMES_MAPのマッピングが前回実行された日時を取得し、if条件によって、その日時から現在までの経過時間が1日以内かどうかを判定します。この日時に基づいて、別のアクションを実行できます。

declare
    last_exec_time DATE;
begin
    last_exec_time:=WB_RT_GET_LAST_EXECUTION_TIME('TIMES_MAP','MAPPING','WH_LOCATION');
    if last_exec_time < sysdate - 1 then
--       last-execution was multiple day ago
--       provide details of action here
          NULL;
    Else
--       provide details of action here
          NULL;
    end if;
end;

WB_RT_GET_MAP_RUN_AUDIT

構文

WB_RT_GET_MAP_RUN_AUDIT(audit_id)

目的

このファンクションは、マップ・アクティビティを表すジョブ実行用のマップ実行IDを戻します。audit_idがマップのジョブ実行を表すものでない場合は、NULLを戻します。たとえば、戻されたIDをキーとして使用し、ALL_RT_MAP_RUN_<name>ビューにアクセスして詳細情報を取得できます。

次の例では、監査IDが67265であるジョブ実行用のマップ実行IDを取得します。このマップ実行IDを使用して、ALL_RT_MAP_RUN_EXECUTIONSパブリック・ビューからソースの名前を取得します。

declare
  audit_id NUMBER := 67265;
  l_sources VARCHAR2(256);
  l_run_id NUMBER;begin  l_run_id := WB_RT_GET_MAP_RUN_AUDIT_ID(audit_id);  SELECT source_name INTO l_sources FROM all_rt_map_run_sources         WHERE map_run_id = l_run_id;end;

WB_RT_GET_NUMBER_OF_ERRORS

構文

WB_RT_GET_NUMBER_OF_ERRORS(audit_id)

目的

このファンクションは、指定されたaudit_idで与えられたジョブ実行で記録されたエラーの数を戻します。特定のaudit_idが見つからない場合は、NULLを戻します。

次の例では、監査IDが8769のジョブ実行で生成されたエラーの数を取得します。このエラー数に応じて、異なるアクションを実行できます。

declare
   audit_id NUMBER := 8769;
   l_errors NUMBER;begin   l_errors := WB_RT_GET_NUMBER_OF_ERRORS(audit_id);
   if l_errors < 5 then
      .....
   else
      .....
   end if;
end;

WB_RT_GET_NUMBER_OF_WARNINGS

構文

WB_RT_GET_NUMBER_OF_WARNINGS(audit_id)

目的

このファンクションは、audit_idで表されるジョブ実行で記録された警告の数を戻します。audit_idが存在しない場合は、NULLを戻します。

次の例では、監査IDが54632のジョブ実行で生成された警告の数を戻します。この警告の数に応じて、異なるアクションを実行できます。

declare   audit_is NUMBER := 54632;
   l_warnings NUMBER;begin   l_ warnings:= WB_RT_GET_NUMBER_OF_WARNINGS (audit_id);
   if l_warnings < 5 then
      .....
   else
      .....
   end if;
end;

WB_RT_GET_PARENT_AUDIT_ID

構文

WB_RT_GET_PARENT_AUDIT_ID(audit_id)

目的

このファンクションは、audit_idで表されるジョブ実行を保有するプロセスの監査IDを戻します。audit_idが存在しない場合は、NULLを戻します。戻された監査IDは、ALL_RT_AUDIT_EXECUTIONSなど、他のパブリック・ビューへのキーとして使用したり、詳細な情報が必要な場合は他のコントロール・センター変換に使用できます。

次の例では、監査IDが76859のジョブ実行用の親監査IDを取得します。この監査IDを使用して、親アクティビティの経過時間を判断できます。親アクティビティの経過時間に応じて、異なるアクションを実行できます。

declare
   audit_id NUMBER := 76859;
   l_elapsed_time NUMBER;   l_parent_id NUMBER;begin   l_parent_id := WB_RT_GET_PARENT_AUDIT_ID(audit_id);   l_elapsed_time := WB_RT_GET_ELAPSED_TIME(l_parent_id);
   if l_elpased_time < 100 then
      .....
   else
      .....
   end if;
end;

WB_RT_GET_RETURN_CODE

構文

WB_RT_GET_RETURN_CODE(audit_id)

目的

このファンクションは、audit_idで表されるジョブ実行で記録されたリターン・コードを戻します。audit_idが存在しない場合は、NULLを戻します。ジョブの実行が正常に終了すると、リターン・コードは0以上になります。リターン・コードが0未満の場合は、ジョブの実行が失敗したことを意味します。

次の例では、監査IDがaudit_idで表されるジョブ実行のリターン・コードを取得します。

declare   audit_id NUMBER:=69;
   l_code NUMBER;begin   l_code:= WB_RT_GET_RETURN_CODE(audit_id);end;

WB_RT_GET_START_TIME

構文

WB_RT_GET_START_TIME(audit_id)

目的

このファンクションは、audit_idで表されるジョブ実行の開始時間を戻します。audit_idが存在しない場合は、NULLを戻します。たとえば、前のアクティビティの開始時間に応じて選択する場合、これを推移に使用できます。

次の例では、監査IDが354のジョブ実行の開始時間を判断します。

declare   audit_id NUMBER:=354;
   l_date TIMESTAMP WITH TIME ZONE;begin   l_date := WB_RT_GET_START_TIME(audit_id);end;

変換の変換

Oracle Warehouse Builderユーザーは、変換の変換により、値の条件付き変換が可能なファンクションを実行できます。これらのファンクションでは、SQL内でif-then構成が実行されます。

Oracle Warehouse BuilderがSQL変換ファンクションから実装する変換の変換は次のとおりです。

  • ASCIISTR

  • COMPOSE

  • CONVERT

  • HEXTORAW

  • NUMTODSINTERVAL

  • NUMTOYMINTERVAL

  • RAWTOHEX

  • RAWTONHEX

  • SCN_TO_TIMESTAMP

  • TIMESTAMP_TO_SCN

  • TO_BINARY_DOUBLE

  • TO_BINARY_FLOAT

  • TO_CHAR(文字)、TO_CHAR(日時)、TO_CHAR(数値)

  • TO_CLOB

  • TO_DATE

  • TO_DSINTERVAL

  • TO_MULTIBYTE

  • TO_NCHAR(文字)、TO_NCHAR(日時)、TO_NCHAR(数値)

  • TO_NCLOB

  • TO_NUMBER

  • TO_SINGLE_BYTE

  • TO_TIMESTAMP

  • TO_TIMESTAMP_TZ

  • TO_YMINTERVAL

  • UNISTR

これらの変換の説明および例は、『Oracle Database SQL言語リファレンス』の変換ファンクションに関する項を参照してください。

日付変換

Oracle Warehouse Builderユーザーは、日付変換により、日付属性で変換を実行できます。これらの変換には、Oracle Warehouse Builderによって実装されるSQLファンクションおよびOracle Warehouse Builderが提供するカスタム・ファンクションが含まれます。カスタム・ファンクションはすべてWB_<function name>の形式になっています。

Database SQLファンクションで実装される日付変換は次のとおりです。

  • ADD_MONTHS

  • CURRENT_DATE

  • DBTIMEZONE

  • FROM_TZ

  • LAST_DAY

  • MONTHS_BETWEEN

  • NEW_TIME

  • NEXT_DAY

  • ROUND

  • SESSIONTIMEZONE

  • SYSDATE

  • SYSTIMESTAMP

  • SYS_EXTRACT_UTC

  • TRUNC

これらの変換の説明および例は、『Oracle Database SQL言語リファレンス』の日付ファンクションに関する項を参照してください。

カスタム日付変換は、次のとおりです。

WB_CAL_MONTH_NAME

構文

WB_CAL_MONTH_NAME(attribute)

目的

このファンクション・コールでは、attributeで指定した日付の月名が、省略されない名前で戻されます。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

SELECT WB_CAL_MONTH_NAME(sysdate)
   FROM DUAL;

WB_CAL_MONTH_NAME(SYSDATE)
----------------------------
March

SELECT WB_CAL_MONTH_NAME('26-MAR-2002')
   FROM DUAL;

WB_CAL_MONTH_NAME('26-MAR-2002')
----------------------------------
March

WB_CAL_MONTH_OF_YEAR

構文

WB_CAL_MONTH_OF_YEAR(attribute)

目的

WB_CAL_MONTH_OF_YEARは、attributeで指定される日付の月(1から12)を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

SELECT WB_CAL_MONTH_OF_YEAR(sysdate) month
   FROM DUAL;

     MONTH
----------
         3

SELECT WB_CAL_MONTH_OF_YEAR('26-MAR-2002') month
FROM DUAL;

     MONTH
----------
         3

WB_CAL_MONTH_SHORT_NAME

構文

WB_CAL_MONTH_SHORT_NAME(attribute)

目的

WB_CAL_MONTH_SHORT_NAMEは、attributeで指定される日付の月の短縮名(「Jan」など)を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

SELECT WB_CAL_MONTH_SHORT_NAME (sysdate) month
FROM DUAL;

MONTH
---------
Mar

SELECT WB_CAL_MONTH_SHORT_NAME ('26-MAR-2002') month
FROM DUAL;

MONTH
---------
Mar

WB_CAL_QTR

構文

WB_CAL_QTR(attribute)

目的

WB_CAL_QTRは、attributeで指定される日付のグレゴリオ暦の四半期(1月から3月の場合は1)を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

SELECT WB_CAL_QTR (sysdate) quarter
FROM DUAL;

   QUARTER
----------
         1

SELECT WB_CAL_QTR ('26-MAR-2002') quarter
FROM DUAL;

   QUARTER
----------
         1

WB_CAL_WEEK_OF_YEAR

構文

WB_CAL_WEEK_OF_YEAR(attribute)

目的

WB_CAL_WEEK_OF_YEARは、attributeで指定される日付の週(1から53)を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

SELECT WB_CAL_WEEK_OF_YEAR (sysdate) w_of_y
FROM DUAL;

    W_OF_Y
----------
        13

SELECT WB_CAL_WEEK_OF_YEAR ('26-MAR-2002') w_of_y
FROM DUAL;

    W_OF_Y
----------
        13

WB_CAL_YEAR

構文

WB_CAL_YEAR(attribute)

目的

WB_CAL_YEARは、attributeで指定された日付の年の数値を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

SELECT WB_CAL_YEAR (sysdate) year
FROM DUAL;

      YEAR
----------
      2002

SELECT WB_CAL_YEAR ('26-MAR-2002') w_of_y
FROM DUAL;

      YEAR
----------
      2002

WB_CAL_YEAR_NAME

構文

WH_CAL_YEAR_NAME(attribute)

目的

WB_CAL_YEAR_NAMEは、attributeで指定される日付の年のスペル・アウトした名前を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_CAL_YEAR_NAME (sysdate) name
from dual;

NAME
----------------------------------------------
Two Thousand Two

select WB_CAL_YEAR_NAME ('26-MAR-2001') name
from dual;

NAME
----------------------------------------------
Two Thousand One

WB_DATE_FROM_JULIAN

構文

WB_DATE_FROM_JULIAN(attribute)

目的

WB_DATE_FROM_JULIANは、ユリウス暦の日付attributeを通常の日付に変換します。

次の例では、指定したユリウス暦の日付に対する値を戻します。

select to_char(WB_DATE_FROM_JULIAN(3217345),'dd-mon-yyyy') JDate 
from dual;

JDATE
-----------
08-sep-4096

WB_DAY_NAME

構文

WB_DAY_NAME(attribute)

目的

WB_DAY_NAMEは、attributeで指定される日付の完全な曜日名を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_DAY_NAME (sysdate) name
from dual;

NAME
--------------------------------------------
Thursday

select WB_DAY_NAME ('26-MAR-2002') name
from dual;

NAME
--------------------------------------------
Tuesday

WB_DAY_OF_MONTH

構文

WB_DAY_OF_MONTH(attribute)

目的

WB_DAY_OF_MONTHは、attributeで指定される日付の、月内での日付番号を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_DAY_OF_MONTH (sysdate) num
from dual;

       NUM
----------
        28

select WB_DAY_OF_MONTH ('26-MAR-2002') num
from dual

       NUM
----------
        26

WB_DAY_OF_WEEK

構文

WB_DAY_OF_WEEK(attribute)

目的

WB_DAY_OF_WEEKは、attributeで指定される日付の、週内での日付番号をデータベース・カレンダに基づいて戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_DAY_OF_WEEK (sysdate) num
from dual;

       NUM
----------
         5

select WB_DAY_OF_WEEK ('26-MAR-2002') num
from dual;


       NUM
----------
         3

WB_DAY_OF_YEAR

構文

WB_DAY_OF_YEAR(attribute)

目的

WB_DAY_OF_YEARは、attributeで指定される日付の、年内での日付番号を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_DAY_OF_YEAR (sysdate) num
from dual;

       NUM
----------
        87

select WB_DAY_OF_YEAR ('26-MAR-2002') num
from dual;

       NUM
----------
        85

WB_DAY_SHORT_NAME

構文

WB_DAY_SHORT_NAME(attribute)

目的

WB_DAY_SHORT_NAMEは、attributeで指定される日付の、曜日の3文字の略称または名前を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_DAY_SHORT_NAME  (sysdate) abbr
from dual;

ABBR
-------------------------------------
Thu

select WB_DAY_SHORT_NAME  ('26-MAR-2002') abbr
from dual;

NUM
-------------------------------------
Tue

WB_DECADE

構文

WB_DECADE(attribute)

目的

WB_DECADEは、attributeで指定される日付の、世紀内での年を10年単位で戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_DECADE  (sysdate) dcd
from dual;

       DCD
----------
         2

select WB_DECADE  ('26-MAR-2002') DCD
from dual;

       DCD
----------
         2

WB_HOUR12

構文

WB_HOUR12(attribute)

目的

WB_HOUR12は、attributeに対応する日付の時間(12時間設定)を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_HOUR12 (sysdate) h12
from dual;

       H12
----------
         9

select WB_HOUR12 ('26-MAR-2002') h12
from dual;

       H12
----------
        12

注意:

2番目の例のように、タイムスタンプを含まない日付の場合、Oracleでは深夜12:00のタイムスタンプが使用されるため、この場合は12が戻されます。

WB_HOUR12MI_SS

構文

WB_HOUR12MI_SS(attribute)

目的

WB_HOUR12MI_SSは、HH12:MI:SSという書式でattributeのタイムスタンプを戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_HOUR12MI_SS (sysdate) h12miss
from dual;

H12MISS
-------------------------------------
09:08:52

select WB_HOUR12MI_SS ('26-MAR-2002') h12miss
from dual;

H12MISS
-------------------------------------
12:00:00

注意:

2番目の例のように、タイムスタンプを含まない日付の場合、Oracleでは深夜12:00のタイムスタンプが使用されるため、この場合は12が戻されます。

WB_HOUR24

構文

WB_HOUR24(attribute)

目的

WB_HOUR24は、attributeに対応する日付の時間(24時間設定)を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_HOUR24 (sysdate) h24
from dual;

       H24
----------
         9

select WB_HOUR24 ('26-MAR-2002') h24
from dual;

       H24
----------
         0

注意:

2番目の例のように、タイムスタンプを含まない日付の場合、Oracleでは00:00:00というタイムスタンプが使用されるため、この場合はこのタイムスタンプが戻されます。

WB_HOUR24MI_SS

構文

WB_HOUR24MI_SS(attribute)

目的

WB_HOUR24MI_SSは、HH24:MI:SSという書式でattributeのタイムスタンプを戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_HOUR24MI_SS (sysdate) h24miss
from dual;

H24MISS
------------------------------------
09:11:42

select WB_HOUR24MI_SS ('26-MAR-2002') h24miss
from dual;

H24MISS
------------------------------------
00:00:00

注意:

2番目の例のように、タイムスタンプを含まない日付の場合、Oracleでは00:00:00というタイムスタンプが使用されるため、この場合はこのタイムスタンプが戻されます。

WB_IS_DATE

構文

WB_IS_DATE(attribute, fmt)

目的

attributeに有効な日付が含まれているかどうかをチェックします。このファンクションで戻されるブール値は、attributeに有効な日付が含まれている場合、trueに設定されます。Fmtは、オプションの日付書式です。fmtを省略した場合は、データベース・セッションの日付書式が使用されます。

このファンクションは、データを検証してから表にロードする場合に使用できます。この方法により、値が表にロードされエラーの原因になる前に、値を変換できます。

WB_IS_DATEは、attributeに有効な日付が含まれる場合、PL/SQLのTRUEを戻します。

WB_JULIAN_FROM_DATE

構文

WB_JULIAN_FROM_DATE(attribute)

目的

WB_JULIAN_FROM_DATEは、attributeに対応する日付のユリウス暦の日付を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_JULIAN_FROM_DATE (sysdate) jdate
from dual;

     JDATE
----------
   2452362

select WB_JULIAN_FROM_DATE ('26-MAR-2002') jdate
from dual;

     JDATE
----------
   2452360

WB_MI_SS

構文

WB_MI_SS(attribute)

目的

WB_MI_SSは、attributeに対応する日付の時間の分と秒を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_MI_SS (sysdate) mi_ss
from dual;

MI_SS
-------------------------------------------
33:23

select WB_MI_SS ('26-MAR-2002') mi_ss
from dual;

MI_SS
-------------------------------------------
00:00

注意:

2番目の例のように、タイムスタンプを含まない日付の場合、Oracleでは00:00:00というタイムスタンプが使用されるため、この場合はこのタイムスタンプが戻されます。

WB_WEEK_OF_MONTH

構文

WB_WEEK_OF_MONTH(attribute)

目的

WB_WEEK_OF_MONTHは、attributeに対応する日付の、カレンダ月での週番号を戻します。

次の例では、sysdateおよび指定した日付文字列に対する値を戻します。

select WB_WEEK_OF_MONTH (sysdate) w_of_m
from dual;

    W_OF_M
----------
         4

select WB_WEEK_OF_MONTH ('26-MAR-2002') w_of_m
from dual;

    W_OF_M
----------
         4

番号変換

Oracle Warehouse Builderユーザーは、番号変換により、数値で変換を実行できます。これらの変換には、Oracle Warehouse Builderによって実装されるDatabase SQLファンクションおよびOracle Warehouse Builderによって定義されるカスタム・ファンクションが含まれます。カスタム・ファンクションには、接頭辞WB_が付いています。

表28-2に、Database SQL数値ファンクションを利用した番号変換を示します。これは縦欄式の表で、領域を節約するため左から右に列が整列して表示されています。

表28-2 Database SQLファンクションに基づいた番号変換のリスト

番号変換名 番号変換名(続き) 番号変換名(続き)
  • ABS

  • ACOS

  • ASIN

  • ATAN

  • ATAN2

  • BITAND

  • CEIL

  • COS

  • COSH

  • EXP

  • FLOOR

  • LN

  • LOG

  • MOD*

  • NANVL

  • POWER

  • REMAINDER

  • ROUND(数値)

  • SIGN

  • SIN

  • SINH

  • SQRT

  • TAN

  • TANH

  • TRUNC(数値)

  • WIDTH_BUCKET



これらの変換の説明および例は、『Oracle Database SQL言語リファレンス』の数値ファンクションに関する項を参照してください。

カスタム数値変換は、次のとおりです。

WB_LOOKUP_NUM(数値列用)

構文

 WB_LOOKUP_NUM (table_name
, column_name
, key_column_name
, key_value
)

table_nameは参照を実行する表の名前で、column_nameは参照結果などで戻されるNUMBER列の名前です。key_column_nameは、参照表で照合するキーとして使用されるNUMBER列の名前です。key_valueは、照合を実行するkey_column_nameにマッピングされる値などのキー列の値です。

目的

NUMBER列を照合キーとして使用して、キー参照を実行し、データベース表からNUMBER値を戻します。

次の表を参照表LKP1として使用します。

KEYCOLUMN  TYPE_NO  TYPE
10         100123   Car
20         100124   Bike

次のようなコールで、このパッケージを使用します。

WB_LOOKUP_CHAR('LKP1'
, 'TYPE_NO'
, 'KEYCOLUMN'
, 20
)

この場合は、この変換の出力として値100124が戻されます。この出力は、インライン・ファンクション・コールの結果として、マッピングで処理されます。


注意:

このファンクションは、行ベースのキー参照です。セット・ベースの参照は、参照演算子を使用した場合にサポートされます。

WB_LOOKUP_NUM(varchar2列用)

構文:

WB_LOOKUP_CHAR(table_name
, column_name
, key_column_name
, key_value
)

table_nameは参照を実行する表の名前で、column_nameは参照結果などで戻されるNUMBER列の名前です。key_column_nameは、参照表で照合するキーとして使用されるNUMBER列の名前です。key_valueは、照合を実行するkey_column_nameにマッピングされる値などのキー列の値です。

目的

VARCHAR2列を照合キーとして使用し、キー参照を実行して、データベース表からNUMBER値を戻します。

次の表を参照表LKP1として使用します。

KEYCOLUMN  TYPE_NO  TYPE
ACV        100123   Car
ACP        100124   Bike

次のようなコールで、このパッケージを使用します。

WB_LOOKUP_CHAR ('LKP1'
, 'TYPE'
, 'KEYCOLUMN'
, 'ACP'
)

この場合は、この変換の出力として値100124が戻されます。この出力は、インライン・ファンクション・コールの結果として、マッピングで処理されます。


注意:

このファンクションは、行ベースのキー参照です。セット・ベースの参照は、「検索演算子」で説明している参照演算子を使用した場合にサポートされます。

WB_IS_NUMBER

構文

 WB_IS_NUMBER(attibute, fmt)

目的

attributeに有効な数値が含まれているかどうかをチェックします。このファンクションで戻されるブール値は、attributeに有効な数値が含まれている場合、trueに設定されます。Fmtは、オプションの数値書式です。fmtを省略した場合は、データベース・セッションの数値書式が使用されます。

このファンクションは、データを検証してから表にロードする場合に使用できます。この方法により、値が表にロードされエラーの原因になる前に、値を変換できます。

attributeに有効な数値が含まれている場合、WB_IS_NUMBERはPL/SQLのTRUEを戻します。

OLAP変換

Oracle Warehouse Builderユーザーは、OLAP変換により、リレーショナル・ディメンションおよびリレーショナル・キューブに格納されたデータを、アナリティック・ワークスペースにロードできます。

Oracle Warehouse Builderで提供されるOLAP変換は、次のとおりです。

WB_OLAP_LOAD_CUBEWB_OLAP_LOAD_DIMENSIONおよびWB_OLAP_LOAD_DIMENSION_GENUKの各変換は、Oracle Warehouse Builderでキューブのクローニングに使用します。これらのOLAP変換は、データベースのバージョンがOracle Database 9iまたはOracle Database 10gリリース1の場合にのみ使用します。Oracle 10gリリース2からは、ディメンションおよびキューブをアナリティック・ワークスペースに直接配布できます。

WB_OLAP_AW_PRECOMPUTEは、Oracle Warehouse Builder 10gリリース2でのみ動作します。

これらのOLAP変換の説明に使用した例は、図28-1に示すシナリオに基づいています。

図28-1 OLAP変換の例

図28-1の説明が続きます。
「図28-1 OLAP変換の例」の説明

リレーショナル・ディメンションTIME_DIMとリレーショナル・キューブSALES_CUBEは、スキーマWH_TGTに格納されています。スキーマWH_TGTには、ディメンションとキューブがロードされたアナリティック・ワークスペース AW_WHも作成されています。

WB_OLAP_AW_PRECOMPUTE

構文

WB_OLAP_AW_PRECOMPUTE(p_aw_name, p_cube_name, p_measure_name, p_allow_parallel_ solve, p_max_job_queues_allocated)

p_aw_nameは、キューブが配布されるAWの名前です。p_cube_nameは、解決するキューブの名前です。p_measure_nameは、解決する特定のメジャーの任意の名前です(メジャーが指定されない場合、すべてのメジャーが解決されます)。p_allow_parallel_solveは、パーティション化を基に解決のパラレル化を行うかどうかを示すブール値です(パフォーマンス関連のパラメータ)。p_max_job_queues_allocatedは、パラレル実行するDBMSジョブの個数です(デフォルト値は0)。これを5と定義し、20のパーティションがある場合、5つのDBMSジョブのプールが、データ・ロードの実行に使用されます。パラレルと非パラレルの解決は、微妙に異なります。非パラレル解決では、解決が同期的に実行されるため、APIコールが完了すると解決も完了します。パラレル解決は非同期的に実行され、APIコールは、起動されたジョブのジョブID付きで戻されます。ジョブは、その処理を制御する最大ジョブ・キュー・パラメータを使用して、パラレル解決を制御します。ユーザーは、そのジョブIDをall_scheduler_*ビューの問合せに使用して、アクティビティのステータスをチェックできます。

目的

WB_OLAP_AW_PRECOMPUTEは、圧縮されていないキューブの解決に使用します(圧縮されたキューブは自動解決されます)。ロードおよび解決のステップは、別々に実行できます。デフォルトでは、キューブ・マップでデータをロードしてから、キューブを解決(事前計算)します。このマップを使用してデータをロードしてから、別の時点で解決を実行できます(解決と構築を同時に行うのは、最も時間がかかる操作であるため)。

次の例では、リレーショナル・キューブMARTおよびSALES_CUBEからキューブSALESにデータをロードし、連続で動作する単純な解決を実行します。この例では、パラレル解決のパラメータおよびジョブ・キューの最大数のパラメータがあります。パラレル解決が実行されると、ASYNCHRONOUS解決ジョブが起動し、リターン・ファンクションを通じてマスター・ジョブIDが戻されます。

declare
  rslt varchar2(4000);
begin
…
  rslt :=wb_olap_aw_precompute('MART','SALES_CUBE','SALES');
…
end;
/

WB_OLAP_LOAD_CUBE

構文

wb_olap_load_cube::=WB_OLAP_LOAD_CUBE(olap_aw_owner, olap_aw_name, olap_cube_owner, olap_cube_name, olap_tgt_cube_name)

olap_aw_ownerは、アナリティック・ワークスペースを保有するデータベース・スキーマの名前です。olap_cube_ownerは、キューブ・データを格納するアナリティック・ワークスペースの名前です。olap_cube_ownerは、関連するリレーショナル・キューブを保有するデータベース・スキーマの名前です。olap_cube_nameは、リレーショナル・キューブの名前です。olap_tgt_cube_nameは、アナリティック・ワークスペースに入っているキューブの名前です。

目的

WB_OLAP_LOAD_CUBEは、リレーショナル・キューブからアナリティック・ワークスペースにデータをロードします。これにより、キューブ・データを詳細に分析できます。これは、クローニング元のリレーショナル・キューブからアナリティック・ワークスペース・キューブにデータをロードするためのものです。これは、キューブをロードするためのDBMS_AWMパッケージにあるいくつかのプロシージャのラッパーです。

次の例では、リレーショナル・キューブSALES_CUBEからアナリティック・ワークスペースAW_WHのキューブAW_SALESにデータをロードします。

WB_OLAP_LOAD_CUBE('WH_TGT', 'AW_WH', 'WH_TGT', 'SALES_CUBE', 'AW_SALES')

WB_OLAP_LOAD_DIMENSION

構文

wb_olap_load_dimension::=WB_OLAP_LOAD_DIMENSION(olap_aw_owner, olap_aw_name, olap_dimension_owner, olap_dimension_name, olap_tgt_dimension_name)

olap_aw_ownerは、アナリティック・ワークスペースを保有するデータベース・スキーマの名前です。olap_aw_nameは、ディメンション・データを格納するアナリティック・ワークスペースの名前です。olap_dimension_ownerは、関連するリレーショナル・ディメンションを保有するデータベース・スキーマの名前です。olap_dimension_nameは、リレーショナル・ディメンションの名前です。olap_tgt_dimension_nameは、アナリティック・ワークスペースに入っているディメンションの名前です。

目的

WB_OLAP_LOAD_DIMENSIONは、リレーショナル・ディメンションからアナリティック・ワークスペースにデータをロードします。これにより、ディメンション・データを詳細に分析できます。これは、クローニング元のリレーショナル・ディメンションからアナリティック・ワークスペース・ディメンションにデータをロードするためのものです。これは、ディメンションをロードするためのDBMS_AWMパッケージにあるいくつかのプロシージャのラッパーです。

次の例では、リレーショナル・ディメンションTIME_DIMからアナリティック・ワークスペースAW_WHのディメンションAW_TIMEにデータをロードします。

WB_OLAP_LOAD_DIMENSION('WH_TGT', 'AW_WH', 'WH_TGT', 'TIME_DIM', 'AW_TIME')

WB_OLAP_LOAD_DIMENSION_GENUK

構文

wb_olap_load_dimension_genuk::=WB_OLAP_LOAD_DIMENSION_GENUK(olap_aw_owner, olap_aw_name, olap_dimension_owner, olap_dimension_name, olap_tgt_dimension_name)

olap_aw_ownerは、アナリティック・ワークスペースを保有するデータベース・スキーマの名前です。olap_aw_nameは、ディメンション・データを格納するアナリティック・ワークスペースの名前です。olap_dimension_ownerは、関連するリレーショナル・ディメンションを保有するデータベース・スキーマの名前です。olap_dimension_nameは、リレーショナル・ディメンションの名前です。olap_tgt_dimension_nameは、アナリティック・ワークスペースに入っているディメンションの名前です。

目的

WB_OLAP_LOAD_DIMENSION_GENUKは、リレーショナル・ディメンションからアナリティック・ワークスペースにデータをロードします。これにより、すべてのレベルで一意のディメンション識別子が生成されます。これは、クローニング元のリレーショナル・ディメンションからアナリティック・ワークスペース・ディメンションにデータをロードするためのものです。これは、ディメンションをロードするためのDBMS_AWMパッケージにあるいくつかのプロシージャのラッパーです。

キューブがクローニングされた場合、「ディメンションのサロゲート・キーを生成」オプションで「はい」を選択すると、ディメンションを再ロードするときに、WB_OLAP_LOAD_DIMENSION_GENUKプロシージャを使用する必要があります。このプロシージャでは、アナリティック・ワークスペースのすべてのレベルでサロゲート識別子が生成されます。これは、アナリティック・ワークスペースでは、すべてのレベルの識別子が、すべてのレベルのディメンションで一意である必要があるためです。

キューブのクローニングによって、ディメンションTIME_DIMがOLAP Serverに配布されている場合を考えます。パラメータ「ディメンションのサロゲート・キーを生成」がTRUEに設定されているとします。ここで、リレーショナル・ディメンションTIME_DIMからアナリティック・ワークスペースAW_WHのディメンションAW_TIMEにデータを再ロードするには、次の構文を使用します。

WB_OLAP_LOAD_CUBE('WH_TGT', 'AW_WH', 'WH_TGT', 'TIME_DIM', 'AW_TIME')

その他の変換

Oracle Warehouse Builderの他の変換を使用すると、特定のデータ型に限定されない機能を実行できます。この項ではそれらのタイプについて説明します。

Oracle Warehouse Builderで提供されるその他の変換は、次のとおりです。

  • DEPTH

  • DUMP

  • EMPTY_BLOB

  • EMPTY_CLOB

  • NLS_CHARSET_DECL_LEN

  • NLS_CHARSET_ID

  • NLS_CHARSET_NAME

  • NULLIF

  • NVL

  • NVL2

  • ORA_HASH

  • PATH

  • SYS_CONTEXT

  • SYS_GUID

  • SYS_TYPEID

  • UID

  • USER

  • USERENV

  • VSIZE

これらの変換の説明および例は、『Oracle Database SQL言語リファレンス』を参照してください。

空間変換

空間変換は、ファンクションとプロシージャを統合したもので、これによって、Oracle Databaseで空間データを迅速かつ効率的に格納、アクセスおよび分析できます。

Oracle Warehouse Builderで使用できる空間変換は、次のとおりです。

  • SDO_AGGR_CENTROID

  • SDO_AGGR_CONVEXHULL

  • SDO_AGGR_MBR

  • SDO_AGGR_UNION

これらの変換の説明および例は、『Oracle Spatial開発者ガイド』を参照してください。

ストリーム変換

ストリーム変換のカテゴリには、REPLICATEという変換が1つあります。次の項ではこの変換について説明します。

REPLICATE

構文

REPLICATE(lcr, conflict_resolution)

lcrは、Logical Change Record(論理変更レコード)の略で、DML変更をカプセル化します。そのデータ型はSYS.LCR$_ROW_RECORDです。conflict_resolutionは、ブール変数です。この値がTRUEの場合、表に定義された競合解消方法のいずれかを使用して、LCRの実行に起因する競合を解消します。競合解消の詳細は、Oracle Streamsレプリケーション管理者ガイドを参照してください。

目的

REPLICATEを使用して、ソース・システムの表で発生したDML変更(INSERT、UPDATEまたはDELETE)を、ターゲット・システムの同じ表にレプリケートします。ターゲット・システムの表は、次の点でソース・システムの表と同一である必要があります。

  • ターゲット表を含むスキーマの名前は、ソース表を含むスキーマの名前と同じである必要があります。

  • ターゲット表の名前は、ソース表の名前と同じである必要があります。

  • ターゲット表の構造は、ソース表の構造と同じである必要があります。構造には、数、名前、表の列のデータ型が含まれます。

ソース・システムのスキーマSには表T1(c1 varchar2(10), c2 number primary key)があり、ターゲット・システムにも同一の表があるとします。ソース・システムの表T1で、次の挿入操作をするとします。

insert into T1 values ('abcde', 10)

ソース・システムの表T1で前述の行挿入を行った後の変更を表すLCRの詳細は、次のとおりです。

LCR.GET_OBJECT_OWNER will be 'S'
LCR.GET_OBJECT_NAME will be 'T1'
LCR.GET_COMMAND_TYPE will be 'INSERT'
LCR.GET_VALUE('c1', 'new') has the value for the column 'c1' - that is 'abcde'
LCR.GET_VALUE('c2', 'new') has the value for the column 'c2' - that is 10

このようなLCRは、ソース・システムでの表S.T1の変更を取り込むストリーム・キャプチャ・プロセスによって作成され、エンキューされます。

REPLICATE(lcr, true) - ターゲット・システムの表T1に、行('abcde', 10)が挿入されます。


注意:

このアプローチでは、系統情報を取得できません。系統が重要な場合、このファンクションは使用しないでください。ソース表にバインドされたLCRCast演算子とターゲット表にバインドされた表演算子を使用して、これらの2つの演算子の属性を同じ名前(名前による一致)で接続する、より直接的なアプローチを使用します。LCR(論理変更レコード)の詳細は、Oracle Database 10gのドキュメントを参照してください。

XML変換

Oracle Warehouse Builderユーザーは、XML変換により、XMLオブジェクトで変換を実行できます。Oracle Warehouse Builderユーザーは、この変換により、XML文書とOracle AQをロードおよび変換できます。

XMLソースのロードを可能にするため、Oracle Warehouse Builderでは、データベースのXML機能を実装し、カスタム・ファンクションを定義して、データベースのXML機能にアクセスします。

データベースのXML機能に基づいて実装されるXML変換は次のとおりです。

  • EXISTSNODE

  • EXTRACT

  • EXTRACTVALUE

  • SYS_XMLAGG

  • SYS_XMLGEN

  • XMLCONCAT

  • XMLSEQUENCE

  • XMLTRANSFORM


関連項目:

  • これらの変換の説明は、『Oracle Database SQL言語リファレンス』を参照してください。

  • これらの変換の使用例は、『Oracle Spatial開発者ガイド』を参照してください。


カスタムXML変換は、次のとおりです。

WB_XML_LOAD

構文:

WB_XML_LOAD(control_file)

目的

このプログラム・ユニットは、XML文書からデータを抽出し、そのデータをデータベース・ターゲットにロードします。control_file(XML文書)には、XML文書のソース、ターゲットおよびランタイム制御を指定します。変換を定義した後、Oracle Warehouse Builderでのマッピングでは、マッピング前トリガーまたはマッピング後トリガーとしてこの変換がコールされます。

次の例では、ファイルproducts.xmlに保存されているXML文書からデータを抽出し、そのデータをターゲット表booksにロードするOracle Warehouse Builder変換を実装するためのスクリプトを示します。

begin
wb_xml_load('<OWBXMLRuntime>' 
||
'<XMLSource>'
||
' <file>\ora817\GCCAPPS\products.xml</file>'
||
'</XMLSource>'
||
'<targets>'
||
' <target XSLFile="\ora817\XMLstyle\GCC.xsl">books</target>'
||
'</targets>'
||
'</OWBXMLRuntime>'
);
end;

制御ファイルの詳細は、『Oracle Warehouse Builderユーザーズ・ガイド』を参照してください。

WB_XML_LOAD_F

構文

WB_XML_LOAD_F(control_file)

目的

WB_XML_LOAD_Fは、XML文書からデータを抽出し、そのデータをデータベース・ターゲットにロードします。このファンクションは、ロード中に読み込まれたXML文書の数を戻します。control_file(XML文書)には、XML文書のソース、ターゲットおよびランタイム制御を指定します。変換を定義した後、Oracle Warehouse Builderでのマッピングでは、マッピング前トリガーまたはマッピング後トリガーとしてこの変換がコールされます。

次の例では、ファイルproducts.xmlに保存されているXML文書からデータを抽出し、そのデータをターゲット表booksにロードするOracle Warehouse Builder変換を実装するためのスクリプトを示します。

begin
wb_xml_load_f('<OWBXMLRuntime>' 
||
'<XMLSource>'
||
' <file>\ora817\GCCAPPS\products.xml</file>'
||
'</XMLSource>'
||
'<targets>'
||
' <target XSLFile="\ora817\XMLstyle\GCC.xsl">books</target>'
||
'</targets>'
||
'</OWBXMLRuntime>'
);
end;

処理されるタイプおよびcontrol_fileの詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。