この章ではデータを変換するためにOracle Warehouse Builderが提供する事前定義済の変換について説明します。
パブリックOracle事前定義済ライブラリの事前定義済の変換は次のように分類されます。
管理変換により事前構築ファンクションが提供され、ETLプロセスで定期的に実行されるアクションを実行します。これらの変換は主に、DBA関連領域、またはパフォーマンスの向上にフォーカスがおかれています。たとえば、表をロードする際に制約を無効化して、ロードが完了した後に再度有効化するのが一般的です。
Oracle Warehouse Builderの管理変換は、カスタム・ファンクションです。Oracle Warehouse Builderが提供する管理変換は、次のとおりです。
構文
WB_ABORT(p_code, p_message)
p_code
は停止コードで、-20000から-29999の範囲です。また、p_message
は、ユーザーが指定する停止メッセージです。
目的
WB_ABORT
を使用すると、Oracle Warehouse Builderコンポーネントからアプリケーションを終了できます。マッピング後プロセスから、またはマッピング内の変換として、これを実行できます。
例
この管理ファンクションを使用して、アプリケーションを終了します。マッピングにエラーがある場合、マッピング後プロセスでこのファンクションを使用して配布を終了できます。
構文
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(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(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(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(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(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(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(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(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(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文字ファンクションに基づいた文字変換
文字変換名 | 文字変換名(続き) | 文字変換名(続き) |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
これらのファンクションの説明および例は、『Oracle Database SQL言語リファレンス』の文字ファンクションに関する項を参照してください。
次に、カスタム文字変換のリストを示します。
構文
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 (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」が戻されます。この出力は、インライン・ファンクション・コールの結果として、マッピングで処理されます。
注意: このファンクションは、行ベースのキー参照です。セット・ベースの参照は、参照演算子を使用した場合にサポートされます。 |
コントロール・センター変換をプロセス・フローまたはカスタム変換で使用すると、実行時にコントロール・センターに関する情報にアクセスできます。たとえば、推移に関する式にコントロール・センター変換を使用すると、実行時にプロセス・フローを使用してフローを制御しやすくなります。また、カスタム・ファンクションの中でコントロール・センター変換を使用することもできます。そしてそのカスタム・ファンクションをプロセス・フローの設計に使用できます。
すべてのコントロール・センター変換には、コントロール・センター・ワークスペースに格納された監査データへのハンドルとなる監査IDが必要です。監査IDは、パブリック・ビューALL_RT_AUDIT_EXECUTIONS
へのキーです。この変換を使用して、実行時にその監査ID固有のデータを取得します。プロセス・フローで実行すると、プロセス・フロー式で疑似変数audit_id
を使用して、実行時に監査IDを取得できます。この変数は、現在実行中のジョブの監査IDとして評価されます。たとえば、マップ入力パラメータの場合はマップの実行を表し、推移の場合は推移元のジョブを表します。
コントロール・センター変換は、次のとおりです。
構文
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(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(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(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(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(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(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(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(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(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(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(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(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(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(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
構文
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(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(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(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(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(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(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(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(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(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(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(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(attribute, fmt)
目的
attribute
に有効な日付が含まれているかどうかをチェックします。このファンクションで戻されるブール値は、attribute
に有効な日付が含まれている場合、trueに設定されます。Fmt
は、オプションの日付書式です。fmt
を省略した場合は、データベース・セッションの日付書式が使用されます。
このファンクションは、データを検証してから表にロードする場合に使用できます。この方法により、値が表にロードされエラーの原因になる前に、値を変換できます。
例
WB_IS_DATE
は、attribute
に有効な日付が含まれる場合、PL/SQLのTRUEを戻します。
構文
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(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というタイムスタンプが使用されるため、この場合はこのタイムスタンプが戻されます。 |
Oracle Warehouse Builderユーザーは、番号変換により、数値で変換を実行できます。これらの変換には、Oracle Warehouse Builderによって実装されるDatabase SQLファンクションおよびOracle Warehouse Builderによって定義されるカスタム・ファンクションが含まれます。カスタム・ファンクションには、接頭辞WB_
が付いています。
表28-2に、Database SQL数値ファンクションを利用した番号変換を示します。これは縦欄式の表で、領域を節約するため左から右に列が整列して表示されています。
表28-2 Database SQLファンクションに基づいた番号変換のリスト
番号変換名 | 番号変換名(続き) | 番号変換名(続き) |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
これらの変換の説明および例は、『Oracle Database SQL言語リファレンス』の数値ファンクションに関する項を参照してください。
カスタム数値変換は、次のとおりです。
構文
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_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(attibute, fmt)
目的
attribute
に有効な数値が含まれているかどうかをチェックします。このファンクションで戻されるブール値は、attribute
に有効な数値が含まれている場合、trueに設定されます。Fmt
は、オプションの数値書式です。fmt
を省略した場合は、データベース・セッションの数値書式が使用されます。
このファンクションは、データを検証してから表にロードする場合に使用できます。この方法により、値が表にロードされエラーの原因になる前に、値を変換できます。
例
attribute
に有効な数値が含まれている場合、WB_IS_NUMBER
はPL/SQLのTRUE
を戻します。
Oracle Warehouse Builderユーザーは、OLAP変換により、リレーショナル・ディメンションおよびリレーショナル・キューブに格納されたデータを、アナリティック・ワークスペースにロードできます。
Oracle Warehouse Builderで提供されるOLAP変換は、次のとおりです。
WB_OLAP_LOAD_CUBE
、WB_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に示すシナリオに基づいています。
リレーショナル・ディメンションTIME_DIM
とリレーショナル・キューブSALES_CUBE
は、スキーマWH_TGT
に格納されています。スキーマWH_TGT
には、ディメンションとキューブがロードされたアナリティック・ワークスペース AW_WH
も作成されています。
構文
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(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(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(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(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のドキュメントを参照してください。 |
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
関連項目:
|
カスタムXML変換は、次のとおりです。
構文:
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(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インストレーションおよび管理ガイド』を参照してください。