Warehouse Builder データ・モデリング、ETLおよびデータ・クオリティ・ガイド

11gリリース2(11.2)

B61350-02(原本部品番号:E10935-05)

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 表記規則

- ヘルプの参照

- 関連ドキュメント

第I部 データ・モデリング

1 ソースおよびターゲット・スキーマの設計

- ターゲット・スキーマの設計

- ターゲット・モジュールの作成

- リレーショナル・ターゲット・スキーマの設計

- ディメンション・ターゲット・スキーマの設計

- データ・オブジェクトの構成

- データ・オブジェクトの検証

- 検証エラーの表示

- 無効なオブジェクトの編集

- データ・オブジェクトの生成

- 生成結果と生成済スクリプトの表示

- 生成されたスクリプトをファイルへ保存

2 リレーショナル・データ・オブジェクトの作成

- データ・オブジェクトの概要

- サポートされるデータ型

- オブジェクト・クラス定義について

- ファースト・クラス・オブジェクト(FCO)について

- セカンド・クラス・オブジェクト(SCO)について

- サード・クラス・オブジェクトとフォース・クラス・オブジェクトについて

- データ・オブジェクトのネーミング規則

- データ・ビューアを使用したデータ・オブジェクトに格納されたデータの表示

- エラー表について

- データ・オブジェクトのエラー表の定義

- エラー表の列

- 表の定義

- 表定義の作成

- 「名前」タブ

- 「列」タブ

- 「キー」タブ

- 「索引」タブ

- 「パーティション」タブ

- 「属性セット」タブ

- 「データ・ルール」タブ

- 表定義の編集

- 表の改名

- 表の列の追加、変更および削除

- 表制約の追加、変更および削除

- 属性セットの追加、変更および削除

- 表内の列の順序変更

- ビューの定義

- ビュー定義の作成

- 「名前」タブ

- 「列」タブ

- 「問合せ」タブ

- 「キー」タブ

- 「属性セット」タブ

- 「データ・ルール」タブ

- ビュー定義の編集

- ビューの改名

- ビューの列の追加、変更および削除

- ビュー制約の追加、変更および削除

- 属性セットの追加、変更および削除

- マテリアライズド・ビューの定義

- マテリアライズド・ビュー定義の作成

- 「列」タブ

- 「問合せ」タブ

- 「キー」タブ

- 「索引」タブ

- 「パーティション」タブ

- 「属性セット」タブ

- 「データ・ルール」タブ

- マテリアライズド・ビュー定義の編集

- マテリアライズド・ビューの改名

- マテリアライズド・ビューの列の追加、変更および削除

- マテリアライズド・ビューの制約の追加、変更および削除

- 属性セットの追加、変更および削除

- 制約の定義

- 制約について

- 制約の作成

- 主キー制約の定義

- 外部キー制約の定義

- 一意キー制約の定義

- チェック制約の定義

- 制約の編集

- 索引の定義

- 索引の作成

- パーティションの定義

- レンジ・パーティション化

- レンジ・パーティション化の例

- ハッシュ・パーティション化

- 数量別ハッシュ・パーティション化

- リスト・パーティション化

- コンポジット・パーティション化

- サブパーティション・テンプレートについて

- カスタム・サブパーティションの作成

- 索引パーティション化

- 索引パフォーマンスの考慮事項

- パーティションの構成

- 属性セットの定義

- 属性セットの作成

- 属性セットの編集

- 順序の定義

- 順序について

- 順序定義の作成

- 順序定義の編集

- 「名前」タブ

- 「列」タブ

- ユーザー定義型の定義

- オブジェクト・タイプについて

- オブジェクト・タイプの定義

- 「名前」タブ

- 「列」タブ

- オブジェクト・タイプの編集

- 可変長配列について

- 可変長配列の定義

- 「名前」タブ

- 「詳細」タブ

- 可変長配列の編集

- ネストした表について

- ネストした表の定義

- 「名前」タブ

- 「詳細」タブ

- ネストした表の編集

- キューの定義

- キュー表の定義の作成

- キュー表のペイロード・タイプの定義

- キュー表の編集

- アドバンスト・キューの定義の作成

- AQの基礎となるキュー表の指定

- アドバンスト・キューの定義の編集

- キューの伝播の作成

- 伝播のターゲット・キューの選択

- キューの伝播の編集

- リレーショナル・データ・オブジェクトの構成

- ターゲット・モジュールの構成

- 配布システム・タイプ

- 生成プリファレンス

- 生成ターゲットのディレクトリ

- 識別

- ランタイム・ディレクトリ

- 表領域のデフォルト

- 表の構成

- エラー表

- 外部キー

- 識別

- パラレル

- パフォーマンス・パラメータ

- パーティション・パラメータ

- 記憶領域

- チェンジ・データ・キャプチャ

- マテリアライズド・ビューの構成

- マテリアライズド・ビュー・パラメータ

- マテリアライズド・ビュー・ログ・パラメータ

- マテリアライズド・ビューの高速リフレッシュ

- ビューの構成

- 順序の構成

- アドバンスト・キューの構成

- キュー表の構成

- キューの伝播の構成

- Microsoft SQL ServerおよびIBM DB2 UDBでのリレーショナル・データ・オブジェクトの作成

- IBM DB2 UDBでのオブジェクトのネーミング規則

- Microsoft SQL Serverでのオブジェクトのネーミング規則

3 ディメンション・オブジェクトの定義

- ディメンション・オブジェクトの概要

- ディメンションの概要

- サロゲート識別子の概要

- 緩やかに変化するディメンションの概要

- タイプ2の緩やかに変化するディメンションの定義の概要

- 階層バージョニングの概要

- タイプ3の緩やかに変化するディメンション(SCD)の定義の概要

- キューブの概要

- ディメンション・オブジェクトのオーファン管理

- ディメンション・オブジェクトにデータをロード中のオーファン管理

- ディメンション・オブジェクトからのデータの削除中のオーファン管理

- エラー表

- ディメンション・オブジェクトの実装の概要

- ディメンション・オブジェクトのリレーショナル実装

- バインド

- 自動バインド

- 手動バインド

- アンバインド

- ディメンション・オブジェクトのROLAP実装

- ディメンション・オブジェクトのMOLAP実装

- アナリティック・ワークスペース

- ディメンション・オブジェクトの配布オプション

- ディメンションの作成

- ディメンションの例

- ディメンションの作成ウィザードを使用したディメンションの作成

- 名前と説明ページ

- 記憶域タイプ・ページ

- ディメンション属性ページ

- レベル・ページ

- レベル属性ページ

- 緩やかに変化するディメンション・ページ

- 作成前の設定ページ

- ディメンション作成の進行状況ページ

- サマリー・ページ

- ディメンションの作成ウィザードで使用されるデフォルト

- 記憶域

- ディメンション属性

- 階層

- レベル属性

- 緩やかに変化するディメンション

- オーファン管理ポリシー

- 実装オブジェクト

- ディメンション・エディタを使用したディメンションの作成

- 「名前」タブ

- 「記憶域」タブ

- 「属性」タブ

- 「レベル」タブ

- 「階層」タブ

- 「SCD」タブ

- 「孤立」タブ

- オーファン行のデフォルトの親の指定

- 「物理的バインド」タブ

- OLAPカタログへのディメンション配布の制限

- 制御行の使用

- ディメンション内の行数の決定

- 緩やかに変化するディメンションの作成

- ディメンション・エディタを使用したタイプ2緩やかに変化するディメンションの作成

- 「タイプ2緩やかに変化するディメンション」ダイアログ・ボックス

- タイプ2の緩やかに変化するディメンションの更新

- ディメンション・エディタを使用したタイプ3緩やかに変化するディメンションの作成

- 「タイプ3緩やかに変化するディメンション」ダイアログ・ボックス

- ディメンション定義の編集

- ディメンションの構成

- ディメンションの配布方法の指定

- キューブの作成

- キューブ内のキューブ・メジャーについて

- 標準計算

- カスタム式

- キューブの例

- キューブの作成ウィザードを使用してのキューブの作成

- 名前と説明ページ

- 記憶域タイプ・ページ

- ディメンション・ページ

- メジャー・ページ

- サマリー・ページ

- キューブの作成ウィザードで使用されるデフォルト

- キューブ・エディタを使用してのキューブの作成

- 「名前」タブ

- 「記憶域」タブ

- 「ディメンション」タブ

- 「メジャー」タブ

- 計算済メジャー・ウィザード

- 「集計」タブ

- 「孤立」タブ

- 「物理的バインド」タブ

- アナリティック・ワークスペースへのキューブの格納

- 不規則キューブ・データ

- 集計の定義

- MOLAPキューブの自動解決

- キューブ・メジャーの解決

- ロードに依存しないキューブの解決

- キューブのパラレル解決

- MOLAPキューブ・マッピングの出力

- 非リーフ・レベル参照の制限

- キューブ定義の編集

- キューブの構成

- キューブの配布方法の指定

- 時間ディメンションの作成

- 時間ディメンション・ウィザードを使用した時間ディメンションの作成

- 名前と説明ページ

- 記憶域ページ

- データ生成ページ

- レベル・ページ(カレンダ時間ディメンションのみ)

- レベル・ページ(会計時間ディメンションのみ)

- 作成前の設定ページ

- 時間ディメンション進行状況ページ

- サマリー・ページ

- 時間ディメンション・ウィザードで使用されるデフォルト

- 時間ディメンション定義の編集

- 「名前」タブ

- 「記憶域」タブ

- 「属性」タブ

- 「レベル」タブ

- 「階層」タブ

- 時間ディメンションの実装の変更

- 時間ディメンションの移入

- 時間ディメンションの動的移入

- データ移入のオーバーラップ

第II部 ETLの実行

4 データ変換の概要

- Oracle Warehouse Builderでのデータ変換について

- マッピングについて

- 演算子の使用について

- 演算子のタイプ

- ソース演算子とターゲット演算子

- 変換演算子

- 事前/事後処理演算子

- プラッガブル・マッピング演算子

- リアルタイム・データ・ウェアハウス演算子

- 変換について

- 変換のタイプ

- 事前定義済変換

- カスタム変換

- 変換ライブラリについて

- 変換ライブラリのタイプ

- 変換ライブラリへのアクセス

5 PL/SQLマッピングの作成

- Oracle Warehouse Builderマッピングの概要

- マッピングのタイプ

- PL/SQLマッピング

- SQL*Loaderマッピング

- SAP ABAPマッピング

- コード・テンプレート(CT)マッピング

- PL/SQLマッピングのチャンクについて

- チャンクのタイプ

- パラレル・チャンクの処理方法

- 演算子について

- マッピング・エディタの概要

- マッピング・エディタのキャンバス

- 論理ビュー

- 実行ビュー

- 実行ビューのメニューおよびツールバー

- マッピング・エディタの表示オプション

- 例: 単純なPL/SQLマッピングの定義

- マッピングを使用した抽出、変換およびロード(ETL)の実行ステップ

- マッピングの定義

- マッピングでのネーミング規則

- 演算子のマッピングへの追加

- 演算子を追加するための演算子の追加ダイアログ・ボックスの使用

- バインドされていない演算子を属性なしで作成

- 既存リポジトリ・オブジェクトから選択してバインド

- マッピングでの擬似列ROWIDおよびROWNUMの使用

- 演算子、グループおよび属性の接続

- 演算子の接続

- グループの接続

- 属性の接続

- マッピング接続ダイアログ・ボックスの使用

- 接続する属性グループ

- 接続オプション

- メッセージ

- 接続

- 演算子の編集

- 「名前」タブ

- 「グループ」タブ

- 「入力」タブと「出力」タブ

- 表示セットの使用

- 表示セットの定義

- 表示セットの選択

- マッピング・プロパティの設定

- マッピングのロードにおけるターゲット・オブジェクトの順序の指定

- デフォルトにリセット

- マッピングの構成

- マッピング構成の手順

- 演算子とワークスペース・オブジェクトの同期化

- マッピング演算子と関連付けられたワークスペース・オブジェクトの同期化

- マッピングのすべての演算子の同期化

- ワークスペース・オブジェクトとマッピング演算子の同期化

- ワークスペース・オブジェクトとマッピング演算子の同期化のステップ

- 同期化の拡張オプション

- 一致方針

- 例: マッピングによるトランザクション・データのロード

- 例: マッピング・エディタによるステージング領域表の作成

- プラッガブル・マッピングの使用

- プラッガブル・マッピングの作成

- スタンドアロン・プラッガブル・マッピングの作成

- シグネチャ・グループ

- 入力シグネチャ

- 出力シグネジャ

- プラッガブル・マッピング・フォルダの作成

- プラッガブル・マッピング・ライブラリ内でのユーザー・フォルダの作成

- マッピングとプラッガブル・マッピング間の演算子のコピー

- 演算子、グループ、および属性をコピーする際の制限

- マッピングとプラッガブル・マッピングの演算子のグループ化

- マッピングとプラッガブル・マッピングの演算子のグループ化の手順

- フォルダ内容の表示

- マッピングとプラッガブル・マッピングの演算子のグループ化解除の手順

- 選択した演算子のスポットライト

- 演算子、グループ、およびマッピングとプラッガブル・マッピングの属性のロケーション

- 標準検索の実行ステップ

- 拡張検索の実行ステップ

- 「詳細検索」ダイアログ・ボックス

- マッピングのデバッグ

- マッピング・デバッガの一般的な制限

- デバッグ・セッションの開始

- デザイン・センターの「デバッグ」パネル

- 情報パネル

- データ・パネル

- テスト・データの定義

- テスト・データとして使用する新規表の作成

- テスト・データの編集

- ランタイム・スキーマにおけるデバッグ・オブジェクトのクリーンアップ

- ブレークポイントの設定

- ウォッチの設定

- マッピングの実行

- 最初のソースとデバッグ・パスの選択

- 相関コミットを使用したマッピングのデバッグ

- 開始ポイントの設定

- プラッガブル・サブマップ演算子のデバッグ

- デバッグ・セッションの再初期化

- スケーラビリティ

6 ディメンション・オブジェクトを使用したETLの実行

- ETLマッピングでのディメンションの使用

- ディメンションにデータをロード

- タイプ1のディメンションへのデータのロード

- タイプ2の緩やかに変化するディメンション(SCD)へのデータのロード

- タイプ3の緩やかに変化するディメンション(SCD)へのデータのロード

- 例: タイプ2の緩やかに変化するディメンション(SCD)へのデータのロード

- ディメンションに保存されているデータの抽出

- ディメンションからデータを抽出

- タイプ2の緩やかに変化するディメンション(SCD)からのデータの抽出

- タイプ3の緩やかに変化するディメンション(SCD)からのデータの抽出

- ディメンションからデータを削除

- 例: ディメンションからデータを削除

- ETLマッピングでのキューブの使用

- キューブにデータをロード

7 SQL*Loader、SAPおよびコード・テンプレート・マッピングの使用

- フラット・ファイルからデータを抽出するSQL*Loaderマッピングの作成

- フラット・ファイルからのデータの抽出

- フラット・ファイルへのデータのロード

- 新規フラット・ファイル・ターゲットの作成

- SAP抽出マッピングの作成

- SAP抽出マッピングの定義

- マッピングへのSAP表の追加

- ロード・タイプの設定

- マッピングの構成プロパティの設定

- 結合ランクの設定

- SAPシステムからのデータの取得

- 自動システム

- 半自動システム

- 手動システム

- コード・テンプレート(CT)マッピングの作成

- Oracle Warehouse Builderに同梱されている事前作成コード・テンプレートについて

- 特定の事前作成されたコード・テンプレートを使用する際の制限

- OracleターゲットCT実行ユニットでのみサポートされているマッピング演算子

- コード・テンプレート・マッピングを使用したETLの実行手順

- テンプレート・マッピング・モジュールの作成

- コード・テンプレートを使用したマッピングの作成

- 実行ユニットの定義

- 実行ビューのメニューおよびツールバー

- 実行ユニットの作成

- 実行ユニットへの演算子の追加

- 複数の実行ユニットへの演算子の追加

- 実行ユニットからの演算子の削除

- 実行ユニットの削除

- デフォルト実行ユニットの作成

- 実行ユニットのデフォルト・コード・テンプレート

- Oracle Warehouse Builderによる実行ユニットと関連付けできるコード・テンプレートの表示方法

- コントロール・センター・エージェント(CCA)の起動

- コード・テンプレート・マッピングの検証

- コード・テンプレート・マッピングの生成

- CTマッピングの生成済コード・サンプル

- コード・テンプレート・マッピングの配布

- コード・テンプレート・マッピングの実行

- コード・テンプレート・マッピングの実行結果の表示

- 結果タブによる実行結果の表示

- 監査情報パネルによる実行結果の表示

- コード・テンプレート・マッピングでのコード・テンプレートのオプションの設定

- CTマッピングでのバインド演算子のプロパティの設定

- コード・テンプレート・マッピングの構成プロパティの設定

- コード・テンプレート・マッピングの実行監査

- コード・テンプレート・マッピングの実行監査手順

- 変更データ・キャプチャ(CDC)を実行するコード・テンプレート・マッピングの使用

- 変更データ・キャプチャ(CDC)のタイプ

- 変更データ・キャプチャ・コマンド

- 例: コード・テンプレート使用による変更データ・キャプチャの実行

- CDC CTを使用した変更データ・キャプチャの実行手順

- 変更データ・キャプチャのオブジェクトの選択

- 変更をロードするマッピングの作成

- 変更データ・キャプチャ・ソリューションの配布

- 変更データ・キャプチャ・プロセスの開始

- 変更データ・キャプチャ・プロセスへのサブスクライバの追加

- 変更データ・キャプチャ・プロセスの開始

- Oracle Warehouse Builderでの変更データ・キャプチャ・アクションの実行

- コード・テンプレートのコントロールの使用

- 例: コントロールCTを使用したデータ制約のチェック

- データをターゲット表にロード中の制約違反のログ記録手順

- ソース・モジュールの作成およびソース・オブジェクトのインポート

- データを抽出、データ整合性をチェックおよびデータをOracleターゲットにロードするコード・テンプレート・マッピングの作成

- コード・テンプレート・マッピングでのOracleターゲットCTの使用

- 例: Oracleターゲット・コード・テンプレートの使用

- ソース・モジュールの作成およびソース・オブジェクトのインポート

- ターゲット・モジュールおよびターゲット表の作成

- OracleターゲットCTを使用してソース・データを変換するCTマッピングの作成

- 異機種データベースからOracle Databaseへのデータの移動

- 例: 統合CTおよびロードCTを使用したIBM DB2からOracle Databaseへのデータの移動

- IBM DB2からデータを抽出、データを変換およびOracle Databaseにロードする手順

- ソース・モジュールの作成

- ターゲット・モジュールおよびターゲット表の作成

- データを抽出、変換およびロードするCTマッピングの作成

8 プロセス・フローの設計

- プロセス・フローの概要

- プロセス・フロー・モジュールおよびパッケージについて

- 例: 基本的なプロセス・フローの作成

- プロセス・フローを定義する手順

- Oracle Workflowロケーションの作成

- プロセス・フロー・モジュールの作成

- プロセス・フロー・モジュール内でのユーザー・フォルダの作成

- プロセス・フロー・パッケージの作成

- プロセス・フローの作成

- プロセス・フローへのアクティビティの追加

- アクティビティについて

- アクティビティの追加

- アクティビティのパラメータ

- アクティビティ・テンプレートの作成と使用

- 名前と説明ページ

- パラメータ・ページ

- アクティビティ・テンプレートの使用

- 推移について

- 有効な推移のためのルール

- アクティビティの接続

- アクティビティの構成

- パラメータおよび変数の使用

- ネームスペースの使用

- バインドの使用

- 式について

- グローバル式の値

- 推移条件の定義

- 例: プロセス・フローを使用した変数名付きフラット・ファイルへのアクセス

- プロセス・フローの作成

- ユーザー定義アクティビティのパラメータの設定

- 方法1: Oracle Warehouse Builder内へのスクリプトの書込み

- 方法2: Oracle Warehouse Builderの外で保持されるスクリプトのコール

- ユーザー定義アクティビティの構成

- マッピングの設計

- 配布および実行

- 後続の手順

- 例: プロセス・フローを使用したリモート・ファイルの転送

- ロケーションの定義

- プロセス・フローの作成

- FTPアクティビティのパラメータの設定

- 例: FTPアクティビティのためのOracle Warehouse Builderへのスクリプトの書込み

- 置換変数の使用

- FTPアクティビティの構成

- 配布するプロセス・フローの登録

9 カスタム変換の定義

- Oracle Warehouse Builderを使用したデータの変換について

- データ変換にOracle Warehouse Builderを使用する利点

- カスタム変換の定義

- ファンクションおよびプロシージャの定義

- カスタム変換のネーミング

- パラメータの定義

- 実装の指定

- 表ファンクションの定義

- テーブル・ファンクションのネーミング

- 戻り型の指定

- テーブル・ファンクションの入出力パラメータの指定

- パラレル化オプションの指定

- データ・ストリーム・オプションの指定

- テーブル・ファンクション実装の指定

- PL/SQLタイプの定義

- PL/SQLタイプについて

- PL/SQLタイプの使用例

- PL/SQLタイプの作成

- 名前と説明ページ

- 属性ページ

- 戻り型ページ

- サマリー・ページ

- カスタム変換の編集

- ファンクションまたはプロシージャの定義の編集

- PL/SQLタイプの編集

- 「名前」タブ

- 「属性」タブ

- 「戻り型」タブ

- テーブル・ファンクションの編集

- 変換のインポート

- インポートしたPL/SQLを使用した制限

- 例: 既存のPL/SQLコードの再使用

- Oracle以外のプラットフォームでのファンクションの使用

- IBM DB2およびSQL Serverファンクションの作成

- IBM DB2およびSQL Serverファンクションの定義

- ファンクションのインポート

- 事前定義済汎用異機種間ファンクション

- マッピングでのファンクションの使用

- ファンクションの構成

- Oracleファンクションの構成

- AUTHID

- 確定的

- パラレルの有効化

- プラグマ自律型トランザクション

10 パフォーマンスおよび拡張ETL概念の理解

- PL/SQLマッピング設計のベスト・プラクティス

- セット・ベースと行ベースのオペレーティング・モードの比較

- セット・ベース・モード

- 行ベース・モード

- 行ベース (ターゲットのみ) モード

- Oracle Warehouse Builderでのデータのコミットについて

- マッピング設計に基づいたデータのコミット

- 単一のソースから複数ターゲットへのデータのコミット

- 自動コミットと自動相関コミットの比較

- マッピングへのコミット・ロジックの埋込み

- マッピング設計に依存しないデータのコミット

- データのコミット前の複数マッピングの実行

- 実行時のデータのコミット

- プロセス・フロー・エディタを使用したマッピングのコミット

- PL/SQLマッピングにおける参照整合性の確認

- SQL*Loaderマッピング設計のベスト・プラクティス

- SQL*Loaderマッピングでの参照整合性を確認するための従来のロードの使用

- マスター・レコードとディテール・レコード間の関係の維持

- マスター・ディテール・レコードの抽出とロード

- エラーの対処方法

- 事後操作

- SQL*Loaderマッピングでの参照整合性を確認するためのダイレクト・パス・ロードの使用

- パーティション交換ロードを使用したパフォーマンスの向上

- パーティション交換ロードについて

- PELのマッピングの構成

- ダイレクトPELと間接PEL

- 間接PELの使用方法

- 例: ダイレクトPELを使用したファクト表の公開

- PELの効果的な使用方法

- マッピングでのターゲットの構成

- 手順1: すべてのパーティションの作成

- 手順2: 「LOCAL」オプションを使用したすべての索引の作成

- 手順3: 「索引を使用」オプションを使用する主キーまたは一意キー

- Oracle Warehouse BuilderでのPEL使用時の制限

- リモート・ソースからの高パフォーマンスのデータ抽出

11 ETLジョブのスケジュール

- スケジュールの概要

- スケジュールの定義

- スケジュールの編集

- 開始日時および終了日時

- 繰返しスケジュールの定義

- スケジュールの例

- ETLオブジェクトへのスケジュールの適用

- Oracle Enterprise ManagerでのETLジョブのスケジュール

- SQLPLUS_EXEC_TEMPLATE SQLスクリプト

- WB_RT_API_EXEC.RUN_TASK関数

12 ターゲット・スキーマへの配布およびETLロジックの実行

- Oracle Warehouse Builderにおける配布と実行の概要

- 配布について

- 配布アクションについて

- 配布ステータスについて

- ディメンション・オブジェクトの配布について

- マッピングおよびプロセス・フローの配布について

- コード・テンプレート(CT)のマッピングおよびWebサービスの配布について

- スケジュールの配布について

- 実行について

- 構成について

- 異なる構成の構成プロパティの表示および設定について

- 配布および実行プロセスの手順

- オブジェクトの配布

- コントロール・センター・マネージャを使用したオブジェクトの配布

- プロジェクト・ナビゲータを使用したオブジェクトの配布

- リモート・システムへのターゲット・システムの配布

- 配布結果の確認

- ETLジョブの開始

- ETLジョブの実行結果の表示

- データの表示

- ETLジョブのスケジュール

- SQL*PlusにおけるETLジョブの開始

- SQLスクリプトによるジョブの管理

- 例: ターゲット・スキーマの更新

13 デプロイメントと実行の監査

- デプロイメントと実行の監査について

- リポジトリ・ブラウザについて

- 異機種間リポジトリ・ブラウザ(HRAB)について

- リポジトリ・ブラウザおよび異機種間リポジトリ・ブラウザの相違点

- 異機種間データベースおよびOC4Jサーバーへの異機種間リポジトリ・ブラウザのインストール

- データ・ストアの作成

- 監査のタイプ

- 異機種間リポジトリ・ブラウザ・レポートのリスト

- 監査レポートの表示

- リポジトリ・ブラウザを開く

- リポジトリ・ブラウザ・リスナーの管理

- リポジトリ・ブラウザへのアクセス

- ワークスペースへのログイン

- Oracleデータベースへの接続

- 異機種間データベースまたはOC4Jサーバーへの接続

- 設計レポート

- リポジトリ・ナビゲータ

- オブジェクトのプロパティ

- オブジェクト・レポート

- サマリー・レポート

- 詳細レポート

- インプリメンテーション・レポート

- 影響分析レポート

- オブジェクト系統

- オブジェクトの影響

- コントロール・センター・レポート

- デプロイメント・レポート

- デプロイメント・スケジュール・レポート

- ロケーション・レポート

- オブジェクト・サマリー・レポート

- ロケーション・オブジェクト・サマリー・レポート

- デプロイメント・レポート

- デプロイメント・エラーの詳細レポート

- 実行レポート

- 実行スケジュール・レポート

- 実行サマリー・レポート

- 実行レポート

- エラー表実行レポート

- 実行ジョブ・レポート

- トレース・レポート

- ジョブ・ファイル・レポート

- ジョブ開始レポート

- ジョブ・エラー診断レポート

- 管理レポート

- サービス・ノード・レポート

- ロケーション検証レポート

- 共通リポジトリ・ブラウザ・タスク

- 最近実行されたプロセスの識別

- プロセスの実行に失敗した理由の識別

- プロセスの実行の比較

- マップの実行が予期せぬ結果を招いた理由の把握

- 最近実行されたデプロイメントの識別

- 特定のロケーションにデプロイされたデータ・オブジェクトの識別

- 特定のデプロイ済データ・オブジェクトを使用するマップの実行の識別

- デプロイ済プロセスのデフォルトのデプロイメント時間設定の把握

- プロセスの再実行

- プロセスの実行の監視

- プロセスの実行の終了

- プロセスの実行監査詳細の削除

- 以前のデプロイメント監査詳細の削除

- データ監査の実行後に作成されるエラー表の表示

- ロケーションの登録解除

- 変更済データベース環境のロケーション接続詳細の更新

- 変更済Oracle RAC環境のサービス・ノード詳細の更新

14 メタデータの依存性の管理

- メタデータ依存性マネージャについて

- 例: 系統ダイアグラムおよび影響分析ダイアグラム(LIA)

- 系統ダイアグラムおよび影響分析ダイアグラムおよびメタデータ依存性ダイアグラムについて

- LIAダイアグラムを開く

- LIAダイアグラムでのオブジェクトの管理および確認

- LIAダイアグラムでのオブジェクトの系統および影響の確認

- LIAダイアグラムでのオブジェクトを検索するための検索機能の使用方法

- LIAダイアグラムでのグループの使用

- LIAダイアグラムでのグループの管理

- オブジェクトの属性の表示

- LIAダイアグラムのエクスポートと印刷

- 変更の自動伝搬を使用した設計メタデータの変更

- 依存性マネージャでの変更の自動伝搬

15 ETL設計のトラブルシューティングおよびエラー処理

- Oracle Warehouse Builderでのエラー・ログの調査

- 検証エラーのトラブルシューティング

- 生成エラーのトラブルシューティング

- デプロイメント・エラーおよび実行エラーのトラブルシューティング

- マッピングでエラーを発生した演算子の特定

- Name and Addressサーバー・エラーのトラブルシューティング

- DMLエラー・ロギングの使用

- DMLエラー表について

- DMLエラー・ロギングの有効化

- DMLエラー・ロギングおよびETL

- DMLエラー・ロギングの制限

- ETLプロセスのトラブルシューティング

- ハイブリッド・マップの実行時のORA-04063

- エージェント・ログ・ファイル

- コントロール・センター・エージェント(CCA)の起動時に発生するエラー

- セキュアWebサイトからのWebサービス実行時のエラー

- ターゲット・スキーマへのマッピングのデプロイ時のREP-01012

- ロケーションを削除できない

16 Oracle Warehouse BuilderでのWebサービスの作成と消費

- Webサービスの概要

- Webサービスの利点

- Oracle Warehouse BuilderでのWebサービスについて

- Webサービスの定義について

- Webサービスの公開について

- Webサービスの消費について

- パブリックWebサービスについて

- WebサービスとしてのOracle Warehouse Builderオブジェクトの公開

- サービス・パッケージの作成

- Oracle Warehouse Builderオブジェクトに基づいてWebサービスを作成する方法

- Webサービスのネーミング

- Webサービス実装の定義

- Webサービスの検証

- Webサービスの生成

- Webサービスのデプロイ

- コントロール・センター・マネージャを使用してのWebサービスのデプロイ

- デザイン・センターを使用してのWebサービスのデプロイ

- URLに基づくWebサービスの作成

- 公開Webサービスのネーミングと説明

- Webサービスの実行

- コントロール・センター・マネージャを使用してのWebサービスの実行

- ブラウザを使用したWebサービスの実行

- ブラウザを使用したWebサービスに対する操作の実行

- WebサービスまたはアプリケーションがOC4Jサーバーにデプロイされているかどうかの特定

- コントロール・センター・ジョブの実行

- 実行ジョブの終了

- デプロイ済のアプリケーションの実行

- プロセス・フローでのアクティビティとしてのWebサービスの使用

- プロセス・フローでWebサービスを使用するルール

- プロセス・フローでのWebサービスの使用ステップ

- Webサービス・アクティビティと参照されているWebサービスとの同期

- マッピングでのWebサービスの使用

- Secure Sockets Layer(SSL)を使用してのWebサービスへの安全なアクセス

- コントロール・センター・エージェントのセキュリティのJ2EEロール

- 外部OC4Jサーバーでのセキュアなアクセスの設定

- キー・ストア・パスワードの更新

- 事例: データ統合のためのWebサービスの使用

- 例: Webサービスとしてのマッピングの公開

- 例: プロセス・フローでのWebサービスの消費

- LOAD_TOT_SALES_CT_MAPコード・テンプレート(CT)マッピングの変更

- 通貨変換Webサービスのインポート

- 通貨変換Webサービスを消費するプロセス・フローの作成

- 例: Oracle Warehouse Builder WebサービスとOracle BPELプロセス・マネージャの統合

17 トランスポータブル・モジュールを使用する大量のデータの移動

- トランスポータブル・モジュールについて

- トランスポータブル・モジュールおよびOracleデータベース技術について

- トランスポータブル・モジュール使用の利点

- トランスポータブル・モジュールの使用手順

- トランスポータブル・モジュールを使用する要件の確認

- トランスポータブル・モジュールのロケーションの指定

- トランスポータブル・モジュールのソース・ロケーションの情報

- トランスポータブル・モジュールの作成

- トランスポータブル・モジュールの説明

- ソース・ロケーションの選択

- ターゲット・ロケーションの選択

- インポートする表領域およびスキーマ・オブジェクトの選択

- 使用可能なデータベース・オブジェクト

- トランスポータブル・モジュール定義の確認

- トランスポータブル・モジュールの構成

- トランスポータブル・モジュールの構成プロパティ

- スキーマの構成プロパティ

- ターゲット・データファイルの構成プロパティ

- 表領域の構成プロパティ

- トランスポータブル・モジュールの生成とデプロイ

- トランスポータブル・モジュールによってデータをアクセスするマッピングの設計

- トランスポータブル・モジュールの編集

- 名前

- ソース・ロケーション

- 表領域

- ターゲット・ロケーション

- 表領域プロパティの表示

- トランスポータブル・モジュールへのメタデータの再インポート

第III部 データのプロファイリングとデータ品質

18 データ・プロファイリングの実行

- データ・プロファイリングの概要

- Oracle Warehouse Builderがサポートするデータ・プロファイリング用のソース

- Oracle Warehouse Builderデータ・プロファイリングとOracle Warehouse Builder ETLとの併用

- Oracle Warehouse Builderデータ・プロファイリングのその他のETLソリューションとの併用

- データ・プロファイル・エディタについて

- データ・プロファイリングの実行

- データ・プロファイリングの制限

- データ・プロファイリングの前提条件

- データ・プロファイリングの実行ステップ

- データ・プロファイリングの作成

- データ・プロファイルの構成

- データ・プロファイルの構成の実行ステップ

- ロード構成パラメータ

- 集計構成パラメータ

- パターン検出構成パラメータ

- ドメイン検出構成パラメータ

- 関係属性カウント構成パラメータ

- 一意キー検出構成パラメータ

- 関数従属性検出構成パラメータ

- 行関係検出構成パラメータ

- 冗長列検出構成パラメータ

- パフォーマンス構成

- データ・ルール・プロファイリング構成パラメータ

- データのプロファイリング

- データ・プロファイリングの実行ステップ

- プロファイル結果の表示

- データ・プロファイル

- プロファイル・オブジェクト

- 集計

- データ型

- ドメイン

- パターン

- 一意キー

- 関数従属性

- 参照

- データ・ルール

- 属性セットを使用したデータ・オブジェクトの列のサブセットのプロファイル

- 属性セットの定義

- 属性セットを含むデータ・プロファイルの作成

- データ・プロファイルの編集

- データ・プロファイルへのデータ・オブジェクトの追加

- プロファイリングのパフォーマンス向上を目的としたデータ・プロファイリング・プロセスのチューニング

- データ・プロファイリングのパフォーマンス向上を目的としたデータ・プロファイルのチューニング

- データ・プロファイリングのパフォーマンス向上を目的としたOracle Databaseのチューニング

- マルチプロセッサ

- メモリー

- I/Oシステム

- Oracle Master Data Management(MDM)で使用するデータの監視および修復(DWR)

- MDMで使用するデータの監視および修復(DWR)の概要

- MDMで事前に定義されているデータ・ルール

- データの監視および修復(DWR)を実行する際の前提条件

- Oracle Warehouse Builderを使用してデータの監視および修復(DWR)を実行する手順

- MDMデータ・ルールのインポート

- 修正済データおよびメタデータのMDMアプリケーションへの書込み

19 データ・ルールの設計と導出

- データ・ルールの概要

- データ・ルールのタイプ

- オブジェクトとしてのデータ・ルールおよびデータ・ルールのバインディング

- データ・ルールの使用

- フォルダのデータ・ルールの管理

- データ・プロファイリング結果からのデータ・ルールの導出

- データ・ルールの導出の実行ステップ

- データ・ルールの作成ウィザードを使用したデータ・ルールの作成

- データ・ルールの定義

- データ・ルールの編集

- データ・ルールのデータ・オブジェクトへの適用

- ETLマッピング内のデータ・ルールの手動での適用

20 データ監査およびデータ・ルールによる品質の監視

- データ監査の概要

- データ監査を使用したデータ品質の監視

- データ監査の作成

- 定義済のデータ・ルールに違反するデータに対するアクションの指定

- データ監査の編集

- データ監査の構成

- ランタイム・パラメータ

- データ監査パラメータ

- コード生成オプション

- データ監査を使用したデータ・オブジェクトの監査

- 手動によるデータ監査の実行

- データ監査実行のスケジューリング

- データ監査の実行結果

- データ監査エラー表の表示

- エラー表に対する権限の付与

21 データ・ルールによるデータ整備とデータ修正

- ETLでのデータ・ルールおよび自動データ修正の概要

- データ・プロファイリング結果からの修正マッピングの生成

- 修正作成の前提条件

- 修正オブジェクトの作成のステップ

- 修正するスキーマ・オブジェクトのデータ・ルールおよびデータ型の選択

- 修正するオブジェクトの選択

- データ修正およびデータ・クレンジング・アクションの選択

- データ修正アクションの選択

- クレンジング方針の指定

- 修正表およびマッピングの表示

- データ・プロファイリング結果に基づいたソース・データの整備および変換

- スキーマ修正のデプロイ

- 修正マッピングのデプロイ

22 名前とアドレスのクレンジング

- Oracle Warehouse Builderの名前とアドレスのクレンジングについて

- Oracle Warehouse Builderで使用可能な名前とアドレスのクレンジングのタイプ

- 例: アドレス情報の修正

- 入力例

- 手順の例

- 出力例

- 郵便レポートについて

- 米国郵政公社のCASS認定

- カナダ郵便局のSERP認定

- オーストラリア郵便局のAMAS認定

- 入力ロールの説明

- 出力コンポーネントの説明

- パススルー

- 名前

- アドレス

- 付加ベンダー

- エラー・ステータス

- 国固有

- Name and Addressデータでのエラー処理

- Name and Address演算子を使用したName and Addressデータのクレンジングおよび修正

- Name and Address演算子を使用したマッピングの作成

- ソース・データの詳細の指定および解析タイプの設定

- 郵便レポートの詳細の指定

- Name and Addressサーバーの管理

- Name and Addressサーバーの構成

- Name and Addressサーバーの起動と停止

23 照合、マージおよび重複除外

- Oracle Warehouse Builderにおける照合およびマージについて

- 例: Match-Merge演算子を使用する基本マッピング

- 照合およびマージ・プロセスの概要

- レコードの一致およびマージの要素

- レコードの一致およびマージ・プロセス

- 一致ルール

- 条件付き一致ルール

- 比較アルゴリズム

- 条件付き一致ルールの作成

- 一致ルール: 基本的な例

- 顧客データの照合およびマージの例

- 例: 複数の一致ルールの組合せ方法

- 推移的一致の例

- 重み一致ルール

- 重み一致ルールの例

- 重み一致ルールの作成

- 人名一致ルール

- 人名ロール

- 人名詳細

- 人名一致ルールの作成

- 会社一致ルール

- 会社ロール

- 会社の詳細

- 会社一致ルールの作成

- アドレス一致ルール

- アドレス・ロール

- アドレスの詳細

- アドレス一致ルールの作成

- カスタム一致ルール

- カスタム一致ルールの作成

- マージ・ルール

- 「一致ID」マージ・ルール

- 「ランク」および「レコードのランク」マージ・ルール

- 「順序」マージ・ルール

- 「最小/最大」および「最小/最大レコード」マージ・ルール

- 「コピー」マージ・ルール

- 「カスタム」および「カスタム・レコード」マージ・ルール

- Match-Merge演算子による重複ソース・レコードの削除

- Match-Merge演算子の使用手順

- Match-Merge演算子を含むマッピングの設計上の考慮事項

- Match-Merge演算子の使用上の制約

- 例: ハウスホールディング用の2つのMatch-Merge演算子の使用

第IV部 参照

24 マッピングおよびプロセス・フローのリファレンス

- ETLオブジェクトの構成

- マッピング構成のリファレンス

- ランタイム・パラメータ

- 表分析のサンプリング率

- バルク・サイズ

- チャンク実行再開タスク

- チャンク適用の再開

- チャンクの再試行回数

- チャンク・パラレル・レベル

- コミット頻度

- デフォルト監査レベル

- デフォルト・オペレーティング・モード

- デフォルト・パージ・グループ

- エラーの最大数

- チャンクを処理するスレッドの数

- コード生成オプション

- ANSI SQL構文

- コミット制御

- 表分析文

- パラレルDMLの有効化

- 最適化コード

- AUTHID

- ターゲット・ロード順序付けを使用

- エラー・トリガー

- バルク処理コード

- 生成モード

- チャンク化オプション

- チャンク化の方法

- チャンク表

- チャンク列

- チャンク・サイズ

- チャンク・タイプ

- SQL文

- SQL文チャンク・タイプ

- SCDの更新

- チャンク化方針

- ソースとターゲットのリファレンス

- LCR APIを使用

- データベース・リンク

- ロケーション

- 競合解決

- スキーマ

- パーティション交換ロード

- ヒント

- 制約管理

- SQL*Loaderパラメータ

- コード・テンプレート(CT)マッピングを含むマッピングの構成

- 囲み文字の使用

- SQL Loaderデータ・ファイル

- フラット・ファイル演算子の構成

- ターゲットとしてのフラット・ファイル演算子

- ソースとしてのフラット・ファイル演算子

- プロセス・フローの構成のリファレンス

25 ソース演算子とターゲット演算子

- ソースおよびターゲット演算子のリスト

- Oracleソースおよびターゲット演算子の使用

- Oracleソースおよびターゲット演算子のプロパティの設定

- キャプチャ一貫性

- チェンジ・データ・キャプチャ・フィルタ

- 有効

- トリガー・ベース・キャプチャ

- プライマリ・ソース

- Oracleターゲット演算子のロード・タイプ

- フラット・ファイル・ターゲットのロード・タイプ

- ターゲット・ロード順序

- 更新用ターゲット・フィルタ

- 削除用ターゲット・フィルタ

- 制約による一致

- 制約をデフォルト値に戻す方法

- バウンド名

- キー名

- キー列

- キー・タイプ

- 参照キー

- エラー表名

- ロールアップ・エラー

- この演算子からのエラーのみを選択

- 「属性のプロパティ」の設定

- バウンド名

- データ型

- 精度

- スケール

- 長さ

- 小数秒精度

- 行の挿入中に列をロードする

- 行の更新中に列をロードする

- 行の更新中に列を一致させる

- 更新: 演算

- 行の削除中に列を一致させる

- チャンク化番号列

- 定数演算子

- オブジェクト演算子の構成

- キューブ演算子

- キューブ演算子のプロパティ

- キューブ属性のプロパティ

- データ・ジェネレータ演算子

- データファイル・レコード番号への1列の設定

- 現在日付への1列の設定

- 一意の順序番号への1列の設定

- ディメンション演算子

- ディメンション演算子プロパティ

- オブジェクト演算子の拡張

- 外部表演算子

- 入力パラメータのマッピング演算子

- 出力パラメータのマッピング演算子

- マテリアライズド・ビュー演算子

- キュー演算子

- キュー演算子の使用

- キューの選択

- キュー演算子のソース・タイプの選択

- キュー演算子のユーザー定義タイプまたは主タイプの選択

- ソース・オブジェクトの選択

- プロセスのソース変更の指定

- 順序演算子

- 表演算子

- 表演算子のマージ最適化

- 表演算子のチャンク化

- ETL実行中の一時表の作成

- DMLエラー・ロギング

- データ・ルールおよび表のロード

- 可変長配列イテレータ演算子

- ビュー演算子

- インライン・ビューのビュー演算子の使用

- リモートおよびOracle以外のソースおよびターゲット演算子の使用

- Oracle以外またはリモート・ターゲットの使用制限

- Oracle以外およびリモート・ターゲットに関するOracle Warehouse Builderの対応策

- フラット・ファイルのソースおよびターゲット演算子の使用

- フラット・ファイル演算子

- フラット・ファイル・ソース演算子

- フラット・ファイル・ターゲット演算子

- フラット・ファイル・ソースおよびターゲット演算子のプロパティの設定

- フラット・ファイルのロード・タイプ

- 1行目のフィールド名

26 データ・フロー演算子

- データ・フロー演算子のリスト

- 演算子ウィザードについて

- 演算子ウィザードの一般ページ

- 演算子ウィザードのグループ・ページ

- 演算子ウィザードの入力ページと出力ページ

- 演算子ウィザードの「接続の入力」

- 式ビルダーについて

- 「式ビルダー」のオープン

- 「式ビルダー」のユーザー・インタフェース

- アグリゲータ演算子

- Group By句

- Having句

- 集計関数の式

- Anydata Cast演算子

- デュプリケータ解除演算子

- 式演算子

- フィルタ演算子

- マッピングの自己結合の追加

- ジョイナ演算子

- 結合条件

- 結合条件およびデカルト積

- デフォルトの結合条件および外部キー

- 外部結合での結合条件の使用

- 完全外部結合での結合条件の使用

- 結合条件のグループ化

- 結合条件および結合順序

- 結合条件のフィルタ

- 結合条件およびSAPソース

- 入力ロールと内部および外部結合の結合

- 結合入力ロールを使用した外部および内部結合タイプの指定

- 2つ以上の入力グループにおける外部結合の入力ロール

- マッピングでのジョイナ演算子の使用手順

- LCRキャスト演算子

- LCRスプリッタ演算子

- 参照演算子

- 参照演算子の使用

- 名前

- グループ

- 検索表

- 入力属性

- 出力属性

- 検索条件

- 複数の一致行

- 一致行なし

- タイプ2履歴検索

- ピボット演算子

- 例: 売上データのピボット

- 行ロケータ

- ピボット演算子の使用

- 一般

- グループ

- 接続の入力

- 入力属性

- 出力属性

- ピボット変換

- マッピング後プロセス演算子

- マッピング前プロセス演算子

- 集合演算演算子

- 集合演算演算子の属性の同期化

- ソーター演算子

- ORDER BY句

- スプリッタ演算子

- 例: 複数のターゲットを使用するマッピングの作成

- 副問合せフィルタ演算子

- テーブル・ファンクション演算子

- テーブル・ファンクション演算子を使用する際の前提条件

- 入力

- 出力

- テーブル・ファンクション演算子のプロパティ

- テーブル・ファンクション演算子のプロパティ

- 入力パラメータのプロパティ

- 出力パラメータ・グループのプロパティ

- 出力パラメータ

- 変換演算子

- アンピボット演算子

- 例: 売上データのアンピボット

- 行ロケータ

- アンピボット演算子の使用

- 一般

- グループ

- 接続の入力

- 入力属性

- 行ロケータ

- 出力属性

- アンピボット変換

27 プロセス・フローでのアクティビティ

- プロセス・フローでのアクティビティの使用

- オブジェクトを表すアクティビティ

- ユーティリティ・アクティビティ

- コントロール・アクティビティ

- オペレーティング・システム・アクティビティ

- セキュリティ制約の設定

- プロキシ・コマンドおよびパラメータの設定

- AND

- 割当

- データ監査モニター

- Enterprise Java Bean

- 例: Enterprise Java Beanアクティビティを使用してEJBからの既存のビジネス・ロジックを利用する

- 例: Enterprise Java Beanアクティビティを使用してデータをDB2表から別の表にロードする

- Enterprise Java Beanアクティビティの使用上の制約

- 電子メール

- 終了

- 終了ループ

- ファイルが存在

- FORK

- forループ

- FTP

- Oracle Warehouse Builderでのスクリプトの記述

- 置換変数の使用

- Oracle Warehouse Builder外部のスクリプトのコール

- Javaクラス

- プロセス・フローでJavaクラス・アクティビティを使用する例

- Javaクラス・アクティビティの実行可能ファイルのカスタマイズの例

- 手動

- マッピング

- 通知

- 通知メッセージの置換

- OMBPlus

- OR

- ルート

- ステータスの設定

- SQL*Plus

- プロセス・フローでのSQL*PLUSアクティビティの使用

- 置換変数の使用

- SQL*Plusコマンド

- 開始

- サブプロセス

- 変換

- ユーザー定義

- 待機

- whileループ

- Webサービス

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

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

- 管理変換

- WB_ABORT

- WB_COMPILE_PLSQL

- WB_DISABLE_ALL_CONSTRAINTS

- WB_DISABLE_ALL_TRIGGERS

- WB_DISABLE_CONSTRAINT

- WB_DISABLE_TRIGGER

- WB_ENABLE_ALL_CONSTRAINTS

- WB_ENABLE_ALL_TRIGGERS

- WB_ENABLE_CONSTRAINT

- WB_ENABLE_TRIGGER

- WB_TRUNCATE_TABLE

- 文字変換

- WB_LOOKUP_CHAR (number)

- WB_LOOKUP_CHAR(varchar2)

- WB_IS_SPACE

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

- WB_RT_GET_ELAPSED_TIME

- WB_RT_GET_JOB_METRICS

- WB_RT_GET_LAST_EXECUTION_TIME

- WB_RT_GET_MAP_RUN_AUDIT

- WB_RT_GET_NUMBER_OF_ERRORS

- WB_RT_GET_NUMBER_OF_WARNINGS

- WB_RT_GET_PARENT_AUDIT_ID

- WB_RT_GET_RETURN_CODE

- WB_RT_GET_START_TIME

- 変換の変換

- 日付変換

- WB_CAL_MONTH_NAME

- WB_CAL_MONTH_OF_YEAR

- WB_CAL_MONTH_SHORT_NAME

- WB_CAL_QTR

- WB_CAL_WEEK_OF_YEAR

- WB_CAL_YEAR

- WB_CAL_YEAR_NAME

- WB_DATE_FROM_JULIAN

- WB_DAY_NAME

- WB_DAY_OF_MONTH

- WB_DAY_OF_WEEK

- WB_DAY_OF_YEAR

- WB_DAY_SHORT_NAME

- WB_DECADE

- WB_HOUR12

- WB_HOUR12MI_SS

- WB_HOUR24

- WB_HOUR24MI_SS

- WB_IS_DATE

- WB_JULIAN_FROM_DATE

- WB_MI_SS

- WB_WEEK_OF_MONTH

- 番号変換

- WB_LOOKUP_NUM(数値列用)

- WB_LOOKUP_NUM(varchar2列用)

- WB_IS_NUMBER

- OLAP変換

- WB_OLAP_AW_PRECOMPUTE

- WB_OLAP_LOAD_CUBE

- WB_OLAP_LOAD_DIMENSION

- WB_OLAP_LOAD_DIMENSION_GENUK

- その他の変換

- 空間変換

- ストリーム変換

- REPLICATE

- XML変換

- WB_XML_LOAD

- WB_XML_LOAD_F

29 Oracle Warehouse Builderコード・テンプレート・ツールおよび置換メソッド

- Oracle Warehouse Builderでサポートされているコード・テンプレート・ツール

- Oracle Warehouse Builderでサポートされていないコード・テンプレート・ツール

- Oracle Warehouse Builderでサポートされているコード・テンプレートの置換メソッド

- Oracle Warehouse Builderでサポートされていないコード・テンプレートの置換メソッド

索引

Oracle® Warehouse Builder

データ・モデリング、ETLおよびデータ・クオリティ・ガイド

11gリリース2(11.2)

B61350-02(原本部品番号:E10935-05)

2011年9月

Oracle Warehouse Builderデータ・モデリング、ETLおよびデータ・クオリティ・ガイド, 11gリリース2(11.2)

B61350-02

Copyright © 2000, 2011, Oracle and/or its affiliates.All rights reserved.

原本主著者: Richa Agarwala

原本協力者: Padmaja Potineni, Vishwanath Sreeraman

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントが、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供される場合は、次のNoticeが適用されます。

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007).Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle およびその関連企業の登録商標です。その他の名称は、他社の商標の可能性があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェアおよびドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

はじめに

ここでは、次のトピックについて説明します。

- 対象読者

- ドキュメントのアクセシビリティについて

- 表記規則

- ヘルプの参照

- 関連ドキュメント

対象読者

このマニュアルは、Oracle Warehouse Builderを使用してウェアハウスを作成するOracle Database管理者またはその他のユーザーを対象としています。

ドキュメントのアクセシビリティについて

オラクル社のアクセシビリティへの取組みの詳細は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoまたはhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs (聴覚障害者向け)を参照してください。

表記規則

このマニュアルでは、WindowsはWindows NT、Windows 2000およびWindows XPオペレーティング・システムを指しています。Oracle DatabaseへのSQL*PlusインタフェースをSQLとして言及している箇所があります。

例では、特に明記しないかぎり各行の後に改行があります。入力行の後で[Enter]キーを押す必要があります。

次の表に、このマニュアルで使用される表記規則を示します。

規則

意味

. . .

例に含まれる垂直の省略記号は、直接関係のない情報が省略されていることを意味します。

...

文またはコマンド内の水平の省略記号は、例に直接関係のない文またはコマンドの一部が省略されていることを意味します。

太字テキスト

本文中の太字は、インタフェース・ボタンおよびリンクを示します。また、重要な概念を強調する目的でも使用されます。

イタリックのテキスト

イタリックは、用語の初出時に使用されます。イタリックは、重要な概念を強調する場合にも使用されます。

固定幅フォントのテキスト

固定幅フォントのテキストは、正確なコード、ファイルのディレクトリと名前、リテラル・コマンドを示します。

固定幅フォントのイタリック

固定幅フォントのイタリックは、ユーザーが値を指定するパラメータを示します。

[]

大カッコは、オプションの句を囲みます。そこから1つ選択しても、まったく選択しなくてもかまいません。

ヘルプの参照

ヘルプは、Oracle Warehouse Builderのあらゆる場所から簡単に使用できます。

- メニュー: Oracle Warehouse Builderのすべてのメニュー・バーには、「ヘルプ」メニューが含まれています。コンテキスト依存情報は、「ヘルプ」メニューから「トピック」を選択します。

- ウィザードおよびダイアログ・ボックス: ウィザードの各ページでは、詳細な指示が提供され、オブジェクトの作成プロセスが順を追って示されます。特定のダイアログ・ボックスまたはウィザードのページの完了方法の詳細は、「ヘルプ」ボタンをクリックしてください。

- ツール: ツールバーのツールは、そのアイコンの上にマウスを置いたときに表示されるツールチップによって識別できます。
一部のツールバーには、「ヘルプ」アイコンが組み込まれています。このアイコンをクリックすると、ヘルプ・システムの目次ページが表示されます。

- リスト: リストに示されているアイテムについて、選択したアイテムの説明がリストの下に表示されます。

- ポップアップ・メニュー: ウィンドウのタイトル・バーの右側にある矢印アイコンをクリックします。次に、ポップアップ・メニューからコンテキスト依存情報用の「ヘルプ」を選択します。

Oracle By Exampleチュートリアルの次のWebサイトも参照できます。

http://www.oracle.com/technetwork/developer-tools/warehouse/overview/index.html

関連ドキュメント

Oracle Warehouse Builderのドキュメント・セットには、次のマニュアルが含まれています。

- 『Oracle Warehouse Builderソースおよびターゲット・ガイド』

- 『Oracle Warehouse Builder概要』

- 『Oracle Warehouse Builderインストレーションおよび管理ガイド』

- 『Oracle Warehouse Builder APIおよびスクリプト・リファレンス』

- 『Oracle Warehouse Builderユーザーズ・リファレンス』

- 『Oracle Warehouse Builderリリース・ノート』

- 『Oracle Warehouse Builder ETLおよびデータ品質ガイド』

Oracle Warehouse Builderマニュアルのみでなく、『Oracle Databaseデータ・ウェアハウス・ガイド』も参照可能です。

第I部

データ・モデリング

Oracle Warehouse Builderでは、自分のデータ・ウェアハウスを設計することができます。ここでは、データ・ウェアハウスの設計方法およびデータを格納するデータ・オブジェクトの作成方法について説明します。

構成は次のとおりです。

- 弟1章「ソースおよびターゲット・スキーマの設計」

- 弟2章「リレーショナル・データ・オブジェクトの作成」

- 弟3章「ディメンション・オブジェクトの定義」

1 ソースおよびターゲット・スキーマの設計

この章では、ターゲット・スキーマの概要について説明します。データ・ウェアハウス内のデータは、ターゲット・スキーマに格納されます。このデータは、表、ビュー、ディメンションおよびキューブなどのデータ・オブジェクトの形式をとります。一般的なデータ・ウェアハウスの実装では、通常1つのみのターゲット・スキーマがあり、それがデータ・ウェアハウスのターゲットとなります。リレーショナル・ターゲット・スキーマおよびディメンション・ターゲット・スキーマの両方を設計できます。

この章の内容は次のとおりです。

- ターゲット・スキーマの設計

- データ・オブジェクトの構成

- データ・オブジェクトの検証

- データ・オブジェクトの生成

ターゲット・スキーマの設計

ターゲット・スキーマにはデータ・オブジェクトが含まれており、そのデータオブジェクトにはデータ・ウェアハウスが含まれています。ターゲット・スキーマを設計するには、表2-1にリストされたディメンション・オブジェクトまたはリレーショナル・オブジェクトのいずれかを作成します。

リレーショナル・ターゲット・スキーマまたはディメンション・ターゲット・スキーマを設計できます。この項では、ディメンションという用語は、通常のディメンションおよび緩やかに変化するディメンション(SCD)の両方を指します。

関連項目:
用語集は、『Oracle Warehouse Builder概要』を参照してください。

ターゲット・スキーマを設計する手順は、次のとおりです。

1. データ・ウェアハウスのデータ・オブジェクトを含むターゲット・モジュールを作成します。
ターゲット・モジュールの作成方法の詳細は、「ターゲット・モジュールの作成」を参照してください。

2. ターゲット・スキーマを定義します。スキーマは、リレーショナル・ターゲット・スキーマまたはディメンション・ターゲット・スキーマになることができます。
詳細は、「リレーショナル・ターゲット・スキーマの設計」または「ディメンション・ターゲット・スキーマの設計」を参照してください。

ターゲット・モジュールの作成

ターゲット・モジュールは、すべてのデータ・ウェアハウス・オブジェクトのメタデータ定義を保持するコンテナです。各ターゲット・モジュールは、オブジェクトが格納される物理ロケーションを表すターゲット・ロケーションに対応します。

関連項目:
Oracle Warehouse Builderでサポートされるターゲットの詳細は、Oracle Warehouse Builderソースおよびターゲット・ガイドを参照してください。

ターゲット・モジュールを作成する手順は、次のとおりです。

1. ターゲット・モジュールを作成するプロジェクト・ノード、作成するターゲットのタイプを表すノードの順に開きます。
作成できるターゲットの各タイプについて個別のノードが表示されます。Oracle Databaseにターゲット・スキーマを作成する場合は、「データベース」ノード、続いて「Oracle」ノードの順に開きます。フラット・ファイル・ターゲットを作成するには「ファイル」ノードを開きます。

2. 作成するターゲットのタイプを右クリックして新規タイプ・モジュールを選択します。
たとえば、Oracleモジュールを作成する場合は、「データベース」ノードを開いて、「Oracle」ノードを右クリックし、新規Oracleモジュールの順に開きます。フラット・ファイル・モジュールを作成するには、「ファイル」ノード上で右クリックして新規フラット・ファイル・モジュールを選択します。

3. ようこそページで「次へ」をクリックします。

4. 名前と説明ページに、次のフィールドの説明を入力します。「次へ」をクリックします。
名前: ターゲット・モジュールの名前を入力します。

説明: ターゲット・モジュールの説明(オプション)を入力します。

名前と説明は、「データ・オブジェクトのネーミング規則」で指定されたネーミング標準に準拠している必要があります。

5. 接続情報ページで、データ・ウェアハウス・オブジェクトが格納される物理ロケーションの詳細を入力して「終了」をクリックします。
データ・オブジェクトが格納される物理ロケーションに対応するロケーションを作成している場合は、このロケーションを「ロケーション」リストから選択します。

データ・モジュールが作成され、プロジェクト・ナビゲータに追加されます。これでターゲット・モジュールにデータオブジェクトを作成できます。

ユーザー・フォルダを作成して、モジュール内のすべてまたは一部のオブジェクトを特定のオブジェクト特性に基づいて編成できます。たとえば、ユーザー・フォルダを作成してその機能(販売、マーケティング、管理)に基づいて表をグループ化します。

関連項目:
モジュール内でのユーザーフォルダ作成の詳細は、Oracle Warehouse Builderソースおよびターゲット・ガイドを参照してください。

リレーショナル・ターゲット・スキーマの設計

リレーショナル・ターゲット・スキーマは、表、ビュー、マテリアライズド・ビューおよび順序などのリレーショナル・データ・オブジェクトを含むターゲット・スキーマです。すべてのウェアハウスのデータはこれらのオブジェクトに格納されています。

リレーショナル・ターゲット・スキーマを設計する手順は、次のとおりです。

1. まだ作成していなければ、ターゲット・スキーマのオブジェクトを含むOracleモジュールを作成します。このモジュールに関連付けられたロケーションがこのターゲット・オブジェクトを格納するために作成されていることを確認します。

2. ターゲット・スキーマの一部であるリレーショナル・データ・オブジェクトを定義します。
リレーショナルデータオブジェクトには、表、ビュー、マテリアライズド・ビューおよび順序が含まれます。既存のターゲット・オブジェクトをインポートしている場合があります。追加のデータ・オブジェクトを作成するには、「リレーショナル・データ・オブジェクトの作成」を参照してください。制約、索引およびパーティションなどのリレーショナル・オブジェクトに関する追加構造を定義できます。

この手順で作成するのは、ワークスペース内のオブジェクトの定義のみです。ターゲット・スキーマ内にオブジェクトを作成するために、これらのオブジェクトを配布する必要があります。

3. データ・オブジェクトを構成します。
この手順では、データ・オブジェクトの物理プロパティを設定します。たとえば、表を作成する必要のある表領域の名前を指定します。各データ・オブジェクトには、デフォルト構成パラメータのセットがあります。これらのデフォルト値は変更できます。

「データ・オブジェクトの構成」を参照してください。

4. データ・オブジェクトの検証検証できるのは、Oracleデータ・オブジェクトのみであり、DB2やSQL Serverなどの他のデータベースのデータ・オブジェクトは検証できません。
メタデータ定義およびデータ・オブジェクトの構成パラメータが検証されます。検証中に発生したエラーは修正します。

「データ・オブジェクトの検証」を参照してください。

5. ターゲット・スキーマ内にこれらのデータ・オブジェクトを作成するコードを生成します。作成でるのはOracleデータ・オブジェクトのコードのみです。
手順2で作成されたデータ・オブジェクトをターゲット・スキーマに作成するために必要なコードが生成されます。

「データ・オブジェクトの生成」を参照してください。

ディメンション・ターゲット・スキーマの設計

ディメンション・ターゲット・スキーマでは、ディメンション・オブジェクトを使用してデータ・ウェアハウスのデータを格納します。ディメンション・オブジェクトには、ディメンションとキューブがあります。ディメンション・オブジェクトにより、ターゲット・スキーマの視覚化が、表を重視する環境から、よりビジネスに焦点を当てた環境に変換されます。これは、複雑な分析の問合せに対し、高速で効果的な答えを得るのに役立ちます。

Oracleモジュールでは、ディメンション・データ・スキーマのみを作成できます。

ディメンション・ターゲット・スキーマを設計する手順は、次のとおりです。

1. ディメンション・オブジェクトを含めるOracleモジュールを作成します(まだ作成していない場合)。このモジュールに関連付けられたロケーションがこのターゲット・スキーマを指していることを確認します。

2. 「ディメンションの作成」の説明に従ってターゲット・スキーマに必要なディメンションを定義します。
この手順で作成するのはワークスペース内のディメンションの定義のみです。ターゲット・スキーマ内にオブジェクトを作成するために、これらのディメンションを配布する必要があります。

3. 「時間ディメンションの作成」の定義に従ってターゲット・スキーマに必要な時間ディメンションを定義します。
データ・ウェアハウスでは、広範囲に時間ディメンションを使用して一時データを格納します。

4. 「キューブの作成」の説明に従ってターゲット・スキーマに必要なキューブを定義します。

5. ディメンションおよびキューブを構成します。
手順2、3および4で作成したディメンション・オブジェクトを構成してこれらのオブジェクトの物理プロパティを設定します。デフォルトのプロパティをそのまま使用するか、または変更します。

関連項目:

- ディメンションの構成方法については「ディメンションの構成」

- キューブの構成方法については「キューブの構成」

6. ディメンションおよびキューブを検証します。
この手順では、メタデータ定義および手順2、3および4で作成したディメンション・オブジェクトの構成パラメータを検証します。エラーが検出された場合は修正します。

「データ・オブジェクトの検証」を参照してください。

7. ターゲット・スキーマ内にこれらのディメンションおよびキューブを作成するコードを生成します。
「データ・オブジェクトの生成」を参照してください。

データ・オブジェクトの構成

構成により、データ・オブジェクトの物理的な特性が定義されます。たとえば、表領域を定義して、表の構成内に性能パラメータを設定できます。または、ディメンション・オブジェクトの実装タイプを指定できます。配布前であればいつでも、オブジェクトの構成を変更できます。

同じオブジェクト・セットに対して複数の構成を定義できます。この機能は、テスト環境や本番環境など、複数の環境に配布する場合に便利です。

関連項目:
複数構成の作成の詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

すべてのオブジェクトには、デフォルトでTrueに設定された「配布可能」パラメータが指定されています。オブジェクトの配布を避けるには、このパラメータをFalseに設定します。

プロジェクト・ナビゲータを使用してオブジェクトを構成します。プロジェクト・ナビゲータのオブジェクトを右クリックして、「構成」を選択します。選択したオブジェクトの構成パラメータを含む新しいタブが表示されます。構成パラメータに必要な値を指定します。

関連項目:

- リレーショナル・データ・オブジェクトの構成

- ディメンションの構成

- キューブの構成

データ・オブジェクトの検証

検証とは、メタデータ定義および構成パラメータを検証するプロセスです。これらの定義は、スクリプトの生成および配布の前に検証する必要があります。

Oracle Warehouse Builderにより一連の検証テストが実行され、データ・オブジェクト定義が完全であることとスクリプトが生成および配布可能であることが確認されます。これらのテストが完了すると、結果が表示されます。Oracle Warehouse Builderを使用してオブジェクト・エディタを開き、続行する前に、すべての無効なオブジェクトを修正できます。スタンドアロン操作であることに加えて、オブジェクトを生成または配布するときに検証が暗黙的に発生します。

潜在的な問題を検出し、発生に応じて問題に対応するために、データ・オブジェクト定義の作成後と、配布するオブジェクトの構成後という2段階で検証します。配布するオブジェクトの構成後の方が、オブジェクト定義の作成後よりも検証が広範になります。

注意:
発生に応じて問題を解決するために、オブジェクトは作成および構成時に検証してください。設計の検証時と構成の検証時には同じエラー・チェック・プロセスが実行されます。

オブジェクトの定義後にオブジェクトを検証する場合、設計したオブジェクトのメタデータ定義にエラーがあるかどうかがチェックされます。たとえば、表を作成する場合、その列を定義する必要があります。このオブジェクトの検証時には、表のすべてのコンポーネントが定義されているかどうかが検証されます。これらのコンポーネントが欠落している場合、ログウィンドウに検証メッセージが表示されます。

オブジェクトの構成後にオブジェクトを検証する場合、オブジェクトを問題なく生成および配布可能かどうかを確認するために、メタデータ定義にエラーがあるかどうかが再チェックされ、構成パラメータがチェックされます。その後、無効なオブジェクトを編集できます。

1つのオブジェクトを検証することも、複数のオブジェクトをシミュレートすることも可能です。モジュールやプロジェクトなどのオブジェクトを含むオブジェクトも検証できます。この場合、そのオブジェクトに含まれるすべてのデータ・オブジェクトが検証されます。プロジェクト・ナビゲータを使用してデータ・オブジェクトを検証します。

プロジェクト・ナビゲータを使用したデータ・オブジェクトの検証

- プロジェクト・ナビゲータで、データ・オブジェクトを選択して、「検証」を選択します。「ファイル」メニューから、「検証」を選択します。オブジェクトの選択時に、[Ctrl]キーを押したままにすると複数のファイルを選択できます。
または

- プロジェクト・ナビゲータで、1つのまたは複数のデータ・オブジェクトを選択します。複数のオブジェクトを選択するには、オブジェクトの選択中に[Ctrl]キーを押し続けます。データ・オブジェクトを右クリックし、「検証」を選択します。複数のオブジェクトを選択した場合は、右クリックするときに[Ctrl]を押し続けていることを確認します。

注意:
同じタイプの複数オブジェクトのみ選択できます。たとえば、表を8個選択できますが、表を5個とビューを3個は選択できません。

検証エラーの表示

データオブジェクトの検証時に、検証結果は「ログ」ウィンドウに表示されます。「結果」という名前の新しいタブが各検証について表示されます。このタブには選択したオブジェクトの検証結果が含まれます。

「結果」タブを閉じた後でも、オブジェクトの検証結果を表示することができます。「表示」メニューからプロジェクト・ナビゲータのオブジェクトを選択して、「検証メッセージ」を選択します。「ログ」ウィンドウには、選択したオブジェクトの検証結果が表示されます。モジュール・ノードまたは表ノードのようなコンテナ・オブジェクトを選択して、検証結果を表示することができます。このアクションで検証メッセージを表示します。

無効なオブジェクトの編集

「ログ」ウィンドウにデータ・オブジェクトの検証結果が表示されます。このウィンドウから、オブジェクトのエディタを開き、定義内でエラーを修正できます。

無効な定義を編集する手順は、次のとおりです。

- 「ログ」ウィンドウで、編集するオブジェクトに対応する「結果」タブをクリックします。オブジェクトに対応するノードを選択して、「ログ」ウィンドウツールバー上の「ソースを表示」をクリックします。
または

- 「ログ」ウィンドウで、編集するオブジェクトの検証結果を表示する「結果」タブをクリックします。オブジェクト・ノードの「検証」ノードを開いて、検証メッセージを表示します。この検証メッセージをダブルクリックして、オブジェクトを編集するエディタを開きます。または、メッセージを右クリックして「ソースを表示」を選択します。

オブジェクトを編集して問題を修正した後、ツールバーの「すべて保存」をクリックして変更を保存し、オブジェクトを再度検証します。

データ・オブジェクトの生成

データ・オブジェクトを生成すると、Oracle Warehouse Builderにより、ターゲット・スキーマ内にデータ・オブジェクトを作成するために必要なコードが生成されます。通常、データ・オブジェクトはSQLスクリプトを生成します。SQLスクリプトでは、ディメンションやキューブ生成のようなAPIを使用したオブジェクトの作成にDDL文とPL/SQLブロックの両方を含む場合があります。生成されたスクリプトを表示し、ファイル・システムにそれらのスクリプトを格納することもできます。

データ・オブジェクトのコードを生成すると、Oracle Warehouse Builderにより、最初にオブジェクトが検証され、次にコードが生成されます。検証の手順はスキップして、直接データ・オブジェクトのコードを生成する場合もあります。ただし、オブジェクトを生成する前にオブジェクトを検証することをお薦めします。この検証により、コードが生成される前に、データ・オブジェクト定義内のエラーを検出して修正できます。

単一のデータ・オブジェクトの生成方法は次のとおりです。

- プロジェクト・ナビゲータで、データ・オブジェクトを選択して、「生成」をクリックします。
または

- プロジェクト・ナビゲータで、データ・オブジェクトを選択して、「ファイル」メニューから「生成」を選択します。
または

- プロジェクト・ナビゲータで、データ・オブジェクトを選択して、「生成」をクリックします。

複数のデータ・オブジェクトのコード生成は次のとおりです。

- プロジェクト・ナビゲータで、[Ctrl]キーを押したままにしてデータ・オブジェクトを選択し、「生成」をクリックします。
または

- プロジェクト・ナビゲータで、[Ctrl]キーを押し続けて、「生成」を右クリックします。

すべてのデータ・オブジェクトが同じタイプの場合にのみ、複数のオブジェクトのコードを同時に選択して生成できます。たとえば、12個のテーブルのコードを同時に生成できます。ただし、3個のテーブルと2個のディメンションを生成することはできません。

コレクションを使用して、異なるタイプで異なるモジュールに属する複数のデータ・オブジェクトのコードを生成することができます。コレクションを作成して、同時にコレクションに生成するすべてのオブジェクトを追加し、そのコレクションを生成することができます。

データ・オブジェクトの再生成

データ・オブジェクト定義に変更を加えた場合、データ・オブジェクトの修正したスクリプトを生成できます。プロジェクト・ナビゲータで、データ・オブジェクトを選択して、「生成」をクリックします。

修正したスクリプトを表示する前に、以前に生成したスクリプトを含んでいる開いているタブを閉じます。元のエディタ・ウィンドウを閉じないで同じスクリプトを2回開く操作では、不正な結果が表示されます。

生成結果と生成済スクリプトの表示

検証が正常に終了した場合、オブジェクトの生成時に、その生成結果は「ログ」ウィンドウに表示されます。各生成操作の結果は、別の「結果」タブに表示されます。

生成済のスクリプトを表示する手順は、次のとおりです。

1. ログウィンドウで、必要なオブジェクトについての生成結果を含む「結果」タブをクリックします。

2. オブジェクト・ノード、「検証」ノードの順に開いて、検証結果を表示します。
データ・オブジェクトが正常に検証された後に、Oracle Warehouse Builderでスクリプトが生成されます。

3. オブジェクト・ノードの「スクリプト」ノードを開きます。
選択したデータ・オブジェクトについて生成されたスクリプトのリストが表示されます。

4. 特定のスクリプトを選択し、「ログ」ウィンドウのツールバーで「スクリプトの表示」をクリックします。または、特定のスクリプトを右クリックして「ソースを表示」を選択します。
選択したスクリプトが、読取り専用でコード・ビューアに表示されます。

生成されたスクリプトをファイルへ保存

生成済スクリプトを保存する手順は、次のとおりです。

1. ログウィンドウで、必要なオブジェクトについての生成結果を含む「結果」タブをクリックします。

2. オブジェクト・ノード、「スクリプト」ノードの順に開きます。
選択したデータ・オブジェクトについての生成されたスクリプトのリストが「スクリプト」ノードに表示されます。

3. 特定のスクリプトを選択し、「別名で保存」をクリックします。
「保存」ダイアログ・ボックスが開き、スクリプト・ファイルを保存するロケーションを選択できます。

2 リレーショナル・データ・オブジェクトの作成

データ・ウェアハウスやデータ・マートの設計が完了したら、ターゲット・システムを設計できます。この章では、リレーショナル・データ・オブジェクトの作成方法について説明します。

この章の内容は次のとおりです。

- データ・オブジェクトの概要

- 表の定義

- ビューの定義

- マテリアライズド・ビューの定義

- 制約の定義

- 索引の定義

- パーティションの定義

- 属性セットの定義

- 順序の定義

- ユーザー定義型の定義

- キューの定義

- リレーショナル・データ・オブジェクトの構成

- Microsoft SQL ServerおよびIBM DB2 UDBでのリレーショナル・データ・オブジェクトの作成

データ・オブジェクトの概要

Oracle Warehouse Builderによりリレーショナルおよびディメンショナルのデータ・オブジェクトがサポートされます。リレーショナル・データベースなどのリレーショナル・オブジェクトは、表および表から導出されたオブジェクトに依存し、すべてのデータを格納し、それらのデータにリンクします。定義するリレーショナル・オブジェクトは、データベース内の物理的なコンテナになり、データの格納に使用されます。ウェアハウスが作成された後、これらのリレーショナル・オブジェクトから問合せを実行します。リレーショナル・オブジェクトには、表、ビュー、マテリアライズド・ビュー、順序、ユーザー定義型およびキューが含まれます。また、制約、索引、パーティションおよび属性セットなどのリレーショナル・オブジェクトに関連付けられたオプションの構造も作成できます。

ディメンション・オブジェクトには、データを識別し、分類するための追加のメタデータが含まれています。ディメンション・オブジェクトを定義するときは、より構造化された形式でデータを格納できるように、論理的な関係を記述します。ディメンション・オブジェクトには、ディメンションとキューブがあります。

Oracleモジュールには、Oracle Warehouse Builderで定義できるリレーショナルおよびディメンションのそれぞれのデータ・オブジェクト・タイプのノードが含まれています。プロジェクト・ナビゲータで、モジュールを拡張すると、サポートされているデータ・オブジェクトがすべて表示されます。

Oracle Warehouse Builderでは、リレーショナル・オブジェクトおよびディメンション・オブジェクトに加えてインテリジェンス・オブジェクトもサポートされます。インテリジェンス・オブジェクトはOracleモジュールの一部ではありません。プロジェクト・ナビゲータでは「ビジネス・インテリジェンス」ノードに表示されます。インテリジェンス・オブジェクトを使用すると、ビジネス・ビューの定義を格納できます。これらの定義をOracle Discovererなどの分析ツールに配布し、ウェアハウスに対して非定型の問合せを実行することができます。

関連項目:
Oracle BI Discoverer用のビジネス定義の作成方法は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

Oracle Warehouse Builderのデータ・オブジェクトのリスト

表2-1に、Oracle Warehouse Builderで使用できるデータ・オブジェクトのタイプを説明します。

表2-1 Oracle Warehouse Builderのデータ・オブジェクト

データ・オブジェクト

タイプ

説明

表

リレーショナル

リレーショナル・データベース管理システムの記憶域の基本単位です。表を作成して有効なデータ行を表に挿入できます。その後、表の情報の問合せ、削除または更新を実行できます。定義済のビジネス・ルールを表のデータに適用するには、表に対して整合性制約を定義します。

詳細は、「表の定義」を参照してください。

外部表

リレーショナル

外部表は、フラット・ファイルのデータをリレーショナル形式で表現した表です。外部表は、フラット・ファイル演算子やSQL*Loaderのかわりに使用します。

外部表の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

ビュー

リレーショナル

ビューは、1つ以上の表のデータをカスタマイズして表示したものです。ビューには、データが実際に格納されているわけではありません。データはビューの基となる表から導出されます。制約はいくつかありますが、表と同様に、ビューに対しても、問合せ、更新、挿入および削除を実行できます。ビューに対して実行した操作はすべて、ビューの実表に影響を与えます。データの表示を簡潔にしたり、データへのアクセスを制限するには、ビューを使用します。

詳細は、「ビューの定義」を参照してください。

マテリアライズド・ビュー

リレーショナル

マテリアライズド・ビューは事前に計算された表で、ファクト表、および場合によってはディメンション表から集計または結合されたデータで構成されます。サマリー表または集計表とも呼ばれます。問合せのパフォーマンスを改善するには、マテリアライズド・ビューを使用します。

詳細は、「マテリアライズド・ビューの定義」を参照してください。

順序

リレーショナル

順序は、一意の数字のリストを生成するデータベース・オブジェクトです。順序を使用すると、一意のサロゲート・キー値を生成できます。

詳細は、「順序の定義」を参照してください。

ディメンション

ディメンショナル

データ・セットのメンバーの指定に使用される特性を表す一般的な用語です。販売向けのデータ・ウェアハウスにおけるこれら最も一般的な3つのディメンションは、時間、地理および製品です。ほとんどのディメンションには階層があります。

詳細は、「ディメンションの概要」を参照してください。

キューブ

ディメンショナル

キューブには、メジャー、および1つ以上のディメンション表へのリンクが含まれます。これらはファクトとも呼ばれます。

詳細は、「キューブの概要」を参照してください。

アドバンスト・キュー

リレーショナル

アドバンスト・キューによって、アプリケーションの統合に必要なメッセージ管理および通信が可能になります。

詳細は、「アドバンスト・キューの定義の作成」を参照してください。

キュー表

リレーショナル

キュー表は、キューを格納する表です。各キュー表には、データ型がキュー表の作成時に指定されるペイロードが含まれます。

詳細は、「キュー表の定義の作成」を参照してください。

オブジェクト・タイプ

リレーショナル

オブジェクト・タイプは、1つ以上のユーザー定義型またはスカラー型から構成されます。

詳細は、「オブジェクト・タイプについて」を参照してください。

可変長配列

リレーショナル

可変長配列は、順序付けられた要素の集合です。

詳細は、「可変長配列について」を参照してください。

ネストした表

リレーショナル

ネストした表は、可変長配列データ型の機能を補完します。ネストした表では、1つの行に、1つのオブジェクトに含まれる関連データについて複数のミニ行を指定できます。

詳細は、「ネストした表について」を参照してください。

サポートされるデータ型

作成したデータ・オブジェクトのメタデータはリポジトリ内に格納されます。メタデータには、属性、列名、データ型、レベル名などの詳細が含まれます。

表2-2に、列や属性の定義に使用できるデータ型を示します。

表2-2 Oracle Warehouse Builderによってサポートされるデータ型

データ型

説明

BINARY_DOUBLE

倍精度IEEE 754形式の単精度浮動小数点数を格納します。主に科学分野の高速計算に使用されます。この型のリテラルはdです。例: 3.0235d。

BINARY_FLOAT

単精度IEEE 754形式の単精度浮動小数点数を格納します。主に科学分野の高速計算に使用されます。この型のリテラルはfです。例: 2.07f。

BLOB

ラージ・バイナリ・オブジェクトをデータベースの表内または表外に格納します。すべてのBLOB変数には、ラージ・バイナリ・オブジェクトを指し示すロケータが含まれます。BLOBの最大サイズは4GBです。

CHAR

固定長の文字データを最大4,000文字まで格納します。内部のデータ表現は、データベースのキャラクタ・セットによって異なります。サイズはバイト数または文字数で指定できます。各文字には、キャラクタ・セットのエンコードに応じて、1バイトまたは複数バイトが含まれます。

CLOB

文字データの大規模なブロックをデータベースの表内または表外に格納します。固定幅と可変幅の両方のキャラクタ・セットがサポートされます。すべてのCLOB変数には、文字データの大規模なブロックを指し示すロケータが含まれます。CLOBの最大サイズは4GBです。

DATE

固定長の日時を格納します。この日時には、午前0時から現在時刻までの経過秒数が含まれています。日付は現行月の最初の日、時刻は午前0時にデフォルト設定されます。日付関数SYSDATEは、現在の日時を戻します。

FLOAT

単精度浮動小数点数を格納します。FLOATが正しい結果でロードされるのは、FLOATの表現に互換性があり、長さが同じであるシステム間の場合のみです。

INTEGER

NUMBERのサブ型であり、最大精度38桁で整数値を格納します。

INTERVALDAYTOSECOND

日、時間、分および秒の間隔を格納します。

INTERVALYEARTOMONTH

年および月の間隔を格納します。

LONG

固定長の文字列を格納します。LONGデータ型はVARCHAR2データ型に類似していますが、LONG値の最大長が2147483647バイト(2GB)である点が異なります。

LONG RAW

バイナリ・データまたはバイト列を格納します。このデータ型は、グラフィック、サウンド、ドキュメントまたはバイナリ・データ配列を格納するために使用されます。

MDSYS.SDOAGGRTYPE

空間オブジェクトのジオメトリの記述および許容差を格納します。許容差は、2つの点が同じ点であるとみなすのに十分近いと判断するために使用されます。

MDSYS.SDO_DIM_ARRAY

MDSYS.SDO_DIM_ELEMENT型の配列を格納します。

MDSYS.SDO_DIM_ELEMENT

ディメンション名、下限、上限および許容差を格納します。

MDSYS.SDO_ELEM_INFO_ARRAY

MDSYS.SDO_ORDINATE_ARRAY型の配列を格納します。

MDSYS.SDO_GEOMETRY

地理情報システム(GIS)データまたは空間データをデータベースに格納します。詳細は、Oracle Spatial開発者ガイドを参照してください。

MDSYS.SDO_ORDINATE_ARRAY

ジオメトリを定義するすべての頂点のリストを格納します。

MDSYS.SDO_POINT_TYPE

2次元および3次元の点を格納します。

NCHAR

固定長(必要に応じて空白が埋め込まれます)の各国語キャラクタ・データを格納します。この型は常にマルチバイト文字に対応可能であるため、この型を使用してUnicode文字データを格納できます。内部のデータ表現は、データベースの作成時に指定された各国語キャラクタ・セットによって異なります。これには、可変幅のエンコーディング(UTF8)または固定幅のエンコーディング(AL16UTF16)が使用される場合があります。

NCLOB

NCHARデータの大規模なブロックをデータベースの表内または表外に格納します。

NUMBER

固定小数点または浮動小数点の形式で実数を格納します。このデータ型を使用する数値は、異なるOracleプラットフォーム間で移植可能であることが保証され、最大38桁の精度で表されます。NUMBER列には、正数と負数に加え、0(ゼロ)を格納できます。

NVARCHAR2

可変長のUnicode文字データを格納します。この型は常にマルチバイト文字に対応可能であるため、この型を使用してUnicode文字データを格納できます。内部のデータ表現は、データベースの作成時に指定された各国語キャラクタ・セットによって異なります。これには、可変幅のエンコーディング(UTF8)または固定幅のエンコーディング(AL16UTF16)が使用される場合があります。

RAW

バイナリ・データまたはバイト列を格納します。たとえば、RAW変数には、一連の図形文字またはデジタル化された写真などが格納される場合があります。RawデータはVARCHAR2データに類似していますが、RawデータはPL/SQLで解析できない点が異なります。

ROWID

表内の行の一意のアドレスを表すBase 64文字列です。このデータ型は、主にROWID疑似列から戻される値に使用されます。

SYS.ANYDATA

特定の型のインスタンスを、データとともに、型の説明も付加して格納できるOracle提供の型です。ANYDATAは表の列データ型として使用でき、単一の列に異なる型の値を格納できます。値には、SQL組込み型およびユーザー定義型を使用できます。

SYS.AQ$_JMS_BYTES_MESSAGE

BytesMessageをOracle Streams AQキューに格納するために使用される抽象データ型(ADT)です。

BytesMessageオブジェクトは、中断なしのバイト・ストリームを含むメッセージを送信するために使用されます。

このデータ型の詳細は、次を参照してください。

- Oracle Database PL/SQLパッケージおよびデータ型リファレンス

- Oracle Streamsアドバンスト・キュー・ユーザーズ・ガイド

SYS.AQ$_JMS_MAP_MESSAGE

MapMessageをOracle Streams AQキューに格納するために使用される抽象データ型(ADT)です。

MapMessageオブジェクトは、一連の名前と値のペアを送信するために使用されます。この場合の名前は文字列型、値はJavaプリミティブ型です。

このデータ型の詳細は、次を参照してください。

- Oracle Database PL/SQLパッケージおよびデータ型リファレンス

- Oracle Streamsアドバンスト・キュー・ユーザーズ・ガイド

SYS.AQ$_JMS_MESSAGE

5種類のJMSメッセージ・タイプ(テキスト・メッセージ、バイト・メッセージ、ストリーム・メッセージ、マップ・メッセージ、オブジェクト・メッセージ)のどれでも表せるADT型です。したがって、このADTを使用して作成されるキューには、5つのタイプのJMSメッセージをすべて格納できます。

このデータ型の詳細は、Oracle Database PL/SQLパッケージおよびデータ型リファレンスを参照してください。

SYS.AQ$_JMS_STREAM_MESSAGE

StreamMessageをOracle Streams AQキューに格納するために使用される抽象データ型(ADT)です。StreamMessageオブジェクトは、Javaプリミティブのストリームの送信に使用されます。このオブジェクトの入力および読取りは順次実行されます。

このデータ型の詳細は、次を参照してください。

- Oracle Database PL/SQLパッケージおよびデータ型リファレンス

- Oracle Streamsアドバンスト・キュー・ユーザーズ・ガイド

SYS.AQ$_JMS_TEXT_MESSAGE

TextMessageをOracle Streams AQキューに格納するために使用される抽象データ型(ADT)です。TextMessageオブジェクトは、java.lang.StringBufferを含むメッセージを送信するために使用されます。

このデータ型の詳細は、次を参照してください。

- Oracle Database PL/SQLパッケージおよびデータ型リファレンス

- Oracle Streamsアドバンスト・キュー・ユーザーズ・ガイド

SYS.LCR$_ROW_RECORD

データ操作言語(DML)による表内の行への変更を表すデータ型です。この型は、LCR$_ROW_LIST型を使用します。

TIMESTAMP

DATEデータ型を拡張し、年、月、日、時間、分および秒を格納します。デフォルトのタイムスタンプ書式は、Oracle Database初期化パラメータNLS_TIMESTAMP_FORMATによって設定されます。

TIMESTAMPWITHLOCALTIMEZONE

TIMESTAMPデータ型を拡張し、タイムゾーンによる時差を組み込みます。タイムゾーンによる時差は、ローカル時間と協定世界時(UTC、元標準グリニッジ時)との差違です。TIMESTAMP WITH TIME ZONEと同様に、名前付きのタイムゾーンを使用することもできます。

TIMESTAMPWITHTIMEZONE

TIMESTAMPデータ型を拡張し、タイムゾーンによる時差を組み込みます。タイムゾーンによる時差は、ローカル時間と協定世界時(UTC、元標準グリニッジ時)との差違です。

UROWID

物理表でもOracle Databaseによって生成された表でもないリレーショナル表内の特定の行のアドレスを表します。たとえば、索引によって編成された表の行アドレスや、Oracle以外の外部表(ゲートウェイを使用してアクセスされるDB2など)の行IDなどがあります。最大サイズは4000バイトです。

VARCHAR

長さと値のペアのデータ型を格納します。このデータ型は、バイナリ長のサブフィールドと、それに続く指定した長さの文字列で構成されます。データ・ファイルに文字と長さのセマンティクスが使用されていなければ、長さはバイトで表現されます。使用されている場合、文字数で表現されます。

VARCHAR2

可変長の文字データを格納します。内部のデータ表現は、データベースのキャラクタ・セットによって異なります。VARCHAR2データ型は、最大4000文字まで指定する必須パラメータを使用します。

XMLFORMAT

SYS_XMLGEN()およびSYS_XMLAGG()関数の書式設定引数の指定に使用されるオブジェクト型です。

XMLTYPE

Oracleが提供する型を使用して、データベースにXMLデータを格納したり、データベース内のXMLデータを問い合せたりできます。XPath式を使用したXMLデータに対するアクセス、抽出および問合せに使用できるメンバー関数が含まれます。XPathは、XML文書をトラバースするためにW3Cによって開発された規格です。

ユーザー定義型

Oracle組込みデータ型およびその他のユーザー定義データ型を、アプリケーションでのデータの構造および動作をモデル化するオブジェクト・タイプの構築ブロックとして使用します。

ユーザー定義型には、オブジェクト・タイプ、可変長配列およびネストした表が含まれます。

オブジェクト・クラス定義について

Oracle Warehouse Builderのアーキテクチャは、ファースト・クラス・オブジェクト、セカンド・クラス・オブジェクトおよびサード・クラス・オブジェクトなど、様々なクラスのオブジェクトで構成されています。この項では、これらのオブジェクト・クラスについて説明します。

ファースト・クラス・オブジェクト(FCO)について

ファースト・クラス・オブジェクト(FCO)は、Oracle Warehouse Builderインタフェースから操作できるメタデータ・リポジトリにあるコンポーネントを表します。ファースト・クラス・オブジェクトは、常にではありませんが多くの場合、他のオブジェクトを所有しています。たとえば、TABLEはFCOであり、セカンド・クラス・オブジェクトであるTABLE_COLUMN、UNIQUE_KEY、FOREIGN_KEYおよびCHECK_CONSTRAINTを所有する場合があります。

デザイン・センターを使用してOracle Warehouse Builderにアクセスする場合、一般的にFCOはナビゲーション・ツリーに表示されます。同様に、OMB*Plusを通じてOracle Warehouse Builderにアクセスするユーザーは、OMBCREATE、OMBALTER、OMBRETRIEVEおよびOMBDROPコマンドのオブジェクトとしてFCOを一般化できます。

セカンド・クラス・オブジェクト(SCO)について

セカンド・クラス・オブジェクト(SCO)は、依存オブジェクト・コンポーネントを表します。SCOは常に他のオブジェクトによって所有されますが、同時に、それ自体もオブジェクトを所有できます。たとえば、MAPPINGと呼ばれるFCOは、SCO MAPPING_OPERATORを含んでいますが、これにはさらにATTRIBUTESが含まれます。

デザイン・センターを使用してOracle Warehouse Builderにアクセスする場合、SCOはFCOを通じてのみ操作可能です。同様に、OMB*Plusを通じてOracle Warehouse Builderにアクセスするユーザーは、FCOに対するコマンドを通じてのみSCOの定義を操作できます。

サード・クラス・オブジェクトとフォース・クラス・オブジェクトについて

サード・クラス・オブジェクトとフォース・クラス・オブジェクトは、他のオブジェクトに所有されたオブジェクトの相対的な位置付けを表します。所有権が複数レイヤーになるオブジェクトにのみ当てはまります。たとえば、DIMENSION_TABLE(ファースト・クラス・オブジェクト)がINDEX_COLUMNを所有している場合、INDEX_COLUMNはセカンド・クラス・オブジェクトになります。しかし、ファースト・クラス・オブジェクトCUBE_TABLEがセカンド・クラス・オブジェクトINDEXを所有し、そのINDEXがINDEX_COLUMNを所有している場合には、INDEX_COLUMNはサード・クラス・オブジェクトになります。

データ・オブジェクトのネーミング規則

データ・オブジェクトのネーミング規則は、Oracle Warehouse Builder用に設定するネーミング・モードに応じて異なります。Oracle Warehouse Builderでは、ワークスペースに格納されているオブジェクトごとにビジネス名と物理名が維持されます。オブジェクトのビジネス名は詳細な論理名であり、物理名はOracle Warehouse Builderでコード生成時に使用される名前です。

ネーミング・モードは、「プリファレンス」ダイアログ・ボックスのネーミング・プリファレンス・セクションで設定します。

関連項目:
ネーミングのプリファレンスの詳細は、Oracle Warehouse Builder概要を参照してください。

データ・オブジェクトの名前を指定または変更するときは、次のネーミング規則を使用してください。

Oracleデータ・オブジェクトのネーミング

物理ネーミング・モードでは、Oracleデータ・オブジェクトの名前は1文字から30文字までの英数字です。名前はオブジェクトを所有するオブジェクト・カテゴリ全体で一意である必要があります。空白は使用できません。データ・オブジェクト名はOWB$で始まることはできません。

関連項目:
他のプラットフォームでの物理名の長さの詳細は、次を参照してください。

- IBM DB2 UDBでのオブジェクトのネーミング規則

- Microsoft SQL Serverでのオブジェクトのネーミング規則

ビジネス・ネーミング・モードでは、200文字までに制限されています。名前はオブジェクトを所有するオブジェクト・カテゴリ全体で一意である必要があります。たとえば、すべての表がモジュールに属しているため、表名は表が属しているモジュール全体で一意である必要があります。同様に、モジュール名はモジュールが属しているプロジェクト全体で一意である必要があります。

データ・オブジェクトの記述

必要に応じてデータ・オブジェクトの説明を編集します。説明には1文字から4000文字の英数字を使用でき、空白を含めることができます。データ・オブジェクトの説明を指定するかどうかはオプションです。

データ・オブジェクトのネーミングのベスト・プラクティス

データ・オブジェクト名またはFCO名は、そのFCOを所有するオブジェクト・カテゴリ全体で一意である必要があります。さらに、SCO名がFCOを所有するオブジェクト・カテゴリ全体で一意であるようにし、そのSCOを含んでいるSCOの名前とは異なる名前にするのが賢明です。

たとえば、表には制約が含まれています。表はFCOであり、制約はSCOです。表を定義するときには、その表が定義されるモジュール全体で一意の表名を付ける必要があります。さらに、そのモジュール内のすべてのFCOおよびSCOにわたって一意の制約名を付けることをお薦めします。

データ・ビューアを使用したデータ・オブジェクトに格納されたデータの表示

データ・ビューアを使用すると、リレーショナル・データ・オブジェクトおよびディメンション・データ・オブジェクトに格納されているデータを表示できます。たとえば、表のデータ・ビューアでは、表のデータを表示できます。同様に、キューブのデータ・ビューアでは、キューブに格納されているデータを表示できます。

データ・オブジェクトのデータ・ビューアにアクセスするには、そのデータ・オブジェクトを右クリックして「データ」を選択します。そのデータ・オブジェクトに格納されているデータを含むデータ・ビューアが、別のタブに表示されます。

「データ・ビューア」タブには、「問合せの実行」、「詳細を取得」、「WHERE句」および「詳細」というボタンがあります。「詳細」ボタンがタブの最下部に表示されます。

「問合せの実行」をクリックしてデータ・オブジェクトの問合せを実行し、データをフェッチします。

デフォルトでは、データ・ビューアにはデータの最初の100行が表示されます。次の行のセットを取得するには、「詳細を取得」をクリックします。または、「詳細」をクリックして同じアクションを実行できます。

「WHERE句」をクリックし、データ・ビューアに表示されるデータを制限するために使用する条件を指定します。このボタンをクリックすると、「WHERE句」ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用してデータのフィルタに使用する条件を指定します。このオプションは表およびビューのみに使用できます。

データ・ビューアに表示される列と列名は、実際の表が配布されたロケーションから直接取得されます。

注意:
LONGデータ型の列の場合、データ・ビューアには、その列に格納されている実際の値のかわりに、<サポートされていないデータ型>と表示されます。

エラー表について

Oracle Warehouse Builderでは、データをOracleデータ・オブジェクト(表、ビュー、マテリアライズド・ビュー、ディメンション、キューブなど)にロードしているときに発生する可能性がある論理エラーを格納するエラー表を作成できます。

エラー表は次の目的で使用されます。

- 表、ビューまたはマテリアライズド・ビューへのデータ・ルール適用時の論理エラーの取得。

- DMLエラー・ロギングを使用した物理エラーの取得。

- ディメンション・オブジェクトに対して親のないオーファン管理ポリシーが有効になっている場合にオーファン・レコードによって引き起こされたエラーの格納。

関連項目:
オーファン管理の詳細は、「ディメンション・オブジェクトのオーファン管理」を参照してください。

データ・オブジェクトのエラー表の定義

データ・オブジェクトのエラー表が作成されるのは、そのデータ・オブジェクトの「エラー表名」構成パラメータが設定された場合のみです。エラー表名を指定しなかった場合、そのオブジェクトに関する論理エラーは記録されなくなります。ただし、データ・オブジェクトにデータ・ルールが関連付けられている場合は、そのオブジェクトに対してエラー表名を指定しなくても、デフォルト名を使用してエラー表が作成されます。たとえば、データ・ルールを指定した表の名前がEMPの場合、エラー表の名前はEMP_ERRになります。

データ・オブジェクトのエラー表を作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、エラー表を作成するデータ・オブジェクトを右クリックし、「構成」を選択します。
そのデータ・オブジェクトの構成パラメータを含む「構成」タブが表示されます。

2. 「構成」タブで「エラー表」ノードを開きます。

3. 「エラー表名」パラメータの値を、そのデータ・オブジェクトのエラー表の名前に設定します。

データ・オブジェクトの配布後に「エラー表名」パラメータの値を変更する場合は、そのデータ・オブジェクトを削除して再配布する必要があります。データ・オブジェクトがマッピングで使用されていた場合は、そのデータ・オブジェクトにバインドされていたすべての演算子を同期化し、マッピングを再配布します。

注意:
表演算子、ビュー演算子またはマテリアライズド・ビュー演算子の「エラー表名」および「エラー表の切り捨て」構成パラメータは、行ベース・コードには使用されません。

エラー表の列

データ・オブジェクトのエラー表には、データ・オブジェクトに含まれる列に加えて、表2-3に示す列も含まれます。

表2-3 エラー表の列

列名

説明

ORA_ERR_NUMBER$

Oracle Databaseエラー番号

ORA_ERR_MESG$

Oracle Databaseエラー・メッセージ・テキスト

ORA_ERR_ROWID$

(更新および削除)エラーのある行の行ID

ORA_ERR_OPTYPE$

操作のタイプ: 挿入(I)、更新(U)、削除(D)

ORA_ERR_TAG$

ランタイム監査データの手順または詳細な監査ID。これはランタイム・ビューALL_RT_AUDIT_STEP_RUNSのSTEP_ID列です。

スカラー・データ型で、データ・オブジェクトに適用するデータ・ルールがない場合、エラー表の列はデータ型VARCHAR2(4000)です。これにより、ORA-12899などの物理データ・エラー(列に対して値が非常に大きいというエラー)を検出できます。データ・ルールを適用する場合、エラー表の列のデータ型は、データ・オブジェクト内の列と同じデータ型になります。

たとえば、表TESTに、C1(データ型はNUMBER)とC2(データ型はVARCHAR2(10))の2列があるとします。TESTに対して生成されるエラー表には、DMLエラー列のC1およびC2が含まれます。TESTにデータ・ルールが適用されていない場合、C1とC2のデータ型は両方ともVARCHAR2(4000)になります。TESTにデータ・ルールが適用されている場合、C1のデータ型はNUMBER、C2のデータ型はVARCHAR2(10)になります。

表の定義

表はリレーショナル記憶域オブジェクトのメタデータ表現です。データベース・システム(Oracle Databaseなど)の表である場合も、SAPシステムの表である場合もあります。

次の各項で、表の定義方法について説明します。

- 表定義の作成

- 表定義の編集

表定義の作成

表には、ターゲット・スキーマのモデル化に使用されるメタデータが取り込まれます。この表定義には、表の制約、索引、パーティション、属性セットおよび表で使用される列とデータ型に関するメタデータが指定されています。この情報はワークスペースに格納されます。後からこれらの定義を使用して.ddlスクリプトを生成し、それを配布してターゲット・データベース内に物理表を作成できます。その後、これらの表に選択したソース表のデータをロードできます。

前提作業

表を含めるターゲット・スキーマは、「ターゲット・スキーマの設計」の説明に従って作成してください。

Oracleモジュールで表を作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. 表を作成するモジュールを展開し、「表」を右クリックして、「新規表」を選択します。
または

表を作成するモジュールを右クリックし、「新規」を選択します。「新規ギャラリ」ダイアログ・ボックスが表示されます。「アイテム」セクションから「表」を選択し、「OK」をクリックします。

3. 「表の作成」ダイアログ・ボックスで、表の名前と説明(オプション)を入力し、「OK」をクリックします。または、自動生成された一意の表名を受け入れて「OK」をクリックすることもできます。
表エディタが表示されます。次のタブを使用して表を定義します。

- 「列」タブ

- 「キー」タブ

- 「索引」タブ

- 「パーティション」タブ

- 「属性セット」タブ

- 「データ・ルール」タブ

れらのタブを使用して表の定義を終了すると、表定義が作成され、ワークスペースに格納されます。また、新しい表の名前がプロジェクト・ナビゲータに追加されます。この段階では、表のメタデータのみがワークスペース内に作成されます。ターゲット・スキーマ内に表を作成するには、表を配布する必要があります。

注意:
グラフィカル・ナビゲータから表を作成することもできます。

「名前」タブ

表の名前と説明を指定するには、「名前」タブを使用します。このタブには次のフィールドがあります。

- 名前: 表の名前を表します。表が定義されるモジュール全体で一意の名前を付ける必要があります。

- 説明: 表の説明(オプション)を指定します。

「データ・オブジェクトのネーミング規則」で説明されている規則に従って、名前と説明(オプション)を指定します。

「列」タブ

表の列を定義するには、「列」タブを使用します。このタブには、列を定義するために使用する表が表示されます。この表の各行は、それぞれ表の1つの列の定義に対応しています。Oracle Warehouse Builderにより、列を入力した順序で列の位置が生成されます。列の順序を変更する方法の詳細は、「表内の列の順序変更」を参照してください。

列ごとに次の詳細を入力します。

- 名前: 列の名前を入力します。列名は表内で一意である必要があります。

- データ型: 「データ型」リストから列のデータ型を選択します。デフォルトのデータ型が列名に基づいて割り当てられます。たとえば、start_dateという名前の列を作成する場合、割り当てられるデータ型はDATEです。デフォルトの割当てがデータ要件に合わない場合は変更できます。
サポートされているOracle Databaseのデータ型のリストについては、「サポートされているデータ型」を参照してください。

- 長さ: 列の長さを入力します。長さは文字データ型にのみ適用可能です。

- 精度: 列に使用できる合計桁数を指定します。精度は数値データ型にのみ適用可能です。

- スケール: 小数点以下の合計桁数を指定します。スケールは数値データ型にのみ適用可能です。

- 秒精度: TIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。日時フィールドの小数部の桁数を指定します。

- NOT NULL: 列にNULL値を含めないよう指定するにはこのフィールドを選択します。デフォルトでは、表のすべての列でNULLを使用できます。

- デフォルト値: この列のデフォルト値を指定します。表にデータをロードするときにこの列に値が入力されなかった場合は、デフォルト値が使用されます。データのロード中にこの列の値を指定した場合は、デフォルト値が上書きされ、指定した値がこの列に格納されます。

- 仮想: 列が仮想列であることを示すには、このオプションを選択します。
仮想列はデータベースには格納されません。仮想列は、「式」フィールドで指定された式を使用して計算されます。仮想列は表内の他の列と同じ方法で参照できますが、仮想列に対して明示的に書き込むことはできません。

- 式: 仮想列の値の計算に使用される式を指定します。式には、同じ表からの列、制約、SQL関数およびユーザー定義PL/SQL関数を含めることができます。

- 説明: 列の説明(オプション)を入力します。

「キー」タブ

表の列に対する制約を作成するには、「キー」タブを使用します。主キー、外部キー、一意キーおよびチェック制約を作成できます。制約の作成方法は、「制約の作成」を参照してください。

「索引」タブ

表に対する索引を作成するには、「索引」タブを使用します。索引を使用することにより、データ・ウェアハウスに格納されたデータをより迅速に取得できます。一意、標準、ビットマップ、機能ベース、コンポジットおよび逆タイプの索引を作成できます。これらの索引の作成方法は、「索引の作成」を参照してください。

「パーティション」タブ

表のパーティションを作成するには、「パーティション」タブを使用します。パーティションを使用すると、大きな表を管理しやすくなります。また、問合せとロードのパフォーマンスが向上します。レンジ、ハッシュ、数量別ハッシュ、リスト、レンジ・ハッシュ、数量別レンジ・ハッシュおよびレンジ・リストの各タイプのパーティションを作成できます。パーティションの詳細と各タイプのパーティションの作成方法は、「パーティションの定義」を参照してください。

「属性セット」タブ

表の属性セットを作成するには、「属性セット」タブを使用します。表の属性セットの作成方法は、「属性セットの定義」を参照してください。

「データ・ルール」タブ

表にデータ・ルールを適用するには、「データ・ルール」タブを使用します。データ・ルールを使用すると、表内の有効なデータおよび表間の有効な関係を決定できます。表にデータ・ルールを適用すると、Oracle Warehouse Builderにより表内のデータが指定のデータ・ルールに従っているかどうかが確認されます。

Oracle Warehouse Builderには事前に定義されたデータ・ルールのセットが用意されており、それらのデータ・ルールはプロジェクト・ナビゲータの「データ・ルール」ノードの下にある「DERIVED_DATA_RULES」ノードにリストされます。「データ・ルール」ノードの下にデータ・ルールを作成することにより、独自のデータ・ルールを定義できます。

データ・ルールを表に適用するには、「ルールの適用」をクリックします。データ・ルールの適用ウィザードが表示されます。このウィザードを使用して、データ・ルールとそのデータ・ルールを適用する列を選択します。

データ・ルールを表に適用すると、そのデータ・ルールが「データ・ルール」タブに表示されます。データ・ルールを表に適用するには、そのデータ・ルール名の左側のチェック・ボックスを選択します。データ・ルールを表に適用しない場合は、このオプションの選択を解除します。

関連項目:

- データ・ルールの概要

- データ・ルールのデータ・オブジェクトへの適用

- データ・ルールの作成ウィザードを使用したデータ・ルールの作成

表定義の編集

表定義を編集するには、表エディタを使用します。エディタを開くには、プロジェクト・ナビゲータで表名を右クリックし、開くを選択します。かわりに、プロジェクト・ナビゲータで表名をダブルクリックして開くという方法もあります。この項では、編集できる表定義について説明します。

表の改名

表の名前を変更するには、次のいずれかの方法を使用します。

- 表エディタの「名前」タブで「名前」フィールドをクリックし、表の新しい名前を入力します。フィールドに格納されている説明を変更することもできます。
または、プロジェクト・ナビゲータで表を選択し、プロパティ・インスペクタで表のプロパティを表示します。物理名プロパティとプロパティの値を編集します。

- プロジェクト・ナビゲータで、名前を変更する表を選択して[F2]キーを押します。表名がハイライト表示されます。新しい表名を入力して[Enter]キーを押します。

- プロジェクト・ナビゲータで表名を右クリックし、改名を選択します。表名がハイライト表示されます。表の新しい名前を入力して[Enter]キーを押します。

表の列の追加、変更および削除

表の列の追加、変更および削除には、表エディタの「列」タブを使用します。

列の追加

「列」タブにナビゲートします。空白行の「名前」フィールドをクリックし、新しい列を定義する詳細を入力します。詳細は、「「列」タブ」を参照してください。

列の変更

列の定義を変更するには、表エディタの「列」タブを使用します。新しい値を入力するか、リストから新しい値を選択することにより、列定義の任意の属性を変更できます。詳細は、「「列」タブ」を参照してください。

列の削除

「列」タブにナビゲートします。削除する列名の左側にあるグレーのセルを右クリックし、「削除」を選択します。

表制約の追加、変更および削除

表エディタの「キー」タブにナビゲートします。

制約の追加と編集の詳細は、「制約の作成」および「制約の編集」をそれぞれ参照してください。

制約を削除するには、列名の左側にあるグレーのセルをクリックして、制約を表す行を選択します。タブの下部にある「削除」をクリックします。

属性セットの追加、変更および削除

表の属性セットの追加、変更および削除には、表エディタの「属性セット」タブを使用します。

属性セットの追加の詳細は、「属性セットの作成」を参照してください。属性セットの編集方法は、「属性セットの編集」を参照してください。

属性セットを削除するには、「属性セット」タブにナビゲートします。削除する属性セットの左側にあるセルを右クリックし、「削除」を選択します。

表内の列の順序変更

デフォルトでは、表内の列は作成された順序で表示されます。この順序は、表の作成のために生成されるDDLスクリプトにも伝播されます。このデフォルトの順序がアプリケーションのニーズに合わない場合、または問合せのパフォーマンスをさらに最適化する場合は、列の順序を変更できます。

列の位置を変更する手順は、次のとおりです。

1. 表に対して表エディタが開いていない場合は、表エディタを開きます。
それには、プロジェクト・ナビゲータで表の名前をダブルクリックします。または、プロジェクト・ナビゲータで表名を右クリックし、開くを選択します。

2. 「列」タブで、列名の左側にあるグレーの四角を選択します。
行全体がハイライト表示されます。

3. 「列」タブの左側のボタンを使用し、列を必要な位置まで移動します。
これで列の位置が更新されました。

4. 表エディタを閉じます。

表内での列の新しい位置をワークスペースに保存するには、変更した表定義を配布する必要があります。

ビューの定義

Oracle Warehouse Builderでは、ビューとマテリアライズド・ビューを定義できます。この項ではビューについて説明します。ビューは、データの表示を単純化したり、データへのアクセスを制限するために使用します。ユーザーが関心を持つデータは、通常は多くの列を含む複数の表にまたがって格納されています。ビューを作成する場合、適切なデータのみまたはユーザーがアクセス権限を持つデータのみを取り出すように、格納される問合せを作成します。

関連項目:
マテリアライズド・ビューの詳細は、「マテリアライズド・ビューの定義」を参照してください。

ビューを定義することにより、ターゲット・データの問合せをモデル化できます。この問合せ情報はワークスペースに格納されます。後からこれらの定義を使用して.ddlスクリプトを生成し、それを配布してターゲット・システム内にビューを作成できます。

この項の内容は次のとおりです。

- ビュー定義の作成

- ビュー定義の編集

ビュー定義の作成

ビュー定義では、ビュー、制約、属性セット、データ・ルールおよびビューで使用される列とデータ型に関するメタデータの作成に使用される問合せを指定します。この情報はワークスペースに格納されます。ビュー定義を生成し、.ddlスクリプトを作成できます。これらのスクリプトを配布して、データベースに物理ビューを作成できます。

前提作業

ビューを含めるターゲット・スキーマは、「ターゲット・モジュールの作成」の説明に従って作成してください。

ビューを定義する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. ビューを作成するターゲット・モジュールを展開し、「ビュー」を右クリックして、「新規ビュー」を選択します。
または

ビューを作成するターゲット・モジュールを右クリックし、「新規」を選択します。新規ギャラリダイアログ・ボックスで、「ビュー」を選択して「OK」をクリックします。

3. 「ビューの作成」ダイアログ・ボックスで、ビューの名前と説明(オプション)を入力し、「OK」をクリックします。
ビュー・エディタが表示されます。

注意:
名前と説明は、「データ・オブジェクトのネーミング規則」で説明されているネーミング規則に従う必要があります。

4. ビュー・エディタの次のタブに情報を入力します。

- 「列」タブ

- 「問合せ」タブ

- 「キー」タブ

- 「属性セット」タブ

- 「データ・ルール」タブ

Oracle Warehouse Builderにより、ビューの定義が作成され、その定義がワークスペースに格納され、そのビュー名がプロジェクト・ナビゲータに追加されます。

注意:
グラフィカル・ナビゲータからビューを定義することもできます。

「名前」タブ

「ビューの作成」ダイアログ・ボックスで指定した名前および説明を変更するには、「名前」タブを使用します。名前と説明は、「データ・オブジェクトのネーミング規則」で説明されている規則に従う必要があります。

「列」タブ

ビューの列を定義するには、「列」タブを使用します。ビューの各列の詳細として、名前、データ型、長さ、精度、スケール、秒精度、NOT NULL、デフォルト値、仮想、式および説明を入力します。それぞれの詳細は、「「列」タブ」を参照してください。

「問合せ」タブ

ビューの作成に使用される問合せを定義するには、「問合せ」タブを使用します。ビューには、ビューが属するモジュールとは別のモジュールに属する表のデータを含めることができます。また、結合を使用して複数の表のデータを結合できます。入力する問合せ文が有効であることを確認してください。Oracle Warehouse Builderでは「問合せ」タブ内のテキストは検証されず、構文が無効である場合でもビューの配布が試行されます。

「キー」タブ

ビューの論理制約を定義するには、「キー」タブを使用します。ビューのDDLを列挙する際にこれらの制約は使用されませんが、これらの制約はビューがマッピングでデータ・ソースとなる場合に役立つことがあります。マッピング・エディタでは、論理外部キー制約を使用して、参照ディメンションを2つ目のソースとしてマッピングに含めることができます。制約の作成方法は、「制約の作成」を参照してください。

注意:
ビューにはチェック制約は作成できません。

「属性セット」タブ

ビューの属性セットを定義するには、「属性セット」タブを使用します。ビューの属性セットとその作成方法の詳細は、「属性セットの定義」を参照してください。

「データ・ルール」タブ

ビューに適用されるデータ・ルールを指定するには、「データ・ルール」タブを使用します。データ・ルールを使用し、表内で有効なデータまたは表間の有効な関係を定義することで、データ品質を保証できます。「データ・ルール」タブの詳細は、「「データ・ルール」タブ」を参照してください。

ビュー定義の編集

ビュー定義を編集するには、ビュー・エディタを使用します。ビュー・エディタを開くには、プロジェクト・ナビゲータでビューを右クリックし、開くを選択します。次の各項で、編集可能なビュー定義について説明します。

ビューの改名

ビューの名前を変更するには、ビュー・エディタの「名前」タブを使用します。「名前」フィールドをクリックし、ビューの新しい名前を入力します。フィールドに格納されている説明を変更することもできます。ハイライト表示されたオブジェクト名の上から新しい名前を入力します。または、プロジェクト・ナビゲータでビューを選択し、プロパティ・インスペクタでビューのプロパティを表示します。物理名プロパティとプロパティの値を編集します。

ビューの列の追加、変更および削除

ビューの列の追加、変更または削除には、「列」タブを使用します。詳細は、「「列」タブ」を参照してください。

列の追加: 列」タブで、空白行の「名前」フィールドをクリックし、列を定義する詳細を入力します。

列の編集: 列の定義を変更するには、表エディタの「列」タブを使用します。列定義の任意の属性を変更できます。

列の削除: 「列」タブで、削除する列の名前の左側にあるグレーのセルを右クリックし、「削除」を選択します。

ビュー制約の追加、変更および削除

ビューの制約の追加、変更および削除には、ビュー・エディタの「キー」タブを使用します。制約の追加と編集の詳細は、「制約の作成」および「制約の編集」をそれぞれ参照してください。

制約を削除するには、「キー」タブで制約を表す行を選択します。タブの下部にある「削除」をクリックします。

属性セットの追加、変更および削除

属性セットの追加、変更および削除には、ビュー・エディタの「属性セット」タブを使用します。属性セットの追加の詳細は、「属性セットの作成」を参照してください。属性セットの編集方法は、「属性セットの編集」を参照してください。

属性セットを削除するには、「属性セット」タブにナビゲートします。削除する属性セットの左側にあるセルを右クリックし、「削除」を選択します。

マテリアライズド・ビューの定義

マテリアライズド・ビューを使用すると、問合せのパフォーマンスが向上します。マテリアライズド・ビューを作成するときには、複数の表のデータを集計または結合する問合せコマンド一式を作成します。マテリアライズド・ビューは、再使用またはリモート・データ・マートへのレプリケートが可能な事前計算済データを提供します。たとえば、企業の売上に関するデータが組織全体にわたって広範囲に検索されます。

マテリアライズド・ビューを作成する場合、Oracleデータベースで使用できるクエリー・リライトおよび高速リフレッシュ機能を活用するよう構成できます。クエリー・リライトおよび高速リフレッシュの詳細は、「マテリアライズド・ビューの高速リフレッシュ」を参照してください。

マテリアライズド・ビュー定義の作成

マテリアライズド・ビュー定義では、マテリアライズド・ビュー、制約、索引、パーティション、属性セット、データ・ルールおよびマテリアライズド・ビューで使用される列とデータ型に関するメタデータの作成に使用される問合せを指定します。ビュー定義を生成し、マテリアライズド・ビューの配布に使用される.ddlスクリプトを取得できます。

前提作業

「ターゲット・モジュールの作成」の説明に従って、マテリアライズド・ビューを含めるターゲット・スキーマを作成します。

マテリアライズド・ビューを定義する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. マテリアライズド・ビューを作成するターゲット・モジュールを展開し、「マテリアライズド・ビュー」を右クリックして、「新規マテリアライズド・ビュー」を選択します。
または

ビューを作成するターゲット・モジュールを右クリックし、「新規」を選択します。新規ギャラリダイアログ・ボックスで、「マテリアライズド・ビュー」を選択して「OK」をクリックします。

3. 「マテリアライズド・ビューの作成」ダイアログ・ボックスで、マテリアライズド・ビューの名前と説明(オプション)を入力し、「OK」をクリックします。
名前と説明は、「データ・オブジェクトのネーミング規則」で説明されているネーミング規則に従う必要があります。

4. マテリアライズド・ビュー・エディタの次のタブに情報を入力します。

- 「列」タブ

- 「問合せ」タブ

- 「キー」タブ

- 「索引」タブ

- 「パーティション」タブ

- 「属性セット」タブ

- 「データ・ルール」タブ

Oracle Warehouse Builderにより、マテリアライズド・ビューの定義が作成され、この定義がワークスペースに格納され、さらにプロジェクト・ナビゲータに定義名が挿入されます。

注意:
グラフィカル・ナビゲータからマテリアライズド・ビューを定義することもできます。

「列」タブ

マテリアライズド・ビューの列を定義するには、「列」タブを使用します。各列の詳細として、名前、データ型、長さ、精度、スケール、秒精度、NOT NULL、デフォルト値および説明を指定します。マテリアライズド・ビューの各列について指定する情報の詳細は、「「列」タブ」を参照してください。

「問合せ」タブ

マテリアライズド・ビューの作成に使用される問合せを定義するには、「問合せ」タブを使用します。「SELECT文」フィールドには必ず有効な問合せを入力してください。列名については、「列」タブで指定した名前を使用します。列ページ上の列名を変更する場合は、「問合せ」タブで名前を手動で変更する必要があります。Oracle Warehouse Builderでは「問合せ」タブ内のテキストは検証されず、構文が無効である場合でもマテリアライズド・ビューの配布が試行されます。

「キー」タブ

マテリアライズド・ビューの制約を定義するには、「キー」タブを使用します。制約を定義するかどうかはオプションです。これらの制約は論理設計のみを目的としており、マテリアライズド・ビューのDDLを列挙する際にこれらの制約は使用されません。主キー、外部キーおよび一意キーを作成できます。制約の作成方法は、「制約の作成」を参照してください。

注意:
マテリアライズド・ビューに対してはチェック制約は作成できません。

「索引」タブ

マテリアライズド・ビューの索引を定義するには、「索引」タブを使用します。索引を定義するかどうかはオプションです。一意、標準、ビットマップ、機能ベース、コンポジットおよび逆タイプの索引を作成できます。索引の作成方法は、「索引の作成」を参照してください。

「パーティション」タブ

マテリアライズド・ビューのパーティションを定義するには、「パーティション」タブを使用します。マテリアライズド・ビューのパーティション化はオプションです。索引パーティション化、レンジ・パーティション化、ハッシュ・パーティション化、数量別ハッシュ・パーティション化、リスト・パーティション化またはコンポジット・パーティション化を実行できます。

「属性セット」タブ

マテリアライズド・ビューの属性セットを定義するには、「属性セット」タブを使用します。属性セットを定義するかどうかはオプションです。属性セットの定義方法の詳細は、「属性セットの作成」を参照してください。

「データ・ルール」タブ

マテリアライズド・ビュー・データに適用する必要があるデータ・ルールを指定するには、「データ・ルール」タブを使用します。詳細は、「「データ・ルール」タブ」を参照してください。

マテリアライズド・ビュー定義の編集

マテリアライズド・ビューの定義を編集するには、マテリアライズド・ビュー・エディタを使用します。マテリアライズド・ビュー・エディタを開くには、マテリアライズド・ビューを右クリックし、開くを選択します。次の各項では、マテリアライズド・ビューに対して実行できる編集操作の種類について説明します。

マテリアライズド・ビューの改名

エディタの「名前」タブで「名前」フィールドをダブルクリックします。これにより、名前が選択されます。新しい名前を入力します。

または、プロジェクト・ナビゲータでマテリアライズド・ビューを選択し、プロパティ・インスペクタでマテリアライズド・ビューのプロパティを表示します。物理名プロパティとプロパティの値を編集します。

マテリアライズド・ビューの列の追加、変更および削除

マテリアライズド・ビューの列の追加、変更または削除には、「列」タブを使用します。

列の追加: 列」タブで、空白行の「名前」フィールドをクリックし、列の詳細を入力します。これらの詳細の情報は、「「列」タブ」を参照してください。

列の削除: 「列」タブで、削除する列の名前の左側にあるグレーのセルを右クリックし、「削除」を選択します。

マテリアライズド・ビューの制約の追加、変更および削除

マテリアライズド・ビューの制約の追加、変更および削除には、マテリアライズド・ビュー・エディタの「キー」タブを使用します。制約の追加と編集の詳細は、「制約の作成」および「制約の編集」をそれぞれ参照してください。

制約を削除するには、「キー」タブで制約を表す行を選択します。タブの下部にある「削除」をクリックします。

属性セットの追加、変更および削除

マテリアライズド・ビューの属性セットの追加、変更および削除には、「属性セット」タブを使用します。属性セットの追加の詳細は、「属性セットの作成」を参照してください。属性セットの編集方法は、「属性セットの編集」を参照してください。

属性セットを削除するには、「属性セット」タブで、削除する属性セットの左側にあるセルを右クリックし、「削除」を選択します。

制約の定義

表、ビューおよびマテリアライズド・ビューなどのリレーショナル・データ・オブジェクトに対して、オプションで制約を作成できます。

制約について

制約は、データベース内の情報と関連付けるビジネス・ルールを順守するために使用されます。制約によって、無効なデータが表に挿入されないようにします。ビジネス・ルールでは、必ずTRUEまたはFALSEになる条件と関係が指定されます。

たとえば、「employees」表の「salary」列に、給与<10000という制約を定義した場合、この制約によって、この表のすべての行で、この列には10000を超える数値を格納できない、というルールが順守されます。INSERT文またはUPDATE文によってこの整合性制約への違反が発生した場合は、エラー・メッセージが表示されます。制約を使用すると、ロードのパフォーマンスが低下することに注意してください。

表、ビューおよびマテリアライズド・ビューに対して次の制約を定義できます。

- 一意キー(UK): 一意キーの制約では、1つの列または列セット(キー)内のすべての値が一意であることが必要です。表内のどの2つの行にも、指定された列または列セットに重複する値を格納できません。UK列にはNULL値も格納できます。

- 主キー(PK): キー(列または列セット)に定義される値。この値は、表内の各行を、キー(列または列セット)内の値で一意に識別できることを指定します。表内のどの2つの行にも、指定された列または列セットに重複する値を格納できません。データベース内の各表に設定できるPK制約は1つのみです。PK列にはNULL値を格納できません。

- 外部キー(FK): 1つの表内のキー(列または列セット)に定義されるルール。このルールは、該当するキーの値が、参照表のPKキーまたはUKキー(列または列セット)の値と一致することを保証します。

- チェック制約: 列(または列セット)に対するユーザー定義のルール。このルールは、行の挿入と更新を、その列(または列セット)に格納されている値に基づいて制限します。チェックの条件は、挿入または更新する行の値を使用して評価されるブール式であることが必要です。
たとえば、受注日<出荷日という条件では、受注日列の値が出荷日列の値より必ず前の日付であることがチェックされます。この条件を満たしていない場合は、表のロード時にエラーが発生し、レコードは拒否されます。チェック条件に、副問合せや順序、またはSYSDATE、UID、USER、USERENV SQL関数を含めることはできません。チェック制約はデータの検証に役立ちますが、ロードのパフォーマンスは低下します。

制約の作成

制約を作成するには、オブジェクト・エディタの「キー」タブを使用します。作成できる制約のタイプは、主キー、外部キー、一意キーおよびチェック制約です。

表、ビューまたはマテリアライズド・ビューに制約を作成する手順は、次のとおりです。

1. 制約を追加するデータ・オブジェクト用のエディタを開きます。
プロジェクト・ナビゲータで、制約を定義するデータ・オブジェクトをダブルクリックします。または、プロジェクト・ナビゲータでデータ・オブジェクトを右クリックし、開くを選択します。

2. 「キー」タブにナビゲートします。

3. 定義する制約のタイプに応じて、次のいずれかの項を参照してください。

- 主キー制約の定義

- 外部キー制約の定義

- 一意キー制約の定義

- チェック制約の定義

主キー制約の定義

主キー制約を定義する手順は、次のとおりです。

1. 「キー」タブで、「制約の追加」ボタンをクリックします。
「名前」列にカーソルが置かれた空白行が表示されます。

2. 「名前」列に制約名を入力します。
制約名は、制約を定義するデータ・オブジェクトを含んでいるモジュール全体で一意である必要があります。

3. 「タイプ」列で「主キー」を選択します。
[Tab]キーを押して「タイプ」列の外に出るか、または「キー」タブ内の空いている場所をクリックします。

4. 「ローカル列の追加」をクリックします。
現在の行の下に、制約名および制約タイプが含まれる新しい行が追加されます。この新しい行の「ローカル列」列にはリストが表示されます。

5. 新しい行の「ローカル列」リストで、主キーを表す列名を選択します。

6. (オプション)コンポジット主キーを作成するには、主キーを追加する列ごとに手順4および5を繰り返します。

外部キー制約の定義

外部キー制約を定義する手順は、次のとおりです。

1. 「キー」タブで、「制約の追加」ボタンをクリックします。
「名前」フィールドにカーソルが置かれた空白行が表示されます。

2. 「名前」列に制約名を入力します。
制約名は、制約を定義するデータ・オブジェクトを含んでいるモジュール全体で一意である必要があります。

3. 「タイプ」列で「外部キー」を選択します。
[Tab]キーを押して「タイプ」列の外に移動するか、または「キー」タブ内の空いている場所をクリックします。

4. 「参照」列で、省略記号ボタンをクリックします。
「キー・セレクタ」ダイアログ・ボックスが表示されます。

5. 「キー・セレクタ」ダイアログ・ボックスで、作成される外部キーが参照する主キー制約を選択します。
たとえば、DEPARTMENTS表でdepartment_id列に対してDEPT_PKという主キーが定義されているとします。EMPLOYEES表のdepartment_id列が主キーDEPT_FKを参照する外部キーであると指定するには、「キー・セレクタ」ダイアログ・ボックスでDEPARTMETNS表を表すノードの下のDEPT_FKを選択します。

6. 「OK」をクリックします。

一意キー制約の定義

一意キー制約を定義する手順は、次のとおりです。

1. 「キー」タブで、「制約の追加」ボタンをクリックします。
「名前」フィールドにカーソルが置かれた空白行が表示されます。

2. 「名前」列に制約名を入力し、[Enter]キーを押します。
[Tab]キーを押すか、エディタ内の他の場所をクリックすることもできます。

制約名は、制約を定義するデータ・オブジェクトを含んでいるモジュール全体で一意である必要があります。

3. 「タイプ」列で「一意キー」を選択します。
[Tab]キーを押して「タイプ」列の外に移動するか、または「キー」タブ内の空いている場所をクリックします。

4. 「ローカル列の追加」をクリックします。
現在の行の下に、制約名および制約タイプが含まれる新しい行が追加されます。この新しい行の「ローカル列」列にはリストが表示されます。

5. 新しい行の「ローカル列」リストで、一意キーを作成する列の名前を選択します。

6. (オプション)コンポジット一意キーを作成するには、一意キーを追加する列ごとに手順4および5を繰り返します。

チェック制約の定義

チェック制約を定義する手順は、次のとおりです。

1. 「キー」タブで、「制約の追加」ボタンをクリックします。
「名前」フィールドにカーソルが置かれた空白行が表示されます。

2. 「名前」列に制約名を入力し、[Enter]キーを押します。
[Tab]キーを押すか、エディタ内の他の場所をクリックすることもできます。

制約名は、制約を定義するデータ・オブジェクトを含んでいるモジュール全体で一意である必要があります。

3. 「タイプ」列で「チェック制約」を選択します。
[Tab]キーを押して「タイプ」列の外に出るか、または「キー」タブ内の空いている場所をクリックします。

4. 「チェック条件」列で、チェック制約に適用する条件を入力します。(給与 > 2000など)。このフィールドを空白にすると検証時にエラーが生成され、この制約に対して有効なコードを生成できません。
チェック条件で参照される列名は、表内で定義された物理列名と完全一致する必要があります。Oracle Warehouse Builderは検証時に条件の構文をチェックしません。したがって、配布時にエラーが起きる可能性があります。エラーが発生した場合は、リポジトリ・ブラウザで詳細を確認してください。

制約の編集

オブジェクト・エディタの「キー」タブを使用して、制約を編集できます。次のタスクを実行できます。

- 制約の改名

- 制約タイプの変更

- チェック条件の変更

- 外部キー制約の参照列の変更

- 主キーの主キー列の変更

制約の定義を編集した後は、変更した制約を含むデータ・オブジェクトを必ず再生成して再配布してください。

索引の定義

データ・ウェアハウスの問合せパフォーマンスを改善するには、索引を使用します。Oracle Warehouse Builderでは、表とマテリアライズド・ビューに対して索引を定義できます。次の各項では、索引の定義が可能なすべてのオブジェクトを表という語で表します。

索引は、ウェアハウス内で処理されるデータに迅速にアクセスすることによって問合せを高速化するために重要です。表の1つ以上の列に索引を作成すると、その表に対するSQL文の実行を高速化できます。索引には、次のような特徴があります。

- 索引では、特定のキー値が格納されている表内の行へのポインタが提供されます。

- 索引列の値は、事前ソートされて保存されます。

- 索引はデータベースの別の領域に格納されるため、基礎となる表に影響を与えずに、いつでも作成および削除できます。

- 索引は表のデータから独立しています。データを削除、追加または更新すると、索引は自動的にメンテナンスされます。

関連項目:
索引の方針の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

索引の作成

索引を作成するには、エディタの「索引」タブを使用します。エディタを起動するには、プロジェクト・ナビゲータで表または他のデータ・オブジェクトに移動し、目的のオブジェクトをダブルクリックするか、右クリックして開くを選択します。索引タイプを選択すると、その索引の定義に使用できる適切なテンプレートが表示されます。索引名は、索引を定義するデータ・オブジェクトを含んでいるモジュール全体で一意である必要があります。

ビットマップ索引を除くすべてのタイプの索引について、基礎となる表のパーティション化メソッドを継承するかどうかを決定できます。パーティション化メソッドを継承する索引はローカル索引と呼ばれ、独自のパーティション化メソッドを使用する索引はグローバル索引と呼ばれます。詳細は、「索引パーティション化」を参照してください。

Oracle Warehouse Builderでは、次のタイプの索引を作成できます。

- 一意: これらの索引では、表内のどの2つの行にも、キー列または複合キー列に重複値がないことが保証されます。

- 非一意: これらはBツリー・タイプの索引で、キー列または複合キー列の重複値に対する制限はありません。

- ビットマップ: これらの索引は、大量のデータの問合せを可能にするために、データ・ウェアハウス・アプリケーションで主に使用されます。キー値として、行IDのリストのかわりにビットマップが使用されます。ビットマップは、索引キーの値が小さいリストを構成している場合に有効です。たとえば、AGE_GROUPは索引キーとして適切ですが、AGEは適切ではありません。
ビットマップでは、スター問合せ変換が可能です。この変換は、スター問合せの効率的な実行を目的とした、コストベースの問合せ変換です。スター型変換の前提条件は、ビットマップ索引が、キューブ(複数可)の各外部キー列に作成されていることです。

Oracle Warehouse Builderでビットマップ索引を定義するときは、そのスコープをLOCALに、パーティション化をNONEに設定します。

- ファンクション・ベース: これらの索引では、表内の1つ以上の列に定義したファンクションまたは式の値が計算され、格納されます。ファンクションは、PL/SQLファンクション、パッケージ・ファンクション、CコールアウトまたはSQLファンクションを含む算術式です。

- コンポジット: 連結索引とも呼ばれる複数列に対する索引です。表内の列の順序は任意で、互いに隣接している必要はありません。
Oracle Warehouse Builderでコンポジット索引を定義するには、他の索引と同じように索引を作成し、2から32の索引列を割り当てます。

- 逆: この索引は、行ID列以外の索引付けされた各列について、列内のバイトを逆にします。行IDは逆にされないため、この索引では列順は維持されます。
Oracle Warehouse Builderで逆索引を定義するには、他の索引と同じように索引を作成した後、データ・オブジェクトの「構成」タブに移動し、「パフォーマンス・パラメータ」の下にある「索引ソート」パラメータを逆に設定します。

パーティションの定義

パーティションを使用すると、非常に大きい表や索引を、管理しやすい小さい部分に分割して効率的に管理できます。パーティションでは、操作がデータのサブセットに対して行われるため、問合せやロードのパフォーマンスが向上します。パーティションを使用すると、データ・アクセスが改善され、全体的なアプリケーション・パフォーマンスが向上します。何百万もの行があり、データ・サイズがGB単位の表や索引にアクセスするアプリケーションに対しては特に有効です。

Oracle Warehouse Builderでは、表、索引、マテリアライズド・ビューおよびMOLAPキューブに対してパーティションを定義できます。簡潔に表現するために、以降の各項では、パーティションの定義が可能なすべてのオブジェクトを表という語で表します。この後の項では、MOLAPキューブを除く前述のすべてのオブジェクトに対するパーティション化について説明します。MOLAPキューブについては別に説明します。

これらのオブジェクトに対するパーティションを定義するには、オブジェクト・エディタの「パーティション」タブを使用します。作成するパーティションのタイプによっては、「構成」タブでパーティションの表領域の構成が必要になります。

次のタイプのパーティションを作成できます。

- レンジ・パーティション化: 列内の値の範囲に基づいてパーティションを作成するには、レンジ・パーティション化を使用します。日付列をパーティション・キーとしてレンジ・パーティション化を使用すると、「パーティション交換ロードを使用したパフォーマンスの向上」で説明するように、ターゲット表を即時に更新するマッピングを設計できます。

- ハッシュ・パーティション化: Oracle Databaseで、推奨された偶数個のパーティション間でデータが均等に分割されるようにするには、ハッシュ・パーティション化を使用します。このタイプのパーティション化は、データに履歴がなく、明確な列または列リストが存在しない場合に有効です。

- 数量別ハッシュ・パーティション化: ハッシュ・パーティション化をすばやく定義するには、数量別ハッシュ・パーティション化を使用します。このパーティション化はハッシュ・パーティション化と同等ですが、パーティション・キーとパーティション数のみを指定する点が異なります。パーティションは自動的に作成され、名前が設定されます。その後は、同じ表領域リストを共有するようにパーティションを構成できます。

- リスト・パーティション化: 選択したパーティション・キーに基づいて複数の行をパーティションに明示的に割り当てるには、リスト・パーティション化を使用します。このパーティション化では、表では使用できない構造にデータを編成できます。

- コンポジット・パーティション化: Oracle Warehouse Builderを使用すると、レンジ・ハッシュ、数量別レンジ・ハッシュまたはレンジ・リスト・パーティション化のいずれかのコンポジットを指定できます。Oracle Databaseでは、最初にレンジ・パーティション化が実行され、次にユーザーが選択した2番目のパーティション化を使用してデータがさらに分割されます。たとえば、レンジ・リスト・パーティション化では、販売取引日に基づいてパーティション化し、次に取引が発生した州のリストに基づいてデータをさらに分割できます。

- 索引パーティション化: 基礎となる表のパーティション化メソッドを継承する索引を定義できます。または、独自のパーティション化方針を使用して索引をパーティション化できます。

作成するパーティションのタイプに応じて、「パーティション」タブが動的に変化し、適切な情報のみが表示されます。このタブでは、特定のパーティション・タイプに必要のない列または行は非表示になります。

たとえば、レンジ・パーティションまたはリスト・パーティションを作成する場合は、サブパーティションを作成できないため、サブパーティション・キー行とサブパーティション・テンプレート行は非表示になります。レンジ・ハッシュ・パーティションを作成する場合、サブパーティション・テンプレート行にはハッシュ・サブパーティション数のエントリが条件"="とともに含まれています。

サブパーティションの上限を定義する条件は、使用されるパーティション化メソッドのタイプによって異なります。たとえば、レンジ・リスト・パーティションの場合、パーティションの上限を決定するために使用できる条件は等式に基づいている必要があります。したがって、条件が格納される列(「パーティション」列と「値」列の間にある列)には"="が含まれていて無効になっています。ただし、サブパーティションの上限を決定するための条件は"<"として表示され、このフィールドを編集することはできません。

レンジ・パーティション化

レンジ・パーティション化は最も一般的なタイプのパーティション化であり、日付範囲に基づいてデータをパーティション化する際によく使用されます。たとえば、売上高データを月次パーティションにパーティション化できます。

レンジ・パーティション化を使用するには、エディタの「パーティション」タブに移動してパーティション・キーを指定し、作成するパーティションごとに名前および値範囲を割り当てます。

範囲に基づいてデータをパーティション化する手順は、次のとおりです。

1. オブジェクト・エディタの「パーティション」タブで、「タイプ」の下のセルをクリックし、「範囲」を選択します。
必要に応じて、「タイプ」の左側にあるプラス記号をクリックし、レンジ・パーティションのテンプレートを展開します。

2. パーティション・キーノードの下でパーティション・キーを選択します。
Oracle Warehouse Builderで、「キー列」の下に選択したオブジェクトのすべての列がリストされます。任意のデータ型の列を選択できますが、レンジ・パーティション化で最も一般的なパーティション・キーはDATEです。

複数のキー列に基づいてパーティション・キーを設定できます。別のキー列を追加するには、パーティション・キー・ノードを選択し、「追加」をクリックします。

3. 「パーティション」ノードの下でパーティションを定義します。
パーティションの定義に役立てる目的で、テンプレートは編集可能(ただし削除不可)な2つのパーティションを提供しています。P1は最初のパーティションを表し、PDEFAULTは最後のパーティションを表します。月に基づいてデータをパーティション化するには、P1をJanに、またPDEFAULTをDecに、それぞれ改名できます。

最後のパーティションがキーワード「MAXVALUE」に設定されています。これは、そのデータ型の他の値(NULL値を含む)よりも高くソートされる仮想の無限値を表します。

最初と最後のパーティションの間にパーティションを追加するには、「パーティション」ノードをクリックし、「追加」を選択します。

「値」で、作成した最初の範囲およびすべての追加範囲の最大値を指定します。これらの値は、それを下回ることを示す値です。

レンジ・パーティション化の例

図2-1に、カレンダ年の四半期ごとにパーティションを定義する方法を示します。

図2-1 レンジ・パーティション化を指定した表の例

「図2-1 レンジ・パーティション化を含む表の例」の説明

月または週ごとにデータをパーティション化することもできます。表などを使用してマッピングを設計する場合、パーティション交換ロード(PEL)の有効化を検討します。PELは、データ定義言語(DDL)の操作であり、ターゲット表の既存パーティションを新しいパーティションとスワップします。データ操作言語(DML)の操作ではないため、パーティションのスワップは即座に実行されます。

ハッシュ・パーティション化

ハッシュ・パーティション化では、ユーザーが指定したパーティション化キーにOracleデータベースが適用するハッシング・アルゴリズムに基づいて、データがパーティションに割り当てられます。ハッシング・アルゴリズムではパーティション間で行が均等に配分され、パーティションにはほぼ同じサイズが指定されます。データが履歴に基づくものではなく、明白な列または列リストが存在せず、論理範囲パーティション・プルーニングの方が好都合である場合、ハッシュ・パーティション化は、レンジ・パーティション化のかわりとなる適正かつ便利な手段です。

ハッシュ・アルゴリズムに基づいてデータをパーティション化する手順は、次のとおりです。

1. オブジェクト・エディタの「パーティション」タブで、「タイプ」の下のセルをクリックし、「ハッシュ」を選択します。
必要に応じて、「タイプ」の左側にあるプラス記号をクリックし、ハッシュ・パーティションを定義するためのテンプレートを展開します。

2. パーティション・キーノードの下にある「キー列」列で、パーティション・キーを選択します。
Oracle Warehouse Builderで、選択したオブジェクトのすべての列がリストされます。あらゆるデータ型の列を選択できます。

3. 「パーティション」ノードの下でパーティションを定義します。
Oracle Warehouse Builderは、改名できる2つのパーティションを提供します。「パーティション」ノードをクリックし、「追加」を選択して必要な数のパーティションを追加します。

Oracle Databaseは、線形ハッシング・アルゴリズムを使用しています。特定のパーティション内でデータがクラスタ化されないように、パーティションの数を2の累乗(2、4、8など)で定義する必要があります。

数量別ハッシュ・パーティション化

ハッシュ・パーティション化をすばやく定義するには、数量別ハッシュ・パーティション化を使用します。パーティション・キーを定義してパーティション数を指定すると、パーティションが自動的に作成され、名前が指定されます。その後は、同じ表領域リストを共有するようにパーティションを構成できます。

数量別ハッシュ・アルゴリズムに基づいてデータをパーティション化する手順は、次のとおりです。

1. オブジェクト・エディタの「パーティション」タブで、「タイプ」の下のセルをクリックし、数量別ハッシュを選択します。
必要に応じて、「タイプ」の左側にあるプラス記号をクリックし、数量別ハッシュ・パーティションの定義用テンプレートを展開します。

2. パーティション・キーノードの下にあるパーティション・キー列で、パーティション・キーを選択します。

3. 「パーティション」ノードの下で、「値」列にパーティションの数を定義します。デフォルト値は2つのパーティションです。
Oracleデータベースは、線形ハッシング・アルゴリズムを使用することで、特定のパーティション内でデータがクラスタ化されないようにしています。パーティションの数を2の累乗(2、4、8など)で定義する必要があります。

4. 「構成」タブで、「パーティション表領域リスト」と「オーバーフロー表領域リスト」を定義します。
データ・オブジェクトについて「構成」タブを表示するには、そのデータ・オブジェクトを右クリックして「構成」を選択します。

リスト・パーティション化

リスト・パーティション化を使用すると、行をパーティションに明示的に割り当てることができます。各パーティションに個別の値リストを指定することで、リスト・パーティション化を実行できます。リスト・パーティション化の利点は、ソートおよび関連付けのされていないデータ・セットを自然な方法でグループ化、組織化できることです。

図2-2は、次の手順に基づいてリスト・パーティションにパーティション化された表の例を示しています。

値リストに基づいてデータをパーティション化する手順は、次のとおりです。

1. オブジェクト・エディタの「パーティション」タブで、「タイプ」の下のセルをクリックし、リストを選択します。
必要に応じて、「タイプ」の左側にあるプラス記号をクリックし、リスト・パーティションの定義用テンプレートを展開します。

2. パーティション・キーノードの下にある「キー列」列を使用して、パーティション・キーを選択します。
Oracle Warehouse Builderで、選択したオブジェクトのすべての列がリストされます。あらゆるデータ型の列を選択できます。

3. 「パーティション」ノードの下でパーティションを定義します。
「PDEFAULT」はキーワード「DEFAULT」に設定されており、他のパーティションに割り当てられていないすべての行が含まれます。未割当てのすべての行を取得するパーティションは、データの整合性を維持するために必須となります。

パーティションの定義に役立てる目的で、テンプレートは編集可能(ただし削除不可)な2つのパーティションを提供しています。P1は最初のパーティションを表し、PDEFAULTは最後のパーティションを表します。

最初と最後のパーティションの間にパーティションを追加するには、「パーティション」ノードをクリックし、「追加」を選択します。

「値」で、以前に選択したパーティション・キー内のデータに対応するパーティションごとに、カンマ区切りの値リストを入力します。たとえば、パーティション・キーがCOUNTRY_IDである場合、Asia、Eastern Europe、Western Europeなどについてパーティションを作成できます。その後に、各パーティションの値について、リージョン内の国ごとに対応するCOUNTRY_IDをリストします。

リスト・パーティション化の例

図2-2では、「COUNTRY_ID」列に基づいたリスト・パーティション化によってデータが異なるリージョンにパーティション化された表を示しています。各パーティションに単一のカンマ区切りリストが含まれます。

図2-2 単一キー列に基づくリスト・パーティション化

「図2-2 単一のキー列に基づくリスト・パーティション化」の説明

図2-3では、キー列「REGION」および「SALES_DIVISION」に基づいてデータがパーティション化された表を示しています。各パーティションには、一重引用符で囲まれた2つのカンマ区切りリストが含まれます。この例では、「N」、「NE」、「S」、「SW」、「W」および「NW」が「REGION」に対応し、「PRD1」、「PRD2」、「PRD3」などが「SALES_DIVISION」に対応します。

図2-3 複数キー列に基づくリスト・パーティション化

「図2-3 複数キー列に基づくリスト・パーティション化」の説明

コンポジット・パーティション化

コンポジット・パーティション化メソッドには、レンジ・ハッシュ、数量別レンジ・ハッシュおよびレンジ・リスト・パーティション化が含まれます。Oracle Databaseでは、最初にレンジ・パーティション化が実行され、次にユーザーが選択した2番目のパーティション化を使用してデータがさらに分割されます。

コンポジット・パーティション・メソッドを定義するステップは、レンジ、ハッシュおよびリストなどの単純なパーティション・メソッドを定義するステップに似ていますが、追加オプションが含まれます。

データをレンジに基づいてパーティション化してから、リスト、ハッシュまたは数量別ハッシュに基づいてサブパーティション化する手順は、次のとおりです。

1. オブジェクト・エディタの「パーティション」タブで、「タイプ」の下のセルをクリックし、コンポジット・パーティション化メソッドのいずれかを選択します。
必要に応じて、「タイプ」の左側にあるプラス記号をクリックし、テンプレートを展開します。

2. パーティション・キーを選択し、「レンジ・パーティション化」の説明に従ってパーティションを定義します。
図2-4では、パーティション・キーはSALE_DATEで、それに関連付けられているレンジ・パーティションはQTR_1、QTR_2、QTR_3およびQTR_4です。

図2-4 サブパーティション・テンプレートでリストが定義されたレンジ・リスト・パーティション化

「図2-4 サブパーティション・テンプレートでリストが定義されたレンジ・リスト・パーティション化」の説明

3. サブパーティション・キーノードの下にある「キー列」リストで、サブパーティション・キーの列を選択します。

4. サブパーティション・テンプレートノードで、「サブパーティション・テンプレートについて」の説明に従って2つ目のパーティション化メソッドの値を定義します。

5. (オプション)カスタム・サブパーティションを定義します。
レンジ・リスト・パーティションについて、サブパーティション・ノードで定義したデフォルトを上書きするカスタム・サブパーティションを指定できます。詳細は、「カスタム・サブパーティションの作成」を参照してください。

6. 「構成」タブで、「パーティション表領域リスト」および「オーバーフロー表領域リスト」を構成します。
データ・オブジェクトについて「構成」タブを表示するには、そのデータ・オブジェクトを右クリックして「構成」を選択します。

サブパーティション・テンプレートについて

コンポジット・パーティション化で2つ目のパーティション化メソッドを指定するには、サブパーティション・テンプレートを使用します。実行するステップは、選択するコンポジット・パーティションのタイプによって異なります。

数量別レンジ・ハッシュの場合は、サブパーティションの数のみを入力します。

レンジ・ハッシュの場合は、サブパーティション・テンプレートではサブパーティションの名前のみを入力できます。

レンジ・リストの場合は、リストに名前を指定し、カンマ区切り値を入力します。必ず最後のサブパーティションが「DEFAULT」に設定された状態を維持してください。

図2-4では、「REGION」キー列に基づいたリスト・サブパーティションと、国のグループに対応する各サブパーティションを示しています。Oracle Warehouse Builderにより、各パーティション(QTR_1、QTR_2など)がサブパーティション(ASIA、WEST_EURなど)に分割されます。

カスタム・サブパーティションの作成

サブパーティション・テンプレートは、サブパーティションを定義する上で最も便利かつ最も一般的な方法です。サブパーティション・テンプレートノードで指定するエントリは、パーティション・ノードに含まれるすべてのパーティションに均等に適用されます。ただし、場合によってはサブパーティション・テンプレートを上書きする必要があります。

数量別レンジ・ハッシュの場合、パーティションを選択してから「ハッシュ・カウントの追加」をクリックします。Oracle Warehouse Builderでパーティション・ノードが展開され、そのパーティションに一意に適用されるハッシュ・サブパーティションの数を指定できます。

レンジ・ハッシュの場合、パーティションを選択してから「サブパーティションの追加」をクリックします。Oracle Warehouse Builderでパーティション・ノードが展開され、そのパーティションのサブパーティションにのみ名前を指定できます。

レンジ・リストの場合、パーティションを選択してから「サブパーティションの追加」をクリックします。Oracle Warehouse Builderでパーティション・ノードが展開され、そのパーティションのリスト・サブパーティションのみを指定できます。必ず最後のサブパーティションが「DEFAULT」に設定された状態を維持してください。

図2-5は、パーティションQTR_1がUK、EURおよびALL_OTHERSから成るリストにサブパーティション化され、その他の四半期がサブパーティション・テンプレートに従ってパーティション化されている状態を示しています。

図2-5 サブパーティション・テンプレートを上書きするサブパーティション

「図2-4 サブパーティション・テンプレートを上書きするサブパーティション」の説明

索引パーティション化

ビットマップ索引を除くすべてのタイプの索引について、基礎となる表のパーティション化メソッドを継承するかどうかを決定できます。基礎となる表のパーティション化メソッドを継承する索引はローカル索引と呼ばれます。独自のパーティション化メソッドを使用する索引はグローバル索引と呼ばれます。

ローカル索引

ローカル索引は、基礎となる表で指定されたパーティションおよびサブパーティションと同じ列でパーティション化され、それらと同じ定義が設定されます。さらに、ローカル索引は表と同じ表領域を共有します。

たとえば、レンジ・リスト・パーティション化を使用して、売上高データの表を四半期別にパーティション化した後にリージョン別にパーティション化した場合、ローカル索引も四半期別にパーティション化された後、リージョン別にパーティション化されます。

ビットマップ索引はローカル索引としてのみ定義することができ、大量のデータを問い合せる際のパフォーマンスが最大限まで向上します。

Oracle Warehouse Builderでローカル索引を定義するには、「スコープ」を「LOCAL」に、「パーティション化」を「NONE」に設定します。

グローバル索引

グローバル索引は、基礎となる表に適用されたパーティション方針に関係なく索引をパーティション化できる索引です。レンジ・パーティション化またはハッシュ・パーティション化のいずれかを選択できます。グローバル索引オプションは、ビットマップ索引を除くすべての索引で使用できます。

Oracle Database 10gより前のリリースでは、パーティションのメンテナンス時に表のパーティションを削除すると索引全体が無効となり、索引の再作成が必要となるため、データ・ウェアハウス・アプリケーションにグローバル索引を使用しないよう推奨してきました。Oracle Database 10gからは、グローバル索引がパーティション化のメンテナンスにより悪影響を受けることがなくなったため、制限もなくなりました。

それでもなお、ローカル索引はパーティションの管理のしやすさおよび問合せ操作のパラレル化機能の面から、データ・ウェアハウス・アプリケーションに推奨される選択肢です。

グローバル索引は、表パーティション・キー以外の索引パーティション・キーを指定する際に役立ちます。グローバル索引の場合は、索引キー列に重複した行がないことを確認し、索引タイプとして一意を選択してください。

索引パフォーマンスの考慮事項

使用する索引のタイプを決定する際には、索引がパフォーマンス面において次の順序でランク付けされることを考慮してください。

1. 一意のローカル索引

2. 一意のグローバル索引

3. 他のすべての一意でない索引(標準、ビットマップ、機能ベース)およびローカル索引

パーティションの構成

一部の(ただし、すべてではない)パーティション化メソッドでは、パーティション表領域を構成する必要があります。

パーティションのパラメータには、プロジェクト・ナビゲータからアクセスできます。表を右クリックして「構成」を選択すると、その表の「構成」タブが表示されます。下へスクロールしていくと、「パーティション・パラメータ」ノードが表示されます。

パーティション表領域リスト

数量別ハッシュ、レンジ・リスト、レンジ・ハッシュまたは数量別レンジ・ハッシュのいずれかのメソッドによりパーティション化する場合、カンマ区切りの表領域リストを入力します。

パーティション表領域を指定しない場合、表に関連付けられたデフォルトの表領域が使用され、パーティションの定義によるパフォーマンス上の利点は活かされません。

オーバーフロー表領域リスト

数量別ハッシュ・メソッドによりパーティション化する場合、カンマ区切りの表領域リストを入力します。パーティション数よりも少ない表領域のリストを指定した場合、Oracleデータベースによりそれらの表領域が循環使用されます。

オーバーフロー表領域を指定しない場合、パーティション表領域の制限を超えると、表に関連付けられたデフォルトの表領域が使用され、パーティションの定義によるパフォーマンス上の利点は活かされません。

属性セットの定義

属性セットには、選択した列のセットが含まれています。属性セットは、マッピングの定義時、またはデータのインポートおよびエクスポート時に役立ちます。Oracle Warehouse Builderでは、表、ビューおよびマテリアライズド・ビューの属性セットを定義できます。簡潔にするために、次の各項では、属性セットの定義が可能なすべてのオブジェクトを表という語で表します。

属性セットの作成

属性セットを作成するには、オブジェクト・エディタの「属性セット」タブを使用します。属性セットは、表、ビューおよびマテリアライズド・ビューに対して定義できます。

属性セットを定義する手順は、次のとおりです。

1. プロジェクト・ナビゲータから、属性セットを定義するオブジェクトの名前を右クリックし、開くを選択します。
オブジェクト・エディタが表示されます。

2. 「属性セット」タブを選択します。
このタブには、「属性セット」および「選択された属性セットの属性」の2つのセクションが含まれます。

「属性セット」セクションには、表に対して定義されている属性セットが表示されます。このセクションには、「名前」および「説明」の各属性セットを定義する2つの列が含まれます。

「選択された属性セットの属性」セクションには、表内のすべての属性がリストされます。「挿入」列を使用して選択した属性は、「属性セット」セクションで選択した属性セットに含められる属性です。

3. 「属性セット」セクションで、空白行の「名前」フィールドをクリックし、属性セット名を入力します。
物理モードでは、1から30文字の有効な文字で名前を入力する必要があります。空白は使用できません。論理モードでは、最大200文字の有効な文字を入力できます。属性セット名はオブジェクト内で一意である必要があります。

「選択された属性セットの属性」セクションにすべての表属性が表示されていることに注意してください。

4. 「選択された属性セットの属性」セクションで、属性セットに含める属性ごとに「挿入」を選択します。列を選択する順序により、属性セット内での初期順序が決定されます。
属性セットに表示されたすべての列を選択するには、「すべて選択」をクリックします。属性セットからすべての列を除外するには、「すべて選択解除」をクリックします。属性セットから列を削除するには、「挿入」の選択を解除します。

属性セットの編集

属性セットを編集するには、オブジェクト・エディタの「属性セット」タブを使用します。属性セットを編集する前に、属性セットが含まれるオブジェクトに対してエディタが開いていることを確認します。また、エディタの「属性セット」タブにナビゲートします。

属性セットを編集する際には、次のアクションを実行できます。

- 属性セットの改名
「エンティティの属性セット」セクションの「名前」列で属性セット名をクリックし、新しい名前を入力します。

- 属性セットの属性の追加または削除
属性セットへの属性の追加: 「属性セット」セクションの属性セット名の左側にあるグレーのセルをクリックし、属性を追加する属性セットを選択します。「選択された属性セットの属性」セクションで、属性セットに含める属性ごとに「挿入」を選択します。

属性セットからの属性の削除: 属性セットの左側にあるグレーのセルをクリックし、属性を削除する属性セットを選択します。「選択された属性セットの属性」セクションで、属性セットから削除する属性について「挿入」の選択を解除します。

- 属性セットの削除
「属性セット」セクションで、属性セット名の左側にあるグレーのセルを右クリックし、「削除」を選択します。

順序の定義

順序は、連続した一意の数値のリストを生成するデータベース・オブジェクトです。順序を使用して、一意の主キー値を生成し、複数の行または表にまたがってキーを統合できます。順序の値は一意になるよう保証されています。順序を作成する場合、ワークスペースに格納される順序定義を作成します。順序定義をマッピングに使用して、ターゲット・システムにデータを変換および移動する際に一意の数値を生成できます。

次の各項では、順序の使用方法について説明します。

- 順序について

- 順序定義の作成

- 順序定義の編集

順序について

順序は、NEXTVALおよびCURRVAL疑似列を使用してSQL文において参照されます。各新規順序番号は疑似列NEXTVALへの参照により増加し、現行の順序番号は疑似列CURRVALを使用して参照されます。順序を定義すると、これらの属性が作成されます。

「メタデータのインポート」を使用して既存のソース・システムから順序定義をインポートすることもできます。

順序定義の作成

順序を作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノードを開き、続いてターゲット・モジュールのノードを開きます。

2. 「順序」を右クリックし、メニューから「新規順序」を選択します。
「順序の作成」ダイアログ・ボックスが表示されます。

3. 「名前」フィールドを使用して名前を指定し、フィールドを使用して順序の説明(オプション)を指定します。
名前は、「データ・オブジェクトのネーミング規則」に記載されている規則に従い、さらにモジュール全体で一意である必要があります。

4. 「OK」をクリックします。
Oracle Warehouse Builderにより順序の定義が格納され、プロジェクト・ナビゲータに順序名が挿入されます。

順序定義の編集

「順序の編集」ダイアログ・ボックスを使用して、順序定義を編集します。順序の名前、説明および列に関する注意を編集できます。

順序プロパティを編集するには、プロジェクト・ナビゲータで順序名を右クリックして「開く」を選択します。順序名をダブルクリックします。「順序の編集」ダイアログ・ボックスが表示されます。このダイアログ・ボックスには、「名前」タブと「列」タブの2つのタブがあります。これらのタブを使用して、順序名を変更するか、順序列を編集します。

「名前」タブ

順序の名前を変更するには、「名前」フィールドに新しい名前を入力します。また、プロジェクト・ナビゲータで順序名を右クリックして「名前の変更」を選択し、順序名を変更することもできます。

「データ・オブジェクトのネーミング規則」で説明されている規則に従って、名前と説明を指定します。

順序の説明を変更するには、フィールドに新しい説明を入力します。

「列」タブ

「列」タブには、順序列「CURRVAL」および「NEXTVAL」が表示されます。

ユーザー定義型の定義

ユーザー定義データ型では、Oracle組込みデータ型や他のユーザー定義データ型が、アプリケーションでのデータの構造および動作をモデル化するオブジェクト・タイプの構築ブロックとして使用されます。組込みデータ型は、ほとんどの場合スカラー型であり、アプリケーション固有のデータ構造によるモデル化ほどは柔軟性がありません。

ユーザー定義データ型は、基礎となる持続データ(属性)および関連動作(メソッド)の両方を指定することにより、システム固有のデータ型のモデル化機能を拡張します。ユーザー定義型では、データ属性をセマンティック動作にバインドすることで、現実における複雑なエンティティのより適切なモデルを作成できます。

単純な顧客表Customersの例を考えてみましょう。顧客の住所情報は通常4つまたは5つの独立したフィールドとしてモデル化され、それぞれに適切なスカラー型が指定されます。ユーザー定義型では、住所をコンポジット型として定義し、その型に対して検証を定義できます。

Oracle Warehouse Builderでは、次のユーザー定義データ型を定義できます。

- オブジェクト・タイプ

- 可変長配列

- ネストした表

オブジェクト・タイプについて

オブジェクト型とは、実社会エンティティ(たとえば、発注書など)を抽象化し、アプリケーション・プログラムで処理できるようにしたものです。オブジェクト・タイプは異機種間ユーザー定義型です。これは、1つ以上のユーザー定義型またはスカラー型から構成されます。

オブジェクト・タイプは、次のコンポーネントを含むスキーマ・オブジェクトです。

- 名前: 名前は、そのスキーマ内でオブジェクト・タイプを一意に識別します。

- 属性: 属性は、オブジェクトで表される実際のエンティティの構造および状態を作成する際に使用します。属性には組込み型とその他のユーザー定義型があります。

- メソッド: メソッドには、PL/SQLまたはJavaで記述され、データベースに格納されているか、またはCなどの言語で記述され、外部に格納されているファンクションまたはプロシージャが含まれます。メソッドは、アプリケーションが実際のエンティティに対して実行できる操作のコードベース表現です。

注意:
メソッドは現在サポートされていません。

たとえば、ADDRESSタイプの定義は次のように定義できます。

CREATE TYPE ADDRESS AS OBJECT (street_name varchar2(240), door_no varchar2(30), po_box_no number, city varchar2(35), state varchar2(30), country varchar2(30));

タイプを定義したら、フィールドの1つとしてタイプ定義「ADDRESS」を必要とする表のスキーマ全体で使用できます。

オブジェクト・タイプの定義

オブジェクト・タイプを定義する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. オブジェクト・タイプを作成するターゲット・モジュールを展開します。

3. 「ユーザー定義タイプ」ノードを展開します。

4. 「オブジェクト・タイプ」を右クリックし、「新規オブジェクト・タイプ」を選択します。
「オブジェクト・タイプの作成」ダイアログ・ボックスが表示されます。

5. オブジェクト・タイプの名前と説明(オプション)を入力し、「OK」をクリックします。
オブジェクト・タイプ・エディタが表示されます。エディタで次の各タブを使用して、オブジェクト・タイプを定義します。

- 「名前」タブ

- 「列」タブ

「名前」タブ

「名前」フィールドを使用して、オブジェクト・タイプの名前を入力します。フィールドを使用して、オブジェクト・タイプの説明(オプション)を入力します。オブジェクト・タイプの名前を変更するには、名前を選択して新しい名前を入力します。

「データ・オブジェクトのネーミング規則」で説明されている規則に従って、名前と説明を指定します。

「列」タブ

オブジェクト・タイプの属性を定義するには、「列」タブを使用します。このタブには、属性を定義するために使用できる表が表示されます。この表の各行は、それぞれ表の1つのオブジェクト・タイプの属性に対応しています。

属性ごとに次の詳細を指定します。

- 名前: 属性の名前を入力します。属性名はオブジェクト・タイプ内で一意である必要があります。

- データ型: 「データ型」リストから属性のデータ型を選択します。Oracle Warehouse Builderにより、属性のデフォルトのデータ型が名前に基づいて割り当てられます。たとえば、start_dateという名前の属性を作成する場合、割り当てられるデータ型はDATEです。デフォルトの割当てがデータ要件に合わない場合は変更できます。

関連項目:
Oracle Databaseのサポートされるデータ型のリストは、「サポートされているデータ型」を参照してください。

- 長さ: 属性の長さを入力します。長さは文字データ型にのみ適用可能です。

- 精度: 属性に使用できる合計桁数を指定します。精度は数値データ型にのみ適用可能です。

- スケール: 小数点以下の合計桁数を指定します。スケールは数値データ型にのみ適用可能です。

- 秒精度: 日時フィールドの小数部の桁数を指定します。秒精度は、TIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。

- NOT NULL: 属性にNULL値を含めないよう指定するにはこのフィールドを選択します。デフォルトでは、表のすべての列でNULLを使用できます。この列は、オブジェクト・タイプには適用されません。

- デフォルト値: この属性のデフォルト値を指定します。データが表に格納されるときにこの列に値が入力されなかった場合は、デフォルト値が使用されます。データのロード中にこの列の値を指定した場合は、デフォルト値が上書きされ、指定した値がこの列に格納されます。この列は、オブジェクト・タイプには適用されません。

- 仮想: 属性が仮想列のように動作することを示すには、このオプションを選択します。
仮想列はデータベースには格納されません。仮想列は、「式」フィールドで指定された式を使用して計算されます。仮想列は表内の他の列と同じ方法で参照できますが、仮想列に対して明示的に書き込むことはできません。

- 式: 仮想属性の値の計算に使用される式を指定します。式には、同じ表からの列、制約、SQL関数およびユーザー定義PL/SQL関数を含めることができます。

- 説明: 属性の説明(オプション)を入力します。

オブジェクト・タイプの編集

オブジェクト・タイプを編集する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. 目的のオブジェクト・タイプが含まれているモジュールを開きます。

3. 「ユーザー定義タイプ」ノードを開き、続いて「オブジェクト・タイプ」ノードを開きます。

4. 編集するオブジェクト・タイプを右クリックし、「開く」を選択します。

オブジェクト・タイプ・エディタが表示されます。「オブジェクト・タイプの定義」で説明されている「名前」および「列」タブを使用して、オブジェクト・タイプの定義を編集します。

可変長配列について

可変長配列は、順序付けられたデータ要素の集合です。可変長配列内の各要素の位置は、索引番号として格納されます。この番号を使用して、特定の要素にアクセスできます。可変長配列を定義する際、配列に含めることができる最大要素数を指定します。この数は後で変更できます。可変長配列は不透明なオブジェクト(RAW、BLOBなど)として格納されます。

顧客が複数の住所(たとえば3つ)を持っている場合、もう1つのタイプとして3つの住所を保持する表タイプを作成できます。次の例では、ADDRESSタイプの表が作成されます。

TYPE address_store is VARRAY(3) of address;

リスト内の最初の住所が主な住所とみなされ、残りの住所は二次的な住所とみなされます。

可変長配列の定義

可変長配列を定義する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. 可変長配列を作成するターゲット・モジュールを展開します。

3. 「ユーザー定義タイプ」ノードを展開します。

4. 「可変長配列」を右クリックし、「新規可変長配列」を選択します。
「可変長配列の作成」ダイアログ・ボックスが表示されます。

5. 可変長配列の名前と説明(オプション)を入力し、「OK」をクリックします。
可変長配列エディタが表示されます。エディタで次の各タブを使用して、オブジェクト・タイプを定義します。

- 「名前」タブ

- 「詳細」タブ

「名前」タブ

「名前」フィールドを使用して、可変長配列の名前を入力します。フィールドを使用して、可変長配列の説明(オプション)を入力します。可変長配列の名前を変更するには、名前を選択して新しい名前を入力します。

「データ・オブジェクトのネーミング規則」で説明されている規則に従って、名前と説明(オプション)を指定します。

「詳細」タブ

「詳細」タブを使用して、次のフィールドの値を指定します。

- データ型: 「データ型」リストから属性のデータ型を選択します。

関連項目:
Oracle Databaseのサポートされるデータ型のリストは、「サポートされているデータ型」を参照してください。

- 長さ: 可変長配列要素の長さを入力します。長さは文字データ型にのみ適用可能です。

- 精度: 可変長配列要素に使用できる合計桁数を指定します。精度は数値データ型にのみ適用可能です。

- スケール: 小数点以下の合計桁数を指定します。スケールは数値データ型にのみ適用可能です。

- 秒精度: 日時フィールドの小数部の桁数を指定します。秒精度は、TIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。

- サイズ: 可変長配列のサイズを指定します。

可変長配列の編集

可変長配列を編集する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. 目的の可変長配列タイプが含まれているモジュールを開きます。

3. 「ユーザー定義タイプ」ノードを開き、続いて「可変長配列」ノードを開きます。

4. 編集する可変長配列を右クリックし、「開く」を選択します。

可変長配列エディタが表示されます。「可変長配列の定義」で説明されているように、「名前」タブと「詳細」タブを使用して、可変長配列の定義を編集します。

ネストした表について

ネストした表は、不規則なデータ要素コレクションです。ネストした表では、任意の数の要素を使用できます。表の定義では最大要素数は指定されません。要素の順序は保持されません。ネストした表では、通常の表に対して実行できるSELECT、INSERTおよびDELETEなどのすべての操作を実行できます。ネストした表の要素は、各要素が属する親表の行またはオブジェクトを識別する列が含まれる独立した記憶域表に格納されます。要素には組込み型またはユーザー定義型を指定できます。ネストした表を単一列の表で表示、またはネストした表がオブジェクト・タイプである場合は、オブジェクト・タイプの属性ごとに1列ずつ、複数列の表で表示できます。

ネストした表は、たとえば顧客参照など、サイズが事前定義されていない不規則な要素セットの格納に使用されます。

ネストした表の定義

ネストした表を定義する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. ネストした表を作成するターゲット・モジュールを展開します。

3. 「ユーザー定義タイプ」ノードを展開します。

4. 「ネストした表」を右クリックし、「新規ネストした表」を選択します。
「ネストした表の作成」ダイアログ・ボックスが表示されます。

5. ネストした表の名前と説明(オプション)を入力し、「OK」をクリックします。
ネストした表エディタが表示されます。エディタで次の各タブを使用して、ネストした表を定義します。

- 「名前」タブ

- 「詳細」タブ

「名前」タブ

「名前」フィールドを使用して、ネストした表の名前を入力します。フィールドを使用して、ネストした表の説明(オプション)を入力します。ネストした表の名前を変更するには、名前を選択して新しい名前を入力します。

「データ・オブジェクトのネーミング規則」で説明されている規則に従って、名前と説明(オプション)を指定します。

「詳細」タブ

「詳細」タブを使用して、次のフィールドの値を指定します。

- データ型: 「データ型」リストから属性のデータ型を選択します。

関連項目:
サポートされるデータ型のリストは、「サポートされているデータ型」を参照してください。

- 長さ: ネストした表要素の長さを入力します。長さは文字データ型にのみ適用可能です。

- 精度: ネストした表要素に使用できる合計桁数を指定します。精度は数値データ型にのみ適用可能です。

- スケール: 小数点以下の合計桁数を指定します。スケールは数値データ型にのみ適用可能です。

- 秒精度: 日時フィールドの小数部の桁数を指定します。秒精度は、TIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。

ネストした表の編集

ネストした表を編集する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. 目的のネストした表が含まれているモジュールを開きます。

3. 「ユーザー定義タイプ」ノードを開き、続いて「ネストした表」ノードを開きます。

4. 編集するネストした表を右クリックし、「開く」を選択します。

ネストした表エディタが表示されます。「ネストした表の定義」で説明されているように、「名前」タブと「詳細」タブを使用して、ネストした表の定義を編集します。

キューの定義

キューを使用すると、メッセージを使用した情報の非同期共有が可能になります。データベース内またはデータベース間で、増分データ・ウェアハウスまたはレプリケーション・ソリューションを実装するには、キューを使用します。

メッセージの形でデータを共有するためには、複数のメッセージを格納および管理するデータ・オブジェクトを作成する必要があります。このオブジェクトはアドバンスト・キュー(AQ)です。キューの伝播を定義することにより、異なるキュー間でメッセージを伝播できます。次の各項では、キューの定義方法と使用方法を説明します。

キューには次の利点があります。

- 一貫性があり、信頼性が高く、安全かつ自律的な方法で互いに通信するアプリケーションを作成できます。

- メッセージをデータベース表に格納することにより、データベースの信頼性と復元可能性がメッセージ・インフラストラクチャに導入されます。

- 監査およびビジネス・インテリジェンスのために、メッセージが自動的にデータベースに保持されます。

キュー表の定義の作成

キューはキュー表に格納されます。各キュー表はデータベース表であり、1つ以上のキューが格納されます。キュー表を作成すると、約25個の列で構成されるデータベース表が作成されます。これらの列には、Oracle AQメタデータとユーザー定義ペイロードが格納されます。

SYS.ANYDATAデータ型を使用してキュー表に格納されるデータの型を定義することにより、あらゆるタイプのメッセージを格納するキュー表を作成できます。

キュー表を作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノードを開いて「Oracle」ノードを開いた後、その下にキュー表を定義するモジュール・ノードを開きます。

2. キューノードを開き、「キュー表」を右クリックして、「新規キュー表」を選択します。
「キュー表の作成」ダイアログ・ボックスが表示されます。

3. キュー表の定義に必要な詳細を指定し、「OK」をクリックします。
詳細は、「キュー表のペイロード・タイプの定義」を参照してください。

キュー表のメタデータがワークスペース内に作成され、そのキュー表がプロジェクト・ナビゲータのキューノードの下に追加されます。

キュー表のペイロード・タイプの定義

ペイロード・タイプやキュー内でのメッセージのソート順など、キュー表に関する追加の詳細を指定するには、「キュー表の作成」ダイアログ・ボックスまたは「キュー表の編集」ダイアログ・ボックスを使用します。次の項では、キュー表について指定する詳細について説明します。

名前

「名前」フィールドは、キュー表の名前を表します。名前は、このキュー表を含むOracleモジュール内で一意である必要があります。詳細は、「データ・オブジェクトのネーミング規則」を参照してください。

説明

フィールドには、キュー表の説明(オプション)を入力します。

ペイロード・タイプ

各キューには、転送される実際のデータを格納するペイロードが含まれています。ペイロード・タイプは、キュー表に格納できるデータのタイプを表します。

ペイロード・タイプとして、次のオプションのいずれかを選択できます。「オブジェクト・タイプ」、「SYS.ANYDATA」、「RAW」、「SYS.AQ$_JMS_BYTES_MESSAGE」、「SYS.AQ$_JMS_MAP_MESSAGE」、「SYS.AQ$_JMS_MESSAGE」、「SYS.AQ$_JMS_STREAM_MESSAGE」、「SYS.AQ$_JMS_TEXT_MESSAGE」および「XMLTYPE」。

検索

オブジェクトを検索するには、「検索」フィールドを使用します。このフィールドは、「ペイロード・タイプ」として「オブジェクト・タイプ」を選択した場合にのみ有効になります。

「検索」フィールドの下の領域には、ワークスペース内のオブジェクト・タイプが表示されます。オブジェクト・タイプは、それが属しているモジュールの下にリストされます。特定の名前のオブジェクトを検索するには、そのオブジェクトの名前を「検索」フィールドに入力し、「実行」をクリックします。

メッセージのトランザクション・プロパティを有効にする

メッセージのグループ化を有効にするには、メッセージのトランザクション・プロパティを有効にするを選択します。このオプションは、SYS.ANYDATAキューを除くすべてのオブジェクト・タイプのキューに対して有効になります。

メッセージのグループ化では、1つのキューに属するメッセージをグループ化して、一度に1人のユーザーによってのみ消費できるメッセージのセットにすることができます。同じグループに属するメッセージはすべて同じトランザクション内に作成する必要があり、同じトランザクション内に作成されたメッセージはすべて同じグループに属します。

この機能によって、複雑なメッセージを、複数の単純なメッセージにセグメント化できます。また、イメージやビデオなど、より小さなオブジェクトにセグメント化可能な複雑で大きなオブジェクトがメッセージ・ペイロードに含まれる場合にも、この機能が便利です。

保護キュー表

保護キューを作成するには、保護キュー表を選択します。このオプションは、SYS.ANYDATAキューを除くすべてのオブジェクト・タイプのキューに対して有効になります。

保護キューは、Oracle Streamsアドバンスト・キューイング(AQ)エージェントを、エンキューおよびデキューなどのキュー操作を実行できる1人以上のデータベース・ユーザーと明示的に関連付ける必要があるキューです。保護キューの所有者は、そのキューに対してすべてのキュー操作を実行できますが、他のユーザーは、保護キュー・ユーザーとして構成されていないかぎり、保護キューに対してキュー操作を実行することはできません。

メッセージのソート順

ペイロードに含まれるメッセージがソートされる順序を指定するには、メッセージのソート順リストを使用します。メッセージのソートに使用できるオプションは、次のとおりです。

- Enqueue_time: メッセージの到着時刻の順にソートします。

- Priority: メッセージの優先度の順にソートします。

- Enqueue_time, priority: メッセージの到着時刻の順にソートし、到着時刻が同じメッセージはメッセージの優先度の順にソートします。

- Priority, enqueue_time: メッセージの優先度の順にソートし、優先度が同じメッセージはメッセージの到着時刻の順にソートします。

キュー表の編集

キュー表を編集するには、キュー表を右クリックして開くを選択します。「キュー表の編集」ダイアログ・ボックスが表示されます。これを使用して、キュー表の定義を変更します。

キュー表を編集し、名前、説明またはペイロード・タイプを変更できます。ただし、キュー表のペイロード・タイプを変更した場合は、キュー表とそのキュー表に基づいたキューが削除されて再作成されます。そのため、キュー内のすべての既存データは失われます。配布後はペイロード・タイプを変更しないようお薦めします。

アドバンスト・キューの定義の作成

アドバンスト・キュー(AQ)は、データベースに統合されたメッセージ・キュー機能を提供します。メッセージを永続的に格納し、異なるコンピュータおよびデータベースにあるキュー間でメッセージを伝播し、Oracle Net Services、HTTPおよびHTTPSを使用してメッセージを送信できるように、Oracle Databaseの機能がアドバンスト・キューによって最適化されます。

アドバンスト・キューを使用して、同じOracleデータベース内で、または異なるデータベース間で、データの伝播と管理を行います。各アドバンスト・キューは、実際のキュー・データを格納するキュー表に基づいています。

関連項目:
アドバンスト・キューの詳細は、Oracle Streams概要および管理を参照してください。

アドバンスト・キューの定義を作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノードを開いて「Oracle」ノードを開いた後、その下にアドバンスト・キューを定義するOracleモジュール・ノードを開きます。

2. キューノードを右クリックし、新規アドバンスト・キューを選択します。
アドバンスト・キューの作成ダイアログ・ボックスが表示されます。

3. アドバンスト・キュー名やアドバンスト・キューの基礎となるキュー表など、詳細を指定します。「OK」をクリックします。
詳細は、「AQの基礎となるキュー表の指定」を参照してください。

AQの基礎となるキュー表の指定

アドバンスト・キュー名やアドバンスト・キューの基礎となるキュー表などの詳細を指定するには、アドバンスト・キューの作成ダイアログ・ボックスを使用します。既存のキュー表を選択することも、新規のキュー表を作成することもできます。名前、説明またはアドバンスト・キューの基礎となるキュー表を変更するには、アドバンスト・キューの編集ダイアログ・ボックスを使用します。

名前

「名前」フィールドは、アドバンスト・キューの名前を表します。名前は、このアドバンスト・キューを含むOracleモジュール内で一意である必要があります。詳細は、「データ・オブジェクトのネーミング規則」を参照してください。

説明

フィールドには、アドバンスト・キューの説明(オプション)を入力します。

キュー表を選択

アドバンスト・キュー内のメッセージを格納するキュー表を選択するには、キュー表を選択リストを使用します。

新規キュー表を作成

アドバンスト・キューのデータを格納するキュー表を作成するには、「新規キュー表を作成」を選択します。ガイドに従ってキュー表を定義できる「キュー表の作成」ダイアログ・ボックスが表示されます。キュー表の定義方法の詳細は、「キュー表の定義の作成」を参照してください。

アドバンスト・キューの定義の編集

アドバンスト・キューを編集して、アドバンスト・キューの作成時に指定されたプロパティを変更できます。変更できるものには、名前、説明、キューのデータを格納するキュー表が含まれます。

アドバンスト・キューを編集するには、プロジェクト・ナビゲータでアドバンスト・キューを右クリックし、開くを選択します。アドバンスト・キューの編集ダイアログ・ボックスが表示されます。これを使用して、アドバンスト・キューを編集します。

このダイアログ・ボックスに含まれるオプションの詳細は、「アドバンスト・キューの定義の作成」を参照してください。

アドバンスト・キューの定義を編集した後は、そのアドバンスト・キューを使用するマッピングを同期化してください。

キューの伝播の作成

キューの伝播により、異なるキュー間でのメッセージの伝播が可能になります。たとえば、SRC_QUEおよびTGT_QUEという2つのキューがあるとします。SRC_QUEからTGT_QUEへメッセージを伝播するには、SRC_QUEで、ターゲット・キューをTGT_QUEとするキューの伝播を定義します。

通常、キューの伝播は、2つのデータベースが別々のロケーションにあって、ソース・データベースをターゲット・ロケーションにレプリケートする必要がある場合に、レプリケーションで使用されます。

キューの伝播を作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノードを開いて「Oracle」ノードを開いた後、その下にキューの伝播を定義するOracleモジュール・ノードを開きます。

2. キューノードを開き、その下に伝播を作成するアドバンスト・キューを右クリックして、「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。

3. 新規ギャラリダイアログ・ボックスで、キューの伝播を選択して「OK」をクリックします。
キューの伝播の作成ダイアログ・ボックスが表示されます。

4. キューの伝播の作成ダイアログ・ボックスを使用してターゲット・キューを定義し、「OK」をクリックします。

キューの伝播のメタデータがワークスペース内に作成され、そのキューの伝播がプロジェクト・ナビゲータのアドバンスト・キューの下に追加されます。

伝播のターゲット・キューの選択

伝播のターゲット・キューを指定するには、キューの伝播の作成ダイアログ・ボックスまたはキューの伝播の編集ダイアログ・ボックスを使用します。次の各項では、このページに含まれる各フィールドについて説明します。

名前

「名前」フィールドは、キューの伝播の名前を表します。名前は、その下にキューの伝播が定義されるアドバンスト・キュー全体で一意である必要があります。

キューの伝播の名前を変更するには、名前を選択して新しい名前を入力します。

説明

フィールドは、キューの伝播の説明を表します。説明の入力はオプションです。

伝播のターゲット・キューの選択

ターゲット・キューを定義するには、伝播のターゲット・キューの選択セクションを使用します。このセクションの下の領域には、現在のプロジェクトで定義されたアドバンスト・キューを含むノード・ツリーが表示されます。ターゲットとして使用するアドバンスト・キューを選択します。キューの伝播を定義したアドバンスト・キューからのメッセージを、ターゲット・キューとして定義したアドバンスト・キューへ伝播できます。

オブジェクト名を使用して特定のオブジェクトを検索するには、「検索」フィールドを使用します。このフィールドにオブジェクト名を入力し、「実行」をクリックします。

キューの伝播の編集

キューの伝播を編集し、キューの伝播を定義するために行った選択を変更できます。変更できるオプションには、名前、説明およびターゲット・キューが含まれます。

キューの伝播を編集するには、プロジェクト・ナビゲータでキューの伝播を右クリックし、開くを選択します。キューの伝播の編集ダイアログ・ボックスが表示されます。このダイアログ・ボックスに含まれるオプションの詳細は、「キューの伝播の作成」を参照してください。

リレーショナル・データ・オブジェクトの構成

設計フェーズの前半では、Oracle Warehouse Builderの設計オブジェクトを使用してターゲット・システムの論理モデルを定義しました。構成フェーズでは、表領域、パーティションおよびその他の識別パラメータなどのパラメータを構成し、オブジェクト定義に物理配布プロパティを割り当てます。ジョブ名、ランタイム・ディレクトリなどのランタイム・パラメータも構成します。

データ・オブジェクトの「「構成」タブを使用して、これらの物理プロパティを設定します。以降の各項で、物理プロパティを論理設計モデルに割り当てる方法を示します。

- ターゲット・モジュールの構成

- 表の構成

- マテリアライズド・ビューの構成

- ビューの構成

- 順序の構成

- アドバンスト・キューの構成

- キュー表の構成

- キューの伝播の構成

ターゲット・モジュールの構成

各ターゲット・モジュールでは、そのモジュールに含まれるすべてのオブジェクトに対してトップ・レベルの構成オプションが提供されます。

Oracleモジュールを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」、「Oracle」を順に開き、ターゲット・モジュール名を右クリックして「構成」を選択します。
「構成」タブが表示されます。

2. 構成するパラメータを選択し、パラメータ名の右側の空白をクリックしてパラメータ値を編集します。
パラメータごとに、リストからオプションを選択するか、値を入力するか、または省略記号ボタンをクリックして別の「プロパティ」ダイアログ・ボックスを表示できます。

3. 次の各項にリストしたパラメータを構成します。

配布システム・タイプ

PL/SQL生成モード: ターゲット・データベースのタイプを定義します。選択できるオプションは、「デフォルト」、「Oracle10g」、Oracle 11g、「Oracle8i」および「Oracle9i」です。コードの生成はこのフィールドでの選択内容に基づいて行われます。たとえば、Oracle9iコード構成を必ず使用するには「Oracle9i」を選択します。「Oracle8i」を選択した場合は、行ベース・コードが生成されます。

各リリースで新機能が導入されていますが、その一部はOracle Databaseの最新バージョンと組み合せた場合にのみ使用できます。たとえば、「PL/SQL生成モード」として「Oracle8i」を選択した場合は、テーブル・ファンクションや外部表など、一部のOracle Warehouse Builder 9iコンポーネントにアクセスできません。

生成プリファレンス

行端: フラット・ファイルの行端マーカーを定義します。これはウェアハウスの配布先であるプラットフォームによって異なります。UNIXの場合は\nを使用し、Windows NTの場合は\r\nを使用します。

生成ターゲットのディレクトリ

ABAP拡張子: ABAPスクリプトのファイル名拡張子を入力します。デフォルトはabapです。

ABAP実行パラメータ・ファイル: ABAPジョブ内のパラメータ・スクリプトの接尾辞を入力します。デフォルトは_run.iniです。

ABAPスプール・ディレクトリ: スクリプトの生成処理中にABAPスクリプトがバッファされるロケーションを入力します。

DDLディレクトリ: ターゲット・スキーマでデータベース・オブジェクトを作成するスクリプトのロケーションを入力します。デフォルトはddl\です。

DDL拡張子: DDLスクリプトのファイル名拡張子を入力します。デフォルトはddlです。

DDLスプール・ディレクトリ: スクリプトの生成処理中にDDLスクリプトがバッファされるロケーションを入力します。デフォルトはddl\logです。

LIBディレクトリ: Oracleファンクションおよびプロシージャを生成するスクリプトのロケーションを入力します。デフォルトはlib\です。

LIB拡張子: マッピング名に追加される接尾辞を入力します。デフォルトは.libです。

LIBスプール・ディレクトリ: ユーザー定義ファンクションおよびプロシージャを生成するスクリプトのロケーションを入力します。デフォルトはlib\log\です。

LOADERディレクトリ: 制御ファイルのロケーションを入力します。デフォルトはctl\です。

LOADER拡張子: ローダー・スクリプトの接尾辞を入力します。デフォルトは.ctlです。

LOADER実行パラメータ・ファイル: パラメータ初期化ファイルの接尾辞を入力します。デフォルトは_run.iniです。

PL/SQLディレクトリ: PL/SQLスクリプトのロケーションを入力します。デフォルトはpls\です。

PL/SQL実行パラメータ・ファイル: PL/SQLジョブ内のパラメータ・スクリプトの接尾辞を入力します。デフォルトは_run.iniです。

PL/SQLスプール・ディレクトリ: スクリプトの生成処理中にPL/SQLスクリプトがバッファされるロケーションを入力します。デフォルトはpls\log\です。

PL/SQL拡張子: PL/SQLスクリプトのファイル名拡張子を入力します。デフォルトは.plsです。

SQLPlusディレクトリ: PL/SQLスクリプトのロケーションを入力します。デフォルトはsql\です。

SQLPlus拡張子: PL/SQLスクリプトのファイル名拡張子を入力します。デフォルトは.sqlです。

SQLPLus実行パラメータ・ファイル: PL/SQLジョブ内のパラメータ・スクリプトの接尾辞を入力します。デフォルトは_run.iniです。

ステージング・ファイル・ディレクトリ: SAP表に関連するすべてのABAP構成のためのディレクトリです。デフォルトはabap\です。

Tclディレクトリ: tclスクリプトのロケーションを入力します。デフォルトはtcl\です。

関連項目:
SAP表の使用方法の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

識別

アプリケーションの短縮名: このパラメータは廃止されており、使用していません。

配布可能: モジュールに含まれるオブジェクトを配布できることを示すには、このオプションを選択します。

ロケーション: モジュールが関連付けられているロケーションを表します。モジュールがソース・モジュールである場合、この値はデータのソースであるロケーションを表します。モジュールがターゲット・モジュールである場合、この値は生成済コードおよびオブジェクト・データの配布先となるロケーションを表します。

メイン・アプリケーションの短縮名: このパラメータは廃止されており、使用していません。

トップ・ディレクトリ: 生成済コードが格納されるディレクトリの名前を表します。このパラメータのデフォルト値は..\..\codegen\です。この値は生成済コードを格納する任意のディレクトリに変更できます。

ランタイム・ディレクトリ

アーカイブ・ディレクトリ: 現在使用していません。デフォルトはarchive\です。

入力ディレクトリ: 現在使用していません。デフォルトはinput\です。

無効ディレクトリ: SQL*Loaderエラーおよび拒否されたレコードのディレクトリです。デフォルトはinvalid\です。

ログ・ディレクトリ: SQL*Loaderのログ・ディレクトリです。デフォルトはlog\です。

受信ディレクトリ: 現在使用していません。デフォルトはreceive\です。

ソート・ディレクトリ: 現在使用していません。デフォルトはsort\です。

作業ディレクトリ: 現在使用していません。デフォルトはwork\です。

表領域のデフォルト

デフォルト索引表領域: 索引が作成される各表領域の名前を定義します。デフォルトはNULLです。オブジェクト・レベルではなくターゲット・モジュール・レベルで索引表領域を構成した場合、コード生成時にターゲット・モジュール・レベルで構成された表領域の値が使用されます。各索引の表領域をオブジェクト・レベルで構成した場合、ターゲット・モジュール・レベルで構成された表領域の値が上書きされます。

オブジェクト表領域: オブジェクトが作成される各表領域の名前(表、ビューまたはマテリアライズド・ビューなど)を定義します。デフォルトはNULLです。個々のオブジェクト・レベルではなくターゲット・モジュール・レベルでオブジェクト表領域を構成した場合、コード生成時にターゲット・モジュール・レベルで構成された値が使用されます。各オブジェクトの表領域を構成した場合、ターゲット・モジュール・レベルで構成された表領域の値が上書きされます。

表の構成

Oracle Warehouse Builderでは、ターゲット・モジュールで定義されている表ごとにDDLスクリプトが生成されます。

表の物理プロパティを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで表の名前を右クリックし、「構成」を選択します。
その表の「構成」タブが表示されます。

2. 次の各ノードの下にリストされる構成パラメータを設定します。「エラー表」、「外部キー」、「識別」、「パラレル」、「パフォーマンス・パラメータ」、「パーティション・パラメータ」、「記憶領域」および「チェンジ・データ・キャプチャ」。

エラー表

エラー表名: ロード操作で表にロードされなかった行を格納するエラー表の名前を指定します。

表領域: エラー表を格納する表領域の名前を指定します。

外部キー

「外部キー」ノードは、表に外部キー定義が含まれている場合に表示されます。「外部キー」ノードの下には、表内の各外部キーに対応する個別のノードが表示されます。このノードの下に、作成方法カテゴリと「識別」カテゴリがあり、それぞれの下にパラメータがリストされます。

作成方法カテゴリには、次のパラメータが含まれています。

- 制約チェック: こトランザクションのコミット後までこの制約のチェックを延期できるかどうかを示します。この制約のチェックをトランザクションのコミット後まで延期するために後続のトランザクションでSET CONSTRAINTS節を設定できることを示すには、このパラメータをDEFERABLEに設定します。この制約のチェックをトランザクションのコミット後まで延期するためにSET CONSTRAINTS節を使用できないことを示すには、このパラメータをNOT DEFERABLEに設定します。デフォルトはNOT DEFERABLEです。

- 制約の状態: 制約を有効にするべきかどうかを示します。制約を表データに適用する場合はENABLEを選択します。整合性制約を無効にするには、DISABLEを選択します。デフォルトはENABLEです。

- 制約の検証: 設定できるオプションはNOVALIDATEまたはVALIDATEです。このパラメータの設定による効果は、その制約が有効か無効かによって異なります。

- 例外表: 例外表の名前を示します。制約の検証としてNOVALIDATEを設定した場合、このパラメータは使用できません。

- 初期設定: このパラメータに設定できるオプションは、IMMEDIATEまたはDEFERREDです。デフォルト設定はIMMEDIATEです。IMMEDIATEは、延期可能な制約を各SQL文の後にチェックする必要があることを示します。DEFERREDは、延期可能な制約を後続のトランザクションの後にチェックする必要があることを示します。

- NOVALIDATEモード: このパラメータに設定できるオプションは、NORELYおよびRELYであり、NORELYがデフォルト設定です。このパラメータをRELYに設定すると、クエリー・リライトでNOVALIDATEモードの制約がアクティブ化されます。

- 削除時: 削除操作の際に、このパラメータは削除されるレコードに依存する外部キーをどのように処理するかを示します。このパラメータに設定できるオプションは、CASCADEまたはSET NULLです。CASCADEに設定すると、依存外部キー値が削除されます。SET NULLに設定すると、依存外部キー値がNULLに設定されます。

識別

配布可能: この表を配布するよう指定するには、このオプションを選択します。配布可能とマークされた表についてのみスクリプトが生成されます。

エラー表のみ: 表に関連付けられたエラー表にのみ生成アクションまたは配布アクションを実行するには、このオプションを選択します。このオプションは、エラー表を既存の表に追加する場合に使用します。この設定は、「配布可能」パラメータのアクションを制御するのみで、パラメータの上書きはしません。

このオプションの選択を解除すると、表と一緒にエラー表が配布されます。

パラレル

パラレル・アクセス・モード: 表が作成済である場合にパラレル処理を可能にします。デフォルトはPARALLELです。

並列度: 並列度を指定します。これはパラレル操作で使用されるパラレル・スレッドの数です。

パフォーマンス・パラメータ

バッファ・キャッシュ: Oracle Databaseでバッファ・キャッシュに行を格納する方法を指定します。

データ・セグメント圧縮: データ・セグメントを圧縮するかどうかを指定します。圧縮するとディスク使用率が減ります。デフォルトはNOCOMPRESSです。

ロギング・モード: DMLアクションをREDOログ・ファイルに記録するかどうかを指定します。パフォーマンスを向上させるには、このパラメータをNOLOGGINGに設定します。デフォルトはLOGGINGです。

行レベルの依存性: 行レベルの依存性トラッキングを使用するかどうかを指定します。

行移動: Oracle Databaseが表の行を移動できるかどうかを指定します。

統計収集: 表について統計を収集するかどうかを指定します。変更の統計をこの表で収集するには、「MONITORING」を指定します。

パーティション・パラメータ

パーティション表領域リスト: 表領域のカンマ区切りリストを指定します。シンプル・パーティション化オブジェクトの場合、このリストは数量別ハッシュ・パーティション表領域に使用されます。コンポジット・パーティション化表の場合、サブパーティション・テンプレートで表領域のリストを格納するために使用されます。

オーバーフロー表領域リスト: オーバーフロー・データの表領域のカンマ区切りリストを指定します。単純なパーティション化オブジェクトの場合、このリストは数量別ハッシュ・パーティションのオーバーフロー表領域に使用されます。表領域の数をパーティションの数と等しくする必要はありません。パーティション数が表領域数より多い場合は、表領域の名前がOracle Databaseで循環使用されます。

記憶域

記憶域パラメータでは、データベースへの表の格納方法を定義できます。このカテゴリには、BUFFER_POOL、FREELIST GROUPS、FREELISTS、INITIAL、MINEXTENTS、MAXEXTENTS、NEXTおよびPCTINCREASEなどのパラメータが含まれます。

「表領域」パラメータは、表が作成される各表領域の名前を定義します。デフォルト値はNULLです。デフォルト値NULLをそのまま使用する場合、ターゲット・モジュールの構成プロパティに設定されている表領域の値に基づいて表が生成されます。個々のオブジェクトに対して表領域を構成する場合、ターゲット・モジュールに構成された表領域の値が上書きされます。

変更データの取得

有効化: この表に対して変更データの取得を有効にするかどうかを示します。この表に対して変更データの取得を有効にする場合は、このパラメータでTrueを選択します。

表の位置: 変更データの取得における表の位置を示します。

マテリアライズド・ビューの構成

マテリアライズド・ビューの物理プロパティを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、マテリアライズド・ビュー名を右クリックし、「構成」を選択します。
そのマテリアライズド・ビューの「構成」タブが表示されます。

2. 表についてリストされた構成のガイドラインに従ってください。詳細は、「表の構成」を参照してください。

3. 次の項の「マテリアライズド・ビュー・パラメータ」を構成します。

4. 「マテリアライズド・ビュー・ログ・パラメータ」の説明に従って、マテリアライズド・ビュー・ログ・パラメータを構成します。

マテリアライズド・ビュー・パラメータ

マテリアライズド・ビューのパラメータを次に示します。

- 実表: マテリアライズド・ビューで参照される実表のカンマ区切りリストを指定します。各表名をカンマで区切ります。表名が大文字でない場合は、名前を二重引用符で囲みます。

- BUILD: マテリアライズド・ビューに移入されるタイミングを指定します。オプションは、Immediate(デフォルト)、DeferredおよびPrebuiltです。
Immediate: マテリアライズド・ビューの作成時に移入します。

Deferred: 次回のリフレッシュ操作までマテリアライズド・ビューの移入を遅延させます。マテリアライズド・ビューの設計中、実表のメタデータは正しいがデータが正しくない場合、このオプションを選択できます。

Prebuilt: マテリアライズド・ビューがビルトインであることを示します。

- デフォルト・ロールバック・セグメント: オプションとして、DEFAULT、DEFAULT MASTER、DEFAULT LOCALおよびNONEがあります。デフォルト設定はDEFAULT LOCALです。使用するロールバック・セグメントをOracle Databaseで選択する必要があることを示すには、DEFAULTを指定します。リモート・ロールバック・セグメントをリモート・サイトで使用するには、DEFAULT MASTERを指定します。リモート・ロールバック・セグメントをマテリアライズド・ビューが含まれるローカル・リフレッシュ・グループに使用するには、DEFAULT LOCALを指定します。マスター・セグメントおよびローカル・セグメントの両方を指定するには、NONEを指定します。

- FOR UPDATE: 副問合せ、主キー、行IDまたはオブジェクト・マテリアライズド・ビューを更新できるようにするには、「はい」を選択します。デフォルト設定は「いいえ」です。

- ローカル・ロールバック・セグメント: マテリアライズド・ビューのローカル・リフレッシュ・グループに使用する名前付きリモート・ロールバック・セグメントを指定します。デフォルトはNULLです。

- マスター・ロールバック・セグメント: マテリアライズド・ビューのリモート・マスター・サイトで使用されるリモート・ロールバック・セグメント名を指定します。

- NEXT(日付): 自動リフレッシュ間の間隔を指定します。このパラメータには日時の値を指定します。

- クエリー・リライト: マテリアライズド・ビューがクエリー・リライトに適格かどうかを指定します。オプションはENABLEおよびDISABLEです。デフォルトはDISABLEです。
Enable: クエリー・リライトを有効にします。その他のクエリー・リライト要件は、「マテリアライズド・ビューの高速リフレッシュ」を参照してください。

Disable: クエリー・リライトを無効にします。マテリアライズド・ビュー内のデータが失効していることがわかっている、または問合せ文を変更する場合、クエリー・リライトを無効にできます。

- リフレッシュ: リフレッシュ方法を指定します。オプションは、Complete、Fast、ForceおよびNeverです。デフォルト設定はForceです。
Complete: Oracle Databaseはリフレッシュ時にマテリアライズド・ビューを切り捨て、問合せを再実行します。

Fast: 実表データに変更を適用する目的でのみマテリアライズド・ビューを使用します。高速リフレッシュを正しく動作させるには、多くの要件があります。詳細は、「マテリアライズド・ビューの高速リフレッシュ」を参照してください。

Force: Oracle Databaseは高速モードを使用してリフレッシュを試行します。高速モードでリフレッシュできない場合、Oracleサーバーはリフレッシュ時に問合せを再実行します。

Never: マテリアライズド・ビューがリフレッシュされないようにします。

- リフレッシュ: オプションはCOMMITおよびDEMANDです。データベースがマテリアライズド・ビューのマスター表上で動作するトランザクションをコミットするたびに高速リフレッシュが行われるように指示するには、COMMITを指定します。必要に応じてマテリアライズド・ビューがリフレッシュされるように指示するには、DEMANDを指定します。このためには、DBMS_MVIEWパッケージのリフレッシュ・プロシージャのいずれかを使用します。デフォルト設定はDEMANDです。

- 開始: 最初の自動リフレッシュ時間を指定します。このパラメータには日時の値を指定します。

- 制約の使用: このパラメータについて選択できるオプションはTRUSTEDまたはENFORCEDです。DBAが信頼できると宣言してはいるが、Oracle Databaseでは検証されていないディメンションと制約情報をOracle Databaseで使用可能にするには、TRUSTEDを選択します。デフォルト設定はENFORCEDです。

- WITH: 主キー・マテリアライズド・ビューを作成するにはPRIMARY_KEYを選択します。ROWIDマテリアライズド・ビューを作成するにはROWIDを選択します。デフォルト設定はPRIMARY_KEYです。

パフォーマンス・パラメータ

バッファ・キャッシュ: この表のために取得したブロックをバッファ・キャッシュに格納する方法を指定します。選択できるオプションはCACHEまたはNOCACHEです。CACHEを選択した場合は、全表スキャンが実行されたときに、バッファ・キャッシュ内で最も長い間使用されていない(LRU)リストの最後に使用された終端にブロックが格納されます。小規模な参照表のように頻繁にアクセスされる表の場合は、「バッファ・キャッシュ」パラメータをCACHEに設定すると有用です。NOCACHEを選択した場合は、全表スキャンが実行されたときに、バッファ・キャッシュ内で最も長い間使用されていない(LRU)リストのLRU終端にブロックが格納されます。

データ・セグメント圧縮: ディスク上で使用領域を削減するためにデータ・セグメントを圧縮するかどうかを指定します。このパラメータに設定できるオプションは、COMPRESS、COMPRESS ALLまたはNOCOMPRESSです。デフォルトはNOCOMPRESSです。ダイレクト・パスINSERTの際に、データを圧縮することで生産性が向上する場合にのみ、このパラメータをCOMPRESSに設定します。このパラメータをCOMPRESS ALLに設定すると、表に対するすべてのDML操作でデータが圧縮されます。

ロギング・モード: DMLアクションをREDOログ・ファイルに記録するかどうかを指定します。パフォーマンスを向上させるには、このパラメータをNOLOGGINGに設定します。デフォルトはLOGGINGです。

エラー表

- エラー表名: ロード操作で表にロードされなかった行を格納するエラー表の名前を指定します。

- 表領域: エラー表を格納する表領域の名前を指定します。

パラレル

- パラレル・アクセス・モード: 表が作成済である場合にパラレル処理を可能にします。デフォルトはPARALLELです。

- 並列度: 並列度を指定します。これはパラレル操作で使用されるパラレル・スレッドの数です。

識別

- 配布可能: このマテリアライズド・ビューを配布するかどうかを指定するには、TRUEを選択します。Oracle Warehouse Builderでは、配布可能とマークされているマテリアライズド・ビューについてのみスクリプトが生成されます。

- エラー表のみ: マテリアライズド・ビューに関連付けられたエラー表にのみ生成アクションまたは配布アクションを実行するには、このオプションを選択します。このオプションは、エラー表を既存のマテリアライズド・ビューに追加する場合に使用します。この設定は、「配布可能」パラメータのアクションを制御しますが、パラメータの上書きはしません。
このオプションの選択を解除すると、マテリアライズド・ビューと一緒にエラー表が配布されます。

ハッシュ・パーティション・パラメータ

- ハッシュ・パーティション表領域リスト: パーティションまたはサブパーティションのデータを格納する表領域を指定します。複数の表領域を指定するには、カンマ区切りリストを使用します。

マテリアライズド・ビュー・ログ・パラメータ

次のマテリアライズド・ビュー・ログ・パラメータを構成できます。

主キーを記録: 変更されたすべての行の主キーをマテリアライズド・ビュー・ログに記録する場合は、PRIMARY KEYを選択します。

ROWIDを記録: 変更されたすべての行の行IDをマテリアライズド・ビュー・ログに記録する場合は、ROWIDを選択します。

順序を記録: 追加の順序情報を提供する順序値をマテリアライズド・ビュー・ログに記録する場合は、SEQUENCEを選択します。

順序番号は、一部の更新シナリオの後の高速リフレッシュをサポートするために必要です。

列: 変更されたすべての行についてマテリアライズド・ビュー・ログに値を記録する列を指定します。通常、これらの列はフィルタ列および結合列です。

マテリアライズド・ビュー・ログの生成: マテリアライズド・ビュー・ログ用のDDLを生成するには、「はい」を選択します。デフォルトは「はい」です。

新しい値: 新しい値と古い値の両方をログに保存するには、INCLUDINGを指定します。新しい値がログに保存されないようにするには、EXCLUDINGを指定します。デフォルトはEXCLUDINGです。

マテリアライズド・ビューの高速リフレッシュ

マテリアライズド・ビューを増分リフレッシュするよう構成できます。マテリアライズド・ビューの実表を更新すると、更新済レコード・ポインタがマテリアライズド・ビュー・ログに格納されます。ログ表内の変更内容は、関連付けられたマテリアライズド・ビューのリフレッシュに使用されます。

マテリアライズド・ビューを確実に増分リフレッシュするには、次の条件を確認します。

- 「リフレッシュ」パラメータがFastに設定されており、「実表」パラメータにすべての実表がリストされている必要があります。

- 各実表にPK制約が定義されている必要があります。Oracle Warehouse BuilderはPK制約に基づいてCREATE文を生成し、そのログを使用して、依存するマテリアライズド・ビューをリフレッシュします。

- マテリアライズド・ビューには、SYSDATE、ROWNUMおよび反復不可のPL/SQLファンクションなど、非反復式への参照を含めることはできません。

- マテリアライズド・ビューには、データ型RAWおよびLONG RAWへの参照を含めることはできません。

- 結合、集計および集合の文を含むマテリアライズド・ビューには、この他にも制限があります。その他の制限の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。

ビューの構成

Oracle Warehouse Builderでは、ターゲット・モジュールで定義されているビューごとにスクリプトが生成されます。次の各カテゴリにリストされているパラメータを構成できます。

識別

配布可能: このビューを配布するには、TRUEを設定します。

エラー表のみ: ビューに関連付けられたエラー表にのみ生成アクションまたは配布アクションを実行するには、このオプションを選択します。このオプションは、エラー表を既存のビューに追加する場合に使用します。この設定は、「配布可能」パラメータのアクションを制御するのみで、パラメータの上書きはしません。このオプションの選択を解除すると、ビューと一緒にエラー表が配布されます。

エラー表

エラー表名: ロード操作でビューにロードされなかった行を格納するエラー表の名前を指定します。

表領域: エラー表を格納する表領域の名前を指定します。

順序の構成

順序オブジェクトごとにスクリプトが生成されます。順序オブジェクトには、「開始」パラメータと「増分」パラメータがあります。どちらのパラメータも数値です。

順序の物理プロパティを構成する手順は、次のとおりです。

1. 順序の名前を右クリックし、「構成」を選択します。
その順序の「構成」タブが表示されます。

2. 次の「順序」パラメータを構成します。
増分: 順序を増加させる数。

開始: 順序の開始番号。

3. 次の「識別」パラメータを構成します。
配布可能: この順序を配布するよう指定するには、このオプションを選択します。Oracle Warehouse Builderでは、配布可能とマークされている順序についてのみスクリプトが生成されます。

アドバンスト・キューの構成

アドバンスト・キューを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. アドバンスト・キューが含まれているOracleモジュールを開き、キューノードを開いて、アドバンスト・キュー名を右クリックして「構成」を選択します。
アドバンスト・キューの構成パラメータを含む「構成」タブが表示されます。

3. 構成するパラメータを選択し、パラメータ名の右側の空白をクリックしてパラメータ値を編集します。
パラメータごとに、リストからオプションを選択するか、値を入力するか、または省略記号ボタンをクリックして別の「プロパティ」ダイアログ・ボックスを表示できます。

構成できるパラメータは次のとおりです。

デキューの有効化 アドバンスト・キューに対してデキューを有効にするには、このパラメータをtrueに設定します。

エンキューの有効化 アドバンスト・キューに対してエンキューを有効にするには、このパラメータをtrueに設定します。

最大再試行数 メッセージに対してデキューを試行できる回数を表します。max_retriesの最大値は2**31 -1です。

保持時間 メッセージがキューからデキューされた後でキュー表内に保持される秒数を表します。

再試行遅延時間 アプリケーションのロールバック後に、このメッセージの処理が再びスケジュールされるまでの遅延時間(秒数)を表します。このパラメータのデフォルト値は0で、可能になり次第メッセージを再試行できることを意味します。最大再試行数パラメータが0に設定されている場合、このパラメータには何の効果もありません。

キュー表の構成

キュー表を構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノードを開き、キュー表を含むOracleノードを開きます。

2. キューノードを開き、「キュー表」ノードを開きます。

3. 構成するキュー表の名前を右クリックして「構成」を選択します。
キュー表の構成パラメータを含む「構成」タブが表示されます。

4. 構成するパラメータを選択し、パラメータ名の右側の空白をクリックしてパラメータ値を編集します。
パラメータごとに、リストからオプションを選択するか、値を入力するか、または省略記号ボタンをクリックして別の「プロパティ」ダイアログ・ボックスを表示できます。

生成オプションノードには、キュー表の生成パラメータが含まれています。このアドバンスト・キューのメッセージを保持するキュー表を作成するコードを生成するには、このパラメータをTrueに設定します。データベース内にキュー表が存在する場合はキュー表を作成する必要はないため、「キュー表の生成」パラメータをFalseに設定できます。

キューの伝播の構成

キューの伝播を構成するには、次の手順に従います。

1. プロジェクト・ナビゲータで、「データベース」ノードを開き、キュー表を含むOracleノードを開きます。

2. キューノードを開き、キューの伝播が含まれているアドバンスト・キューを開きます。

3. 構成するキューの伝播の名前を右クリックして「構成」を選択します。
キューの伝播の構成パラメータを含む「構成」タブが表示されます。

4. 構成するパラメータを選択し、パラメータ名の右側の空白をクリックしてパラメータ値を編集します。
パラメータごとに、リストからオプションを選択するか、値を入力するか、または省略記号ボタンをクリックして別の「プロパティ」ダイアログ・ボックスを表示できます。

各構成パラメータについて、次の各項で説明します。

ルール条件: メッセージをサブスクライバに伝播できるかどうかをチェックするためのルール条件を表します。このパラメータは、非ストリーム・キューにのみ適用されます。

変換: ターゲット・キューへの伝播の前に適用される変換を表します。このパラメータは、非ストリーム・キューにのみ適用されます。

生成オプション

- データベース・リンクの生成: 伝播に使用されるデータベース・リンクを作成するスクリプトを生成するには、このパラメータをTrueに設定します。

- キューの伝播の生成: キューの伝播を作成するコードを生成するには、このパラメータをTrueに設定します。

- レプリケーション用のルールセットおよびルールの生成: レプリケーションを目的とするルールおよびルールセットのコードを生成するには、このパラメータをTrueに設定します。このパラメータは、ストリーム・キューにのみ適用されます。

- 伝播のスケジュールの生成: キューの伝播をスケジュールするコードを生成するには、このパラメータをTrueに設定します。このパラメータは、非ストリーム・キューにのみ適用されます。

レプリケーション・オプション(ストリーム・キュー専用)

- 許可されないタグ値: カンマで区切られた、伝播を許可されていないタグ値(16進数)のリストです。

- 許可されたタグ値: カンマで区切られた、伝播を許可されたタグ値(16進数)のリストです。

スケジュール・オプション

- 期間: 実行される伝播の期間を表します。デフォルト値はNULLです。このパラメータは、非ストリーム・キューにのみ適用されます。

- 待ち時間: キューの伝播の待ち時間を表します。デフォルトの値は60です。このパラメータは、非ストリーム・キューにのみ適用されます。

- 次回: 次にいつ伝播が実行されるかを表します。デフォルト値はNULLです。このパラメータは、非ストリーム・キューにのみ適用されます。

- 開始時間: 伝播の開始時間を表します。デフォルト値はSYSDATEです。このパラメータは、非ストリーム・キューにのみ適用されます。

Microsoft SQL ServerおよびIBM DB2 UDBでのリレーショナル・データ・オブジェクトの作成

Microsoft SQL ServeモジュールまたはIBM DB2モジュールを作成するときに、表、ビュー、順序などのデータ・オブジェクトをそのモジュール内に定義できます。表およびビューの定義には、エディタを使用します。

Microsoft SQL ServerモジュールまたはIBM DB2 UDBモジュール内に、表、ビューまたは順序を定義する手順は、次のとおりです。

1. データ・オブジェクトを作成するプロジェクト・ノードを開き、「データベース」ノードを開きます。

2. SQL Serverの場合は、SQL Serverモジュールのノードを開き、データ・オブジェクトを作成するモジュールを開きます。
IBM DB2 UDBの場合は、DB2モジュールのノードを開き、データ・オブジェクトを作成するモジュールを開きます。

3. 作成するオブジェクトのタイプを表しているノードを右クリックし、「新規<オブジェクトのタイプ>」を選択します。そのオブジェクトのエディタが表示されます。
たとえば、表を作成する場合は、「表」ノードを右クリックして、「新規表」を選択します。

4. 作成するオブジェクトのタイプに応じて、次のいずれかの項に記載されている手順に従ってください。

- 表定義の作成

- ビュー定義の作成

- 順序定義の作成

異種データベース用のオブジェクト・エディタの相違点

表、ビューおよび順序をSQL ServerモジュールまたはDB2モジュールに定義する場合には、次のような違いがあります。

- 表エディタおよびビュー・エディタに、「索引」タブと「パーティション」タブがありません。

- SQL ServerおよびDB2の表に対してサポートされている制約のタイプは、主キー、外部キー、チェック制約および一意キーです。

- 「列」タブで、「秒精度」フィールドを使用できません。

- 「列」タブの「データ型」リストには、使用できるデータ型が含まれます。固有のアクセスを使用した場合、「データ型」リストにはそのプラットフォームに固有のデータ型が含まれます。ゲートウェイを使用して異種データベースにアクセスした場合、「データ型」リストにはOracleのデータ型が含まれます。

- DB2の順序では、属性としてSTART_WITH、INCREMENT_BY、MINVALUE、MAXVALUE、CYCLEおよびCACHEを使用できます。

IBM DB2 UDBでのオブジェクトのネーミング規則

DB2からデータ・オブジェクトをインポートする場合、オブジェクト名の大文字と小文字の区別はそのまま保持されます。ただし、Oracle Warehouse Builderを使用して作成したオブジェクトはすべて、名前が自動的に大文字に変換されます。

DB2モジュールでは、オブジェクトのネーミングについて次の規則があります。

- オブジェクト名と列名は一意である必要があります。

- オブジェクト名の最大長は128文字です。

- 各列名の最大長は30文字です。

- 名前では、次の文字は不正です。`、*、+、|、[、]、:、;、"、'、&、<、>、?、/および空白。

- 名前を空白、数字または次のいずれかの文字で始めることはできません。_、`、&、*、+、|、[、]、:、;、"、'、<、>、?および/。

注意:
名前の中の引用符で囲んだ不正な文字は、オブジェクトをインポートする場合にのみ使用できます。不正な文字をOracle Warehouse Builderで使用することはできません。

Microsoft SQL Serverでのオブジェクトのネーミング規則

SQL Serverからデータ・オブジェクトをインポートする場合、オブジェクト名の大文字と小文字の区別はそのまま保持されます。ただし、Oracle Warehouse Builderを使用して作成したオブジェクトはすべて、名前が自動的に大文字に変換されます。

Microsoft SQL Serverでは、オブジェクトのネーミングについて次の規則があります。

- オブジェクト名と列名は一意である必要があります。

- オブジェクト名の最大長は128文字です。

- 名前では、次の文字は不正です。~、`、!、%、^、&、;、*、(、)、{、}、[、]、|、\、:、"、/、?、>および<。

- 空白、ピリオドまたは数学記号を名前に含めることはできません。

- 名前を空白または次のいずれかの文字で始めることはできません。~、`、!、%、^、&、*、(、)、{、}、[、]、|、\、:、;、"、'、/、?、<、>および$。

- 列名を数学記号またはピリオドで始めることはできません。

注意:
名前の中の引用符で囲んだ不正な文字は、オブジェクトをインポートする場合にのみ使用できます。不正な文字をOracle Warehouse Builderで使用することはできません。

3 ディメンション・オブジェクトの定義

Oracle Warehouse Builderでは、ディメンション・オブジェクトを定義、配布およびロードできます。ディメンション・オブジェクトの配布先は、リレーショナル・スキーマまたはデータベース内のアナリティック・ワークスペースです。

この章の内容は次のとおりです。

- ディメンション・オブジェクトの概要

- ディメンション・オブジェクトの実装の概要

- 「ディメンションの作成」

- 「緩やかに変化するディメンションの作成」

- ディメンション定義の編集

- ディメンションの構成

- 「キューブの作成」

- キューブ定義の編集

- キューブの構成

- 「時間ディメンションの作成」

- 時間ディメンションの移入

ディメンション・オブジェクトの概要

データを識別および分類するための追加のメタデータが含まれるオブジェクトを、ディメンション・オブジェクトと呼びます。Oracle Warehouse Builderでは、ディメンションとキューブという2つのタイプのディメンション・オブジェクトを設計、配布およびロードできます。この章では、ディメンションとキューブの両方をディメンション・オブジェクトという語で表します。ほとんどの分析問合せで時間ディメンションを使用する必要があります。Oracle Warehouse Builderには、簡単な質問に答えることで時間ディメンションを容易に作成し、移入できるツールが用意されています。

ディメンション・オブジェクトを作成する手順

ディメンション・オブジェクトの作成は、次の上位タスクで構成されます。

1. ディメンション・オブジェクトの定義
ディメンション・オブジェクトを定義するときは、より構造化された形式でデータを格納できるように、論理的な関係を記述します。たとえば、ディメンションを定義するには、属性、レベルおよび階層を記述します。キューブを定義するには、そのメジャーとディメンションを定義します。

ウィザードまたはエディタを使用してディメンション・オブジェクトを定義できます。詳細は、次を参照してください。

- 「ディメンションの作成」

- 「緩やかに変化するディメンションの作成」

- 「キューブの作成」

- 「時間ディメンションの作成」

2. ディメンション・オブジェクトの実装
「ディメンション・オブジェクトの実装の概要」を参照してください。

3. ディメンション・オブジェクトの配布

関連項目:

- 「ディメンション・オブジェクトの配布について」

- 「オブジェクトを配布」

4. ディメンション・オブジェクトのロード
データをディメンション・オブジェクトにロードするには、データ・フローを定義して、ソース・オブジェクトからディメンション・オブジェクトに変換するマッピングを作成します。次に、このマッピングを配布して実行します。

関連項目:

- 「ETLマッピングでのディメンションの使用」

- 「ETLマッピングでのキューブの使用」

ディメンションの概要

ディメンションは、データを編成する構造です。一般的に使用されるディメンションの例には、顧客、時間および製品があります。

リレーショナル・ディメンションの場合は、ディメンションの使用によって、問合せパフォーマンスが向上します。これは、ユーザーが既知の階層をドリルダウンしてデータを分析することがよくあるためです。階層の例には、年、四半期、月、日という時間階層があります。データベースでは、詳細表ではなくマテリアライズド・ビューからデータを取り出す問合せをリライトして、これらの定義済階層を使用します。

時間ディメンションは、一連のレベルとこれらのレベルに定義される一連の階層で構成されます。ディメンションを作成するには、次の内容を定義する必要があります。

- ディメンション属性

- レベル

- レベル属性
レベルについてのサロゲート識別子およびビジネス識別子を含みます。

- 階層

関連項目:
ディメンション属性、レベル、レベル属性および階層の定義の詳細は、『Oracle Warehouse Builder概要』を参照してください。

サロゲート識別子の概要

サロゲート識別子は、ディメンションのすべてのレベルにまたがって、各レベルのレコードを一意に識別します。この識別子は、単一の属性で構成する必要があります。サロゲート識別子を使用すると、ファクトを最下位ディメンション・レベルのみでなく、どのディメンション・レベルにもフックできます。リレーショナル実装またはROLAP実装を使用しているディメンションの場合、サロゲート識別子のデータ型はNUMBERであることが必要です。

次のような場合はサロゲート・キーを使用する必要があります。

- ディメンションがタイプ2またはタイプ3 SCDの場合。この場合は、各ビジネス・キー値にロードされた複数のディメンション・レコードがあるため、レコードを追跡するための付加一意キーが必要になります。

- 複数のレベルを含むディメンションは、スター・スキーマを使用して実装されます。そのため、このようなディメンションを参照するキューブは、複数のディメンション・レベルを参照します。
サロゲート・キーを定義していない場合、ディメンション・テーブルにはリーフ・レベルのディメンション・レコードのみが保存され、親レベルの情報はリーフ・レベルの付加列に格納されます。ただし、この場合、上位レベルを参照する一意の方法はありません。

スターまたはスノーフレークで実装される任意のディメンションで、キューブによってリーフ・レベルのみが参照されるというタイプ1ディメンションに対するサロゲート・キーは必要ありません。複数の階層を持つディメンションは、リーフ・レベルがキューブに参照されるため、サロゲート・キーなしで機能します。

緩やかに変化するディメンションの概要

緩やかに変化するディメンション(SCD)は、現行データと履歴データの両方を一定期間にわたってデータ・ウェアハウスで保存および管理するディメンションです。データ・ウェアハウスでは、一般に認知されている3種類のSCDタイプがあります。表3-1にSCDのタイプを示します。

表3-1 緩やかに変化するディメンションのタイプ

タイプ

説明

タイプ1

単一バージョンのディメンション・レコードのみを格納します。変更時に、レコードは上書きされ、履歴データは保存されません。

タイプ2

同じディメンション・レコードの複数のバージョンを格納します。ディメンションレコードが変更されると、古いバージョンは保持され、新規バージョンが作成されます。

タイプ3

単一バージョンのディメンション・レコードを格納します。このレコードには、選択した属性について元の値と現行値が保存されます。

タイプ2 SCDおよびタイプ3 SCDを使用して、現行データと履歴データの両方を一定期間にわたってデータ・ウェアハウスで保存および管理します。ディメンションといわれる、タイプ1ディメンションは履歴データを保持しません。

穏やかに変化するディメンション(SCD)の追加属性

タイプ2またはタイプ3のSCDを作成するには、通常のディメンション属性に加え、次のロールを実行する追加属性が必要です。

- トリガー属性: これらは履歴値を格納する必要がある属性です。たとえば、PRODUCTSディメンションでは、Productレベルの属性PACKAGE_TYPEをトリガー属性にできます。属性の値を変更する場合、古い値を格納する必要があります。

- 有効日: この属性には、レコードの有効期間の開始日を格納します。

- 有効期限: この属性には、レコードの有効期間の終了日を格納します。

- 前の属性: タイプ3 SCDのみについては、この属性には前のバージョニング対象の値を格納します。

属性は前述のいずれか1つの役割のみを担当できます。たとえば、1つの属性が通常の属性と有効日属性の両方にはなりません。ウィザードを使用してタイプ2またはタイプ3のSCDを作成する場合は、必要な追加属性が作成されます。

タイプ2の緩やかに変化するディメンションの定義の概要

タイプ2 SCDには、値の完全な履歴が保持されます。トリガー属性の値が変更されると、カレント・レコードはクローズされます。変更されたデータ値で新しいレコードが作成され、この新しいレコードがカレント・レコードになります。各レコードには、レコードがアクティブであった期間を識別する有効日と有効期限があります。NULL以外の特定の日付値を有効期限として設定することもできます。カレント・レコードは、有効期限がNULL値または以前に指定した値のレコードです。

ディメンション内のすべてのレベルに履歴データを格納する必要がありません。通常は、最下位レベルのみがバージョン管理されます。

タイプ2の緩やかに変化するディメンション(SCD)を定義するには、次の内容を指定する必要があります。

- 履歴データを格納するレベルに対して、有効日と有効期限として使用する属性を指定します。

- 履歴のバージョンの作成をトリガーするレベル属性を選択します。
サロゲート識別子、有効日属性または有効期限属性は、トリガー属性として選択できません。

レコードの各バージョンに異なるサロゲート識別子が割り当てられます。ビジネス識別子は、論理的な意味で異なるバージョンを接続します。通常は、ビジネス・ニーズがある場合にタイプ2のSCDが使用されます。

タイプ2のSCDの例

Customersのタイプ2のSCDに、HouseholdおよびCustomerという2つのレベルがあると想定します。Customerはリーフ・レベルで、Householdは非リーフ・レベルです。表3-2にCustomersのタイプ2のSCDのレベル属性がリストされています。

表3-2 Customersのタイプ2のディメンション属性

属性名

識別子

ID

サロゲート識別子

BUSN_ID

ビジネス識別子

ADDRESS

ZIP

MARITAL_STATUS

HOME_PHONE

EFFECTIVE_DATE

有効日

EXPIRATION_DATE

有効期限

世帯レベルでは、ID、BUSN_ID、ADDRESS、ZIP、EFFECTIVE_DATEおよびEXPIRATION_DATEという属性が実装されています。Customerレベルでは、ID、BUSN_ID、MARITAL_STATUS、HOME_PHONE、EFFECTIVE_DATE、EXPIRATION_DATEという属性が実装されています。Customers_tab表には、タイプ2のSCD Customersが実装されています(リレーショナル実装またはROLAP実装として)。表3-3は、Customers_tab表の列、およびディメンション・レベルと各列に実装されている属性の詳細を示しています。

表3-3 Customersタイプ2のSCDレベル属性を実装する列

Customers_tab表の列名

レベル名

ディメンション属性名

DIMENSION_KEY

H_ID

Household

ID

H_BUSN_ID

Household

BUSN_ID

H_ADDRESS

Household

ADDRESS

H_ZIP

Household

ZIP

H_EFFECTIVE_DATE

Household

EFFECTIVE_DATE

H_EXPIRATION_DATE

Household

EXPIRATION_DATE

C_ID

Customer

ID

C_BUSN_ID

Customer

BUSN_ID

C_MARITAL_STATUS

Customer

MARITAL_STATUS

C_HOME_PHONE

Customer

HOME_PHONE

C_EFFECTIVE_DATE

Customer

EFFECTIVE_DATE

C_EXPIRATION_DATE

Customer

EXPIRATION_DATE

Customersのタイプ2のSCDを作成する手順は、次のとおりです。

- HouseholdレベルのZIP属性およびCustomerレベルのMARITAL_STATUS属性をトリガー属性として指定します。

- 2つの追加属性を使用して、そのレベルのレコードの有効日と有効期限を格納します。ディメンションの作成ウィザードを使用すると、これらの追加属性は最下位レベルに対してのみ作成されます。ディメンション・エディタを使用する場合は、これらの属性を明示的に作成して、その属性を該当するレベルに適用する必要があります。

階層バージョニングの概要

タイプ2のSCDにおいて、ディメンションの非リーフ・レベルにバージョン管理する属性がある場合は、この非リーフ・レベルのバージョンは、結果的に、対応する子レコードのバージョンとなります(子レコードに有効日属性および有効期限属性がある場合)。「タイプ2のSCDの例」で説明されているようにCustomersタイプ2のSCDにおいて、たとえば、H_ZIPの値が特定のHouseholdレベル・レコードで更新された場合は、このHouseholdレベルに対応する子レコードは自動的にバージョン管理されます。

階層バージョニングは、タイプ2のSCDのデフォルトでは有効ではありません。ディメンションの作成ウィザードを使用してタイプ2のSCDを作成する場合は、階層バージョニングは無効になります。階層バージョニングを有効にするには、ディメンション・エディタを使用する必要があります。

階層バージョニングを有効にする手順

1. プロジェクト・ナビゲータでタイプ2 SCDを右クリックし、「開く」を選択します。
ディメンション・エディタが表示されます。

2. 「SCD」タブにナビゲートします。

3. 「タイプ2: 変更履歴をすべて格納」オプションの右側の「設定」をクリックします。
「タイプ2緩やかに変化するディメンション」ダイアログ・ボックスが表示されます。各レベルの属性が「レベル」ノードの下に表示されます。

4. 親属性が変更された場合にバージョン管理される必要のある子レベルでは、子レベルの親属性を表す属性に対して、「レコード履歴」列内の「トリガー履歴」を選択します。
たとえば、ディメンションの作成ウィザードを使用して、Customersのタイプ2のSCDを作成します。このタイプ2のSCDのエディタを開いて、「タイプ2緩やかに変化するディメンション」ダイアログ・ボックスにナビゲートします。CustomerレベルにはHOUSEHOLD_IDという属性があります。この属性は、各Customerレコードの親属性を表します。HOUSEHOLD_ID属性に対して、「レコード履歴」列の「トリガー履歴」を選択します。

タイプ3の緩やかに変化するディメンション(SCD)の定義の概要

タイプ3の緩やかに変化するディメンション(SCD)には、選択した特定のレベル属性の値について2つのバージョンが格納されます。各レコードには、バージョン管理された属性について元の値と現行の値が格納されます。バージョン管理されたいずれかの属性の値が変更されると、現行の値は古い値として格納され、新しい値が現行の値となります。各レコードには、現在の値がアクティブになった日付を識別する有効日が格納されます。これにより、バージョン管理された属性の列数は2倍になるため、タイプ3のSCDはほとんど使用されません。

タイプ3のSCDを定義する前に、次の内容を指定します。

1. 各レベルについて、バージョン管理する属性を指定します。つまり、元の値と現行の値を格納する属性を指定します。

2. バージョン管理する各属性について、元の値を格納する属性を指定します。
元の値を保持する属性には、次の制約があります。

- 元の値として指定された属性は、その値よりもさらに前の値は保持できません。

- サロゲート識別子は元の値を保持できません。

3. バージョン管理する各レベルについて、有効日を格納する属性を指定します。

タイプ3のSCDのビジネス識別子には、元の値の属性を指定しないことをお薦めします。

タイプ3のSCDの例

「ディメンションの例」に記載されているPRODUCTSディメンションは、タイプ3のSCDとして作成できます。ProductレベルのPACKAGE_TYPE属性とPACKAGE_SIZE属性をバージョン管理します。Productレベルで、元の値を格納するPREV_PACK_SIZEとPREV_PACK_TYPEという2つの追加属性を定義します。PACKAGE_TYPE属性の値が変更されると、この属性の現行の値がPREV_PACK_TYPE属性に格納され、新しい値がPACKAGE_TYPE属性に格納されることになります。有効日属性は、現在のシステム日付または他の指定した日に設定できます。

キューブの概要

キューブには、メジャーおよび1つ以上のディメンションへのリンクが含まれます。キューブの軸にはディメンション・メンバーが組み込まれ、キューブの本体にはメジャーの値が格納されます。ほとんどのメジャーは加法的なメジャーです。たとえば、売上データは、キューブ・エッジに時間、製品および販促のディメンション値が指定され、キューブ本体にバリュー売上とドル売上のメジャーから値が格納されるキューブに編成できます。

キューブは、外部キー制約によってディメンション表にリンクされます。これらの制約は、データ整合性が最も重要とされるデータ・ウェアハウス環境には不可欠です。この制約によって、データ・ウェアハウスを使用する日常業務での参照整合性が順守されます。

データ分析アプリケーションでは、通常、多くのディメンションにわたってデータが集計されます。これによって、データの変則的または特異なパターンを確認できます。キューブの使用は、この種の操作を実行する最も効率的な方法です。リレーショナル実装で、ウェアハウス・キーが設定されているディメンションを設計する場合、キューブの行の長さは一般的に短くなります。これは、ウェアハウス・キーの長さが対応する本来のデータより短いためです。その結果、キューブ・データに必要な記憶領域は少なくなります。MOLAP実装では、OLAPでVARCHAR2キーが使用されます。

一般的なキューブには、次の要素が含まれます。

- 一連の外部キー参照列、またはデータ・リストの場合は人工キーまたは一連のウェアハウス・キー列に定義された主キー。キューブがデータ・リストの場合、外部キー参照列ではキューブの各行は一意に識別されません。

- 表を対応するディメンションにリンクする一連の外部キー参照列。

キューブを作成するには、キューブ・メジャーとキューブのディメンションを定義する必要があります。メジャーとキューブのディメンションの詳細は、「Oracle Warehouse Builder概要」を参照してください。

ディメンション・オブジェクトのオーファン管理

Oracle Warehouse Builderのオーファン管理ポリシーでは、ディメンション・オブジェクト(ディメンションおよびキューブ)内の孤立レコードを管理できます。孤立レコードとは、対応する既存の親レコードがないレコードです。オーファン管理では、有効なディメンション・レコードまたはキューブ・レコードの形成に必要な要件に合致しないソース行処理のプロセスを自動化します。

孤立レコードは、次のような場合に発生します。

- ディメンション・オブジェクトにロードされるレコードに対応する親レコードがない。
1つまたは複数のレベル参照がNULLまたは存在しない場合に、ディメンション・レコードがオーファンとみなされます。1つまたは複数のディメンション・レコードで参照が存在しないかまたはNULLのどちらかである場合に、キューブ・レコードはオーファンとみなされます。

- レコードがディメンション・オブジェクトから削除される。この結果、既存の親を持たない、削除されたレコードの子レコードが発生します。

Oracle Warehouse Builderでは、ディメンション・オブジェクトのロードおよびディメンション・オブジェクト・データの削除について異なるオーファン管理ポリシーを指定できます。

注意:
オーファン管理は、MOLAPディメンションとMOLAPキューブではサポートされません。

ディメンション・オブジェクトにデータをロード中のオーファン管理

既存の親レコードを持たないレコードを挿入する場合、ディメンション・オブジェクトへのデータのロード中に、孤立レコードは作成されます。たとえば、「Geography」ディメンションの「City」レベルにデータをロードします。このレコードの「State」属性の値は、「State」レベルに存在しません。このレコードは、孤立レコードです。または、データを「SALES」キューブにロードしても、「Customers」ディメンションにおける「Customer ID」の値は存在しません。

Oracle Warehouse Builderを使用すると、孤立レコードをディメンション・オブジェクトにロードする際に使用する整合性ポリシーを指定できます。NULLの親レコードを持つレコードおよび無効な親レコード持つレコードについて別のアクションを指定できます。

ロードに設定できるオーファン管理ポリシーのオプションは次のとおりです。

- ロード拒否: ロードは挿入されません。

- デフォルトの親: デフォルトの親レコードを指定できます。このデフォルト・レコードは、既存の親レコードを持たないあらゆるレコードの親レコードとして使用されます。デフォルトの親レコードが存在しない場合、デフォルトの親レコードが追加されます。
ディメインション・オブジェクトを定義するときに、デフォルトの親レコードの属性値を指定できます。デフォルトの親の祖先が存在しない場合は、このレコードも作成されます。

- メンテナンスなし: デフォルトの動作です。孤立レコードの検出、拒否または修正は積極的に行われません。

関連項目:

- ディメンションに対するオーファン管理ポリシーの設定の詳細は、「「孤立」タブ」を参照してください。

- キューブに対するオーファン管理ポリシーの設定の詳細は、「「孤立」タブ」を参照してください。

ディメンション・オブジェクトからのデータの削除中のオーファン管理

削除されているレコードが対応する子レコードを持つ場合、データ削除中にオーファン・レコードが作成されます。たとえば、「Geography」ディメンションの「State」レベルでレコードを削除するとします。「state」は、これを参照する「city」レコードを持ちます。削除された「state」レコードを参照するすべての「city」レコードは、孤立レコードとなります。

ディメンションからデータを削除する際に、オーファン管理ポリシーを1つ選択できます。

- 削除拒否: 既存の子レコードを持つ場合、レコードの削除は許可されません。

- メンテナンスなし: デフォルトの動作です。孤立レコードの検出、拒否または修正は積極的に行われません。

エラー表

エラー表には、ディメンション上でロードまたは削除の操作中に、オーファン管理においてエラーとして検出されるあらゆるレコードが格納されます。ディメンション・エディタの「孤立」タブ上の「エラー表の配布」オプションを選択する場合、最初にディメンションを配布するときにエラー表は作成されます。

エラー表に表示されるレコードは次のとおりです。

- ロード操作中に挿入されないレコード

- ロード操作中に親がデフォルト化されるレコード

- 削除操作中に削除できないレコード

各実装オブジェクトにつき1つのエラー表を作成します。たとえば、スノーフレーク・スキーマを使用してディメンションを実装する場合には、複数のエラー表が作成されます。スター・スキーマを使用してディメンションを実装する場合は、1つのエラー表が作成されます。エラー表の名前は、実装オブジェクトに接尾辞として_ERRを付けたものになります。実装表がCITYの場合、エラー表は、CITY_ERRとなります。

注意:
オーファン管理では、MOLAPディメンション・オブジェクトはサポートされないため、リレーショナル実装またはROLAP実装のみを持つディメンションおよびキューブに対するエラー表が作成されます。

ディメンション・オブジェクトの実装の概要

ディメンション・オブジェクトを実装するには、ディメンション・オブジェクトの物理構造を作成します。Oracle Warehouse Builderには、ディメンション・オブジェクトに対して次の実装が用意されています。

- ディメンション・オブジェクトのリレーショナル実装

- ディメンション・オブジェクトのROLAP実装

- ディメンション・オブジェクトのMOLAP実装

注意:
MOLAP実装を使用するには、OLAPオプションを有効にしたDatabase Enterprise Edition 10.1.0.4以上を使用する必要があります。

実装は、ディメンション・オブジェクトを作成するために使用されるウィザードの「記憶域」ページ、またはオブジェクト・エディタの「記憶域」タブを使用して設定されます。「配布オプション」構成パラメータを使用して、実装の配布オプションをさらに絞り込むことができます。このパラメータの設定の詳細は、「ディメンションの構成」および「キューブの構成」を参照してください。

ディメンション・オブジェクトのリレーショナル実装

リレーショナル実装を行うと、ディメンション・オブジェクトとそのデータがリレーショナル形式でデータベースに格納されます。ディメンション・オブジェクトのデータは実装オブジェクト(通常は表)に格納されます。ディメンション・オブジェクトに対して問合せを実行した場合、この表からデータが取得されます。Oracle Warehouse Builderにより、ディメンション・オブジェクトを作成するDDLスクリプトが作成されます。このスクリプトは、コントロール・センターを使用してデータベースに配布できます。リレーショナル・ディメンションの場合は、スター・スキーマ、スノーフレーク・スキーマまたは手動スキーマを使用して実装オブジェクトを格納することができます。

関連項目:
スター・スキーマおよびスノーフレーク・スキーマによるディメンション・データの格納形式の詳細は、『Oracle Warehouse Builder概要』を参照してください。

ウィザードを使用してディメンション・オブジェクトを定義すると、Oracle Warehouse Builderでは、ディメンション・オブジェクト・データを格納するデータベース表が作成されます。また、ディメンション・オブジェクトの属性と、ディメンション・オブジェクト・データを格納する表列を定義する実装表とのアソシエーションも定義されます。

エディタを使用してディメンション・オブジェクトを定義すると、Oracle Warehouse Builderで実装表を作成するか、独自の表とビューにディメンション・オブジェクト・データを格納するかを決定できます。Oracle Warehouse Builderで実装オブジェクトを作成する場合、ディメンション・オブジェクトに自動バインドを実行します。独自の実装表を使用してディメンション・オブジェクト・データを格納する場合は、手動バインドを実行します。

注意:
リレーショナル実装の場合、ディメンション・オブジェクトに格納されたデータを、データ・ビューアを使用して表示することはできません。ただし、ディメンション・オブジェクトの実装表に格納されたデータは、データ・ビューアを使用して表示できます。

バインド

バインドは、ディメンション・オブジェクトの属性を、そのデータが格納されている表またはビューの列に結合するプロセスです。バインドを実行するのは、リレーショナル実装またはROLAP実装を使用しているディメンション・オブジェクトに対してのみです。多次元オブジェクトについては、バインドは暗黙的であり、アナリティック・ワークスペースで解決されます。

ディメンションでは、レベル属性およびレベルの関係を実装オブジェクト内の列に接続します。キューブでは、メジャーおよびディメンション参照を実装表の列に接続します。

Oracle Warehouse Builderには、自動バインドと手動バインドという2通りのバインド方法があります。

バインドを実行する場合

- ウィザードを使用してディメンション・オブジェクトを作成する場合、オブジェクトはバインドされることになります。エディタを使用してディメンション・オブジェクトを変更する場合、それを配布する前にオブジェクトは再バインドされる必要があります。

- エディタを使用してディメンション・オブジェクトを作成する場合、配布前にディメンション・オブジェクトをその実装オブジェクトにバインドする必要があります。

- エディタを使用してディメンション・オブジェクトを変更する場合、ディメンション・オブジェクトを実装オブジェクトに再バインドする必要があります。

自動バインド

自動バインドでは、実装表が存在しない場合は、実装表の作成が参照されます。次に、ディメンション・オブジェクトの属性と関係が、ディメンション・オブジェクト・データを格納する列にバインドされます。ディメンションの場合、ディメンション・データの格納に使用される表の数は選択した格納オプションによって異なります。自動バインドは、ウィザードとエディタのどちらを使用しても実行できます。エディタを使用してディメンション・オブジェクトを作成する場合は、自動バインドと手動バインドの両方を実行できます。

自動バインドを実行する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、ディメンション・オブジェクトを右クリックして「開く」を選択します。
このディメンション・オブジェクトのエディタが表示されます。

2. 「物理的バインド」タブで、ディメンション・オブジェクトを表すノードを選択します。

3. 「ファイル」メニューから、「バインド」を選択します。
「バインド」オプションが有効でない場合は、ディメンション・オブジェクトによりリレーショナル実装またはROLAP実装が使用されているかどうかを検証します。このディメンションの場合は、「記憶域」タブの「実装」セクションで「手動」オプションが設定されていないことを確認します。

または、プロジェクト・ナビゲータのディメンション・オブジェクトを右クリックし、「バインド」を選択して自動バインドを実行できます。

手動バインド

手動バインドでは、ディメンション・オブジェクトの属性を、そのデータが格納されているデータベース列に明示的にバインドする必要があります。ディメンション・オブジェクトを既存の表またはビューにバインドする場合は、手動バインドを使用します。ディメンション・オブジェクトが特定の実装オブジェクトにバインドされている場合は(ディメンション・エディタの「物理的バインド」タブに表示されます)、ディメンション・オブジェクトをアンバインドしてから、手動バインドを実行します。ディメンション・オブジェクトのアンバインドの詳細は、「アンバインド」を参照してください。

ディメンション・オブジェクトの手動バインドを実行する手順は、次のとおりです。

1. ディメンション・オブジェクト・データの格納に使用する実装オブジェクト(表またはビュー)を作成します。
リレーショナルまたはROLAPディメンションの場合は、ディメンションのサロゲート識別子のロードに使用する順序を作成します。既存の順序を使用できます。

2. プロジェクト・ナビゲータで、ディメンションを右クリックして「開く」を選択します。
ディメンション・オブジェクトのエディタが表示されます。

3. 「物理的バインド」タブで、空白の領域を右クリックして「追加」、実装オブジェクトを表すオブジェクトのタイプの順に選択します。
「新規または既存の<オブジェクト>を追加」ダイアログ・ボックスが表示されます。たとえば、ディメンション・データが表に格納される場合、「物理的バインド」タブで空白の領域を右クリックして、「追加」、「表」の順に選択します。「新規または既存の表を追加」ダイアログ・ボックスが表示されます。

4. 「既存の<オブジェクト>を選択」オプションを選択し、選択ツリーに表示されるオブジェクトのリストからデータ・オブジェクトを選択します。

5. 「OK」をクリックします。
追加したオブジェクトを表すノードがキャンバスに表示されます。

6. ディメンションでは、ディメンション・データの格納に複数のデータ・オブジェクトが使用される場合は、各データの実装オブジェクトについてステップ3から5を実行します。

7. ディメンションでは、ディメンションの各レベル内の属性をそれらのデータを格納する列にマッピングします。また、レベルの関係をそれらのデータを格納するデータベース列にマッピングします。
キューブでは、メジャーおよびディメンション参照をキューブ・データを格納する列にマッピングします。

実装オブジェクト列にマッピングするには、ディメンションまたはキューブ属性の上でマウスを押したままドラッグし、属性値が格納されている列の上にドロップします。

たとえば、「ディメンションの例」で説明しているPRODUCTSディメンションでは、 PRODUCTSディメンションのGroupsレベル内のNAME属性は、PRODUCTS_TAB表のGROUP_NAME属性内に格納されています。NAME属性の上でマウスを押したままドラッグし、PRODUCTS_TAB表のGROUP_NAME属性の上にドロップします。

アンバインド

Oracle Warehouse Builderでは、ディメンション・オブジェクトのアンバインドも実行できます。アンバインドすると、ディメンション・オブジェクトと、そのデータが格納されている表の間の結合が削除されます。

現在の実装からディメンション・オブジェクトをアンバインドするには、プロジェクト・ナビゲータで「ディメンション・オブジェクト」を選択し、「ファイル」メニューから「アンバインド」を選択します。アンバインドすると、ディメンション・オブジェクトとその実装オブジェクトの間のバインドが削除されます。ただし、実装オブジェクトは変更されません。

ディメンション・オブジェクトのROLAP実装

ROLAP実装では、リレーショナル実装と同様に、ディメンション・オブジェクトとそのデータが、リレーショナル形式でデータベースに格納されます。また、ROLAP実装によって、OLAPカタログおけるCWM2メタデータ、またはOLAPキューブ・マテリアライズド・ビューのどちらかが作成されます。

この項ではROLAP実装の分類方法を説明します。

ROLAP実装

ディメンション・オブジェクトとそのデータはリレーショナル形式でデータベースに格納され、ディメンション・オブジェクトのCWM2メタデータはOLAPカタログに格納されます。これを実行することにより、ディメンション・オブジェクトをDiscoverer (for OLAP)から問い合せることができます。

MV実装によるROLAP

ディメンション・オブジェクトとそのデータはリレーショナル形式でデータベースに格納されます。また、キューブ編成されたマテリアライズド・ビューは、アナリティック・ワークスペースに作成されます。

注意:
Oracle Warehouse Builder 11g リリース2(11.2)では、MV実装されたROLAPについては、スター・スキーマ表のみがサポートされます。

OLAPカタログについて

OLAPカタログは、OracleデータベースのOLAPオプション用に提供されているメタデータ・リポジトリです。このメタデータでは、リレーショナル表に格納されるデータが記述されます。

Oracle Warehouse Builderを使用してディメンション・オブジェクトを配布するときは、ディメンション・オブジェクト・メタデータをOLAPカタログに格納するかどうかを指定できます。

OLAPメタデータは、アクティブ・カタログ・ビュー(名前がALL_CWM2_AWで始まるビュー)と呼ばれる一連のビューを介して動的に提示されます。

Oracle Database 10gでは、OLAPカタログのメタデータはOLAPツールおよびリレーショナル・スター・スキーマやスノーフレーク・スキーマに格納されたデータにアクセスするアプリケーションで使用されます。Discovererなどの外部アプリケーションではリレーショナル・データおよび多次元データに問合せを行うためにOLAPカタログが使用されます。アプリケーションでは、データがリレーショナル表にあるのかアナリティック・ワークスペースにあるのかを認識し、またはデータにアクセスするメカニズムを認識する必要があります。

OLAPカタログは、格納されているメタデータを使用して、リレーショナル表またはビューに格納されているデータにアクセスします。OLAPカタログによって、論理多次元オブジェクトが定義され、それらが物理データ・ソースにマッピングされます。論理オブジェクトはディメンションおよびキューブです。物理データ・ソースは、リレーショナル表またはビューの列です。

ディメンション・オブジェクトのMOLAP実装

MOLAP実装では、ディメンション・オブジェクト・データが、Oracle Database 10gまたはDatabase 11gのアナリティック・ワークスペースに格納されます。このアナリティック・ワークスペースは、データベースに格納されます。

AWを含むコンピュータのロケーションがDatabase 10gを使用する場合、アナリティック・ワークスペースからOLAP 10gが生成されます。ロケーションがDatabase 11gを使用した場合は、アナリティック・ワークスペースからOLAP 11gが生成されます。

アナリティック・ワークスペース

アナリティック・ワークスペースは、データを多次元形式で格納するOracleデータベース内のコンテナです。アナリティック・ワークスペースによって、OLAP処理に対する最適なサポートが実現します。アナリティック・ワークスペースには、ディメンションや変数など、様々なオブジェクトを格納できます。

アナリティック・ワークスペースは、リレーショナル・データベース表に格納されます。この表は、他の表と同様に、複数のディスク・ドライブにまたがってパーティション化できます。単一のスキーマ内に多数のアナリティック・ワークスペースを作成し、ユーザー間で共有できます。アナリティック・ワークスペースは特定のユーザーが所有し、他のユーザーにはそのアクセス権を付与できます。ディメンション・オブジェクトの名前は、所有者のスキーマ内で一意であることが必要です。アナリティック・ワークスペースの詳細は、Oracle OLAPユーザーズ・ガイド参照してください。

ディメンション・オブジェクトの配布オプション

データベース内のディメンション・オブジェクトをインスタンス化するには、ディメンション・オブジェクトを配布する必要があります。ディメンション・オブジェクトの実装タイプを指定するには、配布オプションを設定します。

Oracle Warehouse Builderでは、次のようなディメンションの配布オプションが提供されます。「すべて配布」、「データ・オブジェクトのみ配布」、カタログに配布および「集計の配布」。

すべて配布 リレーショナル実装またはROLAP実装の場合は、ディメンションがデータベースに配布され、CWM定義がOLAPカタログに配布されます。MV実装されたROLAPについては、ディメンションはデータベースに配布されて、キューブ編成されたマテリアライズド・ビューはアナリティック・ワークスペースに作成されます。MOLAP実装については、ディメンションはアナリティック・ワークスペースに配布されます。

データ・オブジェクトのみ配布 ディメンションのみをデータベースに配布します。このオプションは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみ選択できます。

カタログに配布 CWM定義をOLAPカタログにのみ配布します。このオプションを使用するのは、ディメンション・データのみを配布後にDiscoverer for OLAPなどのアプリケーションでそのデータにアクセスする場合にこのオプションを使用します。以前にデータ・オブジェクトのみを配布した場合は、このオプションを使用すると、再度データ・オブジェクトを配布せずにCWMカタログ定義を配布できます。

集計の配布 キューブ・メジャーに定義されている集計を配布します。このオプションは、キューブに対してのみ使用できます。

ディメンションの作成

ディメンションを作成するには、次の方法があります。

- ディメンションの作成ウィザードを使用したディメンションの作成
このウィザードでは、完全に機能するディメンション・オブジェクトをすばやく作成できます。ウィザードを使用すると、多数の設定が最も使用頻度の高い値にデフォルト設定されます。これらの設定は、後でディメンション・エディタを使用して変更できます。ディメンションのリレーショナル実装を選択した場合は、ワークスペースに実装表も作成されます。

ディメンション・ウィザードで使用されるデフォルトの詳細は、「ディメンションの作成ウィザードで使用されるデフォルト」を参照してください。

- ディメンション・エディタを使用したディメンションの作成
ディメンション・エディタでは、ディメンションの定義と実装のあらゆる側面を完全に制御できます。これにより、最大限の柔軟性が得られます。エディタを使用して初めからディメンションを作成する方法と、前に作成しておいたディメンションを編集する方法があります。

- 時間ディメンション・ウィザードの使用
時間ディメンション・ウィザードを使用すると、時間ディメンションを作成して移入できます。時間ディメンション・ウィザードの詳細は、「時間ディメンションの作成」を参照してください。

ディメンションの例

ディメンションの一例として、製品データの編成に使用するProductsディメンションを示します。表3-4に、PRODUCTSディメンションの各レベルと、ディメンション内の各レベルのサロゲート識別子とビジネス識別子をリストします。

表3-4 Productsディメンション・レベルの詳細

レベル

属性名

識別子

Total

ID

サロゲート

名前

ビジネス

説明

グループ

ID

サロゲート

名前

ビジネス

説明

Product

ID

サロゲート

UPC

ビジネス

名前

説明

パッケージ・タイプ

パッケージ・サイズ

PRODUCTSディメンションの階層は、次のとおりです。

階層1: Total> Groups > Product

ディメンションの作成ウィザードを使用したディメンションの作成

ディメンションの作成ウィザードを使用してディメンションを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。

2. 表を作成するディメンションを展開します。

3. 「ディメンション」ノードを右クリックし、「新規ディメンション」を選択します。
Oracle Warehouse Builderに、ディメンションの作成ウィザードのようこそページが表示されます。「次へ」をクリックして次に進みます。ウィザードに表示される指示に従って次の各ページを完了します。

- 名前と説明ページ

- 記憶域タイプ・ページ

- ディメンション属性ページ

- レベル・ページ

- レベル属性ページ

- (リレーショナル・ディメンションおよびROLAPディメンションのみ)緩やかに変化するディメンション・ページ

- 作成前の設定ページ

- ディメンション作成の進行状況ページ

- サマリー・ページ

名前と説明ページ

名前と説明ページを使用してディメンションを記述します。このページに次の情報を入力します。

- 名前: ディメンションの名前です。1つのモジュール内では、ディメンション名は一意である必要があります。

- 説明: ディメンションの説明(オプション)を入力できます。

記憶域タイプ・ページ

記憶域タイプ・ページを使用して、ディメンション用の記憶域のタイプを指定します。記憶域タイプにより、データベースにおけるディメンション・データの物理的な格納方法が決定されます。記憶域タイプについて選択できるオプションは次のとおりです。

- ROLAP: リレーショナル記憶域

- ROLAP: MVあり

- MOLAP: 多次元記憶域

記憶域タイプは、キューブ全体の最下位レベルに格納されるデータ量、および必要なリフレッシュ・レートに基づいて選択します。

ROLAP: リレーショナル記憶域 Oracle Warehouse Builderでは、ディメンション定義とそのデータがデータベースにリレーショナル形式で格納されます。このオプションを選択すると、リレーショナル実装またはROLAP実装を使用するディメンションを作成できます。

リレーショナル記憶域の方が望ましいのは、大量の詳細データを格納する場合、または大量のデータが頻繁にリフレッシュされる場合です。次のいずれかを実行する必要がある場合は、リレーショナル記憶域を使用してください。

- コール詳細レコード、販売時点(POS)レコード、および他のトランザクション指向データなどの詳細情報の格納。

- 短い間隔での大量のデータのリフレッシュ。

- 受注詳細リストなどの詳細レポートの作成。

- データ・モデルでの変更にさらに柔軟性を必要とする非定型問合せ。

通常、オペレーショナル・データ・ストアおよびエンタープライズ・データ・ウェアハウスは、リレーショナル記憶域を使用して実装されます。次に、このリレーショナル実装から多次元実装を導出し、様々な分析タイプを実行できます。

ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。

ディメンションに対してリレーショナル実装を選択すると、ディメンション・データの格納に使用する実装表が作成されます。ディメンションのデフォルト実装では、スター・スキーマが使用されます。ディメンションの全レベルのデータが単一のデータベース表に格納されます。

ROLAP: MVあり Oracle Warehouse Builderでは、ディメンション定義とそのデータがデータベースにリレーショナル形式で格納されます。また、キューブ編成されたMVは、アナリティック・ワークスペースに作成されます。このオプションを選択すると、リレーショナル実装を使用してサマリーをアナリティック・ワークスペースに格納するディメンションが作成されます。このオプションを使用することで、Oracle Database11gにキューブ編成されたMVに基づいてサマリーを管理できます。問合せのパフォーマンスは大幅に向上しますが、問合せを変更する必要があります。

MV実装によるROLAPを選択すると、

- ディメンション・データの格納に使用する実装表が作成されます。ディメンションのデフォルト実装では、スター・スキーマが使用されます。

- ディメンションはそれが属するモジュールと同じ名前を使用するアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースを格納する表領域は、ディメンション・メタデータを含む、スキーマ用のユーザー表領域として定義された表領域です。

MOLAP: 多次元記憶域 Oracle Warehouse Builderでは、ディメンション定義とディメンション・データがデータベースのアナリティック・ワークスペースに格納されます。このオプションを選択すると、MOLAP実装を使用するディメンションを作成できます。

多次元記憶域の方が望ましいのは、分析用の集計データを格納する場合です。通常、多次元記憶域の場合はデータを事前に計算および集計する必要があるため、リフレッシュ間隔はリレーショナル記憶域よりも長くなります。また、集計レベルが上位であるため、データ量は小さくなるのが普通です。次の操作を実行するには、多次元記憶域を使用します。

- 傾向分析、what-if分析、またはデータの予測および割当てなどの拡張分析。

- 一定の問合せパターンを持ち、適切に定義された一貫性のあるデータ・モデルを使用する定数分析。

MOLAP実装を選択すると、ディメンションはそれが属するモジュールと同じ名前を使用するアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースを格納する表領域は、ディメンション・メタデータを含む、スキーマ用のユーザー表領域として定義された表領域です。

注意:
ディメンションをOLAPカタログに配布する際の特定の制限については、「OLAPカタログへのディメンション配布の制限」を参照してください。

ディメンション属性ページ

ディメンション属性ページを使用してディメンション属性を定義します。1つのディメンション属性をディメンション内の1つ以上のレベルに適用できます。デフォルトでは、ディメンションごとにID、名前および説明の各属性が作成されます。ID属性は名前変更または削除できます。

ディメンション属性ごとに次の詳細を指定します。

- 名前: ディメンション属性の名前です。名前はそのディメンション内で一意である必要があります。

- 説明: ディメンション属性の説明(オプション)を入力します。

- 識別子: ディメンション属性のタイプを選択します。次のいずれかのオプションを選択します。
サロゲート: 属性がディメンションのサロゲート識別子であることを示します。ディメンションのサロゲート識別子の指定は、オプションです。

ビジネス: 属性がディメンションのビジネス識別子であることを示します。

親: 値ベース階層を作成できるのはディメンション・エディタを使用する場合のみのため、このオプションはディメンション・エディタの「属性」タブでのみ表示されます。値ベースの階層では、親の選択は属性の親値を格納する属性を示します。属性が通常のディメンション属性の場合は、このフィールドを空白のままにします。

注意:
ディメンションのMOLAP実装を選択した場合のみ、値ベースの階層を作成できます。

「識別子」リストに表示されるオプションは、ディメンションのタイプによって異なります。リレーショナル実装またはROLAP実装を使用してディメンションを作成すると、「サロゲート」オプションまたは「ビジネス」オプションのみが表示されます。MOLAPディメンションの場合は、「ビジネス」オプションおよび「親」オプションが表示されます。

- データ型: リストからディメンション属性のデータ型を選択します。

注意:
MOLAP実装では、BLOB、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH、RAW、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONEの各データ型はサポートされていません。

- 長さ: 文字データ型の場合、属性の長さを指定します。

- 精度: 数値データ型の場合、列に使用できる合計桁数を定義します。

- スケール: 数値データ型の場合、小数点以下の合計桁数を定義します。

- 秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。

- 記述子: 記述子のタイプを選択します。オプションは「簡単な説明」、「詳細な説明」、「開始日」、「終了日」、「期間」および「前回の期間」です。
MOLAP実装の場合は、記述子がきわめて重要です。たとえば、時系列分析を可能にするには、カスタム時間ディメンションに「期間」と「終了日」が必要です。

レベル・ページ

レベル・ページでは、ディメンションにおける集計レベルを定義します。ディメンションには、1つ以上のレベルが必要です。ただし、値ベース階層にはレベルがありません。値ベース階層を作成するにはディメンション・エディタを使用します。

レベル・ページに次の詳細を入力します。

- 名前: レベルの名前です。レベル名前はそのディメンション内で一意である必要があります。

- 説明: レベルの説明(オプション)を入力します。

親レベルが子レベルの上位に表示されるように、ディメンション内のレベルをリストします。レベルがこの順序で表示されるように、矢印キーを使用してレベルを移動します。

STANDARDという名前のデフォルト階層が作成されます。この階層には、レベル・ページでリストした順序でレベルが含まれます。各レベルの親キー参照の格納に使用される属性も作成されます。リレーショナル・ディメンションまたはROLAPディメンションの場合、サロゲート識別子用の属性とビジネス識別子用の属性の2つの属性が作成され、それぞれが各レベルの親レベルに対応します。MOLAPディメンションの場合、親レベルのビジネス識別子に対応する属性が各レベルに1つずつ作成されます。

たとえば、「製品」ディメンションに、「合計」、「グループ」、「製品」の各レベルが含まれているとします。2つのレベルの関係が、ディメンションの「製品」レベルおよび「グループ」レベルのそれぞれに作成されます。リレーショナルまたはROLAPディメンションについては、これらのレベルの関係は親レベルのサロゲート識別子を参照します。レベルの関係は、ディメンション・エディタの「物理的バインド」タブにのみ表示されます。

注意:
階層を追加作成するには、「階層」タブで説明するように、ディメンション・エディタの「階層」タブを使用します。

レベル属性ページ

レベル属性ページでは、各ディメンション・レベルのレベル属性を定義します。レベル属性を定義するには、レベルに適用するディメンション属性を選択します。ディメンション属性は、ディメンションの作成ウィザードのディメンション属性ページで定義されます。

レベル属性ページには、「レベル」および「レベル属性」という2つのセクションがあります。

レベル 「レベル」セクションには、ディメンションの作成ウィザードのレベル・ページで定義したレベルがすべてリストされます。このセクションでレベルを選択し、このレベルで実装するディメンション属性を指定します。レベル名をクリックしてレベルを選択します。

レベル属性 「レベル属性」セクションには、ディメンション属性ページで定義したディメンション属性がすべてリストされます。レベルごとに、そのレベルで実装するディメンション属性を選択します。ディメンション属性が1レベルで実装されるように指定するには、ディメンション属性に対して「適用可能」オプションを選択します。レベル属性名は、ディメンション属性名と異なってもかまいません。「レベル属性名」フィールドを使用して、レベル属性名を指定できます。

たとえば、ディメンション属性の「ID」、「名前」、および「予算」を「都道府県」レベルで実装するように指定する手順は、次のとおりです。

1. 「レベル」セクションで「都道府県」レベルを選択します。

2. 「レベル属性」セクションで、属性「ID」、「名前」、および「予算」に対して「適用可能」オプションを選択します。

デフォルトでは、次の設定が使用されます。

- 属性「ID」、「名前」およびは、すべてのレベルに適用できます。

- ディメンション内の最下位レベルにはすべてのディメンション属性を適用できます。

緩やかに変化するディメンション・ページ

緩やかに変化するディメンションの機能を使用するには、Oracle Warehouse BuilderのEnterprise ETLオプションが必要です。

緩やかに変化するディメンション・ページを使用すると、ディメンションで使用される、緩やかに変化するポリシーのタイプを定義できます。このページが表示されるのは、記憶域タイプ・ページで記憶域タイプとして「リレーショナル記憶域(ROLAP)」を選択した場合のみです。

緩やかに変化するディメンションの詳細は、「Oracle Warehouse Builder概要」を参照してください。

緩やかに変化するポリシーについて次のオプションを1つ選択します。

- タイプ1: 履歴を保存しない: これはデフォルトで選択されています。Oracle Warehouse Builderにより、履歴を格納しないディメンションが作成されます。これは通常のディメンションです。

- タイプ2: 変更履歴をすべて格納: このオプションを選択して、タイプ2の緩やかに変化するディメンションを作成します。Oracle Warehouse Builderでは、次の2つのディメンション属性が追加作成され、タイプ2のSCDの最下位レベルに適用できます。

- 有効日

- 有効期限

サロゲート識別子およびビジネス識別子を除き、タイプ2のSCDの最下位レベルの属性は、すべてトリガー属性として定義されます。

注意:
記憶域のタイプがMOLAPの場合、タイプ2またはタイプ3の緩やかに変化するディメンションを作成できません。

- タイプ3: 元の値のみ格納: このオプションを選択すると、タイプ3の緩やかに変化するディメンションが作成されます。サロゲートIDおよびビジネスIDを除き、最下位レベルでレベル属性はすべてバージョニングする必要があるとみなされます。バージョニングするレベル属性ごとに、以前の属性値を格納する属性が追加作成されます。

作成前の設定ページ

作成前の設定ページには、ディメンションの作成ウィザードの前のページで選択したオプションのサマリーが表示されます。これには、ディメンションに使用する属性、レベル、階層、記憶域タイプおよび緩やかに変化するポリシーが含まれます。Oracle Warehouse Builderでは、これらの設定を使用して、ディメンション定義とディメンションを実装するデータベース表が作成されます。また、ディメンション属性が属性データを格納する表列にバインドされます。

ディメンションの実装に進むには「次へ」をクリックします。前に選択したオプションを変更するには「戻る」をクリックします。

注意:
このページには、実装とオブジェクトのサマリーが表示されるため、慎重に確認してください。

ディメンション作成の進行状況ページ

ディメンション作成の進行状況ページには、作成前の設定ページで開始したディメンション実装の進行状況が表示されます。このページの「メッセージ・ログ」セクションには、ディメンション実装中に完了したタスクに関する情報が個別に表示されます。「次へ」をクリックして次に進みます。

サマリー・ページ

サマリー・ページには、ディメンションの作成ウィザードを使用して選択したオプションの簡潔なサマリーが表示されます。サマリー・ページを使用して、選択したオプションを確認します。ディメンションを作成するには「終了」をクリックします。完全に機能するディメンションを使用できるようになります。このディメンションは、プロジェクト・エクスプローラの「ディメンション」ノードの下に表示されます。

Oracle Warehouse Builderにより、ワークスペースで次のメタデータが作成されます。

- ディメンション・オブジェクト

- ディメンション・データを格納するオブジェクト
リレーショナル実装の場合、ディメンション・データを格納するデータベース表が作成されます。ディメンション内の属性は、Oracle Warehouse Builderにより、値の格納に使用されるデータベース列にバインドされます。

MOLAP実装の場合、ディメンション・データを格納するアナリティック・ワークスペースが作成されます。

- (リレーショナル・ディメンションおよびROLAPディメンションのみ)全ディメンション・レベルのサロゲート識別子の生成に使用されるデータベース順序

ワークスペースに作成されるのは、これらのオブジェクト自体ではなく、これらのオブジェクトの定義です。

ディメンションの配布 ターゲット・スキーマにディメンションを作成するには、ディメンションを配布する必要があります。ROLAPディメンションの場合は、ディメンションを配布する前に、順序と実装表を配布してください。れらのオブジェクトをすべて同時に配布することもできます。詳細は、「ディメンション・オブジェクトのROLAP実装」を参照してください。

注意:
ディメンションを削除しても、順序、データベース表またはアナリティック・ワークスペースなどの関連オブジェクトは削除されません。これらのオブジェクトは明示的に削除する必要があります。

ディメンションの作成ウィザードで使用されるデフォルト

ディメンションの作成ウィザードを使用してディメンションを作成する場合、ディメンションの作成に使用する属性の一部にはデフォルト値が設定されます。以降の各項で、使用されるデフォルトについて説明します。

記憶域

リレーショナル記憶域の場合は、デフォルトの実装方法としてスター・スキーマが使用されます。

多次元記憶域を選択すると、ディメンションはそれが定義されているモジュールと同じ名前のアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースが存在しない場合は、作成されます。アナリティック・ワークスペースは、モジュールを所有するスキーマのユーザー表領域に格納されます。

ディメンション属性

Oracle Warehouse Builderでは、表3-5に示すプロパティを使用してデフォルトのディメンション属性が作成されます。

表3-5 デフォルトのディメンション属性

ディメンション属性名

識別子

データ型

ID

サロゲート

NUMBER

名前

ビジネス

VARCHAR2

説明

VARCHAR2

さらに属性を追加できます。ディメンションを有効にするには、サロゲート識別子とビジネス識別子を定義する必要があります。

階層

Oracle Warehouse Builderでは、ディメンションの作成ウィザードのレベル・ページに表示されたレベルをすべて含んだSTANDARDというデフォルト階層が作成されます。この階層では、各レベルがレベル・ページに表示されるのと同じ順序で使用されます。

レベル属性

ディメンション内で定義されている各レベルに、「ID」、「名前」およびの各属性を適用できます。ディメンション内の最下位レベルにはすべてのディメンション属性を適用できます。最下位レベルとは、レベル・ページで最後に定義されているレベルです。

緩やかに変化するディメンション

タイプ2のSCDを作成すると、サロゲート識別子とビジネス識別子を除き、最下位レベルの属性がすべてバージョニング対象となります。各レコードの有効日と有効期限を格納するために、さらに2つの属性が作成されます。たとえば、「ディメンションの例」に示すProductsディメンションをタイプ2のSCDとして作成すると、属性UPC、Package_typeおよびPackage_sizeがバージョニング対象となります。Oracle Warehouse Builderでは、バージョニング対象レコードの有効日と有効期限を格納するために、EXPIRATION_DATEおよびEFFECTIVE_DATEというDATEデータ型の2つの属性が追加作成されます。

タイプ3のSCDの場合は、サロゲート識別子とプライマリ識別子を除き、最下位レベルでレベル属性がすべてバージョニング対象となります。各バージョニング対象属性の元の値を格納するために、属性が追加作成されます。さらに、有効日を格納するための属性も作成されます。たとえば、「ディメンションの例」に示すProductsディメンションをタイプ3のSCDとして作成すると、バージョニング対象属性の元の値を格納するために、PREV_DESCRIPTION、PREV_PACKAGE_TYPE、PREV_PACKAGE_SIZEおよびPREV_UPCという属性が追加作成されます。これらの属性のデータ型は、属性の現行値の格納に使用されるデータ型と同じです。また、バージョニング対象レコードの有効時間を格納するために、EFFECTIVE_TIME属性も作成されます。この属性にはDATEデータ型が使用されます。

オーファン管理ポリシー

リレーショナル・ディメンションおよびROLAPディメンションの場合、ディメンションへのデータのロードおよびディメンションからのデータの削除については「メンテナンスなし」がデフォルトのオーファン管理ポリシーのデフォルトです。

「孤立」タブ上の「エラー表の配布」オプションの選択は解除されます。

実装オブジェクト

ディメンションごとに、ディメンション・オブジェクトのみでなく特定の実装オブジェクトも作成されます。実装オブジェクトの数とタイプは、ディメンションの記憶域タイプに応じて異なります。

時間ディメンションの場合は、記憶域タイプに関係なく、時間ディメンションをロードするマップが作成されます。マップ名は、ディメンション名の後に_MAPを付けたものです。たとえば、TIMESという時間ディメンションをロードするマップの名前は必ずTIMES_MAPとなります。

ROLAP: リレーショナル記憶域

リレーショナル記憶域の場合は、次の実装オブジェクトが作成されます。

表: ディメンション・データを格納するために、ディメンションと同じ名前の表が作成されます。ディメンション・キー列に一意キーが作成されます。たとえば、CHANNELSというディメンションを定義すると、ディメンション・データの格納用にCHANNELS_TABという表が作成されます。また、ディメンション・キー列にCHANNELS_DIMENSION_KEY_PKという一意キーも作成されます。

順序: リレーショナル記憶域を使用するディメンションの場合は、ディメンション・キー値をロードする順序が作成されます。たとえば、CHANNELSディメンションの場合はCHANNELS_SEQという順序が作成されます。

ROLAP: MVあり

MV実装によるROLAPの場合、「ROLAP: リレーショナル記憶域」の説明に従って、サロゲート識別子をロードする実装表と順序が作成されます。また、ディメンションを含むモジュールと同じ名前のアナリティック・ワークスペースが作成されます。

MOLAP: 多次元記憶域

多次元記憶域の場合は、ディメンションを含むモジュールと同じ名前のアナリティック・ワークスペースが存在しなければ、作成されます。たとえば、SALES_WHモジュールにPRODUCTSというディメンションを作成すると、そのディメンションはSALES_WHというアナリティック・ワークスペースに格納されます。この名前のアナリティック・ワークスペースが存在しなければ、このアナリティック・ワークスペースが作成されてからディメンションが格納されます。

ディメンション・エディタを使用したディメンションの作成

ディメンション・エディタを使用すると、上級ユーザーは要件に従ってディメンションを作成できます。ディメンション・エディタはディメンションの編集にも使用できます。

次のいずれかを実行する場合は、ディメンション・エディタを使用してディメンションを作成します。

- スノーフレーク実装方法の使用

- 値ベース階層の作成

- ディメンション・ロールの作成

- 階層内のレベルのスキップ

- 既存のデータベース表またはビューを使用してディメンション・データを格納します。これは手動バインドとみなされます。

- オーファン管理ポリシーを指定します。

- ディメンション内の複数の階層の作成

ディメンション・エディタを使用してディメンションを定義する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。

2. ディメンションを作成するターゲット・モジュールを開きます。

3. 「ディレクトリ」を右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。

4. 「ウィザードを使用しないディメンション」を選択して、「OK」をクリックします。
Oracle Warehouse Builderにより、「ディメンションの作成」ダイアログ・ボックスが表示されます。

5. ディメンションの名前および説明(オプション)を指定して、「OK」をクリックします。
指定した名前と説明を含む「名前」タブを示すディメンション・エディタが表示されます。

ディメンションを定義するには、次のタブについての情報を入力します。

- 「名前」タブ

- 「記憶域」タブ

- 「属性」タブ

- 「レベル」タブ

- 「階層」タブ

- 「SCD」タブ

- 「孤立」タブ

- 「物理的バインド」タブ

注意:
ディメンション・エディタを使用してリレーショナル実装を持つディメンションを作成する場合、ディメンション・データを格納する物理構造は自動的に作成されません。これらの構造を、手動かまたは「ファイル」メニューのバインド・オプションを使用して作成する必要があります。

6. リレーショナル実装またはMV実装によるROLAPを持つディメンションの場合は、ディメンションの属性を、そのデータを格納するデータベース列にバインドします。「「物理的バインド」タブ」を参照してください。

「名前」タブ

「名前」タブを使用してディメンションを記述します。また、このタブでディメンションのタイプとロールも指定します。

名前: フィールドはディメンション名を表します。モジュール内では、ディメンション名は一意である必要があります。フィールドを使用して、ディメンションの説明(オプション)を入力します。

ディメンション・ロール 「ディメンション・ロール」セクションを使用してディメンション・ロールを定義します。ディメンション・ロールごとに次の情報を定義します。

- 名前: ディメンション・ロール名を表します。

- 説明: ディメンション・ロールの説明(オプション)を指定します。

関連項目:
ディメンション・ロールの詳細は、『Oracle Warehouse Builder概要』を参照してください。

「記憶域」タブ

「記憶域」タブを使用して、ディメンション用の記憶域のタイプを指定します。選択可能な記憶域オプションの詳細は、以降の各項を参照してください。

ROLAP: リレーショナル記憶域 ディメンションとディメンション・データをデータベースにリレーショナル形式で格納するには、「リレーショナル」オプションを選択します。このオプションを使用すると、リレーショナル実装またはROLAP実装を使用するディメンションを作成できます。

リレーショナル記憶域の場合は、次のディメンション実装方法から1つ選択できます。

- スター・スキーマ: スター・スキーマを使用してディメンションを実装します。ディメンション・データは、1つのデータベース表またはビューに格納されます。

- スノーフレーク・スキーマ: スノーフレーク・スキーマを使用してディメンションを実装します。このディメンション・データは、複数のデータベース表またはビューに格納されます。

- 手動: ディメンションの属性を、そのデータを格納するデータベース・オブジェクトに明示的にバインドする必要があります。このオプションを選択した場合は、書き込みアクセスをディメンション・エディタの「物理的バインド」タブに割り当てると、自動バインド機能が無効になるため手動で作成したバインドを誤って削除することはありません。

自動バインドを実行する際には、これらの記憶域設定が自動バインドの実行に使用されます。

「複合一意キーの作成」をクリックして、全レベルのビジネス識別子の複合一意キーを作成します。たとえば、ディメンションが3レベルで構成される場合は、複合一意キーを作成すると、3レベルすべてのビジネス識別子を含む一意キーが1つ作成されます。複合一意キーの作成により、ディメンション・レコードがディメンション全体のデータベース・レベルで一意であることが規定されます。

ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、「ディメンションの配布方法の指定」の説明に従って、構成パラメータを設定して、このディメンションをOLAPカタログに配布することもできます。

ROLAP: キューブMVあり Oracle Warehouse Builderでは、ディメンション定義とそのデータがデータベースにリレーショナル形式で格納されます。また、アナリティック・ワークスペースの実装表に対するマテリアライズド・ビュー・サマリーが作成されます。このオプションを選択すると、ROLAP実装を使用してサマリーをアナリティック・ワークスペースに格納するディメンションが作成されます。

MV実装によるROLAPを選択すると、「MOLAP: 多次元記憶域」セクションの「AW名」フィールドを使用して、サマリー・データを格納するアナリティック・ワークスペースの名前を指定します。

「MOLAP: 多次元記憶域」ディメンションとディメンション・データをデータベースに多次元形式で格納するには、「MOLAP」オプションを選択します。このオプションを使用すると、MOLAP実装を使用するディメンションを作成できます。ディメンション・データはアナリティック・ワークスペースに格納されます。

次の各フィールドに値を入力します。

- AW名: ディメンション・データを格納するアナリティック・ワークスペースの名前を入力します。または、省略記号のボタンをクリックして、現行のプロジェクト内のMOLAPオブジェクトのリストを表示できます。プロジェクト内のモジュールごとに1ノードが表示されます。モジュールを開き、モジュール内のディメンション・オブジェクトのリストを表示します。リストからオブジェクトを選択すると、そのオブジェクトと同じアナリティック・ワークスペースにディメンションが格納されます。

- AW表領域名: アナリティック・ワークスペースが格納される表領域の名前を入力します。

複数の階層を持つディメンションの場合は、集計レベル(ベースよりも上のレベル)に同じソース列を使用できる場合があります。この場合、「アナリティック・ワークスペースでサロゲート・キーを生成」オプションを選択します。ロード操作中に、それぞれの値に接頭辞としてレベル名が追加されます。すべてのディメンション・メンバーが一意であることが確実な場合を除き、このオプションを選択することをお薦めします。

各ディメンション・メンバーがレベル間で一意であることが確実な場合は、ソースと同じ名前をアナリティック・ワークスペースで使用できます。たとえば、リレーショナル・スキーマで数値サロゲート・キーを使用して一意性を保証する場合、アナリティック・ワークスペースに新規サロゲート・キーを作成する必要はありません。「データ・ソースの自然キーを使用」オプションを選択すると、ソースと同じ自然キーをアナリティック・ワークスペースで使用できます。

注意:
ディメンションを編集して「記憶域タイプ」をROLAPからMOLAPに変更すると、サロゲート識別子のデータ型がVARCHAR2に変更されます。

「属性」タブ

「属性」タブを使用してディメンション属性を定義します。「属性」タブには「順序」および「ディメンション属性」という2つのセクションがあります。

順序 順序属性は、リレーショナル実装を持つディメンションの場合のみに必要です。「順序」フィールドを使用して、ディメンション・キー列に移入するデータベース順序の名前を指定します。このフィールドの右にある「選択」をクリックすると、「利用可能な順序」ダイアログ・ボックスが表示されます。このダイアログ・ボックスには、プロジェクトのモジュールごとにノードが1つ表示されます。モジュール・ノードを開いて、モジュールに含まれている順序を表示します。表示されたリストから順序を選択します。

ディメンション属性:  「ディメンション属性」セクションを使用して、ディメンション属性の詳細を定義します。詳細は、「ディメンション属性ページ」を参照してください。

「レベル」タブ

「レベル」タブを使用して、ディメンションの各レベルのレベル属性を定義します。また、このタブを使用すると値ベース階層も作成できます。

レベル属性を定義する前に、「ディメンション属性」タブでディメンション属性の定義を完了していることを確認します。レベルのレベル属性を定義するには、レベルで実装するディメンション属性を選択する必要があります。「レベル」タブには、「レベル」および「レベル属性」という2つのセクションがあります。

レベル 「レベル」セクションには、ディメンションのレベルが表示されます。レベルごとに次の詳細を入力します。

- 名前: ディメンション・レベル名を入力します。名前はそのディメンション内で一意である必要があります。

- 説明: レベルの説明(オプション)を入力します。

レベル属性 「レベル属性」セクションには、「属性」タブで定義したディメンション属性がすべて表示されます。このセクションで指定した値は、「レベル」セクションで選択したレベルに適用可能です。「レベル属性」セクションの内容は、次のとおりです。

- ディメンション属性名: ディメンション属性名を表します。

- 適用可能: 「レベル」セクションで選択したレベルでこのディメンション属性を実装する場合は、「適用可能」オプションを選択します。

- レベル属性名: レベル属性名を表します。このフィールドを使用し、レベル属性名としてディメンション属性名とは異なる名前を指定します。このフィールドはオプションです。名前を指定しなければ、レベル属性名はディメンション属性名と同じになります。

- 説明: レベル属性の説明(オプション)を指定します。

- デフォルト値: 指定の属性のデフォルト値(デフォルト値がない場合は空白)。

たとえば、「グループ」レベルでディメンション属性「ID」、「名前」およびを実装するように指定します。

- 「レベル」セクションで「グループ」レベルを選択します。

- 「レベル属性」セクションで、属性「ID」、「名前」およびに対して「適用可能」オプションを選択します。

「階層」タブ

「階層」タブを使用して、ディメンション階層を作成します。「階層」タブには、「階層」および「レベル」という2つのセクションがあります。

階層 「階層」セクションを使用してディメンション内の階層を定義します。階層ごとに次を定義します。

- 階層: 階層名を表します。新規階層を作成するには、このフィールドに階層名を入力します。

- 値ベース: 値ベース階層を作成するには、このオプションを選択します。値ベース階層にはレベルがありません。親識別子として識別された属性が必要です。値ベース階層を作成できるのはMOLAPディメンションの場合のみのため、このオプションは「記憶域」タブで「MOLAP: 多次元データ構造」を選択した場合にのみ表示されます。

関連項目:
値ベース階層の詳細は、『Oracle Warehouse Builder概要』を参照してください。

- 説明: 階層の説明(オプション)を入力します。

- デフォルト: ディメンションのデフォルト階層の場合は、「デフォルト」オプションを選択します。ディメンションに複数の階層がある場合、問合せツールではデフォルト階層が表示されます。最も使用頻度の高い階層をデフォルト階層として設定することをお薦めします。

階層を削除するには、「階層」フィールドの左にあるセルを右クリックして「削除」を選択します。または、「階層」フィールドの左にあるセルをクリックして階層を選択し、「削除」ボタンを押す方法もあります。

階層の作成時には、レベルごとに親レベルの参照を格納する属性を作成してください。リレーショナル・ディメンションまたはROLAPディメンションの場合は、各レベルのサロゲート識別子参照とビジネス識別子参照を格納するために属性を2つ作成します。MOLAPディメンションの場合は、レベルごとに親レベルのビジネス識別子への参照を格納するために属性を1つ作成します。

レベル 「レベル」セクションには、ディメンション・エディタのレベル・タブで定義したレベルがすべてリストされます。このセクションを使用して、各階層で使用するレベルを指定します。「レベル」セクションの内容は、次のとおりです。

- レベル: レベル属性名を表します。リストをクリックすると、ディメンションに定義されているレベルがすべて表示されます。

- スキップ先レベル: 「レベル」フィールドが示すレベルの親レベルを表します。このフィールドを使用してスキップ・レベル階層を定義します。
たとえば、Productsディメンションには次の階層が含まれています。

TOTAL > PRODUCT

この階層には、「グループ」レベルはありません。そのため、「PRODUCT」レベルは「グループ」レベルをスキップし、親として「TOTAL」レベルを使用する必要があります。この階層を作成するには、「レベル」フィールドで「PRODUCT」レベルを選択し、「スキップ先レベル」リストから「TOTAL」を選択します。

- サマリー・レベル: サマリーをアナリティック・ワークスペースにロードするために使用するディメンション・レベルを表します。「記憶域」タブで「ROLAP: キューブMVあり」を選択する場合にかぎり、このオプションが表示されます。

「レベル」セクションの左にある矢印を使用して、セクション内の各レベルの表示順序を変更します。

「SCD」タブ

このタブを使用して、ディメンションで実装する穏やかな変化方針のタイプを指定します。緩やかに変化するディメンションを作成できるのは、リレーショナル実装を使用するディメンションの場合のみのため、このタブのオプションは「記憶域」タブで「ROLAP: リレーショナル記憶域」または「ROLAP: キューブMVあり」を選択した場合にのみ有効化されます。

注意:
「記憶域」タブでMOLAP実装を選択した場合、このタブのオプションは無効化されます。

穏やかな変化方針について選択できるオプションは、次のとおりです。

- タイプ1: 履歴を保存しない: 履歴を格納しない標準ディメンションを作成します。

- タイプ2: 変更履歴をすべて格納: タイプ2のSCDを作成するには、このオプションを選択します。「設定」をクリックし、「ディメンション・エディタを使用したタイプ2緩やかに変化するディメンションの作成」の説明に従って、レベルごとにトリガー属性、有効日および有効期限などの詳細を追加指定します。

- タイプ3: 元の値のみ格納: タイプ3のSCDを作成するには、このオプションを選択します。「設定」をクリックし、「ディメンション・エディタを使用したタイプ3緩やかに変化するディメンションの作成」の説明に従って、有効日やバージョニング対象属性の元の値の格納に使用する属性などの詳細を追加指定します。

注意:
記憶域のタイプにMOLAPを指定した場合、タイプ2またはタイプ3の緩やかに変化するディメンションを作成できません。

ディメンション・エディタを使用してタイプ2またはタイプ3のSCDを作成する場合は、有効日と有効期限を格納するディメンション属性を作成し、必要なレベルに適用する必要があります。

「孤立」タブ

「孤立」タブでは、データをディメンションへロード中、またはデータをディメンションから削除中に、オーファン管理ポリシーを定義します。このタブには、「削除のための孤立管理」および「ロードのための孤立管理」の2つのセクションが含まれます。

ロードのための孤立管理 このセクションを使用して、データをディメンションにロードする際のオーファン管理ポリシーを指定します。NULLの親レコードを持つレコードおよび無効な親レコード持つレコードについて、別のオーファン管理ポリシーを指定できます。ヘッダーのNULLの親キー値のオプションを使用して、NULL親を持つレコードについてのオーファン管理ポリシーを指定します。ヘッダーの無効な親キー値のオプションを使用して、無効な親レコードを持つレコードについてのオーファン管理ポリシーを指定します。

NULLな親を持つレコードおよび無効な親を持つレコードについて、次のオーファン管理ポリシーを1つ選択します。

- メンテナンスなし: オーファン行を積極的に検出、拒否または修正することはありません。

- デフォルトの親: データのロード時に既存の親の行を持たないすべての行にデフォルトの親の行が割り当てられます。デフォルトの親の行を定義するには、「設定」ボタンを使用します。デフォルトの親の行の割当て方法は、「オーファン行についてのデフォルトの親の指定」を参照してください。

- 孤立拒否: 既存の親の行を持たない場合、行は挿入されません。

削除のための孤立管理 このセクションを使用して、データをディメンションから削除する際のオーファン管理ポリシーを指定します。次のいずれかのオプションを選択します。

- メンテナンスなし: オーファン行を積極的に検出、拒否または修正することはありません。

- 削除拒否: 既存の子の行を持つ場合、行は削除されません。

配布オプション

「エラー表の配布」を選択して、オーファン管理に関するエラー表を生成し、ディメンションを使用して配布します。

オーファン行についてのデフォルトの親の指定

「デフォルトの親」ダイアログを使用して、オーファン行のデフォルトの親レコードを指定します。すべてのディメンション・レベルについて、デフォルトの親のレコードを指定できます。

「デフォルトの親」ダイアログには、各ディメンション・レベルの行が含まれ、次の4つの列を含む表が表示されます。

- レベル: 「レベル」列には、ディメンションの各レベルのノードが表示されます。レベル・ノードを展開して、レベルのすべての属性を表示します。

- 識別属性: レベル属性名を表します。

- データ型: 属性のデータ型を表示します。

- デフォルト値: 指定の属性のデフォルト値(デフォルト値がない場合は空白)。

「物理的バインド」タブ

「物理的バインド」タブを使用して、ディメンションを実装オブジェクトにバインドします。バインドとは、ディメンションの各属性およびレベル関係のデータを格納するデータベース列を指定するプロセスです。ディメンションの作成ウィザードを使用してディメンションを作成する場合、バインドは自動的に実行されます。エディタを使用してディメンションを作成する場合、ディメンション・データを格納するデータベース表またはビューの詳細を指定する必要があります。

次のオプションを1つ選択して、データを格納するデータベースの列にディメンション属性をバインドします。

- 自動バインド

- 手動バインド

自動バインド 自動バインドを実行すると、Oracle Warehouse Builderにより、ディメンション内の属性がそのデータを格納するデータベース列にマップされます。自動バインドを初めて実行する場合は、ディメンション・データの格納に使用される表も作成されます。

自動バインドを実行するには、プロジェクト・ナビゲータまたは「物理的バインド」タブでディメンションを選択します。「ファイル」メニューから、「バインド」を選択します。または、プロジェクト・ナビゲータで、ディメンション・オブジェクトを右クリックして「バインド」を選択します。自動バインド・ルールの詳細は、「自動バインド」を参照してください。

バインドされているディメンションに対して自動バインドを実行する場合は、次のルールが使用されます。

- ディメンションの実装方法が同じ場合、ディメンション・オブジェクトは既存の実装オブジェクトに再バインドされます。実装方法はスターまたはスノーフレークを使用できます。
たとえば、スター・スキーマ実装方法を使用してProductsディメンションを作成し、自動バインドを実行したとします。ディメンション・データはProductsと呼ばれる表に格納されます。後日、ディメンション定義を変更しましたが、実装方法はスターのままです。この状況でProductsディメンションを自動バインドすると、Productsディメンションの属性は同じ実装表に再バインドされます。

- ディメンションの実装方法を変更すると、古い実装オブジェクトが削除され、一連の新しい実装表が作成されます。古い実装オブジェクトを保持するには、自動バインドを実行する前に、ディメンション・オブジェクトをアンバインドする必要があります。
たとえば、Productsディメンションを作成して、スター・スキーマ実装方法を使用して実装表にバインドするとします。その後、このディメンションを編集し、実装方法をスノーフレークに変更しました。変更したProductsディメンションの自動バインドを実行すると、ディメンション・データが格納されていた表は削除され、新しい実装表が作成されて、ディメンション属性および関係が新しい実装表にバインドされます。

手動バインド 手動バインドの場合は、ディメンションの各レベルの属性を、そのデータを格納するデータベース列に明示的にバインドする必要があります。既存の表にバインドする方法と、新規表を作成してその表にバインドする方法があります。通常は、手動バインドを使用して既存の表をディメンションにバインドします。自動バインドまたは再バインドが不要な場合は、手動バインドを使用します。

ディメンションがサロゲート・キーなしで定義されている場合、ディメンション・キー属性はバインドしないままにする必要があります。

手動バインドを実行する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、ディメンションを右クリックして「開く」を選択します。
このディメンションのエディタが表示されます。

2. 「物理的バインド」タブで、空白の領域を右クリックして「追加」、実装オブジェクトを格納するデータベース・オブジェクトのタイプの順に選択します。
たとえば、ディメンション・データが表に格納される場合、「物理的バインド」タブで空白の領域を右クリックして、「追加」、「表」の順に選択します。「新規または既存の表を追加」ダイアログ・ボックスが表示されます。ディメンション・データを格納するには、既存の表を選択するか、新規の表を作成する必要があります。

3. ディメンション・データの格納に使用するデータベース・オブジェクトの数だけ手順2を繰り返します。たとえば、ディメンション・データが3つのデータベース表に格納される場合は、手順2を3回繰り返します。

4. ディメンションの各属性を、そのデータを格納するデータベース列にバインドします。

ディメンションを定義してバインドを実行(ROLAPディメンションの場合のみ)した後、そのディメンションおよび関連オブジェクトを配布する必要があります。ディメンションの配布の詳細は、「ディメンションの配布」を参照してください。

OLAPカタログへのディメンション配布の制限

ROLAP実装を使用するディメンションの場合、基礎となる表のレポート時またはOLAPカタログへの配布時に、各種ディメンション構造に関連した影響や制限があります。ディメンションを正常に配布できても、Discovererなどの他のアプリケーションがOLAPカタログにアクセスするときにエラーが発生する可能性があります。

この制限の影響を受ける事項は次のとおりです。

- レポート作成ツールは、ユーザーが取得したディメンション・メタデータのあらゆる側面のメタデータを保持しているわけではありません。したがって、このメタデータを問合せ/レポートに取り込む必要があります。そうしないと、実装表にデータを移入する方法が原因で、不完全な情報が表示されます。
ディメンションおよびキューブの実装表には負のキー値を含む解決済の行が格納されます。この行は、問合せまたはレポートでフィルタできます。問合せまたはレポートを作成するときに、ディメンション自体ではなく、ディメンションに関連付けられたビューを使用します。ディメンションにはそれぞれビューが関連付けられています。ビュー名は、ディメンションまたはキューブの構成プロパティ「ビュー名」で指定します。

- スキップレベル階層と不規則階層のメタデータはOLAPカタログに配布されません。
スキップレベル階層または不規則階層が含まれたディメンションを作成した場合、それらのメタデータはOracle Warehouse Builderリポジトリに格納されますが、OLAPカタログには配布されません。

- 複数の階層を持つディメンションには、すべての階層にわたってすべてのディメンション属性をマッピングする必要があります。

制御行の使用

ファクト・データを各レベルのディメンションにリンクできるコントロール行が作成されます。たとえば、時間ディメンションを2つの異なるキューブで再利用して、予算データを月レベルで記録し、実際のデータを日レベルで記録する場合などです。ディメンションはコントロール行と一緒にロードされるため、追加定義をすることなくこれを実行できます。ディメンション階層の各メンバーは、単一のレコードを使用して表示されます。

ディメンションにデータをロードすると、制御行が作成されます。すべての制御行には-2から始まる負のディメンション・キー値があります。上位レベルのレベル値では行が生成され、ファクト表に対して一意でリンクする行として動作できます。このリンクの下位レベルまたは制御行は無効化されます。

「ディメンションの例」で説明されているProductsディメンションを考慮します。4つの製品カテゴリを含む表からデータをこのディメンションにロードします。Oracle Warehouse Builderは表3-6に示されるディメンションに制御行を挿入します。これらの行により、どのディメンション・レベルでもキューブにリンクできます。表にはすべてのディメンション属性値が含まれるわけではありません。

表3-6 Productsディメンションに作成された制御行

ディメンション・キー

合計名

カテゴリ名

製品名

-3

TOTAL

-9

TOTAL

ハードウェア

-10

TOTAL

ソフトウェア

-11

TOTAL

エレクトロニクス

-12

TOTAL

周辺機器

ディメンション内の行数の決定

ディメンション内の行の実数を取得するには、NULL行を除いたWHERE句を含む行の数を数えます。たとえば、「製品」上の数を取得するには、「製品」内のNULL行を除いたWHERE句を含む行の数を数えます。

緩やかに変化するディメンションの作成

SCDを作成するには、ディメンションの作成ウィザードを使用する方法とディメンション・エディタを使用する方法があります。

ディメンションの作成ウィザードを使用してSCDを作成するには、このウィザードの緩やかに変化するディメンション・ページを使用します。このページでは、作成するSCDのタイプのみを指定します。Oracle Warehouse Builderでは、他のすべての必須パラメータにデフォルト値が想定されます。緩やかに変化するディメンション・ページの詳細は、「緩やかに変化するディメンション・ページ」を参照してください。

注意:
タイプ1に追加ライセンスは不要です。ただし、タイプ2とタイプ3のSCDにはOracle Warehouse BuilderのEnterprise ETLオプションが必要です。

タイプ2またはタイプ3のSCDを作成するには、通常のディメンション属性に加え、次のロールを実行する追加属性が必要です。

トリガー属性

これらは履歴値を格納する必要がある属性です。たとえば、PRODUCTSディメンションでは、Productレベルの属性PACKAGE_TYPEをトリガー属性にできます。この属性の値を変更する場合、古い値を格納する必要があります。

有効日

この属性には、レコードの有効期間の開始日を格納します。

有効期限

この属性には、レコードの有効期間の終了日を格納します。

属性は前述のいずれか1つの役割のみを担当できます。たとえば、1つの属性が通常の属性と有効日属性の両方にはなりません。ウィザードを使用してタイプ2またはタイプ3のSCDを作成する場合は、必要な追加属性が作成されます。

ディメンション・エディタを使用したタイプ2緩やかに変化するディメンションの作成

タイプ2のSCDには、各属性とレベルの関係を表す値の全履歴が格納されます。

ディメンション・エディタを使用してタイプ2のSCDを作成するには、次の属性を定義します。

- 履歴保存をトリガーする属性

- 有効日と有効期限を格納する属性

注意:
タイプ2のSCDを作成できるのは、リレーショナル実装を持つディメンションの場合のみです。

ディメンション・エディタを使用してタイプ2のSCDを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。

2. タイプ2のSCDを作成するターゲット・モジュールを開きます。

3. 「ディメンション」を右クリックして「新規」→「ウィザードを使用しないディメンション」を選択します。

4. 「「名前」タブ」の説明に従って、ディメンション・エディタの「名前」タブに情報を入力します。

5. 「属性」タブで、有効日と有効期限を格納する2つの属性をレベルごとに追加作成します。属性の作成の詳細は、「属性タブ」を参照してください。

6. ディメンション・エディタの次のタブに情報を入力します。

- 「レベル」タブ

- 「階層」タブ

7. 「緩やかな変化」タブで、「タイプ2: 変更履歴をすべて格納」オプションを選択します。

8. このオプションの右にある「設定」をクリックします。
「タイプ2緩やかな変化方針」ダイアログ・ボックスが表示されます。「「タイプ2緩やかに変化するディメンション」ダイアログ・ボックス」の説明に従って、このダイアログ・ボックスでタイプ2のSCDの詳細を指定します。

9. ディメンション・エディタの「記憶域」タブに情報を入力します。

「タイプ2緩やかに変化するディメンション」ダイアログ・ボックス

「タイプ2緩やかに変化するディメンション」ダイアログ・ボックスを使用して、有効日属性、有効期限属性およびバージョニング対象属性を指定します。このダイアログ・ボックスには、レベル、識別属性、データ型およびレコード履歴の各列を含む表が表示されます。

- レベル: ディメンション内のレベルを表します。レベル・ノードを拡張し、レベル属性を表示します。

- 識別属性: レベル属性を表します。

- データ型: レベル属性のデータ型を表します。

- レコード履歴: このリストを使用して、属性がバージョニング対象であるかどうか、またはレベル・レコードの有効日や有効期限が格納されるかどうかを指定します。

- トリガー履歴: 属性をバージョニングする必要がある場合は、このオプションを選択します。

- 有効日: 属性にレベル・レコードの有効日の値が格納される場合は、このオプションを選択します。

- 有効期限: 属性IDにレベル・レコードの有効期限が格納される場合は、このオプションを選択します。

レベルのサロゲートIDとビジネスIDはバージョニングできません。

たとえば、PRODUCTSタイプ2 SCDでは、有効日と有効期限を格納する属性は、それぞれEFFECTIVE_TIMEおよびEXPIRATION_TIMEです。これらのディメンション属性を作成し、製品レベルに適用する必要があります。属性PACKAGE_TYPEはバージョニングする必要があります。そのため、この属性については、「レコード履歴」列で「トリガー履歴」 を選択します。PACKAGE_TYPE属性の値が変更されると、既存のレコードがクローズされ、最新の値を使用した新規レコードが作成されます。

タイプ2の緩やかに変化するディメンションの更新

ディメンション内のすべてのレベルに履歴データを格納する必要がありません。通常、最下位レベル(リーフ・レベルとも呼ばれます)でのみ、履歴データが格納されます。ただし、他のディメンション・レベルの履歴データを格納することもできます。

タイプ2のSCDのレコードがバージョン管理されている場合は、古いレコードはクローズ済としてマーク付けされ、更新された値で新規レコードが作成されます。レコードの有効期限は、古いレコードがクローズ済であることを示すように設定されます。新規レコードは現行のレコードとみなされ、デフォルトでは、デフォルトの有効期限としてNULLが設定されています。タイプ2のSCDにデータをロードしている間、ディメンション演算子の構成パラメータを使用して有効期限を設定できます。詳細は「ディメンション演算子」を参照してください。

タイプ2のSCD内の次の属性を更新できます。

- リーフ・レベル属性

- リーフ・レベルのバージョン管理する属性

- 非リーフ・レベル属性

- 非リーフ・レベルのバージョン管理する属性

- リーフ・レベルの親属性

次の項では、これらの更新操作のためのOracle Warehouse Builderの機能について説明します。

リーフ・レベル属性の更新

リーフ・レベル属性を更新する場合は、この属性の値が対応するレコード内で更新されます。

たとえば、Customerレベル・レコードのC_HOME_PHONEの値を更新する場合は、変更された電話番号でレコードが更新されます。

リーフ・レベルのバージョン管理する属性の更新

リーフ・レベルのバージョン管理する属性を更新する場合は、現行のレコードがクローズ済としてマーク付けされます。バージョン管理する属性の更新された値を使用して新規レコードが作成されます。

たとえば、顧客の婚姻区分を更新する場合は、現行のレコードがクローズ済としてマーク付けされます。その顧客に対して新規レコードが作成され、婚姻区分が更新されます。

非リーフ・レベル属性の更新

非リーフ・レベル属性を更新する場合は、非リーフ・レベルのオープン・レコードおよびこの非リーフ・レベルに対応する子レコードが新しい値に使用して更新されます。

たとえば、Householdレベル・レコードのH_ADDRESS属性を更新する場合は、そのハウスホールドの現行のオープン・レコードが更新されます。その特定のハウスホールドに対応するすべてのオープン子レコードも更新されます。

非リーフ・レベルのバージョン管理する属性の更新

更新機能は、階層バージョニングが有効か無効かによって異なります。

階層バージョニングが無効な場合

バージョン管理する属性に対応する非リーフ・レベル・レコードはクローズされ、更新された値を使用して新規レコードが作成されます。この非リーフ・レベル・レコードの子レコードは、非リーフ・レベルのバージョン管理する属性の変更された値を使用して更新されます。

たとえば、Householdレベル・レコードのH_ZIPの値が更新される場合は、このハウスホールドの現行のオープン・レコードがクローズされます。H_ZIPの更新された値を使用して新規レコードが作成されます。H_ZIPの値は、更新されたハウスホールドのレコードに対応するすべての子レコードで更新されます。

この場合、検証または配布を行うと、非リーフ・レベルのバージョニングが、対応する子レベル・レコードのバージョニングにならないことを示す警告メッセージが表示されます。

階層バージョニングが有効な場合

バージョン管理する属性に対応する非リーフ・レベル・レコードはクローズされ、更新された値を使用して新規レコードが作成されます。この非リーフ・レベル・レコードに対応する子レコードもクローズされ、新規の子レコードが作成されて値が更新されます。たとえば、Householdレベル・レコード内のH_ZIPの値が更新される場合、そのハウスホールドの現行のオープン・レコードおよび対応する子レコードはクローズされます。このハウスホールドおよびこのハウスホールドに対応する子レコードに対し、新規レコードが作成されて値が更新されます。

リーフ・レベルの親属性の更新

タイプ2のSCD内のレベル属性の更新に加えて、子レコードの親属性も更新できます。Customersのタイプ2のSCD内で、Customerレコード内の属性H_BUSN_IDによりその顧客の親属性が格納されます。リーフ・レベルの親属性に対する更新機能は、階層バージョニングが有効であるかまたは無効であるかによって異なります。

階層バージョニングが無効な場合

子レコードは、新規の親属性値に更新されます。

たとえば、Customerレコードの親レコードを表すH_BUSN_ID属性の値を更新すると、Customerレコードは新規の親属性値に更新されます。

階層バージョニングが有効な場合

子レコードはクローズされ、変更された親属性値を持つ新規レコードが作成されます。

たとえば、CustomerレコードのH_BUSN_ID属性を更新した場合は、現行のCustomerレコードがクローズされます。新規のCustomerレコードが作成されてH_BUSN_IDが更新されます。

ディメンション・エディタを使用したタイプ3緩やかに変化するディメンションの作成

タイプ3の緩やかに変化するディメンション(SCD)には、選択した特定のレベル属性の値について2つのバージョンが格納されます。タイプ3のSCDを作成できるのは、リレーショナル実装を持つディメンションの場合のみです。次を指定します。

- バージョニング対象の属性

- 各バージョニング対象属性の元の値を格納する属性
バージョニング対象属性ごとに、その属性の元の値を格納する属性を追加作成する必要があります。たとえば、Population属性をバージョニングするには、人口の元の値を格納するための属性を追加作成します。

タイプ3のSCDを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。

2. タイプ3のSCDを作成するターゲット・モジュールを開きます。

3. 「ディメンション」を右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。

4. 「ウィザードを使用しないディメンション」を選択し、「OK」をクリックします。

5. 「「名前」タブ」の説明に従って、ディメンション・エディタの「名前」タブに情報を入力します。

6. 「「属性」タブ」の説明に従って、「属性」タブで、レベルの属性の有効期限を格納する属性をレベルごとに追加作成します。
Productsディメンションのpackage_typeおよびpackage_size属性の元の値を格納する必要がある例を考えてみます。この場合は、これらの属性の元の値を格納するために、2つの新規属性prev_package_typeおよびprev_package_sizeを作成します。

7. ディメンション・エディタの次のタブに情報を入力します。

- 「レベル」タブ

- 「階層」タブ

8. 「緩やかな変化」タブで、「タイプ3: 元の値のみ格納」オプションを選択します。このオプションの右にある「設定」をクリックします。
「タイプ3緩やかな変化方針」ダイアログ・ボックスが表示されます。「「タイプ3緩やかに変化するディメンション」ダイアログ・ボックス」の説明に従って、このダイアログ・ボックスを使用してタイプ2のSCDの詳細を指定します。

9. ディメンション・エディタの「記憶域」タブに情報を入力します。

「タイプ3緩やかに変化するディメンション」ダイアログ・ボックス

「タイプ3緩やかに変化するディメンション」ダイアログ・ボックスを使用して、実装詳細を指定します。このダイアログ・ボックスを使用して、有効日を格納する属性、バージョニングが必要な属性、およびバージョニング対象属性の前の値を格納する属性を選択します。

このダイアログ・ボックスには、レベル、識別属性、前の属性およびレコード履歴の4列を含む表が表示されます。

- レベル: ディメンションのレベルを表示します。レベル・ノードを拡張し、レベル属性を表示します。

- 識別属性: レベル属性を表します。

- 前の属性: バージョニング対象属性の前の値を格納する属性を表します。リストを使用して、前の値属性を選択します。前の値属性を指定するのは、バージョニング対象属性の場合のみです。バージョニング対象属性の前の値を格納する属性は明示的に作成する必要があります。また、これらの属性をディメンション属性として作成し、必要なレベルに適用します。

- 有効: 属性に有効日が格納されるかどうかを示します。属性に有効日が格納される場合は、「有効」リストから「有効日」を選択します。
レベルのサロゲートIDはバージョニングできません。

PRODUCTSタイプ3 SCDを考えます。EFFECTIVE_TIME属性には、「製品」レベルのレコードの有効日が格納されます。「製品」レベルのPACKAGE_TYPE属性はバージョニングする必要があります。この属性の前の値を格納する属性は、「前の属性」列で表されるPREVIOUS_PACKAGE_TYPEです。PACKAGE_TYPE属性の値が変更されると、Oracle Warehouse Builderでは次の操作が実行されます。

- PACKAGE_TYPE属性の既存の値である、PREVIOUS_PACKAGE_TYPE属性が移動されます。

- PACKAGE_TYPE属性に新規の値を移入して格納します。

ディメンション定義の編集

ディメンション・エディタを使用して、ディメンションの定義を編集します。ディメンション定義の編集時には、オブジェクトのメタデータのみが変更されます。物理オブジェクトの定義を更新するには、コントロール・センターを使用して変更後のディメンションを配布します。

注意:
緩やかに変化するディメンションの作成後は、ディメンション・エディタを使用してそのタイプを変更できません。

ディメンション、または緩やかに変化するディメンション定義を編集する手順は次のとおりです。

プロジェクト・ナビゲータのディメンション右クリックして、「開く」を選択します。

または

プロジェクト・ナビゲータで、ディメンションをダブルクリックします。

ディメンション・エディタが表示されます。ディメンション・エディタのタブを使用して定義を変更します。

注意:
リレーショナル・ディメンションまたはROLAPディメンションの実装(スターまたはスノーフレーク)を修正する場合、必ず最初にアンバインドしてからバインドを実行してください。変更した実装に沿って物理バインドが作成されます。

これらのタブの詳細は、次のセクションを参照してください。

- ディメンション・エディタを使用したディメンションの作成

- 「タイプ2緩やかに変化するディメンション」ダイアログ・ボックス

- 「タイプ3緩やかに変化するディメンション」ダイアログ・ボックス

ディメンションの構成

ディメンションの構成時には、ディメンションと基礎となる表の両方を構成します。

ディメンションの物理プロパティを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、ディメンション名を右クリックして「構成」を選択します。
「構成」タブが表示されます。

2. 次の各カテゴリにリストしたディメンション・パラメータを構成します。
リレーショナル実装またはROLAP実装を使用するディメンションの場合は、実装表を構成することもできます。詳細は、「表の構成」を参照してください。

識別

配布可能: このディメンションを配布する場合は「TRUE」を選択します。Oracle Warehouse Builderでは、配布可能マークの付いた表制約についてのみスクリプトが生成されます。

配布オプション: このパラメータを使用してディメンションの実装のタイプを指定します。「すべて配布」、「データ・オブジェクトのみ配布」、「カタログにのみ配布」の各オプションから1つ選択します。

配布オプションの詳細は、「ディメンションの配布方法の指定」を参照してください。

ビュー名: ディメンション・データを格納する実装表の制御行を非表示にするために作成されるビューの名前を指定します。これは、スター・スキーマを使用するリレーショナル・ディメンションまたはROLAPディメンションに適用可能です。ビュー名を明示的に指定しなければ、ディメンション名に接尾辞_vを付けた名前がデフォルトのビュー名として使用されます。

参照可能: このパラメータは、コード生成で使用されません。

サマリー管理

ディメンションでMV実装によるROLAPを使用している場合、このセクションのパラメータを設定する必要があります。

- MVリフレッシュの有効化: リフレッシュされるサマリー・データを格納するマテリアライズド・ビューを有効化します。このパラメータのデフォルト値はFalseです。

- MV制約: このパラメータに「TRUSTED」または「ENFORCED」を設定します。
「TRUSTED」制約では、より効果的にリフレッシュ操作を実行できます。このパラメータを「TRUSTED」に設定すると、検証されていない「RELY」制約を使用して、リフレッシュ中にマテリアライズド・ビューに対してリライトできます。ただし、「TRUSTED」制約の情報が無効であれば、リフレッシュによってマテリアライズド・ビューが破損する場合があります。

このパラメータを「ENFORCED」に設定すると、検証、制約の規定、およびマテリアライズド・ビューへのリライトに限って使用を許可することができます。

- リフレッシュ・モード: このパラメータは、「Fast」、「Complete」または「Force」から選択します。
「Complete」リフレッシュでは、マテリアライズド・ビューの問合せの定義は再計算されます。

「Fast」リフレッシュでは、変更された行のみがキューブに挿入されて、反映されたキューブのエリアは再集計されます。

「Force」リフレッシュでは、「Fast」リフレッシュが最初に適用されます。不可能な場合は、次に「Complete」リフレッシュが適用されます。

- 次のリフレッシュ日: マテリアライズド・ビューをリフレッシュする、次の日時を示します。

- リフレッシュ: 「DEMAND」または「ONDATE」を設定します。
このパラメータを「DEMAND」に設定すると、マテリアライズド・ビューは要求時に更新されます。「ONDATE」に設定すると、マテリアライズド・ビューは「次のリフレッシュ日」パラメータで指定した日時にリフレッシュされます。

- リフレッシュ開始日: マテリアライズド・ビューの更新が開始される日時を示します。

ディメンションの配布方法の指定

配布オプション構成パラメータを設定することで、ディメンションがターゲット・スキーマに配布される形式を指定できます。ディメンションの配布オプションに設定できる値は、「すべて配布」、「データ・オブジェクトのみ配布」およびカタログに配布です。構成オプション・パラメータの設定手順は、「ディメンションの構成」を参照してください。

配布オプション構成パラメータでは、ディメンションの形式も同様に指定した生成モードで配布されます。ディメンションを含むモジュールのPL/SQL生成モード・パラメータは、モジュール内のオブジェクトが配布されるデータベースを示します。PL/SQL生成モードは、デフォルトのOracle Database 10g、Oracle Database11g、Oracle8iおよびOracle9iの各オプションのいずれかに設定できます。詳細は、「ターゲット・モジュールの構成」を参照してください。

表3-7に、ROLAP実装でディメンションを別のデータベース・バージョンに配布する方法を示します。

表3-7 ディメンションの配布オプション

配布オプション

ターゲット・スキーマ: Database 10g、ROLAP実装

ターゲット・スキーマ: Database 11g、ROLAP実装

ターゲット・スキーマ: Database 11g、MV実装によるROLAP

データ・オブジェクトの配布

リレーショナル・ディメンションDDL

リレーショナル・ディメンションDDL

リレーショナル・ディメンションDDL

カタログに配布

CWM2

CWM2

11g形式AW+

すべて配布

リレーショナル・ディメンションDDLおよびCWM2

リレーショナル・ディメンションDDLおよびCWM2

リレーショナル・ディメンションDDLおよび11g形式AW+

表3-8に、MOLAP実装でディメンションを別のデータベース・バージョンに配布する方法を示します。

表3-8 MOLAP実装でのディメンションの配布オプション

配布オプション

ターゲット・スキーマ: 10g Database

ターゲット・スキーマ: 11g Database

データ・オブジェクトの配布

10g形式AW

11g形式AW

カタログに配布

10g形式AW

11g形式AW

すべて配布

n/a

n/a

キューブの作成

Oracle Warehouse Builderには、次の2つのキューブ作成方法が用意されています。

- キューブの作成ウィザードを使用してのキューブの作成
キューブの作成ウィザードを使用して、基本キューブをすばやく作成します。Oracle Warehouse Builderでは、ほとんどのパラメータにデフォルト値が想定され、キューブ・データを格納するデータベース構造が作成されます。

- キューブ・エディタを使用してのキューブの作成
集計方法や依存性解決順序など、特定の拡張オプションを指定する必要がある場合は、キューブ・エディタを使用してキューブを作成します。キューブの作成ウィザードの使用時には、これらのオプションは使用できません。

また、キューブの作成ウィザードを使用して、基本キューブ・オブジェクトをすばやく作成する方法もあります。作成後に、キューブ・エディタを使用して他のオプションを指定します。

キューブ内のキューブ・メジャーについて

キューブ内のメジャーを定義中に、計算済メジャーを作成することもできます。計算済メジャーは、データが格納されないメジャーです。メジャー値は、定義済の式を使用して必要に応じて計算されます。

計算済メジャーは次の2タイプに分類できます。

- 標準計算

- カスタム式

標準計算

標準計算はテンプレートに基づいています。Oracle Warehouse Builderでは、基本演算、拡張演算、前回/将来の比較および時間フレームという標準計算を定義できます。

基本演算

このタイプを使用すると、次のような基本演算の計算を実行できます。表3-9は、基本演算の計算を示します。

表3-9 基本的な計算済メジャーのリスト

計算名

説明

加算

この計算を使用して、メジャー2つを加算するか、メジャー1つと数値1つを加算します。

減算

この計算を使用して、メジャー2つを減算するか、メジャー1つと数値1つを減算します。

乗算

この計算を使用して、メジャー2つを乗算するか、メジャー1つと数値1つを乗算します。

除算

この計算を使用して、メジャー2つを除算するか、メジャー1つと数値1つを除算します。

比率

拡張演算

このタイプを使用すると、表3-10に示すような拡張計算を作成できます。

表3-10 拡張演算の計算済メジャーのリスト

計算名

説明

累計

この計算を使用して、指定したディメンションの各レベルにおける期間中のメジャー・データの累計を戻します。

たとえば、2001年の売上高累計 = 第1四半期の売上高 + 第2四半期の売上高 + 第3四半期の売上高 + 第4四半期の売上高となります。

索引

この計算を使用して、メジャー値の比率をそのメジャーの基準値に占める割合として戻します。この計算の算式は次のようになります。

(現行メンバー/基準メンバー)

たとえば、消費者物価指数(1967年の基準物価の場合) = (2001年の物価/1967年の物価) * 100となります。

マークアップ率

この計算を使用し、古い方のメジャーを計算の基礎として2つのメジャー間のマークアップ率を戻します。この計算に使用する算式は(y-x)/xです。

たとえば、新価格が110で旧価格が100であるとします。マークアップ率は次のように計算されます。

(110-100)/100 = +10%.

差異率

この計算を使用して、メジャーとそのメジャーのターゲットとの差異率を戻します。たとえば、売上と割当て制限の差異率は次のようになります。

(売上-割当て)/割当て

ランク

この計算を使用し、指定したメジャーの値に基づいて、各ディメンション・メンバーのランク値(数値)を戻します。たとえば、DVDが150、TVが100、ラジオが50の場合、TVの売上ランクは2となります。

共有

この計算を使用して、特定のメジャー値について、他のディメンション・メンバーまたはレベルの同一メジャー値に対する比率を戻します。この計算の算式は次のようになります。

(現行メンバー/指定したメンバー)

差異

この計算を使用して、ベース・メジャーとそのメジャーのターゲットとの差異を計算します。次に差異の例を示します。

売上差異 = 売上 - 売上予測

前回/将来の比較

このタイプを使用すると、表3-11の説明に従って過去または将来の値の計算を定義できます。

表3-11 前回/将来の比較の計算済メジャーのリスト

計算済メジャー名

説明

前の値

この計算を使用して、前の期間からのメジャー値を戻します。

前期間との差異

この計算を使用して、メジャーの現在の値とそのメジャーの前期間の値との差異を戻します。この計算の算式は次のようになります。

(現在の値 - 以前の値)

前期間との差異率

この計算を使用して、メジャーの現在の値とそのメジャーの前期間の値との差異率を戻します。この計算の算式は次のようになります。

((現在の値 - 以前の値)/以前の値)

将来の値

この計算を使用して、将来の期間のアイテムの値を戻します。たとえば、現在が2005年10月の場合、1年後の売上高 = 2006年10月の売上高となります。

時間フレーム

このタイプを使用すると、表3-12に示す時系列計算を作成できます。

表3-12 時系列の計算済メジャーのリスト

計算済メジャー名

説明

移動平均

この計算を使用して、継続する期間数にわたるメジャーの平均値を戻します。この計算の例を次に示します。

過去3か月の移動平均売上 = (1月の売上＋2月の売上＋3月の売上) ÷3

移動最大

この計算を使用して、継続する期間数にわたるメジャーの最大値を戻します。この計算の例を次に示します。

過去3か月間の売上高の移動最大 = 1月、2月および3月の最大売上高

移動最小

この計算を使用して、継続する期間数にわたるメジャーの最小値を戻します。この計算の例を次に示します。

過去3か月間の売上高の移動最小 = 1月、2月および3月の最小売上高

移動合計

この計算を使用して、継続する期間数にわたるメジャーの合計値を戻します。この計算の例を次に示します。

過去3か月間の売上高の移動合計 = (1月の売上高 + 2月の売上高 + 3月の売上高)

現在までの期間

この計算を使用し、期間中のメジャー・データを合計してメジャー・データ累計を作成します。この計算の例を次に示します。

3月までの年累計 = 1月の売上高 + 2月の売上高 + 3月の売上高

カスタム式

「カスタム式」オプションを選択すると、計算済メジャーの計算に使用する式を指定できます。

キューブの例

Salesキューブには、集計された売上データが格納されます。このキューブにはValue_salesおよび Dollar_salesという2つのメジャーが含まれています。

- Value_sales: 売上額を売上数量に換算して格納します。

- Dollar_sales: 売上額を格納します。

表3-13に、Salesキューブのディメンションを示します。この表には、キューブが参照するディメンションの名前とディメンションのレベルがリストされています。

表3-13 Salesキューブのディメンション

ディメンション名

レベル名

Products

Product

Customers

Customer

Times

Day

キューブの作成ウィザードを使用してのキューブの作成

ウィザードを使用してキューブを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。

2. キューブを作成するターゲット・モジュールを開きます。

3. 「キューブ」を右クリックし、「新規キューブ」を選択します。
キューブ・ウィザードのようこそページが表示されます。「次へ」をクリックして次に進みます。ウィザードに表示される指示に従って次の各ページを完了します。

- 名前と説明ページ

- 記憶域タイプ・ページ

- ディメンション・ページ

- メジャー・ページ

- サマリー・ページ

名前と説明ページ

名前と説明ページを使用してキューブを記述します。このページに次の詳細を入力します。

- 名前: キューブ名。キューブ名は、モジュール内で一意である必要があります。

- 説明: キューブの説明(オプション)を指定します。

記憶域タイプ・ページ

記憶域タイプ・ページを使用して、キューブ用の記憶域のタイプを指定します。記憶域タイプにより、データベースにおけるキューブ・データの物理的な格納方法が決定されます。記憶域タイプについて選択できるオプションは次のとおりです。

- ROLAP: リレーショナル記憶域

- ROLAP: MVあり

- MOLAP: 多次元記憶域

記憶域タイプは、キューブ全体の最下位レベルに格納されるデータ量、および必要なリフレッシュ・レートに基づいて選択します。

ROLAP: リレーショナル記憶域

Oracle Warehouse Builderでは、キューブ定義とそのデータがデータベースにリレーショナル形式で格納されます。このオプションを使用すると、リレーショナル実装またはROLAP実装を使用するキューブを作成できます。

リレーショナル記憶域の方が望ましいのは、大量の詳細データを格納する場合、または大量のデータが頻繁にリフレッシュされる場合です。次のいずれかを実行する必要がある場合は、リレーショナル記憶域を使用してください。

- コール詳細レコード、販売時点(POS)レコード、および他のトランザクション指向データなどの詳細情報の格納。

- 短い間隔での大量のデータのリフレッシュ。

- 受注詳細リストなどの詳細レポートの作成。

通常、オペレーショナル・データ・ストアおよびエンタープライズ・データ・ウェアハウスは、リレーショナル記憶域を使用して実装されます。次に、このリレーショナル実装からMOLAP実装を導出し、様々な分析タイプを実行できます。

ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。

キューブに対してリレーショナル実装を選択すると、キューブ・データの格納に使用する実装表が作成されます。

ROLAP: MVあり

Oracle Warehouse Builderでは、キューブ定義とそのデータがデータベースにリレーショナル形式で格納されます。また、キューブ編成されたMVは、アナリティック・ワークスペースに作成されます。このオプションを選択すると、ROLAP実装を使用してサマリーをアナリティック・ワークスペースに格納するキューブが作成されます。

このオプションを使用すると、11gデータベースでキューブ構成のMVに基づくサマリー管理が提供されます。問合せを変更する必要なしに、問合せのパフォーマンスを大幅に向上できます。

ROLAP: MV実装を使用して作成されたキューブではMV実装のみがサマリー・データを格納できます。

MV実装によるROLAPを選択するのは次のような場合です。

- キューブ・データの格納に使用する実装表が作成されます。

- キューブは、ディメンションが属するモジュールと同じ名前を使用するアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースを格納する表領域は、ディメンション・メタデータを含む、スキーマ用のユーザー表領域として定義された表領域です。

注意:
キューブがROLAP: キューブMV実装を使用する場合、このキューブが参照するすべてのディメンションも同様にROLAP: キューブMV実装を使用する必要があります。

MOLAP: 多次元記憶域

Oracle Warehouse Builderでは、キューブ定義とキューブ・データがデータベースのアナリティック・ワークスペースに格納されます。このオプションを使用すると、MOLAP実装を使用するキューブを作成できます。

多次元記憶域の方が望ましいのは、分析用の集計データを格納する場合です。通常、多次元記憶域の場合はデータを事前に計算および集計する必要があるため、リフレッシュ間隔はリレーショナル記憶域よりも長くなります。また、集計レベルが上位であるため、データ量は小さくなるのが普通です。次の操作を実行するには、多次元記憶域を使用します。

- 傾向分析、what-if分析、またはデータの予測および割当てなどの拡張分析。

- 特定時点の結果を持つデータのドリルおよびピボット。

MOLAP実装を選択すると、アナリティック・ワークスペースへのキューブの格納に使用する名前が生成されます。アナリティック・ワークスペースが存在しない場合は、指定した名前でアナリティック・ワークスペースが作成されます。

ディメンション・ページ

ディメンション・ページでは、キューブのディメンションを定義します。キューブは、1つ以上のディメンションを参照する必要があります。ディメンションを定義するには、キューブが参照するディメンションを選択します。同じディメンションを使用して複数のキューブを定義できます。たとえば、ディメンションTIMESをSALESキューブとCOSTキューブで使用できます。

ディメンション・ページには、「使用可能なディメンション」および「選択したディメンション」という2つのセクションがあります。

使用可能なディメンション セクションには、ワークスペース内の全ディメンションがリストされます。プロジェクト内の各モジュールは個別のノードで表されます。モジュール・ノードを拡張し、そのモジュール内の全ディメンションを表示します。

「使用可能なディメンション」セクションに表示されるディメンションは、Warehouse Builderにより、そのディメンション用に選択した実装タイプに基づいてフィルタされます。記憶域タイプとしてROLAPを選択すると、リレーショナル実装を持つディメンションのみがリストされます。記憶域タイプとしてMOLAPを選択すると、アナリティック・ワークスペースに格納されているディメンションのみがリストされます。

選択したディメンション 「選択したディメンション」セクションには、「使用可能なディメンション」セクションで選択したディメンションがリストされます。右矢印を使用して、「使用可能なディメンション」リストから「選択したディメンション」リストにディメンションを移動します。

メジャー・ページ

メジャー・ページを使用してキューブのメジャーを定義します。メジャーごとに次の詳細を指定します。

- 名前: メジャー名。メジャー名は、キューブ内で一意である必要があります。

- 説明: メジャーの説明(オプション)。

- データ型: メジャーのデータ型を選択します。

注意:
MOLAP実装では、BLOB、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH、RAW、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONEの各データ型はサポートされていません。

- 長さ: 長さは文字データ型に対してのみ指定されます。

- 精度: メジャーに使用できる合計桁数を定義します。精度は数値データ型に対してのみ定義されます。

- スケール: 小数点以下の合計桁数を定義します。スケールは数値データ型に対してのみ定義されます。

- 秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。

サマリー・ページ

サマリー・ページを使用して、キューブ・ウィザードで指定したオプションを確認します。キューブの定義を完了するには「終了」をクリックします。このキューブは、プロジェクト・ナビゲータの「キューブ」ノードの下に表示されます。

Oracle Warehouse Builderにより、ワークスペースで次のメタデータが作成されます。

- キューブ・オブジェクト。

- キューブ・データを格納する表の定義。
リレーショナル実装またはROLAP実装の場合は、キューブ・データを格納するデータベース表の定義が作成されます。また、キューブ・データを格納する表に、キューブが参照するディメンションの関連データを格納する各データ・オブジェクトへの外部キーも作成されます。

MOLAP実装の場合は、キューブ・データを格納するアナリティック・ワークスペースが作成されます。このウィザードでは、これらのオブジェクトの定義がリポジトリに作成されるのみであることに注意してください。ターゲット・スキーマにオブジェクトが作成されることはありません。

キューブの配布 キューブおよび関連オブジェクトをターゲット・スキーマに作成するには、キューブを配布する必要があります。ROLAPキューブを配布する前に、キューブ・データを格納するデータベース表を正常に配布してください。または、表とキューブの両方を配布できます。詳細は、「ディメンション・オブジェクトのMOLAP実装」を参照してください。

注意:
キューブを削除しても、データベース表やアナリティック・ワークスペースなどの関連オブジェクトは削除されません。これらのオブジェクトは明示的に削除する必要があります。

キューブの作成ウィザードで使用されるデフォルト

キューブの作成ウィザードを使用してキューブを作成する場合、次のデフォルトが使用されます。

- MOLAP記憶域: キューブは、その作成場所であるモジュールと同じ名前のアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースは、モジュールを所有するスキーマのユーザー表領域に格納されます。

- 解決: デフォルトでは、キューブは要求時に解決されます。

- 集計関数: キューブが参照する全ディメンションのデフォルトの集計関数はSUMです。

キューブ・エディタを使用してのキューブの作成

キューブ・エディタを使用すると、上級ユーザーは要件に従ってキューブを作成できます。また、キューブ・エディタはキューブの編集にも使用できます。

キューブの作成にキューブ・エディタを使用するのは、次の操作が必要な場合です。

- キューブが疎なディメンションの指定

- キューブ・メジャーの集計方法の定義

- レベルの集計の事前計算

キューブ・エディタを使用してキューブを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。

2. キューブを作成するターゲット・モジュールを開きます。

3. 「キューブ」を右クリックし、「新規」を選択します。
新規ギャラリ・ダイアログ・ボックスが表示されます。

4. ウィザードを使用しないキューブを選択し、「OK」をクリックします。
キューブ・エディタが表示されます。キューブを定義するには、「キューブの詳細」パネルの次の各タブに情報を入力します。

- 「名前」タブ

- 「記憶域」タブ

- 「ディメンション」タブ

- 「メジャー」タブ

- 「集計」タブ

- 「孤立」タブ

- 「物理的バインド」タブ

キューブ・エディタを使用してキューブを作成する場合、キューブ・データを格納する物理オブジェクトは自動的に作成されません。手動で作成する必要があります。

5. キューブ・メジャーとディメンション参照を、そのデータを格納するデータベース列にバインドするには、「「物理バインド」タブ」を参照してください。この手順を実行する必要があるのは、ROLAP実装を使用するキューブの場合のみです。

「名前」タブ

「名前」タブを使用してキューブを記述します。このタブで次の詳細を指定します。

- 名前: キューブ名を指定します。キューブ名は、モジュール内で一意である必要があります。

- 説明: キューブの説明(オプション)を指定します。

「記憶域」タブ

「記憶域」タブでは、キューブとキューブ・データの格納方法を指定します。記憶域タイプとして「リレーショナル」または「MOLAP」を選択できます。

ROLAP: リレーショナル記憶域 キューブ定義とキューブ・データをデータベースにリレーショナル形式で格納するには、「ROLAP: リレーショナル記憶域」オプションを選択します。このオプションを使用すると、リレーショナル実装またはROLAP実装を使用するキューブを作成できます。キューブ・データは、データベース表またはビューに格納されます。

ファクト表のすべての外部キー列のビットマップ索引を生成するには、「ビットマップ索引の作成」オプションを選択します。スター・クエリーの場合は、この選択が必須です。詳細は、Oracleデータ・ウェアハウス・ガイドを参照してください。

ディメンションの外部キー列に一意キーを作成するには、「複合一意キーの作成」オプションを選択します。

ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。

ROLAP: キューブMV ディメンション定義とそのデータをアナリティック・ワークスペースのデータベースとキューブ・マテリアライズド・ビュー・サマリーにリレーショナル形式で格納するには、ROLAP: キューブMVオプションを選択します。

MVs実装のROLAPを選択すると、「MOLAP: 多次元記憶域」セクションの「AW名」フィールドを使用して、サマリー・データを格納するアナリティック・ワークスペースの名前を指定します。

注意:
キューブがROLAP: キューブMV実装を使用する場合、このキューブが参照するすべてのディメンションも同様にROLAP: キューブMV実装を使用する必要があります。

MOLAP: 多次元記憶域 キューブ・データをアナリティック・ワークスペースに格納するには、「MOLAP: 多次元データ構造」オプションを選択します。このオプションを使用すると、MOLAP実装を持つキューブを作成できます。アナリティック・ワークスペース・セクションを使用して、記憶域の詳細を指定します。このセクションでは、次の詳細を入力します。

- AW名: このフィールドでは、キューブ定義とキューブ・データを格納するアナリティック・ワークスペースの名前を指定します。「選択」ボタンを使用して、「アナリティック・ワークスペース」ダイアログ・ボックスを表示します。このダイアログ・ボックスには、現行のプロジェクトにあるディメンション・オブジェクトが表示されます。リストからオブジェクトを選択すると、選択したオブジェクトと同じ名前のアナリティック・ワークスペースにキューブが格納されます。

- AW表領域名: アナリティック・ワークスペースが格納される表領域の名前を表します。名前を指定しなければ、アナリティック・ワークスペースはモジュールの所有者のデフォルトのユーザー表領域に格納されます。

「ディメンション」タブ

「ディメンション」タブを使用して、キューブのディメンションを定義します。このタブには、キューブが参照するディメンションの選択に使用する表と「拡張」ボタンが表示されます。このタブの左にある矢印を使用すると、タブにリストされるディメンションの順序を変更できます。MOLAP実装またはROLAPキューブMV実装を使用するキューブのみ「拡張」ボタンが有効になります。

「拡張」ボタンを使用すると、キューブが参照するディメンションのスパーシティを定義できます。このボタンをクリックすると、「拡張」ダイアログ・ボックスが表示されます。スパーシティを定義できるのはMOLAPキューブの場合のみのため、「拡張」ボタンは記憶域タイプが「MOLAP」の場合にのみ有効化されます。「スパーシティ」ダイアログ・ボックスの詳細は、「拡張」ダイアログ・ボックスを参照してください。

「ディメンション」タブの表は、次の列で構成されています。

- ディメンション: このフィールドは、キューブが参照するディメンションの名前を表します。このフィールドにある省略記号ボタンをクリックすると、「使用可能なモジュール」ダイアログ・ボックスが表示されます。このダイアログ・ボックスには、現行のプロジェクトにあるディメンションが表示されます。このリストからディメンションを選択します。
このリストに表示されるディメンションは、Oracle Warehouse Builderにより、キューブに指定した記憶域タイプに基づいてフィルタされます。キューブに対してリレーショナル実装を定義すると、リレーショナル実装を使用するディメンションのみが表示されます。キューブに対してMOLAP実装を定義すると、MOLAP実装を使用するディメンションのみが表示されます。

- レベル: 「レベル」には、「ディメンション」フィールドで選択したディメンションの全レベルが表示されます。キューブが参照するディメンション・レベルを選択します。

- ロール: 「ロール」リストには、選択したディメンションに含まれるディメンション・ロール(存在する場合)が表示されます。キューブで使用するディメンション・ロールを選択します。ディメンション・ロールを指定できるのは、リレーショナル・ディメンションの場合のみです。

「拡張」ダイアログ・ボックス

「拡張」ダイアログ・ボックスを使用して、キューブが参照するディメンションのスパーシティを指定します。スパーシティを適用できるのは、MOLAPキューブおよびキューブMVを使用して実装されたROLAPキューブのみです。スパーシティの詳細は、Oracle OLAPユーザーズ・ガイドを参照してください。

このダイアログ・ボックスには、ディメンション列およびスパーシティ列の2列を含む表が表示されます。

- ディメンション: この列には、キューブ・エディタの「ディメンション」タブにリストされるディメンションがすべて表示されます。ディメンションは、「ディメンション」タブ上と同じ順序でリストされます。このダイアログ・ボックスでのディメンションの表示順序を変更するには、キューブ・エディタの「ディメンション」タブでの表示順序を変更する必要があります。

- スパーシティ: 「スパーシティ」により、キューブ・データが特定のディメンションでスパースであることを指定されます。キューブ・データがそのディメンションでスパースである場合は、ディメンション参照に対して「スパーシティ」を選択します。たとえば、SALESキューブのデータが販促ディメンションでスパースである場合は、販促ディメンションの「スパーシティ」を選択します。
キューブ内の疎なディメンションはすべて、疎度の最も低いディメンションから最も高いディメンションまでグループ化する必要があります。たとえば、SALESキューブはディメンションの時間、製品、販促、およびチャネルを参照します。これは「拡張」ダイアログ・ボックスにリストされるディメンションの順序です。キューブ・データは販促ディメンションおよびチャネルディメンションに従うスパースで、販促はスパースが最大の状態です。これらすべてのディメンションは次の順序でグループとして表示される必要があります。時間、チャネル、および販促です。これらのディメンション間ではリストされた他のディメンションを持つことができません。

次のガイドラインを使用して、ディメンションの順序を並び替えます。

- 最初に時間ディメンションを表示して、データのロードおよび時間ベースの分析を迅速に処理します。通常、時間ディメンションは稠密ディメンションですが、ベース・レベルが日である場合、またはキューブに多くのディメンションがある場合、時間はスパース・ディメンションとなる場合があります。

- 最大値のメンバーのディメンションから最小値のメンバーのディメンションという順序でスパース・ディメンションがリスト化されます。圧縮キューブの場合、スパース・ディメンションは最小値のメンバーのディメンションから最大値のメンバーのディメンションという順序でリスト化されます。

キューブに対して疎度を定義することには次の利点があります。

- データ取得速度の向上

- キューブが使用する記憶領域の削減

キューブの圧縮 このオプションを選択すると、キューブ・データが圧縮されてから格納されます。記憶域を圧縮すると容量の使用量が減少し、通常の記憶領域よりも集計が高速になります。キューブの圧縮の詳細は、Oracle OLAPユーザーズ・ガイドを参照してください。

通常、圧縮された記憶域は非常に疎なキューブに使用されます。キューブが非常に疎であるのは、ディメンション階層に複数レベルがあり、ディメンション数がレベル間でほとんど変化しない場合です。そのため、多数の親が複数の連続するレベルに子孫を1つのみ持ちます。集計されるデータ値はレベル間で変化しないため、一度格納すればよいことになります。

圧縮されたコンポジットの場合に選択できるのは、「SUM」および加算以外の集計演算子のみです。

パーティション・キューブ このオプションを選択すると、キューブはディメンションの1つに沿ってパーティション化されます。キューブをパーティション化すると、大きなメジャーのパフォーマンスが改善されます。

パーティション・キューブ・オプションの下の表を使用して、キューブのパーティション化に使用するディメンションを指定します。1レベル以上の階層を持つディメンションを指定する必要があり、特定のレベルのすべての親がほぼ同数の子を持つなど、ディメンション・メンバーが均等に分散している必要があります。「ディメンション」列を使用してキューブのパーティション化に使用するディメンションを選択します。「階層」および「レベル」列を使用して、ディメンション階層とレベルを選択します。

通常、「時間」は必要な基準を満たしているため、キューブのパーティション化には最適の選択肢です。また、データは期間別にロードされてロール・オフされるため、データ・リフレッシュ・プロセスの一部として新規パーティションを作成して古いパーティションを削除できます。

グローバル索引を使用します。 グローバル・パーティション索引を作成するには、このオプションを選択します。

「メジャー」タブ

「メジャー」タブを使用してキューブ・メジャーを定義します。各メジャーについて次の詳細を指定します。

- 名前: メジャー名。メジャー名は、キューブ内で一意である必要があります。

- 説明: メジャーの説明(オプション)。

- データ型: メジャーのデータ型。

- 長さ: メジャーの最大バイト数。長さは、文字データに対してのみ指定されます。

- 精度: 列に使用できる合計桁数を定義します。精度は数値データ型に対してのみ定義されます。

- スケール: 小数点以下の合計桁数を定義します。スケールは数値データ型に対してのみ定義されます。

- 秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。

- 式: このフィールドを使用して計算済メジャーを定義します。計算済メジャーは、データが格納されないメジャーです。メジャー値は、定義済の式を使用して必要に応じて計算されます。省略記号のボタンをクリックすると、計算済メジャー・ウィザードが表示されます。計算済メジャー・ウィザードの詳細は、「計算済メジャー・ウィザード」を参照してください。
キューブに定義されている他のメジャーを使用して、メジャーの式を作成できます。定義済の式を検証できるのは配布時のみです。

注意:
計算済メジャーを作成できるのは、MOLAPディメンションの場合のみです。

標準メジャーの生成ボタンをクリックすると、基本メジャーに対する一連の標準計算が生成されます。これは、共有、ランクおよび時間ベースの計算を短時間で作成できる操作です。このオプションを使用して作成する計算済メジャーは、計算済メジャー・ウィザードを使用して手動で作成することもできます。

計算済メジャー・ウィザード

計算済メジャー・ウィザードを使用して、MOLAP実装を使用するキューブに計算済メジャーを作成します。これらの計算済メジャーは、キューブに定義されている他のメジャーと同様に、アナリティック・ワークスペースに配布されます。このウィザードを使用すると、「計算済メジャーの生成」をクリックした場合には作成されない特定の付加的計算を作成できます。

計算済メジャー詳細の定義

このページを使用して、計算済メジャーの詳細を定義します。このページの内容は、計算済メジャー・タイプの選択ページで選択した計算のタイプに応じて異なります。たとえば、計算済メジャー・タイプとして加算を選択した場合は、このページに2つのリストが表示され、加算するメジャーを選択できます。

計算済メジャー・タイプの選択ページで「カスタム式」を選択した場合は、式ビルダー・インタフェースが表示されます。このインタフェースを使用してカスタム・メジャーを定義します。式ビルダーの詳細は、「式ビルダー」を参照してください。

サマリー情報の確認

終了ページを使用して、計算済メジャーに対して定義した情報を確認します。選択した値のいずれかを変更するには「戻る」をクリックします。計算済メジャーの定義を完了するには「終了」をクリックします。

「集計」タブ

「集計」タブを使用して、キューブが参照する各ディメンションに対して実行が必要な集計を定義します。データの集計に使用する集計関数を選択します。また、キューブが参照する各ディメンションに沿ったメジャーを事前計算することもできます。デフォルトでは、各代替レベルについて最下位レベルから順番に集計が実行されます。デフォルトの集計関数はSUMです。データ集計計画の詳細は、Oracle OLAPユーザーズ・ガイドのデータ集計に関する章を参照してください。

「集計」タブで次のオプションを指定します。

- キューブ集計方法: キューブ・データの集計に使用する集計関数を選択します。デフォルト選択はSUMです。

- サマリーのリフレッシュ方法: データのリフレッシュ方法を選択します。「要求時」または「コミット時」を選択できます。

キューブのサマリー方針:  このセクションを使用して、各ディメンションについてデータを事前計算するレベルを定義します。ディメンション列には、キューブが参照するディメンションが表示されます。ディメンション内でデータを事前計算するレベルを選択するには、ディメンション名の右にある事前計算列の省略記号ボタンをクリックします。「ロケーション」ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用して、ディメンション内でメジャー・データを事前計算するレベルを選択します。事前計算するレベルは、ディメンション階層ごとに指定できます。デフォルトでは、最下位レベルから順番に各代替レベルが事前計算されます。

注意:
純粋なリレーショナル・キューブ(データベースのリレーショナル・スキーマにのみ実装され、OLAPカタログには実装されないキューブ)の集計は定義できません。

ROLAPキューブの事前計算

ROLAPキューブの場合、集計データを格納するマテリアライズド・ビューが作成されて集計が実装されます。これらのマテリアライズド・ビューにより、問合せパフォーマンスが向上します。MOLAP実装の場合は、集計データが生成され、基本レベルのデータとともにアナリティック・ワークスペースに格納されます。一部の集計データは配布時に生成され、残りは「集計」タブで定義したルールに従って問合せに対するレスポンス中に必要に応じて集計されます。

注意:
ROLAP集計の実装用に作成されるマテリアライズド・ビューは、プロジェクト・ナビゲータの「マテリアライズド・ビュー」ノードには表示されません。

「孤立」タブ

「孤立」タブを使用して、キューブにデータをロード中またはキューブからデータを削除中に使用するオーファン管理ポリシーを指定します。このタブには、NULLディメンション・キー値および無効なディメンション・キー値の2つのセクションが含まれていて、NULLディメンション・キー値を持つキューブ・レコードおよび無効なディメンション・キー値を持つキューブ・レコードに対するアクションを指定する場合に使用します。

次のオプションを1つ選択して、NULLおよび無効なディメンション・キー値を持つキューブ・レコードに対するオーファン管理ポリシーを指定します。

- メンテナンスなし: オーファン行を積極的に検出、拒否または修正することはありません。

- デフォルトのディメンション・レコード: 無効またはNULLのディメンション・キー値を含む行には、デフォルトのディメンション・レコードが割り当てられます。デフォルトの親の行を定義するには、「設定」ボタンを使用します。

- 孤立拒否: 既存のディメンション・レコードのない行は挿入されません。

「エラー表の配布」を選択して、オーファン管理に関するエラー表を生成し、ディメンションを使用して配布します。

「物理的バインド」タブ

キューブの構造を定義した後、キューブ・データを格納するデータベース表またはビューの詳細を指定する必要があります。「物理的バインド」タブを使用して、キューブに実装オブジェクトを定義できます。次のオプションを1つ選択して、キューブ・データを格納するデータベース・オブジェクトにキューブをバインドできます。

- 自動バインド

- 手動バインド

自動バインド:  自動バインドを実行すると、キューブのメジャーとディメンションの参照がそのデータを格納するデータベース列に自動的にマップされます。

自動バインドを実行するには、プロジェクト・ナビゲータでキューブを選択します。「ファイル」メニューで、「バインド」をクリックします。Oracle Warehouse Builderにより、キューブ内のメジャーとディメンションの参照がキューブ・データの格納表にマップされます。

関連項目:
自動バインド・ルールの詳細は、『Oracle Warehouse Builder概要』を参照してください。

手動バインド 手動バインドの場合は、キューブ内のメジャーとディメンションの参照を、そのデータを格納するデータベース・オブジェクトに明示的にマップする必要があります。キューブ・データを既存の表に格納するか、新規の表を作成できます。

手動バインドを実行する手順は、次のとおりです。

1. キューブ・エディタを開き、「物理的バインド」タブにナビゲートします。

2. 空白の領域を右クリックし、「追加」を選択してから、キューブ・データを格納するオブジェクトのタイプを選択します。たとえば、キューブ・データを表に格納する場合は、空白の領域を右クリックし、「追加」、次に「表」を選択します。
「新規または既存の表を追加」ダイアログ・ボックスが表示されます。キューブ・データの格納用に既存の表を選択するか、新規の表を作成します。

3. ディメンションの各属性を、そのデータを格納するデータベース列にマップします。

データ・オブジェクトを使用してキューブを定義し、バインド(ROLAPキューブの場合のみ)を実行した後、キューブを配布する必要があります。キューブの配布の詳細は、「キューブの配布」を参照してください。

アナリティック・ワークスペースへのキューブの格納

MOLAP実装を使用したキューブはアナリティック・ワークスペースに格納されます。Database 10gのアナリティック・ワークスペース・エンジンには、AWXMLというAPIが用意されています。このAPIにより、(アナリティック・ワークスペース・マネージャのような)クライアント/サーバー方式の使用とjavaのストアド・プロシージャによるバッチ方式の使用の両方が可能になります。この項ではMOLAPキューブの実装の詳細を説明します。

不規則キューブ・データ

ディメンションの「記憶域」タブで「データ・ソースの自然キーを使用」を選択すると、このディメンションを使用するキューブの不規則ファクト・データを処理できるマッピング・コード(AWXMLマッピング・コード)が生成されます。またキューブ・ディメンション・レベルのソース列は、実際にはすべての親レベルにマップされます。これにより、不規則ファクト・データのロードが可能になります。

ディメンションの「記憶域」タブの「アナリティック・ワークスペースでサロゲート・キーを生成」を選択する場合、このディメンションのレベルでデータをロードするマッピングを作成するときに、このレベルのみにキューブ・ディメンション・メンバーをロードします。

集計の定義

Oracle Warehouse Builderにより追加の階層定義の必要なく既存のディメンションを再利用できます。集計は定義したキューブのディメンションのレベル参照に基づいて生成されます。キューブのディメンションのレベルがメンバーである階層のみが集計に含まれます。参照されるキューブのディメンション・レベルが階層の非リーフ・レベルである場合、階層内のそれより下位のレベルは、キューブまたはメジャーの解決の際に除外されます。たとえば、BUDGETとSALESという2つのキューブがある場合、これらはディメンションの階層定義を追加することなく同じディメンション定義を共有できます。

MOLAPキューブの自動解決

OLAP AWXMLエンジンの重要な属性は、アナリティック・ワークスペースに格納されているキューブの自動解決機能です。圧縮されたキューブおよび圧縮されていないキューブの両方を自動解決できます。圧縮されたキューブは、「拡張」ダイアログ・ボックスでキューブの圧縮オプションが選択されたキューブです。

次のいずれかの条件が満たされている場合にキューブは自動解決されます。

- キューブは圧縮されています。

- キューブは圧縮されていません。また次の追加の条件がtrueです。

- すべてのメジャーの「解決」プロパティを「はい」に設定します。

- キューブで参照するディメンション・レベルはレベルがメンバーのすべての階層のリーフ・レベルです。

- キューブを含むマッピングが実行されています。

キューブの増分集計は、自動解決(1つの操作でのロードおよび集計)に依存しています。「増分集計」はマッピングのキューブ演算子のプロパティで、自動解決キューブにのみ適用されます。Oracle Warehouse Builderでは、次の条件がtrueの場合は自動解決キューブではないキューブが生成されます。

- キューブは、キューブをロードするマッピングで解決されています。

- Oracle Warehouse Builderの変換がキューブの解決に使用されています。

- キューブは圧縮されていなません。また次の条件のいずれかがtrueです。

- いくつかのメジャーでは「解決」プロパティがNoに設定されています。

- キューブで参照するディメンション・レベルはレベルがメンバーのすべての階層のリーフのないレベルです。

キューブ・メジャーの解決

圧縮されているキューブおよび圧縮されていないキューブの両方に対して、1つのキューブ・メジャーのみを解決できます。圧縮されたキューブは、「拡張」ダイアログ・ボックスでキューブの圧縮オプションが選択されたキューブです。

圧縮されたキューブで1つのメジャーのみを解決する手順は、次のとおりです。

1. キューブ・エディタを開き、「集計」タブにナビゲートします。
プロジェクト・ナビゲータでキューブ名をダブルクリックすると、キューブ・エディタが開きます。

2. 「集計」タブの「メジャー」セクションで解決するメジャーを選択します。

3. 「メジャーの集計」セクションに、キューブで参照する各ディメンションの行が表示されます。キューブを解決するディメンションを表す行で、集計関数列のNOAGGを選択します。

圧縮されていないキューブで1つのメジャーのみを解決するには、最新のデータベースのパッチ10.2.0.2が必要です。Database 10gリリース1を使用している場合、詳細はパッチ4550247を参照してください。解決のためにキューブ・メジャーで定義されたオプションはどのメジャーが主な解決に含まれるのかを示します。ただし、マップのキューブ演算子にある解決インジケータがこの解決が処理されるかどうかを示します。そのため、マップはデータをロードするかまたは、ロードして解決できます。

ロードに依存しないキューブの解決

事前定義済変換WB_OLAP_AW_PRECOMPUTEを使用すると、ロードに依存しないキューブを解決できます。また、このファンクションによりメジャーもお互いに依存せずに解決できます。この変換ファンクションは「定義済」ノードのOLAPカテゴリにある「パブリック変換」ノードのグローバル・エクスプローラで使用できます。

次の例では、SALES_CUBEのメジャーSALESを解決します。

declare
rslt VARCHAR2(4000);
begin
rslt:=WB_OLAP_AW_PRECOMPUTE('MART','SALES_CUBE','SALES');
end;
/

このファンクションには、パラレル解決のパラメータおよびジョブ・キューの最大数のパラメータがあります。キューブをパラレルに解決する場合、非同期解決ジョブが起動し、マスター・ジョブIDはファンクションの戻り値を介して戻されます。

生成される計算プラン? 次の計算プランが生成されます。

- キューブの計算プラン

- 格納した各メジャーの計算プラン

これにより、データのロード後にメジャーを個々に解決するか、キューブ全体を解決することができます。また、実際の計算プランではメタデータに基づいてレベルを除外できます。

キューブのパラレル解決

キューブをロードするマッピングを構成することでキューブのパラレル解決を有効化できます。キューブ演算子には「パラレル解決の許可」というプロパティがあり、また「最大ジョブ・キュー割当済」プロパティもあります。これら2つの構成プロパティにより、パラレル解決を実行するかどうかが決定され、ジョブ・プールのサイズが決定されます。デフォルトではAWXMLエンジンによりこの値が決定されます。

MOLAPキューブ・マッピングの出力

キューブをロードするマッピングを実行するとき、出力パラメータの1つはAW_EXECUTE_RESULTです。パラレル解決を使用してマッピングが実行されると、この出力パラメータにはジョブIDが含まれます。次のデータ・ディクショナリ・ビューを使用して、ジョブを完了する時刻および次に行う手順を判別できます。

- ALL_SCHEDULER_JOBS

- ALL_SCHEDULER_JOB_RUN_DETAILS

- ALL_SCHEDULER_RUNNING_JOBS

マッピングがパラレル解決を使用して実行されない場合、AW_EXECUTE_RESULT出力パラメータによって「成功」タグまたはエラーが戻されます。エラーの詳細は、OLAPSYS.XML_LOAD_LOG表を参照してください。

非リーフ・レベル参照の制限

ディメンションが、サロゲート・キーを使用しないで定義されているスター実装の場合、非リーフ・レベルのレコードはディメンション表に含まれないため、キューブは、非リーフ・レベルを参照できません。親レベルの情報が子レコードに含まれているとき、それを一意に識別する方法はありません。キューブ・エディタで、キューブ内のディメンション参照についての非リーフ・レベルが選択できるとき、キューブをロードするときに正しくない結果になります。

親レベルのビジネス・キーのデータ・タイプとリーフ・レベルのビジネスキーが一致しない場合、配布エラーがファクト表に発生する可能性があります。この場合、外部キー列は親レベルのデータ・タイプを持ち、参照される主キー列は、リーフ・レベルのデータ・タイプを持つことになるため、外部キー定義は正しくない場合があります。

たとえば、L1とL2の2つのレベルを持つ単純なディメンションを作成します。これらに、 L1 NUMBERとL2 VARCHAR2(20)というデータ・タイプを持つビジネス・キー属性を割り当てます。次にこのディメンションを参照するキューブを作成して、L1(親)を参照先ディメンションとして選択します。このIDにサロゲート・キー属性ロールを作成する場合、ディメンションがサロゲート・キーを持たないようにディメンション属性をNULLに変更します。親レベルを参照として選択後、キューブを再バインドします。ファクト表を配布しようとすると、Oracle Warehouse BuilderによってORA-XXXXXエラーが戻されます。

キューブ定義の編集

キューブ・エディタを使用してキューブを編集し、定義を変更できます。ディメンション定義の編集時には、オブジェクトのメタデータのみが変更されます。物理オブジェクトの定義を更新するには、コントロール・センターを使用して変更後のディメンションを配布します。

キューブ定義を編集する方法は次のとおりです。

- プロジェクト・ナビゲータでキューブを右クリックして、「開く」を選択します。

または

- プロジェクト・ナビゲータで、キューブをダブルクリックします。

キューブ・エディタが表示されます。これらのタブを使用してキューブ定義を編集します。キューブ・エディタの各タブの詳細は、「キューブ・エディタを使用してのキューブの作成」を参照してください。

キューブの構成

キューブの構成時には、キューブおよび基礎となる表の両方を構成します。

キューブの物理プロパティを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、キューブ名を右クリックして「構成」を選択します。
キューブの「構成」タブが表示されます。

2. 次の各カテゴリにリストしたキューブ・パラメータを構成します。
これらのパラメータについては、次のようなキューブの構成についてのガイドラインがあります。

- 各ディメンションに外部キー制約が存在します。

- 各外部キー列には、参照先ディメンションへのビットマップ索引が生成されています。

識別

配布可能: このキューブを配布する場合は「TRUE」を選択します。Oracle Warehouse Builderでは、配布可能マークの付いた表制約についてのみスクリプトが生成されます。

配布オプション: このパラメータを使用してキューブの実装のタイプを指定します。オプションは次のとおりです。

- すべて配布 リレーショナル実装またはROLAP実装の場合は、キューブがデータベースに配布され、CWM定義がOLAPカタログに配布されます。MOLAP実装については、キューブはアナリティック・ワークスペースに配布されます。

- データ・オブジェクトのみ配布キューブのみをデータベースに配布します。このオプションを選択できるのは、リレーショナル実装を持つキューブの場合のみです。

- カタログにのみ配布CWM定義をOLAPカタログにのみ配布します。このオプションを使用するのは、キューブ・データのみの配布後にDiscoverer for OLAPなどのアプリケーションでそのデータにアクセスする必要がある場合です。以前にデータ・オブジェクトのみを配布した場合は、このオプションを使用すると、再度データ・オブジェクトを配布せずにCWMカタログ定義を配布できます。

- 集計の配布: キューブ・メジャーに定義されている集計を配布します。

マテリアライズド・ビュー索引表領域: マテリアライズド・ビュー索引を格納する表領域の名前。

マテリアライズド・ビューの表領域: キューブ用に作成されたマテリアライズド・ビューを格納する表領域の名前。

参照可能: このパラメータは、コード生成で使用されません。

サマリー管理

- コストベース集計: このパラメータは、OLAPサマリー(マテリアライズド・ビュー)を持つMOLAPキューブおよびROLAPキューブに適用されます。キューブの集計前の割合を示します。
このパラメータの値を0に設定した場合、集計値は作成されません。集計は実行時に計算されます。このため、この値に設定した結果として、最速のメンテナンス時間と最小の記憶域領域を実現できます。ただし、問合せのレスポンス時間は最も遅くなります。

このパラメータの値を100に設定した場合は、すべての集計値が作成されます。問合せの実行時には、これらの値をフェッチする必要があります。この値の結果として、問合せのレスポンス時間は最短になります。ただし、メンテナンス時間は長くなり、多量の記憶域領域が使用されます。

- 問合せリライトの有効化: 問合せリライトの有効化を有効にします。サーバーのクエリー・リライト・メカニズムでは、既存のマテリアライズド・ビューを使用するSQL問合せが自動的にリライトされます。これにより、問合せパフォーマンスが向上します。キューブがMV実装のROLAPを使用する場合のみ、このパラメータを設定します。

「MVリフレッシュの有効化」、「MV制約」、「リフレッシュ・モード」、「次のリフレッシュ日」、「リフレッシュ」および「リフレッシュ開始日」の詳細は、「サマリー管理」を参照してください。

キューブの配布方法の指定

配布オプション構成パラメータを設定することで、キューブがターゲット・スキーマに配布される形式を指定できます。キューブの配布オプションに設定できる値は、「すべて配布」、「データ・オブジェクトのみ配布」、カタログに配布および「集計の配布」です。構成オプション・パラメータの設定手順については、「キューブの構成」を参照してください。

配布オプション構成パラメータでは、キューブのフォームも同様に指定した生成モードで配布されます。キューブを含むモジュールのPL/SQL生成モード・パラメータは、モジュール内のオブジェクトが配布されるデータベースを示します。PL/SQL生成モードは、デフォルトのOracle Database 10g、Oracle Database 11g、Oracle8iおよびOracle9iの各オプションのいずれかに設定できます。詳細は、「ターゲット・モジュールの構成」を参照してください。

表3-14に、ROLAP実装でキューブを別のデータベース・バージョンに配布する方法を示します。

表3-14 キューブの配布オプション

配布オプション

ターゲット・スキーマ: Database 10g、ROLAP実装

ターゲット・スキーマ: Database 11g、ROLAP実装

ターゲット・スキーマ: Database 11g、MV実装によるROLAP

データ・オブジェクトの配布

n/a

n/a

n/a

カタログに配布

CWM2

CWM2

11g形式AW+

表3-15に、MOLAP実装でキューブを別のデータベース・バージョンに配布する方法を示します。

表3-15 MOLAP実装でのキューブの配布オプション

配布オプション

ターゲット・スキーマ: Database 10g

ターゲット・スキーマ: Database 11g

データ・オブジェクトの配布

10g形式AW

11g形式AW

カタログに配布

10g形式AW

11g形式AW

すべて配布

n/a

n/a

時間ディメンションの作成

Oracle Warehouse Builderには時間ディメンションの作成ウィザードが用意されており、完全な機能を持つ時間ディメンションをすばやく作成できます。時間ディメンションにデータを移入するマッピングも自動的に作成されます。時間ディメンション用にリレーショナル実装を選択すると、時間ディメンション・データを格納する実装オブジェクトも作成されます。

また、ディメンション・エディタを使用して、独自仕様による時間ディメンションを定義することもできます。この場合は、実装オブジェクトと、時間ディメンションをロードするマップを作成する必要があります。

時間ディメンション・ウィザードを使用した時間ディメンションの作成

時間ディメンションの作成ウィザードを使用して時間ディメンションを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. 時間ディメンションを作成するターゲット・モジュールを開きます。

3. 「ディメンション」を右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。

4. 「時間ディメンション」を選択して、「OK」をクリックします。
時間ディメンションの作成ウィザードのようこそページが表示されます。「次へ」をクリックして次に進みます。ウィザードに表示される指示に従って次の各ページを完了します。

- 名前と説明ページ

- 記憶域ページ

- データ生成ページ

- レベル・ページ(カレンダ時間ディメンションのみ)

- レベル・ページ(会計時間ディメンションのみ)

- 作成前の設定ページ

- 時間ディメンション進行状況ページ

- サマリー・ページ

名前と説明ページ

名前ページでは、時間ディメンションを説明します。名前ページでは、次の詳細を入力します。

- 名前: 時間ディメンション名を入力します。ディメンション名は、モジュール内で一意にする必要があります。

- 説明: 時間ディメンションの説明(オプション)を入力します。

記憶域ページ

記憶域ページを使用して、データベースへの時間ディメンション・データの格納方法を指定します。記憶域タイプは、キューブ全体の最下位レベルに格納されるデータ量、および必要なリフレッシュ・レートに基づいて選択します。記憶域タイプのオプションは次のとおりです。

- リレーショナル記憶域(ROLAP): 時間ディメンション定義がデータベースにリレーショナル形式で格納されます。このオプションを選択すると、リレーショナル実装またはROLAP実装を使用する時間ディメンションを作成できます。
この時間ディメンションの実装に必要な基礎となる表は、Oracle Warehouse Builderにより自動的に作成されます。時間ディメンションの実装には、スター・スキーマが使用されます。

ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。

- ROLAP: MV 時間ディメンション定義とそのデータがデータベースにリレーショナル形式で格納されます。また、キューブ編成されたMVは、アナリティック・ワークスペースに作成されます。このオプションを選択すると、リレーショナル実装を使用してサマリーをアナリティック・ワークスペースに格納するディメンションが作成されます。
このオプションを使用することで、Oracle Database 11gにキューブ編成されたMVに基づいてサマリーを管理できます。問合せを変更する必要なしに、問合せのパフォーマンスを大幅に向上できます。

- MOLAP: 多次元記憶域: 時間ディメンション定義とデータがアナリティック・ワークスペースに格納されます。このオプションを選択すると、MOLAP実装を使用する時間ディメンションを作成できます。
時間ディメンションは、Oracle Warehouse Builderによりモジュールと同じ名前のアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースを格納する表領域は、ディメンション・メタデータを含む、スキーマ用のユーザー表領域として定義された表領域です。

これらのオプションの詳細は、「記憶域タイプ・ページ」を参照してください。

データ生成ページ

データ生成ページを使用して、時間ディメンションのタイプおよび格納されるデータの範囲など、時間ディメンションの詳細情報を指定します。このページには、時間ディメンションに格納されるデータの範囲と一時データのタイプの詳細が表示されます。

データの範囲 データの範囲セクションでは、時間ディメンションに格納される一時データの範囲を指定します。範囲を指定するには、次の項目を定義します。

- 開始年: 時間ディメンションへのデータ格納を開始する年。リストをクリックして開始年を選択します。

- 年数: 時間ディメンションにデータを格納する開始年からの合計年数。リストから値を選択して年数を指定します。

時間ディメンションのタイプ 時間ディメンションのタイプ・セクションを使用して、作成する時間ディメンションのタイプを指定します。時間ディメンションのタイプを次のオプションから1つ選択します。

- カレンダ: カレンダ時間ディメンションを作成します。

- 会計: 会計時間ディメンションを作成します。会計時間ディメンションを作成するには、次の詳細を追加入力します。

- 会計規則: 会計月の表現に使用する規則を選択します。使用可能なオプションは、544および445です。

- 会計年度の開始: 会計年度の開始月日を選択します。

- 会計週の開始: 会計週の開始曜日を選択します。

レベル・ページ(カレンダ時間ディメンションのみ)

レベル・ページを使用して、作成するカレンダ階層とカレンダ階層に含めるレベルを選択します。「カレンダ週」レベルから上のレベルへのドリルアップ・パスはないため、カレンダ階層の作成用に次の2つのオプションが用意されています。

- 通常階層

- 週階層

通常階層  「通常階層」には、次のレベルが含まれます。

- カレンダ年

- カレンダ四半期

- カレンダ月

- 日

カレンダ階層に含めるレベルを選択します。少なくとも2つのレベルを選択する必要があります。

週階層 「週階層」には、「カレンダ週」および「日」という2つのレベルが含まれます。この階層を使用して、「カレンダ週」レベルを含む階層を作成します。「週階層」オプションを選択すると、これらのレベルの両方がデフォルトで選択されます。

レベル・ページ(会計時間ディメンションのみ)

レベル・ページを使用して、会計階層に含めるレベルを選択します。次のレベルを選択できます。

- 会計年度

- 会計年度四半期

- 会計年度月

- 会計年度週

- 日

少なくとも2つのレベルを選択します。Oracle Warehouse Builderにより、選択したレベルを含む会計階層が作成されます。追加の階層を作成するには、ディメンション・エディタを使用します。ディメンション・エディタの使用方法の詳細は、「時間ディメンション定義の編集」を参照してください。

作成前の設定ページ

作成前の設定ページには、時間ディメンションの作成ウィザードの前ページで選択したオプションのサマリーが表示されます。これには、属性、レベル、階層および時間ディメンションの移入に使用するマップの名前が含まれます。Oracle Warehouse Builderでは、これらの設定を使用して時間ディメンションを実装するオブジェクトが作成されます。ウィザードの実装に進むには、「次へ」をクリックします。前のウィザード・ページで選択したオプションを変更するには「戻る」をクリックします。

時間ディメンション進行状況ページ

時間ディメンション進行状況ページには、時間ディメンションの実装の進行状況が表示されます。このページの進行状況ステータス・ログには、時間ディメンションを実装するために時間ディメンション・ウィザードで実行されるアクティビティがリストされます。処理の完了後、「次へ」をクリックして次に進みます。

サマリー・ページ

サマリー・ページには、ウィザードの各ページで選択したオプションのサマリーが表示されます。このページを使用して、選択したオプションを確認します。

時間ディメンションの作成を完了するには、「終了」をクリックします。完全な機能を持つ時間ディメンションが作成されます。このディメンションは、プロジェクト・エクスプローラの「ディメンション」ノードの下に表示されます。この時間ディメンションをロードするマッピングは、プロジェクト・エクスプローラの「マッピング」ノードの下に表示されます。

Oracle Warehouse Builderにより次のオブジェクトが作成されます。

- 時間ディメンション・オブジェクト

- 時間ディメンション・レベルのサロゲートIDを移入する順序

- 時間ディメンション・データを格納する物理構造
リレーショナル実装の場合は、ディメンション・データを格納するデータベース表がワークスペースに作成されます。また、時間ディメンション属性は、Oracle Warehouse Builderにより、その値を格納するデータベース列にバインドされます。MOLAP実装の場合は、時間ディメンションとディメンション・データを格納するアナリティック・ワークスペースが作成されます。

- 時間ディメンションにデータを移入するマッピング。

注意:
時間ディメンションを削除しても、表、順序、および時間ディメンションに関連付けられているマッピングは削除されません。これらのオブジェクトは明示的に削除する必要があります。

時間ディメンション・ウィザードで使用されるデフォルト

時間ディメンション・ウィザードを使用して時間ディメンションを作成する場合、次のデフォルトが使用されます。

- 記憶域: リレーショナル記憶域のデフォルト実装はスター・スキーマです。MOLAP実装の場合、ディメンションは、時間ディメンションが作成されるモジュールと同じ名前のアナリティック・ワークスペースに格納されます。このアナリティック・ワークスペースは、ディメンションの格納先モジュールを所有するスキーマ用のユーザー表領域として割り当てられた表領域に格納されます。

- 階層: ディメンションの作成ウィザードのレベル・ページに表示された全レベルを含む標準階層が作成されます。この階層には、レベル・ページに表示されたのと同じ順序でレベルが含まれています。

時間ディメンション定義の編集

時間ディメンションを編集する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。

2. 編集対象の時間ディメンションを含むターゲット・モジュールを開きます。

3. 編集する時間ディメンションを右クリックし、「開く」を選択します。また、時間ディメンションをダブルクリックする方法もあります。その時間ディメンションのディメンション・エディタが表示されます。

4. 次の各タブで情報を編集します。

- 「名前」タブ

- 「記憶域」タブ

- 「属性」タブ

- 「レベル」タブ

- 「階層」タブ

時間ディメンションを変更すると、新規の移入マップと新規の実装表が作成されます。既存の移入マップと実装表を削除するか保持するかを選択できます。

マッピング・エディタを使用して、時間ディメンションの移入マップを変更します。時間ディメンションを移入するマッピングを配布する必要があります。

配布前の移入マップを削除すると、時間ディメンションにデータを移入できません。これを回避するには、時間ディメンション・ウィザードを再実行して、別のディメンション移入マップを作成します。

「名前」タブ

「名前」タブを使用して時間ディメンションを記述します。このタブで次の詳細を入力します。

- 名前: 時間ディメンション名。名前はそのモジュール内で一意である必要があります。ネーミング規則の詳細は、「データ・オブジェクトのネーミング規則」を参照してください。

- 説明: 時間ディメンションの説明(オプション)。

- データの範囲: 時間ディメンションに格納されるデータの範囲を指定します。範囲を指定するには、次の項目を定義します。

- 開始年: 時間ディメンションへのデータ格納を開始する年。リストをクリックして開始年を選択します。

- 年数: 時間ディメンションにデータを格納する開始年からの合計年数。リストから値を選択します。

「記憶域」タブ

記憶域タイプ・ページを使用して、時間ディメンション用の記憶域のタイプを指定します。使用できる記憶域オプションは「リレーショナル」または「MOLAP」です。

リレーショナル: 「リレーショナル」オプションを選択すると、時間ディメンション定義はデータベースにリレーショナル形式で格納されます。時間ディメンションのリレーショナル実装について次のオプションを1つ選択します。

- スター・スキーマ: 時間ディメンションはスター・スキーマを使用して実装されます。ディメンション・データは、1つのデータベース表またはビューに格納されます。

- スノーフレーク・スキーマ: 時間ディメンションはスノーフレーク・スキーマを使用して実装されます。ディメンション・データは、複数の表またはビューに格納されます。

ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。

MOLAP 「MOLAP」を選択すると、時間ディメンションの定義とデータがデータベースのアナリティック・ワークスペースに格納されます。この方法では、アナリティック・ワークスペースを使用して時間ディメンション・データが格納されます。MOLAP実装の場合は次の詳細を入力します。

- AW名: 時間ディメンションを格納するアナリティック・ワークスペースの名前を入力します。省略記号のボタンをクリックすると、使用可能なアナリティック・ワークスペースのリストが表示されます。Oracle Warehouse Builderでは、現行のプロジェクトにあるモジュールごとにノードが1つ表示されます。モジュールを開き、モジュール内のディメンション・オブジェクトのリストを表示します。リストからオブジェクトを選択すると、そのオブジェクトと同じアナリティック・ワークスペースに時間ディメンションが格納されます。

- 表領域名: アナリティック・ワークスペースを格納する表領域の名前を入力します。値を入力しない場合、アナリティック・ワークスペースは時間ディメンションのメタデータを含むスキーマのユーザー表領域として定義されている表領域に格納されます。

「属性」タブ

「属性」タブでは、ディメンション属性と、時間ディメンションのディメンション・キーの移入に使用する順序を定義します。「順序」フィールドは、時間ディメンションのディメンション・キー列に移入する順序の名前を表します。このフィールドの右にある「選択」を使用して、「利用可能な順序」ダイアログ・ボックスから順序を選択します。このダイアログ・ボックスには、現行のプロジェクトに属している順序がすべて表示されます。

ディメンション属性 「ディメンション属性」セクションには、時間ディメンションのディメンション属性が表示されます。このページは、新規ディメンション属性の作成にも使用します。属性ごとに次の詳細を指定します。

- 名前: ディメンション属性名。属性名はディメンション内で一意である必要があります。

- 説明: 属性の説明(オプション)。

- 識別子: 属性の識別子のタイプを表します。リストには2つのオプション「サロゲート」および「ビジネス」が表示されます。識別子のタイプを選択します。

- データ型: 属性のデータ型を選択します。

- 長さ: 長さは文字データ型に対してのみ指定されます。

- 精度: 列に使用できる合計桁数を定義します。精度は数値データ型に対してのみ定義されます。

- スケール: 小数点以下の合計桁数を定義します。スケールは数値データ型に対してのみ定義されます。

- 秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。

- 記述子: 記述子のタイプを選択します。オプションは「簡単な説明」、「詳細な説明」、「開始日」、「終了日」、「期間」および「前回の期間」です。

「レベル」タブ

「レベル」タブでは、時間ディメンションのレベルを定義します。「レベル」セクションで名前と説明(オプション)を入力してレベルを追加作成できます。「レベル」タブの内容の詳細は、「レベル属性ページ」を参照してください。

「階層」タブ

「階層」タブを使用して、時間ディメンションに階層を追加作成します。時間ディメンションの定義を変更した場合、それを移入するマップに変更内容を反映させる必要があります。「マップ作成」をクリックして、時間ディメンションを移入するマップを再作成します。会計時間ディメンションの場合は、「会計の設定」をクリックして会計の設定を変更できます。「会計情報設定」ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用して、会計規則、会計年度の開始および会計週の開始を変更します。

「階層」タブには、「階層」および「レベル」という2つのセクションがあります。

- 階層: このセクションを使用して階層を作成します。Oracle Warehouse Builderにより時間ディメンションの既存の階層が表示されます。階層を追加作成するには、階層名と階層タイプを指定します。階層タイプのオプションは、「なし」、「会計」、「カレンダ週」および「カレンダ年」です。「デフォルト」プロパティを使用して、どの階層がデフォルト階層であるかを指定します。

- レベル「レベル」セクションには、時間ディメンションのレベルが表示されます。新規階層の作成時に「適用可能」オプションを選択して、階層に含めるレベルを選択します。

時間ディメンションの実装の変更

時間ディメンション・エディタを使用して、時間ディメンションの実装を変更します。実装詳細では、スター・スキーマまたはスノーフレーク・スキーマを使用して時間ディメンションが実装されるかどうかを決定します。

各時間ディメンションに、その時間ディメンションをロードするマッピングが自動的に作成されます。そのため時間ディメンションを修正する場合は、時間ディメンションをロードするマッピングも修正する必要があります。

注意:
アンバインド・オプションを使用して、時間ディメンションを実装オブジェクトからアンバインドすることはできません。

時間ディメンションの実装を変更するには、次の手順を実行してください。

1. プロジェクト・ナビゲータで、実装を変更する時間ディメンションをダブルクリックします。
時間ディメンションのエディタが開きます。

2. 「ROLAP: リレーショナル記憶域」オプションの「記憶域」タブで、時間ディメンションの新規実装を選択します。
スター・スキーマ実装を変更するには、「スター」を選択します。

スノーフレーク・スキーマ実装を変更するには、「スノーフレーク」を選択します。

3. 「階層」タブで、「マップ作成」をクリックします。
変更された実装に基づいて時間ディメンションをロードするマッピングが再定義されます。

「物理的バインド」タブに、時間ディメンションに対して変更されたバインドが表示されます。

時間ディメンションの移入

時間ディメンションは、データを時間ディメンションにロードするマッピングを作成することで移入します。時間ディメンションの作成ウィザードを使用して時間ディメンションを作成すると、次のパラメータの値に基づいて時間ディメンションにデータを移入するマッピングが作成されます。

- データの開始年

- データの年数

- 会計年度の開始日と開始月(会計時間ディメンションのみ)

- 会計年度週の開始日(会計時間ディメンションのみ)

- 会計タイプ(会計時間ディメンションのみ)

これらの属性の値は、時間ディメンションの作成ウィザードを使用して時間ディメンションを作成する時点で初期化されます。

表3-1では、カレンダ時間ディメンションをロードするマッピングを示しています。マッピング入力演算子DATE_INPUTSは、時間ディメンションを移入するために必要な属性を表します。この演算子の属性値は、時間ディメンションを作成したときに設定した値に基づいて設定されます。これらの値は、DATE_INPUTS演算子をダブルクリックして、Output Attributesリンクをクリックし、入力パラメータの値を変更すると変更できます。ただし、パラメータ値を変更する場合、時間ディメンションをロードするマッピングの再配布を再生成する必要があります。

図3-1 時間ディメンションを移入するマッピング

図3-1 「時間ディメンションを移入するマッピング」の説明

時間ディメンションの動的移入

一部のウェアハウス環境では、現在の要件に基づいて時間ディメンションにデータを動的に移入する必要があります。時間ディメンションへの移入に使用される値は、時間ディメンションの作成時に設定されていますが、Oracle Warehouse Builderではこれらの値を変更して、必要なときに時間ディメンションにデータを動的に移入できます。

配布プリファレンスには、「実行パラメータを要求」というプリファレンスが含まれます。このパラメータをTrueに設定すると、実行時に入力パラメータの値を指定できます。

時間ディメンションを動的に移入するには、次の手順を実行してください。

1. 「実行パラメータを要求」プリファレンスをTrueに設定するようにします。
「ツール」メニューで「プリファレンス」を選択して「プリファレンス」ダイアログ・ボックスを表示します。左側のパネルで「Oracle Warehouse Builder」ノードを展開し、左側のパネルの「配布」をクリックして、「実行パラメータを要求」を選択します。

2. マッピングを右クリックして「開始」を選択し、時間ディメンションをロードするマッピングを実行します。
開始年、年数などの時間ディメンションをロードするために使用される入力パラメータを含む「入力パラメータ」ダイアログ・ボックスが表示されます。

3. YEAR_START_DATEおよびNUMBER_YEARSのパラメータに値を設定して、「OK」をクリックします。会計時間ディメンションについては、FISCAL_TYPE、DAYS_OF_FISCAL_WEEK、およびFISCALYEAR_START_DATEの値も設定します。

データ移入のオーバーラップ

ユーザーは、時間ディメンションを複数回移入するマップを実行できます。各実行時に、時間ディメンションの移入に必要な属性を指定します。その際、マッピングの実行が以前の実行とオーバーラップする可能性があります。これは、時間ディメンションに存在するデータをロードしようとしたことを意味します。このような場合、レコードが以前の実行ですでに移入されているときは、データは再度移入されません。

たとえば、最初の実行で、2000年から5年間のデータを使用して時間ディメンションを移入したとします。2回目の実行で、2003年から3年間のデータを使用して時間ディメンションを移入しました。2003年の始めから2004年の終わりまでのレコードは時間ディメンションに存在しているため、これらは再作成されません。

第II部

ETLの実行

Oracle Warehouse Builderでは、抽出、変換およびロード(ETL)操作を実行できます。データ・ウェアハウスにロードする前に、ソース・データの様々な変換方法の中から選択できます。ここでは、データ配布およびETLオブジェクトとデータ監査を説明します。

構成は次のとおりです。

- 第4章「データ変換の概要」

- 第5章「PL/SQLマッピングの作成」

- 第6章「ディメンション・オブジェクトを使用したETLの実行」

- 第7章「SQL*Loader、SAPおよびコード・テンプレート・マッピング」

- 第8章「プロセス・フローの設計」

- 第9章「カスタム変換の定義」

- 第10章「パフォーマンスおよび拡張ETL概念の理解」

- 第11章「ETLジョブのスケジューリング」

- 第12章「ターゲット・スキーマへの配布およびETLロジックの実行」

- 第13章「配布と実行の監査」

- 第14章「マッピング・メタデータ依存性」

- 第15章「ETL設計のトラブルシューティングおよびエラー処理」

- 第16章「Oracle Warehouse BuilderでのWebサービスの作成と消費」

- 第17章「トランスポータブル・モジュールを使用する大量のデータの移動」

4 データ変換の概要

データの変換は、抽出、変換およびロード(ETL)ツールの主要な機能の1つです。Oracle Warehouse Builderには、データ変換の様々な方法が用意されています。この章では、Oracle Warehouse Builderでのデータ変換の概要について説明します。

この章の内容は次のとおりです。

- Oracle Warehouse Builderでのデータ変換について

- マッピングについて

- 演算子の使用について

- 変換について

- 変換ライブラリについて

Oracle Warehouse Builderでのデータ変換について

ソース・データをインポートしてターゲットを定義した後で、ソース・データをターゲットに必要な出力に変換する方法を検討します。Oracle Warehouse Builderでは、マッピング・エディタでマッピングを設計し、データの変換方法を指定します。マッピングはOracle Warehouse Builderのエンティティで、ソースからデータを抽出して変換し、1つ以上のターゲットにロードする一連の操作が記述されています。

マッピングを設計する際の基本単位は演算子です。マッピングで実行する各操作を演算子で記述します。操作には、データの抽出、データのロード、およびデータの変換(集計、結合、検索の実行など)が含まれます。操作の順序を指定するには、マッピングにデータ・フロー接続を接続します。

マッピングでデータ変換を指定するには、事前作成済の多くの変換演算子から演算子を選択するか、新しい変換演算子を設計します。事前作成済の変換演算子を使用する場合、フィルタ処理、結合、ソートなど、よく実行する操作を実行できます。Oracle Warehouse Builderには、データのマージ、クレンジング、プロファイリングなどの複雑な操作のための事前作成済の演算子も用意されています。事前作成済の変換演算子の中に要件を満たす演算子がない場合、新しい演算子を設計できます。PL/SQLファンクション、プロシージャ、パッケージ・ファンクションおよびパッケージ・プロシージャのOracleデータベース・ライブラリに基づいて新しい変換演算子を作成できます。

抽出およびロードの操作は、数多くのソースおよびターゲットの演算子によって表されます。たとえば、表演算子は表を表し、フラット・ファイル演算子はフラット・ファイルを表します。その演算子が抽出とロードのどちらの操作を示すかは、マッピングにおいてその演算子を他の演算子とどのように結合するかによって決まります。

重要な点は、マッピング内の演算子とそれが表すオブジェクトの相違です。演算子とオブジェクトは、2つをバインドするまでは別個のエンティティです。たとえば、表演算子をマッピングに追加すると、その演算子をリポジトリの特定の表にバインドできます。演算子を表にバインドすると、2つの定義の変更を同期化できます。表演算子がターゲットを表している場合、マッピング内の演算子を変更すると、これらの変更をリポジトリ内の表に反映できます。演算子がメタデータ定義の変更元であるソースを表している場合、デザイン・センターに表を再インポートすると、マッピング・エディタで表演算子に対する変更を伝播できます。

マッピングについて

マッピングとはデータをソースから抽出し、変換してターゲットにロードする一連の操作を表します。これによりデータ・フローおよびデータで実行される操作がビジュアル表示されます。マッピングをWarehouse Builderで設計する場合は、マッピング・エディタ・インタフェースを使用します。または、『Oracle Warehouse Builder APIおよびスクリプト・リファレンス』の説明に従って、Oracle Warehouse Builderのスクリプト・インタフェースであるOMB*Plusを使用してマッピングを作成および定義することもできます。

マッピングで定義したETLロジックに基づいて、Oracle Warehouse Builderにより設計の実装に必要なコードが生成されます。Oracle Warehouse Builderでは次の言語のコードを生成できます。

- PL/SQLマッピングについては、「PL/SQLマッピング」を参照してください。

- SQL*Loaderマッピングについては、「SQL*Loaderマッピング」を参照してください。

- SAP ABAPマッピングについては、「SAP ABAPマッピング」を参照してください。

- コード・テンプレート・マッピングについては「コード・テンプレート・マッピング」を参照してください。

演算子の使用について

マッピングの基本となる設計要素は演算子です。演算子を使用して、データ・フローでソースおよびターゲットを表現します。また、演算子を使用して、ソースからターゲットへのデータの変換方法を定義することもできます。ソースとして選択する演算子は、マッピングの設計方法に影響を与えます。Oracle Warehouse Builderでは、選択された演算子に基づいて、次のいずれかのマッピング生成言語にマッピングが割り当てられます。各コード言語では、マッピングを設計する際、特定のルールに従う必要があります。

- SQL
コード・テンプレートを含むマッピングについては、SQLコードが生成されます。

- PL/SQL
フラット・ファイル演算子がソースまたはSAP/R3ソースとして指定されていないすべてのマッピングでは、Oracle Warehouse BuilderによりPL/SQLコードが生成されます。PL/SQLマッピングの設計上の考慮事項は、指定するオペレーティング・モード(行ベースまたはセット・ベース)によって異なります。詳細は、第10章「パフォーマンスおよび拡張ETL概念の理解」を参照してください。

- SQL*Loader
フラット・ファイル演算子をソースとして定義すると、Oracle Warehouse BuilderによりSQL*Loaderコードが生成されます。SQL*Loaderマッピングを正しく設計するには、「フラット・ファイル・ソース演算子」に記載されているガイドラインに従ってください。

- ABAP
SAP/R3ソースを定義すると、Oracle Warehouse BuilderによりABAPコードが生成されます。SAPソースに対するマッピングの設計上の考慮事項は、「SAP抽出マッピングの作成」を参照してください。

演算子のタイプ

マッピングを設計するときは、マッピング・エディタ・パレットから演算子を選択し、キャンバスにドラッグできます。

ここでは、演算子のタイプを紹介し、演算子についてこのマニュアルに記載されている詳細な情報の参照先(章)を示します。

- ソースおよびターゲット演算子: これらの演算子は、Oracle Databaseオブジェクト、フラット・ファイル、リモート・ソースまたはリモート・ターゲット、およびOracle以外のソースおよびターゲットを表します。

- リモートおよびOracle以外のソースおよびターゲット演算子: これらの演算子の使用には特別な要件があります。「リモートおよびOracle以外のソースおよびターゲット演算子の使用」を参照してください。

- 変換演算子: これらの演算子はデータを変換します。

- 事前/事後処理演算子: マッピングを実行する前または後にファンクションまたはプロシージャをコールします。

- プラッガブル・マッピング演算子: これらは他のマッピングで演算子として機能するマッピングです。

- リアルタイム・データ・ウェアハウス演算子: これらの演算子は、リアルタイムおよびバッチのマッピングの作成に使用されます。

ソース演算子とターゲット演算子

リレーショナル・データベース・オブジェクトおよびフラット・ファイルオブジェクトを表すには、ソース演算子およびターゲット演算子を使用します。

表4-1に、ソース演算子とターゲット演算子のアルファベット順のリストと簡単な説明を示します。これらのオプションの詳細は、第25章「ソース演算子とターゲット演算子」を参照してください。

表4-1 ソース演算子とターゲット演算子

アイコン

演算子名

説明

定数

1つの出力グループが作成されます。このグループには、1つ以上の定数属性を指定できます。

オブジェクトの構成

オブジェクト・タイプおよびコレクション・タイプを作成します。

キューブ

定義済のキューブを表します。

データ・ジェネレータ

レコード番号、システムの日付、順序の値などの情報を表示します。

ディメンション

定義済のディメンションを表します。

オブジェクトの拡張

オブジェクト・タイプを構成する個々の属性を取得するために、オブジェクト・タイプを拡張します。

外部表

定義済またはインポート済の外部表を表します。

フラット・ファイル

定義済またはインポート済のフラット・ファイルを表します。

マテリアライズド・ビュー

定義済のマテリアライズド・ビューを表します。

キュー

定義済のアドバンスト・キューを表します。

順序

1行ごとに増分する連続番号を生成します。

表

定義済またはインポート済の表を表します。

可変長配列イテレータ

表タイプで値を反復します。

ビュー

定義済またはインポート済のビューを表します。

変換演算子

ソース・データを変換するには、マッピング内のデータ・フロー演算子を使用します。

表4-2に、データ・フロー演算子のアルファベット順のリストと簡単な説明を示します。これらの演算子の詳細は、第26章「データ・フロー演算子」、第22章「Name and Address演算子」、第23章「照合、マージ、およびデュプリケーション」

表4-2 データ・フロー演算子

アイコン

演算子名

説明

アグリゲータ

SUMやAVGなどのデータ集計を実行し、集計されたデータを使用して行セットを出力します。

Anydataキャスト

Sys.AnyDataタイプのオブジェクトを主タイプまたはユーザー定義タイプに変換します。

デュプリケータ解除

マッピングで生成されたSELECTコードにDISTINCT句を挿入して、ソース内の重複するデータを削除します。

式

この演算子の1つの出力パラメータについて、非プロシージャ・アルゴリズムを定義するSQL式を記述できます。式テキストには、入力パラメータ名、変数名およびライブラリ・ファンクションを組み合せて使用できます。

フィルタ

行セットの行を特定の条件に基づいてフィルタリングします。

ジョイナ

カーディナリティの異なる複数のソースから取り込んだ複数の行セットを結合し、1つの出力行セットを生成します。

検索

表、ビュー、マテリアライズド・ビュー、外部表、キューブ、ディメンションなどの参照オブジェクトからデータを参照します。

Match-Merge

データ品質に関する演算子で、一致するレコードを識別して単一のレコードにマージします。

名前とアドレス

Name and Addressソース・データのエラーや不整合を識別して修正します。

ピボット

複数の属性の単一行を複数の行に変換します。複数の行ではなく、複数の属性間に含まれるデータを変換する場合に、この演算子を使用します。

集合演算

マッピングで、UNION、UNION ALL、INTERSECTおよびMINUSの演算を実行します。

ソーター

属性を昇順または降順にソートします。

スプリッタ演算子

ブール分割条件を使用して、単一の入力行セットを複数の出力行セットに分割します。

副問合せフィルタ

副問合せの結果に基づくフィルタ行。

テーブル・ファンクション

カスタム・コードを開発して入力行セットを操作し、カーディナリティが同じまたは異なる、物理表のように問合せ可能な出力行セットを戻すことができます。

変換

PL/SQLファンクションまたはプロシージャを使用して、行セット内の行の属性値データを変換します。

アンピボット

複数の入力行を1つの出力行に変換します。これにより、ソース・データ内の属性ごとにグループ化されているソース行セットからソースを抽出し、そこから単一の行を作成できます。

事前/事後処理演算子

マッピングの実行前または後に処理を実行するには、事前/事後処理演算子を使用します。マッピングに対する値を指定するには、マッピング・パラメータ演算子を使用します。

表4-3に、事前/事後処理演算子とマッピング・パラメータ演算子と簡単な説明を示します。これらの演算子の詳細は、第26章「データ・フロー演算子」を参照してください。

表4-3 事前/事後処理演算子

アイコン

演算子

説明

入力パラメータのマッピング

パラメータ値をマッピングに渡します。

出力パラメータのマッピング

マッピングの外部に値を渡します。

マッピング後プロセス

マッピングを実行した後に、ファンクションまたはプロシージャをコールします。

マッピング前プロセス

マッピングを実行する前に、ファンクションまたはプロシージャをコールします。

プラッガブル・マッピング演算子

プラッガブル・マッピング演算子は、マッピング演算子の再利用可能なグループで、単一の演算子として機能します。

表4-4 に、プラッガブル・マッピング演算子と簡単な説明を示します。詳細は、第26章「データ・フロー演算子」を参照してください。

表4-4 プラッガブル・マッピング演算子

アイコン

演算子

説明

プラッガブル・マッピング

再利用可能なマッピングを表します。

プラッガブル・マッピング入力シグネチャ

プラッガブル・マッピングにフローする入力属性の組合せです。

プラッガブル・マッピング出力シグネチャ

プラッガブル・マッピングからフローする出力属性の組合せです。

リアルタイム・データ・ウェアハウス演算子

この演算子ではキューを使用して変更データの取得を実行できます。ソース・オブジェクトで変更を取得して、それをターゲット表に適用するマッピングを作成できます。

表4-5 は、リアルタイム・データ・ウェアハウス演算子を示します。

表4-5 プラッガブル・マッピング演算子

アイコン

演算子

説明

LCRキャスト

LCR(論理変更レコード)オブジェクトをその構成列に展開します。

LCRスプリッタ

データ・フロー・パスに沿って別の表に変更を加えます。

変換について

変換とは、データの変換を可能にするPL/SQLファンクション、プロシージャ、パッケージおよびタイプです。変換は、ETLプロセスを定義するマッピングとプロセス・フローを設計する場合に使用します。変換は、Oracle Warehouse Builderワークスペースに格納され、定義したプロジェクトで使用できます。変換パッケージの配布はパッケージ・レベルで行われますが、実行は変換レベルです。

変換のタイプ

Oracle Warehouse Builderでの変換は、次のように分類できます。

- 事前定義済変換

- カスタム変換

事前定義済変換

Oracle Warehouse Builderには、標準的な変換操作を実行できる一連の事前定義済変換が用意されています。事前定義済変換は、組込みおよびシードされたファンクションとプロシージャで構成されているパブリックのOracle事前定義済ライブラリに含まれています。データの変換には、これらの事前定義済変換を直接使用できます。

事前定義済変換は、次のカテゴリに編成されています。

- 管理

- 文字

- コントロール・センター

- 変換

- 日付

- 数値

- OLAP

- その他

- SYS

- 空間

- ストリーム

- XML

各カテゴリに属する変換の詳細は、第28章「Oracle Warehouse Builder変換リファレンス」を参照してください。

カスタム変換

カスタム変換はユーザーが作成する変換です。カスタム変換では、定義の一部に事前定義済変換を使用できます。

カスタム変換には、次のカテゴリが含まれます。

- ファンクション: ファンクション・カテゴリにはスタンドアロン・ファンクションが含まれます。このカテゴリは、グローバル・ナビゲータにある「パブリック変換」ノードの「カスタム」ノードで使用可能です。また、これはプロジェクト・ナビゲータにあるすべてのOracleモジュール、DB2モジュールおよびSQL Serverモジュールの「変換」ノードに自動的に作成されます。
ファンクションはユーザーが定義するか、データベースからインポートできます。ファンクション変換の入力パラメータは0からnで、結果値が生成されます。

- プロシージャ: プロシージャ・カテゴリには変換に使用されたあらゆるスタンドアロン・プロシージャが含まれます。このカテゴリは、グローバル・ナビゲータにある「パブリック変換」ノードの「カスタム」ノードで使用可能です。また、これはグローバル・ナビゲータにあるすべてのOracleモジュールの「変換」ノードに自動的に作成されます。
プロシージャはユーザーが定義するか、データベースからインポートできます。プロシージャ変換の入力パラメータは0からnで、0からnの出力パラメータが生成されます。

- テーブル・ファンクション: テーブル・ファンクション・カテゴリには変換に使用されたあらゆるスタンドアロン・テーブル・ファンクションが含まれます。このカテゴリは、グローバル・ナビゲータにある「パブリック変換」ノードの「カスタム」ノードで使用可能です。また、これはプロジェクト・ナビゲータにあるすべてのOracleモジュールの「変換」ノードに自動的に作成されます。
テーブル・ファンクション・カテゴリは、パッケージにもリストされます。ここで作成されたすべてのテーブル・ファンクションは、パッケージに属します。

- パッケージ: パッケージ・カテゴリにはパッケージが含まれており、パッケージはファンクション、プロシージャ、テーブル・ファンクションおよびPL/SQLタイプを含みます。このカテゴリは、グローバル・ナビゲータにある「パブリック変換」ノードの「カスタム」ノードで使用可能です。また、これはグローバル・ナビゲータにあるすべてのOracleモジュールの「変換」ノードに自動的に作成されます。
PL/SQLパッケージは、Oracle Warehouse Builderで作成するか、Oracle Warehouse Builderにインポートすることができます。パッケージ本体は変更可能です。ファンクションまたはプロシージャのシグネチャとなるパッケージ・ヘッダーは変更できません。ただし、Oracle Warehouse Builderからインポートされたパッケージについては、パッケージ・ヘッダーを変更できます。使用手順は「変更のインポート」を参照してください。

- PL/SQLタイプ: PL/SQLタイプ・カテゴリには、あらゆるスタンドアロンのPL/SQLタイプが含まれています。たとえば、PL/SQLレコード・タイプ、REFカーソル・タイプ、ネストした表のタイプなどです。PL/SQLタイプ・カテゴリはプロジェクト・ナビゲータにある「変換」ノードの「パッケージ」ノードで定義した各パッケージに自動的に作成されます。これは、グローバル・ナビゲータで定義したすべてのパッケージでも使用できます。グローバル・ナビゲータで、「パブリック変換」ノード、「Oracle」ノード、「カスタム」ノード、「パッケージ」ノードの順に開き、パッケージにPL/SQLタイプを定義します。

手順の詳細は、「カスタム変換の定義」を参照してください。

変換ライブラリについて

変換ライブラリは、再利用可能な一連の変換で構成されています。リポジトリを作成するたびに、Oracle Warehouse Builderでは、該当するリポジトリに対する変換操作を含む変換ライブラリが作成されます。このライブラリには、標準的でパブリックのOracle事前定義済ライブラリ、およびプロジェクト内で定義された各Oracleモジュールの追加ライブラリが含まれます。

変換ライブラリは、デザイン・センターにあるグローバル・ナビゲータの「パブリック変換」ノードの下にあります。

変換ライブラリのタイプ

変換ライブラリは、次のように分類できます。

- パブリックOracle事前定義済ライブラリ
事前定義済ファンクションの集合で、このライブラリからパブリックなOracleカスタム・ライブラリのプロシージャを定義できます。パブリックOracle事前定義済ライブラリはグローバル・ナビゲータに含まれます。「パブリック変換」ノードの下の「事前定義済」ノードを開きます。事前定義済変換の各カテゴリは、個別のノードとして表されます。カテゴリのノードを開いて、そのカテゴリの事前定義済変換を表示します。たとえば、「文字」ノードを開いて、Oracleライブラリに格納されている事前定義済の文字変換を表示します。

- パブリックOracleカスタム・ライブラリ
ユーザーが作成した再利用可能な変換の集合です。これらの変換は、ワークスペース内に定義されたファンクション、プロシージャおよびパッケージとして分類されます。

パブリックOracleカスタム・ライブラリでの変換は、「パブリック変換」ノードの「カスタム」ノードで使用できます。このノードに作成したすべての変換は、ワークスペース内のすべてのプロジェクトで使用できます。パブリックOracleカスタム・ライブラリに変換を作成する方法の詳細は、「カスタム変換の定義」を参照してください。

パブリックOracleカスタム・ライブラリに定義した変換を配布すると、その変換は、デフォルトのコントロール・センターに関連付けられたロケーションに配布されます。

変換ライブラリへのアクセス

変換はETLプロセスの様々な場所で使用できるため、Oracle Warehouse Builderを使用すると、デザイン・センターの様々な場所から変換ライブラリにアクセスできます。

変換ライブラリには、次の方法でアクセスできます。

- 式ビルダー
マッピングを作成するときは、ソース・データを変換する式の作成が必要になります。式ビルダー・インタフェースを使用すると、データの変換に必要な式を作成できます。式には変換を含めることができるため、Oracle Warehouse Builderを使用して、式ビルダーから変換ライブラリにアクセスできます。

変換ライブラリは、式ビルダーの「変換」タブで使用できます。TRANSFORMLIBSの下にある「プライベート」ノードには、現行のプロジェクトのみで使用できる変換が含まれます。これらの変換は、Oracleモジュールの「変換」ノードの下に作成されます。「パブリック」ノードには、パブリックOracleカスタム・ライブラリのカスタム変換、およびパブリックOracle事前定義済ライブラリの事前定義済変換が含まれます。

- 変換演算子の追加ダイアログ・ボックス
マッピング・エディタの変換演算子を使用すると、パブリックOracle事前定義済ライブラリとパブリックOracleカスタム・ライブラリの両方の変換をマッピングに追加できます。この演算子は、マッピングの一部としてデータを変換する場合に使用できます。

- ファンクション・エディタ、プロシージャ・エディタ、「ファンクションの編集」ダイアログ・ボックスまたは「プロシージャの編集」ダイアログ・ボックス
これらのエディタの「実装」タブを使用すると、ファンクションまたはプロシージャ本体の一部となるPL/SQLコードを指定できます。PL/SQLコードで変換を使用できます。

5 PL/SQLマッピングの作成

Warehouse Builderでデータ・オブジェクトの定義を作成した後は、データをソースからターゲットに移動する抽出、変換およびロード(ETL)の各操作を設計できます。Oracle Warehouse Builderでは、マッピングを使用してこれらの操作を設計します。

マッピング・デバッガを使用してマッピングでデータ・フローをデバッグすることもできます。

この章の内容は次のとおりです。

- Oracle Warehouse Builderマッピングの概要

- 例: 単純なPL/SQLマッピングの定義

- マッピングを使用した抽出、変換およびロード(ETL)の実行ステップ

- マッピングの定義

- 演算子のマッピングへの追加

- 演算子、グループおよび属性の接続

- 演算子の編集

- マッピング・プロパティの設定

- マッピングの構成

- 演算子とワークスペース・オブジェクトの同期化

- 例: マッピングによるトランザクション・データのロード

- 例: マッピング・エディタによるステージング領域表の作成

- プラッガブル・マッピングの使用

- マッピングとプラッガブル・マッピング間の演算子のコピー

- マッピングとプラッガブル・マッピングの演算子のグループ化

- 演算子、グループ、およびマッピングとプラッガブル・マッピングの属性のロケーション

- マッピングのデバッグ

Oracle Warehouse Builderマッピングの概要

マッピングは、抽出、変換およびロード(ETL)を実行するために使用するOracle Warehouse Builderオブジェクトです。マッピングは、個別ソースからデータ・ウェアハウスまでのデータの移動についてのデータ・フローを定義します。

フラット・ファイル、Oracle Database、SAP、またはSQLサーバーやIBM DB2のようなその他の異機種データベースその他のデータを含むソースからデータを抽出することができます。マッピング演算子またはマッピング変換を使用して要件に応じてデータを変換して、変換されたデータをターゲット・オブジェクトにロードします。

関連項目:

- マッピングの定義方法の詳細は、「マッピングの定義」を参照してください。

- マッピング変換演算子とその使用方法の詳細は、第26章「データ・フロー演算子」を参照してください。

- 事前定義済のOracle Warehouse Builder変換の詳細は、第28章「Oracle Warehouse Builder変換リファレンス」を参照してください。

マッピングは、Oracle Warehouse Builderの他のオブジェクトと同様、定義後に検証、生成および配布する必要があります。マッピングを定義および配布した後、コントロール・センター・マネージャを使用してマッピングを実行したり、後でマッピングを実行するためにスケジュールしたり、マッピングをプロセス・フローに組み込むことができます。

関連項目:

- マッピングの配布方法の詳細は、「オブジェクトの配布」を参照してください。

- ETLオブジェクトのスケジュール方法の詳細は、「ETLジョブのスケジュール」を参照してください。

- プロセス・フローの定義方法の詳細は、「プロセス・フローの設計」を参照してください。

マッピングのタイプ

Oracle Warehouse Builderのマッピングは、マッピングで使用されたサポートされているデータ抽出技術に応じて分類されます。Oracle Warehouse Builderから生成されるコードは、マッピングで使用されるソースおよびターゲットによって異なります。

マッピングの様々なタイプは次のとおりです。

- PL/SQLマッピング

- SQL*Loaderマッピング

- SAP ABAPマッピング

- コード・テンプレート(CT)マッピング

Oracle Warehouse Builderは、マッピング・タイプに応じた異なる言語でETLコードを生成します。生成されたコードはターゲット・ロケーションに配布され、そこで実行されます。適切なデータ抽出技術を選択することで、広範囲なデータ・ソース・タイプにアクセスしてパフォーマンスやセキュリティなど異なる技術要件を満たすことができます。

注意:
PL/SQLマッピング以外のマッピングは、Oracle Warehouse Builderのすべてのデータ変換機能をサポートしているわけではありません。PL/SQL以外のマッピング・タイプを使用して、PL/SQLマッピングでのみサポートされる複雑な変換を実行する必要がある場合は、PL/SQL以外のマッピングを使用してステージング表にロードしてから、PL/SQLマッピングを使用して、必要な残りの変換を実行します。

PL/SQLマッピング

PL/SQLマッピングは、Oracle Warehouse Builderのデフォルト・マッピング・タイプであり、ほとんどの状況で必要になります。PL/SQLマッピングの場合、Oracle Warehouse Builderによって生成されたPL/SQLコードがOracle Databaseロケーションに配布され、そこで実行されます。

その他のロケーションからのデータ抽出は、主にその他のOracle Databaseへのデータベース・リンクを経由して実行されるか、またはOracle以外のデータ・ソースのOracle Database gatewayを経由して実行されます。PL/SQLマッピングでは、Oracle Warehouse Builderのすべてのデータ変換機能が提供されます。

SQL*Loaderマッピング

SQL*Loaderマッピングでは、SQL*Loader制御ファイルが生成されます。制御ファイルはターゲット・データベースに配布され、そこでSQL*Loaderが実行され、データベースにソース・データがロードされます。

注意:
SQL*Loaderマッピングは、PL/SQLマッピングで変換可能なサブセットのみをサポートします。SQL*Loaderマッピングで可能な変換の制限の詳細は、第26章「データ・フロー操作」を参照してください。

SAP ABAPマッピング

SAP R/3ソース・システムからデータを抽出するメソッドのなかでABAPマッピングのみがサポートされているメソッドです。ABAPマッピングでは、Oracle Warehouse BuilderはABAPコードを生成します。次に、このコードは、管理者によってSAP R/3インスタンスにセキュリティおよびその他SAP環境固有の管理要件に応じて自動または手動で配布されます。ABAPコードが実行され、出力として生成されたフラット・ファイルが、ターゲット・データベース・システムに透過的に移動されて、Oracleのターゲット・データベースにロードされます。

注意:
ABAPマッピングは、PL/SQLマッピングで変換可能なサブセットのみをサポートします。ABAPマッピングで可能な変換の制限の詳細は、第26章「データ・フロー操作」を参照してください。

コード・テンプレート(CT)マッピング

コード・テンプレートでは、データ抽出の実装、移動、およびメカニズムのロードのための代表的なフレームワークを提供します。コード・テンプレート(CT)マッピングの場合、Oracle Warehouse Builderは、コード・テンプレートの内容に基づいて、データ抽出またはその他のマッピング・コードを生成します。このコードは、ターゲット・システム上のリモート・エージェントに配布され、そこで実行されます。データをターゲット・データベースにロードするために使用された技術は、コード・テンプレートの内容応じて異なります。Oracle Warehouse Builderは、共通のデータ抽出方法を実装するコード・テンプレートのコレクションを提供します。その他のコード・テンプレートは、さらに迅速で柔軟なデータ移動のためにバルクデータの抽出とツールのロードを使用します。

次の必要性に応じてCTマッピングを選択します。

- Oracle Database gatewayやODBCを使用しないデータソースへのアクセス、またはJDBC接続の必要性。Oracle Warehouse Builderは、JDBCデータ・ソースまたはターゲットへのアクセスをサポートするコード・テンプレートを提供します。

- XMLソースファイルからのデータのロード。

- 最大限のデータ移動パフォーマンスのために、バルクデータのアンロードおよびロードを実行。Oracle Warehouse Builderでは、コード・テンプレートを提供して一部の共通データベースからのバルク・データ移動をサポートします。Oracle Warehouse Builder提供のコード・テンプレートによってサポートされていないソースのために、独自のコード・テンプレートを書き込むことができます。

- Oracle以外のデータベース・ソースからOracle以外のデータベース・ターゲットに直接データを移動するETLプロセスを実装する必要がある場合。たとえば、IBM DB2ソースから抽出してMicrosoft SQL Serverターゲットに直接ロードするETLプロセスを定義できます。

- Oracle Warehouse Builder自体の変更を必要とすることなく、新しいデータ統合パターンを実装する必要がある場合。コード・テンプレートは、Oracle Warehouse Builderのサポート範囲外のビジネス要件および技術要件にもすぐに対応できるように、データ統合に関する最大限の柔軟性を提供します。

注意:
CTマッピングは、PL/SQLマッピングで変換可能なサブセットのみをサポートします。CTマッピングで変換可能な制限の詳細は、「OracleターゲットCT実行ユニットでのみサポートされるマッピング演算子」を参照してください。

PL/SQLマッピングのチャンクについて

マッピング内のソース・データをより小さなチャンクに分割することで、大規模な更新の処理をパラレル化できます。チャンクは、ユーザー定義されたチャンク基準によって定義されます。実行時、チャンクはパラレルで実行されて、各チャンクはターゲット・オブジェクトに別々にロードされます。

注意:
チャンクは、PL/SQLマッピングに対してのみ実行されます。

チャンクを定義する場合、Oracle Warehouse Builderでは、配布時にターゲット・スキーマにチャンクのタスクが作成されます。実行中、各チャンクによって表されるDMLはパラレルに実行されます。

チャンクで使用するPL/SQLマッピングでは、マッピング構成エディタを使用する次のパラメータを構成できます。

- コード生成パラメータ
マッピングの定義中または定義後に、マッピングを編集してチャンクのためのコード生成パラメータを設定できます。マッピング構成エディタを使用して、コード生成パラメータを設定します。これらのパラメータは、マッピングで定義されるロジックを実行するために必要なコードを生成するために使用されます。

- ランタイム・パラメータ
実行時チャンク・パラメータは、マッピング構成エディタを使用することで設計時またはマッピング実行中に構成されます。実行時チャンク・パラメータを、設計時、実行時のどちらにおいても設定する場合に、実行時に設定される値は設計時に定義された値を上書きします。

関連項目:

- 「チャンク・オプション」

- 「SCDの更新」

チャンクのタイプ

Oracle Warehouse Builderでは、次のタイプのチャンクを実行できます。

- シリアル・チャンク
シリアル・チャンクは、1つのセットですべてのソース・データを処理することができない状況で便利です。シリアル・チャンクの主な用途はタイプ2 SCDのロードで、そこでは1つのターゲット行に複数の更新が別々に実行される必要があります。

マッピングのためのシリアル・チャンク・パラメータを構成するには、マッピング構成エディタの「SCDの更新」および「ランタイム・パラメータ」ノードを使用します。

- パラレル・チャンク
パラレル・チャンクでは、パラレルの表データを2つの上位レベルの手順の増分コミットで更新できます。最初の手順では、表内の行はより小さいサイズのチャンクにグループ化されます。2番目の手順で、ユーザー定義された文はこれらのチャンク上でパラレルに実行されて、コミットは処理完了後に発行されます。

パラレル・チャンクはパラレルDML処理で使用されます。マッピングのためのパラレル・チャンク・パラメータを構成するには、マッピング構成エディタの「チャンク化オプション」および「ランタイム・パラメータ」ノードを使用します。

パラレル・チャンクの処理方法

次のいずれかの方法でパラレル・チャンクを実行できます。

- 列数によるチャンク
ソース表のデータは、各チャンクのサイズ定義によってチャンクに分割されます。

- ROWIDによるチャンク
ソース表のデータは、テーブルの各行のROWID値に基づいてチャンクに分割されます。

- SQL文によるチャンク
SQL文を使用して、ROWIDまたは列数のどちらかによって各チャンクの範囲を定義する2個の列を返します。

演算子について

演算子は、マッピングの基本となる設計要素です。演算子は、データ・フローでソースとターゲットを表す場合や、ソースからターゲットにデータを変換する方法を定義する場合に使用します。

関連項目:

- 第4章「データ変換の概要」

- 演算子の詳細は、『Oracle Warehouse Builder概要』を参照してください。

マッピング・エディタの概要

マッピング・エディタはマッピング・エディタのキャンバス周辺に作成されて、その上にはマッピング内の演算子と接続が視覚的に表示されて操作することができます。その他のいくつかのデザイン・センター・パネルはコンテキスト依存であり、マッピング・エディタでマッピングを開くとマッピング関連のアイテムを表示します。これらには次のものがあります。

- コンポーネント・パレット: マッピングで使用できる演算子を表示します。キャンバスまたはプロジェクト・ナビゲータからオブジェクトを選択すると、プロパティ・インスペクタにオブジェクト・プロパティが表示されます。
パレットの上部でフィルタを使用して、特定のタイプの演算子の表示を制限します。たとえば、フィルタの変換演算子を選択して、データを変換する演算子のみを表示します。

- 構造ビュー: 演算子、属性グループおよびマッピングの属性の階層ビューを表示します。

- 鳥瞰図: マッピング全体のレイアウトを表示します。1回のマウス・ドラッグ操作でキャンバスのビューを移動できます。つまり、スクロール・バーを使用せずにキャンバスのビューを再配置できます。
「鳥瞰図」には、キャンバス全体のミニチュア版が表示されます。青いボックスがあり、現在フォーカスされているキャンバスの部分を表しています。キャンバス・サイズよりも大きく広がっているマッピングの場合は、青いボックスをクリックしてキャンバス上でフォーカスを置く部分にドラッグします。

- プロパティ・インスペクタ: マッピング・エディタのキャンバスで選択されたマッピング、演算子、属性グループのプロパティを表示します。

- マッピング・デバッグ・ツールバー: デバッグのマッピングで使用される各コマンドのアイコンを表示します。マッピングをデバッグ中は、マッピング・エディタのキャンバスにデバッグ・ツールバーが表示されます。

- ダイアグラム・ツールバー: キャンバスにナビゲートし、キャンバス上のオブジェクトの倍率を変更するのに使用する各コマンドのアイコンを表示します。

マッピング・エディタのキャンバス

マッピング・エディタのキャンバスの領域を使用して、視覚的にマッピングを設計することができます。マッピングでは、ソースから抽出されたデータがターゲットにロードされる前にどのように変換されるか定義されます。

マッピング・エディタ・キャンバスには、「論理ビュー」および「実行ビュー」の2つのタブが含まれます。

論理ビュー

マッピング・エディタの論理ビューでは、マッピングを定義するデータ・フローを設計することができます。最初のドラッグ・アンド・ドロップ操作で、ソース・オブジェクト、ターゲット・オブジェクトおよび変換が表示されます。次に、操作間のデータ・フロー接続を描画することでデータ変換を表す、これらの操作間のデータ・フローを確立します。

関連項目:

- ソース、ターゲットおよび変換演算子の追加方法の詳細は、「演算子のマッピングへの追加」を参照してください。

- マッピングの接続演算子の詳細は、「演算子、グループおよび属性の接続」を参照してください。

実行ビュー

マッピング・エディタの実行ビューを使用して、コード・テンプレート(CT)マッピングの実行ユニットを定義します。実行ビューは、CTマッピングを作成する場合にのみ使用可能です。

実行ユニットは、コード・テンプレートを使用して実行する関連タスクのセットを表します。コード・テンプレートには、2つのOracle Databaseインスタンス間でのデータの移動や、DB2データベースからフラット・ファイルへのデータのアンロードなど、実行時に特定のプラットフォームで特定のETL処理を実行するロジックが含まれます。実行ユニットは、PL/SQLパッケージなど単独に生成されたスクリプト、またはコード・テンプレートによって実装が可能です。

実行ユニットでは、マッピング実行をより小さな関連ユニットに分割できます。各実行ユニットは、指定されたプラットフォーム上で必要なデータ統合タスクを実行するテンプレートを含む、コード・テンプレートに関連付けられる場合があります。実行ユニットは、PL/SQLパッケージなど単独に生成されたスクリプト、またはコード・テンプレートによって実装が可能です。

マッピング・エディタの「実行ビュー」タブでは、論理ビューからの演算子とデータ・フローがアイコン化された形式で表示されます。実行ビューで演算子を編集またはデータ・フローを作成することはできません。これらのタスクは論理ビューを使用する場合のみ実行できます。

実行ユニット・ビューの内容は、選択した構成に基づきます。そのため、異なる構成に対して異なるコード・テンプレートを使用できます。たとえば、2つの構成、開発、およびQAがある場合に、開発およびその他のQAに対して1つのコード・テンプレート・セットを使用することができます。

実行ビューのメニューおよびツールバー

「実行ビュー」タブを選択すると、デザイン・センターに実行メニューが表示されて、マッピング・エディタのキャンバスの上部に実行ツールバーが表示されます。実行メニューまたは実行ツールバーでは次のようなオプションを使用できます。

- 実行ユニットの作成および削除

- デフォルト実行ユニットの定義

- コード・テンプレートと実行ユニットの関連付け

マッピング・エディタの表示オプション

メニュー・バーから「グラフ」を選択し、「オプション」を選択することにより、エディタがキャンバスにマッピングを表示する形式を制御できます。マッピング・エディタのキャンバスの表示オプションの設定が可能な「オプション」ダイアログ・ボックスが表示されます。

「オプション」ダイアログ・ボックスには、次のオプションがあります。これらのオプションを選択するか、選択を解除できます。

- 入力コネクタ: このオプションを選択すると、入力属性として使用可能な属性の左に、矢印アイコンが表示されます。

- キー・インジケータ: このオプションを選択すると、演算子の外部キー属性である属性の左に、キー・アイコンが表示されます。

- データ型: このオプションを選択すると、すべての演算子に、属性のデータ型が表示されます。

- 出力コネクタ: このオプションを選択すると、出力属性として使用可能な属性の右に、矢印アイコンが表示されます。

- 水平スクロールを有効化: このオプションを選択すると、演算子の水平スクロールが有効になります。

- 自動レイアウト: このオプションを選択すると、マッピングの自動レイアウトを使用できます。

例: 単純なPL/SQLマッピングの定義

この項では、ソース表からターゲット表にデータをロードする基本的なPL/SQLマッピングの作成について説明します。この例の目的は、マッピングの使用を図示してマッピング作成の到達目的の理解を助けることです。非常に基本的な例を示しているため、ソース・データの変換は実行されません。ただし一般的なデータ・ウェアハウス環境において、変換はマッピングの構成部分です。

SALES表は組織の売上データを含みます。この表はOracle DatabaseのSRCスキーマにあります。この売上データを、データ・ウェアハウスのTGTスキーマにあるターゲット表SALES_TGTにロードする必要があります。スキーマとターゲット表の両方が同じ列名で同じ列数を含みます。

PL/SQLマッピングを定義してデータがソース表からターゲット表にどのようにロードされるかを定義します。

ソースのOracle Database表からターゲットのOracle Database表にデータをロードするマッピングを定義する手順は、次のとおりです。

1. まだ実行していない場合は、プロジェクト・ナビゲータで、ソースに対応するOracleモジュールを作成します。SRC_MODというこのモジュールは、SRCスキーマと対応するロケーションSRC_LOCに関連付けられています。さらに、SALES表をSRC_MODモジュールにインポートします。

2. プロジェクト・ナビゲータで、ターゲット表が位置するデータ・ウェアハウス・スキーマとそのロケーションが対応するターゲット・モジュールを作成します。
関連付られているロケーションTGT_LOCがTGTスキーマと対応するWH_TGT Oracleモジュールを作成します。

3. プロジェクト・ナビゲータで、WH_TGTモジュールを開きます。

4. 「マッピング」ノードを右クリックし、「新規マッピング」を選択します。
「マッピングの作成」ダイアログ・ボックスが表示されます。

5. マッピングについての次の情報を入力して、「OK」をクリックします。

- 名前: マッピング名を入力します。

- 説明: マッピングの説明(オプション)を入力します。

マッピング・エディタが表示されます。このインタフェースを使用して、ソース・オブジェクトとターゲット・オブジェクトの間のデータ・フローを定義します。

6. SRC_MODモジュールの表ノードを開きます。

7. SALES表を、プロジェクト・ナビゲータからマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
SALES表を示す演算子がキャンバスに追加されます。左上隅に演算子名が表示されます。演算子名の下にあるのはグループ名です。グループの名前と数は演算子のタイプに基づきます。表演算子は、INOUTGRP1という1つのグループを持ちます。グループの下に属性名とデータ・タイプがリストされます。

8. プロジェクト・ナビゲータからWH_TGTモジュールのSALES_TGT表を、マップ・エディタ・キャンバスにドラッグ・アンド・ドロップします。
SALES_TGT表を示す演算子がキャンバスに追加されます。各属性名とデータ・タイプを表示することができます。

9. ソース表SALESの属性をターゲット表SALES_TGTの対応する属性に接続します。
演算子内のすべての属性を接続するには、SALES演算子のグループINOUTGRP1上のマウスの左ボタンをクリックしたままにしてドラッグし、SALES_TGT演算子のグループINOUTGRP1上でマウス・ボタンを放します。

「接続」ダイアログ・ボックスが表示されます。

関連項目:
属性の接続の詳細は、「演算子、グループおよび属性の接続」を参照してください。

10. 接続オプションで、ソースとターゲット演算子の名前による一致を選択し、「プレビュー」をクリックします。
「接続」セクションでは、ソース属性とターゲット属性の関連が表示されます。ソース属性列にはソース表属性がリストされ、ターゲット属性列にはソース属性がロードされるターゲット表属性がリストされます。

11. 「OK」をクリックして、「接続」ダイアログ・ボックスを閉じます。
図5-1のようなコマンド・マッピングが表示されます。

図5-1 ソース表からターゲット表にデータをロードするマッピング

「図5-1 ソース表からターゲット表へデータをロードするマッピング」の説明

12. プロジェクト・ナビゲータ内のマッピングを選択して、「検証」をクリックすることでマッピングを検証します。または、プロジェクト・ナビゲータのマッピングを右クリックして、「検証」を選択します。
検証のテストが実行されて、マッピング内のメタデータ定義と構成パラメータが検証されます。必要に応じて検証エラーを解決します。

13. プロジェクト・ナビゲータ内のマッピングを選択して、「生成」をクリックすることでマッピングを生成します。または、プロジェクト・ナビゲータのマッピングを右クリックして、「生成」を選択します。
生成では、ターゲット・スキーマでマッピングを作成するために使用する必要のあるスクリプトが作成されます。必要に応じて、生成エラーを解決して、マッピングを再度生成します。Oracle Warehouse Builderでは、このマッピングのスクリプトが作成されます。

SALESというソース表からデータを抽出して、SALES_TGTというターゲット表にロードするマッピングが定義されました。このマッピングのメタ・データがリポジトリに保存されます。生成が終了した後、ターゲット・スキーマでこのマッピングを作成するためのスクリプトが用意されます。

ETLを実行し、ソース表からターゲット表にデータを転送するには、「ETLジョブの開始」に定義されているように、最初にターゲット・スキーマにマッピングを配布し、その後にマッピングを実行する必要があります。

マッピングを使用した抽出、変換およびロード(ETL)の実行の手順

前提作業

最初に、プロジェクトがターゲット・モジュールまたは定義済ロケーションのあるテンプレート・マッピング・モジュールを含むことを検証します。このモジュールにマッピングを作成する必要があります。

さらに、マッピングでソースまたはターゲットとして使用するすべての既存のデータをインポートします。

ETLを実行するマッピングを定義する手順は次のとおりです。

1. プロジェクトナビゲータで、ETLを実行するための論理を含むマッピングを定義します。
マッピング定義の詳細は「マッピングの定義」を、CTマッピングの作成の詳細は「コード・テンプレート・マッピングの作成」をそれぞれ参照してください。

2. マッピング・エディタで、マッピングに必要な演算子を追加します。演算子によってETLを実行できます。
演算子の詳細は、「演算子のマッピングへの追加」を参照してください。

3. マッピング内の演算子を接続して、ターゲット・オブジェクトにロードされる前にソース・オブジェクトのデータがどのように変換されるかを定義します。
演算子間の接続の確立方法の詳細は、「演算子、グループおよび属性の接続」を参照してください。

4. マッピング内の演算子を編集して演算子、グループ、または属性プロパティを設定します(オプション)。演算子を編集して、特定の変換が実行される方法を指定する必要があります。たとえば、フィルタ演算子を使用してターゲットにロードする行を制限する場合は、フィルタ演算子を編集して、行のフィルタリングに必要な条件を指定します。
マッピング内の演算子の編集方法については、「演算子の編集」を参照してください。

5. マッピングを構成します。
PL/SQLマッピングについては、「マッピングの構成」を参照してください。CTマッピングについては、「コード・テンプレート・マッピング内のコード・テンプレートのオプションの設定」を参照してください。

6. プロジェクト・ナビゲータ内のマッピングを右クリックして、「検証」を選択することでマッピングを検証します。
検証では、Oracle Warehouse Builderで定義されたマッピングのルールに準拠しているかどうか、マッピングのメタデータ定義および構成パラメータが検証されます。

7. プロジェクト・ナビゲータ内のマッピングを右クリックして、「生成」を選択することでマッピングを生成します。
生成ではメタデータ定義と構成設定が使用されて、ターゲット・スキーマ内でマッピングを作成するために使用されるコードが作成されます。

マッピングを生成する場合に、生成されたコードにはコード生成の演算子を識別するために役立つコメントが含まれます。これによって、マッピングを配布するときに発生する可能性のあるエラーをデバッグできます。

8. ターゲット・スキーマにマッピングを配布して、ターゲット・スキーマへのマッピングのために生成されるPL/SQLコードを作成します。
配布については、「オブジェクトの配布」を参照してください。

9. マッピングを実行してソース表からデータを抽出し、ターゲット表にロードします。
ETLオブジェクトの実行方法については、「ETLジョブの開始」を参照してください。

後続の手順

マッピングを設計してマッピングのコードを生成した後、プロセス・フローを作成するか、直接配布を続行して実行できます。

プロセス・フローを使用して、マッピングを相互に関連付けます。たとえば、あるマッピングが完了すると電子メール通知がトリガーされて別のマッピングが開始するように、プロセス・フローを設計できます。詳細は、第8章「プロセス・フローの設計」を参照してください。

マッピングの設計後に、そのコードを生成してターゲットに配布する手順は次のとおりです。

- すぐにマッピングを実行する場合は、「ETLジョブの開始」の説明に従います。

- 後で実行する場合は、「ETLジョブのスケジュール」の説明に従ってマッピングのスケジュールを調整します。

- 1つまたは複数のマッピングの実行を統括するためには、「プロセス・フローの設計」の説明に従って、その他のアクティビティに沿ってプロセス・フローを作成します。

マッピングの定義

マッピングは、マッピングによって実行される変換に関するメタデータを含むOracle Warehouse Builderオブジェクトです。メタデータには、データの抽出元であるソースの詳細、変換データがロードされるターゲット、およびそれらの操作の実行に使用される設定が含まれます。

マッピングを定義する手順

1. プロジェクト・ナビゲータで、プロジェクト、「データベース」ノード、続いてマッピングを定義する「Oracle」モジュールの順に開きます。

2. 「マッピング」ノードを右クリックし、「新規マッピング」を選択します。
「マッピングの作成」ダイアログ・ボックスが表示されます。

3. 新しいマッピングの名前と説明(オプション)を入力します。
マッピング名の指定と説明の記述に関するルールは、「マッピングでのネーミング規則」を参照してください。

4. 「OK」をクリックします。
Oracle Warehouse Builderによりマッピングの定義が格納され、プロジェクト・ナビゲータにマッピング名が挿入されます。そのマッピングに対してマッピング・エディタが開き、タイトル・バーにマッピングの名前が表示されます。

以前に作成したマッピングを開く手順

1. プロジェクト・ナビゲータで、プロジェクト、「データベース」ノード、続いてマッピングが定義された「Oracle」モジュールの順に開きます。

2. 「マッピング」ノードを開きます。

3. 次のいずれかの方法で、マッピング・エディタを開きます。

- マッピングをダブルクリックします。

- マッピングを選択し、「ファイル」メニューから「開く」を選択します。

- マッピングを選択し、[Ctrl]キーを押しながら[O]キーを押します。

- マッピングを右クリックし、「開く」を選択します。

マッピング・エディタが表示されます。

注意:
OMB*Plusを使用して作成されたマッピングを開く場合、マッピングに複数の演算子が含まれていても、1つの演算子のみが含まれているように表示される場合があります。すべての演算子を表示するには、ツールバーの「自動レイアウト」をクリックします。

マッピングでのネーミング規則

マッピングのネーミングの規則は、「プリファレンス」ダイアログ・ボックスのネーミング・プリファレンス・セクションで選択するネーミング・モードに応じて異なります。Oracle Warehouse Builderでは、ワークスペースの各オブジェクトのビジネス名と物理名が維持されます。ビジネス名とは、一意の説明的な名前で、ビジネスレベルのユーザーにデータの意味を持ちます。物理名はOracle Warehouse Builderでコード生成時に使用される名前です。

あるネーミング・モードで作業中にオブジェクトに名前を付けると、Oracle Warehouse Builderでは他のモード用にデフォルト名が作成されます。したがって、ビジネス名モードで作業中に、大/小文字の両方、特殊文字および空白を含む名前をマッピングに割り当てると、Oracle Warehouse Builderではデフォルトの物理名が作成されます。たとえば、マッピングをMy Mapping (refer to doc#12345)というビジネス名で保存すると、デフォルトの物理名はMY_MAPPING_REFER_TO_DOC#12345となります。

マッピング・エディタでオブジェクトに名前を付けたり、名前を変更したりするときは、次のネーミング規則に従います。

マッピングのネーミングと説明

物理ネーミング・モードでは、マッピング名は1文字から30文字までの英数字で、空白は使用できません。ビジネス・ネーミング・モードでは、200文字以内という制限があり、空白と特殊文字を使用できます。両方のネーミング・モードにおいて、名前はプロジェクト全体で一意にする必要があります。

マッピングのスケジューリングに関する注意: マッピングの実行をスケジューリングする場合は、付加的な考慮事項があります。スケジューリングするETLオブジェクトの物理名は25文字以内、ビジネス名は1995文字以内に制限されます。この付加的な制限に従うと、Oracle Warehouse Builderでは、接尾辞_jobと配布および実行に必要な他の内部文字をマッピング名に追加できます。

マッピング定義の作成後、プロパティ・インスペクタで物理名とビジネス名を確認できます。

必要に応じてマッピングの説明を編集します。説明は4,000文字までの英数字を使用でき、空白を含めることができます。

属性とグループのネーミングの規則

ソースに依存しないグループおよび属性は名前を変更できます。属性名とグループ名は論理名です。通常、オブジェクトの属性名はバインド先演算子の属性名と同じですが、そのプロパティは相互に独立した状態で維持されます。

演算子のネーミング規則

演算子のビジネス名は、次の要件を満たす必要があります。

- 使用できる文字数は200文字以内です。

- 演算子名は、その親のグループ内において一意である必要があります。親グループは、マッピングまたはその親のプラッガブル・マッピング・コンテナのどちらかである場合があります。

演算子の物理名は、次の要件を満たす必要があります。

- 演算子名に使用できる文字数は1から30文字以内です。

- 演算子名は、その親のグループ内において一意である必要があります。親グループは、マッピングまたはその親のプラッガブル・マッピング・コンテナのどちらかである場合があります。

- 演算子名は、Oracle Database SQL言語リファレンスで定義されている基本要素の構文規則に準拠している必要があります。

一部の演算子には、物理名とビジネス名の他にバウンド名もあります。ワークスペース・オブジェクトに関連付けられている各演算子には、バウンド名があります。コード生成時、Oracle Warehouse Builderではバウンド名を使用し、そのワークスペース・オブジェクトに対する演算子を参照します。バウンド名には、次のような特性があります。

- バウンド名は一意である必要はありません。

- バウンド名は、一般的なOracle Warehouse Builderの物理ネーミング規則に準拠している必要があります。ただし、オブジェクトがインポートされたものであり、スペースなどの制限された文字が含まれている場合を除きます。

- 通常、バウンド名は直接変更しません。かわりに、マッピングの外部のワークスペース・オブジェクトと同期化することで、これらを変更します。

- 物理ネーミング・モードの場合、ユーザーが演算子属性の物理名を変更すると、同期化の際に、Oracle Warehouse Builderによって新しい物理名がバウンド名として伝播されます。

バインドは、ワークスペースのオブジェクトに演算子を関連付けるプロセスです。バインドとバインド方法の詳細は、第3章「ディメンション・オブジェクトの定義」の「バインド」を参照してください。

演算子のマッピングへの追加

演算子によってデータ変換を実行できます。一部の演算子はワークスペース・オブジェクトにバインドされ、その他の演算子はバインドされません。組込み変換を表す多くの演算子(ジョイナ、アグリゲータ、フィルタなど)は、基礎となるワークスペース・オブジェクトを直接参照せず、また、バインドもされません。表、ビュー、ディメンション、キューブなどその他の演算子は、ワークスペースのオブジェクトを参照するため、バインドも可能です。

一般的に、表演算子などのデータ・ソースまたはターゲット演算子をマッピングに追加すると、その演算子は、表と異なるオブジェクトであっても、ワークスペース内で定義された表を参照します。つまり、マッピング内のソース演算子とターゲット演算子は、ワークスペース内の基礎となるオブジェクトにバインドされます。1つのマッピング内で複数の演算子が同一の基礎となるオブジェクトにバインドされることが可能です。たとえば、表EMPをマッピング内の2つの異なる操作のソースとして使用するために、EMP_1とEMP_2という2つの表演算子をマッピングに追加して、それらをワークスペース内の同じ基礎となるEMP表にバインドすることができます。

2つの演算子のバージョンを区別するために、この章では、ワークスペース内のオブジェクトを総称的にワークスペース・オブジェクトと呼び、具体的には、ワークスペース表、ワークスペース・ビューのように表現します。また、マッピングの演算子は表演算子、ビュー演算子のように表現します。したがって、ディメンションをマッピングに追加する場合、マッピングのディメンションはディメンション演算子、ワークスペースのディメンションはワークスペース・ディメンションと表されます。

Oracle Warehouse Builderでは、一部の演算子用に個別のワークスペース・オブジェクトが保持されています。そのため、これらのオブジェクトは個別操作が可能です。マッピングの論理に影響することなくワークスペースオブジェクトを変更できます。変更後、ワークスペース・オブジェクトと対応する演算子との間の相違を同期化する方法を決定できます。これにより、ウェアハウス設計において最大限の柔軟性が得られます。

たとえば、ワークスペース表の新規メタデータ定義を再インポートした場合は、これらの変更内容をマッピングの表演算子に伝播する必要があります。反対に、マッピングの表演算子を変更した場合は、これらの変更内容を関連するワークスペース表に伝播する必要があります。これらのタスクは、同期化と呼ばれる処理によって実現します。

関連項目:
マッピングの同期化とワークスペース・オブジェクトの詳細は、「同期化操作とワークスペース・オブジェクト」を参照してください。

ワークスペース・オブジェクトにバインドする演算子の追加

ワークスペース内の関連するオブジェクトにバインドできる演算子は次のとおりです。

オブジェクトの構成
キューブ
ディメンション
オブジェクトの拡張
外部表
フラット・ファイル
検索
マテリアライズド・ビュー
プラッガブル・マッピング
マッピング前プロセス
マッピング後プロセス
キュー
順序
テーブル・ファンクション
表
変換
可変長配列イテレータ
ビュー

演算子をマッピングに追加する手順は、次のとおりです。

1. マッピング・エディタを開きます。

2. コンポーネント・パレットから、演算子のアイコンをキャンバスにドラッグ・アンド・ドロップします。または、「グラフ」メニューから「追加」、追加する演算子のタイプ、演算子の順に選択します。
コンポーネント・パレットが表示されない場合は、「表示」メニューからコンポーネント・パレットを選択します。

ワークスペース・オブジェクトにバインド可能な演算子を選択する場合は、マッピング・エディタに「operator_name演算子の追加」ダイアログ・ボックスが表示されます。このダイアログ・ボックスの使用方法については、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」参照してください。

ワークスペース・オブジェクトにバインドできない演算子を選択した場合は、演算子を作成するためのウィザードまたはダイアログ・ボックスが表示されます。

3. Oracle Warehouse Builderに表示される指示に従い、「OK」をクリックします。
マッピング・エディタのキャンバスに演算子が最大化された状態で表示されます。左上隅に演算子名が表示されます。各属性名とデータ・タイプを表示することができます。

演算子を最小化するには、右上隅の矢印をクリックすると、マッピング・エディタのキャンバスに演算子がアイコンとして表示されます。演算子を最大化するには、キャンバス上で演算子をダブルクリックします。

演算子を追加するための演算子の追加ダイアログ・ボックスの使用

演算子の追加ダイアログ・ボックスを使用して演算子をマッピングに追加できます。ワークスペース・オブジェクトにバインド可能な演算子を追加する場合は、マッピング・エディタに「operator_name演算子の追加」ダイアログ・ボックスが表示されます。

このダイアログ・ボックスで次のいずれかのオプションを選択します。

- バインドされていない演算子を属性なしで作成

- 既存リポジトリ・オブジェクトから選択してバインド

バインドされていない演算子を属性なしで作成

「バインドされていない演算子を属性なしで作成」を選択して、新規ステージング領域表や新規ターゲット表など、ワークスペース・オブジェクトにバインドされていない新しいワークスペース・オブジェクトを定義します。

「新規演算子名」フィールドに、新しい演算子の名前を入力します。演算子が属性なしでキャンバスに表示されます。

これで、演算子の属性を追加および定義できるようになりました(「演算子の編集」を参照)。次に、ターゲット・モジュールに新規ワークスペース・オブジェクトを作成するために、演算子を右クリックして「作成とバインド」を選択します。

このオプションをマッピング設計で使用する方法の例は、「例: マッピング・エディタによるステージング領域表の作成」を参照してください。

既存リポジトリ・オブジェクトから選択してバインド

「既存リポジトリ・オブジェクトから選択してバインド」をクリックして、既存のワークスペース・オブジェクトに基づいて演算子を追加します。そのオブジェクトを、ワークスペースに定義またはインポートしている場合があります。

接頭辞を入力してオブジェクトを検索するか、選択したモジュール内のオブジェクトの表示リストからオブジェクトを選択します。

複数のアイテムを選択するには、[Ctrl]キーを押しながら各アイテムをクリックします。連続したアイテムのグループを選択するには、選択範囲の最初のオブジェクトをクリックし、[Shift]キーを押しながら最後のオブジェクトをクリックします。

演算子は、マッピングと同じモジュール内のワークスペース・オブジェクトまたは別のモジュールのワークスペース・オブジェクトに基づいて追加できます。別のモジュールのワークスペース・オブジェクトを選択すると、マッピング・エディタによってコネクタが作成されます(コネクタが存在していない場合)。このコネクタによって、マッピングのロケーションとワークスペース・オブジェクトのロケーション間のデータの移動パスが確立されます。

マッピングでの擬似列ROWIDおよびROWNUMの使用

マッピング内で疑似列ROWIDおよびROWNUMを使用できます。ROWNUM疑似列は、表から行を選択した順序を示す数値を戻します。ROWID疑似列は、データベース表内の行のrowid(バイナリ・アドレス)を戻します。

マッピング内の表、ビューおよびマテリアライズド・ビュー演算子でROWIDおよびROWNUM疑似列を使用できます。これらの演算子には、COLUMN USAGEという追加の列が含まれており、ROWIDまたはROWNUMとして使用する属性の識別に使用されます。標準の属性の場合、この列のデフォルト値はTABLE USAGEとなります。ROWIDまたはROWNUM値の属性を使用するには、COLUMN USAGEをそれぞれROWIDまたはROWNUMに設定します。

データ型ROWID、 UROWIDまたはVARCHAR2の属性にROWID列をマッピングできます。ROWNUM列は、データ型NUMBERの属性か、NUMBERから暗黙的に変換できる他の任意のデータ型にマップできます。

ROWIDおよびROWNUM疑似列は実際の列ではないため、オブジェクト・エディタには表示されません。

演算子、グループおよび属性の接続

マッピング・ソース演算子、データを変換する演算子およびターゲット演算子を選択した後は、これらの演算子を接続できます。データ・フローの接続により、ソースから演算子を通過してターゲットに至るデータ・フローの様子が視覚的に表されます。マッピングを接続するダイアログ・ボックスは、演算子間にデータ・フローを作成する際に役立ちます。

演算子は、次のいずれかの方法で接続できます。

- 演算子の接続: 2つの演算子間でグループを接続するための条件を定義します。

- グループの接続: 2つのグループ間ですべての属性を接続するための条件を定義します。

- 属性の接続: 一度に個々の演算子属性を相互に接続します。

- 演算子ウィザードの使用: ピボット演算子、Name and Address演算子などの演算子は、ウィザードを使用してデータ・フロー接続を定義できます。

- マッピング接続ダイアログ・ボックスの使用: 演算子、グループまたは属性を接続するための条件を定義します。
マッピングを接続するダイアログ・ボックスを表示するには、演算子、グループまたは属性を右クリックして、「接続」、接続を確立する演算子の名前の順に選択します。マッピング接続ダイアログ・ボックスが表示されます。

このダイアログ・ボックスの使用方法については、「マッピング接続ダイアログ・ボックスの使用」を参照してください。

演算子を接続した後は、接続した属性間にデータ・フロー接続が確立されます。

図5-2は、属性が接続されたマッピングを示しています。

図5-2 マッピングの接続された演算子

「図5-2 マッピングの接続された演算子」の説明

演算子の接続

演算子間に既存の接続がない場合、ある演算子を別の演算子に接続することができます。接続する2つの演算子は、アイコン形式で表示されている必要があります。

あるグループから1つの演算子に接続することもできます。グループ上でマウスの左ボタンを押したままドラッグし、演算子のタイトルの上にドロップします。

ある演算子から別の演算子に接続する手順は、次のとおりです。

1. 接続を確立する演算子を選択します。

2. マウスの左ボタンをクリックしたまま、ポインタを演算子アイコンの上に置きます。

3. 演算子から、接続を確立する演算子アイコンにマウスをドラッグします。
マウスをドラッグするとき、接続を示す行が表示されます。

4. ターゲット演算子の上でマウス・ボタンを放します。
マッピング接続ダイアログ・ボックスが表示されます。「マッピング接続ダイアログ・ボックスの使用」の説明に従って、このダイアログ・ボックスを使用して、グループ内でのグループと属性の間の接続を指定します。

グループの接続

グループを接続すると、属性が自動的にコピーされるか、詳細情報を入力するように指示されます(「マッピング接続ダイアログ・ボックスの使用」を参照)。

あるグループから別のグループに接続する手順は、次のとおりです。

1. 接続を確立するグループを選択します。

2. マウスの左ボタンをクリックしたまま、ポインタをグループの上に置きます。

3. そのグループから、接続の確立先となるグループにマウスをドラッグします。
マウスをドラッグするとき、接続を示す行が表示されます。

4. ターゲット・グループの上でマウス・ボタンを放します。
ある演算子グループを、属性を持つターゲット・グループに接続する場合、マッピング接続ダイアログ・ボックスが表示されます。「マッピング接続ダイアログ・ボックスの使用」の説明に従って、このダイアログ・ボックスを使用して、属性間の接続を指定します。

ある演算子グループを、既存の属性を持たないターゲット・グループに接続する場合、属性が自動的にコピーされ、各属性が接続されます。これは、「例: マッピング・エディタによるステージング領域表の作成」に示すようなマッピングを設計する場合に便利です。

属性の接続

一方の演算子の単一の出力属性から、他方の演算子の単一の入力属性に線を引きます。

属性を接続する手順は、次のとおりです。

1. マウス・ボタンをクリックしたまま、ポインタを出力属性の上に置きます。

2. 出力属性からデータのフロー先となる入力属性にマウスをドラッグします。
マウスをドラッグするとき、接続を示す行がマッピング・エディタ・キャンバスに表示されます。

3. 入力属性の上でマウス・ボタンを放します。

4. ステップ1から3を繰り返し、必要なデータ・フロー接続をすべて作成します。

ステップ1で複数の属性を選択することもできます。複数の属性を選択するには、[Ctrl]キーを押したまま、属性をクリックして選択します。複数のソース属性を選択する場合は、出力属性ではなくグループの上でのみマウスを放すことができます。マッピング接続ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用して、ソース属性とターゲット属性の間のデータ・フローを定義します。

属性を接続するとき、必ず次のルールに従います。

- 同じ入力または入力属性には2度接続できません。

- 同じ演算子内の属性には接続できません。

- 入力専用の属性から接続することも、出力専用の属性に接続することもできません。

- 確立されているカーディナリティに矛盾する方法では演算子を接続できません。かわりに、ジョイナ演算子を使用します。

マッピング接続ダイアログ・ボックスの使用

マッピング接続ダイアログ・ボックスを使用してマッピング内の演算子間の接続を定義できます。通常、データ・ロードプロセスに必要な複雑な変換ロジックを実装する数多くの演算子がマッピングには含まれています。接続する演算子がマッピング上で互いに離れているためスクロールが必要になる場合があります。マッピング接続ダイアログ・ボックスを使用して、効果的な方法で演算子、グループおよび属性を接続できます。

図5-3 マッピング接続ダイアログ・ボックスの表示

図5-3 マッピング接続ダイアログ・ボックス

「図5-3 マッピング接続ダイアログ・ボックス」の説明

次の各セクションを実行して演算子間の接続を定義します。

- (オプション)接続する属性グループ

- 接続オプション

- メッセージ

- 接続

接続する属性グループ

このセクションを使用して、接続を確立するソース・グループとターゲット・グループを選択します。このセクションは、ソース演算子をターゲット・グループに、ソース・グループをターゲット演算子に、またはソース演算子をターゲット演算子に接続するときのみ表示されます。

ソース・グループ データのフロー元のソース演算子上のグループに対応するソース・グループ。「ソース・グループ」リストには、ソース演算子のすべての出力グループおよびI/Oグループがあります。データ・フローの作成元になるグループを選択します。

ターゲット・グループ データのフロー先の演算子上のグループに対応するターゲット・グループ。「ターゲット・グループ」リストには、ターゲット演算子のすべての入力グループおよびI/Oグループがあります。データ・フローを作成するグループを選択します。

ソース・グループとターゲット・グループを選択すると、ソース・グループとターゲット・グループの属性間の接続を指定できます。このため、ソース演算子とターゲット演算子のグループ間のデータ・フローを同時に確立することができます。

注意:
選択したソース・グループまたはターゲット・グループに対して接続を作成すると、異なるグループを選択したときに、変更を保存するかどうかを確認する警告が表示されます。

接続オプション

「接続オプション」セクションを使用して、すべてのソース属性をターゲット属性に異なる条件で自動的に接続することができます。

属性の接続について次のオプションを1つ選択します。

- ソース属性をターゲット・グループにコピーと一致

- ソースとターゲット属性の位置による一致

- ソースとターゲット属性の名前による一致

属性を接続するために使用するオプションを選択した後、グループの接続属性を使用して、「プレビュー」をクリックし、「接続」セクション内のソース属性とターゲット属性の間のマッピングを表示します。マッピングを確認して問題がない場合は、「OK」をクリックします。

ソース属性をターゲット・グループにコピーと一致

このオプションは、属性が含まれるターゲット・グループにソース属性をコピーする場合に使用します。マッピング・エディタでは、演算子の接続ダイアログ・ボックスでの選択内容に基づいて、ソース属性から新しいターゲット属性に演算子が接続されます。この操作は、ディメンション・ターゲット演算子やキューブ・ターゲット演算子など、新しい入力属性を受け入れないターゲット・グループには実行されません。

ソースとターゲット属性の位置による一致

このオプションは、各グループ内の属性の位置に基づいて、既存の属性間を接続する場合に使用します。ターゲットのすべての属性が一致している場合、ソース属性とターゲット属性は同じ順序になります。ソース演算子にターゲットよりも多くの属性が含まれている場合、残りのソース属性はターゲットに接続されません。

ソースとターゲット属性の名前による一致

このオプションは、名前が一致する属性間を接続する場合に使用します。オプションのリストから選択することで、一致しない双方の名前を接続します。次のオプションを組み合せて使用できます。

- 大/小文字の違いを無視: 小文字と大文字が同じ文字とみなされます。たとえば、属性FIRST_NAMEとFirst_Nameは一致と判断されます。

- 特殊文字を無視: 一致を処理する際に無視する文字を指定します。たとえば、ハイフンとアンダースコアを指定すると、属性FIRST_NAME、FIRST-NAME、FIRSTNAMEはすべて一致と判断されます。

- ソースの接頭辞を無視、ソースの接尾辞を無視、ターゲットの接頭辞を無視、ターゲットの接尾辞を無視: 一致を処理する際に無視する接頭辞と接尾辞を指定します。たとえば、「ソースの接頭辞を無視」を選択してテキスト・フィールドにUSER_を入力すると、ソース属性USER_FIRST_NAMEとターゲット属性FIRST_NAMEは一致と判断されます。

メッセージ

このセクションには、接続オプションのプレビュー結果からの情報メッセージが表示されます。特定のソース属性またはターゲット属性などの情報は、セクション内に未解決の競合が表示されるため接続されません。

接続

「接続」セクションには、ソース・グループに属するソース属性とターゲット・グループに属するターゲット属性との間の接続が表示されます。ソース・グループとターゲット・グループの属性間にある既存の接続は、このセクションに表示されます。

このセクションには、「ソース接続」と「ターゲット接続」の2つのタブがあります。両方のタブには「ソース属性」列と「ターゲット属性」列を含むスプレッドシートが表示されます。「ソース属性」列には、ソース・グループとして選択されたグループに対するすべての属性またはキャンバスで選択された属性がリストされます。「ターゲット接続」列には、ターゲット・グループとして選択されたグループのすべての属性がリストされます。「ソース接続」タブまたは「ターゲット接続」タブに変更を加えると、ただちにその他のタブに反映されます。

「ソース接続」タブ

「ソース接続」タブでは、ソース・グループからの接続を迅速に確立できます。このタブの「ターゲット属性」列では、ターゲット・グループからの属性をリストします。このタブを使用して、各ターゲット属性の接続元であるソース属性を指定します。各ターゲット属性については、0(ゼロ)または1個のソース属性をマップします。特定のソース属性をリストされたターゲット属性に接続するには、各ターゲット属性において対応する「ソース属性」列のソース属性の名前入力します。

属性名の入力を開始すると、Oracle Warehouse Builderにより、名前が入力した文字で始まるソース属性を含むリストが表示されます。接続するソース属性がこのリストにある場合は、その属性をクリックして選択します。*や?などのワイルド・カードを使用して、データ・フローを作成するソース属性を検索できます。「ターゲット属性」列にリストされている列をソートすることもできます。属性名にスペースやカンマが含まれる場合、ソース属性の名前を二重引用符で囲みます。

「ターゲット接続」タブ

「ターゲット接続」タブでは、ターゲット・グループへの接続を迅速に確立できます。「ソース属性」列には、ソース・グループからの属性のリストが表示されます。このタブを使用して、各ターゲット属性の接続元であるソース属性を指定します。各ソース属性について、「ターゲット属性」列に対応する1つまたは複数のターゲット属性名を入力します。1つのソース属性を複数のターゲット属性に接続する場合は、ソース属性の名前をカンマで区切って「ターゲット属性」列に入力します。

属性名の入力を開始すると、Oracle Warehouse Builderにより、名前が入力した文字で始まるターゲット属性を含むリストが表示されます。接続するターゲット属性がリストに表示されている場合は、その属性をクリックして選択します。*や?などのワイルド・カードを使用して、データ・フローを作成するターゲット属性を検索できます。「ソース属性」列にリストされている列をソートすることもできます。

演算子の編集

各演算子には、エディタが関連付けられています。その演算子エディタを使用して、演算子、グループおよび属性に関する一般的な情報と構造的な情報を指定します。演算子エディタでは、グループおよび属性を追加または削除したり、名前を変更できます。演算子の名前も変更できます。

定数、式、アグリゲータ演算子の出力グループ内の属性などと関連付けられている式を持つ属性については、指定した式を編集することもできます。

演算子の編集は、ロード・プロパティや条件付き動作の割当てとは異なります。ロード・プロパティや条件付き動作を指定するには、プロパティ・ウィンドウ(「マッピングの設定」を参照)を使用します。

演算子、グループまたは属性を編集する手順は、次のとおりです。

1. マッピング・エディタのキャンバスから演算子を選択します。
あるいは、演算子内のグループまたは属性を選択します。

2. 選択したアイテムを右クリックし、「詳細をオープン」を選択します。
マッピング・エディタに演算子エディタが表示され、「名前」タブ、「グループ」タブ、および各タイプの演算子のグループの「入力/出力」タブが表示されます。

いくつかの演算子には追加のタブが含まれます。たとえば、Match-Merge演算子には一致ルールおよびマージ・ルールを定義するタブが含まれます。

3. 各タブに表示されるプロンプトに従い、「OK」をクリックして終了します。

「名前」タブ

「名前」タブには、演算子名と説明(オプション)が表示されます。ここでは、演算子の名前を変更したり、説明を追加したりすることができます。「マッピングでのネーミング規則」にリストされている規則に従って、演算子に名前を付けてください。

「グループ」タブ

「グループ」タブで、グループ情報を編集します。

各グループには、名前、方向および説明(オプション)が表示されます。ほとんどの演算子のグループ名は変更できますが、どの演算子の場合もグループの方向は変更できません。グループの方向には、「入力」、「出力」、「I/O」のいずれかを指定できます。

演算子によっては、「グループ」タブでグループを追加および削除できます。たとえば、入力グループを「ジョイナ」に、出力グループを「スプリッタ」に追加します。

「入力」タブと「出力」タブ

演算子エディタには、「グループ」タブに表示されているグループのタイプごとに、タブが1つずつ表示されます。これらのタブには、属性名、データ型、長さ、精度、スケール、秒精度および説明(オプション)が表示されます。表演算子やビュー演算子など、一部の演算子の場合は、「入力」タブと「出力」タブではなく、「I/O」タブのみが表示されます。それらのタブで、属性情報を編集します。

図5-4 は、演算子エディタの「出力属性」タブを示します。この例では、演算子は、個別の「入力」タブと「出力」タブを含むアグリゲータとなります。

図5-4 演算子エディタ上の「出力」タブ

図5-4 演算子エディタ上の「出力」タブの説明

このタブは、出力属性の定義に使用できる表を含みます。タブ上の各行は属性を表します。マッピング・エディタでは、編集できないプロパティは無効化されます。たとえば、データ型がNUMBERの場合、精度とスケールは編集できますが、長さは編集できません。

属性は追加、削除および編集できます。属性を追加するには、空白行の「属性」列をクリックして属性名を入力し、データ型、長さ、説明などその他の属性の詳細を指定します。属性を削除するには、属性の左側にあるグレー表示されたセルを右クリックし、「削除」を選択します。

属性のデータ型、長さ、精度およびスケールに正しい値を割り当てるには、PL/SQLルールに従います。演算子を同期化すると、Oracle Warehouse BuilderではSQLルールに基づいて属性がチェックされます。

入力タブおよび出力タブにリストされた属性の順序を変更することもできます。属性を表す列を選択して、属性の左側にある「>」ボタンを使用して、グループの属性の順序を変更します。または、マウスの左ボタンを押したままで、十字線が表示されたら、矢印を目的の場所にドラッグします。

演算子属性に関連付けられている式

式、ジョイナ、アグリゲータ、および検索などの特定の演算子には、それらと関連付けられている式を持つことができます。それらの属性については、属性の「式」列を使用して属性値を作成するために使用する式を指定します。「式」列に式を直接入力することができます。図5-4 は、アグリゲータ演算子内の出力属性の「式」列を示しています。式ビルダー・インタフェースを使用して式を定義するには、「式」列の右側で省略記号ボタンをクリックします。

たとえばアグリゲータ演算子で、集計されたソース列を格納する出力属性を作成します。出力属性の「式」列を使用して、属性値を作成するために使用する式を指定します。

表示セットの使用

表示セットは、属性のサブセットのグラフィック表現です。表示セットを使用して、演算子に表示される属性の数を制限し、複合マッピングの表示を単純化します。

デフォルトで、演算子には「ALL」、「MAPPED」および「UNMAPPED」という3つの事前定義済表示セットが含まれています。表5-1 で、デフォルトの表示セットについて説明します。

表5-1 デフォルトのセット

表示セット

説明

すべて

演算子にすべての属性が含まれています。

MAPPED

別の演算子に接続されている演算子の属性のみが含まれています。

UNMAPPED

他の属性に接続されていない属性のみが含まれています。

表示セットの定義

マッピング内の任意の演算子に対して、表示セットを定義できます。

表示セットを定義する手順は、次のとおりです。

1. 演算子を右クリックして「表示セット」を選択します。
図5-5のような「表示セット」ダイアログ・ボックスが表示されます。

図5-5 「表示セット」ダイアログ・ボックス

図5-5 「表示セット」ダイアログ・ボックスの説明

2. 「UNMAPPED」の下の行をクリックし、新規表示セットの名前と説明を入力します。

3. 「選択された表示セットの属性」というセクションに、演算子に使用できるすべての属性が表示されます。「タイプ」列は自動的にユーザー定義に設定されます。
定義済の属性セットは編集および削除できません。

4. 「挿入」列で、表示セットに含める属性を選択します。
すべての属性を指定するには「すべて選択」を、すべての属性を除外するには「すべて選択解除」をクリックします。

5. 「OK」をクリックします。
演算子のグループには、表示用に選択した属性セットに含まれる属性のみがリストされます。

表示セットの選択

1つのグループに複数の表示セットがある場合は、「グラフ」メニューを使用して、リストから異なる表示セットを選択できます。

表示セットを選択する手順は、次のとおりです。

1. 演算子のグループを右クリックします。

2. 「表示セットの選択」をクリックして、表示セットを選択します。

マッピング・プロパティの設定

マッピングを定義した後、プロパティ・インスペクタを使用してマッピングのプロパティを設定することができます。

次のプロパティを設定できます。

- マッピングのプロパティ: これはマッピング全体に影響を与えるプロパティです。たとえば、マッピング実行時にターゲットがロードされる順序を定義するターゲット・ロード順序パラメータを設定することができます。

- 演算子のプロパティ: これは演算子全体に影響を与えるプロパティです。設定できるプロパティは、演算子のタイプによって異なります。たとえば、Oracleソースおよびターゲット演算子の使用手順は、フラット・ファイルのソースおよびターゲット演算子の使用手順とは異なります。

- グループのプロパティ: これは属性のグループに影響を与えるプロパティです。ほとんどの演算子には、グループのプロパティが設定されていません。グループ・プロパティが設定される演算子の例としては、スプリッタ演算子やデュプリケータ解除演算子があります。

- 属性のプロパティ: これはソース演算子とターゲット演算子の属性に関するプロパティです。属性のプロパティの例としては、データ型、精度、スケールがあります。

演算子、グループおよび属性プロパティの設定

マッピング・エディタのキャンバス上で演算子、グループ、または属性を選択する場合、それに関連付けられたプロパティはプロパティ・インスペクタに表示されます。プロパティ・インスペクタの使用に必要なプロパティの値を設定します。設定できるプロパティは、演算子を説明している章に記述されています。

関連項目:

- ソース演算子とターゲット演算子

- データ・フロー演算子

- Name and Address演算子を使用したName and Addressデータのクレンジングおよび修正

- Match-Merge演算子による重複ソース・レコードの削除

マッピング・プロパティの設定

マッピングのプロパティを設定するには、プロジェクト・ナビゲータでマッピングを選択します。プロパティ・インスペクタにマッピングのプロパティが表示されます。

次のプロパティの値を設定できます。ビジネス名、物理名、説明、実行タイプ、およびターゲット・ロード順序。

「マッピングのロードにおけるターゲット・オブジェクトの順序の指定」の説明に従って、ターゲット・ロード順序の構成パラメータを使用してマッピング内でターゲットがロードされる順序を指定します。

マッピングのロードにおけるターゲット・オブジェクトの順序の指定

マッピングに1つのターゲットのみが含まれている場合、あるいはマッピングがSQL*LoaderまたはABAPマッピングの場合は、ターゲット・ロード順序が適用されません。デフォルトの設定を受け入れてマッピングの設計を続行してください。

複数のターゲットがあるPL/SQLマッピングを設計すると、Oracle Warehouse Builderにより、ターゲットをロードするデフォルトの順序が計算されます。ターゲット間に外部キー関係を定義すると、親の次に子をロードするデフォルトの順序が作成されます。外部キー関係を作成しない場合、またはターゲット表に再帰的な関係がある場合は、無作為な順序がデフォルトとして割り当てられます。

デフォルトのロード順序は、「ターゲット・ロード順序」マッピング・プロパティを設定することで上書きできます。ターゲットの順序を変更する際に間違った変更を実行した場合は、「デフォルトにリセット」オプションを選択することで、デフォルトの順序に戻ります。または、「取消」を選択してターゲット順序の変更を破棄できます。

複数のターゲットのロード順序を指定する手順は、次のとおりです。

1. マッピング・キャンバスの空白をクリックすると、プロパティ・インスペクタにマッピングのプロパティが表示されます。
プロパティ・インスペクタが表示されない場合は、「表示」メニューから「プロパティ・インスペクタ」を選択します。

2. ターゲット・ロード順序プロパティに進み、このプロパティの右側にある省略記号ボタンをクリックします。
「ターゲット・ロード順序」ダイアログ・ボックスで、TARGET2がTARGET1の前に表示されています。

3. ロード順序を変更するには、ターゲットを選択し、ボタンを使用してリスト内でターゲットを上または下に移動します。

デフォルトにリセット

「デフォルトにリセット」ボタンは、ターゲット・ロード順序を再計算する場合に使用します。ターゲットの順序変更でエラーが発生した場合、または順序を割り当てた後に当初の順序が無効になるようなマッピングの設計変更があった場合は、再計算が必要になります。

マッピングの構成

マッピングを定義した後、それらを構成してマッピングおよびマッピングに含まれる演算子の物理プロパティを指定できます。マッピングを構成することでコード生成を制御し、ユーザー環境に合せて最適化されたマッピング・コードを生成できます。

マッピング構成の手順

マッピングを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、マッピングを右クリックして「構成」を選択します。
マッピングの構成パラメータを含む「構成」タブが表示されます。

このタブには、「配布可能」、「言語」、「生成コメント」および「参照カレンダ」の各パラメータが含まれています。また、「ランタイム・パラメータ」ノードと「コード生成オプション」ノードもあります。さらに、マッピング内の各演算子が、オブジェクトまたは演算子タイプを表すノードの下にリストされます。たとえば、マッピングに2つの表演算子と1つのフィルタ演算子が含まれる場合、「表演算子」ノードには2つの表の構成パラメータが表示され、「フィルタ演算子」ノードにはフィルタ演算子の構成パラメータが表示されます。

2. 「配布可能」パラメータを「True」に設定します。

3. 「言語」を、選択したマッピング用に生成するコードのタイプに設定します。
選択できるオプションは、マッピングにおける演算子の設計と使用に応じて異なります。Oracle Warehouse Builderでは、PL/SQL、「SQL*Plus」、「SQL*Loader」および「ABAP」(SAPソース・マッピングの場合)の各オプションが提供されます。

4. あらかじめ定義したスケジュールに基づいてマッピングを実行するように設定するには、「参照カレンダ」パラメータ上の省略記号ボタンをクリックします。
「参照カレンダ」ダイアログ・ボックスが表示されます。作成されたスケジュールは、ここにリストされます。現在のマッピングに関連付けるスケジュールを選択します。

スケジュールの作成および使用手順は、第11章「ETLジョブのスケジューリング」を参照してください。

5. 「コード生成オプション」を開き、マッピング用に生成されたコードを最適化するパフォーマンス・オプションを有効化します。
各オプションの詳細は、「コード生成オプション」を参照してください。

6. (オプション)PL/SQLマッピングのチャンクを定義するには、次の操作を1つ実行します。

- シリアル・チャンクを構成するには、「SCDの更新」を開いて、「SCDの更新」に従ってパラメータを設定します。

- パラレル・チャンクを構成するには、「チャンク化オプション」、「詳細」の順に開いて、計画したパラレル・チャンクの方法に基づいてパラメータを設定します。また、シリアル・チャンクにはこのマッピングは使用できないことも確認してください。

関連項目:
パラレル・チャンク・パラメータの詳細は、「チャンク化オプション」を参照してください。

パラレル・チャンクに対応するランタイム・パラメータを設定するには、「チャンク化オプション」で値を設定した後に、マッピング構成エディタを閉じてから再度開いてパラレル・チャンクに関連したランタイム・パラメータを表示します。

注意:
PL/SQLマッピングのチャンクのみ実行できます。

7. 「ランタイム・パラメータ」を開き、マッピングを配布用に構成します。
各ランタイム・パラメータの詳細は、「ランタイム・パラメータ」を参照してください。

8. マッピングの各演算子を表すノードに移動して、それぞれの物理プロパティを設定します。特定のノードに表示されるプロパティは、オブジェクトのタイプによって異なります。たとえば、表演算子ノードにリストされる表については、「表の構成」にリストされた表パラメータを構成できます。

関連項目:

- マッピング内のソースおよびターゲットの構成の詳細は、「ソースとターゲットのリファレンス」を参照してください。

- フラット・ファイルのソースおよびターゲットを使用したマッピング構成の詳細は、「フラット・ファイル演算子の構成」を参照してください。

注意:
一部の環境では、ロケーションをIPアドレスではなくホスト名に変更すると、パフォーマンスが低下します。

演算子とワークスペース・オブジェクトの同期化

マッピングに使用する多くの演算子に対応する定義は、Oracle Warehouse Builderワークスペースにあります。これは、表およびビューの演算子などの、ソース演算子とターゲット演算子に該当します。また、順序および変換の演算子など、定義が複数のマッピングにまたがって使用される他の演算子にも該当します。これらの演算子を変更するときは、変更内容をワークスペース・オブジェクトに伝播させます。

変更の伝播方向は、次の選択肢から決定できます。

- 「マッピング演算子と関連付けられたワークスペース・オブジェクトの同期化」
これにより、ワークスペース・オブジェクトの定義内の変更を、ワークスペース・オブジェクトにバインドされるマッピング演算子に伝播できます。

また、マッピング内のすべての演算子を、ワークスペース内の対応する定義と同期化することもできます(「マッピングのすべての演算子の同期化」参照)。

- ワークスペース・オブジェクトとマッピング演算子の同期化
これにより、マッピング演算子に加えられた変更を、対応するワークスペース定義に伝播できます。演算子を1つ選択し、指定したワークスペース・オブジェクトの定義と同期化できます。

同期化はリフレッシュとは異なります。リフレッシュ・コマンドでは、マルチユーザー環境で他のユーザーが行った変更にあわせて、確実に最新の状態が保たれます。同期化では、対応するワークスペース・オブジェクトと演算子が照合されます。

マッピング演算子と関連付けられたワークスペース・オブジェクトの同期化

本番環境でマッピングの使用を開始した後、ETL設計に影響するソースまたはターゲットが変更される場合があります。通常、このような変更を管理する最善の方法は、第14章「マッピング・メタデータ依存性」で説明するようにメタデータ依存性マネージャを経由することです。メタデータ依存性マネージャを使用すると、変更による影響が自動的に評価され、影響を受けるすべてのマッピングが同期化されます。

この項の説明に従って、マッピング・エディタで、オブジェクトを手動で同期化することもできます。

ワークスペース・オブジェクトから演算子に同期化する時期

マッピング・エディタでは、次のような理由により、ワークスペース・オブジェクトから演算子への同期化を実行できます。

- 手動による変更の伝播: ワークスペース・オブジェクトの変更を、関連する演算子に伝播します。ワークスペース・オブジェクトの変更には、構造的な変更、属性名の変更、属性のデータ型の変更などがあります。
ワークスペース・オブジェクトの変更を複数のマッピングに自動的に伝播する方法は、第14章「マッピング・メタデータ依存性」を参照してください。

- 演算子と新規ワークスペース・オブジェクトの同期化: たとえば、マッピングをデータ・ウェアハウスの特定のバージョンから新しいバージョンに移行し、各バージョンの別のオブジェクト定義を維持する場合、演算子と新規のワークスペース・オブジェクトを同期化することができます。

- 表によるマッピングのプロトタイプ作成: 設計環境で作業している場合は、表を使用したETLロジックの設計を選択できます。ただし、本番環境では、他のワークスペース・オブジェクト・タイプ(ビュー、マテリアライズド・ビュー、キューブなど)に基づいたマッピングが可能です。

物理名とビジネス名の同期化

ワークスペースオブジェクトから演算子に同期化中に、演算子、グループおよび属性の物理名とビジネス名を同期化させるかどうかを指定することができます。デフォルトでは、演算子、グループおよび属性のバウンド名は、必ず対応するワークスペース・オブジェクトの物理名から導出されます。同期化の動作は、「プリファレンス」ダイアログ・ボックスの「ネーミング」ノードにリストされる「名前の変更の同期化」によって制御されます。

「プリファレンス」ダイアログ・ボックスの「ネーミング」ノードにある「名前の変更の同期化」プリファレンスを選択する場合、すべての演算子上の同期化操作で、演算子、グループおよび属性の物理名とビジネス名は同期化されます。「名前の変更の同期化」プリファレンスを選択解除する場合は、演算子、グループおよび属性の物理名とビジネス名は同期化されません。

関連項目:
Oracle Warehouse Builderのプリファレンスの詳細は、『Oracle Warehouse Builder概要』を参照してください。

ワークスペース・オブジェクトから演算子への同期化の手順

バインド先のワークスペース・オブジェクトと同期化する手順は次のとおりです。

1. マッピング・エディタのキャンバスで、同期化する演算子を選択します。演算子が最大化された状態で表示されると、演算子名をクリックして選択します。

2. 右クリックして「同期化」を選択します。
「同期化」ダイアログ・ボックスが表示されます。

3. 同期化先のフィールドのリポジトリ・オブジェクトで、マッピング演算子を同期化するワークスペース・オブジェクトを選択します。
デフォルトでは、マッピング演算子が最初にバインドされるワークスペース・オブジェクトは、このフィールドに表示されます。

4. 同期化の方向で、「インバウンド」を選択します。

5. 「一致方針」フィールドで、同期化中に使用される一致方向を選択します。
一致方針の詳細は、「一致方針」を参照してください。

6. 「同期化方針」フィールドで、同期化方針を選択します。
「置換」を選択して、マッピング演算子定義をワークスペース・オブジェクト定義と置換します。「マージ」を選択して新しいメタデータ定義を追加し、ワークスペース・オブジェクト内の定義と異なる場合は、既存のメタデータ定義を上書きします。

7. 「OK」をクリックして同期化を完了します。

マッピングのすべての演算子の同期化

マッピングのすべての演算子を、1つの手順でバインド先のワークスペース・オブジェクトに同期化できます。演算子を同期化するには、同期化する演算子を含むマッピングを開きます。マッピング・エディタのキャンバスのアクティブなパネルで、「編集」メニューから「すべてを同期」を選択します。「すべてを同期」パネルが表示されます。このパネルを使用して同期化のオプションを定義します。

「すべてを同期」パネルには、ワークスペース・オブジェクトにバインドされるマッピング演算子それぞれに対して1行が表示されます。バインド先のワークスペース・オブジェクトと同期化する、すべてのオブジェクト名の左側にあるボックスを選択します。各演算子について、次の値を指定します。

- リポジトリから: マッピング演算子のバインド先のワークスペース・オブジェクトを表示します。
演算子のバインド先のワークスペース・オブジェクトを変更するには、ワークスペース・オブジェクト名の右にある省略記号のボタンをクリックします。「ソース」ダイアログ・ボックスが表示されます。このページのリストをクリックして、新しいワークスペースオブジェクトを選択し「OK」をクリックします。

- マッピング先: マッピング演算子の名前が表示されます。このフィールドは編集できません。

- 一致方針: 演算子の同期化中に使用される一致方針を選択します。一致方針の詳細は、「一致方針」を参照してください。

- 同期化方針: 演算子の同期化中に使用される同期化方針を選択します。同期化方針として「置換」または「マージ」を選択できます。

ワークスペース・オブジェクトとマッピング演算子の同期化

マッピングの演算子を変更するときは、変更内容をワークスペース・オブジェクトに伝播させます。同期化によって、表、ビュー、マテリアライズド・ビュー、変換およびフラット・ファイルの各演算子の変更を伝播できます。

次のような理由により、演算子からワークスペース・オブジェクトへの同期化を実行します。

- 変更の伝播: 演算子の変更を、関連するワークスペース演算子に伝播します。演算子または属性のビジネス名を変更すると、そのビジネス名の最初の30文字がバウンド名として伝播されます。

- ワークスペース・オブジェクトの置換: 同期化により、既存のワークスペース・オブジェクトを置換します。

演算子からの同期化は、他の演算子とワークスペース・オブジェクトとの依存関係には影響を与えません。表5-2に、同期化に使用できる演算子をリストします。

表5-2 アウトバウンド同期化演算子

マッピング・オブジェクト

ワークスペース・オブジェクトの作成

変更の伝播

ワークスペース・オブジェクトの置換

注意

外部表

はい

はい

はい

ワークスペースの外部表のみが更新され、その外部表に関連付けられているフラット・ファイルは更新されません。Oracle Warehouse Builderソースおよびターゲット・ガイドを参照してください。

フラット・ファイル

はい

はい

いいえ

シングル・レコード・タイプのフラット・ファイルに対してのみ、カンマ区切りの新しいフラット・ファイルが作成されます。

入力パラメータのマッピング

はい

はい

はい

入力属性とデータ型が入力パラメータとしてコピーされます。

出力パラメータのマッピング

はい

はい

はい

出力属性とデータ型がファンクションの戻り指定としてコピーされます。

マテリアライズド・ビュー

はい

はい

はい

属性とデータ型が列としてコピーされます。

表

はい

はい

はい

属性とデータ型が列としてコピーされます。制約プロパティはコピーされません。

変換

いいえ

いいえ

いいえ

該当なし

ビュー

はい

はい

はい

属性とデータ型が列としてコピーされます。

ワークスペース・オブジェクトとマッピング演算子の同期化のステップ

次の手順を使用して、マッピング演算子からワークスペース・オブジェクトに同期化します。同期化では、ワークスペース・オブジェクトは、マッピング作成後にマッピング演算子に加えられた変更によって更新されます。

1. マッピング・エディタのキャンバスで、バインド先ワークスペース・オブジェクトに伝播する演算子を選択します。

2. 「編集」メニューから、「同期化」を選択します。または、演算子のヘッダーを右クリックして「同期化」を選択します。
演算子の同期化ダイアログ・ボックスが表示されます。

3. 同期化先のフィールドのリポジトリ・オブジェクトで、マッピング演算子定義の変更によって更新されるワークスペース・オブジェクトを選択します。
デフォルトでは、マッピング演算子が最初にバインドされていたワークスペース・オブジェクトが表示されます。

4. 「同期化の方向」フィールドで、「アウトバウンド」を選択します。

5. (オプション)「一致方針」フィールドで、同期化中に使用される一致方向を選択します。「一致方針」を参照してください。

6. (オプション)「同期化方針」フィールドで、同期化方針を選択します。
「置換」を選択して、ワークスペース・オブジェクト定義をマッピング演算子定義と置換します。「マージ」を選択して新しいメタデータ定義を追加し、マッピング演算子内の定義と異なる場合は、既存のメタデータ定義を上書きします。

7. 「OK」をクリックします。

同期化の拡張オプション

「同期化プラン」ダイアログ・ボックスを使用して、選択したオブジェクトがOracle Warehouse Builderによってどのように同期化されるかの詳細を表示および編集します。「一致方針」から選択した後、「リフレッシュ・プラン」をクリックして、Oracle Warehouse Builderで実行されるアクションを表示します。

同期化のコンテキスト内では、ソースは差分を継承するオブジェクトを指し、ターゲットは、変更されるオブジェクトを指します。

たとえば、図5-6では、フラット・ファイルPAYROLL_WESTがソースで、フラット・ファイル演算子PAYROLLがターゲットです。したがって、Oracle Warehouse Builderにより、PAYROLL_WESTフラット・ファイルのフィールドに対応するPAYROLL演算子の新規の属性が作成されます。

図5-6 同期化の拡張オプション

「図5-6 同期化の拡張オプション」の説明

一致方針

演算子とワークスペース・オブジェクトの比較方法を決定するには、一致方針を設定します。同期化によって変更(演算子の属性の追加、削除など)が適用されると、マッピング・エディタがリフレッシュされます。同期化によって演算子の属性が削除される場合は、属性とのデータ・フロー接続も削除されます。同期化によって演算子の属性が追加される場合は、マッピング・エディタの演算子の後に新しい属性が表示されます。一致する属性間のデータ・フロー接続は保持されます。ソース・オブジェクトの属性の名前を変更すると、当初の属性が削除されて新しい属性が追加されたように解釈されます。

マッピングのオブジェクトを同期化するには、次の方針を指定できます。

- オブジェクト識別子による一致

- バウンド名による一致

- 位置による一致

オブジェクト識別子による一致

この方針では、演算子属性の一意のオブジェクト識別子をワークスペース・オブジェクトの識別子と比較します。オブジェクト識別子による一致は、ビュー演算子とワークスペース表など、演算子をタイプの異なるワークスペース・オブジェクトと同期化する場合には使用できません。

この方針は、ターゲット・オブジェクトをソース・オブジェクトへの変更と一致させる場合や、ターゲット・オブジェクト内での物理名の変更とは関係なく個別のビジネス名を維持する場合に使用します。

Oracle Warehouse Builderにより、ソース・オブジェクトの属性に対応しない属性はターゲット・オブジェクトから削除されます。これは、ソースに属性が追加された場合や、ソース・オブジェクトから属性が削除された場合に実施されます。

バウンド名による一致

この方針では、演算子属性のバウンド名をワークスペース・オブジェクト属性の物理名と一致させます。一致では大文字/小文字が区別されます。

この方針は、バウンド名をワークスペース・オブジェクトの物理名と一致させる場合に使用します。演算子の構造が変化する変更がワークスペース・オブジェクトに生じた場合は、別のワークスペース・オブジェクトでこの方針を使用することもできます。

Oracle Warehouse Builderにより、ワークスペース・オブジェクトの属性と一致しない演算子の属性は削除されます。選択したワークスペース・オブジェクトの属性で、演算子の属性と一致しない属性は、新しい属性として演算子に追加されます。演算子をワークスペース・オブジェクトにバインドすると、バウンド名は読取り専用になるため、バウンド名を操作して異なる一致結果を取得することはできません。

位置による一致

この方針では、演算子属性と選択したワークスペース・オブジェクトの列、フィールドまたはパラメータを位置によって一致させます。つまり、演算子の最初の属性はワークスペース・オブジェクトの最初の属性と同期化され、2番目の属性はワークスペース・オブジェクトの2番目の属性と同期化されます。

この属性は、演算子を別のワークスペース・オブジェクトと同期化して、演算子属性のビジネス名を維持する場合に使用します。この方針は、ワークスペース・オブジェクトに対する変更が、オブジェクトの後への列、フィールドまたはパラメータの追加のみである場合に最も効果的です。

ソース・オブジェクトの属性よりターゲット・オブジェクトの属性が多い場合は、余分な属性が削除されます。ターゲット・オブジェクトの属性よりソース・オブジェクトの属性が多い場合は、新しい属性として追加されます。

例: マッピングによるトランザクション・データのロード

シナリオ

会社では、発生する挿入、更新および削除トランザクションをすべてrecord.csvというフラット・ファイルに記録しています。これらのトランザクションは、格納順に正確に処理される必要があります。たとえば、あるトランザクションの順番が配置、更新、キャンセル、再入力となっていた場合、このトランザクションはこの順序に従って処理される必要があります。

ソース・ファイルrecord.csvのデータ・セットの例は次のように定義されます。

Action,DateTime,Key,Name,Desc
I,71520031200,ABC,ProdABC,Product ABC
I,71520031201,CDE,ProdCDE,Product CDE
I,71520031202,XYZ,ProdXYZ,Product XYZ
U,71620031200,ABC,ProdABC,Product ABC with option
D,71620032300,ABC,ProdABC,Product ABC with option
I,71720031200,ABC,ProdABC,Former ProdABC reintroduced
U,71720031201,XYZ,ProdXYZ,Rename XYZ

次のようにターゲット表にデータをロードする必要があります。

SRC_TIMESTA KEY NAME    DESCRIPTION
----------- --- ------- ---------------------------
71520031201 CDE ProdCDE Product CDE
71720031201 XYZ ProdXYZ Rename XYZ
71720031200 ABC ProdABC Former ProdABC reintroduced

Oracle Warehouse Builderを使用して特定の順序でトランザクション・データをロードするためのETLロジックを作成する必要があります。

解決策

Oracle Warehouse Builderを使用してETLロジックを設計し、トランザクションがソースに格納された時間的な順序に正確に従ってデータをロードできます。このためには、ターゲット表にデータをロードする前に、データの順序付けおよび条件付きの分割を行うマッピングを設計します。次に、行ベースのオペレーティング・モードでコードを生成するためのマッピングを構成します。次の例に示すように、行ベースのオペレーティング・モードでは、Oracle Warehouse Builderによりif-then-else構造を使用して行ごとにデータを処理するコードが生成されます。

CURSOR
SELECT
"DATETIME$1"
FROM
"JOURNAL_EXT"
ORDER BY "JOURNAL_EXT"."DATETIME" ASC
LOOP
IF "ACTION" = 'I' THEN
INSERT this row
ELSE
IF "ACTION" = 'U' THEN
UPDATE this row
ELSE
DELETE FROM
"TARGET_FOR_JOURNAL_EXT"
END LOOP;

これにより、確実に、一連のアクションは連続する順序で実装され、トランザクションが記録された順序に従ってデータがロードされます。

手順1: ソース・フラット・ファイルrecord.csvのインポートおよびサンプリング

この例では、フラット・ファイルrecord.csvにすべてのトランザクション・レコードおよびタイムスタンプが格納されます。Warehouse Builderのインポート・メタデータ・ウィザードを使用して、ソース・システムからこのフラット・ファイルをインポートします。次に、フラット・ファイル・サンプル・ウィザードを使用して、Oracle Warehouse Builder内のフラット・ファイルのメタデータを定義します。

注意:
システムが表から取得されている場合は、このフラット・ファイルと通常の表を置き換えることができます。この場合は、「手順3: マッピングの設計」に進みます。

手順2: 外部表の作成

マッピング内のサンプリングされたフラット・ファイルの使用を単純化するには、「手順1: ソース・フラット・ファイルrecord.csvのインポートおよびサンプリング」でインポートおよびサンプリングされたフラット・ファイルに基づき、外部表ウィザードを使用して外部表(JOURNAL_EXT)を作成します。

フラット・ファイルのかわりに外部表を使用する利点は、外部表によりフラット・ファイル内のデータに直接アクセスするSQLが提供される点です。したがって、データをステージングする必要はありません。

ステップ3: マッピングの設計

このマッピングでは、トランザクション・データを外部ソースから移動し、データを並べ替える演算子、続いて条件によりデータを分割する演算子を介してターゲット表にデータをロードします。

図5-7は、ソースの並替えおよび分割方法を示しています。

図5-7 ETL設計

「図5-7 ETL設計」の説明

ソーター演算子により、データの順序付けが可能になり、またソースで記録された順序に正確に従ってトランザクションを処理できます。スプリッタ演算子により、生成済コード内でif-then-else制約として機能する分割条件を定義することで、ソース・データ内に記録されたすべての挿入、更新および削除を条件付きで処理できます。データは条件付きで分割され、ターゲット表にロードされます。このマッピングでは、条件付きロードを説明するために、同じターゲット表を3回使用します。マッピング表TARGET1、TARGET2およびTARGET3は、すべて同じワークスペース表TARGETにバインドされます。すべてのデータは、単一のターゲット表に挿入されます。

次の手順は、このマッピングを作成する方法を示します。

手順4: マッピングの作成

「マッピングの作成」ダイアログ・ボックスを使用してLOAD_JOURNAL_EXTというマッピングを作成します。Oracle Warehouse Builderによりマッピング・エディタが開かれ、そこでマッピングを作成できます。

手順5: 外部表演算子の追加

マッピング外部表演算子をマッピング・エディタのキャンバス上にドラッグ・アンド・ドロップし、外部表JOURNAL_EXTにマッピング外部表演算子をバインドします。

手順6: データの順序付け

ソーター演算子を追加して、ターゲットにロードされる必要のあるトランザクション・データの順序を指定するorder-by句を定義します。

関連項目:
ソーター演算子の使用方法の詳細は、「ソーター演算子」を参照してください。

図5-8は、昇順のトランザクション・データのタイムスタンプに基づいて表を順序付ける方法を示しています。

図5-8 「Order By句」ダイアログ・ボックス

「図5-8 「Order By句」ダイアログ・ボックス」の説明

手順7: 分割条件の定義

スプリッタ演算子を追加して、トランザクション・データに格納された挿入、更新および削除を条件付きで分割します。この分割条件は、生成済コード内でif-then-else制約として機能します。

図5-9は、SOURCE演算子と、SPLITTER演算子にリンクするORDERBY演算子を結合する方法を示しています。

図5-9 スプリッタ演算子の追加

「図5-9 スプリッタ演算子の追加の説明

トランザクションの各タイプに対する分割条件を定義します。OutgroupのINSERT_DATAには、INGRP1.ACTION = 'I'という分割条件を定義します。UPGRADE_DATAには、INGRP1.ACTION = 'U'という分割条件を定義します。Oracle Warehouse Builderでは、スプリッタ演算子にREMAINING_ROWSと呼ばれるデフォルトのグループがあり、そのグループによりすべての削除(「D」)レコードが自動的に処理されます。

手順8: ターゲット表の定義

トランザクションの各タイプ(INSERT_DATA、UPDGRADE_DATAおよびREMAINING_ROWS)に対し、同じワークスペース・ターゲット表をそれぞれに使用します。

手順9: マッピングLOAD_JOURNAL_EXTの構成

マッピングを定義した後、コードを生成するためにマッピングを構成する必要があります。この例の目的は、格納された順序に正確に従ってデータを処理することであるため、デフォルトのオペレーティング・モードとして行ベースを選択する必要があります。このモードでは、行ごとにデータが処理され、ターゲット表での挿入、更新および削除アクションは、ソースでトランザクションが記録された順序に正確に従って発生します。

Oracle Warehouse Builderでは、すべての挿入トランザクションに対して1つの文が作成され、すべての更新トランザクションおよびすべての削除トランザクションに対してもそれぞれ1つの文が作成されるので、セット・ベース・モードは選択しないでください。コードによりこれらのプロシージャが次々にコールされ、1つのアクションが完了してから次のアクションを行います。たとえば、最初にすべての挿入が処理され、次にすべての更新が処理され、続いてすべての削除が処理されます。

トランザクション・データをロードするためのマッピングを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、LOAD_JOURNAL_EXTマッピングを右クリックして「構成」を選択します。

2. 「ランタイム・パラメータ」ノードを開き、「デフォルト・オペレーティング・モード」パラメータを「行ベース」に設定します。

この例では、他のすべてのパラメータに対して、デフォルト値を使用します。コードを生成する前にマッピングを検証します。

手順10: コードの生成

マッピングを生成した後、Oracle Warehouse Builderでは、「ログ」ウィンドウに結果が表示されます。

コードを調べると、Oracle Warehouse Builderでは連続したアクションのすべてが行ベース・モードで実装されていることがわかります。これはデータが行ごとに処理されることを示し、また、Oracle Warehouse Builderによりif-then-else構造を使用して発生順にすべての条件が評価されることを示します。このため、結果のターゲット表ではソースで記録されたトランザクションの連続的な整合性が保持されます。

例: マッピング・エディタによるステージング領域表の作成

マッピング・エディタでバインドされていない表演算子を使用すると、ステージング領域表をすばやく作成できます。

次の手順は、既存のソース表に基づいてステージング表を作成する方法を示しています。この手順は、ビュー、マテリアライズド・ビュー、フラット・ファイルおよび変換の作成にも使用できます。

ソース表をステージング表にマップする手順は、次のとおりです。

1. マッピング・エディタで、ソース表を追加します。
メニュー・バーから「グラフ」、「追加」、「データ・ソース/ターゲット」、「表演算子」を選択します。または、ソース表を、プロジェクト・ナビゲータからマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. 表演算子の追加ダイアログ・ボックスを使用して、マッピング内のソース表の演算子を選択およびバインドします。表演算子の追加ダイアログ・ボックスから、「バインドされていない演算子を属性なしで作成」を選択します。
このマッピングは、図5-10のソース表と属性を持たないステージング領域表に類似しています。

図5-10 バインドされていないステージング表(属性なし)とソース表

「図5-10 バインドされていないステージング表(属性なし)とソース表」の説明

3. ソース演算子のグループにマウス・ポインタを置き、マウス・ボタンを押したままにします。

4. ステージング領域表グループまでマウスをドラッグします。
ソース属性がステージング領域表にコピーされ、2つの演算子が接続されます。

5. マッピング・エディタでは、マッピングに追加したバインドされていない表を選択します。クリックして「作成とバインド」を選択します。
Oracle Warehouse Builderにより、「作成とバインド」ダイアログ・ボックスが表示されます。

6. 「作成場所」フィールドに、表を作成するターゲット・モジュールを指定します。
指定したターゲット・モジュールに新しい表が作成されます。

プラッガブル・マッピングの使用

マッピングのデータ・フローを再使用するには、再使用するデータ・フローの一部の周囲にプラッガブル・マッピングを作成します。プラッガブル・マッピングは、単一の演算子として機能するマッピング演算子の再使用可能なグループです。プラッガブル・マッピングは、プログラミング言語におけるファンクションの概念と似ており、ファンクションをグラフィカルに定義するための手段です。

プラッガブル・マッピングは、定義すると、マッピング内でネストした単一のマッピング演算子として表示されます。プラッガブル・マッピングは、同じマッピング内またはその他のマッピング内で複数回再使用できます。プラッガブル・マッピングはその他のプラッガブル・マッピング内に含めることができます。

その他の演算子と同様、プラッガブル・マッピングには、様々なマッピング内のその他の演算子に接続するための入出力属性で構成されるシグネチャがあります。シグネチャは、プログラミング言語におけるファンクションの入出力要件と類似しています。

関連項目:
プラガッブル・マッピングの詳細は、Oracle Warehouse Builder概要を参照してください。

プラッガブル・マッピングは、再使用することや、埋め込むことができます。

- プラッガブル・マッピングの再使用:プラッガブル・マッピングが参照するメタデータが該当するマッピングの外部に存在できる場合、プラッガブル・マッピングは再使用可能です。再使用可能なプラッガブル・マッピングは、プライベート使用のスタンドアロンのプラッガブル・マッピングとして格納するか、フォルダ(ライブラリ)に格納できます。これらのフォルダにアクセス権を持つユーザーは、プラッガブル・マッピングを作業用のテンプレートとして使用できます。

- 埋め込まれたプラッガブル・マッピング: プラッガブル・マッピングが参照するメタデータが該当するマッピングまたはプラッガブル・マッピングによって所有されている場合にのみ、プラッガブル・マッピングは埋め込まれます。埋め込まれたプラッガブル・マッピングは、スタンドアロン・マッピングとして、またはグローバル・ナビゲータのライブラリとして格納されません。埋め込まれたプラッガブル・マッピングを所有しているマッピングまたはプラッガブル・マッピング内にのみ格納され、マッピングを所有しているオブジェクトの編集によってのみアクセスできます。埋め込まれたプラッガブル・マッピングのコードを検証または生成するには、マッピングを所有しているオブジェクトのコードを検証または生成する必要があります。

プラッガブル・マッピングの作成

プラッガブル・マッピングは、通常、必要に応じて事前に定義して使用されます。プラッガブル・マッピングは、マッピング・エディタを使用してマッピング内から、またはウィザードを使用してナビゲーション・ツリーから作成できます。ウィザードにはデフォルトが用意されている選択肢もあり、少ない選択肢でユーザーをガイドするため、プラッガブル・マッピングを速やかに作成できます。後でプラッガブル・マッピングのエディタから選択を追加できます。エディタには、すべての設定が一連のタブで表示されます。

ナビゲーション・ツリーの「プラッガブル・マッピング」ノードには、次のようなの2つのノードがあります。

- スタンドアロン: スタンドアロン・プラッガブル・マッピングを含みます。

- プラッガブル・マッピング・ライブラリ: ライブラリとして公開するうえで関連する機能を備えるプラッガブル・マッピングのセットを含みます。

これらのいずれかのノードでプラッガブル・マッピングを作成できます。

スタンドアロン・プラッガブル・マッピングの作成

1. プロジェクト・ナビゲータで、プロジェクト・ノード、「プラッガブル・マッピング」ノードの順に開きます。

2. 「スタンドアロン」を右クリックし、新規プラッガブル・マッピングを選択します。
プラッガブル・マッピングの作成ウィザードが表示されます。

3. 名前と説明ページに、モジュールの名前と説明(オプション)を入力します。「次へ」をクリックします。

4. シグネチャ・グループページには、入力シグネチャ・グループのINGRP1と出力シグネチャ・グループのOUTGRP1が表示されます。「シグネチャ・グループ」の説明に従って、追加の入力シグネチャ・グループまたは出力シグネチャ・グループを作成します。「次へ」をクリックします。

5. 入力シグネチャ・ページで、「入力シグネチャ」の説明に従って、プラッガブル・マッピングの入力シグネチャ属性を定義します。「次へ」をクリックします。

6. 出力シグネチャ・ページで、「出力シグネチャ」の説明に従って、プラッガブル・マッピングの出力シグネチャ属性を定義します。「次へ」をクリックします。

7. サマリー・ページで、ウィザードで設定したオプションを確認します。オプションを変更するには、「戻る」をクリックします。「終了」をクリックしてデータをインポートします。
Oracle Warehouse Builderでは、プラッガブル・マッピング・エディタが開いて、タイトル・バーにはプラッガブル・マッピング名が表示されます。

8. プラッガブル・マッピング・エディタを使用して演算子を追加し、演算子間のデータ・フローを作成します。詳細は、「演算子のマッピングへの追加」を参照してください。

Oracle Warehouse Builderでは、マッピングで使用されたプラッガブル・マッピングは演算子とみなされます。プラッガブル・マッピングは任意のマッピングに挿入できます。マッピング内でプラッガブル・マッピングを使用するには、コンポーネント・パレットから、プラッガブル・マッピング演算子をキャンバスにドラッグ・アンド・ドロップします。プラッガブル・マッピングの追加ダイアログ・ボックスが表示されます。必要なプラッガブル・マッピングを選択してマッピングに追加します。

シグネチャ・グループ

シグネチャは、プラッガブル・マッピングの入出力属性の組合せです。シグネチャ・グループは、入出力属性をグループ化するためのメカニズムです。

プラッガブル・マッピングには、少なくとも1つの入力または出力シグネチャ・グループが必要です。ほとんどのプラッガブル・マッピングは、論理フローの途中で使用され、入出力グループがあります。

- 追加のシグネチャ・グループを作成するには、「グループ」列で空のセルをクリックしてグループ名を入力し、「方向」列を使用してそのグループが入力グループか出力グループかを指定します。列で、列の説明(オプション)を入力できます。

- シグネチャ・グループを削除するには、グループ名の左側にあるグレーのセルを右クリックし、「削除」を選択します。

「次へ」をクリックしてウィザードを続行します。

入力シグネチャ

入力シグネチャとは、プラッガブル・マッピングにフローする入力属性の組合せのことです。作成した入力シグネチャ・グループごとの入力属性を定義します。

複数の入力シグネチャ・グループを定義した場合は、属性を追加するグループを「グループ」リスト・ボックスから選択します。属性を追加するには、「属性」列で空のセルをクリックしてから属性名を入力します。「データ型」フィールドを使用して、属性のデータ型を指定します。長さ、精度、スケールおよび秒精度などその他の属性詳細を指定するには、対応するフィールドをクリックし、フィールドの矢印を使用するか、数値を入力します。これらのフィールドの一部は、指定したデータ型によっては無効になります。

属性を削除するには、属性の左側にあるグレーのセルを右クリックし、「削除」を選択します。

「次へ」をクリックしてウィザードを続行します。

出力シグネジャ

出力シグネチャとは、プラッガブル・マッピングからフローされる出力属性の組合せのことです。作成した出力シグネチャ・グループごとの出力属性を定義します。

複数の出力シグネチャ・グループを定義した場合は、属性を追加するグループを「グループ」リスト・ボックスから選択します。属性を追加するには、「属性」列で空のセルをクリックしてから属性名を入力します。「データ型」フィールドを使用して、属性のデータ型を指定します。長さ、精度、スケールおよび秒精度などその他の属性詳細を指定するには、対応するフィールドをクリックし、フィールドの矢印を使用するか、数値を入力します。これらのフィールドの一部は、指定したデータ型によっては無効になります。

属性を削除するには、属性名の左側にあるグレーのセルを右クリックし、「削除」を選択します。

「次へ」をクリックしてウィザードを続行します。

プラッガブル・マッピング・エディタのパレットから「入力シグネチャ」または「出力シグネチャ」を追加することもできます。プラッガブル・マッピングが保持できるのは、1つの「入力シグネチャ」と1つの「出力シグネチャ」のみです。また、プラッガブル・マッピングの「入力シグネチャ」および「出力シグネチャ」はプラッガブル・マッピング内でのみ追加できます。通常のマッピングには追加できません。

プラッガブル・マッピング・フォルダの作成

プラッガブル・マッピング・フォルダは、関連するプラッガブル・マッピングのセットを含みます。プラッガブル・マッピングは非公開のままにしておくことも、フォルダに配置して他のユーザーが設計作業時にアクセスできるように公開することもできます。

プラッガブル・マッピング・フォルダを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、プロジェクト・ノード、「プラッガブル・マッピング」ノードの順に開きます。

2. 「プラッガブル・マッピング・フォルダ」ノードを右クリックして新規プラッガブル・マッピング・フォルダを選択します。
プラッガブル・マッピング・フォルダの作成ダイアログ・ボックスが表示されます。

3. 新しいプラッガブル・マッピング・フォルダの名前と説明(オプション)を入力します。
このプラッガブル・マッピング・フォルダの作成後すぐに、プラッガブル・マッピングの作成ウィザードを起動してプラッガブル・マッピングを作成するには、「プラッガブル・マッピング・ウィザードへ進む」を選択します。

4. 「OK」をクリックします。

プロジェクト・ナビゲータにライブラリが表示されます。「スタンドアロン・プラッガブル・マッピングの作成」の説明に従ってライブラリ内に個々のプラッガブル・マッピングを作成します。

プラッガブル・マッピングをツリー上の任意のライブラリに移動することもできます。

プラッガブル・マッピング・ライブラリ内でのユーザー・フォルダの作成

プラッガブル・マッピング・ライブラリ内において、ユーザー・フォルダを作成し、製品行、関数グループ、またはアプリケーション固有のカテゴリなどの条件を使用してプラッガブル・マッピングをグループ化することができます。

ユーザー・フォルダには、ユーザー・フォルダとその他のプラッガブルマッピングを含めることができます。ユーザー・フォルダのネスト・レベルに制限はありません。ユーザー・フォルダは移動、削除、編集または名前変更もできます。

ユーザー・フォルダとそこに含まれているオブジェクトを、同じプラッガブル・マッピング・ライブラリに、同じライブラリに属する任意のユーザー・フォルダに、または異なるライブラリに属するユーザー・フォルダに移動またはコピーできます。

ユーザー・フォルダを削除すると、ユーザー・フォルダとそこに含まれるすべてのオブジェクトがリポジトリから削除されます。

プラッガブル・マッピング・ライブラリ内でユーザー・フォルダを作成する手順は、次のとおりです。

1. ユーザーフォルダを作成するプラッガブル・マッピング・ライブラリまたはユーザー・フォルダを右クリックして「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。

2. 「アイテム」セクションで「ユーザー・フォルダ」を選択します。
「ユーザー・フォルダの作成」ダイアログ・ボックスが表示されます。

3. ユーザー・フォルダ名を指定して「OK」をクリックします。

ユーザー・フォルダが作成され、ツリーに追加されます。

ユーザー・フォルダ内でプラッガブル・マッピングを作成する手順は、次のとおりです。

1. ユーザー・フォルダを右クリックして「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。

2. 「アイテム」セクションで「プラッガブル・マッピング」を選択します。
このユーザー・フォルダ内に新しくユーザー・フォルダを作成するには、「ユーザー・フォルダ」を選択します。

3. 「OK」をクリックします。

手順2で「プラッガブル・マッピング」を選択した場合、プラッガブル・マッピングの作成ウィザードが表示されます。手順2で「ユーザー・フォルダ」を選択した場合は、「ユーザー・フォルダの作成」ダイアログ・ボックスが表示されます。

プラッガブル・マッピングを、ユーザーフォルダ内、またはプラッガブル・マッピング・ライブラリからスタンドアロン・ノードまたは異なるユーザー・フォルダまたはライブラリに移動できます。移動するには、プラッガブル・マッピングを右クリックして、「切取り」を選択します。プラッガブル・マッピングにコピーするユーザー・フォルダまたはプラッガブル・マッピング・ライブラリを右クリックして、「貼付け」を選択します。

マッピングとプラッガブル・マッピング間の演算子のコピー

演算子では、マッピングまはたプラッガブル・マッピング内におけるユーザー定義の変換ロジックを作成できます。以前に別のマッピングまたはプラッガブル・マッピングで定義した演算子を再利用する場合があります。Oracle Warehouse Builderでは、別のマッピングおよびプラッガブル・マッピングで演算子または演算子属性を使用して定義されている既存の変換ロジックを、コピーおよび貼付けにより再使用できます。このセクションでは、マッピングという用語には、マッピングとプラッガブル・マッピングの両方が含まれます。

演算子または演算子属性をソース・マッピングからコピーしてそれらを目的のマッピングに貼り付けることで、変換ロジックを再利用できます。また、演算子グループ(入力、出力およびI/O)のコピーおよび貼付けも可能です。

演算子、グループ、および属性のコピーの手順

次の手順に従って、マッピング内にある定義済の演算子、グループ、および属性を同じプロジェクト内のその他のマッピングにコピーします。

1. コピーする演算子、グループまたは属性を含むマッピングを開きます。これがソース・マッピングになります。
「以前に作成したマッピングを開く手順」を参照してください。

2. 演算子、グループまたは属性をコピーする先のマッピングを開きます。これがターゲット・マッピングになります。

3. ソース・マッピングで、演算子、グループまたは属性を選択します。「編集」メニューから「コピー」を選択します。複数の属性を選択するには、属性の選択時に[Ctrl]キーを押したままにします。
または

演算子、グループ、または属性を右クリックして「コピー」を選択します。複数の属性を選択する場合、右クリック時に[Ctrl]キーを押したままにします。

注意:
ソース・マッピング内の演算子、グループ、または属性が必要ない場合は、「コピー」のかわりに「切取り」を選択できます。切り取りでは、ソース・マッピングからオブジェクトが削除されます。
コピーされたオブジェクトは複数回貼り付けられるのに対して、切り取られたオブジェクトを貼り付けられるのは1回のみです。

4. ターゲット・マッピングで、演算子、グループまたは属性を貼り付けます。

- 演算子を貼り付けるには、「編集」メニューから「貼付け」を選択します。または、キャンバスの任意の空白上で右クリックしてショートカット・メニューから「貼付け」を選択します。

- グループを貼り付けるには、最初に、グループを貼り付ける演算子を選択して、「編集」メニューから「貼付け」を選択します。または、グループを貼り付ける演算子を右クリックして、ショートカット・メニューから「貼付け」を選択します。

- 属性を貼り付けるには、属性を貼り付けるグループを選択して、「編集」メニューから「貼付け」を選択します。または、グループを貼り付けるグループを右クリックして、ショートカット・メニューから「貼付け」を選択します。

演算子をコピーして張り付ける場合、新しい演算子はソース演算子とは異なるUOIDを持ちます。

ターゲット・マッピングにコピーされる演算子と同じ名前の演算子がある場合は、新規演算子の名前に_nが追加されます。ここでnは、1から始まる順序番号です。

マッピング間でコピーされた情報

演算子、グループ、または属性をターゲット・マッピングにコピーする場合、次の情報がコピーされます。

- オブジェクト・バインド詳細

- 表示セット詳細

- 演算子と属性の物理プロパティおよび論理プロパティ
オブジェクトに対して複数の構成がある場合は、すべての構成の詳細がコピーされます。

注意:
演算子をコピーして、ソース演算子とは異なるタイプの演算子に張り付ける場合、演算子の名前とデータ・タイプのみがコピーされます。その他の詳細はコピーされません。

演算子、グループ、および属性をコピーする際の制限

演算子、グループ、および属性のコピーの制限は、次のとおりです。

- マッピングから演算子、グループ、および属性をコピーして、それらを同じプロジェクト内にかぎり別のマッピングに貼り付けることができます。

- ソース・マッピング内の演算子、グループ、および属性の間に存在する任意の接続は、ターゲット・マッピングにコピーされません。演算子、グループ、および属性のみがターゲット・マッピングに貼り付けられます。

- プラッガブル・マッピングについては、ソース・プラッガブル・マッピング内の子演算子間の接続は、ターゲット・マッピングにコピーされます。

- ソース演算子のグループ・プロパティは、ターゲット演算子のグループにコピーされません。ただし、グループ内に含まれるすべての属性はコピーされます。

- ソース演算子からターゲット演算子にコピーして張り付ける前に、ターゲット演算子にグループを作成する必要があります。貼付け操作の実行時にグループは作成されません。

注意:
大量の演算子のコピーおよび貼付け操作には、長時間かかる場合があります。

マッピングとプラッガブル・マッピングの演算子のグループ化

複合マッピングとプラッガブル・マッピングには、必要なETLタスクを実行するために使用される多くの演算子が含まれています。通常、各データ変換タスクは1つまたは複数の演算子を使用して、その結果マッピングは雑然としているように見えて理解するのが難しくなります。一度にすべての演算子の表示を試行するということは、各演算子は、その名前を読むことができないほど非常に小さく表示されることになります。したがって、関連する変換タスクを個別のフォルダに実行する演算子のグループ化では、マッピングで実行される変換ロジック全体を表示する際に役立ちます。Oracle Warehouse Builderには、演算子のセットをフォルダにグループ化して不要な演算子をマッピング・キャンバスで非表示にする方法が用意されています。このセクションでは、マッピングという用語は、マッピングとプラッガブル・マッピングの両方を表します。

重要性の低い演算子を折りたたみ可能なフォルダにグループ化し、特定の時点において重要なコンポーネントに集中できます。また、キャンバス上で占める領域が少なくなり、マッピングの作業が容易になります。必要に応じて、フォルダのグループ化を解除して、含まれる演算子を表示または編集できます。

マッピングは、複数のグループ化されたフォルダを含みます。1つのフォルダにはマッピング演算子のセットとさらに1つまたは複数のフォルダが含まれる、ネストされたフォルダを作成することもできます。

マッピングとプラッガブル・マッピングの演算子のグループ化の手順

マッピングとプラッガブル・マッピングの演算子をグループ化する手順は、次のとおりです。

1. 演算子をグループ化するマッピングを開きます。
「以前に作成したマッピングを開く手順」を参照してください。

2. グループ化する演算子を選択します。
複数のオブジェクトを選択するには、オブジェクトの選択時に[Ctrl]キーを押したままにします。または、マウスの左ボタンを押したまま、選択するオブジェクトを含む矩形を描きます。

3. マッピング・エディタのキャンバスの上部のツールバーで、「選択したオブジェクトのグループ化」をクリックします。または、「グラフ」メニューから、「選択したオブジェクトのグループ化」を選択します。
選択した演算子はフォルダにグループ化されて、折りたたまれたフォルダがマッピング・エディタに表示されます。「Folder1」などのデフォルト名がそのフォルダに使用されます。

4. (オプション)より直感的に演算子のグループが実行するタスクを反映するには、フォルダ名を変更します。
フォルダの名前を変更する手順は、次のとおりです。

1. フォルダを右クリックして「詳細をオープン」を選択します。

2. フォルダの編集ダイアログ・ボックスで、フォルダ名を入力して、「OK」をクリックします。

フォルダ内容の表示

選択した演算子のフォルダを作成するために演算子をグループ化する場合に、フォルダに含まれる演算子を表示するには、次のいずれかの方法を使用します。

- フォルダのツールチップを使用
マウスをフォルダの上に置きます。フォルダに含まれる演算子がツールチップに表示されます。

- スポットライトを使用してフォルダの内容を表示します。
フォルダを選択して、ツールバーの「選択したオブジェクトのスポットライト」をクリックします。または、フォルダを選択して「選択したオブジェクトのスポットライト」を選択します。フォルダが拡張されてそこに含まれる演算子が表示されます。マッピング内のその他のすべての演算子は非表示になります。これをスポットライトといいます。スポットライトの詳細は、「選択した演算子のスポットライト」を参照してください。

- フォルダのダブルクリック
フォルダをダブルクリックして拡張します。フォルダに含まれるすべての演算子が表示されて、マッピング内の周囲の演算子は対応するフォルダ・コンテンツに移動されます。

マッピングとプラッガブル・マッピングの演算子のグループ化解除の手順

演算子のグループ化を解除する手順は、次のとおりです。

1. 演算子をグループ化するマッピングを開きます。
「以前に作成したマッピングを開く手順」を参照してください。

2. グループ化を解除するフォルダを選択します。
フォルダの選択時に、[Ctrl]キーを押し続けることで複数のフォルダを選択できます。

3. ツールバーで、選択したオブジェクトのグループ解除をクリックします。または、「グラフ」メニューから、選択したオブジェクトのグループ化を解除するを選択します。
グループ化されていた演算子は、マッピング・エディタ上で個別に表示されるようになります。

選択した演算子のスポットライト

スポットライトでは、選択した演算子とその接続のみを表示することができます。その他のすべての演算子とその接続は一時的に非表示になります。1つの演算子、演算子のグループ、1つのフォルダ、フォルダのグループ、または任意のフォルダと演算子の組合せにおいてスポットライトを実行できます。スポットライトのオブジェクトを選択する場合、マッピング・エディタのレイアウトが再表示されて、選択したオブジェクト間の関係などが明白に表示されます。スポットライトされたコンポーネント間のエッジは表示されます。ただし、スポットライトされたコンポーネントとその他の選択されていないコンポーネントとの間のエッジは非表示になります。

グループ化された演算子を含むフォルダをスポットライトするには、フォルダを選択して、ツールバーの選択したアイテムのスポットライトをクリックします。フォルダが拡張されて、含まれるすべての演算子が表示されます。選択したアイテムのスポットライトを再度クリックすることで、スポットライトのモードのオン/オフを切り替えることもできます。フォルダが元のように閉じ、フォルダに含まれる演算子が非表示になります。

スポットライト・モードでは、演算子の移動やサイズ指定、演算子プロパティの変更、スポットライトされた演算子の削除、新規演算子の作成、および演算子間接続の作成など通常のマッピング操作のすべてを実行できます。一時的に非表示にされた演算子には影響しない任意の操作を実行できます。

スポットライト・モードで演算子を作成すると、切り替えてスポットライト・モードを終了するまで演算子は常にマッピング・エディタに表示されます。

マッピングとプラッガブル・マッピングの演算子、グループ、および属性の検索

マッピングとプラッガブル・マッピングには、必要なデータ変換の実行に使用される多数の演算子が含まれます。Oracle Warehouse Builderにより、マッピングおよびプラッガブル・マッピング内の演算子、グループおよび属性の場所を迅速に特定できます。オブジェクトを検索する場合、検索および検索条件のスコープを定義できます。このセクションでは、マッピングという用語は、マッピングとプラッガブル・マッピングの両方を表します。

検索タイプ

次のタイプの検索を実行できます。

- 標準検索
Oracle Warehouse Builderは、マッピング内のすべての演算子から検索文字列を検索します。検索文字列は、演算子、グループ、および属性の表示名と一致します。

- 拡張検索
マッピング内のオブジェクトを検索する、高度なメソッドです。検索するオブジェクトや検索条件を指定することによって、演算子、グループ、および属性を検索することができます。

「詳細検索」ダイアログ・ボックスを使用して標準検索および拡張検索を実行します。

マッピングおよびプラッガブル・マッピング内でのオブジェクトの検索

マッピングおよびプラッガブル・マッピング内の演算子、グループ、および属性を検索する方法は次のとおりです。

1. 「以前に作成したマッピングを開く手順」に示す手順に従って、マッピングを開きます。

2. 「検索」メニューから「検索」を選択します。
「詳細検索」ダイアログ・ボックスが表示されます。実行する検索のタイプに応じて、次の手順のいずれかを使用します。

- 標準検索の実行ステップ

- 拡張検索の実行ステップ

標準検索の実行ステップ

標準検索を実行するには、次の手順があります。

1. 検索するオブジェクトの指定

2. 検索結果を表示するために使用する方法の指定

3. 「検索」をクリックします。

拡張検索の実行ステップ

拡張検索を実行するには、次の手順があります。

1. 検索するオブジェクトの指定

2. 検索結果を表示するために使用する方法の指定

3. 検索スコープの指定

4. 検索条件の指定

5. 「検索」をクリックします。

「詳細検索」ダイアログ・ボックス

「詳細検索」ダイアログ・ボックスでは、マッピングまたはプラッガブル・マッピング内の演算子、グループ、および属性を検索できます。デフォルトでは、このダイアログ・ボックスに、標準検索を実行するために必要なオプションが表示されます。標準検索では、表示名を使用して演算子、グループ、または属性を選択します。検索結果の表示方法を指定することもできます。

拡張検索には、検索のスコープと検索条件を定義する技術が用意されています。拡張検索を実行するには、詳細を表示をクリックします。拡張検索の定義に必要な追加のパラメータが表示されます。

検索するオブジェクトの指定

「検索」フィールドを使用して、位置を特定するオブジェクトを指定します。標準検索では、同じ表示名を含むオブジェクトは、「検索」フィールド内で指定された同一のものとして検索します。

拡張検索を実行中は、表示名に加えて、説明プロパティ、物理名、ビジネス名、または演算子がバインドされるワークスペース・オブジェクトの名前で指定された文字列を指定できます。

検索条件にワイルドカードを使用できます。たとえば、「検索」フィールドで「C*」を指定することによって、名前がCまたはcで始まるオブジェクトが検索されます。

検索結果を表示するために使用する方法の指定

「詳細検索」ダイアログ・ボックスの「強調表示のオン」ボタンを使用して、検索結果を表示するために使用するメソッドを指定します。トグル式ボタンになっていて、ハイライト表示のオンとオフを切り替えることができます。

強調表示のオン

ハイライト表示をオンにすると、検索操作によって検索されたすべてのオブジェクトがマッピング・エディタ上で黄色にハイライト表示されます。ハイライト表示によって、選択結果の一部としてオブジェクトを簡単に見つけやすくすることができます。

強調表示のオフ

デフォルトの動作です。ハイライト表示をオフにすると、検索操作によって検索されたオブジェクトはこれらのオブジェクトに移動したコントロールによって識別されます。コントロールが特定のオブジェクト上にあるとき、オブジェクトは青い枠で囲まれます。ハイライト表示をオフにすると、検索結果は同時に表示されます。

たとえば、1つの演算子が検索によって見つかると、演算子を表すノードの枠線が青になります。

検索スコープの指定

検索のスコープを指定することによって、検索されるオブジェクトを制限することができます。「スコープ」セクションの「選択済内」フィールドによって、キャンバス上で選択されるオブジェクトの検索のスコープを限定することができます。

演算子の特定のセット内のオブジェクトを検索するには、最初にキャンバス上のすべての演算子を選択して、「選択済内」を選択します。演算子の選択時に、[Ctrl]キーを押したままにすると複数の演算子を選択できます。

検索条件の指定

拡張検索を実行するには、さらに検索を絞り込むために追加の検索条件を指定する必要があります。

検索基準

「検索基準」リストを使用して、オブジェクトの検索に必要な名前を指定します。選択できるオプションは、次のとおりです。

- 表示名: ネーミング・モード・セットに応じて、物理名またはビジネス名を検索します。

- 物理名: 「検索」フィールドで指定された名前と同じ物理名を含むオブジェクトを検索します。

- ビジネス名: 「検索」フィールドで指定された名前と同じビジネス名を含むオブジェクトを検索します。

- バウンド名: このプロパティがオブジェクトに使用可能な場合は、「検索」フィールドで指定された名前と同じバウンド名を含むオブジェクトを検索します。

- 説明: このプロパティがオブジェクトを定義する場合は、「検索」フィールドで指定された名前と同じ説明を含むオブジェクトを検索します。

一致オプション

「一致オプション」セクションを使用して、オブジェクト検出中に使用される「一致オプション」を指定します。選択できるオプションは、次のとおりです。

- 大/小文字一致: 名前と大文字小文字が、「検索」フィールドで指定された検索文字列と一致するオブジェクトを検索します。
物理名で検索する場合、一致ケースはデフォルトで「False」に設定されます。

物理名モードでは、ユーザーの作成するオブジェクトはすべて大文字になりますが、インポートされるオブジェクトに関しては、大/小文字が混在する可能性があります。

論理名で検索する場合、一致ケースはデフォルトで「True」に設定されます。

- 完全一致のみ: 特にワイルドカードで上書きされなければ、一致に制限して検索文字列全体と一致していないオブジェクトを除外します。

- 正規表現: 検索文字列としてのJavaの正規表現を使用して、パターンの仕様をサポートします。正規表現が「完全一致のみ」と組み合されている場合は、境界を一致させる「$」が検索文字列パターンに付加されます。
正規表現サポートの詳細は、「Oracle Database SQL言語リファレンス」を参照してください。

検索オプション

検索処理を管理するオプションを指定します。次のいずれかのオプションを選択します。

- 増分: 任意の文字が入力されるかまたは文字が検索文字列から削除された場合に、検索を実行します。「検索」ボタンを使用して、検索文字列と一致する追加オブジェクトを検出します。

- 検索の折返し: セット内の最後のオブジェクトに到達した場合、最初のオブジェクトで検索処理が続行されます。

- 先頭から検索: セット内の最初のオブジェクトで検索が続行されます。

スコープ

このセクションを使用して検索のスコープを制限します。

選択済内: このオプションを選択して、マッピング・エディタで現在選択されているオブジェクト内の検索文字列のみを検索します。

方向

「方向」セクションを使用して、検索結果セット内におけるオブジェクトを順方向または逆方向のどちらかに並べます。「次へ」を選択してその結果セットを順方向に並べて、「前へ」で結果セットを逆方向に並べることができます。

マッピングのデバッグ

マッピング・エディタを使用して、マッピングで設計した複雑なデータ・フローをデバッグできます。デバッグ・セッションを開始して、有効なターゲット・スキーマに接続すると、マッピング・エディタのツールバーおよび「ログ」ウィンドウの下に、デバッグ機能が表示されます。定義済の一連のテスト・データを使用して、デバッグ・セッションを実行し、データが抽出、変換およびロードされるフローに従って、設計したデータ・フローが期待どおりに動作するかどうかを確認できます。問題が検出された場合は、それらを修正してからデバッグ・セッションを再開し、配布する前に問題が修正されたことを確認できます。

デバックされているマッピングを変更する場合、マッピング・プロパティは変更されます。演算子の表示セットが変更される場合を除いて、マッピング・デバッガが再初期化され、変更がマッピングに反映されます。

前提作業

コントロール・センターに接続されており、コントロール・センターが機能していることを確認してください。

マッピング・デバッガの一般的な制限

次の制限が、マッピング・エディタに適用されます。

- マッピング・エディタでデバッグ・モードを使用して実行されるマッピングは、デバッグのみの目的で使用されます。マッピング・エディタから実行されるマッピングとコントロール・センターから実行されるマッピングは、実行されません。これは、デバッグ機能をサポートするために必要な一時的オブジェクトの設定によるものです。コントロール・センターを使用してマッピングを実行します。

- デバッグ・メニューのツールバーまたは関連するアイテム上の「一時停止」ボタンを使用して、アクティブなデバッグの実行を一時休止することはできません。

- デバッグ・モードでのマッピングの結果を表示するために、リポジトリ・ブラウザを使用できません。

- PL/SQLパッケージとして実装可能なマッピングのみが、現在デバッグ・モードで実行可能です。ABAPマッピングは、デバッグ・モードでサポートされません。

- デバッグ・モードでマッピングを実行する場合、アドバンスト・キュー演算子はサポートされません。

デバッグ・セッションの開始

デバッグ・セッションを開始するには、マッピング・エディタでデバッグするマッピングを開きます。「デバッグ」メニューから「開始」を選択します。または、マッピング・エディタ・ツールバーで「開始」をクリックします。マッピング・エディタがデバッグ・モードに切り替わり、「ログ」ウィンドウにデバッグ・パネルが表示されて、デバッガはプロジェクトに適したコントロール・センターに接続されます。デバッグで生成されるコードは、デバッグ対象のマップが格納されているモジュールの位置に基づいて、指定されたターゲット・スキーマに配布されます。

注意:
接続できない場合は、エラー・メッセージが表示されます。接続情報を編集して再試行するオプションがあります。

接続が確立された場合は、テスト・データを定義できることを示すメッセージが表示されます。テスト・データがすでに定義されている場合は、初期化を続行するかどうかを尋ねるメッセージが表示されます。

マッピングをデバッグするには、それぞれのソース演算子とターゲット演算子がデータベース・オブジェクトにバインドされている必要があります。ソース演算子とターゲット演算子に対するテスト・データの定義はオプションです。デフォルトでは、デバッガは、デバッグ以外のマップの配布に対して現在定義されているものと同一のソース・データとターゲット・データが使用されます。

デザイン・センターの「デバッグ」パネル

マッピング・エディタがデバッグ・モードで起動している場合は、「ログ」ウィンドウに2つの新しいパネル(「情報」パネルと「データ」パネル)が表示されます。

情報パネル

マッピング・エディタがデバッグ・モードのときは、「ログ」ウィンドウに情報パネルが表示されます。このパネルには次のタブがあります。

- メッセージ: すべてのデバッガ操作メッセージが表示されます。これらのメッセージにより、デバッグ・セッションのステータスを確認できます。これには、デバッグ・モードでマッピングを実行する間に発生したエラー・メッセージが含まれます。

- ブレークポイント: マッピングに設定した全ブレークポイントのリストが表示されます。チェック・ボックスを使用して、ブレークポイントをアクティブ化したり非アクティブ化したりできます。詳細は、「ブレークポイントの設定」を参照してください。

- テスト・データ: マッピングに使用されている全データ・オブジェクトのリストが表示されます。このリストは、どのデータ・オブジェクトにテスト・データが定義されているかも示します。

「データ」パネル

マッピング・エディタがデバッグ・モードのときには、「データ」パネルが「ログ」ウィンドウに表示されます。「データ」パネルには、デバッグ対象の演算子に関する入出力情報を含んだ「ステップのデータ」タブとウォッチ・ポイント・タブがあります。「ステップのデータ」タブには、デバッグ・セッションの現行ステップに関する情報が表示されます。他のタブは、設定するウォッチごとに追加できます。これらのウォッチ・タブでは、デバッグ・セッションで現在アクティブな演算子に関係なく、演算子を通じて渡したデータまたは渡す必要のあるデータを追跡して表示できます。複数の入力グループまたは複数の出力グループを持つ演算子の場合は、追加のリストが表示され、特定のグループを選択できます。

演算子が複数の入力グループまたは出力グループを持つ場合は、デバッガの右上隅の入力グループまたは出力グループの上にリストが表示されます。このリストを使用して、関心のあるグループを選択します。これは、ステップ・データとウォッチの両方に適用されます。

テスト・データの定義

マッピング内のソース演算子またはターゲット演算子はすべて、下部の「情報」タブ・パネルの「テスト・データ」タブにリストされます。オブジェクト・タイプ、ソース、およびデータベース・オブジェクトがソース演算子またはターゲット演算子にバインドされているかどうかを示すチェック・マークも表示されます。

タブにリストされるオブジェクト・タイプは、選択したデータ・ソース(表など)の列名がマッピング演算子の列と一致するかどうかで決まります。次の2つのタイプがあります。

- 直接アクセス。完全に一致する場合は、タイプに直接アクセスと表示されます。

- ビューとして配布。マッピング演算子の列と一致しない列が含まれるデータ・ソースを選択する場合は、列のマッピング方法を選択できます。この場合、オブジェクトはマッピングの実行時にビューとして配布され、タイプにはビューとして配布と表示されます。

バインド済データベース・オブジェクトで、演算子とテスト・データのバインドを追加または変更するには、「編集」をクリックします。デバッグ・モードでマッピングを実行するには、その前にリストされている各ソース演算子またはターゲット演算子がバインドされ、チェック・マークが付けられている必要があります。バインド済データベース・オブジェクトにテスト・データを定義して有効にする必要があるかどうかは、デバッグ・セッションを実行する際に、データ・フローのどの部分に焦点を置くかによって決まります。一般に、すべてのソース演算子には、テスト・データが必要です。ターゲット演算子のテスト・データは、通常、更新またはターゲットの制約を伴うロード・シナリオをデバッグする場合に必要です。

テスト・データを定義または編集する手順は、次のとおりです。

1. マッピング・エディタの「テスト・データ」タブで、リストから演算子を選択して「編集」をクリックします。テスト・データの定義ダイアログ・ボックスが表示されます。

2. 「テスト・データの定義」ダイアログ・ボックスで、デバッグ時にOracle Warehouse Builderが使用するテスト・データの特性を指定します。数多くの特性を指定できます。たとえば、テスト・データが新規データベース・オブジェクトか既存のデータベース・オブジェクト、あるいはテスト・データを手動で編集できるかどうかを指定できます。詳細は、テスト・データの定義ダイアログ・ボックスの「ヘルプ」をクリックしてください。

テスト・データとして使用する新規表の作成

「テスト・データの定義」ダイアログ・ボックスを使用して新しい表を作成する場合、デバッグ実行の開始時に指定したターゲット・スキーマに表が作成されます。デバッグ・セッション終了時、デバッガによって表が自動的に削除されることはないため、他のセッションにも同じ表を再利用できます。制約は新しい表には継承されません。ただし、デバッグ・セッションによって作成されたその他のすべてのステージング表は、デバッグ・セッションが終了すると削除されます。

ユーザーが新しい表を作成すると、その表は、接続されているランタイム・スキーマに作成されます。新しい表には名前が自動的に生成され、新しい表名を反映するようにデバッグ・バインド名の値が変更されます。新しい表には、マッピングのソース属性またはターゲット属性の名前とデータ型が完全に一致する属性に対して列が定義されます。また、表の作成時にグリッドに表示されるデータは、新しく作成された表にコピーされます。

テスト・データの定義ダイアログ・ボックスを使用して作成する表内のスカラー・データ型とユーザー定義データ型の両方を使用できます。

テスト・データの編集

テスト・データの定義ダイアログ・ボックスを使用して、テストデータを編集できます。テスト・データの編集は、スカラー・データ型でのみ適用可能です。

演算子のバインドを別のデータベース・オブジェクトに変更した場合は、マッピングをデバッグ・モードで再実行する前に、デバッグ・セッションを再度初期化し、変更内容を実装する必要があります。

注意:
ターゲット定義にロードされるデータは暗黙的にコミットされます。ターゲット・オブジェクトが更新されないようにする場合は、「新規表の作成」をクリックしてターゲット・オブジェクトのコピーを作成してください。

ランタイム・スキーマにおけるデバッグ・オブジェクトのクリーンアップ

名前にDBG$という接頭辞の付いたデバッグ表は、マッピングのデバッグ時にランタイム・スキーマに作成されます。複数のインスタンスを持つ複数のユーザーが同じマッピングをデバッグできるため、デバッグオブジェクトは各デバッグ・セッション用に個別に作成されます。セッションのデバッグ・オブジェクトは、セッション後に自動的に削除されます。ただし、デザイン・センターに存在するユーザーで、既存のマッピング・デバッガを持たない場合、進行中のデバッグ・セッションのデバッグ・オブジェクトは削除されずに失効オブジェクトとなりますが、

ただし、ランタイム・スキーマのすべてのデバッグ・オブジェクトは、OWB_HOME/bin/admin/cleanupalldebugobjects.sqlスクリプトを使用してクリーンアップできます。このスクリプトは、接頭辞DBG$が付加されたすべての失効オブジェクトをランタイム・リポジトリ・ユーザー・スキーマから削除します。

管理者権限を持つOracle Warehouse Builderユーザーがこのスクリプトを実行する必要があります。このスクリプトを実行する前に、ランタイム・ユーザー・スキーマの接頭辞DBG$が付加されたすべてのオブジェクトが失効しているかどうかを判別します。複数のインスタンスを使用して同じマッピングをデバッグできるため、他のユーザーが同じマッピングをデバッグしている場合、このスクリプトを実行すると混乱を招きます。

ブレークポイントの設定

特定の演算子についてデータ処理の様子を確認する場合は、デバッグ・セッションを中断させるブレークポイントをその演算子に設定できます。これにより、データ・フロー内のすべての演算子を順番に処理しなくても、目的の演算子まで速やかに進行できます。デバッグ・セッションがブレークポイントに到達した後、目的の演算子で順を追ってデータを実行し、期待どおりに機能するかどうかを確認します。

ブレークポイントを設定または削除する手順は、次のとおりです。

1. マッピング・エディタで、演算子を選択して「デバッグ」、「ブレーク・ポイントの設定」の順に選択します。または、ツールバーの「ブレーク・ポイントの設定」ボタンをクリックして、現在選択されている演算子のブレークポイントのオン/オフを切り替えることもできます。
ブレークポイントを設定すると、ブレークポイントとして設定された演算子の名前が、情報パネルの「ブレークポイント」タブにリストされます。ブレークポイントを削除すると、その演算子の名前も削除されます。ブレークポイントを削除するには、「ブレークポイント」タブの「クリア」ボタンを使用します。

2. ブレークポイントの選択/選択解除を切り替えるには、「ブレークポイント」タブのブレークポイントを選択または選択を解除します。

ウォッチの設定

「データ」パネルにある「ステップのデータ」タブには、常に現在の演算子のデータが表示されます。アクティブな演算子に関係なく、他の演算子を通過したデータを追跡する場合は、ウォッチを設定します。

ウォッチを使用して、演算子を通過したデータや、バインド済データベース・オブジェクトに現在存在しているデータ(ソースまたはターゲットの場合)を追跡します。デバッグが目的の演算子で実行された後にウォッチを演算子に設定しても、データ・フローをさかのぼって、データがその演算子によってどのように処理されたかを確認できます。

ウォッチを設定する手順は、次のとおりです。

マッピング・エディタで、演算子を選択します。「デバッグ」メニューから「ウォッチの設定」を選択します。または、演算子を選択して、マッピング・エディタ・ツールバーの「ウォッチの設定」ボタンをクリックし、ウォッチのオン/オフを切り替えることもできます。

個別のウォッチ・パネルに、定数演算子、マッピング入力演算子、マッピング出力演算子、マッピング前プロセス演算子、マッピング後プロセス演算子、および順序演算子のデータが表示されます。これらの演算子が含む情報はその他の演算子よりも少ないため、これら複数の演算子に関する情報はウォッチ・パネルに表示されます。そのため、ウォッチの値を選択する場合、これらの演算子についてウォッチ・パネルのインスタンスが1個のみ表示されます。

ウォッチを削除する手順は、次のとおりです。

ウォッチを削除するには、マッピング・エディタのキャンバスで演算子を選択します。次にマッピング・エディタ・ツールバーで「ウォッチの設定」をクリックするか、またはデバッグ・メニューから「ウォッチの設定」を選択します。

ウォッチ・パネルが定数演算子、マッピング入力演算子、マッピング出力演算子、マッピング前プロセス演算子、マッピング後プロセス演算子、および順序演算子などのデータ以外の演算子で構成されている場合は、演算子を右クリックして「削除」を選択すると、これらを削除できます。「監視」パネルを閉じると、すべての演算子を削除できます。

ウォッチの保存

演算子のウォッチを設定する場合、「監視」パネルを閉じなければ、この演算子のウォッチ・ポイントは自動的に保存されます。デバッグ・セッションを終了してから再度開始すると、作成した演算子ウォッチのタブが表示されます。

ウォッチ・ポイントを保存しない場合は、マッピング・デバッガのツールバーで「ウォッチの設定」をクリックするか、ウォッチ・ポイントに関連するタブを閉じます。

マッピングの実行

各データ演算子についてテスト・データの接続を設定した後は、「デバッグ」メニューから「再初期化」を選択するか、またはマッピング・エディタのツールバーで「再初期化」をクリックして、初期デバッグ・コードを生成できます。Oracle Warehouse Builderにより、デバッグ・コードが生成され、指定したターゲット・スキーマにパッケージが配布されます。

デバッグ・セッションは、次のいずれかのモードで実行できます。

- ツールバーの「再開」ボタンまたは対応するメニュー項目を使用して、次のブレークポイントまで、あるいはデバッグの実行が終了するまで処理を続行します。

- ツールバーの「ステップ」ボタンまたは対応するメニュー項目を使用して、1行ずつ処理します。

- ツールバーの「スキップ」ボタンまたは対応するメニュー項目を使用して、現在の演算子について残りの行をすべて処理します。

- 「リセット」ボタンまたは「デバッグ」メニューの対応する項目を使用して、デバッグの実行をリセットし、最初に戻ります。

最初のソースとデバッグ・パスの選択

マッピングには、複数のソースと複数のデバッグ・パスが含まれることがあります。

- マッピングに複数のソースがあると、Oracle Warehouse Builderでは始点となるソースの指定が要求されます。たとえば、2つの表が1つのジョイナにマップされている場合は、デバッグ時に使用する最初のソース表を選択する必要があります。

- パスの場合も、デバッガが1つのパスを終了した後で通過できる複数のパスが存在することがあります。たとえば、スプリッタを使用する場合などです。このような場合は、1つのパスが終了すると、他のパスも処理するかどうかを尋ねるメッセージが表示されます。

マッピングは、すべてのターゲット演算子が処理されるか、または発生したエラー数がそのマッピングに設定されている最大数に達すると終了します。デバッグ接続とテスト・データの定義は、Oracle Warehouse Builderワークスペースに変更をコミットする際に保存されます。ブレーク・ポイントとウォッチの構成は保存されないため、マッピングを開くたびに再設定する必要があります。

デバッガの実行に伴って、適宜デバッグ・メッセージが表示されます。演算子を介するデータ・フローに従うことができます。アクティブな演算子は、赤の破線で囲まれて示されます。

相関コミットを使用したマッピングのデバッグ

マッピングの「相関コミット」パラメータの設定(ONまたはOFF)によって、マッピングのデバッグ方法が変わります。

- 「相関コミット」パラメータがOFFに設定されているマッピングのデバッグ・セッションを開始すると、マッピングのデバッグには1回に1つのパスが使用されます。かわりに、選択したパスに関係なく、マッピングの最初のステップですべてのパスが実行され、ターゲットもすべてロードされます。また、いずれかのターゲットにステップの制約違反がある場合、そのステップではどのターゲットもロードされません。

- 「相関コミット」パラメータがOFFに設定されているマッピングのデバッグ・セッションを開始すると、マッピングのデバッグでは1回に1つのパスが使用されます。1つのパスが終了した後でステップを逆戻りし、マッピング内の別のパスを実行しないかぎり、その他すべてのパスは実行されず、他のターゲットもすべてロードされません。

たとえば、S1というソースを持つマッピングがあり、T1、T2という2つのターゲットに分岐するスプリッタに接続しているとします。

- 相関コミットがOFFの場合、マッピングはS1からデバッグされます。その後、T1に進むパスまたはT2に進むパスを選択できます。T1に進むパスを選択すると、T1に渡されるデータが処理および表示され、ターゲットT1がロードされます。T1のロードが完了すると、最初に戻り、もう1つのパスを実行してターゲットT2をロードするかどうかを選択できます。

- 相関コミットがONの場合、マッピングはS1からデバッグされ、パスを選択するオプションが表示されます。ただし、この選択は、データの処理に伴ってマッピング・エディタに表示するパスを単に決めるためのものです。パスはすべて同時に実行されます。相関コミットを使用したマッピングは、配布可能なコードを実行する場合も、このように実行されます。

開始ポイントの設定

演算子は、それがソースでない場合も開始ポイントとして選択できます。演算子を開始ポイントとして設定するには、デバッグ・セッションを開始した後、マッピング・エディタのツールバーで演算子を選択して「開始ポイントとして設定」をクリックします。または、「デバッグ」メニューから「開始ポイントとして設定」を選択します。

演算子を開始ポイントとして設定すると、その演算子よりも手前にあるすべての演算子とソースが単一の問合せに結合されてソースとして使用されます。その演算子は、マップのステップ実行時に自動的に最初のソースとして使用されます。開始ポイントが設定されている演算子より前の演算子は、ウォッチ・ポイントが設定されている場合でもステップ実行できず、表示可能データもありません。

「開始ポイントとして設定」は、単一のジョイナ演算子にすべて接続された3つのソース表のあるマッピングに使用するのが適切です。各ソース表は行数が多く(50000行を超過)、デバッガを介して効率よくステップ実行するには行が多すぎます。この場合、ジョイナ演算子を開始ポイントとして設定し、テスト・データ・エディタを使用して、1つ当たりのソース表の行数を管理しやすい行数(500)に制限します。また、ソース表の行数を制限してジョイナ(つまり、他のすべてのソースが結合条件で結合されているソース)を効率的に使用することが最善策です。

プラッガブル・サブマップ演算子のデバッグ

1つ以上のプラッガブル・サブマップ演算子が含まれているマップをデバッグできます。プラッガブル・サブマップ演算子には、プラッガブル・フォルダからのユーザー定義プラッガブル・サブマップ演算子、またはシステム定義のサブマップ演算子も含まれます。デバッグ・セッションを開始すると、マッピングはデバッグの初期化を経由し、最初の実行可能演算子でステップ実行が通常どおりに開始されます。

演算子のステップ実行中にデバッガがプラッガブル・サブマップ演算子に到達すると、他の演算子の場合と同様に、その演算子が現在のステップ演算子としてハイライト表示されます。この時点で「ステップ」をクリックすると、プラッガブル・マップの実装を示すマップのコンテキスト図は変化しないままで、プラッガブル・サブマップに組み込まれている演算子すべてがステップ実行されます。「ステップイン」をクリックすると、マップのコンテキスト図がプラッガブル・マップの実装を表すように変わり、現行ステップの演算子はプラッガブル・マップ内で最初に実行可能なソース演算子に設定されます。プラッガブル・サブマップの最初に実行可能なソース演算子は、入力シグネチャ演算子から接続された演算子の1つです。

プラッガブル・マップは、その他のマップ・タイプと同様にステップ実行できます。プラッガブル・サブマップ演算子にターゲットが含まれている場合は、最上位マップに対するロードと同様に、ターゲットがロードされます。最後の実行可能演算子の実行が終了し、次回、「ステップ」をクリックすると、コンテキストは最上位マップに戻り、前回実行したプラッガブル・サブマップの後方の次に実行可能な演算子に対して実行が開始されます。プラッガブルに出力接続がなく、そのプラッガブルが最上位マップ内の最後の実行可能演算子である場合は、ステップ実行が終了します。

プラッガブル・サブマップ内の演算子には、ブレークポイントおよびウォッチ・ポイントを設定できます。また、通常の編集時に「子グラフの表示」および「親グラフに戻る」をクリックすることで、通常の編集と同様に、コンテキスト図を変更できます。

デバッグ・セッションの再初期化

マッピングを変更したり、ソース演算子またはターゲット演算子を別のデータベース・オブジェクトにバインドした場合は、新しい変更内容でマッピングのデバッグを続行するために、デバッグ・セッションを再初期化する必要があります。再初期化するには、ツールバーの「再初期化」ボタンをクリックするか、「デバッグ」メニューの「再初期化」メニュー項目を選択します。再初期化では、デバッグ・コードが再度生成されて配布されます。マッピングのデバッグ・セッションは、再初期化の後、先頭から開始されます。

スケーラビリティ

マッピングをデバッグする際は、渡されるデータ量と「ステップのデータ」パネルに表示される列数の両方にスケーラビリティが適用されます。テスト・データの定義ダイアログ・ボックスには、行を制限するオプションがあり、マッピング全体のデータ量を制限できます。また、独自の表を作成してレコードを手動で操作することで、独自のデータ・セットを定義できます。

「ステップのデータ」タブやウォッチ・タブに表示される列数を制限するには、表示セットを使用できます。デフォルトでは、すべての演算子に表示セット「すべて」が設定されています。マッピングされている属性のみを表示するには、表示セット「マップ済」を使用します。マッピング・エディタを直接使用することで、表示セットをソースに手動で追加できます。表示セットを選択するには、入出力グループでマウスを右クリックし、「表示セットの使用」オプションを選択します。

6 ディメンション・オブジェクトを使用したETLの実行

Oracle Warehouse Builderでは、ディメンション・オブジェクトを使用してETLを実行するマッピングを設計できます。この章では、ディメンション・オブジェクトからのデータ抽出やデータ削除、およびディメンション・オブジェクトへのデータ・ロードについて説明します。

この章の内容は次のとおりです。

- 「ETLマッピングでのディメンションの使用」

- 「ETLマッピングでのキューブの使用」

ETLマッピングでのディメンションの使用

ディメンション演算子では、ディメンション、緩やかに変化するディメンション(SCD)および時間ディメンション上のETLを実行できます。ディメンション演算子を使用して、ディメンションからのデータ抽出、ディメンションへのデータ・ロード、またはディメンションからのデータ削除が可能です。ディメンションでは、リレーショナル形式でOracle Databaseまたはアナリティック・ワークスペースに配布される場合があります。

ディメンションにデータをロード

マッピングでディメンション演算子をターゲットとして使用し、ディメンションおよびSCDにデータをロードします。演算子からディメンションまたはSCDへのデータ・フローを定義します。

Oracle Warehouse Builderは、ディメンションの最上位から順にデータをロードします。

注意:
レベルのサロゲート識別子または親サロゲート識別子参照にはデータ・フローをマップできません。

タイプ1のディメンションへのデータのロード

ディメンションにデータをロードする際、Oracle Warehouse Builderは、ソース・レコードのビジネス識別子を既存のディメンション・レコードのビジネス識別子と比較することで、類似のレコードがディメンション内に存在するかどうかをチェックします。

ディメンションにデータをロードする手順は次のとおりです。

1. 「マッピングの定義」の説明に従って、マッピングを定義します。

2. ディメンション演算子をマッピングに追加します。この演算子が、データをロードするディメンションにバインドされていることを確認します。
マッピングへの演算子の追加は、「マッピングへの演算子の追加」を参照してください。

3. ソース・オブジェクトに対応する演算子、およびディメンションにソース・データがロードされる前に実行する必要のあるあらゆる変換に対応する演算子を追加します。

4. 属性を、ソース演算子から中間変換演算子(ソース・データをディメンションにロードする前に変換する場合)、ターゲット・ディメンションの順にマップします。必要に応じてすべての属性のマッピングを完了します。
ロードされた識別子と同じビジネス識別子を持つレコードがディメンションに存在する場合、レコードはソースからの属性値によって更新されます。それ以外の場合、ソース・レコードはディメンションにロードされます。

5. ディメンション演算子の「ロード・タイプ」プロパティを「ロード」に設定します。

6. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「検証」をクリックし、マッピングを検証します。
必要に応じて検証プロセスからのエラーを解決します。

7. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「生成」をクリックし、マッピングを検証します。
生成結果は、「ログ」ウィンドウの新規「結果」タブに表示されます。必要に応じて生成エラーを解決します。

例: ディメンションのロード

図6-1 PRODUCTSディメンションにデータをロードするマッピングを演算子PRODUCTS_OUTで表しています。ソース・データはCATEGORIESおよびPRODUCTSという2つの表に格納されています。CATEGORIES表には、カテゴリおよびサブカテゴリ情報の両方が格納されています。そのため、この表のデータは2つのフィルタ演算子CATSおよびSUBCATSを使用してフィルタされます。フィルタされたデータはこの後CATEGORIESレベルおよびSUBCATEGORIESディメンション・レベルにマップされます。ディメンションのTOTALレベルは定数演算子を使用してロードされます。PRODUCTS表のデータはディメンション内のPRODUCTSレベルに直接マップされます。

図6-1 Productsディメンションのロード

「図6-1 Productsディメンションのロード」の説明

ディメンションをロードするためのデータ・フローを定義する場合、データを実際にディメンションにロードするインライン・プラッガブル・マッピングが作成されます。このプラッガブル・マッピングを表示するには、マッピング・エディタのキャンバスでディメンション演算子を選択し、グラフィカル・ツールバーの「子グラフの表示」をクリックします。

タイプ2の緩やかに変化するディメンション(SCD)へのデータのロード

タイプ2のSCDは、過去レコードと現行レコードの両方を保存します。タイプ2のSCD内のトリガー属性の値が変更されると、現行のレコードはクローズ済としてマーク付けされて、変更された値を含む新規レコードが作成されます。「デフォルトのオープン・レコード終了時間」プロパティで有効期限属性に指定した値を設定すると、レコードはクローズ済としてマークされます。マッピングで定義された接続の入力に関係なく、過去レコードの有効期限は、「デフォルトのオープン・レコード終了時間」プロパティを使用して設定されます。

注意:
タイプ2のSCDをロードする際、ターゲットがOracle9iデータベースの場合は、行ベース・モードしかサポートされません。
問題を回避するには、親サロゲート識別子の参照属性をすべてのレベルに対するトリガーとして設定して、階層バージョニングをオンにします。

タイプ2のSCDにレコードをロードする前に、同じビジネス識別子を持つレコードがタイプ2のSCDに存在するかどうかがチェックされます。レコードが存在しない場合、タイプ2のSCDにそのレコードが追加されます。レコードが存在する場合、次の手順が実行されます。

- プロパティ「デフォルトのオープン・レコード終了時間」で指定した値を設定し、既存のレコードをクローズ済としてマークします。

- 変更された属性値を使用して新規レコードを作成します。

- そのレベルの有効日入力がマップされていない場合、演算子の「デフォルトのオープン・レコード有効時間」および「デフォルトのオープン・レコード終了時間」プロパティを使用して、有効時間および終了時間が設定されます。

- そのレベルの有効日入力がマップされている場合は、新規レコードの有効時間が、有効日入力データ・フローから取得された値に設定されます。有効日入力(接続されている場合)は、各新規レコードの実際の有効日を表します。

注意:
1回のロードで、特定のビジネス識別子に対する複数のレコードをロードするには、タイプ2のSCDにバインドされているディメンション演算子の「複数の履歴ロードのサポート」プロパティを設定します。

タイプ2のSCDにデータをロードする手順

1. 「マッピングの定義」の説明に従って、マッピングを定義します。

2. ディメンション演算子をマッピングに追加します。この演算子が、データをロードするタイプ2のSCDにバインドされていることを確認します。
マッピングへの演算子の追加は、「マッピングへの演算子の追加」を参照してください。

3. (オプション)演算子名をクリックして、キャンバス上のディメンション演算子を選択し、プロパティ・インスペクを使用して次のプロパティを設定します。

- デフォルトの初期レコード有効時間

- デフォルトのオープン・レコード有効時間

- デフォルトのオープン・レコード終了時間

- Type2 Gap

- Type2 Gap Units

これらのプロパティの値を明示的に設定しない場合、デフォルト値が使用されます。

4. ディメンション演算子の「ロード・タイプ」プロパティを「ロード」に設定します。

5. ソース・オブジェクトに対応する演算子、およびディメンションにソース・データがロードされる前に実行する必要のあるあらゆる変換に対応する演算子を追加します。

6. 属性を、ソース演算子から中間変換演算子(ソース・データをディメンションにロードする前に変換する場合)、ターゲット・ディメンション演算子の順にマップします。必要に応じてすべての属性のマッピングを完了します。

注意:
タイプ2のSCDの有効期限日属性に、属性をマップできません。

7. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「検証」をクリックし、マッピングを検証します。
必要に応じて検証プロセスからのエラーを解決します。

8. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「生成」をクリックし、マッピングを検証します。
生成結果は、「ログ」ウィンドウの新規「結果」タブに表示されます。必要に応じて生成エラーを解決します。

有効日属性へのソース属性のマップ

タイプ2のSCDをロードするマッピングでソース演算子の属性をレベルの有効日属性にマップする場合、次の処理が実行されます。

- 初期レコードのロード中、ソース属性の値が、(タイプ2のSCDにバインドされている)ディメンション演算子の「デフォルトの初期レコード有効時間」プロパティで指定されている値よりも前である場合は、ソースの値がレコードの有効日として使用されます。前ではない場合は、「デフォルトの初期レコード有効時間」プロパティに指定されている値がレコードの有効日として使用されます。

- 後続レコードのロード中、レコードがバージョン管理されている場合、新しいレコードの有効時間はソースから取得されます。有効時間に値が指定されていない場合、SYSDATEが使用されます。クローズ済レコードの終了時間は、新しいレコードの有効時間からギャップを引いた値に設定されます。

ソースの属性をレベルの有効日属性にマップしない場合、次の処理が実行されます。

- 初期レコードのロード中、「デフォルトの初期レコード有効時間」プロパティに指定されている値がレコードの有効日として使用されます。

- 後続レコードのロード中、新しいバージョンが作成されている場合、新しいレコードの有効時間はソースから取得されます。有効時間に値が指定されていない場合、SYSDATEが使用されます。前のバージョンの終了時間は、新しいバージョンの有効時間からギャップを引いた値に設定されます。
ギャップの詳細は、「Type2 Gap」および「Type2 Gap Units」を参照してください。

注意:
レベルの有効期限属性へのマッピングは使用できません。レコードのロード中、「デフォルトのオープン・レコード終了時間」プロパティが有効期限として使用されます。このプロパティのデフォルト値はNULLです。

例: タイプ2のSCDバージョニング対象レコードに割り当てられた値

タイプ2のSCDであるProductsをロードするマッピングを作成します。このタイプ2のSCDのリーフ・レベルProductは、ソース表からロードされます。Productレベルの有効日属性はソース属性EFF_DATEからマップされます。

ディメンション演算子には、次のプロパティがあります。

- デフォルトの初期レコード有効時間: 01-jan-2000

- デフォルトのオープン・レコード有効時間: SYSDATE

- デフォルトのオープン・レコード終了時間: 01-jan-2099

- Type2 Gap: 1

ソースのProductレベルのレコードのEFF_DATEの値が21-mar-2007 10.25.05.000000 PMであるとします。Productレベルの初期レコードがロードされるときに、このレコードに割り当てられる値は次のとおりです。

有効日: 01-jan-2000

有効期限: 01-jan-2099

Productレベルのレコードが21-mar-2007の後続ロード中にバージョン管理されると、次のようになります。

- ソース属性の値で「デフォルトのオープン・レコード有効時間」プロパティが上書きされます。新しいProductレベルのレコードに格納される有効日は21-mar-2007になり、有効期限は01-jan-2099に設定されます。

- Productレベルの初期レコードはクローズされ、有効期限の値は21-mar-200710.25.04.000000 PMに設定されます。

タイプ3の緩やかに変化するディメンション(SCD)へのデータのロード

タイプ3のSCDにデータをロードするには、次の手順を使用します。

1. 「マッピングの定義」の説明に従って、マッピングを定義します。

2. ディメンション演算子をマッピングに追加します。この演算子が、データをロードするタイプ3のSCDにバインドされていることを確認します。
マッピングへの演算子の追加は、「マッピングへの演算子の追加」を参照してください。

3. ディメンション演算子の「ロード・タイプ」プロパティを「ロード」に設定します。

4. ソース・オブジェクトに対応する演算子、およびタイプ3のSCDにソース・データがロードされる前に実行する必要のあるあらゆる変換に対応する演算子を追加します。

5. 属性を、ソース演算子から中間変換演算子(ソース・データをディメンションにロードする前に変換する場合)、ターゲット・ディメンション演算子の順にマップします。必要に応じてすべての属性のマッピングを完了します。
データのロード中、Oracle Warehouse Builderは、同じビジネス識別子を持つレコードがタイプ3のSCDに存在するかどうかをチェックします。レコードが存在しない場合は、追加されます。レコードが存在する場合、次の手順が実行されます。

- バージョン属性の値は、バージョン属性の以前の値を格納する属性に移動されます。

- レコードはソース・レコードの値で更新されます。

6. ディメンション演算子の「ロード・タイプ」プロパティを「ロード」に設定します。

7. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「検証」をクリックし、マッピングを検証します。
必要に応じて検証プロセスからのエラーを解決します。

8. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「生成」をクリックし、マッピングを検証します。
生成結果は、「ログ」ウィンドウの新規「結果」タブに表示されます。必要に応じて生成エラーを解決します。

例: タイプ3のSCDへのデータのロード

図6-2 に、タイプ3 SCDのPRODUCTSレベルにデータをロードするマッピングを示します。このマッピングでは、レコードの有効時間がソースからロードされます。デフォルトの現行レコード有効時間プロパティを使用して、レベル・レコードの有効時間のデフォルト値を設定することもできます。

図6-2 タイプ3のSCDのロード

「図6-2 タイプ3のSCDのロード」の説明

バージョン属性の以前の値を表す属性にはデータ・フローをマップできません。

たとえば、図6-2に示すマッピングでは、PRODUCTSレベルのPREV_PACK_SIZEおよびPREV_DESCRIPTION属性に属性をマップできません。

例: タイプ2の緩やかに変化するディメンション(SCD)へのデータのロード

タイプ2 SCD PRODUCTS_TYPE2には、Total、Categories、およびProductのレベルが含まれます。Productはリーフ・レベルで、その属性のPack_sizeはバージョニング対象属性です。Effective_date属性およびexpiration_date属性は、製品レコードについてそれぞれ有効日と有効期限を格納します。

このディメンションにロードされるソース・データは、Categories_tabおよびProduct_informationという2つの表に格納されます。タイプ2 SCDの最上位の名前と説明は、定数演算子のTotal_desc属性を使用してロードされます。

PRODUCTS_TYPE2 Type 2 SCDにデータをロードするには、次の手順を使用します。

1. 「マッピングの定義」の説明に従って、マッピングを定義します。

2. プロジェクト・ナビゲータから「PRODUCTS_TYPE2 Type 2 SCD」、「Categories_tab」表、および「Product_information」表をマッピング・キャンバスにドラッグ・アンド・ドロップします。

3. ディメンション演算子の「ロード・タイプ」プロパティを「ロード」に設定します。
キャンバスでディメンション演算子を選択します。プロパティ・インスペクタに、ディメンションのプロパティが表示されます。「ディメンション・プロパティ」ノードに「ロード・タイプ」がリストされます。

4. マッピング・キャンバスに「TOTAL」レベルをロードするために使用する定数演算子をドラッグ・アンド・ドロップします。
また、Total_descという出力属性をこの演算子に追加します。Total_desc演算子の「式」プロパティを、total_nameおよびtotal_desc属性に割り当てる値に設定します。

5. ソース演算子からタイプ2 SCDへ属性をマップします。
図6-3 に、ターゲットにマップされるソース演算子を含むマッピングを示しています。タイプ2 SCD。

図6-3 タイプ2 SCDへのデータのロード

「図6-3 タイプ2のSCDへのデータ・ロード」の説明

この例では、レコードの有効時間がソースからロードされます。デフォルトの現行レコード有効時間プロパティを使用して、SYSDATEなどのデフォルト値に設定することも選択できます。

値が履歴のロギング・プロパティに明示的に割り当てられていないため、デフォルト値が使用されます。

6. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「検証」をクリックし、マッピングを検証します。
必要に応じて検証プロセスからのエラーを解決します。

7. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「生成」をクリックし、マッピングを検証します。
生成結果は、「ログ」ウィンドウの新規「結果」タブに表示されます。必要に応じて生成エラーを解決します。

タイプ2 SCDにデータをロードするマッピングが設計されました。実際にソース表からタイプ2のSCDにデータを移動するには、このマッピングを配布して実行する必要があります。マッピングの配布と実行については、「ETLジョブの開始」を参照してください。

ディメンションに保存されているデータの抽出

マッピングのソースとしてのディメンション演算子を使用すると、ワークスペース・ディメンション、緩やかに変化するディメンション(SCD)および時間ディメンションに格納されているデータを抽出できます。

注意:
MOLAP実装を使用するディメンションからデータを抽出することはできません。

ディメンションからデータを抽出

次の手順に従い、ディメンションに格納されているデータを抽出するマッピングを定義します。

1. 「マッピングの定義」の説明に従って、マッピングを定義します。

2. ディメンション演算子をマッピングに追加します。この演算子が、データ抽出元のディメンションにバインドされていることを確認します。
マッピングへの演算子の追加は、「マッピングへの演算子の追加」を参照してください。

3. ターゲット・オブジェクトに対応する演算子、およびターゲットにディメンション・データがロードされる前に実行する必要のあるあらゆる変換に対応する演算子を追加します。

4. 属性を、ディメンション・レベルからターゲット演算子またはソース・データを変換する中間演算子にマップします。必要に応じてすべての属性のマッピングを完了します。

5. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「検証」をクリックし、マッピングを検証します。
必要に応じて検証プロセスからのエラーを解決します。

6. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「生成」をクリックし、マッピングを検証します。
生成結果は、「ログ」ウィンドウの新規「結果」タブに表示されます。必要に応じて生成エラーを解決します。

タイプ2の緩やかに変化するディメンション(SCD)からのデータの抽出

ディメンション演算子を含むマッピングを使用して、タイプ2 SCDに格納されているデータを抽出します。ディメンション演算子は、ソース・データを含むタイプ2 SCDにバインドされている必要があります。

タイプ2 SCDは、単一レコードの複数のバージョンを保存するため、抽出するレコードのバージョンを指定する必要があります。現行バージョンのレコードを抽出するには、ディメンション演算子の「タイプ2 現行のみ抽出/削除」プロパティを「はい」に設定します。履歴レコードも含め、すべてのレコードを抽出するには、「タイプ2 現行のみ抽出/削除」プロパティを「いいえ」に設定します。

さらに、ディメンション演算子のプロパティである「デフォルトの初期レコード有効時間」、「デフォルトのオープン・レコード有効時間」、「デフォルトのオープン・レコード終了時間」、「Type2 Gap」および「Type2 Gap Units」を設定できます。これらのプロパティで、タイプ2 SCD内のバージョニング対象属性に値を割り当てることができます。これらすべてのプロパティは、ディメンション演算子のプロパティ・インスペクタに表示されているようにデフォルト値が用意されています。これらのプロパティに明示的に値を割り当てない場合は、デフォルト値が使用されます。

タイプ2 SCDからデータを抽出するマッピングの定義手順は、次のとおりです。

1. 「マッピングの定義」の説明に従って、マッピングを定義します。

2. ディメンション演算子をマッピングに追加します。この演算子が、データの抽出元であるタイプ2のSCDにバインドされていることを確認します。
マッピングへの演算子の追加は、「マッピングへの演算子の追加」を参照してください。

3. ターゲット・オブジェクトに対応する演算子、およびターゲットにタイプ2 SCDデータがロードされる前に実行する必要のあるあらゆる変換に対応する演算子を追加します。

4. 属性を、ソース・タイプ2 SCDからターゲット演算子またはソース・データを変換する中間演算子にマップします。必要に応じてすべての属性のマッピングを完了します。
抽出するタイプ2 SCDからソース・レコードのバージョンを指定します。

- 現行レコードを抽出するには、「タイプ2 現行のみ抽出/削除」プロパティを「はい」に設定します。

- 履歴レコードを抽出するには、「タイプ2 現行のみ抽出/削除」プロパティを「いいえ」に設定します。

5. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「検証」をクリックし、マッピングを検証します。
必要に応じて検証プロセスからのエラーを解決します。

6. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「生成」をクリックし、マッピングを検証します。
生成結果は、「ログ」ウィンドウの新規「結果」タブに表示されます。必要に応じて生成エラーを解決します。

タイプ3の緩やかに変化するディメンション(SCD)からのデータの抽出

ディメンション演算子を含むマッピングを使用して、タイプ3 SCDからデータを抽出します。演算子は、ソース・データを含むタイプ3 SCDにバインドされている必要があります。

タイプ3 SCDは、個別の属性を使用して、バージョニング対象属性の履歴値を格納します。現行レコードまたは過去値を抽出するかどうかによって、タイプ3 SCD内の属性をターゲット演算子にマップします。

タイプ3 SCDからデータを抽出するマッピングの定義手順は、次のとおりです。

1. 「マッピングの定義」の説明に従って、マッピングを定義します。

2. ディメンション演算子をマッピングに追加します。この演算子が、データの抽出元であるタイプ3のSCDにバインドされていることを確認します。
マッピングへの演算子の追加は、「マッピングへの演算子の追加」を参照してください。

3. ターゲット・オブジェクトの演算子、およびターゲットにディメンション・データがロードされる前に必要となるあらゆる変換に対応する演算子を追加します。

4. 属性を、ソース・タイプ3 SCDからターゲット演算子またはソース・データを変換する演算子にマップします。

- 履歴データを抽出するには、以前のバージョン属性の値を表す属性をターゲットまたは中間演算子にマップします。

- 現行レコードを抽出するには、レベル属性を格納する属性をターゲットまたは中間演算子にマップします。

5. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「検証」をクリックし、マッピングを検証します。
必要に応じて検証プロセスからのエラーを解決します。

6. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「生成」をクリックし、マッピングを検証します。
生成結果は、「ログ」ウィンドウの新規「結果」タブに表示されます。必要に応じて生成エラーを解決します。

図6-4 に、タイプ3のディメンションPRODUCTSから履歴データ・レコードをソーシングするマッピングを示します。この例では、履歴データをソーシングするために、PREV_DESCRIPTION、PREV_PACKAGE_TYPE、またはPREV_PACKAGE_SIZE属性を使用しています。現在のデータをソーシングするには、DESCRIPTION、PACKAGE_TYPE、またはPACKAGE_SIZEを使用します。

図6-4 タイプ3のSCDからデータをソーシングするマッピング

「図6-4 タイプ3のSCDからデータをソーシングするマッピング」の説明

ディメンションからデータを削除

ディメンションおよびSCDからデータを移動するには、ディメンション演算子を使用します。ディメンション演算子、ディメンションから削除する必要のあるデータを含むソース・オブジェクト、およびあらゆる必要な変換演算子を持つマッピングを作成します。ソースまたは変換演算子からの属性をディメンション演算子にマップします。マップが実行されると、ソース・レコードのビジネス識別子がディメンションのビジネス識別子と比較されます。ビジネス識別子が一致すると、ディメンション内の対応するレコードが削除されます。

ディメンションまたはSCDからデータを削除するには、ディメンション演算子の「ロード・タイプ」プロパティを「削除」に設定します。

ディメンション・データ削除でのサロゲート・キーの影響

サロゲート・キーを使用して作成されたディメンションからデータを削除すると、既存の子レコードの親レコードは削除されますが、子レコードは存在しない親を参照したままで残ります。

サロゲート・キーを指定せずに作成したディメンションからデータを削除すると、既存の子レコードの親レコードと、その子レコードが削除されます。これは、カスケード操作に影響します。

例: ディメンションからデータを削除

DF1_SINGLEH1_SCD1は、Total、Region、TerritoryおよびSalesrepのレベルを含むディメンションです。このディメンションは、別のマッピングを使用してこれよりも前にロードされた既存のデータを含みます。表WBSALESREP_ALL、WB_REGIONS、WB_TERRITORIESおよびWBSALESREPTERRITORIESは、ディメンションの様々なレベルから削除される必要のあるデータを含みます。

DF1_SINGLEH1_SCD1ディメンションからデータを削除する手順は、次のとおりです。

1. 「マッピングの定義」の説明に従って、マッピングを定義します。

2. DF1_SINGLEH1_SCD1ディメンションを、プロジェクト・ナビゲータからマッピング・キャンバスにドラッグ・アンド・ドロップします。

3. ディメンション演算子の「ロード・タイプ」プロパティを「削除」に設定します。

4. プロジェクト・ナビゲータから、WBSALESREP_ALL、WB_REGIONS、WB_TERRITORIESおよびWBSALESREPTERRITORIESの表をマッピング・キャンバスにドラッグ・アンド・ドロップします。

5. 定数演算子をマッピングに追加します。2つの出力属性のIDおよび名前を作成します。両方の属性の「式」プロパティに、Totalレベルから削除する値を割り当てます。
たとえば、IDの式属性を100に、NameをAsiaに設定する場合、Totalレベルのすべてのレベルのレコードにおいて、IDとNameが設定した値と一致するものが削除されます。また、定数演算子のID属性がRegion属性にマップされているため、削除されるTotalレベル・レコードのすべての子レコードも同様に削除されます。

6. ソース演算子からの属性をディメンション演算子にマップします。
図6-5 に、ディメンション演算子に接続される属性を含むマッピングを示しています。

図6-5 ディメンションからデータを削除するマッピング

「図6-5 ディメンションからデータを削除するマッピング」の説明

ソース・レコードのビジネス識別子は、マップされるディメンション・レベル・レコードのビジネス識別子と比較されます。ビジネス識別子が一致すると、ディメンションから対応するレコードが削除されます。

7. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「検証」をクリックし、マッピングを検証します。
必要に応じて検証プロセスからのエラーを解決します。

8. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「生成」をクリックし、マッピングを検証します。
生成結果は、「ログ」ウィンドウの新規「結果」タブに表示されます。必要に応じて生成エラーを解決します。

ディメンションからデータを削除するマッピングが設計されました。指定したデータをディメンションから実際に削除するには、このマッピングを配布して実行する必要があります。マッピングの配布と実行については、「ETLジョブの開始」を参照してください。

ETLマッピングでのキューブの使用

キューブ演算子によって、データをキューブから抽出、キューブにロード、およびキューブから削除することができます。キューブからデータを抽出するには、マッピングのソースとしてのキューブ演算子を使用します。

注意:
MOLAP実装を使用するキューブからデータを抽出することはできません。

データをキューブにロードするのか、キューブから削除するのかを指定するには、キューブ演算子の「ロード・タイプ」プロパティを使用します。キューブについては、ロード・タイプのプロパティに、「LOAD」、「INSERT_LOAD」、「REMOVE」の3つがあります。

関連項目:
キューブのロード・タイプのプロパティは、「ロード・タイプ」を参照してください。

キューブのACTIVE_DATE属性

キューブ演算子にはACTIVE_DATEと呼ばれる属性が含まれています。この属性は、タイプ2のSCD内のどのレコードがアクティブ・レコードであるかを決定するために使用される時点を示します。このプロパティは、ロード中のキューブにタイプ2のSCDが1つ以上存在する場合にのみ適用可能です。

ソースの属性をACTIVE_DATEにマップしない場合、デフォルトとしてSYSDATEが使用されます。

ソースの属性をACTIVE_DATEにマップした場合、ソースの属性の値を使用して、キューブ・レコードで参照されるタイプ2のSCDレコードのバージョンが決定されます。レベルがタイプ2のSCDであるディメンションを参照するキューブの場合、ディメンション・メンバーを決定するために生成されるWHERE句は次のとおりです。

...
WHERE
(...
(<dim_name>.DIMKEY = <lookup_for_dimension_dimkey> AND
(<level>_EFFECTIVE_DATE <= ACTIVE_DATE AND
<level>_EXPIRATION_DATE >= ACTIVE_DATE) OR
(<level>_EFFECTIVE_DATE <= ACTIVE_DATE AND
<level>_EXPIRATION_DATE IS NULL))
...)

データのタイプ2 SCDからキューブへのロード

キューブをロードするマッピングで、「デフォルトのオープン・レコード終了時間」がNULL以外の値に設定されているタイプ2のSCDを1つ以上参照する場合、キューブ演算子のACTIVE_DATE属性は、ディメンション・レコードの範囲を定義する日付値が含まれているソースからマップされる必要があります。

ACTIVE_DATE属性がソースからマップされていない場合は、SYSDATE値によってディメンション・レコードの日付範囲が定義されます。

ACTIVE_DATE属性がソースからマップされた場合、ソースの属性値を使用して範囲の比較が実行され、ロードする必要があるディメンション・レコードが決定されます。

前述のWHERE句を使用して、ディメンション・メンバーの参照を実行する際に使用するロジックを記述します。

キューブにデータをロード

キューブをロードする場合、ソースのデータ・フローを、参照レベルのビジネス識別子を表す属性にマップします。Oracle Warehouse Builderによりディメンションの参照が実行され、該当するサロゲート識別子がキューブ表に格納されます。たとえば、属性をディメンション演算子からキューブ演算子にマップする場合は、ディメンションのサロゲート識別子の検索に必要であれば、キー参照演算子が作成されます。

参照条件で複数の行が戻される可能性がある場合は、戻された行から1行のみ選択するようにしてください。これは、デュプリケータ解除演算子またはフィルタ演算子を使用して実行できます。

キューブにデータをロードするには、次の手順を使用します。

1. 「マッピングの定義」の説明に従って、マッピングを定義します。

2. キューブ演算子をマッピングに追加します。この演算子が、データをロードするキューブにバインドされていることを確認します。
マッピングへの演算子の追加は、「マッピングへの演算子の追加」を参照してください。

3. ソース・オブジェクトに対応する演算子、およびディメンションにソース・データがロードされる前に実行する必要のあるあらゆる変換に対応する演算子を追加します。すべてのソース・データ・オブジェクトがリポジト・リオブジェクトにバインドされていることを確認します。

4. 属性を、ソース演算子から中間変換演算子(ソース・データをディメンションにロードする前に変換する場合)、ターゲット・キューブの順にマップします。必要に応じてすべての属性のマッピングを完了します。

5. キューブ演算子の「ロード・タイプ」プロパティを「ロード」に設定します。

6. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「検証」をクリックし、マッピングを検証します。
必要に応じて検証プロセスからのエラーを解決します。

7. プロジェクト・ナビゲータ内のマッピングを選択して、ツールバーにある「生成」をクリックし、マッピングを検証します。
生成結果は、「ログ」ウィンドウの新規「結果」タブに表示されます。必要に応じて生成エラーを解決します。

注意:
キューブのソース・データがディメンション参照に無効な値またはNULL値を含む場合、孤立管理またはDMLエラー・ロギングを使用して後続キューブのロード中の潜在的な問題を回避することをお薦めします。

図6-6 では、キューブ演算子をターゲットとして使用するマッピングを示します。3つのソース表からのデータは、ジョイナ演算子を使用して結合されます。結合データと他のソース表からのデータの集計には、アグリゲータ演算子が使用されます。アグリゲータ演算子の出力は、キューブ演算子にマップされます。

図6-6 キューブをロードするマッピング

「図6-6 キューブをロードするマッピング」の説明

7 SQL*Loader、SAPおよびコード・テンプレート・マッピングの使用

Oracle Warehouse Builderを使用すると、マッピングを使用してフラット・ファイルおよびSAPなどの異なるシステムからデータを抽出できます。コード・テンプレート(CT)マッピングはオープン接続に役立ち、データの移動方法をカスタマイズできます。

この章では、SAPおよびCTマッピングの作成に使用する手順を説明します。ここには、SAPシステムおよびその他の異機種データベースに対するETLの実行例も含まれています。

この章の内容は次のとおりです。

- 「フラット・ファイルからデータを抽出するSQL*Loaderマッピングの作成」

- 「SAP抽出マッピングの作成」

- SAPシステムからのデータの取得

- コード・テンプレート(CT)マッピングの作成

- コード・テンプレート・マッピングでのコード・テンプレートのオプションの設定

- コード・テンプレート・マッピングの実行監査

- 変更データ・キャプチャ(CDC)を実行するコード・テンプレート・マッピングの使用

- コントロール・コード・テンプレートの使用

- コード・テンプレート・マッピングでのOracleターゲットCTの使用

- 異機種データベースからOracle Databaseへのデータの移動

フラット・ファイルからデータを抽出するSQL*Loaderマッピングの作成

マッピングでフラット・ファイル演算子を使用して、データをフラット・ファイルから抽出およびフラット・ファイルにデータをロードします。フラット・ファイル演算子はソースまたはターゲットとして使用できますが、両方の組合せは使用できません。

「フラット・ファイルからのデータの抽出」の説明に従って、フラット・ファイルからデータを抽出するマッピングを定義します。

「フラット・ファイルへのデータのロード」の説明に従って、フラット・ファイルにデータをロードするマッピングを定義します。

関連項目:
SQL*Loaderマッピングを使用中に従うベスト・プラクティスの詳細は、「SQL*Loaderマッピング設計のベスト・プラクティス」を参照してください。

後続の手順

マッピングを設計してマッピングのコードを生成した後、プロセス・フローを作成するか、直接配布を続行して実行できます。

プロセス・フローを使用して、マッピングを相互に関連付けます。たとえば、あるマッピングが完了すると電子メール通知がトリガーされて別のマッピングが開始されるようなプロセス・フローを設計できます。詳細は、第8章「プロセス・フローの設計」を参照してください。

マッピングおよび作成した関連プロセス・フローを配布し、第12章「ターゲット・スキーマへの配布およびETLロジックの実行」の説明に従って、マッピングを実行します。

フラット・ファイルからのデータの抽出

フラット・ファイルからデータを抽出するには、マッピングのソースとしてフラット・ファイル演算子を使用します。

または、フラット・ファイル定義に基づき外部表を定義し、ソースとして外部表演算子を使用できます。大量のデータをロードする場合、フラット・ファイルからロードすることにより、DIRECT PATH SQL*Loaderオプションを使用できるようになり、パフォーマンスが向上します。大量のデータをロードしない場合、外部表を使用中に使用できる多くのリレーショナル変換を利用できます。

関連項目:
外部表とフラット・ファイルの比較の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

ソースとして使用する場合、フラット・ファイル演算子は、SQL*Loaderユーティリティを使用してフラット・ファイルからデータを読み取る行セット・ジェネレータとして機能します。フラット・ファイル・マッピングのターゲットは表などのリレーショナル・オブジェクトにできます。外部表演算子は外部表が読取り専用であるためターゲットにはできません。

フラット・ファイル・ソース演算子を使用してマッピングを設計する場合は、次の演算子を使用できます。

- フィルタ演算子

- 定数演算子

- データ・ジェネレータ演算子

- 「順序演算子」

- 式演算子

- 変換演算子

注意:
順序、式または変換演算子を使用する場合、SQL*Loaderの直接ロード設定は構成パラメータとして使用できません。

フラット・ファイルをソースとして使用する場合、フラット・ファイル・ソースからリレーショナル・ターゲットへのコネクタを必ず作成してください。コネクタを作成しないと、マッピングが正常に配布されません。

フラット・ファイルからデータを抽出するマッピングの定義

1. フラット・ファイルのメタデータをOracle Warehouse Builderワークスペースにインポートします。

関連項目:
フラット・ファイルのメタデータのインポートの詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

2. プロジェクト・ナビゲータで、「マッピングの定義手順」の説明に従ってマッピングを作成します。

3. プロジェクト・ナビゲータから、フラット・ファイルをデータの抽出元からマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

4. マッピング・エディタのキャンバス上で、ターゲット・オブジェクトを表す演算子をフラット・ファイルから抽出したデータをロードするデータに追加します。また、ソース・データの変換に必要な変換演算子を追加します。

関連項目:
演算子の追加の詳細は、「演算子のマッピングへの追加」を参照してください。

5. マッピング・エディタのキャンバス上で、ソース、変換およびターゲット演算子間のデータ・フローを作成します。

6. 「ファイル」メニューから 検証」を選択してマッピングを検証します。検証エラーがある場合は修正します。

フラット・ファイルへのデータのロード

フラット・ファイルにデータをロードするには、マッピングでフラット・ファイル演算子をターゲットとして使用します。

フラット・ファイル・ターゲットを使用したマッピングでは、データを表の行にロードするのではなく、データをフラット・ファイルにロードするPL/SQLパッケージが生成されます。

注意:
1つのマッピングは、最大50のフラット・ファイル・ターゲット演算子を含むことができます。

既存のフラット・ファイルは、レコード・タイプが単一でも複数でも使用できます。複数のレコード・タイプのフラット・ファイルをターゲットとして使用する場合は、1つのレコード・タイプに対してのみマップできます。同じソースからフラット・ファイルのすべてのレコード・タイプをロードする場合、同じフラット・ファイルをターゲットとしてマッピングに再ドロップし、別のレコード・タイプにマップできます。この使用例は、「SQL*Loaderマッピングでの参照整合性を確認するためのダイレクト・パス・ロードの使用」を参照してください。または、ロードするレコード・タイプごとに異なるマッピングを作成してください。

フラット・ファイル・ターゲットの作成

次のいずれかの方法で、フラット・ファイルのターゲット演算子を作成します。

- 既存のフラット・ファイル定義をリポジトリにインポートし、このフラット・ファイルをマッピングのターゲットとして使用します。

- フラット・ファイルの作成ウィザードを使用してフラット・ファイルを定義し、マッピングのターゲットとして使用します。

- 「新規フラット・ファイル・ターゲットの作成」の説明に従って、新規フラット・ファイルを作成します。

データをフラット・ファイルにロードするマッピングの定義

次の手順で、データをフラット・ファイルにロードするマッピングを定義します。

1. ターゲット・モジュールで、「フラット・ファイル・ターゲットの作成」で説明する方法のいずれかを使用して、データをロードするフラット・ファイルを定義します。

2. プロジェクト・ナビゲータで、「マッピングの定義手順」の説明に従ってマッピングを作成します。

3. プロジェクト・ナビゲータから、データのロード先のフラット・ファイルをマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

4. マッピング・エディタのキャンバス上で、データのロード元のソース・オブジェクトを表す演算子をフラット・ファイルにロードします。また、ソース・データの変換に使用する変換演算子を追加します。

関連項目:
演算子の追加の詳細は、「演算子のマッピングへの追加」を参照してください。

5. マッピング・エディタのキャンバス上で、ソース、変換およびターゲット演算子間のデータ・フローを作成します。

6. 「ファイル」メニューから 検証」を選択してマッピングを検証します。検証エラーがある場合は修正します。

新規フラット・ファイル・ターゲットの作成

1. フラット・ファイル・モジュールを作成していない場合は、ここで作成します。
フラット・ファイル・モジュールは、後述されている手順で物理フラット・ファイルを作成する際に必要です。

2. 「マッピングの定義」の説明に従って、マッピングを定義します。

3. フラット・ファイル演算子をキャンバスにドラッグ・アンド・ドロップします。

4. 「フラット・ファイル演算子の追加」ダイアログ・ボックスで、「バインドされていない演算子を属性なしで作成」を選択し、新しいターゲット演算子に名前を割り当てます。

5. 「演算子の編集」の説明に従って、新しい演算子を編集します。
この時点で、フラット・ファイルを表す演算子は定義しましたが、実際のフラット・ファイル・ターゲットは作成していません。

6. データベースにフラット・ファイルを作成するには、演算子を右クリックして「作成とバインド」を選択します。

フラット・ファイル・モジュールの選択を要求するダイアログ・ボックスが表示され、選択するとフラット・ファイルに一意名を割り当てることができます。「OK」をクリックすると、Oracle Warehouse Builderでは指定したモジュールのファイル・ノードに新規ターゲットが表示されます。

7. 「マッピングを使用した抽出、変換およびロード(ETL)の実行手順」の説明に従って、マッピングの定義を続行します。

SAP抽出マッピングの作成

SAP表からメタデータをインポートした後に、抽出マッピングを定義してSAPシステムからデータを取得する必要があります。

SAP抽出マッピングの定義

マッピング・エディタを使用して、SAP表を含むマッピングを作成します。SAP表のマッピングの作成は、その他のデータベース・オブジェクトのマッピングの作成と同様です。ただし、マッピングで使用できる演算子には制約があります。SAP表を含むマッピングでは、使用できるマッピング演算子は表、フィルタ、ジョイナおよびマッピング入力パラメータのみです。

一般的なSAP抽出マッピングは、1つ以上のSAPソース表(透過、クラスタまたはプール)、1つ以上のフィルタまたはジョイナ演算子、取得データを格納するSAP以外のターゲット表(通常はOracle Database表)で構成されます。

注意:
マッピングにSAPソース表とSAP以外(Oracle Database)のソース表の両方を持つことはできません。ただし、Oracle Database表はステージング表として使用できます。

図7-1は、SAPソースからデータを抽出するマッピングを示したものです。

図7-1 SAP抽出マッピング

「図7-1 SAP抽出マッピング」の説明

この例では、入力パラメータが日付値を取り、BKPF表のデータはこの日付に基づいてフィルタされます。ジョイナ演算子を使用すると、複数の表のデータを結合でき、結合されたデータ・セットはステージング表に格納されます。

この項の内容は次のとおりです。

- マッピングへのSAP表の追加

- ロード・タイプの設定

- マッピングの構成プロパティの設定

- 結合ランクの設定

マッピングへのSAP表の追加

マッピングへのSAP表の追加手順:

マッピング・エディタで、必要なSAP表をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

マッピング・キャンバスに、SAP表を表す表演算子が表示されます。

ロード・タイプの設定

プロパティ・インスペクタを使用して、マッピングの表のSQL*Loaderプロパティを設定します。

SAPソース表のロード・タイプの設定手順:

1. マッピング・エディタで、SAPソース表を選択します。プロパティ・インスペクタにSAP表のプロパティが表示されます。

2. ロード・タイプ・リストからロード・タイプを選択します。マッピング言語としてABAPコードを指定すると、表7-1に示すSQL*Loaderコードが生成されます。

表7-1 ABAPで生成されるSQL*Loaderコード

ロード・タイプ

SQL*Loaderでの結果のロード・タイプ

INSERT

APPEND

CHECK/INSERT

INSERT

TRUNCATE/INSERT

TRUNCATE

DELETE/INSERT

REPLACE

他のすべてのタイプ

APPEND

マッピングの構成プロパティの設定

次の手順を実行し、SAP表を含むマッピングを構成します。

- 「構成」タブを使用して、「言語パラメータの設定」で説明するコード生成言語を定義します。

- 「ランタイム・パラメータの設定」で説明するように、「構成」タブで、ABAP固有のパラメータ、ディレクトリおよび初期化ファイルの設定を設定します。

「言語」パラメータの設定

言語パラメータを使用すると、マッピング用に生成するコードのタイプを選択できます。SAPソース表を含むマッピングの場合、Oracle Warehouse Builderでは言語パラメータは自動的にABAPに設定されます。このパラメータがABAPに設定されていることを確認します。

ランタイム・パラメータの設定

言語をABAPに設定し、「構成」タブで「ランタイム・パラメータ」ノードを開き、ABAPコード生成に固有の設定を表示します。

一部の設定には、コード生成を最適化するプロパティが事前に設定されています。これらの設定を変更すると、コード生成プロセスが低速になる場合があるため、そのままにしておくことをお薦めします。

SAPマッピングには、次のランタイム・パラメータを使用できます。

- バックグラウンド・ジョブ: ABAPレポートをSAPシステムでバックグラウンド・ジョブとして実行する場合は、このオプションを選択します。長時間実行されるジョブには、このオプションを有効にします。SAPでは、長時間実行されるフォアグラウンド・バッチ・ジョブは、一定時間を経過するとハングしたものとみなされます。そのため、そのような抽出にはバックグラウンド・ジョブを実行することが望ましいです。

- ステージング・ファイルのファイル・デリミタ: SQLデータファイル内の列セパレータを指定します。

- データファイル名: マッピング用のABAPコードをSAPシステムで実行する際に生成されるデータファイルの名前を指定します。

- SQL結合失敗: 可能な場合は、ABAPコードを生成するための次のヒントを指定します。

SELECT < > INTO < > FROM (T1 as T1 inner join T2 as T2) ON <condition >

デフォルト設定は「TRUE」です。

- 結合用の主外部キー: 結合に使用する主キーを指定します。

- ABAPレポート名: マッピング用に生成されたABAPコード・ファイルの名前を指定します。これは、ABAPコードを実行するためにカスタム・ファンクション・モジュールを実行する場合のみ必要になります。

- SAPシステム・バージョン: ABAPコードを配布するSAPシステムのバージョン番号を指定します。MySAP ERPおよびその他のすべてのバージョンの場合は、SAP R/3 4.7を選択します。4.7よりも前のバージョンでは、別のABAPコードが必要になります。

- ステージング・ファイル・ディレクトリ: ABAPコードにより生成されたデータファイルが格納されるディレクトリのロケーションを指定します。

- SAPのロケーション: データの抽出元のSAPインスタンスのロケーションを指定します。

- Select Singleの使用: 可能な場合は、Select Singleを生成するかどうかを指定します。

- ネステッド・ループ: 可能な場合は、結合用のネストされたループ・コードを生成するためのヒントを指定します。

結合ランクの設定

このパラメータは、マッピングにジョイナ演算子が含まれており、明示的に駆動表を指定する場合にのみ設定する必要があります。SQLとは異なり、ABAPコードの生成はルール・ベースです。そのため、表が正しい順序でロードされるように、マッピングを設計する必要があります。または、表を結合する順序を明示的に指定することもできます。「構成」タブで「表演算子」を開き、各表に対して「結合ランク」を指定します。駆動表の「結合ランク」の値は1に設定する必要があり、後続の表にはそれに続く値を設定します。

駆動表およびその他の表の結合順序をOracle Warehouse Builderで決定することもできます。その場合は、「結合ランク」に値を入力しないでください。

SAPシステムからのデータの取得

抽出マッピングの設計後には、Oracle Warehouse Builderのすべてのマッピングと同様に、マッピングを検証、生成、配布する必要があります。

SAPマッピング用のスクリプトの生成手順:

1. SAPマッピングを右クリックして「生成」を選択します。
スクリプト・ノードの「ログ」ウィンドウに生成結果が表示されます。

2. スクリプト・ノードを開いてスクリプト名を選択し、「ログ」ウィンドウのツールバーの「スクリプトの表示」をクリックします。
生成済コードが「コード・ビューア」に表示されます。

コード・エディタを使用してファイルを編集、印刷または保存できます。コード・ビューアを閉じてデザイン・センターに戻ります。

3. スクリプトを保存するには、スクリプトを右クリックし、「ログ」ウィンドウのツールバーの「スクリプトを別名で保存」をクリックします。

SAPマッピングを生成した後、それを配布してターゲット・ロケーションに論理オブジェクトを作成する必要があります。SAPマッピングを配布するには、そのマッピングを右クリックして「配布」を選択します。また、コントロール・センター・マネージャからマッピングを配布することもできます。

配布の詳細は、第12章 「ターゲット・スキーマへの配布およびETLロジックの実行」を参照してください。

SAPマッピングを配布すると、ABAPマッピングが作成され、Oracle Warehouse Builderランタイム・スキーマに格納されます。また、OWB_HOME\owb\deployed_filesディレクトリにABAPファイルが保存されます。OWB_HOMEは、Oracle Warehouse BuilderインストールのOracle Databaseホーム・ディレクトリの場所です。Oracle Databaseに付属するOracle Warehouse Builderインストールを使用している場合、これはデータベース・ホームと同じです。

SAPシステムからのデータの取得が完全自動、半自動、手動であるかによって、後続のタスクを実行する必要があります。この項の内容は次のとおりです。

- 「自動システム」

- 「半自動システム」

- 「手動システム」

自動システム

完全自動化システムの場合、Oracle Warehouse BuilderユーザーはSAPシステム内の定義済ファンクション・モジュールにアクセスできます。これにより、ユーザーはSAP管理者に依存することなく、すべてのABAPコードを実行してSAPシステムから直接データを取得できます。

図7-2は、自動データ取得システムを図解したものです。

図7-2 自動化されたデータ取得

「図7-2 自動化されたデータ取得」の説明

依存性がないため、ABAPコードをSAPシステムに送信し、SAPシステムからデータファイルを取得するプロセスを自動化できます。Oracle Warehouse Builderでは、FTPを使用してOracle Warehouse Builderシステムにデータ・ファイルを転送し、SQL*Loaderを使用して取得データが含まれるターゲット・ファイルをロードします。

自動システムは次のように機能します。

1. 抽出マッピングを設計し、このマッピング用のABAPコードを生成します。

2. マッピングを配布する前に、マッピングについて次の構成パラメータが設定されていることを確認します。

- ABAPレポート名: マッピング用に生成されたABAPコードを格納するファイル。

- SAPのロケーション: データの取得元になるSAPシステムのロケーション。

- データファイル名: ABAPコードの実行によって生成されたデータを格納するデータファイル名。

また、SAPロケーションに関する次の追加の接続詳細が指定されていることも確認します。

- 実行ファンクション・モジュール: 事前定義済のSAPファンクション・モジュールの名前を指定します。このファンクション・モジュールは、実行時にパラメータとしてABAPレポート名を受け取り、ABAPコードを実行します。

- FTPディレクトリ: Oracle Warehouse Builderシステム上のディレクトリ。ファンクション・モジュールの実行により生成されたデータ・ファイルは、FTPを使用してこのディレクトリに送信されます。

- FTPディレクトリの書込み権限を持つユーザー名も指定します。

3. 次に、マッピングを開始します。これにより、次のタスクが自動的に実行されます。

- Oracle Warehouse Builderは、ABAPを配布し、RFC_ABAP_INSTALL_AND_RUNを使用してABAPのロードとSAPでの実行を行います。
リモート・ファンクション・コール(RFC)を使用して、ABAPコードがSAPシステムに送信されます。

4. SAPシステムでは、コードによりソース表からデータが取得され、データ・ファイルが作成されます。
このデータ・ファイルは、ランタイム・パラメータ「ステージング・ファイル・ディレクトリ」で指定したロケーションに格納されます。

5. Oracle Warehouse Builderは、FTPを使用してこのデータ・ファイルをOracle Warehouse Builderシステムに戻します。
ファイルは、「FTPディレクトリ」フィールドで指定したロケーションに格納されます。

6. SQL*Loaderを使用して、マッピングのターゲット表がデータ・ファイルのデータとともにロードされます。

このシステムの利点は、完全に自動化されたエンドツーエンドのソリューションを作成してSAPデータを取得できることです。ユーザーが抽出マッピングを作成し、Oracle Warehouse Builderからマッピングを実行するだけで、ABAPコードが作成されてSAPシステムに送信され、結果のデータ・ファイルが取得され、取得したデータがターゲット表にロードされます。

半自動システム

半自動システムでは、Oracle Warehouse Builderユーザーには事前定義済のファンクション・モジュールに対するアクセス権限がないため、このファンクション・モジュールを使用してABAPコードを実行できません。ユーザーは抽出マッピングを作成して配布し、ABAPコードをSAP管理者に送信します。SAP管理者はSAPシステム上で実行できるようにコードの検証を行います。

図7-3は、半自動システムを図解したものです。

図7-3 半自動化された実装

「図7-3 半自動化された実装」の説明

半自動システムは次のように機能します。

1. 抽出マッピングを設計し、このマッピング用のABAPコードを生成します。

2. 次に、ABAPコードをテスト環境に転送し、コードをテストします。

3. 次に、ABAPコードをSAP管理者に送信します。SAP管理者はコードをSAPリポジトリにロードします。

4. SAP管理者が新しいABAPレポート名を作成します。

5. 次に、このABAPレポート名をコールして、本番環境でABAPコードを実行できます。

6. SAPシステムでマッピングを実行する前に、マッピングについて次の構成パラメータを設定していることを確認します。

- ABAPレポート名: SAP管理者は、ABAPコードを確認した後、レポート名を提供します。このABAPファイルを実行します。

- SAPのロケーション: データの取得元になるSAPシステムのロケーション。

- データファイル名: ABAPコードの実行中に生成されたデータを格納するデータファイル名。

また、SAPロケーションに関する次の追加の接続詳細が指定されていることも確認します。

- 実行ファンクション・モジュール: SAP管理者が作成したカスタム・ファンクション・モジュールの名前を指定します。このファンクション・モジュールは、実行時にパラメータとしてABAPレポート名を受け取り、ABAPコードを実行します。SAP管理者からファンクション・モジュール名を入手する必要があります。

- FTPディレクトリ: Oracle Warehouse Builderシステム上のディレクトリ。ABAPコードの実行によって生成されたデータ・ファイルは、FTPを使用してこのディレクトリに送信されます。

- FTPディレクトリの書込み権限を持つユーザー名も指定します。

7. ユーザーが本番環境でマッピングを実行すると、ABAPコードが生成され、リモート・ファンクション・コール(RFC)を使用してSAPシステムに送信されます。

8. SAPシステム内で、カスタマイズしたファンクション・モジュールを使用してABAPコードが実行され、データ・ファイルが生成されます。
このデータ・ファイルは、ランタイム・パラメータ「ステージング・ファイル・ディレクトリ」で指定したロケーションに格納されます。

9. Oracle Warehouse Builderは、FTPを使用してこのデータ・ファイルをOracle Warehouse Builderシステムに戻します。
ファイルは、「FTPディレクトリ」フィールドで指定したロケーションに格納されます。

10. Oracle Warehouse Builderでは、SQL*Loaderを使用して、ターゲット表がデータ・ファイルのデータとともにロードされます。

手動システム

手動システムの場合、Oracle Warehouse Builderユーザーの役割は、マッピング用のABAPコードの生成およびABAPコードのSAP管理者への送信に限定されます。このシステムでのタスクは次のとおりです。

1. 抽出マッピングを作成し、マッピング用のABAPコードを生成します。

2. マッピングを設計する際に、データ・ファイルを格納するデータ・ファイル名を必ず指定してください。

3. SAP管理者にABAPコードを送信します。

4. SAP管理者は、SAPシステムでABAPコードを実行します。

5. コードの実行により、データ・ファイルが生成されます。

Oracle Warehouse Builder側で、ユーザーはデータ・ファイルを取得するプロセス・フローを作成できます。プロセス・フローには次のアクティビティを含める必要があります。

1. ファイルが存在アクティビティにより、データファイルの有無が確認されます。

2. ファイルが存在する場合、FTPアクティビティがファイルをOracle Warehouse Builderシステムに転送します。

3. ファイルが存在しない場合は、ファイルが提供されるまで待機してからFTPを実行します。

4. SQL*Loaderを使用して、ターゲット表がデータ・ファイルのデータとともにロードされます。

図7-4は、データ・ファイルを取得するプロセス・フローを示したものです。

図7-4 SAPデータを取得するプロセス・フロー

「図7-4 SAPデータを取得するプロセス・フロー」の説明

環境によっては、SAP管理者がどのユーザーにもSAPシステムへのアクセスを許可しない場合があります。そのような場合には、手動システムの実装が唯一使用できるオプションになります。

コード・テンプレート(CT)マッピングの作成

コード・テンプレートを作成またはインポートして配布すると、特定のプラットフォーム上で特定のタスクを実行するテンプレートをワークスペースで使用できます。このテンプレートを使用してデータをロードまたは変換するには、このコード・テンプレートを使用するマッピングを作成する必要があります。

コード・テンプレートを使用して実行できるタスクの一部は、次のとおりです。

- これらのデータベースからデータを抽出することでDB2またはSQL Serverなどの異機種データベースとの統合

- 現在のコード・テンプレート・ライブラリの機能の拡張。たとえば、データ・ポンプなどのOracle Database機能を使用する新規のコード・テンプレートを構成して、Oracleシステム間でデータを高速に移動できます。

PL/SQLマッピングに生成されたコードがアプリケーションの要件に一致しない場合に、コード・テンプレートを使用することもできます。

コード・テンプレート(CT)マッピング

コード・テンプレートとの関連を含むマッピングをコード・テンプレート(CT)マッピングといいます。一般的に、IBM DB2およびMicrosoft SQL ServerなどのOracle以外のデータベースからデータを抽出またはロード(変換あり、変換なしの両方)する場合に使用されます。Oracle Gatewaysを使用してOracle以外のシステムから抽出、Oracle以外のシステムへ書込みすることもできます。

Oracle Databaseからデータを抽出して別のOracle Databaseに変換およびロードする場合は、コード・テンプレート・マッピングを使用、またはOracleターゲット・モジュールのマッピング・ノードでマッピングを作成できます。

コード・テンプレート(CT)マッピングを使用できるのは

コード・テンプレート・マッピングを使用して、コード・テンプレートを使用するOracleおよびOracle以外のデータベースからデータを抽出、変換またはOracleおよびOracle以外のデータベースにロードします。

Oracleデータベース間でデータを移動する場合にCTマッピングを使用する主な理由は、データベース・リンク以外の技術を使用したデータ移動です。コード・テンプレートを使用すると、データ・ポンプなどの機能に基づいてバルク・データ移動を実装することができます。

コード・テンプレート・マッピングの定義場所

コード・テンプレート・マッピングを作成する場合は、プロジェクト・マネージャのプロジェクトのテンプレート・マッピング・ノードを使用します。このノードはOracle以外のマッピング(PL/SQL、SQL*LoaderまたはABAP以外)を含める場合に使用します。

CTマッピングを作成する場合、マッピング・エディタには「論理ビュー」および「実行ビュー」の2つのタブがあります。論理ビューは、マッピング演算子を追加および演算子間のフローを作成してマッピングを定義する場合に使用します。「実行ビュー」を使用して、マッピングの実行方法を指定する実行ユニットを定義します。実行ユニットの詳細は、「実行ユニットの定義」を参照してください。

コード・テンプレート・マッピングに使用できる演算子

CTマッピングでは、「OracleターゲットCT実行ユニットでのみサポートされているマッピング演算子」にリストされているもの以外の、すべてのマッピング演算子を使用できます。

CTマッピングではプラッガブル・マッピングも使用できます。ただし、プラッガブル・マッピングには「OracleターゲットCT実行ユニットでのみサポートされているマッピング演算子」にリストされている演算子は含まれません。

Tコード・テンプレートのタイプ

Oracle Warehouse Builderのコード・テンプレートは、次のカテゴリに分類されます。

- ロード・コード・テンプレート(ロードCT)

- 統合コード・テンプレート(統合CT)

- コントロール・コード・テンプレート(コントロールCT)

- 変更データ・キャプチャ・コード・テンプレート(CDC CT)

- Oracleターゲット・コード・テンプレート(OracleターゲットCT)

- ファンクション・コード・テンプレート(ファンクションCT)

コード・テンプレートのタイプの詳細は、第29章「Oracle Warehouse Builderコード・テンプレート・ツールおよび置換メソッド」を参照してください。

Oracle Warehouse Builderに同梱されている事前作成コード・テンプレートについて

Oracle Warehouse Builderには、データ変換を実行するためにCTマッピングで使用できる事前作成されたコード・テンプレートが含まれています。指定したソースまたはターゲット上で特定のETLタスクを実行するために定義されたこれらのコード・テンプレートは、グローバル・ナビゲータのパブリック・コード・テンプレート・ノードのBUILT_IN_CTノードで使用できます。

表7-2は、Oracle Warehouse Builderによって提供されるコード・テンプレートの簡単な説明およびその使用に際しての制約の詳細を示したものです。パフォーマンスが最適化されるため、可能な場合はターゲット・ステージングには常に特定のロードCTを使用します。たとえば、Oracleデータベースにロードする場合は、かわりにLCT_FILE_TO_ORACLE_SQLLDRまたはLCT_FILE_TO_ORACLE_EXTER_TABLEを使用します。

これらのコード・テンプレートの詳細は、Oracle Data Integrator(ODI)ドキュメント・セットを参照してください。ODIでは、コード・テンプレートはナレッジ・モジュールと呼ばれます。

表7-2 Oracle Warehouse Builderによって提供される事前作成されたコード・テンプレート

コード・テンプレート名

コード・テンプレート・タイプ

説明

LCT_FILE_TO_ORACLE_EXTER_TABLE

ロードCT

EXTERNAL TABLE SQLコマンドを使用して、ファイルからOracle Databaseのステージング領域にデータをロードします。

大量のデータを処理する場合は、このCTはLCT_FILE_TO_SQLより効率的です。ただし、ロードされたファイルへはOracle Databaseコンピュータからアクセスできる必要があります。

LCT_FILE_TO_ORACLE_SQLLDR

ロードCT

固有のSQL*LOADERコマンドライン・ユーティリティを使用して、ファイルからOracle Databaseのステージング領域にデータをロードします。SQL*LOADERを使用するため、大量のデータを処理する場合はこのCTはLCT_FILE_TO_SQLより効率的です。

LCT_FILE_TO_SQL

ロードCT

ASCIIまたはEBCDICファイルからステージング領域として使用する任意のSQL準拠データベースにデータをロードします。ソース・データ・ストアの1つがASCIIまたはEBCDICファイルの場合は、このロードCTを使用することを検討してください。

LCT_ORACLE_TO_ORACLE_DBLINK

ロードCT

固有のデータベース・リンク機能を使用して、OracleデータベースからOracleステージング領域のデータベースにデータをロードします。

LCT_SQL_TO_ORACLE

ロードCT

汎用SQLソース・データベースからOracleステージング領域にデータをロードします。このロードCTは、追加のOracle Databaseパラメータを指定できる点を除き、標準LCT_SQL_TO_SQLと似ています。

LCT_SQL_TO_SQL

ロードCT

SQL準拠のデータベースからSQL準拠のステージング領域にデータをロードします。

LCT_SQL_TO_SQL_ROW_BY_ROW

ロードCT

SQL準拠のデータベースからSQL準拠のステージング領域にデータをロードします。このCTはJythonスクリプトを使用して、ソース・データベースから選択したデータを読込み、結果を動的に作成されたステージング一時表に書込みます。

ICT_ORACLE_INCR_UPD

統合CT

増分更新モードで、Oracleターゲット表をロードし、欠落したレコードを挿入して既存のレコードを更新します。

挿入および更新はバルク・セット・ベースの処理で行われ、パフォーマンスが最大化されます。コントロールCTを呼出してデータ整合性チェックを実行することもできます。

注意: この統合CTを使用する場合は、次の制約が適用されます。

- ターゲット表演算子のロード・タイプのプロパティは、INSERT_UPDATEまたはUPDATE_INSERTに設定する必要があります。

- ターゲット表演算子には一意キーまたは主キーを定義する必要があります。

ICT_ORACLE_INCR_UPD_MERGE

統合CT

増分更新モードで、Oracleターゲット表をロードし、欠落したレコードを挿入して既存のレコードを更新します。

パフォーマンスを最大化するため、挿入および更新はセットベースのMERGE文により一括で実行されます。また、コントロールCTを起動してデータ整合性チェックを実行することもできます。

注意: この統合CTを使用する場合は、次の制約が適用されます。

- ターゲット表演算子のロード・タイプのプロパティは、INSERT_UPDATEまたはUPDATE_INSERTに設定する必要があります。

- ターゲット表演算子には一意キーまたは主キーを定義する必要があります。

ICT_ORACLE_INCR_UPD_PL_SQL

統合CT

Oracleターゲット表をロードし、欠落したレコードを挿入して既存のレコードを更新します。

レコードにLongまたはBinary Long Object (BLOB)データ型が含まれる場合は、このCTを使用します。挿入および更新は行別PL/SQL処理で実行されるため、大量データのロードにはこのCTの使用は避けます。

注意: この統合CTを使用する場合は、次の制約が適用されます。

- ターゲット表演算子のロード・タイプのプロパティは、INSERT_UPDATEまたはUPDATE_INSERTに設定する必要があります。

- ターゲット表演算子には一意キーまたは主キーを定義する必要があります。

ICT_ORACLE_SCD

統合CT

タイプ2の緩やかに変化するディメンションをロードします。

このCTはターゲット表では緩やかに変化するディメンジョンのメタデータ・セットに依存し、新規バージョンとして挿入するレコードまたは既存バージョンとして更新するレコードを決定します。

ICT_SQL_CONTROL_APPEND

統合CT

Loads your SQL準拠のターゲット表を、データ整合性チェックありまたはなしで置換/追加モードでロードします。

コントロールCTを使用してフロー・データをチェックする必要がある場合は、このCTは一時ステージング表を作成してからコントロールCTを呼出します。

ICT_SQL_INCR_UPD

統合CT

増分更新モードで、SQL準拠のターゲット表をロードし、欠落したレコードを挿入して既存のレコードを更新します。

コントロールCTを呼出してデータ整合性チェックを実行することもできます。すべてのデータベースが同じバルク更新構文をサポートしていないため、更新は行別に行われます。

注意: この統合CTを使用する場合は、次の制約が適用されます。

- ターゲット表演算子のロード・タイプのプロパティは、INSERT_UPDATEまたはUPDATE_INSERTに設定する必要があります。

- ターゲット表演算子には一意キーまたは主キーを定義する必要があります。

ICT_SQL_TO_FILE_APPEND

統合CT

SQL準拠のステージング領域からのターゲット・ファイルにデータを置換モードで統合します。

ICT_SQL_TO_SQL_APPEND

統合CT

ターゲットとは異なるステージング領域を使用できます。SQL準拠のステージング領域から、SQL準拠のターゲット表にデータを置換モードで統合します。

CCT_Oracle

コントロールCT

Oracle表で定義された制約に対するデータ整合性をチェックします。動的に作成されたエラー表の無効レコードは拒否します。静的制御およびフロー制御に使用できます。

CCT_SQL

コントロールCT

SQL準拠データベースで定義された制約に対するデータ整合性をチェックします。

動的に作成されたエラー表の無効レコードは拒否します。静的制御およびフロー制御に使用できます。

JCT_DB2_UDB_CONSISTENT

CDC CT

トリガーを使用して、IBM DB2 UDB表の一貫性のある変更データ・キャプチャに必要なインフラストラクチャを作成します。

JCT_DB2_UDB_SIMPLE

CDC CT

トリガーを使用して、IBM DB2 UDB表の単純な変更データ・キャプチャに必要なインフラストラクチャを作成します。

JCT_MSSQL_CONSISTENT

CDC CT

トリガーを使用して、Microsoft SQL Server表の一貫した仕訳用の仕訳インフラストラクチャを作成します。

Microsoft SQL Serverの一貫した変更データ・キャプチャを有効化します。

JCT_MSSQL_SIMPLE

CDC CT

トリガーを使用して、Microsoft SQL Server表の単純仕訳用の仕訳インフラストラクチャを作成します。

Microsoft SQL Serverの単純変更データ・キャプチャを有効化します。

JCT_ORACLE_10G_CONSISTEN_MINER

CDC CT

Oracle表の一貫した変更データ・キャプチャを有効化します。Oracle 10g表の一貫仕訳用の仕訳インフラストラクチャを作成します。変更済データはOracle 10g LogMiner固有のユーティリティによってキャプチャされます。

JCT_ORACLE_11G_CONSISTEN_MINER

CDC CT

Oracle表の一貫した変更データ・キャプチャを有効化します。Oracle 11g表の一貫仕訳用の仕訳インフラストラクチャを作成します。変更済データはOracle 11g LogMiner固有のユーティリティによってキャプチャされます。

JCT_ORACLE_9I_CONSISTENT_MINER

CDC CT

Oracle表の一貫した変更データ・キャプチャを有効化します。Oracle 9i表の一貫仕訳用の仕訳インフラストラクチャを作成します。変更済データはOracle 9i LogMiner固有のユーティリティによってキャプチャされます。

JCT_ORACLE_CONSISTENT

CDC CT

Oracle表の一貫した変更データ・キャプチャを有効化します。トリガーを使用して、Oracle表の一貫した変更データ・キャプチャ用の仕訳インフラストラクチャを作成します。

JCT_ORACLE_CONSISTENT_UPD_DATE

CDC CT

Oracle表の一貫した変更データ・キャプチャを有効化します。最終更新日を示すソース表列を使用して、Oracle表の一貫した変更データ・キャプチャのインフラストラクチャを作成します。

JCT_ORACLE_SIMPLE

CDC CT

Oracle表の単純変更データ・キャプチャを有効化します。トリガーを使用して、Oracle表の単純変更データ・キャプチャ用の仕訳インフラストラクチャを作成します。

特定の事前作成されたコード・テンプレートを使用するの制限

- ICT_ORACLE_INCR_UPD_MERGEを使用する場合、順序はサポートされていません。

- マッピングでICT_SQL_CONTROL_APPENDを使用する場合、このCTに関連付けられたORDER BY句は機能しません。このCTを含むCTマッピングを実行中は、エラー・メッセージは表示されません。ただし、行はORDER BYプロパティで指定された順序にはなりません。

- 増分更新統合CTを使用する場合、ターゲット表演算子のロード・タイプのプロパティは、INSERT_UPDATEまたはUPDATE_INSERTに設定する必要があります。また、ターゲット表演算子には、一意キーまたは主キーを定義する必要があります。

- ICT_SQL_TO_SQL_APPENDでは、2つの資格証明(ロケーションに定義されたソース・スキーマの資格証明とターゲット・スキーマの資格証明)を使用してロードされます。この結果、権限の問題を生じることなく、マップを正しく実行できます。

- ICT_SQL_CONTROL_APPENDでは、1つの資格証明(ターゲット・スキーマに接続するための資格証明)を使用してロードされます。つまり、セキュリティ動作は既存のOracle Warehouse Builder PL/SQLマッピングと似ています。その結果、ターゲット・スキーマにソース・スキーマへアクセスする権限が付与されていない場合は、「権限不十分」エラーがレポートされます。
一般的に、KMで「複数接続」プロパティがtrueに設定されたOracle Data Integrator Knowledge Modules(KM)は、上で説明した最初のカテゴリに属します。詳細は、Oracle Data Integratorのドキュメントを参照してください。

OracleターゲットCT実行ユニットでのみサポートされているマッピング演算子

特定の変換演算子はOracle Databaseで提供されている機能を利用するように設計されています。この機能はその他の異機種データベースでは使用できません。したがって、これらの演算子を含む実行ユニットをロードCTまたは統合CTに直接割り当てることはできません。これらの演算子は、OracleターゲットCTが割り当てられている実行ユニットに演算子を追加する場合のみサポートされます。

これらの演算子を含む実行ユニットが統合CTまたはロードCTに関連付けられている場合に、CTマッピングで直接使用できない演算子のリストは、次のとおりです。

- Anydataキャスト

- オブジェクトの構成

- キューブ

- ディメンション

- オブジェクトの拡張

- LCRキャスト

- LCRスプリッタ

- 検索

- 入力パラメータのマッピング

- 出力パラメータのマッピング

- Match-Merge

- 名前とアドレス

- ピボット

- マッピング後プロセス

- マッピング前プロセス

- キュー

- 集合演算

- ソーター

- スプリッタ

- テーブル・ファンクション

- アンピボット

- 可変長配列イテレータ

コード・テンプレート・マッピングでの制限マッピング演算子の使用

OracleターゲットCTに関連付けられている実行ユニットを使用すると、CTマッピングで制限マッピング演算子を使用できます。これらの演算子を含む実行ユニットがOracleターゲットCTに関連付けられている場合は、「OracleターゲットCT実行ユニットでのみサポートされているマッピング演算子」にリストされている演算子を実行ユニットに使用できます。OracleターゲットCTの使用によってサポートされているパワフルな変換機能に加え、ロード・コード・テンプレートを使用するフレキシブルな統合機能を利用するハイブリッド・マッピングを構成できます。

CTマッピングを使用して実行できない特定の演算は、PL/SQLパッケージとして配布されている従来のOracle Warehouse Builderマッピングを使用して実行できます。そのようなマッピングは個別実行ユニットとして実行できます。

コード・テンプレート・マッピングを使用したETLの実行手順

CTマッピングを使用したETLの実行手順は、次のとおりです。

1. (オプション)テンプレート・マッピング・モジュールの作成
マッピング・モジュールを作成していない場合は、マップを含めるマッピング・モジュールを作成します。

2. コード・テンプレートを使用したマッピングの作成

3. 実行ユニットの定義

注意:
実行ユニットを定義したら、次の各項で説明するCTマッピング・パラメータをオプションで構成できます。

- 「マッピング構成のリファレンス」

- 「コード・テンプレート(CT)マッピングの作成」

4. コントロール・センター・エージェント(CCA)の起動

5. コード・テンプレート・マッピングの検証

6. コード・テンプレート・マッピングの生成

7. コード・テンプレート・マッピングの配布

8. コード・テンプレート・マッピングの実行

CTマッピングを実行すると、「コード・テンプレート・マッピングの実行結果の表示」で説明するように実行結果を表示できます。

「コード・テンプレート・マッピングの実行の監査」で説明するようにCTマッピング実行中に発生したエラーも監査できます。

テンプレート・マッピング・モジュールの作成

テンプレート・マッピング・モジュールは、コード・テンプレートを使用するマッピングのコンテナです。コード・テンプレートを含むマッピングは、デザイン・センターのテンプレート・マッピング・ノードからのみ作成できます。Oracle Warehouse Builderの他のモジュールと同じように、各テンプレート・マッピング・モジュールは、このモジュールのマッピングをどこに配布するかを指定するロケーションに関連付けられています。コード・テンプレートを含むマッピングは、Oracle Warehouse Builderのコントロール・センター・エージェントに配布されます。

テンプレート・マッピング・モジュールの作成手順:

1. プロジェクト・ナビゲータで、テンプレート・マッピング・モジュールを作成するプロジェクト・ノードを開きます。

2. 「テンプレート・マッピング」ノードを右クリックして「新規マッピング・モジュール」を選択します。
モジュールの作成ウィザードが表示されます。

3. ようこそページで「次へ」をクリックします。

4. 名前と説明ページで、次のフィールドに値を入力し、 「次へ」をクリックします。
名前: テンプレート・マッピング・モジュール名を入力します。この名前は、Oracle Warehouse Builderのネーミング規則に準拠する必要があります。

説明: テンプレート・マッピング・モジュールの説明(オプション)を入力します。

モジュール・ステータスの選択: 開発、品質保証、生産のステータスを選択します。

5. 接続情報ページで、CTマッピングの配布先のコントロール・センター・エージェント(CCA)をポイントするロケーションの詳細を指定します。「次へ」をクリックします。
コントロール・センター・エージェントに対応するロケーションを前に作成している場合は、「ロケーション」リストを使用してこのロケーションを選択します。Oracle Warehouse Builderによって作成されるCCA、DEFAULT_AGENTに対応するデフォルト・ロケーションを使用することもできます。

ロケーションを作成するには、コントロール・センター・エージェントの次の詳細を入力します。

ユーザー名: CCAへの配布に使用するOC4Jユーザーのユーザー名。Oracle Warehouse Builderと一緒にインストールされるコントロール・センター・エージェントに配布する場合は、ユーザー名としてoc4jadminを使用します。

パスワード: CCAへの配布に使用するOC4Jユーザーのパスワード。

ホスト: コントロール・センター・エージェントがインストールされているコンピュータのホスト名。

ポート: OC4Jサーバーが使用するRMIポートの値。

ポート・タイプ: Oracle Warehouse Builderと一緒にインストールされているCCAと関連づけられたエージェント・ロケーションに配布する場合は、ポート・タイプとしてRMIを使用します。

ポート・タイプとして選択できるその他のオプションは、OPMNおよびRMISです。

インスタンス: CCAに対応するOC4Jインスタンス名。Oracle Warehouse BuilderにインストールされたデフォルトCCAに配布する場合、このフィールドは空白のままにします。

アプリケーション名: CTマッピングに配布する必要があるアプリケーション名。Oracle Warehouse BuilderにインストールされたデフォルトCCAに配布する場合、アプリケーション名にjrtを使用します。

6. サマリー・ページで、ウィザードに入力した情報を確認します。「終了」をクリックし、テンプレート・マッピング・モジュールを作成します。入力した値を変更するには、「戻る」をクリックします。

テンプレート・マッピング・モジュールが作成され、プロジェクトのナビゲータ・ツリーに追加します。

コード・テンプレートを使用したマッピングの作成

環境のコード・テンプレートで定義された機能を使用するには、コード・テンプレート(CT)マッピングを作成します。CTマッピングを作成するプロセスは、実行ユニットを定義してコード・テンプレートに関連付ける追加手順を除き、通常のPL/SQLマッピングと似ています。

各CTマッピングはマッピング・モジュールに属する必要があります。

注意:
結合を2つ以上の表で実行する場合は、CTマッピングをジョイナ入力ロールと一緒に使用しないでください。

CTマッピングの作成手順:

1. プロジェクト・ナビゲータで、プロジェクト・ノードを開いてから、CTマッピングを作成するテンプレート・マッピング・ノードを開きます。

2. CTマッピングを作成するマッピング・モジュールを右クリックし、「新規マッピング」を選択します。
「マッピングの作成」ダイアログ・ボックスが表示されます。

3. CTマッピングの名前と説明(オプション)を入力し、「OK」をクリックします。
CTマッピングのマッピング・エディタが表示されます。

4. 「論理ビュー」タブで、 必要な演算子を追加し、必要なデータ変換を実行するデータ・フローを設定します。
演算子の追加および演算子間のデータ・フローの設定方法の詳細は、第5章「PL/SQLマッピングの作成」を参照してください。

実行ユニットの定義

マッピング・エディタの実行ビュー・タブを使用すると、実行ユニットを定義できます。マッピング実行を小さな関連単位に分割し、マッピングの一部をコード・テンプレートに関連付ける実行ユニットを使用します。Oracle Warehouse Builderでは、定義する各実行ユニットのコードが個別に生成されます。

マッピング・エディタの「実行ビュー」タブでは、論理ビューからの演算子とデータ・フローがアイコン化された形式で表示されます。実行ビューで演算子を編集またはデータ・フローを作成することはできません。これらの演算は論理ビューを使用して実行する必要があります。「実行ユニットの作成」の定義に従って、実行ユニットを作成します。

注意:
コード・テンプレートを実行ユニットに明示的に割り当てないと、Oracle Warehouse Builderによってデフォルト・コード・テンプレートが実行ユニットに割り当てられます。デフォルト・コード・テンプレートの詳細は、「実行ユニットのデフォルト・コード・テンプレート」を参照してください。

実行ビュー・メニューおよびツールバー

「実行ビュー」を選択すると、デザイン・センターに「実行および実行ツールバー」という追加メニューが表示されます。これらのツールバーは、次に使用します。

- 実行ユニットの作成および削除

- デフォルト実行ユニットの定義

- コード・テンプレートと実行ユニットの関連付け

実行ユニットの作成

特定のコード・テンプレートでコード生成と実行を制御する演算子グループの実行ユニットを作成します。

実行ユニットの作成手順:

1. マッピングの「実行ビュー」で、実行ユニットにグループ化する演算子を選択します。
演算子の周りに四角形を描いてグループ化します。最初の演算子の上部でマウス・ボタンを押しながら必要な演算子を囲むようにマウスをドラッグしてから、マウス・ボタンを放します。または、[Ctrl]キーを押しながら、実行ユニットに含めるすべての演算子のヘッダーをクリックします。

2. 「実行」メニューから「実行ユニットの作成」を選択します。または、実行ビュー・ツールバーの「実行ユニットの作成」をクリックします。
Oracle Warehouse Builderによって選択した演算子の実行ユニットが作成され、デフォルト名が割り当てられます。実行ユニットの名前を変更するには、名前を右クリックし、「詳細を開く」を選択します。「実行ユニットの編集」ダイアログ・ボックスに、実行ユニットの新しい名前を入力します。

コード・テンプレートと実行ユニットの関連付け手順:

1. コード・テンプレート・パネルが表示されない場合は、表示メニューから「コード・テンプレート」を選択します。
「ログ」ウィンドウ・パネルに、「コード・テンプレート」タブが表示されます。

2. マッピング・エディタの「実行ビュー」タブで、コード・テンプレートに関連付ける実行ユニットを選択します。

関連項目:
「Oracle Warehouse Builderによる実行ユニットと関連付けできるコード・テンプレートの表示方法」

3. 「コード・テンプレート」タブで、選択した実行ユニットを関連付ける必要があるコード・テンプレートをリストから選択します。
リストに表示されるコード・テンプレートは、選択した実行ユニットの演算子のソース・プラットフォームおよびターゲット・プラットフォームによって異なります。実行ユニットの本質にも依存します。たとえば、ロードCTをデータ・オブジェクトにバインドされた演算子を含まない実行ユニットと関連付けできます。統合CTをリポジトリ・データ・オブジェクトにバインドされたターゲット演算子を1つ含む実行ユニットと関連付けできます。

実行ユニットへの演算子の追加

実行ユニットへの演算子の追加手順:

1. マッピング・エディタの「実行ビュー」で、実行ユニットと実行ユニットに追加する演算子をどちらも選択します。
オブジェクトの選択時に、[Ctrl]キーを押し続けると複数のオブジェクトを選択できます。

2. 「実行」メニューから「実行ユニットへの演算子の追加」を選択します。または、実行ビュー・ツールバーの「実行ユニットへの演算子の追加」をクリックします。

複数の実行ユニットへの演算子の追加

演算子は、ある実行ユニットのターゲットと別の実行ユニットのソースなど、複数の実行ユニットに表示される場合があります。

たとえば、実行ユニットCUST_EXEC_UNITに表演算子cust_tabがあるとします。cust_tabとEX_UNIT_2の両方を選択してから、「演算子を実行ユニットに追加」を選択し、cust_tabを別の実行ユニットEX_UNIT_2(既存の実行ユニット)にコピーできます。cust_tabのコピーがEX_UNIT_2に追加されます。

実行ユニットCUST_EXEC_UNITのターゲットである表演算子cust_tabを検討します。cust_tabを選択してから「実行ユニットの作成」をクリックし、cust_tabのコピーを含む実行ユニットを作成します。このコピーのラベルは<cust_tab>になります。この場合、演算子が複数の実行ユニットで使用されることを視覚的に示すために山カッコが使用されます。

実行ユニットからの演算子の削除

実行ユニットからの演算子の削除手順:

1. マッピング・エディタの「実行ビュー」で、実行ユニットから削除する演算子(複数も可)を選択します。

2. 「実行」メニューから「実行ユニットからの演算子の削除」を選択します。または、マッピング・エディタ・ツールバーの「実行ユニットからの演算子の削除」をクリックします。
選択した演算子が実行ユニットから削除され、実行ビューに個別に表示されます。

注意:
実行ユニットに表示される演算子が1つのみの場合は、実行ユニットから演算子を削除することはできません。

実行ユニットの削除

既存の実行ユニットを削除すると、実行ユニットの一部であった演算子は実行ユニットには関連付けされません。これらの演算子は、必要に応じて他の実行ユニットに関連付ける必要があります。

実行ユニットを削除する場合、マッピングのために更新したコードを再生成して配布するまで、変更が反映されません。

実行ユニットの削除手順:

1. マッピング・エディタの「実行ビュー」で、削除する実行ユニットを選択します。

2. 「実行」メニューから「実行ユニットの削除」を選択します。または、実行ビュー・ツールバーの「実行ユニットの削除」をクリックします。
実行ユニットが削除されます。この実行ユニットに含まれていた演算子は、実行ユニット・グループ別ではなく個別に表示されます。

デフォルト実行ユニットの作成

実行メニューの「デフォルト実行ユニット」をクリック、または「デフォルト実行ユニット」を選択して、実行ユニットのデフォルト・セットを作成できます。Oracle Warehouse Builderでは、最初にすべての既存の実行ユニットが削除されてから、新しい実行ユニットセットが作成されます。これにより、すべての演算子が一部の実行ユニットに割り当てられます。

演算子はロケーションなどの要因に基づき実行ユニットに割り当てられます。異なるロケーションにある演算子は、異なる実行ユニットに割り当てられます。すべての演算子が同じロケーションにある場合は、デフォルトはすべての演算子を含む1つの実行ユニットで構成できます。

デフォルト実行ユニットの名前は、実行ユニットで演算子に関連付けられたロケーションがわかっているかどうかによって異なります。実行ユニットのロケーション(実行ユニット内の演算子に関連付けられたロケーション)がわかっている場合、デフォルトの実行ユニットの名前は、ロケーション名の末尾に"_EU"を付けて設定されます。実行ユニットに関連付けられたロケーションがわからない場合、実行ユニット名は「MAP_EX_UNIT_」で始まります。

実行ユニットのデフォルト・コード・テンプレート

コード・テンプレートを実行ユニットに明示的に関連付けていない場合は、コード生成中にOracle Warehouse Builderによってデフォルト・コード・テンプレートが割り当てられます。デフォルト・コード・テンプレートはターゲット演算子のプラットフォームによって異なります。各プラットフォームにデフォルト・コード・テンプレートを定義できます。

たとえば、Oracle Databaseプラットフォーム用のデフォルトのロードCT、統合CTおよびOracleターゲットCTを定義できます。Oracle Databaseオブジェクトを参照する演算子を含む実行ユニットにコード・テンプレートを割り当てないと、Oracle Warehouse Builderコード・ジェネレータによって次の手順が実行されます。

- 特定の実行ユニットに使用する必要があるコード・テンプレートのタイプの識別

- 実行ユニットが関連付けられたロケーションのプラットフォームを使用して実行ユニットに割り当てる必要があるデフォルト・コード・テンプレートの取得

- 実行ユニットへの取得済コード・テンプレートの割当て

注意:
OMB*Plusのみを使用するプラットフォームにデフォルト・コード・テンプレートを定義できます。OMB*Plusの詳細は、『Oracle Warehouse Builder APIおよびスクリプト・リファレンス』を参照してください。

特定のプラットフォームにデフォルト・コード・テンプレートが定義されていない場合は、使用可能なコード・テンプレートから1つのコード・テンプレートが選択されて、実行ユニットに割り当てられます。次に、プラットフォーム定義が更新され、選択されたコード・テンプレートが、そのプラットフォームのデフォルト・コード・テンプレート定義として割り当てられます。

デフォルト・コード・テンプレートを実行ユニットに割り当てることができるのは、コード・テンプレートを含むCTマッピングとデフォルト・コード・テンプレートが同じプロジェクトに属する場合のみです。

Oracle Warehouse Builderによる実行ユニットと関連付けできるコード・テンプレートの表示方法

CTと実行ユニットを関連付けると、UIリストに表示されるCTはソースおよびターゲット・プラットフォーム別にフィルタ処理されます。たとえば、ソース表を含む実行ユニットがOracleデータベースの場合、この実行ユニットに選択できるCTはOracleソースに使用できるCTです。

特定の単純マッピングでは、ソースおよびターゲット演算子を含む実行ユニットを1つ作成できます。この場合、使用可能な統合CTのリストは、次によって制限されます。

- ソース・プラットフォーム

- プラットフォーム

- CTの複数接続プロパティの値セット

コントロール・センター・エージェント(CCA)の起動

コントロール・センター・エージェントとは、コード・テンプレートをOC4Jサーバーで実行するエージェントです。コントロール・センター・エージェントを起動してから、コード・テンプレートまたはCTマッピングを配布する必要があります。

コントロール・センター・エージェント(CCA)の起動

Windowsの場合、コントロール・センター・エージェントを起動するには、OWB_HOME/owb/bin/win32ディレクトリにあるccastart.batスクリプトを実行します。

UNIXの場合は、OWB_HOME/owb/bin/unixディレクトリにあるccastartファイルを実行してコントロール・センター・エージェントを起動します。

注意:
複数のCCAインスタンスを起動するためにccastart.batまたはccastartを複数回実行することはお薦めしません。複数のCCAインスタンスを実行してから、アプリケーション・サーバーにCCAをインストールするための必要なインストール手順を使用して、アプリケーション・サーバーに個別にCCAインスタンスをインストールする必要があります。

コントロール・センター・エージェント(CCA)の停止

Windowsの場合、コントロール・センター・エージェントを停止するには、OWB_HOME/owb/bin/win32ディレクトリにあるccashut.batスクリプトを実行します。このスクリプトは入力パラメータとしてoc4jadminユーザーのパスワードを取ります。

UNIXの場合は、OWB_HOME/owb/bin/unixディレクトリにあるccashutファイルを実行してコントロール・センター・エージェントを停止します。このスクリプトは入力パラメータとしてoc4jadminユーザーのパスワードを取ります。

コード・テンプレート・マッピングの検証

コード・テンプレート(CT)マッピングの検証では、メタデータ定義および構成パラメータが確認され、Oracle Warehouse Builderによって定義されたルールに応じてこれらが有効であるかどうかが確認されます。Oracle Warehouse Builderは検証の一部として、実行ユニットへの演算子の割当てを確認します。検証では、CTマッピングに定義済のETLタスク実行のためのコードを正しく生成できるかどうかも確認されます。

検証では、Oracle Warehouse Builderによって次のルールがチェックされます。

- 演算子は異なる実行ユニットの2つ以上のダウンストリーム演算子に接続することはできません。

- 実行ユニットにはOracle以外のソースまたはターゲット演算子およびその他の制限マッピング演算子を含めることはできません。

- OracleターゲットCTのみを制限演算子で実行ユニットに割り当てることができます。

- 複数の受信接続を含む変換またはデータ・ターゲット演算子は、複数の実行ユニットに存在することはできません。

- 実行ユニットには複数の実行ユニットへの送信接続を含めることはできません。

コード・テンプレート・マッピングの生成

コード・テンプレート(CT)マッピングの生成では、Oracle Warehouse BuilderワークスペースでETLタスクの実行に必要なスクリプトが作成されます。CTマッピングの場合は、Tclスクリプトが生成されます。

CTマッピングを生成すると、Oracle Warehouse Builderでは最初にそれが検証されます。検証が正常に終了すると、CTマッピングが生成されます。生成により、.earファイルの一部である次のスクリプトが生成されます。

- 変数スクリプト、var.tcl
このスクリプトには、コード・テンプレート・スクリプトの置換メソッド・コールで置き換える必要のある変数が含まれます。スクリプトにより、すべての定義済マッピング変数が名前から値へのマップを含む1つのTcl変数に収集されます。

このスクリプトには、マッピングによって記述されるすべてのメタデータが格納されます。このメタデータは、(置換メソッドを介して)コード・テンプレートによって使用されます。CTマッピング実行時には、コード・テンプレートの置換メソッドはコントロール・センター・エージェントで実行され、その戻り値は変数スクリプト内の適切なメタデータから計算されます。メタデータ変数名は、置換メソッドで定義された名前またはパターンと直接は一致しません。この変換は置換メソッドによって実行されます。

- ドライバ・スクリプト、driver.tcl
ドライバ・スクリプトは最初に変数スクリプトを呼出し、メタデータ変数値をコントロール・センター・エージェントのJaclインタプリタにロードします。次に、各実行ユニットに対して、その実行ユニットに関連付けられたコード・テンプレートのメイン・メソッドを呼出します。

コード・テンプレートの実行順序は、実行ビューのマッピングのトポロジから自動的に導出されます。

生成中にエラーが発生する場合は、マッピング・エディタを使用してエラーを修正してからCTマッピングを再生成します。

生成結果の表示

生成結果はログ・ウィンドウの結果タブに表示されます。結果タブには生成が成功したかどうかを示す親ノードが表示されます。このノードの下にあるのは、生成したCTマッピングと同じ名前を使用するものです。このノードには、検証ノードの下に検証結果とスクリプト・ノードの下に生成済スクリプトが含まれます。表示する結果が含まれるノードを開きます。

生成済コードの表示

生成結果の下のスクリプトには、CTマッピングを作成するために生成されたコードを含むvar.tclおよびdriver.tclスクリプトが含まれます。

生成済コードを表示するには、スクリプト・ノードを開きます。var.tclまたはdriver.tclを右クリックし、「スクリプトの表示」をクリックします。または、.tclファイルをダブルクリックし、マッピング・エディタの新規タブにコンテンツを表示します。

注意:
あるCTマッピング用の生成済コードが含まれるタブがマッピング・エディタに表示されている場合、このタブを閉じてから別のCTマッピング用の生成済コードを表示してください。前に生成されたコードを含むタブを閉じないと、生成済コードに対して結果が競合する場合があります。

CTマッピングの生成済コード・サンプル

次はコード・テンプレートおよび置換を示すその関連メタデータ・スクリプトのコード例です。次のコード・ブロックは一時フロー表を作成するコード・テンプレートのプロシージャ型手順を示したものです。

proc 3_CREATE_FLOW_TABLE_I__main {  }
{
# Input Flow Parameters
variable SRC_LOCATION
variable TGT_LOCATION
variable KM_PARAMS
variable LOG_LEVEL
variable INSERT
variable UPDATE
variable COMMIT
variable SYNC_JRN_DELETE
variable FLOW_CONTROL
variable RECYCLE_ERRORS
variable STATIC_CONTROL
variable TRUNCATE
variable DELETE_ALL
variable CREATE_TARG_TABLE
variable FLOW_TABLE_OPTIONS
variable ANALYZE_TARGET
variable OPTIMIZER_HINT

# Output parameters
variable EXIT_CODE
variable RETURN_VALUE {}

# Global variables
global errorInfo
global g_iud

set g_iud ""
set tgt_stmt [process "create table <%=snpRef.getTable(\"L\", \"INT_NAME\", \"W\")%>\n(\n<%=snpRef.getColList(\"\", \"\\t\[COL_NAME\]\\t\[DEST_WRI_DT\] NULL\", \",\\n\", \"\", \"\")%>,\n\tIND_UPDATE \tchar(1)\n)\n<%=snpRef.getUserExit(\"FLOW_TABLE_OPTIONS\")%>"]
puts $tgt_stmt
execjdbc $tgt_stmt "TGT_AC" "$TGT_LOCATION" "" "true" "false" "false"
}

ターゲットのSQL文である変数tgt_stmtには実際のSQL文が割り当てられ、このSQL文はexecjdbcプロシージャ・コールを使用して実行されていることに注意してください。execjdbc TCLプロシージャは、JDBCを介して文を実行するJavaコールを実行します。ターゲット文は、processプロシージャによって生成される文字列です。<%...%>デリミタには、必要なコンポーネントをSQL文字列に置き換えるための特別な処理が必要です。snpRefタグは、置換メソッド・コールアウトの接頭辞です。snpRef.getTableは、実際の表名によって置き換えられます。snpRef.getColListは、DMLに関与する表列のリストを取得するための別のユニバーサル・メソッドです。snpRefに加え、odiRefがサポートされます(Oracle Data Integrator 10.2と同様)。

置換メソッド(snpRef)・コールは、メタデータ・スクリプトの変数から関連データを抽出するOracle Warehouse Builder TCLモジュールによって実行されます。次は、表名と列リストを示すメタデータ・スクリプト・セクションの例です。

set M1_params {
{CKM_CALL ""}
{COLUMN_GENERIC_DATATYPE "NUMERIC VARCHAR"}
{COLUMN_LIST "EMPLOYEES.EMPLOYEE_ID EMPLOYEES.LAST_NAME"}
{COLUMN_LIST_ALIAS "EMPLOYEE_ID LAST_NAME"}
{COLUMN_LIST_DATATYPE "NUMBER(6) VARCHAR2(25)"}
{EXECUTION_UNIT_NAME "EX_UNIT_2"}
{FROM_LIST "EMPLOYEES"}
{FROM_LIST_ALIAS "EMPLOYEES"}
{HAS_JRN "0"}
{INSERT_COLUMN_LIST "EMPID ENAME"}
{IS_DISTINCT "FALSE"}
{JOURNAL_IN_CURRENT_SCHEMA "false"}
{JOURNAL_IN_SOURCE_SCHEMA "false"}
{JOURNAL_IN_STAGING_AREA "false"}
{JRN_FILTER ""}
{JRN_METHOD "NONE"}
{JRN_TABLE "."}
{KM_NAME "KM_IKM_ORACLE_INCREMENTAL_UPD"}
{MAP_NAME "MAPPING_2"}
{SELECT_STATEMENT "SELECT EMPLOYEES.EMPLOYEE_ID EMPLOYEE_ID,
EMPLOYEES.LAST_NAME LAST_NAME
FROM
EMPLOYEES  EMPLOYEES"}
{SQL_STATEMENT "INSERT INTO TGT(EMPID, ENAME)
(SELECT EMPLOYEES.EMPLOYEE_ID EMPLOYEE_ID,EMPLOYEES.LAST_NAME LAST_NAME
FROM
EMPLOYEES  EMPLOYEES
)
;"}
{TARGET_COLUMN_DATATYPE "NUMBER(15) VARCHAR2(100)"}
{TARGET_COLUMN_LIST "EMPID ENAME"}
{TARGET_GENERIC_DATATYPE "NUMERIC VARCHAR"}
{TARGET_NAME "TGT"}
}

コード・テンプレート・マッピングの配布

コード・テンプレート(CT)マッピングを配布するには、コントロール・センター・マネージャを使用します。コントロール・センター・マネージャ・ツリーには、CTマッピングを含むマッピング・モジュールに関連付けられたエージェント・ロケーションにCTマッピングがリストされます。

CTマッピングを配布すると、生成されたスクリプトがCCAにコピーされます。

CTマッピングを配布する前に、すべてのコード・テンプレートが関連付けられていることを確認します。

コード・テンプレート・マッピングの配布手順:

1. デザイン・センターで、「ツール」メニューから「コントロール・センター・マネージャ」を選択し、コントロール・センターを開きます。

2. コントロール・センターのナビゲーション・ツリーで、CTマッピングを作成したプロジェクト・ノードを開きます。次に、CTマッピングを含むマッピング・モジュールに関連付けられたロケーション・ノードを開きます。

3. CTマッピングを含むマッピング・モジュール・ノードを開きます。

4. 配布するCTマッピングを選択し、「オブジェクトの詳細」パネルで、配布アクションとして「作成」を選択します。

5. 「配布」をクリックします。

「コントロール・センター・ジョブ」パネルには配布済CTマッピングに対応する配布ジョブへの新規エントリが含まれます。配布が正常に終了すると、ステータスに成功メッセージが表示されます。配布に失敗した場合は、エラー・メッセージをダブルクリックするとエラーの詳細を表示できます。

コード・テンプレート・マッピングの実行

コード・テンプレート(CT)マッピングを実行する際は、コード・テンプレートを使用してCTマッピングで定義したデータ統合タスクを実行します。CTマッピングを実行する前に、「コード・テンプレート・マッピングの配布」の説明に従ってCTマッピングが配布済であることを確認してください。

CTマッピングを実行するには、コントロール・センター・マネージャで、CTマッピングを選択し、「開始」をクリックします。

または、プロジェクト・ナビゲータで、CTマッピングを右クリックし、「開始」を選択します。

CTマッピングが実行され、CTマッピングで定義されたETLが実行されます。

CCA(コントロール・センター・エージェント)と呼ばれるJ2EEランタイム環境によって、CTマッピングの実行が制御されます。CCAはランタイム・プラットフォームとは分離されています。CCAではTcl/Java(Jacl)スクリプトを実行して実行されます。実行はすべてCCAによって実行されるため、サービス指向アーキテクチャ(SOA)インタフェースとは別に呼出しできます。

注意:
実行に1日以上を要する複雑なCTマッピングを実行する際は、小さなジョブに分割することをお薦めします。OC4Jのデフォルトのトランザクション・タイムアウトは1日に設定されています。ジョブの実行時間が1日を超えると、その実行はタイムアウトとなり、予期しないエラーが発生する場合があります。

コード・テンプレート・マッピングの実行結果の表示

結果タブまたは情報の監査パネルを使用して、コード・テンプレート(CT)マッピングの実行結果を表示できます。

注意:
選択した行数はCTマッピング実行中は監査されません。したがって、実行結果には選択した行数は含まれません。

結果タブによる実行結果の表示

デザイン・センターを使用してCTマッピングを実行すると、「ログ」ウィンドウにCTマッピングの実行結果を表示する新しい「結果」タブが作成されます。結果タブには実行結果を含む実行というノードが含まれます。これには、CTマッピング実行中に挿入、更新および削除された行数の詳細が表示されます。

監査情報パネルによる実行結果の表示

監査情報パネルを使用すると、CTマッピング実行に関する追加詳細を表示できます。CTマッピングの前の実行結果を表示することもできます。監査情報パネルを表示するには、「表示」メニューから「監査情報」を選択します。

CTマッピングの配布先のロケーション・ノードを開き、このCTマッピングのジョブを表示します。CTマッピングは複数回実行できるため、各実行はジョブ別に表示されます。各ジョブには実行ユニットのノードが含まれ、手順のノードが順番に含まれます。挿入、更新、削除および選択済行数などの詳細が表示されます。文の実行タブを使用して、手順の実行に使用した文を表示します。

CTマッピングまたはチェンジ・データ・キャプチャ・プロセスの実行中、「監査情報」パネルには、実行中のジョブとその子ノード(実行ユニット(CTマッピングの場合のみ)、タスク、手順など)が表示されます。各ジョブのステータスも表示されます。ステータス(スキップ済、警告など)に基づき監査情報パネルでジョブのタスクをフィルタ処理することができます。デフォルトは「フィルタなし」に設定され、フィルタ処理は実行されません。ジョブはタイムスタンプ別にソートすることもできます。

メッセージ・タブを使用して、JDBCタスク実行中のJDBCドライバからの例外など、手順実行中にメッセージを表示します。

監査情報パネルの操作モード

監査情報パネルには、次のモードの監査情報を表示できます。

- プロジェクト・ナビゲータでCTマッピングを選択すると、そのCTマッピングの実行監査のみが表示されます。

- プロジェクト・ナビゲータでファンクションCTを選択すると、選択したCTの実行監査情報のみが表示されます。

- プロジェクト・ナビゲータでCDC表を含むモジュールを選択すると、CDCの監査情報が表示されます。

- ロケーション・ナビゲータでエージェントを選択すると、そのエージェントで実行したすべてのジョブの実行監査(CTマッピング、CDC実行およびCTファンクション配布を含む)が表示されます。

コード・テンプレート・マッピングでのコード・テンプレートのオプションの設定

CTマッピングでコード・テンプレートを使用する場合は、コード・テンプレートに設定できるオプションはコード・テンプレートのタイプによって異なります。

Oracle Warehouse Builderは、個々のプラットフォームまたはデータベースで機能するオプションについては認識しません。したがって、CTマッピングの検証および生成によって、設定するオプションをコード・テンプレートに関連付けられたプラットフォームまたはデータベースで使用できるかどうかが自動的に検証されるわけではありません。たとえば、TeradataではTRUNCATE文はサポートされていません。したがって、「切捨て」プロパティをTeradataソースまたはターゲットに関連付けられたコード・テンプレートに対してtrueに設定すると、CTマッピング実行中にエラーが発生します。

表7-3は、CTマッピングで各コード・テンプレートのタイプに設定できるオプションの説明です。コード・テンプレートに新しいオプションを追加し、CTマッピングで使用できます。

表7-3 コード・テンプレート・マッピングでのコード・テンプレートのオプション

オプション名

説明

コード・テンプレート・タイプに適用できるオプション

ICT後

ターゲットでICT統合完了後に作業表をクリーンアップする場合は、Trueに設定します。このプロパティを使用すると、マッピング完了後に作業表を保持するかどうかを決定できます(主にデバッグ用)。

ロードCT

コミット

統合タスク完了後にコミットを実行する必要があることを示す場合は、Trueに設定します。

統合CT

Create_targ_table

ターゲット表を作成する場合は、Trueに設定します。表が存在する場合は、Falseに設定します。

統合CT

Delete_all

ターゲット表からすべての行を削除する場合は、Trueに設定します。

統合CT

Delete_temporary_objects

統合CT実行中に作成された一時オブジェクトを削除する場合は、Trueに設定します(一時オブジェクトがある場合)。

統合CT

ロードCT

Drop_check_table

チェック表を削除する場合は、Trueに設定します。チェック表には見つかったエラーについての統計が含まれます。

コントロールCT

Drop_error_table

検出された特定のエラーに関する情報が含まれる表を削除する場合は、Trueに設定します。

コントロールCT

Flow_Control

フロー・コントロールをアクティブ化する場合は、Trueに設定します。フロー・コントロールではデータをターゲット表に挿入する前にエラーが検出されます。

統合CT

コントロールCT

Flow_table_options

フロー表作成用のオプションを指定します。

統合CT

挿入

コード・テンプレートがターゲット表に新規行を挿入できることを示す場合は、Trueに設定します。

統合CT

Deploy_files

CTが常に関連PL/SQLコードを配布するかどうかを示します。

Falseに設定すると、マッピングがデータベースに存在しないか、またはマッピングが配布済マッピングと異なるバージョンである場合は、PL/SQLコードのみが配布されます。前のコード・テンプレートがこのマッピングの表を作成中の場合は、Trueに設定します。通常は、Falseに設定する必要があります。

OracleターゲットCT

Log_level

コード・テンプレートが実行されたときのレポートのログ・レベルを示します。有効値は0から5で、5は最も詳細なロギングを示します。

統合CT

ロードCT

CDC CT

OracleターゲットCT

Static_control

統合後のコントロールに使用します。統合完了後のターゲット表のエラーを検出します。

統合CT

Target_location

PL/SQLマッピング配布先のOracleロケーションを表します。

OracleターゲットCT

切捨て

データをロードする前にターゲット表を切捨てる場合は、Trueに設定します。

統合CT

更新

コード・テンプレートがターゲット表の行を更新できることを示す場合は、Trueに設定します。

統合CT

CTマッピングでのバインド演算子のプロパティの設定

データ・オブジェクトにバインドされるCTマッピングでの演算子の場合、演算子属性にプロパティを設定できます。これらの属性は、CTマッピングを実行する際の置換メソッドで使用されます。

CTマッピングでは、データ・オブジェクトにバインドされる演算子には、次の追加プロパティがあります。これらの演算子は、プロパティ・インスペクタのコード・テンプレート・メタデータ・タグのノードにリストされます。

SCD

緩やかに変化するディメンジョンのコード・テンプレートを使用する際、属性が実行するロールを指定する場合はSCDプロパティを使用します。このプロパティに設定できる値は、次のとおりです。

- サロゲート・キー: ターゲット表の一意レコード識別子(主キー)として使用されます。この属性への順序をマップする必要があります。

- 自然キー: ソース表の一意レコード識別子(レコードのビジネス・キー)からマップされます。

- 現行レコード・フラグ: 現在アクティブなレコードの識別に使用します。現行レコードのフラグは1に設定され、旧レコードのフラグは0に設定されます。属性は数値である必要があり、自動的にロードされます(マップはしないでください)。

- 変更時に行を更新: この属性に新規値がロードされると、同じ自然キーのレコードの対応する列の値が上書きされます。

- 変更時に行を追加: この属性に新規値がロードされると、サロゲート・キーは新規で自然キーは同じ行がターゲット表に挿入されます。挿入されたレコードには現行とマーク付けされます。

- 開始タイムスタンプ: レコードが現行である期間の開始時間。新規行が挿入されると、新規レコードの開始タイムスタンプと旧レコードの終了タイムスタンプはSYSDATEに設定されます。

- 終了タイムスタンプ: レコードが現行である期間の終了時間。現行レコードの場合、通常、終了タイムスタンプ列の値は01-01-2400です。

UD1

UD1タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。

UD2

UD2タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。

UD3

UD3タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。

UD4

UD4タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。

UD5

UD5タグを使用してこの属性をコード・テンプレート・ファンクションに含める場合は、このプロパティをTrueに設定します。

UPD

このプロパティは、ICT_SQL_ INCR_UPDまたはICT_ORACLE_INCR_UPD_MERGEなどのコード・テンプレートの更新を使用するときに更新する列を制御します。

照合に使用する制約を指定するには、ターゲット演算子の制約による一致プロパティを使用します。UPDプロパティが設定されていない場合は、演算子の制約による一致キーが使用されます。

コード・テンプレート・マッピングの構成プロパティの設定

CTマッピングで使用する演算子に特定の構成プロパティを設定することができます。この項では、構成プロパティについて説明します。

ソース・ファイル演算子

CTマッピングに使用するフラット・ファイル演算子のソース・ファイル演算子の構成プロパティを設定できます。このプロパティでは、データ・ファイルが関連付けされるフラット・ファイル演算子が識別されます。

複数のフラット・ファイル演算子を含むCTマッピングの場合は、ソース・ファイル演算子プロパティを設定する必要があります。CTマッピングにフラット・ファイル演算子が1つのみ含まれる場合、このプロパティの設定はオプションです。

次の手順で、ソース・ファイル演算子の構成プロパティを設定します。

1. フラット・ファイル演算子を含むCTマッピングを右クリックし、「構成」を選択します。
CTマッピングの「構成」タブが表示されます。

2. SQL Loaderデータ・ファイル・プロパティの省略記号ボタンをクリックします。
「SQL Loaderデータ・ファイル」ダイアログ・ボックスが表示されます。

3. ダイアログ・ボックス左のファイル名を選択し、右にソース・ファイル演算子プロパティを設定します。

コード・テンプレート・マッピングの実行監査

デザイン・センターの「監査情報」パネルには、CTマッピング実行の一環として実行した各タスクの詳細情報が表示されます。この情報を使用して、CTマッピング実行中に発生したエラーを監査できます。

ただし、実行詳細を表示する監査情報パネルの場合は、「コード・テンプレート・マッピングを監査する際の前提条件」の説明に従って特定のプロパティを設定する必要があります。

図7-5は、CTマッピング実行用の監査情報パネルを示したものです。

図7-5 実行済タスクの詳細を表示した監査情報パネル

「図7-5 実行済タスクの詳細を表示した監査情報パネル」の説明

「監査情報」パネルには、CTマッピング実行の一環として実行される各手順が表示されます。各手順に表示された詳細には、タスク名、挿入、更新または削除済行数およびそのステータスが含まれます。

CTマッピング内の手順に関する詳細情報が表示されます。各手順のエラー・メッセージを表示できます(ある場合)。また、各タスクで実行された文も表示できます。各タスクを表すノードを開き、タスク実行の詳細を表示します。

監査情報パネルにはすべてのタスクがリストされるわけではありません。タスクの設定で監査が除外されている場合、タスクは表示されません。監査にコード・テンプレート・タスクを含める際の詳細は、「コード・テンプレート・マッピングを監査する際の前提条件」を参照してください。

たとえば、図7-5に示す監査情報パネルでは、CTマッピングにCREATE_TARGET_TABLE、TRUNCATE_TARGET_TABLE、DELETE_TARGET_TABLE、INSERT_NEW_ROWS、COMMITおよびPOST_INTEGRATION_CONTROLの各タスクが含まれます。INSERT_NEW_ROWSタスクの一環として実行された文は右のパネルに表示されます。タスク4は監査情報パネルにはリストされません。これは、このタスクの設定で監査から除外されているためです。

監査コード・テンプレート・マッピングの前提条件

Oracle Warehouse BuilderでCTマッピング実行の詳細情報を提供するには、次のプロパティを設定する必要があります。

- ログ監査レベル
コード・テンプレートの各タスクにはログ監査レベルというプロパティが含まれます。このプロパティには0から5の値を設定できます。値を0に設定すると、このタスクの詳細が監査に含まれていないことを示します。このプロパティの値を1から5に設定すると、このタスク実行の詳細が監査ログに含まれます。

- ログ・レベル
CTマッピングの各実行ユニットにはログ・レベルというプロパティが含まれます。このプロパティは実行ユニットに対して実行されたロギング・レベルを表します。このプロパティには0から5の値を設定できます。値を0に設定すると、この実行ユニットはログから除外されます。このプロパティの値を1から5に設定すると、この実行ユニットの実行ログに使用する詳細レベルを指定できます。

コード・テンプレート・マッピングの実行監査手順

1. プロジェクト・ナビゲータで、実行を監査する必要があるCTマッピングを選択します。

2. 「表示」メニューから、「監査情報」を選択します。
「ログ」ウィンドウに、「監査情報」パネルが表示されます。

3. CTマッピング実行ジョブを表すノードを開きます。
監査に含まれるCTマッピングに各タスクの個別ノードが表示されます。

4. タスク・ノードを開き、このタスクの一環として実行する手順のリストを表示します。

5. 特定の手順の一環として実行された文を表示するには、手順を選択してから、「実行された文」を選択します。
実行された文が右側に表示されます。

変更データ・キャプチャ(CDC)を実行するコード・テンプレート・マッピングの使用

標準的なデータ・ウェアハウス環境では、データをソース・システムから抽出し、変換してから、データ・ウェアハウスにロードします。ただし、ソース・システムのデータが変更されると、データ・ウェアハウスをこれらの変更で更新する必要があります。変更データ・キャプチャ(CDC)では、変更データのみが迅速に識別および処理され、この変更済データを使用できるようにします。Oracle Warehouse Builderを使用すると、CDC CTを使用してCDCを実行できます。

変更データ・キャプチャ(CDC)のタイプ

Oracle Warehouse Builderでは、次のタイプのCDCを実行できます。

- 一貫
一貫変更データ・キャプチャではキャプチャしたデータの一貫性が確保されます。たとえば、表ORDERとORDER_LINE(ORDER_LINEレコードには関連ORDERレコードが必要であるため、参照整合性制約付き)があります。ORDER_LINEの変更がキャプチャされると、関連ORDER変更もキャプチャされ、逆の場合もそうなります。

一貫性が保証された使用可能変更セットを一貫性ウィンドウと言います。複数の統合インタフェースをパッケージとして設計および順序付けして、このウィンドウ内の変更を正しい順序で処理する必要があります(ORDERの後でORDER_LINE)。一貫性のある変更データ・キャプチャはより強力ですが、設定はより困難です。データ変更をキャプチャ中に参照整合性制約を確認する必要がある場合は、この方法を使用します。パフォーマンス上の理由により、大勢のサブスクライバが必要な場合は、一貫性のある変更データ・キャプチャもお薦めします。

注意: 一貫セットおよび単純仕分けの両方を使用してモデル(または、モデル内のデータ・ストア)を仕分けすることはできません。

- 単純
単純変更データ・キャプチャを使用すると、1つ以上のデータ・ストアを仕分けできます。変更をキャプチャする際、各仕分データ・ストアは個別に処理されます。

この方法には、次の例に示すように制限があります。たとえば、ORDER表とORDER_LINE表の変更を処理する必要があるとします(ORDER_LINEレコードには関連ORDERレコードが必要であるため、参照整合性制約付き)。ORDER_LINEへの挿入がキャプチャされた場合、ORDERS内の関連付けられた新規レコードもまたキャプチャされているという保証はありません。関連付けられたORDERレコードを伴わずにORDER_LINEレコードを処理した場合、統合プロセスで参照の整合性違反が発生する可能性があります。

変更データ・キャプチャ・コマンド

一貫変更データ・キャプチャでは、「開始」、「削除」、「サブスクライブ」、「サブスクライブ解除」、「ウィンドウの拡張」、「サブスクライバのロック」、「サブスクライバのロック解除」および「データのパージ」の各モジュール・コマンドが使用されます。

単純変更データ・キャプチャには、モジュールおよび表に「開始」、「削除」、「サブスクライブ」および「サブスクライブ解除」の各コマンドが用意されています。「サブスクライバのロック」および「サブスクライバのロック解除」の各コマンドは使用可能ですが、使用されません。

開始

変更データ・キャプチャ・インフラストラクチャを設定します。

削除

変更データ・キャプチャ・インフラストラクチャを削除します。

サブスクライブ

この変更データ・キャプチャにサブスクライバを追加します。

サブスクライブ解除

この変更データ・キャプチャからサブスクライバを削除します。

ウィンドウ拡張

一貫性ウィンドウとは、参照整合性に違反することなく挿入/更新/削除できる一貫性セットのすべての表で使用可能な変更です。「ウィンドウの拡張」操作では、最後の「ウィンドウの拡張」操作以降キャプチャされた新規変更を反映するようにこのウィンドウが計算されます。

サブスクライバのロック

拡張ウィンドウはすべての一貫性セットに適用されますが、サブスクライバが変更を個別に使用します。サブスクライバのロック操作では、一貫性ウィンドウの変更のサブスクライバ固有のスナップショットが実行されます。このスナップショットには、サブスクライバが使用していない一貫性ウィンドウ内のすべての変更が含まれます。

サブスクライバのロック解除

サブスクライバに対するサブスクライバのロック操作中にロックされた変更の使用をコミットします。この操作はサブスクライバのすべての変更が処理されてからのみ処理する必要があります。

データのパージ

すべてのサブスクライバがサブスクライブしている変更を使用後もエントリはキャプチャ表に残るため、削除する必要があります。この削除はデータのパージ・コマンドによって実行されます。

例: コード・テンプレート使用による変更データ・キャプチャの実行

変更データ・キャプチャの実行シナリオ

ソース・スキーマSRCのORDERS表には、受注詳細が格納されます。この表のデータは、データ・ウェアハウスのターゲット・スキーマWH_TGTのWH_ORDERS表にロードされます。ORDERS表のデータは、受注ステータスまたはディスパッチ日が更新されると変更されます。データ・ウェアハウスのデータはソース・データの変更に基づき更新する必要があります。

変更データ・キャプチャはCDC CTを使用して設定でき、変更済データのみをデータ・ウェアハウスのターゲット表にロードできます。

CDC CTを使用した変更データ・キャプチャの実行手順

変更データ・キャプチャの実行手順は、次のとおりです。

1. 変更データ・キャプチャのオブジェクトの選択

2. 変更をロードするマッピングの作成

3. 変更データ・キャプチャ・ソリューションの配布

4. 変更データ・キャプチャ・プロセスの開始

5. 変更データ・キャプチャ・プロセスへのサブスクライバの追加

変更データ・キャプチャのオブジェクトの選択

コード・テンプレートを使用できるソースまたはターゲットの変更データ・キャプチャを実行できます。CDCの実行の最初の手順は、変更をキャプチャするオブジェクトの識別および選択です。

データ変更をキャプチャする必要があるオブジェクトの指定手順:

1. まだ作成していない場合は、モジュールを作成し、データ変更をキャプチャするソース・オブジェクトをインポートします。
この例では、ソース・スキーマSRCには変更をキャプチャするORDERS表が含まれます。ロケーションがSRCスキーマをポイントし、ORDERS表をこのモジュールにインポートするSRC_MODというOracleモジュールを作成します。

2. SRC_MODモジュールをダブルクリックし、「モジュールの編集」ダイアログ・ボックスを表示します。

3. 左のパネルの、「CDCコード・テンプレート」をクリックします。CDCコード・テンプレート・ページのコード・テンプレート・リストから、変更データ・キャプチャを実行するためにインポートしたコード・テンプレートを選択します。
この例では、PUBLIC_PROJECT/BUILT_IN_CT/JCT_ORACLE_SIMPLEを選択します。

4. 左のパネルの、「CDC表」をクリックします。CDC表ページで、ボタンを使用して変更を使用可能セクションから選択済セクションにキャプチャする必要がある表を移動します。
この例では、ORDERS表を使用可能リストから選択済リストに移動します。

これで、ORDERS表が変更データ・キャプチャに設定されました。

変更をロードするマッピングの作成

次の手順で、変更をロードするCTマッピングを作成します。

1. まだの場合は、変更データ・キャプチャを実行するCTマッピングを含めるテンプレート・マッピング・モジュールを作成します。
このテンプレート・マッピング・モジュールのロケーションがCTマッピングを配布する必要があるエージェントに関連付けられていることを確認します。

この例では、CDC_MAP_MODというテンプレート・マッピング・モジュールはDEFAULT_AGENTのロケーションに関連付けられます。このロケーションは、Oracle Warehouse BuilderとともにインストールされているOC4Jサーバーを表します。

2. 手順1で作成したテンプレート・マッピング・モジュールに、CDCを実行するETLロジックを含むCTマッピングを作成します。
この例で作成したマッピングはCDC_LOAD_ORDERS_MAPです。

3. 変更をキャプチャするソース・オブジェクトをドラッグ・アンド・ドロップします。
この例では、ORDERS表をSRC_MODモジュールからマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

4. ソース・オブジェクトを表す演算子を選択します。プロパティ・インスペクタの変更データ・キャプチャ・ノードで、「有効化」を選択します。
ORDERS表には、JRN_SUBSCRIBER、JRN_FLAGおよびJRN_DATEの3つの追加属性が含まれます。

5. プロパティ・インスペクタの変更データ・キャプチャ・ノードに、変更データ・キャプチャ・フィルタ・プロパティを設定し、特定のサブズクライバの変更済データの選択に使用する条件を定義します。

6. 変更済データをキャンバスに格納する表をドラッグ・アンド・ドロップします。
この例では、SRC_MODモジュールのORDERS_CHANGE表にORDERS表の変更が格納されます。

7. 変更をキャプチャする属性を、ソース表から変更済データを格納するターゲット表の対応する属性にマップします。
この例では、order_Id、order_status、order_modeおよびJRN_DATEの各属性を、ORDERS表からORDERS_CHANGE表のorder_id、order_status、order_modeおよびchange_dateの各属性にマップします。

8. CTマッピングの「実行ビュー」で、コード・テンプレートと関連付ける実行ユニットを作成します。
この例では、ORDERSおよびORDERS_CHANGE演算子を選択し、実行ビュー・ツールバーの「実行ユニットの作成」 をクリックします。

または、ORDERSおよびORDERS_CHANGEを選択し、実行メニューから「実行ユニットの作成」を選択します。

9. コード・テンプレート・パネルがログ・ウィンドウに表示されない場合は、表示メニューから「コード・テンプレート」を選択します。

10. 「コード・テンプレート」パネルの「統合/ロード・コード・テンプレート」タブを選択します。

11. EX_UNIT1フィールドの「コード・テンプレート」で、使用するコード・テンプレートを選択します。
この例では、ETLの実行に使用するコード・テンプレートとしてJCT_ORACLE_SIMPLEを選択します。

12. マッピングを検証し、エラーがある場合は修正します。

変更データ・キャプチャ・ソリューションの配布

変更データ・キャプチャの表を設定し、ソース表から変更をロードするCTマッピングを作成したら、次の手順で変更データ・キャプチャ・ソリューションを配布します。

1. 起動していない場合は、「コントロール・センター・エージェント(CCA)の起動」の説明に従って、コントロール・センター・エージェントを起動します。

2. 変更済データを格納するターゲット表を配布します。
この例では、デザイン・センターまたはコントロール・センター・マネージャのいずれかを使用してORDERS_CHANGE表を配布します。

3. デザイン・センターまたはコントロール・センター・マネージャを使用して、変更済データをターゲット表にロードするCTマッピングを配布します。
アプリケーションが存在するというエラーが表示される場合は、コントロール・センター・マネージャに移動し、配布オプションとして「置換」を選択し、マッピングを配布します。

この例では、デザイン・センターまたはコントロール・センター・マネージャを使用してCDC_ORDERS_LOAD_MAPマッピングを配布します。

変更データ・キャプチャ・プロセスの開始

変更データ・キャプチャ・プロセスを開始すると、Oracle Warehouse Builderによって変更をキャプチャするソース表とターゲット表にトリガーが作成されます。CTマッピングを正常に実行するには、CDCを実行するユーザーにソース・スキーマに関する必要な権限が付与されていることを確認します。

キャプチャ・プロセスを開始するには、プロジェクト・ナビゲータで変更をキャプチャするソース表を含むモジュールを右クリックし、「変更データ・キャプチャ」を選択してから「開始」を選択します。

この例では、SRC_MODを右クリックして「変更データ・キャプチャ」を選択してから、 「開始」を選択します。

CDC操作に関するメッセージが含まれる「メッセージ・ログ」が新しいタブに表示されます。このプロセス中に、Oracle Warehouse Builderによってソース表にトリガーを作成するDDLスクリプトが生成され、DDLスクリプトが配布されます。

変更データ・キャプチャ・プロセスへのサブスクライバの追加

変更データ・キャプチャ・プロセスを開始後は、キャプチャ・システムにサブスクライバを追加する必要があります。サブスクライバは変更データ・キャプチャ・プロセスによって生成された変更を使用します。

サブスクライバの追加手順:

1. プロジェクト・ナビゲータでソース表を含むモジュールを右クリックし、 「変更データ・キャプチャ」 、「サブスクライブ」の順に選択します。
現在のサブスクライバのリストが含まれる「サブスクライバの追加」ダイアログ・ボックスが表示されます。

この例では、SRC_MODを右クリックして「変更データ・キャプチャ」を選択してから、 「サブスクライブ」を選択します。

2. セクションを追加するサブスクライバの「サブスクライバ名」列に、サブスクライバ名を入力します。
この例では、「サブスクライバ名」列にOrd_subscriberと入力します。

3. 「OK」をクリックして、「サブスクライバの追加」ダイアログ・ボックスを閉じます。
ログ・ウィンドウにサブスクライブ・アクションに対して実行中のアクションとアクションの結果をリストするサブスクライブ・アクションの新規パネルが表示されます。このログにエラーが表示される場合は、エラーを修正してからサブスクライバを追加する手順を実行します。

変更データ・キャプチャ・プロセスの開始

変更データ・キャプチャ・プロセスを設定すると、オプションでこのシステムをテストして、ソースの変更がキャプチャされ、サブスクラバが使用可能であることを検証できます。

変更データ・キャプチャ・システムのテスト手順:

1. SQL*Plusで、変更をキャプチャするソース表が含まれるスキーマにログインします。
この例では、SRCスキーマにログインします。

2. ソース表に行を挿入します。
この例では、ORDERS表に行を挿入します。

3. コントロール・センター・マネージャで、変更データ・キャプチャを実行するCTマッピングを選択し、「開始」をクリックします。
この例では、CDC_LOAD_ORDERS_MAPマッピングを開始します。

追加した行はターゲット表に挿入する必要があります。

「ジョブ詳細」パネルには、CTマッピングで実行中の各操作の詳細が表示されます。

Oracle Warehouse Builderでの変更データ・キャプチャ・アクションの実行

変更データ・キャプチャ・ソリューションを設定したら、事前定義済アクションを使用して変更キャプチャ・プロセスを管理します。WebサービスとしてのCDCトラッキングがあるモジュールまたは表を公開すると、これらのオブジェクトで定義されたアクションは生成済Webサービスに含まれます。

これらのアクションを実行するには、CDCトラッキングがあるモジュールまたは表を右クリックして「変更データ・キャプチャ」を選択し、開始、削除、サブスクライブ、サブスクライブ解除、ウィンドウ拡張、データのパージ、サブスクライバのロック、サブスクライバのロック解除の使用可能アクションを使用します。この項では、実行できるCDCアクションを説明します。

適用可能アクションは、実行中の変更データ・キャプチャのタイプによって異なります。

関連項目:
変更データ・キャプチャ・コマンドの詳細は、「変更データ・キャプチャ・コマンド」を参照してください。

変更データ・キャプチャの開始

変更データ・キャプチャのソース・オブジェクトを設定後、オブジェクトを右クリックしてから「開始」を選択して変更済データのキャプチャを開始します。詳細は、「変更データ・キャプチャ・プロセスの開始」を参照してください。

変更データ・キャプチャ・システムの停止

「削除」アクションにより、変更データ・キャプチャ・プロセスが停止され、キャプチャ・オブジェクトが削除されます。

変更データ・キャプチャ・プロセスを停止するには、プロジェクト・ナビゲータでデータ・オブジェクトまたはモジュールを右クリックし、「変更データ・キャプチャ」を選択してから、「削除」を選択します。Oracle Warehouse Builderでは、キャプチャを停止してキャプチャ・オブジェクトを削除するかどうかを尋ねるプロンプトが表示されます。「はい」をクリックします。

変更データ・キャプチャ・システムのサブスクライブ

「サブスクライブ」アクションを実行すると、サブスクライバを変更データ・キャプチャ・システムに追加できます。サブスクライバの追加の詳細は、「変更データ・キャプチャ・プロセスへのサブスクライバの追加」を参照してください。

変更データ・キャプチャ・システムからのサブスクライバの削除

「サブスクライブ解除」アクションを実行すると、サブスクライバを変更データ・キャプチャ・システムから削除できます。サブスクライバを削除すると、サブスクライバはキャプチャ中の変更データを使用できなくなります。

サブスクライバの削除手順:

1. プロジェクト・ナビゲータで、サブスクライバを削除するデータ・オブジェクトまたはモジュールを右クリックし、変更データ・キャプチャ・メニューから 「サブスクライブ解除」を選択します。
「サブスクライバの削除」ダイアログ・ボックスが表示されます。現在のサブスクライバ・セクションには、変更データ・キャプチャ・システムの現在のサブスクライバのリストが含まれます。

2. 現在のサブスクライバ・セクションから削除するサブスクライバを選択し、ボタンを使用してサブスクライバをサブスクライバ・セクションに移動して削除します。

3. 「OK」をクリックします。
ログ・ウィンドウに実行中のアクションの詳細が表示されます。このログをチェックして、サブスクライブの解除アクションが完了したことを確認します。

変更データ・キャプチャ・ウィンドウの拡張

「ウィンドウの拡張」アクションを使用して、変更データの新規セットを受信するサブスクリプション・ウィンドウを拡張します。ウィンドウを拡張して最新の変更済データを受信するには、プロジェクト・マネージャでモジュールまたは表を右クリックし、「変更データ・キャプチャ」、「ウィンドウ拡張」の順に選択します。Oracle Warehouse Builderに、ウィンドウを拡張するかどうかを尋ねるプロンプトが表示されます。「はい」をクリックします。

キャプチャ・データのパージ

サブスクライバがサブスクライブ中の変更データを使用したら、「データのパージ」アクションを使用してキャプチャ表から変更データを削除します。キャプチャ・データをパージするには、プロジェクト・ナビゲータでモジュールまたは表を右クリックし、「変更データ・キャプチャ」、「データのパージ」の順に選択します。Oracle Warehouse Builderに、すべてのキャプチャ・データをパージするかどうかを尋ねるプロンプトが表示されます。「はい」をクリックします。

サブスクライバのロック

「サブスクライバのロック」操作を使用すると、一貫性ウィンドウ内のサブスクライバ固有の変更のスナップショットを取得できるようにサブスクライバをロックできます。スナップショットには、サブスクライバが使用していない一貫性ウィンドウ内のすべての変更が含まれます。

サブスクライバのロック手順:

1. プロジェクト・マネージャで、サブスクライバをロックするデータ・オブジェクトまたはモジュールを右クリックし、「変更データ・キャプチャ」、「サブスクライバのロック」の順に選択します。
「サブスクライバのロック」ダイアログ・ボックスが表示されます。現在のサブスクライバ・セクションには、変更データ・キャプチャ・システムの現在のサブスクライバのリストが含まれます。

2. 現在のサブスクライバ・セクションからロックするサブスクライバを選択し、ボタンを使用してサブスクライバをサブスクライバ・セクションに移動してロックします。

3. 「OK」をクリックします。
ログ・ウィンドウに実行中のアクションの詳細が表示されます。このログをチェックして、サブスクライブのロック・アクションが完了したことを確認します。

サブスクライバのロック解除

「サブスクライバのロック解除」アクションを使用して、サブスクライバに対するサブスクライバのロック操作中にロックされた変更をコミットします。

サブスクライバのロック解除手順:

1. プロジェクト・マネージャで、サブスクライバのロックを解除するデータ・オブジェクトまたはモジュールを右クリックし、「変更データ・キャプチャ」、「サブスクライバのロック」の順に選択します。
「サブスクライバのロック解除」ダイアログ・ボックスが表示されます。現在のサブスクライバ・セクションには、変更データ・キャプチャ・システムの現在のサブスクライバのリストが含まれます。

2. 現在のサブスクライバ・セクションからロックを解除するサブスクライバを選択し、ボタンを使用してサブスクライバをサブスクライバ・セクションに移動してロックします。

3. 「OK」をクリックします。
ログ・ウィンドウに実行中のアクションの詳細が表示されます。このログをチェックして、サブスクライブのロック解除アクションが完了したことを確認します。

コントロール・コード・テンプレートの使用

コントロール・コード・テンプレート(コントロールCT)を使用すると、データ・オブジェクト内のレコードが定義済制約と一致しているかどうかをチェックすることでデータ整合性を維持することができます。データ・オブジェクトに指定された制約に違反するデータがデータ・オブジェクトにロードされていないことを確認する場合は、コントロールCTを使用します。

コントロールCTによってチェックされる制約は、チェック制約、主キー、代替キーおよびNOT NULLです。

コントロールCTを使用して、次をチェックします。

- 既存データの整合性
STATIC_CONTROLプロパティをTrueに設定し、現在データ・オブジェクト内にあるデータをチェックします。

- レコードをターゲットにロードする前の受信データの整合性。
Set the FLOW_CONTROLプロパティをTrueに設定します。コントロールCTは、ターゲットに書き込む前に結果フロー上のターゲット・データ・オブジェクトの制約をシミュレートします。

コントロールCTでは、統合CTによって作成された既存表または一時表をチェックできます。

コントロールCTの機能方法

コントロールCTは、一連の制約とチェック対象の表名を受け入れます。コントロールCTは、拒否されたすべてのレコードを書き込むエラー表を作成するか、チェックした結果セットからエラーのあるレコードを削除します。

どちらの場合も、コントロールCTでは、通常、次のタスクが実行されます。

1. エラー表が作成されます。エラー表にはターゲット表と同じ列と、エラー・メッセージを追跡、元をチェック、日付けをチェックする追加列が含まれます。

2. チェックする必要がある主キー、代替キー、外部キー、条件、必須列ごとにエラー表でエラーのあるレコードを分離します。

3. 必要に応じて、エラーのあるレコードをチェック済表から削除します。

コントロールCTの操作モード

コントロールCTは、次のモードで操作できます。

- STATIC_CONTROL
コントロールCTによって表の制約が読み込まれ、表のデータに対してチェックされます。制約に一致しないレコードがエラー表に書込まれます。

- FLOW_CONTROL
コントロールCTによってターゲット表の制約が読み込まれ、これらの制約がステージング領域の"I$"フロー表に含まれるデータとチェックされます。これらの制約に違反するレコードがエラー表に書込まれます。

例: コントロールCTを使用したデータ制約のチェック

シナリオ

従業員データはEMP.datというファイルに格納されています。このデータをターゲット表EMP_TGTにロードする必要があります。ロード中に、ターゲット表で定義された制約に違反するレコードはターゲット表に関連付けられたエラー表に書込まれます。

ターゲット表は、WH_TGTというOracleモジュールに存在します。

データをターゲット表にロード中の制約違反のログ記録手順

コントロールCTを使用したデータ制約のチェック手順は、次のとおりです。

1. ソース・モジュールの作成およびソース・オブジェクトのインポート

2. データを抽出、データ整合性をチェックおよびデータをOracleターゲットにロードするコード・テンプレート・マッピングの作成

ソース・モジュールの作成およびソース・オブジェクトのインポート

ソースはフラット・ファイルであるため、デザイン・センターにフラット・ファイル・モジュールを作成し、フラット・ファイルをこのモジュールにインポートします。

ソース・モジュールの作成およびソース・フラット・ファイルのインポート手順:

1. プロジェクト・ナビゲータで、ファイル・ノードを右クリックし、「新規フラット・ファイル・モジュール」を選択します。
モジュールの作成ウィザードが表示されます。このウィザードを使用して、フラット・ファイル・モジュールを作成します。

フラット・ファイル・モジュール作成の詳細は、『Oacle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

2. 作成したフラット・ファイル・モジュールを右クリックし、「新規ファイル」を選択します。
「フラット・ファイルの作成」ウィザードが表示されます。このウィザードを使用して、ソース・フラット・ファイルを定義およびサンプリングします。

フラット・ファイルの作成およびサンプリングの詳細は、『Oacle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

データを抽出、データ整合性をチェックおよびデータをOracleターゲットにロードするコード・テンプレート・マッピングの作成

1. まだの場合は、データ整合性チェックを実行するCTマッピングを含めるテンプレート・マッピング・モジュールを作成します。
このマッピング・モジュールのロケーション詳細を、マッピングを配布する必要があるエージェントに設定します。

この例では、DEFAULT_AGENTロケーションに関連付けられたCKM_MAP_MODというマッピング・モジュールを使用します。このロケーションは、Oracle Warehouse BuilderとともにインストールされるOC4Jサーバーを指し示しています。

2. データの抽出、チェックおよびロードのロジックを含むCTマッピングを作成します。
この例では、EMP_LOAD_CKM_MAPというCTマッピングを作成します。

3. ソース・ファイルをソース・ファイルのソース・モジュールからマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
この例では、ファイルEMP.datをファイル・モジュールからキャンバスにドラッグ・アンド・ドロップします。

4. ターゲット表をキャンバスにドラッグ・アンド・ドロップします。
この例では、EMP_TGT演算子をキャンバスにドラッグ・アンド・ドロップします。

プロパティ・インスペクタの表演算子プロパティには、コントロールCTというノードが含まれます。すべての既存の制約とデータ・ルールが、このセクションの下のプロパティに表示されます。このグループのプロパティを使用して、データ・ルールと整合性制約の適用方法を定義します。

5. ソース属性を対応するターゲット属性にマップします。

6. マッピングの実行ビューで、次のタスクを実行します。

- フラット・ファイル演算子の実行ユニットを作成し、この実行ユニットをLCT_FILE_TO_ORACLE_EXTER_TABLEコード・テンプレートに関連付けます。

- ターゲット表を含む実行ユニットを作成します。この実行ユニットをCCT_ORACLEコード・テンプレートに関連付けます。

7. CTマッピングを検証および生成します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「生成」を選択します。

8. CTマッピングを配布します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「配布」を選択します。

9. CTマッピングを実行します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「開始」を選択します。
EMP_TGT表で定義された制約に違反するレコードはターゲットにロードされません。これらのレコードはターゲット表に関連付けられたエラー表に書込まれます。

コード・テンプレート・マッピングでのOracleターゲットCTの使用

OracleターゲットCTには、Oracle Warehouse Builder PL/SQLマッピングでのみサポートされている演算子を使用する方法が用意されています。これらの演算子を使用すると、データ変換を定義、これらの変換演算子を含む実行ユニットを作成、実行ユニットをOracleターゲットCTに関連付けることができます。

例: Oracleターゲット・コード・テンプレートの使用

シナリオ

2つの異なるソースで使用できるソース・データを集計し、ターゲット表にロードするとします。最初のソースは、ソース表CUSTOMERS、TIMESおよびSALESを含むOracleモジュールです。もう1つのソースは、表CHANNELおよびCOUNTRYを含むXMLモジュールです。

ソース・データで必要な変換は、すべてのソース表からのデータの結合、集計およびターゲット表SUMMARY_SALESへの集計データのロードです。ジョイナ演算子を使用して、ソース表からのデータを結合します。集計はOracle Database SQLファンクションCUBEを利用するアグリゲータ演算子を使用して実行します。要約データはターゲット表にロードされます。

OracleターゲットCTを使用したソース・データの変換手順

OracleターゲットCTSを使用したソース・データの変換タスクは、次のとおりです。

1. ソース・モジュールの作成およびソース・オブジェクトのインポート

2. ターゲット・モジュールおよびターゲット表の作成

3. OracleターゲットCTを使用してソース・データを変換するCTマッピングの作成

ソース・モジュールの作成およびソース・オブジェクトのインポート

プロジェクト・ナビゲータで、ソース・モジュールとその関連ロケーションを作成します。ソース・オブジェクトをこのモジュールにインポートします。

この例では、XMLソース・データを表すXMLモジュールを作成し、CHANNEL表およびCOUNTRY表をインポートします。このXMLモジュールに関連付けられたロケーションはXMLソースをポイントする必要があります。ロケーションがOracle DatabaseのSHサンプル・スキーマをポイントするOracleモジュールを作成します。CUSTOMERS、TIMESおよびSALES表をこのモジュールにインポートします。

モジュール作成の詳細は、『Oacle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

ターゲット・モジュールおよびターゲット表の作成

1. 作成していない場合は、Oracleモジュールを作成してターゲット表を格納します。

2. このOracleモジュールに、変換済データを格納するターゲット表を作成します。表ノードを右クリックしてから「新規表」を選択し、表エディタを使用して表を定義します。

3. 表名を右クリックおよび「生成」を選択してターゲット表を生成します。生成エラーがある場合は修正します。

4. 表名を右クリックおよび「配布」を選択してターゲット表を配布します。

この例では、モジュールWH_TGTにはターゲット表SUMMARY_SALESが含まれます。

OracleターゲットCTを使用してソース・データを変換するCTマッピングの作成

1. まだの場合は、必要なデータ変換を実行するCTマッピングを含めるテンプレート・マッピング・モジュールを作成します。
このマッピング・モジュールのロケーション詳細を、マッピングを配布する必要があるエージェントに設定します。

この例では、ETL_MAP_MODというマッピング・モジュールはDEFAULT_AGENTのロケーションに関連付けられます。このロケーションは、Oracle Warehouse BuilderとともにインストールされるOC4Jサーバーを指し示しています。

2. データの抽出、変換およびロードに必要なETLロジックを含むCTマッピングを作成します。
この例では、LOAD_SUMMARY_SALES_MAPというマッピングを作成します。

3. ソース表をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
この例では、CHANNEL表およびCOUNTRY表をXMLソース・モジュールから、CUSTOMERS、TIMESおよびSALES表をOracleモジュールからドラッグ・アンド・ドロップします。

4. 必要なデータ変換の実行に使用する必要がある演算子をドラッグ・アンド・ドロップします。演算子属性を接続します。
この例では、次の演算子を追加します。

- ソース表でデータを結合するジョイナ演算子。ジョイナ演算子の結合条件プロパティを設定し、ソース表を結合する方法を定義します。この例では、これらの表からのデータを結合する表ペア間で共通の列を使用します。

- ジョイナ演算子の出力を集計するアグリゲータ演算子。データはCHANNEL_DESC属性およびCOUNTRY_ISO_CODE属性に基づき集計され、SQLファンクションCUBEを使用して集計が実行されます。
したがって、アグリゲータ演算子のGroup by句で、次のように指定します。

CUBE(INGRP1.CHANNEL_DESC,INGRP1.COUNTRY_ISO_CODE)

5. ターゲット表をキャンバスにドラッグ・アンド・ドロップします。
この例では、SUMMARY_SALES表をキャンバスにドラッグ・アンド・ドロップします。

6. ソース演算子と変換演算子間のデータ・フローを作成します。変換済出力をターゲット表にマップします。
この例では、表CHANNEL、CUSTOMERS、COUNTRY、TIMESおよびSALESがジョイナ演算子の入力グループにマップされます。ジョイナ演算子の出力グループはアグリゲータ演算子にマップされます。アグリゲータ演算子の出力は、ターゲット表SUMMARY_SALESにマップされます。

7. CTマッピングの実行ビューで、データ変換の実行に必要な実行ユニットを作成します。
CTマッピングは図7-6にようになるはずです。

この例では、次を実行します。

- CHANNEL表の実行ユニットを作成します。この実行ユニットをLCT_SQL_TO_SQLコード・テンプレートに関連付けます。

- COUNTRY表の実行ユニットを作成します。この実行ユニットをLCT_SQL_TO_SQLコード・テンプレートに関連付けます。

- 表CUSTOMERS、SALESおよびTIMES、ジョイナ演算子、アグリゲータ演算子およびSUMMARY_SALES表を含む実行ユニットを作成します。この実行ユニットをOracleターゲットCT DEFAULT_ORACLE_TARGET_CTに関連付けます。

8. CTマッピングを検証および生成します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「生成」を選択します。

9. CTマッピングを配布します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「配布」を選択します。

10. CTマッピングを実行してデータをXMLおよびOracleソースから抽出、変換し、Oracleターゲット表にロードします。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「開始」を選択します。

図7-6は、OracleターゲットCTを使用して必要なデータ変換を実行できるCTマッピングの実行ビューを示したものです。

図7-6 OracleターゲットCTを使用してソース・データを変換するマッピング

「図7-6 OracleターゲットCTを使用してソース・データを変換するマッピング」の説明

異機種データベースからOracle Databaseへのデータ の移動

コード・テンプレートを使用して、SQL Server、DB2およびTeradataなどの異機種データベースからデータを抽出できます。データ転送の実行に使用するコード・テンプレートは、ソースおよびターゲット・データベースによって異なります。

Oracle Warehouse Builderには、異なるデータベース間のデータ転送に使用できるコード・テンプレートのセットが用意されています。これらのコード・テンプレートは、グローバル・ナビゲータのパブリック・コード・テンプレート・ノードにあるBUILT_IN_CTノードに格納されています。各コード・テンプレートによって、特定のプラット・フォーム上で特定のタスク・セットが実行されます。

例: 統合CTおよびロードCTを使用したIBM DB2からOracle Databaseへのデータの移動

データ抽出のシナリオ

表ORDERSおよびORDER_DETAILSはIBM DB2データベースに格納されます。これらの2つの表からデータを抽出してから変換し、OracleデータベースのORDERS_AGG_CUSTという表に格納する必要があります。変換ではこれらの2つの表のデータが結合され、各顧客のデータが集計されます。

IBM DB2からデータを抽出する前に

- IBM DB2データベースへのアクセスに必要なドライブがあることを確認します。必要なファイルはdb2jcc.jarおよびdb2jcc_license_cu.jarです。これらのファイルをOWB_HOME/owb/lib/extディレクトリにコピーします。

- CCAを起動するスクリプトに、DB2ドライバに必要なライブラリをロードする文を追加します。
UNIXの場合は、次の文をOWB_HOME/owb/bin/unix/ccastartに追加します。

-Dapi.ext.dirs=$OWB_HOME/owb/lib/ext

Windowsの場合は、次の文をOWB_HOME/owb/bin/win32/ccastart.batに追加します。

-Dapi.ext.dirs=%OWB_HOME%\owb\lib\ext

関連項目:
CCA起動スクリプトの変更の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

IBM DB2からデータを抽出、データを変換およびOracle Databaseにロードする手順

IBM DB2からデータを抽出、データを変換、Oracle Databaseへのデータのロード手順:

1. ソース・モジュールの作成

2. ターゲット・モジュールおよびターゲット表の作成

3. データを抽出、変換およびロードするCTマッピングの作成

ソース・モジュールの作成

プロジェクト・ナビゲータで、ソース・データを表すDB2モジュールを作成します。このモジュールに関連付けられたロケーションは、ソース・オブジェクトを含むDB2データベースをポイントする必要があります。

この例では、ロケーションがORDERS表およびORDER_DETAILS表を含むDB2データベースをポイントするDB2モジュールを作成します。

DB2モジュール作成の詳細は、『Oacle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

ターゲット・モジュールおよびターゲット表の作成

次の手順を使用して、ターゲット・モジュールおよびターゲット表を作成します。

1. 作成していない場合は、Oracleモジュールを作成してターゲット表を格納します。

2. このOracleモジュールに、変換済データを格納するターゲット表を作成します。表ノードを右クリックしてから「新規表」を選択し、表エディタを使用して表を定義します。

3. 表名を右クリックおよび「生成」を選択してターゲット表を生成します。生成エラーがある場合は修正します。

4. 表名を右クリックおよび「配布」を選択してターゲット表を配布します。

この例では、モジュールWH_TGTにはターゲット表ORDERS_AGG_CUSTが含まれます。

データを抽出、変換およびロードするCTマッピングの作成

次の手順を使用して、DB2表からデータを抽出するCTマッピングを作成し、変換し、Oracle Database表にロードします。

1. まだの場合は、必要なETLを実行するCTマッピングを含めるテンプレート・マッピング・モジュールを作成します。
このマッピング・モジュールのロケーション詳細を、マッピングを配布する必要があるエージェントに設定します。

この例では、ETL_MAP_MODというマッピング・モジュールはDEFAULT_AGENTロケーションに関連付けられます。このロケーションは、Oracle Warehouse BuilderとともにインストールされるOC4Jサーバーを指し示しています。

2. データの抽出、変換およびロードに必要なETLロジックを含むマッピングを作成します。
この例では、LOAD_DB2_TO_ORACLE_MAPというマッピングを作成します。

3. ソース表をDB2ソース・モジュールからマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
この例では、ORDERS表とORDER_DETAILS表をDB2モジュールのソース・モジュールからドラッグ・アンド・ドロップします。

4. 必要なデータ変換の実行に使用する必要がある演算子をドラッグ・アンド・ドロップします。演算子属性を接続します。
この例では、次の演算子を追加します。

- ORDERS表およびORDER_DETAILS表でデータを結合するジョイナ演算子。ジョイナ演算子の結合条件プロパティを設定します。

- ジョイナ演算子の出力を集計するアグリゲータ演算子。CUSTOMER_ID属性に基づきデータを集計します。

5. ターゲット表をキャンバスにドラッグ・アンド・ドロップします。
この例では、ORDERS_TGT演算子をキャンバスにドラッグ・アンド・ドロップします。

6. 変換済出力をターゲット表にマップします。

7. マッピングの実行ビューで、次を実行します。

- ORDERS演算子およびORDER_DETAILS演算子の実行ユニットを作成します。この実行ユニットをLCT_SQL_TO_ORACLEコード・テンプレートに関連付けます。

- ジョイナ、アグリゲータおよびORDERS_AGG_CUST表を含む実行ユニットを作成します。この実行ユニットをICT_ORACLE_INCR_UPDコード・テンプレートに関連付けます。

8. CTマッピングを検証および生成します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「生成」を選択します。

9. CTマッピングを配布します。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「配布」を選択します。

10. CTマッピングを実行してデータをソースDB2表から抽出し、変換し、Oracleターゲット表にロードします。プロジェクト・ナビゲータで、CTマッピングを右クリックし、「開始」を選択します。

図7-7は、マッピングLOAD_DB2_TO_ORACLE_MAPの実行ビューを示しています。

図7-7 IBM DB2からデータを抽出、データを変換およびOracle Databaseにロードするマッピング

「図7-7 IBM DB2からデータを抽出、データを変換およびOracle Databaseにロードするマッピング」の説明

8 プロセス・フローの設計

データをソースからターゲットへ移動する操作を定義するマッピングを設計した後は、プロセス・フローを作成および定義できます。プロセス・フローによりアクティビティをリンクさせ、異なるアクティビティ間に制御フローを定義できます。サポートされている制御フローとは、条件付きのブランチ、ループ、パラレル・フロー、シリアル依存です。アクティビティとは、マッピング、変換、または電子メール、FTPコマンド、オペレーティング・システムの実行可能ファイルなどの外部コマンドです。

プロセス・フローを使用して、マッピング間の依存関係を管理できます。マッピング、プロセス・フローおよびその他の実行可能なオブジェクトをスケジュールするには、「スケジュールの定義」を参照してください。

この章の内容は次のとおりです。

- プロセス・フローの概要

- 例: 基本的なプロセス・フローの作成

- プロセス・フローを定義する手順

- プロセス・フローへのアクティビティの追加

- アクティビティ・テンプレートの作成と使用

- 推移について

- 式について

- 推移条件の定義

- 例: プロセス・フローを使用した変数名付きフラット・ファイルへのアクセス

- 例: プロセス・フローを使用したリモート・ファイルの転送

プロセス・フローの概要

プロセス・フローでは、Oracle Warehouse Builderマッピングと電子メール、FTPおよびオペレーティング・システム・コマンドなどの外部アクティビティ間の依存関係を記述します。プロセス・フローを使用してETLプロセスの各手順を順序付けます。各手順にはマッピングが含まれる場合が多いですが、手動アクティビティ、FTP、電子メールなどの外部アクティビティを含めることもできます。

各プロセス・フローは「開始」アクティビティで始まり、フロー内のストリームごとに「終了」アクティビティで終了します。プロセス・フローはアクティビティのタイプとみなされているため、他のプロセス・フローを起動できます。

図8-1は、マッピング(MAP1)を起動するプロセス・フローの例を示したものです。マッピングが正常終了すると、Oracle Warehouse Builderから電子メール通知(EMAIL_SUCCEED)が送信され、別のプロセス・フロー(SUBPROC1)が起動されます。マッピングに失敗すると、Oracle Warehouse Builderから電子メール(EMAIL_FAIL)が送信され、プロセス・フローが終了します。

図8-1 サンプル・プロセス・フロー

「図8-1 サンプル・プロセス・フロー」

Oracle Warehouse Builderでプロセス・フローを設計する際には、プロセス・フロー・エディタというインタフェースを使用します。または、Oracle Warehouse Builderのスクリプト言語であるOMB*Plusを使用してプロセス・フローを作成し、定義することもできます。詳細は、『Oracle Warehouse Builder APIおよびスクリプト・リファレンス』を参照してください。

プロセス・フロー・モジュールおよびパッケージについて

プロセス・フローはプロセス・フロー・パッケージにグループ化し、さらにプロセス・フロー・モジュールにグループ化する必要があります。プロセス・フロー・モジュールとプロセス・フロー・パッケージによって、プロセス・フローを管理および配布する2つのレベルが提供されます。モジュール・レベルまたはパッケージ・レベルのいずれかでプロセス・フローを検証、生成および配布できます。

同じモジュール内にあるため、他のプロセス・フローを起動するプロセス・フローを設計できます。同じモジュール内にある場合でも異なるモジュール内にある場合でも、あるパッケージから別のパッケージにプロセス・フローをコピーでき、さらにパッケージを別のモジュールにコピーすることもできます。これを行うには、デザイン・センターのメイン・メニューの「編集」にある「コピー」および「貼付け」コマンドを使用します。

たとえば、図8-1は、プロセス・フローSUBPROC1を含むプロセス・フローPROC1を示しています。PROC1を正常に実行するには、SUBPROC1およびPROC1を、プロセス・フロー・モジュールは同じでも別でも構いませんが、同じ場所に配布する必要があります。

ワークフロー・エンジンへのプロセス・フローの配布

Oracle Warehouse Builderのプロセス・フローは、Workflow Management Coalition(WfMC)に規定されているXMLプロセス定義言語(XPDL)標準に準拠しています。プロセス・フローを生成すると、Oracle Warehouse BuilderによりXPDL形式のXMLファイルが生成されます。生成されたXPDLは、WfMC標準をサポートするワークフロー・エンジンとの統合に使用できます。

Oracle Warehouse BuilderにはOracle Workflowとの統合が用意されています。Oracle Warehouse Builderのコントロール・センターから、Oracle Workflowにプロセス・フロー・パッケージまたはモジュールを配布できます。

例: 基本的なプロセス・フローの作成

キューブSALES_CUBEは、PRODUCTS、CATEGORIESおよびCUSTOMERSのディメンジョン内のデータを使用してロードされます。これらのディメンジョンは、1つ以上のトランザクション表を使用してロードされます。データはすべてのディメンジョンが正常にロードされた場合のみキューブにロードする必要があります。

別のマッピングを作成してキューブおよびディメンジョンをロードします。ただし、3つのディメンジョンPRODUCTS、CATEGORIESおよびCUSTOMERSを最初にロードするシーケンシャル・フローにする必要があり、これらのディメンジョンが正常にロードされたら、キューブSALES_CUBEがロードされます。プロセス・フローを使用してこれらのマッピングをリンクし、シーケンシャル・フローを作成します。

図8-2は、SALES_CUBEをロードするプロセス・フローを示しています。このフローは、「プロセス・フローの定義手順」にリストされている手順を完了すると作成されます。

図8-2 キューブをロードするプロセス・フロー

「図8-2 キューブをロードするプロセス・フロー」の説明

前提作業

次のマッピングを作成します。

- LOAD_PRODUCTS: このマッピングはトランザクション表に格納されたソース・データを変換し、変換済データをPRODUCTSディメンジョンにロードします。

- LOAD_CATEGORIES: このマッピングはトランザクション表に格納されたソース・データを変換し、変換済データをCATEGORIESディメンジョンにロードします。

- LOAD_CUSTOMERS: このマッピングはトランザクション表に格納されたソース・データを変換し、変換済データをCUSTOMERSディメンジョンにロードします。

- LOAD_SALES_CUBE: このマッピングは、ディメンジョンPRODUCTS、CATEGORIESおよびCUSTOMERSを使用してデータをキューブSALES_CUBEにロードします。

プロセス・フローの定義手順

1. プロセス・フローを配布するOracle Workflowの場所を作成します。
Oracle Workflowの場所の作成の詳細は、「Oracle Workflowロケーション」を参照してください。

2. プロジェクト・ナビゲータで、プロセス・フローを作成するプロジェクト・ノードを開いてから、「プロセス・フロー」ノードを開きます。

3. 「プロセス・フロー・モジュール」ノードを右クリックし、「新規プロセス・フロー・モジュール」を選択します。
「プロセス・フロー・モジュールの作成」ウィザードが表示されます。

4. 「名前と説明」ページに、プロセス・フローの名前と説明(オプション)を入力します。

5. 「ロケーション」フィールドの「接続情報」ページで、手順1で作成したロケーションを選択します。「終了」をクリックし、プロセス・フロー・モジュールを作成します。
「プロセス・フロー・パッケージの作成」ダイアログ・ボックスが表示されます。

6. プロセス・フロー・パッケージの名前と説明(オプション)を入力し、「OK」をクリックします。
「プロセス・フローの作成」ダイアログ・ボックスが表示されます。

7. プロセス・フローの名前と説明(オプション)を入力し、「OK」をクリックします。
プロセス・フロー・エディタが表示されます。エディタのキャンパスには、START1という名前の開始アクティビティとEnd_successという停止アクティビティが含まれています。エディタを使用してプロセス・フローの一部であるその他のアクティビティを追加し、それらの関係を定義します。

8. 「コンポーネント・パレット」から、フォーク・アクティビティをエディタのキャンパスにドラッグ・アンド・ドロップします。

9. プロジェクト・ナビゲータから、LOAD_PRODUCTS、LOAD_CATEGORIESおよびLOAD_CUSTOMERSマッピングをドラッグし、エディタ・キャンバスにドロップします。
マッピングをドラッグし、キャンバスにドロップすると、マッピング・アクティビティはMAPPING_nなどのデフォルト名でキャンバス上に表示されます。アクティビティ名は、必要に応じて名前を変更できるように青でハイライト表示されます。各アクティビティに、マッピングとして同じ名前を入力します。たとえば、LOAD_PRODUCTSマッピングの場合は、アクティビティ名をLOAD_PRODUCTSと入力します。

これらのアクティビティは垂直線上で上下に「FORKアクティビティ」 の右に配置します。

10. 次の推移を作成します。

- FORKアクティビティからLOAD_PRODUCTSアクティビティ

- FORKアクティビティからLOAD_CATEGORIESアクティビティ

- FORKアクティビティからLOAD_CUSTOMERSアクティビティ

推移を作成するには、ソース・アクティビティを選択します。カーソルがアクティビティ上に小さな水平矢印として表示されます。ターゲット・アクティビティ上をドラッグ・アンド・ドロップします。

11. コンポーネント・パレットから、ANDアクティビティをエディタにドラッグ・アンド・ドロップします。

12. 条件推移をSUCCESSとして定義した条件で、LOAD_PRODUCTSアクティビティからAndアクティビティに定義します。
条件推移とは事前定義済条件に基づく推移です。推移条件の定義手順:

1. エディタ・キャンバス上で、推移を選択します。
プロパティ・インスペクタに選択した推移のプロパティが表示されます。

2. 「条件」プロパティ上で、省略記号ボタンをクリックします。
「プロパティの編集」ダイアログ・ボックスが表示されます。

3. 「列挙済条件」を選択します。このオプションの下のリストで、「正常終了」を選択し、「OK」をクリックします。

13. 条件推移をSUCCESSとして定義した条件で、LOAD_CATEGORIESアクティビティからAndアクティビティに定義します。

14. 条件推移をSUCCESSとして定義した条件で、LOAD_CUSTOMERSアクティビティからAndアクティビティに定義します。

15. プロジェクト・ナビゲータから、マッピングLOAD_SALES_CUBEをエディタ・キャンバスにドラッグ・アンド・ドロップします。アクティビティ名をLOAD_SALES_CUBEと入力します。

16. 推移をANDアクティビティからLOAD_SALES_CUBEアクティビティに作成します。ANDアクティビティを選択して小さい水平矢印を表示します。LOAD_SALES_CUBEアクティビティ上にドラッグ・アンド・ドロップします。

17. 条件推移をSUCCESSとして定義した条件で、LOAD_SALES_CUBEアクティビティからEnd_successアクティビティに作成します。

プロセス・フローを定義する手順

前提作業

プロセス・フローの配布を有効にするには、『Oracle Warehouse Builderインストレーションおよび管理ガイド』の説明に従ってOracle Workflowをインストールします。

プロセス・フローを定義するには、次の各項を参照してください。

1. (オプション) Oracle Workflowロケーションの作成

2. プロセス・フロー・モジュールの作成

3. プロセス・フロー・パッケージの作成

4. プロセス・フローの作成

5. アクティビティ・テンプレートの作成と使用

6. アクティビティの追加

7. アクティビティの接続

8. プロセス・フローでのアクティビティ

9. パラメータおよび変数の使用

10. プロセス・フロー構成のリファレンス

11. プロセス・フローの検証および生成

12. プロセス・フローのスケジューリング(オプション)
プロセス・フローが予測したとおりに実行されることを確認すると、「スケジュールの定義」に説明されるように、単一日または複数日に実行するようにプロセス・フローをスケジューリングできます。

13. プロセス・フォローの配布は、「配布および実行プロセスの手順」を参照してください。

Oracle Workflowロケーションの作成

Oracle Workflowロケーションを使用して、プロセス・フローを配布します。このロケーションはOracle Workflowスキーマに対応しています。

Oracle Workflowロケーションの作成手順:

1. ロケーション・ナビゲータで、「ロケーション」ノードを開いてから、「プロセス・フロー」ノードおよび「スケジュール」ノードを開きます。

2. 「Oracle Workflow」ノードを右クリックし、 「新規Oracle Workflowロケーション」を選択します。
「Oracle Workflowロケーションの作成」ダイアログ・ボックスが表示されます。

3. 「詳細」ページで、次のフィールドに情報を入力します。

- 名前: Oracle Workflowロケーションの名前を表します。

- 説明: ロケーションの説明を表します。説明の入力はオプションです。

- 接続タイプ: Oracle Workflowへの接続タイプを表します。次のいずれかのオプションを選択します。

- ホスト:ポート:サービス: 事前設定が不要な簡易接続ネーミング・メソッドを使用して接続します。次の追加情報を入力します。
ホスト: Oracle DatabaseがOracle Workflow Managerとともにインストールされているシステム名。クライアント・ソフトウェアがOracle Databaseと同じシステム上にインストールされている場合は、コンピュータ名のかわりにローカルホストを入力できます。

ポート: Oracle DatabaseのSQLポート番号。

サービス: Oracle Databaseのサービス名。

SQL*NET接続: SQL*Netとのワークフロー接続の定義はサポートされていないため、接続をテストするとRTC-5336エラーが発生します。

- スキーマ: ワークフロー・スキーマのユーザー名を表します。

- パスワード: 「スキーマ」フィールドで指定したユーザーのパスワードを表します。

- バージョン: Oracle Workflowのバージョンを表します。

プロセス・フロー・モジュールの作成

プロセス・フローを使用するには、プロセス・フロー・モジュールを作成します。このモジュールは、プロセス・フローのグループを検証、生成および配布するために使用するコンテナです。プロセス・フロー・モジュールには、プロセス・フローを含むプロセス・フロー・パッケージが含まれます。

プロセス・フロー・モジュールの作成手順:

1. プロジェクト・ナビゲータの「プロセス・フロー・モジュール」ノードを右クリックし、「新規プロセス・フロー・モジュール」を選択します。
Oracle Warehouse Builderに、モジュールの作成ウィザードのようこそページが表示されます。

2. 「次へ」をクリックします。
名前と説明ページで、プロジェクト内で一意のモジュール名を入力します。テキストの説明(オプション)を入力します。

3. 「次へ」をクリックします。
ウィザードに、接続情報ページが表示されます。

モジュール名を基にウィザードによって作成されるデフォルトのロケーションはそのまま使用できます。またはリストから既存のロケーションを選択します。「編集」をクリックして接続情報を入力し、接続をテストします。

4. 「次へ」をクリックします。
ウィザードに、「終了」ページが表示されます。新規プロセス・フロー・モジュールの名前と配布ロケーションを確認します。

「終了」をクリックすると、Oracle Warehouse Builderによって、モジュールの定義が格納され、プロジェクト・ナビゲータに名前が挿入されます。また、プロセス・フロー・パッケージを作成するように要求されます。

プロセス・フロー・モジュール内でのユーザー・フォルダの作成

プロセス・フロー・モジュール内で、ユーザー・フォルダを作成し、製品ライン、機能グループまたはアプリケーション固有のカテゴリなどの基準に基づきプロセス・フロー・パッケージをグループ化できます。

ユーザー・フォルダには、その他のユーザー・フォルダとその他のプロセス・フロー・パッケージを含めることができます。ユーザー・フォルダのネスト・レベルに制限はありません。ユーザー・フォルダは移動、削除、編集または名前変更もできます。ユーザー・フォルダを移動するには、プロジェクト・ナビゲータでユーザー・フォルダを選択し、ツールバーの「切取り」をクリックします。次に、ユーザー・フォルダを移動するプロセス・フロー・モジュールを選択し、「貼付け」をクリックします。

ユーザー・フォルダに含まれるプロセス・フロー・パッケージは、対応する親プロセス・フロー・モジュールまたは別のプロセス・フロー・モジュールに移動できます。

ユーザー・フォルダを削除すると、ユーザー・フォルダとそこに含まれるすべてのオブジェクトがリポジトリから削除されます。

プロセス・フロー・モジュール内でのユーザー・フォルダの作成手順:

1. プロジェクト・ナビゲータで、「プロセス・フロー」ノードを開きます。「プロセス・フロー」モジュールまたはユーザー・フォルダを作成するユーザー・フォルダを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。

2. 「アイテム」セクションで「ユーザー・フォルダ」を選択します。
「ユーザー・フォルダの作成」ダイアログ・ボックスが表示されます。

3. ユーザー・フォルダの名前を指定して「OK」をクリックします。

ユーザー・フォルダが作成され、「プロセス・フロー」モジュールの下のツリーに追加されます。

ユーザー・フォルダ内でのプロセス・フロー・パッケージの作成手順:

1. プロジェクト・ナビゲータで、「プロセス・フロー」ノードを開きます。ユーザー・フォルダを右クリックして「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。

2. 「アイテム」セクションで、「プロセス・フロー・パッケージ」を選択します。

3. 「OK」をクリックします。

「プロセス・フロー・パッケージの作成」ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用してプロセス・フローを作成します。次に、このプロセス・フロー・パッケージ内で必要なプロセス・フローを作成します。

プロセス・フロー・パッケージの作成

プロセス・フロー・モジュールを作成すると、プロセス・フロー・パッケージを作成できます。プロセス・フロー・パッケージとは、プロセス・フローの配布元の追加グループ化メカニズムです。

プロセス・フロー・パッケージの作成手順:

1. プロジェクト・ナビゲータでプロセス・フロー・モジュールを右クリックし、「新規プロセス・フロー・パッケージ」をクリックします。
「プロセス・フロー・パッケージの作成」ダイアログ・ボックスが表示されます。

2. プロセス・フロー・パッケージの名前との説明(オプション)を入力します。
Oracle Workflowと統合する場合、パッケージ名はOracle Workflowによって8バイトに制限されています。

3. 「OK」をクリックします。
Oracle Warehouse Builderでは、プロセス・フローを作成するように要求されます。

プロセス・フローの作成

プロセス・フローのモジュールとパッケージを作成すると、プロセス・フローを作成できます。

プロセス・フローの作成手順:

1. プロジェクト・ナビゲータでプロセス・フロー・パッケージを右クリックし、「新規プロセス・フロー」をクリックします。
「プロセス・フローの作成」ダイアログ・ボックスが表示されます。

2. プロセス・フローの名前と説明(オプション)を入力します。

注意:
プロセス・フローをスケジュールする場合には、付加的な考慮事項があります。スケジューリングするETLオブジェクトの物理名は25文字以内、ビジネス名は1,995文字以内に制限されます。この付加的な制限に従うと、Oracle Warehouse Builderでは、プロセス・フロー名に接尾辞_jobとプロセス・フローの配布および実行に必要な他の内部文字を追加できます。

3. 「OK」をクリックします。
Oracle Warehouse Builderにより、プロセス・フロー・エディタが起動し、「開始」アクティビティと「終了成功」アクティビティを持つプロセス・フローが表示されます。

4. これで、アクティビティと推移を持つプロセス・フローをモデル化できます。

5. 「プロセス・フローの定義の手順」の手順に従って続行します。

プロセス・フローへのアクティビティの追加

プロジェクト・ナビゲータを使用してプロセス・フロー内にアクティビティを追加できます。

アクティビティについて

アクティビティとは、マッピングの開始、またはドライブやディレクトリ上のファイルの存在確認など、プロセス・フローの作業単位を表します。Oracle Warehouse Builderでプロセス・フローを設計するときは、コンポーネント・パレットからアクティビティを選択し、キャンバスにドラッグしてパラメータを設定します。Oracle Warehouse Builderには、次のタイプのアクティビティが用意されています。

- Oracle Warehouse Builder固有のアクティビティ: このアクティビティを使用すると、マッピング、変換またはその他のプロセス・フローなどのOracle Warehouse Builderオブジェクトを起動できます。プロセス・フローではオブジェクトが実行され、COMMIT文が提供されます。

- ユーティリティ・アクティビティ: このアクティビティを使用すると、電子メール送信やファイル転送などのサービスを実行できます。

- コントロール・アクティビティ: このアクティビティを使用すると、プロセス・フローの進行状況と方向を制御できます。たとえば、複数のアクティビティを同時に起動するには「FORKアクティビティ」を使用します。

ユーティリティ・タイプおよびコントロール・タイプのアクティビティの場合、「アクティビティ・テンプレートの作成および使用」の説明に従ってアクティビティ・テンプレートを定義すると、そのパラメータを再利用できます。たとえば、電子メールの場合、電子メール・テンプレートを使用してSMTPサーバー名、ポート番号、アドレス・リストおよび優先順位を指定します。これで、プロセス・フローに電子メール・アクティビティを追加するときにそのテンプレートを再利用できます。

各アクティビティの説明は、「プロセス・フローでのアクティビティの使用」を参照してください。

アクティビティの追加

プロセス・フローへのアクティビティの追加手順:

1. プロジェクト・ナビゲータのプロセス・フローを右クリックしてプロセス・フローを開き、「開く」を選択します。

2. コンポーネント・パレットにリストされているアクティビティを表示します。
デフォルトでは、すべてのアクティビティがパレットにリストされます。特定のアクティビティを検索するには、パレットのリスト・ボックスを使用して、表示されるリストをOracle Warehouse Builder固有のアクティビティ、ユーティリティ・アクティビティまたはコントロール・アクティビティのいずれかのアクティビティのタイプに絞り込みます。

3. パレットからアクティビティを選択してキャンバスにドラッグします。
エディタにより、キャンバスにアクティビティが表示され、名前が青でハイライトされます。

4. デフォルト名を受け入れるには、「Enter」キーを押します。名前を変更するには、新規の名前を入力します。
エディタによって「構造」パネルにアクティビティがリストされます。このアクティビティのプロパティは、「プロパティ・インスペクタ」に表示されます。

5. 「プロパティ・インスペクタ」で、「構造」パネルの上部の 「新規アクティビティ・パラメータ」をクリックしてアクティビティのパラメータを追加します。
アクティビティのパラメータは、アクティビティのタイプに応じて異なります。各アクティビティには、Oracle Warehouse Builderによって読取り専用パラメータ「名前」、「方向」および「データ型」が定義されます。また、各パラメータには、プロパティ・インスペクタで「バインド」、「リテラル」、「値」および「説明」の値を指定できます。

たとえば、図8-3は、通知アクティビティのパラメータを示しています。パラメータは、DEFAULT_RESPONSE、EXPAND_ROLES、HTML_BODY、PERFORMER、PRIORITY、RESPONSE_PROCESSOR、RESPONSE_TYPE、SUBJECT、TEXT_BODYおよびTIMEOUTです。

図8-3 通知アクティビティのパラメータ

「図8-3 通知アクティビティのパラメータ」の説明

アクティビティのパラメータ

各パラメータには、次のプロパティがあります。

名前

アクティビティ・パラメータの名前のプロパティです。特定のパラメータについては、「例27-0、「プロセス・フローでのアクティビティ」で名前別でアクティビティを検索してください。

方向

方向プロパティはユーザーが作成していないパラメータに対しては読取り専用です。INの方向は、パラメータがそのアクティビティの入力パラメータであることを示します。

データ型

データ型プロパティはユーザーが作成していないパラメータに対しては読取り専用です。Oracle Warehouse Builderによってすべてのデフォルト・パラメータに適切なデータ型が割り当てられます。

バインド

ユーザーによって作成されていないパラメータのプロセス・フロー外からパラメータを渡す場合は、バインド・プロパティを使用します。パラメータをバインドのパラメータを割り当てると、値に割り当てるテキストはすべて上書きされます。

リテラル

フィールド「値」のパラメータに値を入力する場合は、値がリテラルか式であるかを示します。リテラル・データ型は、カレンダ・データ型以外はPL/SQLリテラル値仕様に従います。これらのデータ型は、プロセス・フローが異なるロケーションのデータ・ソースと対話するため標準書式で表されます。

リテラルに選択できる値はTrueまたはFalseです。リテラルをFalseに設定する場合は、値プロパティに入力した値はコントロール・センターで評価される有効なPL/SQL式である必要があります。リテラルをTrueに設定する場合、値はアクティビティのタイプに応じて異なります。アクティビティがマッピングまたはプロセス・フローなどのPL/SQLオブジェクトの場合、値はPL/SQLスニペットです。アクティビティがPL/SQLオブジェクトでない場合、値は言語依存です。

表8-1に、リテラル値の型、書式および例を示します。

表8-1 リテラル値の型の例

リテラル値の型

形式

例

DATE

YYYY-MM-DD

2006-03-21

DATE

YYYY-MM-DD HH24:MI:SS

2006-03-21 15:45:00

TIMESTAMP

YYYY-MM-DD HH24:MI:SS.FF9

2006-03-21 15:45:00.000000000

TIMESTAMP_TZ

YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM

2006-03-21 15:45:00.000000000 +01:00

YMINTERVAL

[+-]YYYYYYYYY-MM

+000000001-01

DMINVERVAL

[+-]DDDDDDDDD HH24:MI.SS.FF9

+000000001 01:01:01.000000001

値

これはパラメータの値です。一部のパラメータについては、値リストから選択できます。その他のパラメータには、デフォルト値が割り当てられています。この値は、新しい値を入力するか、「バインド」フィールドを使用して上書きできます。可能な値のリストまたはデフォルト値がない場合は、値を入力する必要があります。

説明

各プロパティの説明を入力できます(オプション)。

アクティビティ・テンプレートの作成と使用

プロセス・フローの設計中に、既存のアクティビティを再利用できます。たとえば、プロセス・フローでマッピングに失敗するたびに、同じ管理者グループに電子メールを送信できます。電子メール・アクティビティ用のテンプレートを作成したら、そのアクティビティを多数のプロセス・フローで使用したり編集します。

アクティビティ・テンプレートの作成手順:

1. プロジェクト・ナビゲータで、「プロセス・フロー」ノードの下にある「アクティビティ・テンプレート」ノードにナビゲートします。

2. テンプレート格納用のフォルダを作成するには、「アクティビティ・テンプレート」ノードを右クリックして「新規アクティビティ・テンプレート・フォルダ」を選択します。

3. アクティビティ・テンプレート・フォルダに名前を割当て、「OK」をクリックします。
作成予定のテンプレートのタイプごとにフォルダを作成することを検討してください。たとえば、電子メール・テンプレートとFTPテンプレートの格納用に、別のフォルダを作成できます。

4. アクティビティ・テンプレートの作成ウィザードが表示されます。

注意:
ウィザードが自動的に表示されない場合は、フォルダを右クリックして「新規アクティビティ・テンプレート」を選択します。

アクティビティ・テンプレートの作成ウィザードに表示されるプロンプトに従って、名前と説明ページ、パラメータ・ページおよびサマリー・ページを完了します。

5. プロセス・フローでのテンプレートの使用手順は、「アクティビティ・テンプレートの使用」を参照してください。

名前と説明ページ

アクティビティ・テンプレートのオブジェクトのネーミング規則は、「プリファレンス」ダイアログ・ボックスの「ネーミング・プリファレンス」・セクションで選択するネーミング・モードに応じて異なります。Oracle Warehouse Builderでは、ワークスペースの各オブジェクトのビジネス名と物理名が維持されます。ビジネス名は詳細な論理名です。物理名はOracle Warehouse Builderでコード生成時に使用される名前です。

あるネーミング・モードで作業中にオブジェクトに名前を付けると、Oracle Warehouse Builderでは他のモード用にデフォルト名が作成されます。したがって、ビジネス名モードで作業中に、大/小文字の両方、特殊文字および空白を含むアクティビティ・テンプレート名を割り当てると、Oracle Warehouse Builderではオブジェクトのデフォルトの物理名が作成されます。

作成するアクティビティ・テンプレートの名前を割り当ててタイプを選択します。また、オプションでテンプレートの説明も記述します。

ネーミング・アクティビティ

物理ネーミング・モードでは、アクティビティ名は1文字から30文字までの英数字で、空白は使用できません。ビジネス・ネーミング・モードでは、200文字以内という制限があり、空白と特殊文字を使用できます。両方のネーミング・モードにおいて、名前はプロジェクト全体で一意にする必要があります。

アクティビティの記述

説明は4,000文字までの英数字を使用でき、空白を含めることができます。アクティビティ・テンプレートの説明の指定はオプションです。

「アクティビティ・テンプレート」

次のアクティビティ・テンプレートは、リストから使用可能です。

- 割当

- 電子メール

- Enterprise Java Bean

- FTP

- ファイルが存在

- Javaクラス

- 手動

- 通知

- OMBPlus

- ステータスの設定

- SQLPlus

- ユーザー定義

- 待機

パラメータ・ページ

「アクティビティ・テンプレート」リストで選択したアクティビティのタイプに基づいてパラメータが表示されます。

アクティビティのデフォルト値を入力します。このデフォルト値は、プロセス・フローでアクティビティ・テンプレートを使用するときに、保持または編集できます。たとえば、電子メール・アクティビティ・テンプレートにはパラメータFROM_ADDRESSとREPLY_TO_ADDRESSが含まれます。プロセス・フローで電子メール・アクティビティ・テンプレートを使用する場合は、これらのパラメータのデフォルト値を別の値で上書きできます。

アクティビティ・テンプレートの使用

アクティビティ・テンプレートを使用する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「プロセス・フロー」ノードの下のプロセス・フロー・モジュールにナビゲートします。

2. プロセス・フロー・エディタを開くには、「プロセス・フロー」を右クリックして「開く」を選択します。

3. 「グラフ」メニューから、「追加」を選択してから、 「使用可能なオブジェクト」を選択します。
「使用可能なオブジェクトの追加」ダイアログ・ボックスが表示されます。

4. 使用するアクティビティ・テンプレートを選択し、「OK」をクリックします。
アクティビティ・テンプレートがプロセス・フロー・エディタのキャンバスに追加されます。プロセス・フロー内の「アクティビティ・テンプレート」は、通常のアクティビティと同様に動作します。

または、手順3と4のかわりに、アクティビティ・テンプレートをプロジェクト・ナビゲータからプロセス・フロー・エディタのキャンバスにドラッグ・アンド・ドロップできます。

アクティビティを編集するには、キャンバスのアクティビティを選択し、「構造」タブを使用してアクティビティの詳細を変更します。

推移について

推移を使用して、アクティビティがプロセス・フローで発生する順序および条件を示します。推移を使用すると、直前のアクティビティの完了状態を基にアクティビティを実行できます。

画像trans_not_specified.gifの説明

推移をキャンバスに追加する場合、デフォルトでは推移に適用される条件はありません。プロセス・フローは、前のアクティビティの終了後、前のアクティビティの状態に関係なく続行します。

ソース・アクティビティ・タイプによって、条件が適用されていない推移のセマンティクスは異なります。アクティビティ・タイプがFORKの場合、各推移がプロセス・フローで新しいフローを開始する複数の無条件推移があります。ソース・アクティビティ・タイプがFORKではない場合は、1つの無条件推移のみが存在し、他の条件遷移がアクティブ化されていない場合(IF...THEN...ELSIF...ELSE...END PL/SQL文の最後のELSE条件など)に使用されます。

有効な推移のためのルール

有効な推移は、次のルールに従う必要があります。

- STARTおよびEND以外のすべてのアクティビティには、少なくとも1つの受信推移を設定する必要があります。

- 複数の受信推移を設定できるのは、ANDおよびORアクティビティのみです。

- 複数の無条件の送信推移を設定できるのは、FORKアクティビティのみです。

- FORKアクティビティに設定できるのは、無条件の送信推移のみです。

- 列挙された結果セットがあるアクティビティには、考えられる各結果に対する送信推移、または無条件の送信推移が設定されている必要があります。

- アクティビティには、複雑な式の送信推移を設定しないことも、複数設定することもできます。

- 複雑な式の送信推移が設定されたアクティビティは無条件の送信推移である必要があります。

- END_LOOP推移には、関連するFOR_LOOPまたはWHILE_LOOPアクティビティへの無条件推移が1つのみ設定されている必要があります。

- FOR_LOOPまたはWHILE_LOOPの終了結果からの推移は、「ループ」が原因で実行される可能性のあるアクティビティには接続しないでください。

アクティビティの接続

推移を使用した依存関係の作成手順:

1. プロセス・フロー・エディタで選択モードで作業中の場合は、中心線に沿ってアクティビティ・アイコンの右の境界にマウスをポイントします。
カーソルが小さい水平の矢印として表示されます。この状態で、マウス・ボタンを使用してアクティビティに接続できます。

2. マウスの左ボタンを押しながら次のアクティビティにスクロールします。スクロールを開始すると、カーソルは下にプラス記号が付いた矢印として表示されます。カーソル矢印の下のプラス記号が円に変わるまで、次のアクティビティの方向にスクロールし続けます。マウス・ボタンを放すと、2つのアクティビティが接続されます。
2つのアクティビティの間に矢印が表示されます。推移にデフォルト名が割り当てられ、この推移が「構造」パネルに表示されます。この推移のプロパティは、「プロパティ・インスペクタ」に表示されます。

3. 「プロパティ・インスペクタ」で、推移の次の属性を表示または編集します。
名前: エディタによって変更できるデフォルト名が割り当てられます。

説明: 推移の説明(オプション)を入力できます。

条件: キャンバス上に初めて描画する推移はデフォルトでは無条件です。デフォルトを上書きして条件を適用するには、推移を選択します。プロパティ・インスペクタに推移プロパティが表示されます。「条件」フィールドの右の省略記号ボタンをクリックし、「プロパティの編集」ダイアログ・ボックスで推移に適用する条件を選択します。条件を選択すると、キャンバスの推移線の関連アイコンが表示されます。

ソース: このプロパティは読取り専用で、接続内の最初のアクティビティを示します。

ターゲット: このプロパティは読取り専用で、接続内の2番目のアクティビティを示します。

アクティビティの構成

Sqlplusなどの一部のアクティビティには追加構成が必要です。特定のアクティビティのこれらの構成詳細は、「第27章、「プロセス・フローでのアクティビティ」にリストされています。

パラメータおよび変数の使用

プロセス・フローとアクティビティでは概念を渡すPL/SQLパラメータがサポートされており、データを渡してパラメータ化で再利用できます。これは、パラメータまたは変数として実装されたデータ・ストアを通じて実現されます。プロセス・フローでは、データ・ストア間でデータを渡すことができます。

- パラメータを使用すると、プロセス・フローとそのアクティビティまたはサブプロセス間でデータを渡すことができます。

- 変数を使用すると、プロセス・フローの実行期間中維持される一時データの記録域を使用できます。変数はアクティビティ間のデータ移動に使用されます。

図8-4に、データが渡される方向を示します。

図8-4 データが渡されるスコープと方向の間の関係

「図8-4 データが渡されるスコープと方向の間の関係」の説明

プロセス・フローは、次のルールに従ってデータ・ストア間でデータを渡しています。

1. プロセス・フロー変数は、プロセス・フロー・パラメータから初期化できますが、逆にプロセス・フロー・パラメータをプロセス・フロー変数から初期化することはできません。

2. アクティビティ・パラメータは、プロセス・フロー変数およびプロセス・フロー・パラメータ間で双方向にデータを渡すことができます。

3. 推移式は、そのソース・アクティビティ・パラメータ、プロセス・フロー・パラメータおよびプロセス・フロー変数と照合して評価できます。

4. データ・ストアには、同じスコープ内の別のデータ・ストアからはアクセスできません。

ネームスペースの使用

ネームスペースを使用すると、PL/SQLと同様に、内部スコープのデータ・ストアで外部スコープのデータ・ストアを非表示にできます。非表示のデータ・ストア名は、データ・ストア名をプロセス・フロー名またはアクティビティで修飾することによって参照できます。次に例を示します。

My_PROC.VAR1

ネームスペースによって、同じスコープ内の別のデータ・ストアからデータを参照することはできません。

バインドの使用

データ・ストアは、外部スコープ内の別のデータ・ストアにバインドでき、これによって、双方向のデータの受渡しがサポートされます。

プロセス・フローのバインドは、次のルールがあるPL/SQLと同じセマンティクスに従います。

1. すべてのデータは、プロセス・フロー内で値で渡されます。

2. 変数はバインドによって初期化できます。値を戻すことはできません。

3. INOUTパラメータは、外部スコープ内のINパラメータにバインドできます。値で渡される出力値は、監査後に廃棄されます。

変数は、データをプロセス・フロー・パラメータに渡すことができないため、割当て演算子を使用してこれを行い、変数およびパラメータにバインドします。

式について

Oracle Warehouse Builderでは、パラメータ値の導出に関するPL/SQL式の使用、および複雑な式の推移の使用がサポートされています。

式では、データ・ストアに対して正しく入力された値を生成する必要があります。VARCHARからの自動変換がサポートされています。式が推移と関連付けられている場合、結果はBOOLEANであることが必要です。

評価時に、式はその式が含まれている外部スコープにアクセスします。このため、アクティビティのパラメータの式では、その式の評価でプロセス・フロー変数およびプロセス・フロー・パラメータを使用できます。

PL/SQL式は、アクティビティのプロセスを要求したコントロール・センター・ユーザーを対象に実行されます。ただし、Oracle Workflowスキーマがリモート・データベース・インスタンスでホスト管理されている場合は、かわりに生成済データベース・リンクの有効ユーザーが使用されます。別のコントロール・センター・ユーザーは、プロセス・フローの構成および評価ロケーションの指定によって選択できます。この結果、式は、コントロール・センター・ユーザーにアクセス可能なPL/SQLファンクションを参照できます。

グローバル式の値

Oracle Warehouse Builderでは、現在のアクティビティおよび所有プロセス・フローの追加データ値を式で使用できます。

表8-2に、これらのグローバル式の値を示します。

表8-2 グローバル式の値

識別子

タイプ

説明

NUMBER_OF_ERRORS

NUMBER

アクティビティの実行完了時にレポートされたエラー数

NUMBER_OF_WARNINGS

NUMBER

アクティビティの実行完了時にレポートされた警告の数

RETURN_RESULT

VARCHAR2(64)

結果のテキスト表示。「SUCCESS」、「WARNING」、「ERROR」など

RETURN_RESULT_NUMBER

NUMBER

RESULT_RESULT1 = SUCCESS2 = WARNING3 = ERRORの列挙。

RETURN_CODE

NUMBER

整数0から255。アクティビティ固有であり、オペレーティング・システムのリターン・コードと同じ

PARENT_AUDIT_ID

NUMBER

コール側プロセス・フローの監査ID

AUDIT_ID

NUMBER

アクティビティの監査ID

表8-3に、提供される追加定数を示します。

表8-3 追加定数

識別子

タイプ

説明

SUCCESS

NUMBER

SUCCESSの列挙値

警告

NUMBER

WARNINGの列挙値

ERROR

NUMBER

ERRORの列挙値

推移条件の定義

推移エディタを使用して、列挙された条件の1つを指定するか、複合条件の式を記述します。列挙された条件は正常終了、警告およびエラーなどです。表8-4に示すようにキャンバスに表示されます。

表8-4 推移条件のタイプ

アイコン

推移条件

説明

正常終了

プロセス・フローは、直前のアクティビティが正常終了した場合にのみ続行されます。

警告

プロセス・フローは、直前のアクティビティが警告で終了した場合にのみ続行されます。

エラー

プロセス・フローは、直前のアクティビティがエラーで終了した場合にのみ続行されます。

複合

プロセス・フローは、直前のアクティビティで式に指定した基準を満たす値が戻された場合にのみ続行されます。

拡張

プロセス・フローは、直前の通知アクティビティが拡張結果で終了した場合にのみ続行されます。

拡張推移条件は、拡張結果を戻す唯一のアクティビティ・タイプであるため、通知アクティビティにのみ有効です。このアイコンをアクティビティが取得するのは、#MAIL、#NOMATCH、#TIEまたは#TIMEOUTの結果に設定されている場合です。

表8-5に、拡張推移の出力と説明を示します。

表8-5 拡張推移の出力と説明

出力

説明

#NOMATCH

候補が最低票数を得票しなかった投票通知の結果。

#TIE

同一得票数となった投票通知の結果。

#MAIL

通知にメール・エラーが発生しました。通知の電子メールを受信しなかった受信者がいるため、メールが取り消されました。

#TIMEOUT

通知は、構成された時間内に応答を受信しませんでした。

アクティビティに送信アクティビティが1つしかない場合は、表8-4にリストされた条件のいずれかを指定するか、推移を無条件にしておくことができます。

複数の送信推移に関する使用ルールは、アクティビティのタイプに応じて異なります。一般ルールでは、SUCCESS、WARNING、ERRORおよびUNCONDITIONALをそれぞれ1つと無制限の数の複合条件を使用できます。ただし、AND、FORKおよびORなどのコントロール・アクティビティを使用する場合は例外です。

あるアクティビティからの複数の送信推移を追加する場合は、条件が競合しないことを確認してください。競合が発生するのは、プロセス・フローの論理で複数の送信推移がTRUEと評価される場合です。

表8-5に、MAP1に可能な3つの完了状態に基づいて異なるアクティビティがトリガーされるプロセス・フローの一部を示します。一度に満たすことができるのはこれらの条件の1つのみであるため、競合は発生しません。無条件推移または別の条件付き推移を追加しようとすると、2つの推移条件がTRUEとなり、プロセス・フローが無効になります。

図8-5 送信推移条件

「図8-5 送信推移条件」の説明

例: プロセス・フローを使用した変数名付きフラット・ファイルへのアクセス

シナリオ

会社はレガシー・システムに依存しており、そのシステムでは、データはフラット・ファイルに毎日書き込まれ、作成日時に基づいた一意の名前がファイルに割り当てられています。ソースとして生成済フラット・ファイルを使用して、リレーショナル・データベースにデータを転送およびロードするマッピングを作成するとします。ただし、マッピングには固定の名前を持つファイルが必要ですが、この場合はファイルが作成されるたびにソース・ファイル名は変更されます。

解決策

Oracle Warehouse Builderでは、特定のディレクトリに生成済ファイルを置き、ファイル名を固定ファイル名に変更して、従属するマッピングを開始するプロセス・フローを設計できます。これでマッピングのソースとして固定フラット・ファイル名を使用できます。

事例

この事例では、変数名を使用するフラット・ファイルを生成するレガシー・システムからデータを抽出するために、プロセス・フローおよびマッピングを作成する方法について説明します。プロセス・フローはユーザー定義アクティビティの使用状況によって異なります。この事例には、次の情報が前提となります。

- 生成済フラット・ファイル: レガシー・システムにより、毎日の売上データが含まれるフラット・ファイルが生成されます。ファイルはc:\staging_filesディレクトリに保存され、日時に基づいたsales010520041154.datなどのファイル名が付けられます。生成されたすべてのファイルは、salesという語で始まり、その後にタイムスタンプ情報が続く形で同じディレクトリに保存されます。

- 固定フラット・ファイル名: 生成済ファイルの名前をs_data.datに変更することに決定します。これは、マッピングでフラット・ファイル・ソースとして参照する名前です。

- プロセス・アクティビティ: OWF_EXTという名前のプロセス・フローを設計し、DOSのバッチ・コマンドを実行して生成済ファイルをコピーし、s_data.datとして保存して、元の生成済ファイルを削除します。

この目的は、必ず生成済フラット・ファイルの名前が適切に変更されてからマッピングの実行をトリガーするロジックを作成することです。

生成ごとに名前が変わる生成済フラット・ファイルからデータを抽出するには、次の各項を参照してください。

1. プロセス・フローの作成

2. 「ユーザー定義アクティビティのパラメータの設定」

3. 「ユーザー定義アクティビティの構成」

4. マッピングの設計

5. 配布および実行

プロセス・フローの作成

ユーザー定義済アクティビティが正常に完了したら、マッピングを開始するプロセス・フローを作成します。プロセス・フローの作成の詳細は、「プロセス・フローを定義する手順」を参照してください。

図8-6は、生成済フラット・ファイルからデータを抽出するために作成するプロセス・フローを示しています。

図8-6 マッピングに推移するユーザー定義アクティビティを使用するプロセス・フロー

「図8-6 マッピングに推移するユーザー定義アクティビティを使用するプロセス・フロー」の説明

ユーザー定義アクティビティのパラメータの設定

この項では、生成済ファイルの名前を変更するDOSコマンドの指定方法について説明します。ユーザー定義済アクティビティから発行するDOSコマンドは、次のようになります。

copy c:\staging_files\sales*.* c:\staging_files\s_data.dat
del c:\staging_files\sales*.*

最初のコマンドは、一時ファイルをs_data.datという固定の名前のファイルにコピーします。2番目のコマンドは、最初に生成されたファイルを削除します。

Oracle Warehouse Builderにコマンド・スクリプトが格納されているファイルを指定するか、またはOracle Warehouse Builderのユーザー・インタフェースにコマンドを格納できます。次の方法から1つを選択します。

- 方法1: Oracle Warehouse Builder内へのスクリプトの書込み

- 方法2: Oracle Warehouse Builderの外で保持されるスクリプトのコール

方法1: Oracle Warehouse Builder内へのスクリプトの書込み

Oracle Warehouse Builder内にスクリプトを保持する必要がある場合はこの方法を選択します。スクリプトが小さく、非常に柔軟にする必要がない場合はこの方法の使用を検討してください。

この方法では、SCRIPTパラメータの値列にスクリプトを書き込むか、またはコピーして貼り付けます。COMMANDパラメータには、c:\winnt\system32\cmd.exeなどのDOSシェル・コマンドのパスを入力します。また、PARAMETER_LISTパラメータの「値」列に${Task.Input}変数を入力します。

この事例では示されていませんが、Oracle Warehouse Builder内にスクリプトを保持している場合はスクリプト内に置換変数を使用できます。これにより、サーバー・ファイル、アカウントおよびパスワードが変更されたときにアクティビティを更新する必要がなくなります。

表8-6には、ユーザー定義アクティビティに入力できる置換変数がリストされています。Workingは、ランタイム・サービスをホストするコンピュータを示し、この事例ではローカル・コンピュータを示します。Remoteはランタイム・サービス・ホスト以外のサーバーを示します。「ユーザー定義アクティビティの構成」の説明に従って、アクティビティを構成する際のリモート・サーバーおよびローカル・サーバーを指定します。これらの値は、配布時にロケーションを登録するときに設定されます。

表8-6 ユーザー定義アクティビティの置換変数

変数

値

${Working.Host}

ランタイム・サービス・ホストのロケーションのホスト値。

${Working.User}

ランタイム・サービス・ホストのロケーションのユーザー値。

${Working.Password}

ランタイム・サービス・ホストのロケーションのパスワード値。

${Working.RootPath}

ランタイム・サービス・ホストのロケーションのルート・パス値。

${Remote.Host}

ランタイム・サービス・ホスト以外のロケーションのホスト値。

${Remote.User}

ランタイム・サービス・ホスト以外のロケーションのユーザー値。

${Remote.Password}

ランタイム・サービス・ホスト以外のロケーションのパスワード値。

${Remote.RootPath}

ランタイム・サービス・ホスト以外のロケーションのルート・パス値。

${Deployment.Location}

配布ロケーション。

方法2: Oracle Warehouse Builderの外で保持されるスクリプトのコール

追加メンテナンスに問題がない場合は、Oracle Warehouse Builderに必要なコマンドを含むスクリプトが記載されているファイルを指定できます。この方法はより柔軟で、プロセス・フローの実行中にパラメータを渡すことができます。

次の例は、Oracle Warehouse Builderの外の外部プロセスのスクリプトをコールする方法、およびプロセス・フローの実行中にパラメータをスクリプトに渡す方法を示しています。この例ではWindowsのオペレーティング・システムを想定しています。その他のオペレーティング・システムには、適切な対応コマンドを発行します。

ユーザー定義アクティビティ以外でのスクリプトのコール手順:

1. スクリプトを作成し、ファイル・ディレクトリに保存します。Fたとえば、次のようなスクリプトを記述し、c:\staging_files\rename_file.bat:として保存できます。
copy c:\staging_files\%1*.dat c:\staging_files\s_data.dat

del c:\staging_files\%1*.dat

このサンプル・スクリプトでは、プロセス・フローの実行中にパラメータ%1をスクリプトに渡します。このパラメータは、sales010520041154.などの、一時ファイル名の最初の文字を含む文字列を表します。

2. キャンバスの「開始」アクティビティを選択し、「構造」ビューのアクティビティ・パラメータを表示して編集します。
開始パラメータを追加するには、キャンバスの「開始」アクティビティを選択し、「構造」タブの「新規アクティビティ・パラメータの追加」をクリックします。FILE_STRINGという名前の開始パラメータを作成します。実行中、Oracle Warehouse Builderからrename_file.batスクリプト内の%1パラメータに渡すFILE_STRINGの値を入力するように要求されます。

3. キャンバスのユーザー定義アクティビティを選択し、そのパラメータを編集します。
COMMANDパラメータには、「値」という名前の列内のスクリプトへのパスを入力します。必要に応じて、スクロール・バーを使用してスクロール・ダウンし、列を表示します。この例では、c:\staging_files\rename_file.batと入力します。

PARAMETER_LISTでは、「バインド」という名前の行をクリックし、開始アクティビティFILE_STRINGに定義したパラメータを選択します。

外部プロセスのその他すべてのパラメータのデフォルト設定を受け入れます。

ユーザー定義アクティビティの構成

ユーザー定義アクティビティの送信推移に条件を適用する場合は、ユーザー定義アクティビティを構成するときにその条件の意味を定義する必要があります。

ユーザー定義アクティビティの構成手順:

1. ナビゲーション・ツリーのプロセス・フローを右クリックして、「構成」を選択します。
プロセス・フローの構成プロパティが新規タブに表示されます。

2. ユーザー定義アクティビティ・ノード、ユーザー定義アクティビティ、パスの設定ノードの順に展開します。Oracle Warehouse Builderにより構成設定が表示されます。

3. リモート・ロケーション、作業ロケーションおよび配布ロケーションに関連する置換変数を使用してOracle Warehouse Builderユーザー・インタフェースにスクリプトを書き込んだ場合は、この手順を完了します。リストを使用して値を選択します。
この事例では置換変数を使用しないため、デフォルト値を使用します。

4. プロセス・フローを配布するコンピュータに配布ロケーションを設定します。

5. 実行設定ノードで、「ステータスとしてリターンを使用」をTrueに設定します。
この構成手順により、プロセス・フローは外部プロセスのリターン・コードを使用してどの送信推移をアクティブ化するかを判断します。この事例のプロセス・フローでは、外部プロセスが正常な値を返す場合は、プロセス・フローの正常な推移が継続され、ダウンストリーム・マッピングが実行されます。

マッピングの設計

これで、s_data.datをソースとして使用してマッピングを設計できます。PL/SQLマッピングまたはSQL*Loaderマッピングを作成できます。PL/SQLでは、フラット・ファイル・ソースを外部表にマップし、PL/SQLマッピングに使用可能なすべての演算子を使用して残りのマッピングを設計します。SQL*Loaderでは、フラット・ファイル・ソースをステージング表にマップし、SQL*Loaderマッピングで許可された演算子にマッピングを制限します。

配布および実行

マッピングを配布します。また、プロセス・フローOWF_EXTを含むプロセス・フロー・パッケージまたはモジュールも配布します。

プロセス・フローを手動で実行します。プロセス・フローを実行すると、Oracle Warehouse Builderにより、スクリプトFILE_STRINGに渡すために作成したパラメータの値を入力するように要求されます。この事例では、?sales(疑問符マークはセパレータ)と入力します。外部アクティビティにより、コマンドrename_file.bat salesが実行されます。

後続の手順

プロセス・フローを手動で正常に実行した後、スケジュールの作成を検討します。プロセス・フローおよびマッピングを実行するための毎日のスケジュールを定義できます。Oracle Warehouse Builderで配布するマッピングおよびプロセス・フローなどの操作を実行する時間および頻度を計画するために、スケジュールを使用します。

関連項目:
スケジュールの定義の詳細は、「スケジュールの定義」を参照してください。

例: プロセス・フローを使用したリモート・ファイルの転送

シナリオ

会社の開発者が、データを抽出、変換およびロードするマッピングを設計しました。マッピングのソース・データは、ETLプロセスを実行するサーバーとは異なるサーバーに存在します。リモートのコンピュータからファイルを転送して依存マッピングをトリガーするロジックを作成する必要があります。

解決策

Oracle Warehouse Builderでは、ファイル転送プロトコル(FTP)コマンドを実行するプロセス・フローを設計でき、続いてマッピングを開始できます。プロセス・フローを有効にするには、FTPコマンドに、ランタイム・サービスがインストールされているサーバーからのデータ転送、またはそのサーバーへのデータ転送が含まれる必要があります。ランタイム・サービスがインストールされていない2つのコンピュータ間でデータを移動するには、最初にデータをランタイム・サービスがインストールされているホスト・コンピュータに転送し、次にデータを2番目のコンピュータに転送します。

プロセス・フローを設計し、FTPコマンドの成功または失敗に応じて様々なアクティビティを開始できます。

事例

この事例では、あるコンピュータから別のコンピュータへファイルを転送する方法および依存マッピングを開始する方法について説明します。この事例では、すべての必要なサーバー、ファイルおよびユーザー・アカウントの例を示します。

- データ・ホスト・コンピュータ: ソース・データをホストするコンピュータには、ユーザー名とパスワード、ホスト名、データが存在するディレクトリが必要です。この事例では、データをホストするコンピュータはsalessrv1という名前のUNIXサーバーです。ソース・データは、/usr/stageディレクトリにあるsalesdata.txtというフラット・ファイルです。

- ランタイム・サービス・ホスト・コンピュータ: この事例では、Windowsオペレーティング・システムとともに、Oracle Warehouse Builderおよびランタイム・サービスがlocalというコンピュータにインストールされています。localによりマッピングおよびプロセス・フローが実行されます。

- マッピング: この事例には、ソースとしてc:\tempのlocalに格納されたsalesdata.txtのコピーを使用するsalesresultsというマッピングが含まれます。

- FTPコマンド: この事例では、Windowsオペレーティング・システムでの基本的なFTPの使用例を示します。

salessrv1にあるフラット・ファイルがlocalコンピュータに確実にコピーされるロジックを作成し、salesresultsマッピングの実行をトリガーすることが目的です。

ファイルを転送して依存マッピングを開始するには、次の各項を参照してください。

1. ロケーションの定義

2. プロセス・フローの作成

3. FTPアクティビティのパラメータの設定

4. FTPアクティビティの構成

5. 配布するプロセス・フローの登録

前の項の手順を完了すると、プロセス・フローを実行できます。

ロケーションの定義

ロケーションとは、ウェアハウス環境内の様々なデータ・ソースおよび接続先を論理的に表したものです。このシナリオでは、ロケーションはフラット・ファイルへのアクセスに必要なホストおよびパス名情報を論理的に表しています。Oracle Warehouse Builderでは、プロセス・フローを配布および実行するためにこれらの定義が必要になります。プロセス・フローを配布する場合は、各ロケーションに関連付けられたホストおよびパス名情報を入力するよう要求されます。データ転送に関与するコンピュータごとにロケーションを定義する必要があります。

ロケーションを定義するには、ロケーション・ナビゲータで適切なロケーション・ノードを右クリックし、 「新規」を選択します。salessrv1の場合は、「ロケーション」ノードの「ファイル」を右クリックし、REMOTE_FILESというロケーションを作成します。ローカルにこの手順を繰返し、ロケーションLOCAL_FILESを作成します。

リモート・ロケーションの場合は、ホスト名、ファイルへのルート・パス、ユーザー名およびパスワードを入力します。Oracle Warehouse Builderではパスワードの安全性は保持されます。ローカル・ロケーションの場合は、ホスト名のみが必要です。

プロセス・フローの作成

プロセス・フロー・エディタを使用して、成功するとsalesresultsマッピングに推移するFTPアクティビティを使用するプロセス・フローを作成します。

プロセス・フローは図8-7のように表示されるはずです。

図8-7 マッピングに推移するFTPを使用するプロセス・フロー

「図8-7 マッピングに推移するFTPを使用するプロセス・フロー」の説明

FTPアクティビティのパラメータの設定

この項では、リモート・サーバーsalessrv1からローカル・コンピュータにデータを転送するためのコマンドを指定する方法について説明します。アクティビティ・ビューのFTPアクティビティ・パラメータに値を入力することにより、FTPパラメータを指定します。

Oracle Warehouse Builderでは、より柔軟にFTPコマンドを指定できます。次の方法から1つを選択します。

- 方法1: Oracle Warehouse Builder内へのスクリプトの書込み: Oracle Warehouse Builder内にスクリプトを保持する場合、またはサーバーに対するパスワード・セキュリティが必要条件である場合は、この方法を選択します。
この方法では、SCRIPTパラメータの値列にスクリプトを書き込むか、またはコピーして貼り付けます。COMMANDパラメータには、c:\winnt\system32\ftp.exeなど、FTP実行可能ファイルへのパスを入力します。また、PARAMETER_LISTパラメータの「値」列にTask.Input変数を入力します。

- 方法2: Oracle Warehouse Builderの外で保持されるスクリプトのコール: パスワード・セキュリティの問題がない場合、Oracle Warehouse BuilderではFTPコマンド、ユーザー名およびパスワードを含むスクリプトを持つファイルを指定できます。
ファイル・システムのファイルをコールするには、Oracle Warehouse Builderがそのファイルを指定するようにPARAMETER_LISTに適切なコマンドを入力します。Windowsオペレーティング・システムの場合、次のように入力します。

?"-s:<file path\file name>"?

"たとえば、Cドライブの一時ディレクトリにあるmove.ftpという名前のファイルをコールするには、次を入力します。

?"-s:c:\temp\move.ftp"?

このメソッドの場合、SCRIPTパラメータを空白のままにします。

例: FTPアクティビティのためのOracle Warehouse Builderへのスクリプトの書込み

次の例は、方法1について説明しています。スクリプトおよび置換変数を使用する例です。スクリプトは、salessrv1にある正しいディレクトリにナビゲートされ、置換変数はセキュリティおよび様々な用途のために利用されます。

この例ではWindowsのオペレーティング・システムを想定しています。その他のオペレーティング・システムには、適切な対応コマンドを発行します。

FTPアクティビティ内でのスクリプトの定義手順:

1. キャンバスのFTPアクティビティを選択し、プロパティ・インスペクタのアクティビティ・パラメータを表示して編集します。

2. COMMANDパラメータには、値列のFTP実行可能ファイルへのパスを入力します。必要に応じて、スクロール・バーを使用して右へスクロールし、値列を表示します。
Windowsオペレーティング・システムの場合は、通常、FTP実行可能ファイルはc:\winnt\system32\ftp.exeに格納されています。

3. PARAMETER_LISTパラメータの場合は、Task.Input変数を入力します。
Oracle Warehouse Builder内でスクリプトを定義し、WindowsのFTPを使用している場合は、PARAMETER_LISTに?"-s:${Task.Input}"?を入力する必要があります。

UNIXの場合は、?"${Task.Input}"?を入力します。

4. 「構造」タブのSCRIPTパラメータにナビゲートし、ハイライト表示します。
プロパティ・インスペクタにSCRIPTパラメータのプロパティが表示されます。

5. プロパティ・インスペクタに表示される「値」フィールドの右の省略ボタンをクリックします。
SCRIPT値エディタが表示されます。FTPコマンドをエディタに書込みまたはコピー・アンド・ペーストします。

図8-8のスクリプトには${Remote.User}と${Remote.Password}が含まれます。これらは置換変数です。詳細は、「置換変数の使用」を参照してください。

図8-8 置換変数を使用したSCRIPT値エディタ

「図8-8 置換変数を使用したSCRIPT値エディタ」の説明

置換変数の使用

置換変数は、Oracle Warehouse BuilderでFTPスクリプトを記述して格納することを選択した場合にのみ使用できます。

置換変数を使用すると、サーバー・ファイル、アカウントおよびパスワードが変更されたときにFTPアクティビティを更新する必要がなくなります。たとえば、FTPアクティビティを使用して特定のディレクトリの下のsalessrv1のファイルにアクセスする10個のプロセス・フローを作成するとします。ファイルを移動すると、置換変数を使用しない場合は各FTPアクティビティを個別に更新する必要があります。W置換変数を使用すると、更新が必要になるのは「ロケーションの定義」で説明するロケーション情報のみです。

置換変数はパスワードのセキュリティを維持する上でも重要です。サーバー・パスワードの置換変数を使用したFTPアクティビティが実行されると、関連ロケーションに入力した安全なパスワードへの変数が解決されます。

表8-7には、FTPアクティビティに入力できる置換変数がリストされています。Workingは、ランタイム・サービスをホストするコンピュータを示し、この事例ではローカル・コンピュータを示します。Remoteはデータ転送間連のその他のサーバーを示します。FTPアクティビティを構成する場合は、どのサーバーをリモートにし、どのサーバーをローカルにするかを指定します。詳細は、「FTPアクティビティの構成」を参照してください。

表8-7 FTPアクティビティに対する置換変数

変数

値

${Working.RootPath}

ランタイム・サービス・ホストのロケーションのルート・パス値。

${Remote.Host}

ランタイム・サービス・ホストとの間のデータ転送に関与するロケーションに対するホスト値。

${Remote.User}

ランタイム・サービス・ホストとの間のデータ転送に関与するロケーションに対するユーザー値。

${Remote.Password}

ランタイム・サービス・ホストとの間のデータ転送に関与するロケーションに対するパスワード値。

${Remote.RootPath}

ランタイム・サービス・ホストとの間のデータ転送に関与するロケーションに対するルート・パス値。

FTPアクティビティの構成

完全なプロセス・フローの構成の一環として、FTPアクティビティを構成します。

FTPアクティビティの構成手順:

1. ナビゲーション・ツリーのプロセス・フローを右クリックして、「構成」を選択します。

2. 「FTPアクティビティ」、「パスの設定」の順に展開します。Oracle Warehouse Builderにより構成設定が表示されます。

3. REMOTE_LOCATIONにはRemoteのロケーションを設定し、LOCAL_LOCATIONにはWorkingのロケーションを設定します。

4. クリックして「ステータスとしてリターンを使用」を選択します。これで、プロセス・フローはFTPリターン・コードを使用してどの送信推移をアクティブ化するかを判断できます。この事例のプロセス・フローでは、FTPが正常な値1を返す場合は、プロセス・フローは正常に推移が継続されてsalesresultsマッピングが実行されます。

配布するプロセス・フローの登録

これらの手順を完了すると、プロセス・フローを配布および実行できます。プロセス・フローを配布するには、右クリックして、プロセス・フロー・モジュールまたはナビゲーション・ツリーのパッケージから「配布」を選択し、デプロイメント・マネージャを起動します。デプロイメント・マネージャにより、REMOTE_LOCATIONおよびLOCAL_LOCATIONを登録するよう要求されます。

これで、プロセス・フローを実行できます。

9 カスタム変換の定義

データの変換は、抽出、変換およびロード(ETL)ツールの主要な機能の1つです。Oracle Warehouse Builderには、データの変換方法がいくつか用意されています。この章では、変換について説明し、Oracle Warehouse Builderを使用したカスタム変換の作成方法を説明します。また、変換定義をインポートする方法についても説明します。

この章の内容は次のとおりです。

- Oracle Warehouse Builderを使用したデータの変換について

- カスタム変換の定義

- カスタム変換の編集

- 変換のインポート

- 例: 既存のPL/SQLコードの再使用

- Oracle以外のプラットフォームでのファンクションの使用

- ファンクションの構成

Oracle Warehouse Builderを使用したデータの変換について

Oracle Warehouse Builderには、ソース・データに必要な変換を定義できる直感的なユーザー・インタフェースが用意されています。ソース・データを変換するには、次のいずれかの方法を使用します。

- 変換: デザイン・センターにはデータ変換に使用する変換セットが含まれています。Oracle Warehouse Builderに用意されている事前定義済変換を使用、または要件に適合するカスタム変換を定義できます。
カスタム変換はOracleモジュールで定義する他のデータ・オブジェクトと同じようにOracle Databaseに配布できます。変換の詳細は、「変換について」を参照してください。

- 演算子: マッピング・エディタには、ソースからターゲットへのデータの移動方法を定義するときに共通変換を定義できる事前作成された変換演算子のセットが含まれています。変換演算子とは、事前作成されたPL/SQLファンクション、プロシージャ、パッケージ・ファンクションおよびパッケージ・プロシージャです。入力データを取得し、演算を実行し、結果を生成します。
事前作成された演算子のほかに、変換演算子を使用してマッピング・エディタで定義するカスタム変換を使用できます。これらの演算子の詳細は、第26章 「データ・フロー演算子」を参照してください。

データ変換にOracle Warehouse Builderを使用する利点

Oracle Warehouse Builderを使用すると、PL/SQLを再利用および独自のカスタムPL/SQL変換を記述できます。これらのカスタム変換はOracle Warehouse Builderマッピングで使用できます。

すべての主要リレーショナル・データベース管理システムはSQLをサポートしており、SQLで記述されたすべてのプログラムはわずかな修正を加えるだけで、あるデータベースから別のデータベースに移動できます。つまり、組織内のすべてのSQLナレッジはOracle Warehouse Builderに完全移植可能です。Oracle Warehouse Builderを使用すると、既存の複雑なカスタム・コードをインポートおよび維持できます。

カスタム変換の定義

カスタム変換には、プロシージャ、ファンクションおよびパッケージが含まれます。Oracle Warehouse Builderには、各タイプのカスタム変換を作成するためのウィザードが用意されています。カスタム変換は、パブリックOracleカスタム・ライブラリまたはプロジェクト内のモジュールに含めることができます。

パブリックOracleカスタム・ライブラリのカスタム変換

パブリックOracleカスタム・ライブラリの一部であるカスタム変換は、定義されているワークスペースのすべてのプロジェクトで使用できます。たとえば、ADD_EMPLというファンクションをワークスペースREP_OWNERのパブリックOracleカスタム・ライブラリに作成するとします。このプロシージャはREP_OWNERのすべてのプロジェクトで使用できます。

グローバル・ナビゲータのパブリック変換ノードのカスタム・ノードを使用して、ワークスペース内のすべてのプロジェクトで使用できるカスタム変換を定義します。

カスタム変換をパブリックOracleカスタム・ライブラリに作成する手順は、次のとおりです。

1. グローバル・ナビゲータから「パブリック変換」ノードを展開し、次にOracleノードを展開します。

2. カスタム・ノードを右クリックして「新規」を選択します。
作成できる変換タイプが含まれる「新規ギャラリ」ダイアログボックスが表示されます。ここには、ファンクション、プロシージャおよびパッケージが含まれています。PL/SQLタイプはパッケージの一部としてのみ作成できます。

3. 作成する変換タイプを選択し、「OK」をクリックします。

4. テーブル・ファンクションの場合は、テーブル・ファンクションの作成ウィザードが表示されます。このウィザードを使用して、「表ファンクションの定義」の説明に従って表ファンクションを定義します。
ファンクション、プロシージャ、パッケージには、それそれ「ファンクションの作成」ダイアログボックス、「プロシージャの作成」ダイアログボックス、「パッケージの作成」ダイアログボックスが表示されます。名前とオプションの説明を入力し、「OK」をクリックします。パッケージの場合は、プロジェクト・ナビゲータにパッケージが追加されます。ファンクションおよびプロシージャの場合は、エディタが表示されます。そのエディタを使用して、ファンクションまたはプロシージャを定義します。

「ファンクションおよびプロシージャの定義」および「PL/SQLタイプの定義」を参照してください。

プロジェクト内のカスタム変換

現在のモジュールまたはプロジェクトでのみ必要なカスタム変換を定義する必要が生じる場合があります。そのような場合は、プロジェクトのOracleモジュールにカスタム変換を定義できます。Oracleモジュールにカスタム変換を定義すると、定義されているプロジェクトのすべてのモジュールから変換にアクセスできます。たとえば、 PROJECT1とPROJECT2の2つのプロジェクトを所有するREP_OWNERというワークスペースの所有者を考えてみてください。PROJECT1のSALESというOracleモジュールに、CALC_SALというプロシージャを定義します。このプロシージャはPROJECT1に属するすべてのモジュールで使用できますが、PROJECT2にはアクセスできません。

Oracleモジュールにカスタム変換を定義する手順は、次のとおりです。

1. プロジェクト・ナビゲータから、カスタム変換を定義するOracle Warehouse Builderモジュール・ノードを展開します。

2. 変換ノードを右クリックして「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。

3. 作成する変換タイプを選択し、「OK」をクリックします。
ファンクションおよびプロシージャの場合は、「ファンクションの作成」ダイアログ・ボックスまたは「プロシージャの作成」ダイアログ・ボックスが表示されます。名前とオプションの説明を入力し、「OK」をクリックします。その変換用のエディタが表示されます。エディタのタブを使用して、変換を定義します。パッケージの場合は、名前と説明を定義してから「OK」をクリックすると、プロジェクト・ナビゲータにパッケージが追加されます。続けて、パッケージの一部である変換を定義できます。

テーブル・ファンクションの場合は、テーブル・ファンクションの作成ウィザードのようこそページが表示されます。PL/SQLタイプはパッケージにのみ作成できます。

関連項目:
各変換タイプの定義の詳細は、次の各項を参照してください。

- ファンクションおよびプロシージャの定義

- PL/SQLタイプの定義

- 「表ファンクションの定義」

ファンクションおよびプロシージャの定義

ファンクションまたはプロシージャを定義するファンクション・エディタまたはプロシージャ・エディタを使用して、次の手順を実行します。

- カスタム変換のネーミング

- パラメータの定義

- 実装の指定

注意:
ファンクションはプラットフォーム間でコピーおよび貼付けできません。たとえば、ファンクションをOracleモジュールからコピーして、SQL Serverモジュールに貼り付けることはできません。

カスタム変換のネーミング

「名前と説明」ページを使用してカスタム変換を記述します。このページでは、次の詳細を指定します。

- 名前: カスタム変換の名前を表します。ネーミング規則の詳細は、「データ・オブジェクトのネーミング規則」を参照してください。

- 説明: カスタム変換の説明を表します。このフィールドはオプションです。

パラメータの定義

「パラメータ」タブを使用して、変換の入力パラメータと出力パラメータを定義、変更または削除します。ファンクションの場合は、「戻り型」という追加フィールドが表示されます。「戻り型」フィールドはファンクションにより戻される値のデータ型を表します。リスト内の使用可能なオプションから戻り型を選択します。

Oracleモジュールに定義された変換の場合は、各パラメータに次の詳細を指定します。

- 名前: パラメータ名を入力します。

- データ型: リストからパラメータのデータ型を選択します。

- I/O: パラメータのタイプを選択します。使用可能なオプションは「入力」、「出力」および「I/O」です。

- 必須: パラメータを必須として指定するには「はい」を、オプションとして指定するには「いいえ」を選択します。

- デフォルト値: パラメータのデフォルト値を入力します。デフォルト値は、ファンクションまたはプロシージャの実行時にパラメータ値を指定しない場合に使用されます。

DB2モジュールで定義された変換には、各パラメータの詳細(名前、データ型、長さ、精度、スケール)が含まれます。

長さは文字データ型にのみ適用され、パラメータの長さを表します。精度はパラメータに使用できる合計桁数を表し、数値データ型にのみ適用されます。スケールは小数点以下の合計桁数を表し、数値データ型にのみ適用されます。

SQL Serverモジュールで定義された変換には、各パラメータの詳細(名前、データ型、長さ、精度、スケール、必須、デフォルト値)が含まれます。

実装の指定

実装タブを使用して、変換の実装詳細(コードなど)を指定または変更します。「生成」をクリックし、実装コードを検証および生成します。

エディタを終了する前に、ファンクションまたはプロシージャの定義の変更を保存してください。ツールバーの「すべて保存」をクリック、または「ファイル」メニューの「保存」を選択すると変更を保存できます。

表ファンクションの定義

表ファンクションとは、入力として行セットを取得し、出力として行セットを生成するファンクションです。表ファンクションへの入力は、スカラー・データ型、コレクション・データ型(PL/SQLレコード、可変長配列およびネストした表)またはRefカーソルです。表ファンクションの出力は、ネストした表または可変長配列のいずれかです。表ファンクションは通常のデータベース表のように問合せできます。

パラレル化では、テーブル・ファンクションから戻された行を次のプロセスに直接ストリーム化できるため、テーブル・ファンクションの出力の中間のステージングが不要になります。

テーブル・ファンクションによって、よりフレキシブルでパワフルな変換および使用が可能になります。提供された変換演算子を使用しないで、独自の特別な変換を作成してユーザー定義集計やデータ・マイニングなどのタスクを実行できます。テーブル・ファンクションによりパラレルでパイプライン化された変換の実行がサポートされ、結果的にパフォーマンスが向上します。

関連項目:
テーブル・ファンクションの詳細は、『Oracle Database SQL言語クイック・リファレンス』を参照してください。

次の手順を使用して、テーブル・ファンクションを定義します。

1. テーブル・ファンクションのネーミング

2. 戻り型の指定

3. テーブル・ファンクションの入出力パラメータの指定

4. パラレル化オプションの指定(オプション)

5. データ・ストリーム・オプションの指定(オプション)

6. テーブル・ファンクション実装の指定

テーブル・ファンクションのネーミング

名前ページの次のフィールドを使用して、テーブル・ファンクションの説明をします。

名前: テーブル・ファンクション名を表します。名前はOracle Warehouse Builderオブジェクトの命名規則に従う必要があります。

テーブル・ファンクションの名前を変更するには、名前を選択して新しい名前を入力します。テーブル・ファンクションの名前を変更したら、再配布する必要があります。また、テーブル・ファンクションを使用するマッピングも同期化します。

「説明」: テーブル・ファンクションの説明(オプション)を表し、最大4,000文字長。

戻り型の指定

テーブル・ファンクションの戻り値型は、ネスト化した表と可変長配列のコレクション・タイプにできます。戻り型ページに、戻り値型として選択できるコレクション・タイプが表示されます。テーブル・ファンクションの戻り型として使用するコレクション・タイプを選択します。

Oracleモジュールで定義されたテーブル・ファンクションの場合は、次の戻り値型を使用できます。

- テーブル・ファンクションが定義されたプロジェクトに含まれるOracleモジュールで定義されたネスト化した表および可変長配列

- グローバル・ナビゲータのパッケージの一部として定義された公開されたネスト化した表

グローバル・ナビゲータを使用して公開されたテーブル・ファンクションの場合、戻り値型として使用できるのは公開されたネスト化した表と公開された可変長配列のみです。

テーブル・ファンクションの入出力パラメータの指定

パラメータページまたはパラメータタブを使用して、テーブル・ファンクションの入力パラメータを定義します。各パラメータに、次の詳細を入力します。

- 名前: パラメータ名を入力します。

- タイプ: リストからパラメータのデータ型を選択します。
ネスト化した表以外のパラメータは、Oracleスカラー・データ型またはユーザー定義のコレクション・タイプにできます。通常、テーブル・ファンクションの入力パラメータは、レコード・タイプ、表タイプまたはREFカーソル・タイプなどのコレクション・タイプです。コレクション・タイプはユーザー定義であるため、テーブル・ファンクション・パラメータのデータ型として使用する前に定義する必要があります。コレクション・タイプを定義できるのは、公開されたパッケージまたはOracleモジュール内のパッケージの一部としてのみです。

- I/O: パラメータのタイプを選択します。テーブル・ファンクションに使用できるオプションは入力のみです。

- 必須: パラメータを必須として指定するには「はい」を、オプションとして指定するには「いいえ」を選択します。

- デフォルト値: パラメータのデフォルト値を入力します。デフォルト値は、テーブル・ファンクションの実行時にパラメータ値を指定しない場合に使用されます。

パラメータを変更するには、パラメータ値を選択して新しい値を入力します。変更後は、テーブル・ファンクションを再配付します。

パラレル化オプションの指定

テーブル・ファンクションの実行をパラレル化すると、ステージング・テーブルを省略できます。テーブル・ファンクションの実行をパラレル化すると、テーブル・ファンクションによって戻される行を中間ステージングなしで次のプロセスに直接ストリームできます。これによって、テーブル・ファンクションのマルチスレッドおよび同時実行が可能になります。

テーブル・ファンクションのパラレル実行は、複数のスレーブ・プロセスを使用して実行されます。テーブル・ファンクションをパラレルで実行するには、データのパーティション化に使用するREFカーソル・タイプの入力パラメータを1つ指定する必要があります。

テーブル・ファンクションの実行をパラレル化するための詳細は、次のとおりです。

- パラレル: テーブル・ファンクションの実行をパラレル化する必要があることを示す場合は、このオプションを選択します。
このオプションは、1つ以上の入力パラメータがREFカーソル・タイプの場合のみ有効になります。

- パーティション・メソッド パーティション・メソッドを選択します。パーティション・メソッドとして、すべて、レンジまたはハッシュを選択できます。

- パラメータ: パーティション化を実行する必要がある入力パラメータを選択します。パーティション化パラメータとして選択できるパラメータはREFカーソル・タイプのみです。したがって、このフィールドにはタイプREFカーソルの入力パラメータのみがリストされます。

- パーティション化の属性: パーティション化を実行する必要があるREFカーソルの属性を選択します。「使用可能な属性」セクションで、テーブル・ファンクションの入力パラメータの基準となるREFカーソルの属性をリストします。属性を選択し、矢印を使用して「選択済」セクションへ移動します。

データ・ストリーム・オプションの指定

「順序」ページを使用して、テーブル・ファンクションでストリームを実行します。データ・ストリームを実行する際、テーブル・ファンクションはカーソル引数からフェッチする行を順序付けまたはクラスタ化します。順序付けまたはクラスタ化は特定のキーまたはキー列を使用して実行します。クラスタ化を行うと、入力キーの値が同じ行が表示されますが、行の順序付けは行われません。

データ・ストリームを実行するには、このページで次の情報を入力します。

- 「順序付け方法」: データ・ストリームに使用する方法を指定します。行の順序付けには「順序」を、行のクラスタ化には「クラスタ」を選択できます。

- 「順序付けの属性」: 順序付けまたはクラスタ化を実行する属性を選択します。「使用可能な属性」セクションには、REFカーソル・タイプの入力パラメータの属性がリストされます。属性を1つ以上選択し、矢印を使用して属性を「選択済」セクションへ移動します。

テーブル・ファンクション実装の指定

実装ページで、次の詳細を指定します。

- 「パイプライン」Pipelined: 「パイプライン」オプションを選択してパイプライン・テーブル・ファンクションを作成します。パイプラインは、すべてのテーブル・ファンクションの処理完了後に単一バッチで戻すのではなく、作成されるたびに反復して行を戻します。パイプラインを使用すると、テーブル・ファンクションは行を迅速に戻すことができ、テーブル・ファンクションの結果のキャッシュに必要なメモリー量を減らすことができます。問合せの応答時間が短縮されます。パイプラインを使用すると、テーブル・ファンクションを仮想テーブルとして使用できます。

- 実装: 「実装」セクションでは、テーブル・ファンクション定義ごとにコメント付きのサンプル・コードが提供されます。「コード・エディタ」をクリックすると、デフォルトのサンプル・コードを編集し、テーブル・ファンクションのコードを入力できるコード・エディタが表示されます。

PL/SQLタイプの定義

「PL/SQLタイプの作成」ウィザードを使用して、PL/SQLタイプを作成します。PL/SQLタイプはパッケージ内に定義する必要があり、単独では存在できません。

PL/SQLタイプについて

PL/SQLタイプを使用すると、コレクション・タイプ、レコード・タイプおよびREFカーソル・タイプをOracle Warehouse Builderに作成できます。PL/SQLタイプは、サブプログラムのパラメータとして、またはファンクションに対する戻り型として使用します。PL/SQLタイプをサブプログラムに対するパラメータとして使用すると、任意の数の要素を処理できます。バルクSQLを使用してデータベース表との間でデータを移動するには、コレクション・タイプを使用します。PL/SQLタイプの詳細は、Oracle Database PL/SQL言語リファレンスを参照してください。

Oracle Warehouse Builderを使用すると、次のPL/SQLタイプを作成できます。

- PL/SQLレコード・タイプ
レコード・タイプを使用すると、パッケージにレコードを定義できます。レコードとは、複数のフィールドを持つ複合データ構造です。関連する項目を保持し、その項目を単一のパラメータを使用してサブプログラムに渡すには、レコードを使用します。

たとえば、EMPLOYEEレコードにはID、名前、姓、住所、誕生日、雇用日、給与など、従業員に関連する詳細を格納できます。EMPLOYEEレコードに基づいてレコード・タイプを作成し、そのレコード・タイプを使用してサブプログラム間で従業員データを渡すことができます。

- REFカーソル・タイプ
REFカーソル・タイプを使用すると、パッケージ内にREFカーソルを定義できます。REFカーソルは単一の問合せにバインドされず、異なる複数の結果セットを指し示すことができます。REFカーソルは、あるサブプログラムで問合せを実行し、その結果を別のサブプログラムで処理する場合に使用します。また、REFカーソルを使用すると、問合せの結果セットを、PL/SQLが格納されたサブプログラムと様々なクライアント(OCIクライアントやOracle Formsアプリケーションなど)との間で渡すことができます。

REFカーソルはすべてのPL/SQLクライアントで使用できます。たとえば、REFカーソルをPL/SQLホスト環境(OCIやPro*Cプログラムなど)で宣言し、そのREFカーソルを入力ホスト変数(バインド変数)としてPL/SQLに渡すことができます。PL/SQLエンジンを持つOracle Formsなどのアプリケーション開発ツールでは、クライアント側全体でカーソル変数を使用できます。また、リモート・プロシージャ・コールを介して、カーソル変数をクライアントとデータベース・サーバーとの間で受け渡すことができます。

- ネストした表のタイプ
ネストした表のタイプを使用して、パッケージ内のネストした表を定義します。ネストした表は順序を設定していない要素セットで、すべてが同じデータ型です。要素数が宣言されていない1つのディメンション配列に類似しています。要素が表でもあるネストした表を作成して多次元配置をモデル化できます。

たとえば、任意の数の従業員IDを保持できるネストした表のタイプを作成できます。このネストした表のタイプは、ネストした表のタイプに含まれる従業員レコードのみを処理するサブプログラムにパラメータとして渡すことができます。

PL/SQLタイプの使用例

SALES表には、全世界に事業所を持つ組織の毎日の売上が格納されます。この表には、売上ID、売上日、顧客ID、製品ID、売上金額、売上数量および売上の計上に使用した通貨が含まれます。経営側は、指定期間の全世界の売上を単一の通貨(たとえばUSドル)で分析することを望んでいます。このため、すべての売上値をUSドルに換算する必要があります。通貨換算レートは毎日変化する可能性があるため、売上金額は、売上日における売上通貨の換算レートを使用して計算する必要があります。

PL/SQLレコード・タイプを使用したソリューション

図9-1は、PL/SQLレコード・タイプを使用して指定した通貨での売上金額の取得に使用するマッピングを表示したものです。

図9-1 マッピングで使用したPL/SQLレコード・タイプ

「図9-1 マッピングで使用したPL/SQレコード・タイプ」の説明

このマッピングでは、様々な通貨で格納された個々の売上データを基に、指定通貨での売上値を取得し、このデータをターゲット表にロードします。このマッピングを作成する手順は、次のとおりです。

1. グローバル・ナビゲータで、パッケージを作成します。このパッケージで、CURR_CONV_PROCというプロシージャを作成します。
このプロシージャは、指定期間内に毎日Webサイトから通貨換算値を取得します。このプロシージャの入力パラメータは、売上通貨、売上値を換算する必要のある通貨および通貨換算が必要な期間です。このデータは、タイプCURR_CONV_RECのPL/SQLレコード・タイプに格納されます。このレコード・タイプは、日付と変換値の2つの属性を含んでいます。

PL/SQLレコード・タイプはパッケージの一部として作成します。

2. 変換演算子を含むマッピングを作成します。この演算子は、CURR_CONV_PROCプロシージャにバインドされます。

3. マッピング入力パラメータ演算子を使用して、変換演算子の入力パラメータの値を指定します。
変換演算子の出力グループは、タイプCURR_CONV_RECのPL/SQLレコード・タイプです。

4. オブジェクトの拡張演算子を使用して、このレコード・タイプに格納された個々の値を取得し、表CURRENCY_TABに格納します。

5. アグリゲータ演算子を使用して、各注文書の売上詳細を集計します。
SALES表はトランザクション表であり、データを正規化形式で格納します。各注文書の集計売上を取得するには、アグリゲータ演算子を使用して売上データを集計します。

6. ジョイナ演算子を使用して、集計後の売上詳細を結合します。この集計後の売上詳細は、CURRENCY_TAB表のデータを使用したアグリゲータ演算子の出力です。売上日が結合条件として使用されます。

7. 式演算子を使用して売上金額と通貨換算レートを乗算し、必要な通貨での売上合計を取得します。換算後の売上データをCONV_SALES_TAB表にロードします。

PL/SQLタイプの作成

PL/SQLタイプは、デザイン・センターのプロジェクト・エクスプローラまたはグローバル・エクスプローラで作成できます。

「PL/SQLタイプの作成」ウィザードを使用して、PL/SQLタイプを作成します。「PL/SQLタイプの作成」ウィザードを表示するには、パッケージの下の「PL/SQLタイプ」のノードを右クリックし、「新規PL/SQLタイプ」を選択します。「PL/SQLタイプの作成」ウィザードの「ようこそ」ページが表示されます。「次へ」をクリックし、 ウィザードに表示される指示に従って次の各ページを完了します。

- 名前と説明ページ

- 属性ページ

- 戻り型ページ

- サマリー・ページ

名前と説明ページ

「名前と説明」ページを使用して、PL/SQLタイプの名前とオプションの説明を入力します。また、このページを使用して、作成するPL/SQLタイプのタイプを選択します。

次のいずれかのPL/SQLタイプを作成できます。

- PL/SQLレコード・タイプ

- REFカーソル・タイプ

- NESTED TABLE型

各PL/SQLタイプの詳細は、「PL/SQLタイプについて」を参照してください。

名前を指定し、作成するPL/SQLタイプのタイプを選択した後、「次へ」をクリックします。

属性ページ

「属性」ページを使用して、PL/SQLレコード・タイプの属性を定義します。PL/SQLレコード・タイプの属性のみを指定します。PL/SQLレコードには、少なくとも1つの属性が必要です。

属性ごとに、次の内容を定義します。

- 名前: 属性の名前。この名前はレコード・タイプ内で一意にする必要があります。

- データ型: 属性のデータ型。リストからデータ型を選択します。

- 長さ: データ型の長さ(文字データ型の場合)。

- 精度: 属性に使用できる合計桁数(数値データ型の場合)。

- スケール: 小数点以下の合計桁数(数値データ型の場合)。

- 秒精度: 日時フィールドの小数部の桁数。0から9までの数値を入力できます。秒精度はTIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。

「次へ」をクリックして次の手順に進みます。

戻り型ページ

「戻り型」ページを使用して、PL/SQLタイプの戻り型を選択します。REFカーソルおよびネストした表を作成する場合は、戻り型のみを指定する必要があります。

REFカーソルを定義する手順は、次のとおりです。

REFカーソルの戻り型は、PL/SQLレコード・タイプのみです。PL/SQLレコード・タイプの名前がわかっている場合は、「検索」フィールドに名前を入力し、「実行」をクリックして検索できます。

「検索」フィールドの下のエリアに使用可能なPL/SQLタイプが表示されます。これらのPL/SQLタイプは、「パブリック」と「プライベート」の2つのノードにグループ化されます。「パブリック」ノードを開いて、Oracle共有ライブラリに含まれているPL/SQLタイプを表示します。このタイプは、パッケージ名別にグループ化されます。「プライベート」ノードには、Oracleモジュール内のパッケージの一部として作成されるPL/SQLタイプが含まれています。現在のプロジェクトに属しているPL/SQLタイプのみが表示されます。各Oracleモジュールはノードで表されます。モジュール内では、PL/SQLタイプは属しているパッケージごとにグループ化されます。

ネストした表を定義する手順は、次のとおりです。

ネストした表の場合、戻り型はスカラー・データ型またはPL/SQLレコード・タイプになります。PL/SQLタイプによって戻される型に基づき、次のオプションのいずれかを選択します。

- 戻り型としてスカラー型を選択します。
このオプションを使用すると、スカラー型を戻すPL/SQLタイプを作成できます。リストを使用してデータ型を選択します。

- 戻り型としてPL/SQLレコード・タイプを選択します。
このオプションを使用すると、PL/SQLレコード・タイプを戻すPL/SQLタイプを作成できます。戻されるPL/SQLレコード・タイプの名前がわかっている場合は、「検索」フィールドにその名前を入力して「実行」をクリックします。検索結果がオプションの下のエリアに表示されます。

表示される使用可能なタイプのリストから戻り型を選択することもできます。このオプションの下のエリアには、「パブリック」と「プライベート」の2つのノードがあります。「パブリック」ノードには、Oracle共有ライブラリの一部であるPL/SQLレコード・タイプが含まれています。PL/SQLレコード・タイプは、属しているパッケージ別にグループ化されます。「プライベート」ノードには、現在のプロジェクト内で各Oracleモジュールの変換として作成されるPL/SQLレコード・タイプが含まれています。このPL/SQLレコード・タイプは、モジュール別にグループ化されます。PL/SQLタイプによって戻されるPL/SQLレコード・タイプを選択します。

「次へ」をクリックして、PL/SQLタイプの作成に進みます。

サマリー・ページ

サマリー・ページには、ウィザードの各ページで選択したオプションが表示されます。オプションを確認します。オプションを変更するには、「戻る」をクリックします。「終了」をクリックすると、PL/SQLタイプが作成されます。

カスタム変換の編集

カスタム変換の定義は、エディタを使用して編集できます。プロパティの編集は常に一貫して行ってください。たとえば、パラメータの名前を変更した場合は、実装コード内の名前も変更する必要があります。

カスタム変換を編集したら、次の点を確認してください。

- 編集した変換を参照するマッピング演算子と編集済変換との同期化
同期化すると、マッピング内の変換の定義が編集中に変更した内容で更新されます。

- 編集済変換が含まれるマッピングの再配布

ファンクションまたはプロシージャの定義の編集

「ファンクションの編集」ダイアログ・ボックスを使用すると、ファンクション定義を編集できます。プロシージャ定義を編集するには、「プロシージャの編集」ダイアログ・ボックスを使用します。

ファンクション、プロシージャまたはパッケージを編集する手順は、次のとおりです。

1. プロジェクト・ナビゲータから、変換が作成されているOracleモジュールを開きます。次に、「変換」ノードを開きます。
パブリックOracleカスタム・ライブラリに含まれる変換を編集するには、グローバル・ナビゲータから「パブリック変換」ノードを開き、次に「カスタム」ノードを開きます。

2. 編集するファンクション、プロシージャまたはパッケージの名前を右クリックし、「開く」を選択します。または、ファンクション、プロシージャまたはパッケージの名前をダブルクリックします。
ファンクションの場合は、ファンクション・エディタが表示されます。プロシージャの場合は、プロシージャ・エディタが表示されます。次のタブを使用して、ファンクションまたはプロシージャの定義を編集します。

- 「名前」タブは、「カスタム変換のネーミング」を参照

- 「パラメータ」タブは、「パラメータの定義」を参照

- 「実装」タブは、「実装の指定」を参照

パッケージの場合は、「変換ライブラリの編集」ダイアログ・ボックスが表示されます。編集できるのは、パッケージの名前と説明のみです。パッケージ内に含まれるファンクションおよびプロシージャは、ファンクションまたはプロシージャの編集に使用する手順で編集できます。

PL/SQLタイプの編集

PL/SQLタイプの編集ダイアログ・ボックスを使用すると、PL/SQLタイプの定義を編集できます。PL/SQLタイプを編集する手順は、次のとおりです。

1. プロジェクト・ナビゲータから、PL/SQLタイプを含むOracleモジュールを開きます。次に、「変換」ノードを開きます。
パブリックOracleカスタム・ライブラリに格納されているPL/SQLタイプを編集するには、グローバル・ナビゲータで「パブリック変換」 ノードを開き、次に「カスタム」ノードを開きます。

2. PL/SQLタイプを含むパッケージを開き、次に「PL/SQLタイプ」ノードを開きます。

3. 編集するPL/SQLタイプの名前を右クリックし、「開く」を選択します。または、PL/SQLタイプの名前をダブルクリックします。
「PL/SQLタイプの編集」ダイアログ・ボックスが表示されます。PL/SQLタイプを編集するタブは、次のとおりです。

- 「名前」タブ

- 「属性」タブ

- 「戻り型」タブ

「名前」タブ

「名前」タブには、PL/SQLタイプの名前と説明が表示されます。このタブを使用して、PL/SQLタイプの名前または説明を編集します。

PL/SQLタイプの名前を変更するには、名前を選択して新しい名前を入力します。

「属性」タブ

「属性」タブには、PL/SQLレコード・タイプの既存の属性の詳細が表示されます。このタブは、PL/SQLレコード・タイプに対してのみ表示されます。既存の属性を変更、新規属性を追加または属性を削除できます。

新規属性を追加するには、空白行の「名前」列をクリックして属性の詳細を指定します。属性を削除するには、属性を表す行の左側にあるグレーのセルを右クリックし、「削除」を選択します。

「戻り型」タブ

「戻り型」タブを使用して、PL/SQLタイプの戻り型の詳細を変更します。REFカーソル・タイプの場合は、戻り型はPL/SQLレコードである必要があります。ネストした表の場合、戻り型はPL/SQLレコード・タイプまたはスカラー・データ型になります。

テーブル・ファンクションの編集

テーブル・ファンクションの定義を編集し、その仕様を変更できます。

テーブル・ファンクションの編集手順:

1. テーブル・ファンクションが含まれるOracleモジュール、変換ノード、テーブル・ファンクション・ノードの順に開きます。
グローバル・テーブル・ファンクションの場合は、「パブリック変換」ノードを開き、次に「カスタム」ノードを開きます。

2. テーブル・ファンクションがパッケージに属する場合は、最初にパッケージ・ノードを開きます。編集するテーブル・ファンクションの名前を右クリックし、「開く」を選択します。または、テーブル・ファンクションの名前をダブルクリックします。
テーブル・ファンクション・エディタが表示されます。

3. 次のタブを使用して、テーブル・ファンクションを編集します。

- 名前タブは、「テーブル・ファンクションのネーミング」を参照

- 戻り型タブは、「戻り型の指定」を参照

- パラメータ・タブは、「テーブル・ファンクションの入出力パラメータの指定」を参照

- パーティション・タブは、「パラレル化オプションの指定」を参照

- 順序タブは、「データ・ストリーム・オプションの指定」を参照

- 実装タブは、「テーブル・ファンクション実装の指定」を参照

変換のインポート

インポート・メタデータ・ウィザードを使用して、Pl/SQLファンクション、プロシージャおよびパッケージをOracle Warehouse Builderプロジェクトへインポートします。スカラー・ファンクションはIBM DB2およびSQL Serverデータベースからもインポートできます。

インポートしたPL/SQLファンクションおよびプロシージャは編集、保存、および配布できます。また、インポートしたパッケージの表示および変更もできます。

プロジェクトへの変換のインポート手順:

1. プロジェクト・ナビゲータからプロジェクト・ノードを開き、次に「データベース」ノードを開きます。

2. 変換のインポート元のデータベースに対応するノードを開きます。
たとえば、OracleデータベースからPL/SQLファンクションをインポートする場合は、Oracleノードを右クリックします。IBM DB2UDBデータベースからスカラー・ファンクションをインポートする場合は、DB2ノードを右クリックします。

3. 変換のインポート先のモジュールを右クリックし、「インポート」を選択してから、「データベース・オブジェクト」を選択します。
Oracle Warehouse Builderにより、インポート・メタデータ・ウィザードのようこそページが表示されます。

4. 「次へ」をクリックします。

5. 「フィルタ情報」ページの「オブジェクト・タイプ」フィールドで、「PL/SQL変換」を選択してPL/SQL変換をOracleモジュールにインポート、または「変換」を選択してスカラー・ファンクションをIBM DB2 UDBまたはSQL Serverモジュールにインポートします。

6. 「次へ」をクリックします。
インポート・メタデータ・ウィザードのオブジェクト選択ページが表示されます。

7. 「使用可能なオブジェクト」リストから、ファンクション、プロシージャまたはパッケージを選択します。オブジェクトを「選択したオブジェクト」リストに移動する際、単一オブジェクトの移動には右矢印を、複数オブジェクトの移動には「すべて移動」ボタンをクリックします。

8. 「次へ」をクリックします。
インポート・メタデータ・ウィザードのサマリーとインポート・ページが表示されます。

9. インポート情報を確認します。選択した内容を変更するには、「戻る」をクリックします。

10. 「終了」をクリックして、選択したPL/SQL変換をインポートします。
Oracle Warehouse Builderで、インポート結果ページが表示されます。

11. 「OK」をクリックしてインポートを続行します。インポート・プロセスを取り消すには、「元に戻す」をクリックします。
インポートしたPL/SQL情報が、データをインポートしたモジュールの「変換」ノードに表示されます。

インポートしたPL/SQLを使用した制限

次の制限が、インポートしたPL/SQLの使用に適用されます。

- インポートしたPL/SQLパッケージは編集できません。

- ラップされたPL/SQLオブジェクトは読み取ることができません。

- インポートしたパッケージの本体は編集できますが、インポートしたパッケージの仕様は編集できません。

例: 既存のPL/SQLコードの再使用

シナリオ

ある映画レンタル会社では、CUST_RENTAL_ACTIVITY表に定期的に顧客のレンタル状況を更新しており、この表には各顧客のレンタル売上および延滞料金データが格納されています。この表は様々なメーリング・キャンペーンに使用されます。たとえば、最新のメーリング・キャンペーンでは、高額な延滞料金のある顧客に対し、新しいペイパービュー・サービスを提供します。現在、この映画レンタル会社では、PL/SQLパッケージを使用して顧客のデータを一元化しています。既存のPL/SQLパッケージは、データベースにアクセスすることにより手動で保持する必要があります。このコードはOracle 8iデータベースで実行されます。

CREATE OR REPLACE PACKAGE RENTAL_ACTIVITY AS
PROCEDURE REFRESH_ACTIVITY(SNAPSHOT_START_DATE IN DATE);
END RENTAL_ACTIVITY;
/
CREATE OR REPLACE PACKAGE BODY RENTAL_ACTIVITY AS
PROCEDURE REFRESH_ACTIVITY(SNAPSHOT_START_DATE IN DATE) IS
CURSOR C_ACTIVITY IS
SELECT
CUST.CUSTOMER_NUMBER CUSTOMER_NUMBER,
CUST.CUSTOMER_FIRST_NAME CUSTOMER_FIRST_NAME,
CUST.CUSTOMER_LAST_NAME CUSTOMER_LAST_NAME,
CUST.CUSTOMER_ADDRESS CUSTOMER_ADDRESS,
CUST.CUSTOMER_CITY CUSTOMER_CITY,
CUST.CUSTOMER_STATE CUSTOMER_STATE,
CUST.CUSTOMER_ZIP_CODE CUSTOMER_ZIP_CODE,
SUM(SALE.RENTAL_SALES) RENTAL_SALES,
SUM(SALE.OVERDUE_FEES) OVERDUE_FEES
FROM  CUSTOMER CUST, MOVIE_RENTAL_RECORD SALE
WHERE SALE.CUSTOMER_NUMBER = CUST.CUSTOMER_NUMBER AND
SALE.RENTAL_RECORD_DATE >= SNAPSHOT_START_DATE
GROUP BY
CUST.CUSTOMER_NUMBER,
CUST.CUSTOMER_FIRST_NAME,
CUST.CUSTOMER_LAST_NAME,
CUST.CUSTOMER_ADDRESS,
CUST.CUSTOMER_CITY,
CUST.CUSTOMER_STATE,
CUST.CUSTOMER_ZIP_CODE;

V_CUSTOMER_NUMBER NUMBER;
V_CUSTOMER_FIRST_NAME VARCHAR2(20);
V_CUSTOMER_LAST_NAME VARCHAR2(20);
V_CUSTOMER_ADDRESS VARCHAR(50);
V_CUSTOMER_CITY VARCHAR2(20);
V_CUSTOMER_STATE VARCHAR2(20);
V_CUSTOMER_ZIP_CODE VARCHAR(10);
V_RENTAL_SALES NUMBER;
V_OVERDUE_FEES NUMBER;

BEGIN
OPEN C_ACTIVITY;
LOOP
EXIT WHEN C_ACTIVITY%NOTFOUND;
FETCH
C_ACTIVITY
INTO
V_CUSTOMER_NUMBER,
V_CUSTOMER_FIRST_NAME,
V_CUSTOMER_LAST_NAME,
V_CUSTOMER_ADDRESS,
V_CUSTOMER_CITY,
V_CUSTOMER_STATE,
V_CUSTOMER_ZIP_CODE,
V_RENTAL_SALES,
V_OVERDUE_FEES;

UPDATE CUST_ACTIVITY_SNAPSHOT
SET
CUSTOMER_FIRST_NAME = V_CUSTOMER_FIRST_NAME,
CUSTOMER_LAST_NAME = V_CUSTOMER_LAST_NAME,
CUSTOMER_ADDRESS = V_CUSTOMER_ADDRESS,
CUSTOMER_CITY = V_CUSTOMER_CITY,
CUSTOMER_STATE = V_CUSTOMER_STATE,
CUSTOMER_ZIP_CODE = V_CUSTOMER_ZIP_CODE,
RENTAL_SALES = V_RENTAL_SALES,
OVERDUE_FEES = V_OVERDUE_FEES,
STATUS_UPDATE_DATE = SYSDATE
WHERE
CUSTOMER_NUMBER = V_CUSTOMER_NUMBER;

IF SQL%NOTFOUND THEN
INSERT INTO CUST_ACTIVITY_SNAPSHOT
( CUSTOMER_NUMBER,
CUSTOMER_FIRST_NAME,
CUSTOMER_LAST_NAME,
CUSTOMER_ADDRESS,
CUSTOMER_CITY,
CUSTOMER_STATE,
CUSTOMER_ZIP_CODE,
RENTAL_SALES,
OVERDUE_FEES,
STATUS_UPDATE_DATE )
VALUES
( V_CUSTOMER_NUMBER,
V_CUSTOMER_FIRST_NAME,
V_CUSTOMER_LAST_NAME,
V_CUSTOMER_ADDRESS,
V_CUSTOMER_CITY,
V_CUSTOMER_STATE,
V_CUSTOMER_ZIP_CODE,
V_RENTAL_SALES,
V_OVERDUE_FEES,
SYSDATE );
END IF;
END LOOP;
END REFRESH_ACTIVITY;
END RENTAL_ACTIVITY;
/

解決策

この事例では、既存のカスタムPL/SQLパッケージをOracle Warehouse Builderにインポートする利点とPL/SQLコードの自動的な保持、更新および再生成を行う機能を使用する利点について説明します。Oracle Warehouse Builderによりデータベースの新機能を自動的に利用できるようになり、またデータベースの新規バージョン向けに最適化されたコードを生成することにより更新されます。たとえば、Oracle8i用のPL/SQLパッケージを持つ場合は、パッケージをOracle Warehouse BuilderにインポートすることによりOracle8i、Oracle9i、Oracle 10gまたはOracle 11gのコードを生成できます。

また、カスタム・パッケージをインポートしてOracle Warehouse Builderマッピングを介した操作を再作成することにより、操作を透過的に実行および監視できます。そうでない場合は、データベースに手動でアクセスしてコードを検証および更新する必要があります。またOracle Warehouse Builderでは、ランタイム監査ブラウザでコードの実行が監視されエラーが記録されている間に、すべてのETL操作に対して系統および影響分析を実行することも可能です。

事例

次の手順に従って、Oracle Warehouse BuilderにPL/SQLコードを移行できます。

- 手順1: カスタムPL/SQLパッケージのインポート

- 手順2: ブラック・ボックス・マッピングの作成 Oracle Warehouse Builderマッピング内のカスタム変換を使用します。

- 手順3: カスタム・コードのマッピングへの再実装 レガシーPL/SQLコードを新規のOracle Warehouse Builderマッピングに再実装し、カスタム・パッケージを段階的に廃止します。

- 手順4: Oracle Database 11g用のコードの生成

次の手順に従って、Oracle Warehouse Builder内のカスタムPL/SQLパッケージを処理します。

手順1: カスタムPL/SQLパッケージのインポート

プロジェクト・ナビゲータで、PL/SQLパッケージrefresh_activity(DATE)をインポートする先のOracleモジュール内の「変換」ノードを開きます。インポート・メタデータ・ウィザードを使用して、「変換」を右クリック、「インポート」を選択、「データベース・オブジェクト」を選択してパッケージをインポートします。このウィザードのフィルタ情報ページで、PL/SQL変換をインポートしていることが示されます。

インポートの終了後、パッケージrefresh_activity(DATE)が「変換」フォルダの「パッケージ」ノードの下に表示されます。

手順2: ブラック・ボックス・マッピングの作成

変更を加えることなく、refresh_activity(DATE)プロシージャをマッピングで直接使用できます。マッピングでは、マッピング後プロセス演算子を、選択したパッケージrefresh_activity(DATE)を使用するマッピングに追加します。

この例では、既存のカスタム・コードをすぐに利用できます。リソースに対する学習期間および投資は最小限に抑えられます。新規の処理単位を開発するためにのみOracle Warehouse Builderを使用して、この方法で既存および開発済のすべてのPL/SQLコードを保持するよう決定できます。Oracle Warehouse Builderにより、新規に作成するマッピングとレガシー・コードを使用するマッピングを使用できます。この場合、Oracle Warehouse Builderでこれらのマッピングのコードを生成できますが、Oracle Warehouse Builder機能を使用してコードの管理、更新または監査を行うことはできません。

レガシー・コードは、Oracle Warehouse Builderに対して透過的でないブラック・ボックスとして使用されるため、レガシー・コードを手動でメンテナンスする必要があります。したがって、Oracle Warehouse Builderによって生成されるマッピングで使用可能なインフラストラクチャ・コードおよびメタデータに依存するOracle Warehouse Builder機能(ランタイム監査ブラウザ、系統と影響分析、最適化コード生成など)を利用することはできません。

Oracle Warehouse Builderのこれらの機能を利用し、PL/SQLコードを自動的に保持、監視および生成するには、次の手順に従います。

手順3: カスタム・コードのマッピングへの再実装

コードの生成、保持および監査機能を利用するためには、マッピングを使用してレガシーPL/SQLコード機能を再実装し、カスタム・ブラック・ボックス・パッケージを段階的に廃止できます。PL/SQLコード機能を提供するために作成されたマッピングはRental_Activityと呼ばれます。

ブラック・ボックス・マッピングと並行して新規マッピングを実行することでこの新規マッピングをテストする方法をお薦めします。テストが正常に終了し、新規マッピングでカスタム・コードを含むすべての操作を実行できる場合は、ブラック・ボックス・マッピングを段階的に廃止できます。Oracle Warehouse Builderでは、データベース内で手動更新を実行することなく、マッピングからのコードを保持、更新および生成できます。

図9-2は、Rental_Activityマッピングから生成されたコードのサンプルを示しており、このマッピングにより映画レンタル会社用のカスタムPL/SQLパッケージの操作が複製されます。

図9-2 サンプル・コード

「図9-2 サンプル・コード」の説明

手順4: Oracle Database 11g用のコードの生成

Oracle9iバージョンのデータベースにアップグレードする場合は、手順3で作成したRental_Activityマッピングを再配布する必要があります。Oracle Warehouse Builderにより、新規のデータベース・バージョンに対して最適化されたコードが生成されます。

図9-3は、Oracle9iの同じマッピングに対して生成されたコードのサンプルからのMERGE文を示しています。

図9-3 Oracle9i用のサンプル・コード

「図9-3 Oracle9i用のサンプル・コード」の説明

新規コードの保持および生成には、手動の手順は必要ありません。また、手動の手順のETL操作を透過的に監視および保持できます。Oracle Warehouse Builderでは、手動の手順を使用してマッピングに対する系統および影響分析を実行でき、ランタイム監査ブラウザでは、手動の手順を使用してマッピングの実行中にエラーを追跡および記録できます。

Oracle以外のプラットフォームでのファンクションの使用

Oracle Warehouse Builder 11gリリース2(11.2)から、Oracle以外のプラットフォーム内でも事前定義済ファンクションを作成、インポートおよび使用できます。今回のリリースでは、次のプラットフォームまでファンクションの使用が拡大されます。

- DB2

- SQL Server

Oracleモジュールの場合と同様、DB2モジュールおよびSQL Serverモジュールで新規ファンクションを作成できます。同様に、DB2またはSQL Serverデータベースから既存のファンクションをインポートすることもできます。グローバル・ナビゲータには事前定義済ファンクションも用意されています。

注意:
ファンクションはプラットフォーム間でコピーおよび貼付けできません。たとえば、ファンクションをOracleモジュールからコピーして、SQL Serverモジュールに貼り付けることはできません。

IBM DB2およびSQL Serverファンクションの作成

グローバル・ナビゲータの「パブリック変換」ノードの「カスタム」ノードを使用してファンクションを定義すると、オブジェクトをOracle Databaseロケーションに配布する場合のみ使用できます。ただし、Oracle Warehouse Builderを使用してデータをSQL ServerおよびDB2の各データ・オブジェクトにもロードできます。この場合は、ユーザー定義ファンクションを作成してこれらのプラットフォーム用にデータを変換する必要があります。これらのデータベース用にファンクションを定義する場合は、プロジェクト・ナビゲータの「データベース」ノードを使用します。

DB2またはSQL Serverデータベースのファンクションを定義すると、それぞれ変換演算子および変換アクティビティを利用して、これらのファンクションをマッピングおよびプロセス・フローで使用できます。これらのファンクションをWebサービスとして公開することもできます。

IBM DB2およびSQL Serverファンクションの定義

IBM DB2またはSQL Serverファンクションの定義手順:

1. プロジェクト・ナビゲータで、「データベース」ノードを開きます。

2. ファンクションをDB2またはSQL Serverのいずれで作成するかに応じて、DB2またはSQL Serverノードを開きます。

3. 「変換」ノードを開き、「ファンクション」ノードを右クリックして「新規ファンクション」を選択します。
「ファンクションの作成」ダイアログ・ボックスが表示されます。

4. ファンクションの名前とオプションで説明を入力し、「OK」をクリックします。
ファンクション・エディタが表示されます。

5. 「パラメータ」タブに、次の情報を入力します。

- 戻り型: グローバル・ファンクションの戻り型のデータ型を選択します。

- パラメータ: 各パラメータは「戻り型」フィールドの表の行別に表示されます。パラメータを作成するには、空のセルに名前を入力し、データ型やデフォルト値など、パラメータの詳細を入力します。「データ型」列のリストは、「プラットフォーム」フィールドで選択したプラットフォームに応じて入力されます。

注意:
SQL Serverファンクションの場合、@は各パラメータ名の接頭辞として自動的に付けられます。

6. 「実装」タブで、「パラメータ」タブで選択したプラットフォーム上でファンクションの実装に使用するコードを入力します。

7. 「表示」メニューから、「コード・テンプレート」を選択します。
「ログ」ウィンドウに、「コード・テンプレート」タブが表示されます。

8. 「コード・テンプレート」タブで、ファンクションのコード生成に使用するファンクションCTを選択します。
Oracle Warehouse Builderには、DB2およびSQL Serverの各データベース用のコードを生成する事前作成済ファンクションCTが用意されています。これらのファンクションCTは、パブリック・コード・テンプレート・フォルダのBUILT_IN_CTノードにあるグローバル・ナビゲータに格納されています。DB2の場合はDB2_FCTを、SQL Serverの場合はSQLSERVER_FCTを使用できます。

ファンクションのインポート

既存のファンクションはDB2およびSQL Serverデータベースからインポートできます。これは、Oracleファンクションのインポートに似ています。

DB2またはSQL Serverファンクションのインポート手順:

1. 既存のDB2またはSQL Serverモジュールを右クリックし、「インポート」、「データベース・オブジェクト」を選択します。
インポート・メタデータ・ウィザードが表示されます。

2. 「フィルタ情報」ページで、オブジェクト・タイプから「変換」を選択します。

3. 「オブジェクト選択」ページで、必要なファンクションを選択し、「使用可能」フィールドから「選択済」フィールドに移動します。

4. サマリーページで情報を確認し、「終了」をクリックしてインポートを開始します。

インポートされたファンクションがプロジェクト・ナビゲータのモジュールに表示されます。

注意:
Oracle Warehouse Builderでは過負荷DB2ファンクションをインポートできます。ただし、過負荷SQL Serverファンクションはインポートできません。

事前定義済汎用異機種間ファンクション

グローバル・ナビゲータの「パブリック変換」ノードにある「異機種」ノードには、Oracle、SQL ServerおよびDB2プラットフォームに使用できる事前定義済ファンクションが含まれています。

汎用異機種間ファンクションは、次のように分類されます。

- 文字

- 変換

- 日付

- 数値

- その他

ファンクション定義とそれが定義されているプラットフォームを表示するには、前述のカテゴリのいずれかのファンクションをダブルクリックします。「名前」、「パラメータ」、「式」タブが含まれるファンクション・エディタが表示されます。「パラメータ」タブをクリックしてファンクション、ファンクション・パラメータおよびファンクション戻り型が定義されているプラットフォームを表示します。「式」タブをクリックし、SQL ファンクションに使用した式とファンクションを定義したプラットフォームを表示します。

指定された式、パラメータおよびパラメータのデータ型のセマンティクスの詳細は、特定のプラットフォームのドキュメントを参照してください。

マッピングでのファンクションの使用

DB2またはSQL Serverファンクションを作成する際に、コード・テンプレートとファンクションを関連付けます。したがって、これらのファンクションはプロジェクト・ナビゲータのテンプレート・マッピング・ノードで作成されたマッピングでのみ使用できます。これらのマッピングはコード・テンプレートとともに使用されるため、通常のマッピングとは異なります。

ファンクションの構成

ファンクションを定義したら、構成パネルを使用して構成パラメータを設定することで構成できます。

次の各項では、Oracleプラットフォームに対してOracle Warehouse Builderでサポートされている構成パラメータをリストします。

Oracleファンクションの構成

次の構成パラメータは、Oracleプラットフォーム上で定義されているファンクションに設定できます。

AUTHID

このパラメータは、ファンクションを実行する権限を指定します。次のいずれかのオプションを選択します。

- CURRENT_USER: ファンクションは現在のユーザーの権限で、現在のユーザーのスキーマで実行されることを示します。名前解決の範囲が制限されます。Oracle Databaseは、現在のユーザーのスキーマの名前でファンクションを検索します。

- DEFINER: ファンクションはファンクションが存在するスキーマの所有者に割り当てられた権限で実行されることを示します。すべての外部名は同じスキーマ内で解決されます。

確定的

ファンクションが確定的であることを示す場合はこのオプションを選択します。確定的ファンクションは、ファンクションが実行されるたびに指定された引数のセットに対して同じ結果を戻します。

このオプションは、ファンクション・コールが冗長になることを防ぐのに役立ちます。ストアド・ファンクションが以前に同じ引数でコールされている場合、前の結果を使用できます。ファンクションの結果は、セッション変数またはスキーマ・オブジェクトの状態に依存しません。そうでない場合、結果はコールによって異なります。ファンクションベースの索引またはクエリー・リライトが有効なマテリアライズド・ビューからコールすることができるのは、DETERMINISTICファンクションのみです。

パラレルの有効化

このパラメータは最適化のヒントです。ファンクションがSQL問合せからコールされるときは常にパラレルで実行する必要があることをOracle Databaseに示す場合に、このパラメータを選択します。処理はパラレル・プロセス(UNIX)またはスレッド(Windows)に分かれます。このオプションを設定すると、マルチプロセッサ・システムのスピードが改善されます。

プラグマ自律型トランザクション

このオプションを選択すると、PL/SQLコンパイラはファンクションを独立したものとマークします。これにより、ファンクションはメイン・トランザクション(ファンクションの呼出し元のトランザクション)を一時停止して、固有のSQL操作をロールバックまたはコミットできます。

10 パフォーマンスおよび拡張ETL概念の理解

この章は、パフォーマンス要件を満たすETLロジックを作成するためのガイドとして使用します。

この章の内容は次のとおりです。

- 「PL/SQLマッピング設計のベスト・プラクティス」

- 「SQL*Loaderマッピング設計のベスト・プラクティス」

- パーティション交換ロードを使用したパフォーマンスの向上

- リモート・ソースからの高パフォーマンスのデータ抽出

PL/SQLマッピング設計のベスト・プラクティス

このセクションでは、次の項目でPL/SQLマッピング設計を説明します。

- セット・ベースと行ベースのオペレーティング・モードの比較

- Oracle Warehouse Builderでのデータのコミットについて

- マッピング設計に基づいたデータのコミット

- マッピング設計に依存しないデータのコミット

- データのコミット前の複数マッピングの実行

- PL/SQLマッピングにおける参照整合性の確認

Oracle Warehouse Builderでは、次の基準を満たすPL/SQLマッピングのコードが生成されます。

- 各演算子の出力コードは、その演算子の次のダウンストリーム演算子の入力コード要件を満たしている。

- マッピングにPL/SQL出力のみを生成する演算子が含まれている場合は、すべてのダウンストリーム・データフロー演算子もPL/SQLによって実装可能である必要があります。このようなマッピングでのSQL演算子は、PL/SQL出力をターゲットにロードした後でのみ使用できます。

マッピングを設計する際に、マッピング内の各演算子の入力および出力コード・タイプを調べることで、マッピングの有効性を評価できます。

たとえば、図10-1のマッピングでは、Match Merge演算子MMはPL/SQL出力を生成しますが、後続のJoiner演算子はSQL入力のみを受け入れるため、無効であることがわかります。

図10-1 Joiner演算子の入力要件を満たさないマッピング

「図10-1 Joiner演算子の入力要件を満たさないマッピング」の説明

マッピングが希望どおりの結果になるようにするには、Match Mergeを実行する前にソース表を結合するか、結合を実行する前にMatch-Mergeからステージング表に結果をロードすることを検討します。

図10-2は、Match-Merge演算前にソース表が結合されたマッピングを示しています。図10-3は、Match Merge演算子の結果が結合を実行する前にステージング表にロードされているマッピングを示しています。

図10-2 Match Mergeの前にソースを結合する有効なマッピング設計

「図10-2 Match Mergeの前にソースを結合する有効なマッピング設計」の説明

図10-3 ステージング表を使用した有効なマッピング設計

「図10-3 ステージング表を使用した有効なマッピング設計」の説明

表10-1および表10-2は、各Oracle Warehouse Builder演算子の実装タイプを示しています。これらの表は、PL/SQLコードにカーソルの演算子と関連付けられた演算があるかどうかも示しています。この情報は、特定のマッピング設計に有効なオペレーティング・モードを判断する際に使用します。また、エラー処理中に使用できる監査詳細の判断にも使用します。

表10-1 PL/SQLマッピングでのソースおよびターゲット演算子の実装

演算子

実装タイプ

セット・ベース・モードで有効か

行ベース・モードで有効か

行ベース(ターゲットのみ)で有効か

ソース演算子: 表、ディメンション、キューブ、ビュー、外部表

SQL

はい

はい

はい。カーソルの一部。

ターゲット演算子: 表、ディメンション、キューブ、ビュー

SQL

PL/SQL

はい。ロードがUPDATEで、データベースが10gより前の場合を除く。

はい

はい。カーソルの一部ではない。

ソースとしてのフラット・ファイル

PL/SQLの場合は、外部表を作成。

はい

はい

はい。カーソルの一部。

ターゲットとしてのフラット・ファイル

SQL

はい。ロードがDELETEまたはUPDATEで、データベースが10gより前の場合を除く。

はい

はい。カーソルの一部ではない。

ソースとしての順序

SQL

はい

はい

はい。カーソルの一部。

表10-2 PL/SQLマッピングでのデータ・フロー演算子の実装

演算子名

実装タイプ

セット・ベース・モードで有効か

行ベース・モードで有効か

行ベース(ターゲットのみ)モードで有効か

アグリゲータ

SQL

はい

はい。カーソルの一部である場合のみ。

はい。カーソルの一部である場合のみ。

定数演算子

PL/SQL

SQL

はい

はい

はい

データ・ジェネレータ

SQL*Loaderのみ

N/A

N/A

N/A

デュプリケータ解除

SQL

はい

はい。カーソルの一部である場合のみ。

はい。カーソルの一部である場合のみ。

式

SQL

PL/SQL

はい

はい

はい

フィルタ

SQL

PL/SQL

はい

はい

はい

ジョイナ

SQL

はい

はい。カーソルの一部である場合のみ。

はい。カーソルの一部である場合のみ。

検索

SQL

PL/SQL

はい

はい。「すべての行」オプションがLookup演算子の複数の一致行ページで選択されている場合は除く。

はい。「すべての行」オプションがLookup演算子の複数の一致行ページで選択されている場合は除く。

入力パラメータのマッピング

SQL

PL/SQL

はい

はい

はい

出力パラメータのマッピング

SQL

PL/SQL

はい

はい

はい

Match-Merge

SQL入力

PL/SQL出力

(XREFグループからのPL/SQL入力のみ)

いいえ

はい

はい。カーソルの一部ではない。

名前とアドレス

PL/SQL

いいえ

はい

はい。カーソルの一部ではない。

ピボット

SQL

PL/SQL

はい

はい

はい

マッピング後プロセス

不適切

はい。データ・フローとは無関係。

はい

はい

マッピング前プロセス

不適切

はい。データ・フローとは無関係。

はい

はい

集合

SQL

はい

はい。カーソルの一部である場合のみ。

はい。カーソルの一部である場合のみ。

ソーター

SQL

はい

はい。カーソルの一部である場合のみ。

はい。カーソルの一部として。

スプリッタ

SQL

PL/SQL

はい

はい

はい

テーブル・ファンクション

SQLまたはPL/SQL入力

SQL出力のみ

はい

はい

はい

プロシージャとしての変換

PL/SQL

いいえ

はい

はい。カーソルの一部ではない。

DMLを実行しないファンクションとしての変換

SQL

PL/SQL

はい

はい

はい。カーソルに含まれる。

セット・ベースと行ベースのオペレーティング・モードの比較

PL/SQL実装でのマッピングの場合は、次のオペレーティング・モードのうち1つを選択します。

- セット・ベース・モード

- 行ベース・モード

- 行ベース(ターゲットのみ)モード

- セット・ベースから行ベースへのフェイルオーバー

- セット・ベースから行ベース(ターゲットのみ)へのフェイルオーバー

選択するデフォルト・オペレーティング・モードは、期待するパフォーマンス、必要な監査データの量、マッピングの設計方法によって異なります。マッピングには、行ベースへのフェイルオーバー・モードのオプションを除いて、最低1つ、最高3つの有効なオペレーティング・モードがあります。コードの作成時には、指定したデフォルトのオペレーティング・モードと、選択していないモードのコードが生成されます。そのため、実行時には、デフォルト・オペレーティング・モードまたは他の有効なオペレーティング・モードのいずれかで実行するように選択できます。

マッピングでの演算子のタイプによって、選択可能なオペレーティング・モードが制限される場合があります。原則として、セット・ベース・モードで実行されるマッピングには、プロシージャとして使用されるMatch Merge、Name and Address、変換以外のすべての演算子を含めることができます。行ベース・モードおよび行ベース(ターゲットのみ)モードではすべての演算子を含めることができますが、Aggregator、JoinなどのSQLベースの演算子の使用方法には重要な制限があります。SQLベースの演算子を行ベース・モードのいずれかで使用するには、演算子と関連付けられた演算をカーソルに含めることができることを確認します。

これらの一般的なルールについては、次の各項で説明します。

セット・ベース・モード

セット・ベース・モードでは、すべてのデータを処理し、すべての演算を実行する単一のSQL文が生成されます。データをセットで処理するとパフォーマンスが向上しますが、使用できる監査情報は制限されます。ランタイム監査は、実行エラーのみの報告に制限されます。セット・ベース・モードでは、エラーを含む行は識別できません。

図10-4は、セット・ベースのオペレーティング・モードでの実行時に、マッピングのコード生成に使用される、単純なマッピングと関連ロジックを示しています。「TAB1」、「FLTR」および「TAB2」は、SQLを使用してセットとして処理されます。

図10-4 セット・ベース・モードでの単純なマッピングの実行

「図10-4 セット・ベース・モードでの単純なマッピングの実行」の説明

セット・ベース・モードのマッピングを正確に設計するには、Match Merge演算子やName and Address演算子など、行ごとの処理を必要とする演算子を避けます。SQLで実行できないデータ・フローの演算子を含めた場合、セット・ベース・コードは生成されず、セット・ベース・モードでのパッケージの実行時にエラーが表示されます。

マッピングのターゲット演算子の場合、ロード・タイプINSERT/UPDATEおよびUPDATE/INSERTはセット・ベース・モードでは常に有効です。UPDATEロードがセット・ベース・モードでサポートされるのは、Oracle Databaseが10g以上の場合のみです。セット・ベース・モードでは、DELETEロード・タイプもサポートされます。セット・ベースのマッピングで演算子を処理する方法の全リストは、表10-2を参照してください。

行ベース・モード

行ベース・モードでは、データを行ごとに処理する文が生成されます。SQLカーソルには、SELECT文があります。以降の文はすべてPL/SQLです。PL/SQLで実行されたすべての演算子については、ランタイム監査の全情報にアクセスできますが、カーソルで実行された演算については、限られた情報にのみアクセスできます。

図10-5は、行ベースのオペレーティング・モードでの実行時に、マッピングのコード生成に使用される、単純なマッピングと関連ロジックを示しています。「TAB1」はカーソルに含まれ、SQLを使用してセットとして処理されます。「FLTR」および「TAB2」は、PL/SQLを使用して行ごとに処理されます。

図10-5 行ベース・モードでの単純なマッピングの実行

「図10-5 行ベース・モードでの単純なマッピングの実行」の説明

PL/SQLで実行できないSQLベースの演算子がマッピングに含まれている場合は、カーソル内の演算を使用したコード生成が試行されます。有効な行ベース・コードを生成するには、次のSQLベース演算子のいずれかを含めた場合はその演算がカーソルに含まれるようにマッピングを設計します。

- 集計

- デュプリケータ解除

- ジョイナ

- 検索

- 順序

- 集合

- ソーター

前述の演算子をカーソルに含める場合は、PL/SQLコードを生成する演算子を直前に配置しないでください。つまり、行ベース・モードのマッピングに、プロシージャとして実装された変換、ソースとして使用されるフラット・ファイル、Match-Merge演算子、Name and Address演算子の直後に7つのSQLベース演算子のいずれかが含まれている場合、そのマッピングは実行できません。有効な設計を行うには、PL/SQLを生成する演算子とSQLベース演算子の間にステージング表を含めます。

行ベース (ターゲットのみ)・モード

行ベース(ターゲットのみ)モードでは、SELECT文のカーソルが生成され、そのカーソルにできるだけ多くの演算が含まれます。各ターゲットには、行が個別に挿入されます。PL/SQLで実行されたすべての演算子については、ランタイム監査の全情報にアクセスできますが、カーソルで実行された演算については、限られた情報にのみアクセスできます。このモードは、データの抽出と変換には高速のセット・ベース演算を使用するが、エラーが発生しやすいデータのロードで高度な監査機能が必要な場合に使用します。

図10-6は、行ベース(ターゲットのみ)のオペレーティング・モードでの実行時に、マッピングのコード生成に使用される、単純なマッピングと関連ロジックを示しています。「TAB1」および「FLTR」はカーソルに含まれ、SQLを使用してセットとして処理されます。「TAB2」は行ごとに処理されます。

図10-6 行ベース(ターゲットのみ)モードでの単純なマッピングの実行

「図10-6 行ベース(ターゲットのみ)モードでの単純なマッピングの実行」の説明

行ベース(ターゲットのみ)モードは、行ベースのオペレーティング・モードと同じ制限をSQLベース演算子に加えます。また、複数ターゲットのマッピングの場合は、各ターゲットのカーソルでコードが生成されます。

注意:
リリース11.2.0.3以降は、セット・ベースから行ベースへのフェイルオーバー機能は非推奨です。

Oracle Warehouse Builderでのデータのコミットについて

Oracle Warehouse Builderでデータをコミットする主な方法は2つあります。データのコミットまたはロールバックは、マッピング設計に基づいて実行できます。「マッピング設計に基づいたデータのコミット」で説明するいずれかのコミット制御方法を使用します。

また、PL/SQLマッピングの場合は、マッピング設計とは無関係にデータをコミットまたはロールバックできます。「マッピング設計に依存しないデータのコミット」の説明に従って、プロセス・フローを使用してデータをコミットするか、独自の方法を作成します。

マッピング設計に基づいたデータのコミット

デフォルトでは、マッピング設計に基づいてデータがロードされ、自動的にコミットされます。PL/SQLマッピングの場合は、デフォルト設定を上書きして、Oracle Warehouse Builderでデータがコミットされる時期と方法を制御できます。マッピングでデータをコミットする方法には、次のオプションがあります。

自動: これはデフォルト設定で、すべてのマッピング・タイプに有効です。Oracle Warehouse Builderでは、マッピング設計に基づいてデータがロードされ、自動的にコミットされます。マッピングに複数ターゲットがある場合は、他のターゲットに関係なく、ターゲットごとに別々にコミットとロールバックが行われます。不規則にロードされた複数ターゲットの結果が、大きくない場合や相関関係にない場合は、自動コミットを使用します。

自動相関: 自動相関コミットは自動コミットの特殊タイプで、複数ターゲットのPL/SQLマッピングにのみ適用されます。Oracle Warehouse Builderでは、すべてのターゲットが集合的に考慮され、データはすべてのターゲット間で均一にコミットまたはロールバックされます。ソースのすべての行が、影響を受けるターゲットすべてに均一な影響を確実に与えることが重要な場合は、相関コミットを使用します。自動相関コミットの詳細は、「単一のソースから複数ターゲットへのデータのコミット」を参照してください。

手動: 手動コミット制御を選択するのは、複雑なビジネス・ロジックを示したり、検証を実行したり、データのコミット前に他のマッピングを実行する必要のあるPL/SQLマッピングの場合です。例は、「マッピングへのコミット・ロジックの埋込み」および「マッピング設計に依存しないデータのコミット」を参照してください。

単一のソースから複数ターゲットへのデータのコミット

共通ソースに基づいて複数ターゲットを作成するには、ソースのすべての行がターゲットすべてに均一な影響を与えることを確認します。

図10-7は、このケースを示すPL/SQLマッピングです。ターゲット表はすべて、ソース表に依存しています。「SOURCE」の行によって、複数ターゲット(「TARGET_1」と「TARGET_2」など)が変更される場合、Oracle Warehouse Builderでは、影響を受ける両方のターゲットに対して適切なデータが同時にコミットされます。マッピングを再度実行したときにこの関係が維持されない場合、データは不正確になり、使用できなくなることもあります。

図10-7 複数ターゲットが単一ソースに依存するマッピング

「図10-7 複数ターゲットが単一ソースに依存するマッピング」の説明

ソース表からの行数が比較的少ない場合、3つのターゲットを維持するのは難しくありません。ただし、共通ソースに依存するターゲットの手動による維持は、ソースからの行数を増加したり、より多くのターゲットと変換を持つさらに複雑なマッピングを設計する際に、手間がかかります。

ソースのすべての行がすべてのターゲットに正しく影響を与えていることを確認するには、相関コミット計画を使用するマッピングを構成します。

自動相関コミット計画の使用方法

セット・ベース・モードでは、相関コミットがロールバック・セグメントのサイズに影響を与えます。データをマージ(insert/updateまたはupdate/insert)する際には、ロールバック・セグメントの空き領域が問題となる場合があります。

相関コミットは、PL/SQLバルク処理コードで透過的に操作されます。

相関コミット計画は、パーティション交換ロード用に構成されているモードで実行されるマッピングや、キュー、Match-Mergeまたはテーブル・ファンクション演算子を含むマッピングでは使用できません。

自動コミットと自動相関コミットの比較

コミット計画とオペレーティング・モードの組合せによって、マッピング動作が決定されます。表10-3は、選択できる有効な組合せを示したものです。

表10-3 オペレーティング・モードの有効なコミット計画

オペレーティング・モード

自動相関コミット

自動コミット

セット・ベース

有効(Valid)

有効(Valid)

行ベース

有効(Valid)

有効(Valid)

行ベース(ターゲットのみ)

適用不可

有効(Valid)

相関コミットは、行ベース(ターゲットのみ)に対して適用できません。このオペレーティング・モードでは、カーソルをターゲットのできるだけ近くに配置するように定義されています。この結果、ほとんどの場合、各SELECT文に対するターゲットは1つのみとなり、複数ターゲットに対してデータをコミットする目的が失われます。行ベース(ターゲットのみ)と相関コミットの組合せでマッピングを設計した場合、マッピングは実行されますが、相関コミットは実行されません。

各オペレーティング・モードとコミット計画の組合せがマッピングに与える影響を理解するために、図10-7にあるマッピングについて考えてください。ソース表からのデータが1,000個の新規行であると仮定します。マッピングが正常に実行された場合は、各ターゲットに1,000行がロードされます。このマッピングでTarget__2への100番目の新規行のロードに失敗した場合は、コミット頻度や最大エラー数など他の構成設定からの影響を無視すると、次の結果が得られます。

- セット・ベース/相関コミット: マッピングにエラーが1つでもあると、すべてのデータがロールバックされます。Target_2への挿入中にエラーが発生した場合、その表のエラーがレポートされ、行はロードされません。Target_1に挿入済のすべての行がロールバックされ、Target_3には行はロードされません。どのターゲット表にも行が追加されません。エラーの詳細には、Target_2へのロード中に発生したエラーのみがレポートされます。

- 行ベース/相関コミット: 各行が最初の行から個別に評価され、3つのターゲットすべてにロードされます。行のロードは、行100のTarget_2へのロード・エラーが発生するまで続行されます。Oracle Warehouse Builderによってエラーがレポートされ、行はロードされません。Target_1に挿入済の行100がロール・バックされ、Target_3には行100がロードされません。その後、Target_1への行101のロードが再開され、残りの行のロードが続行されます。他のエラーが発生しないと、各ターゲットに999個の新規行が挿入されて、マッピングが完了します。ソース行は、これらのターゲットに正確に反映されます。

- セット・ベース/自動コミット: Target_2への挿入中にエラーが発生した場合、行はロードされず、その表のエラーがレポートされます。Target_3への行の挿入は続行されますが、Target_1の行はロールバックされません。他のエラーが発生しないと、Target_2に関する1つのエラー・メッセージがレポートされて、マッピングは完了します。Target_2に行は挿入されず、Target_1とTarget_3に1,000行ずつ挿入されます。ソース行は、これらのターゲットに正確に反映されません。

- 行ベース/自動コミット: 各行が最初の行から個別に評価され、ターゲットにロードされます。行のロードは、Target_2に行100をロードする際にエラーが発生し、そのエラーがレポートされるまで続行されます。Target_1の行100はロールバックされず、Target_3には行100が挿入されます。その後、残りの行のロードが続行されます。他のエラーが発生しないと、Target_2に999行が挿入されて、マッピングは完了します。他のターゲットには1,000行がそれぞれ挿入されます。ソース行は、これらのターゲットに正確に反映されません。

マッピングへのコミット・ロジックの埋込み

PL/SQLマッピングの場合のみ、SQL文でマッピング前またはマッピング後演算子を追加してデータをコミットおよびロールバックすることによって、コミット・ロジックをマッピング設計に埋め込むことができます。マッピングを実行すると、マッピング前プロセスまたはマッピング後プロセスの演算子に指定したSQL文のみに基づいて、データがコミットまたはロールバックされます。

Oracle Warehouse Builderの既存のマッピング演算子の設計に手間がかかったり、設計が不可能なビジネス・ルールを実装するには、次の手順を使用してください。たとえば、あるターゲットに1つの行が存在することを確認するとします。その場合は、必要なロジックをSQLで記述し、マッピング前またはマッピング後に演算子を使用してそのロジックをマッピングに導入します。

コミット・ロジックのマッピング設計への組込み手順:

1. マッピング前またはマッピング後演算子を含めるようにマッピングを設計します。いずれかの演算子を使用して、コミットおよびロールバックのSQL文を導入します。

2. 「コミット制御」を「手動」に設定した状態で、マッピングを構成します。
プロジェクト・ナビゲータで、マッピングを右クリックし、「構成」を選択します。コード生成オプションの、 「コミット制御」で 「手動」を選択します。

手動によるデータのコミットを選択した場合の影響については、「手動コミット制御について」を参照してください。

3. マッピングを配布します。

4. マッピングを実行します。
マッピングは実行されますが、マッピング前プロセス演算子またはマッピング後プロセス演算子で記述したコミット・ロジックが処理されるまでデータはコミットされません。

マッピング設計に依存しないデータのコミット

次のいずれかの理由で、マッピング設計に依存せずにデータをコミットする必要が生じる場合があります。

- データのコミット前に複数マッピングを実行: すべてのマッピングが正常に実行および検証されるまで、データをコミットしないまま、複数マッピングを実行する場合があります。たとえば、ディメンションのロードとキューブのロードに対して個別のマッピングがある場合です。

- ターゲットの効率的な維持: 誤ったデータがロードされて非常に大きいターゲットにコミットされると、その障害の修復は困難で時間がかかる場合があります。回避するには、最初にデータをチェックし、次に、commitまたはrollbackコマンドを発行するかどうかを決定します。

これらの目的を実現するための最初の手順は、「コミット制御」を「手動」に設定してマッピングを構成することです。

手動コミット制御について

手動コミット制御を使用すると、マッピング設計に関係なく、Oracle Warehouse Builderでデータをコミットする時期を指定できます。手動コミット制御は監査統計に影響を与えません。これは、commitまたはrollbackコマンドを発行する前に、挿入済の行数およびその他の監査情報を表示できることを意味します。

手動コミットを使用するときは、このオプションがパフォーマンスに与える影響を考慮してください。ターゲットをロード後に読み込む必要がある設計では、パラレルに実行するマッピングがシリアルに実行される場合があります。これは、データを、リモート・ソースから移動する場合や同じ表にバインドされた2つのターゲットにロードする場合に発生します。

手動コミット制御を有効にすると、Oracle Warehouse Builderでは、PELがオフの状態でマッピングが実行されます。

データのコミット前に複数マッピングを実行

この項では、マッピング設計に依存しないデータのコミットについて、2つの手順を説明します。最初の手順では、マッピングを実行してから、SQL*Plusセッションでデータをコミットする方法を説明します。この手順では、複数マッピングを実行してからデータをコミットする計画をテストしてデバッグします。次に、2番目の手順でその計画を自動化します。

両方の手順とも、各PL/SQLマッピングで生成されるメイン・プロシージャの使用を前提にしています。

メイン・プロシージャ

メイン・プロシージャは、Oracle Warehouse Builderでマッピングを開始するためのロジックを公開するプロシージャです。このプロシージャは、PL/SQLスクリプトで使用したり、インタラクティブなSQL*Plusセッションで使用できます。

メイン・プロシージャを使用するときは、必須パラメータのp_statusを指定する必要があります。また、表10-4に示すように、マッピングの実行に関連する他のパラメータをオプションで指定できます。オプション・パラメータを指定しない場合、Oracle Warehouse Builderではデフォルト設定が使用されます。

表10-4 メイン・プロシージャのパラメータ

パラメータ名

説明

p_status

この必須パラメータを使用して、マッピングの完了時のステータスを記述します。このパラメータは、statusという事前定義済変数とともに機能します。

status変数は、たとえば、OKはマッピングがエラーなしで完了したことを示すように定義されています。OK_WITH_WARNINGSは、ユーザー・エラーが発生してマッピングが完了したことを示します。FAILUREは、マッピングでリカバリ不可能なエラーが発生したことを示します。

p_operating_mode

このオプション・パラメータを使用して、SET_BASEDなどの「デフォルト・オペレーティング・モード」を渡します。

p_bulk_size

このオプション・パラメータを使用して、「バルク・サイズ」を渡します。

p_audit_level

このオプション・パラメータを使用して、COMPLETEなどの「デフォルト監査レベル」を渡します。

p_max_no_of_errors

このオプション・パラメータを使用して、許容されている「エラーの最大数」を渡します。

p_commit_frequency

このオプション・パラメータを使用して、「コミット頻度」を渡します。

実行時のデータのコミット

PL/SQLマッピングの場合のみ、マッピングを実行して、SQL*Plusセッションからcommitおよびrollbackコマンドを発行できます。SQL*Plusに関する知識とメイン・プロシージャに基づいて、データのコミット前に複数のマッピングを手動で実行して検証できます。

実行時における手動でのデータ・コミット手順:

1. PL/SQLマッピングを設計します。たとえば、ディメンションをロードするためのマッピングを作成し、キューブをロードするための別のマッピングを作成します。
ここで説明する手順は、SQL*LoaderマッピングおよびABAPマッピングには該当しません。

2. 「コミット制御」パラメータを「手動」に設定した状態で、両方のマッピングを構成します。
プロジェクト・ナビゲータで、マッピングを右クリックし、「構成」を選択します。コード生成オプションで、 「コミット制御」パラメータを「手動」に設定します。

3. 各マッピングを生成します。

4. SQL*Plusセッションから次のコマンドを発行して、最初のマッピング(この例ではmap1)を実行します。

var status VARCHAR2(30);
execute map1.main(:status);

最初の行では、表10-4で説明している事前定義済のstatus変数を宣言します。2行目では、p_statusがstatus変数に設定されます。map1が完了すると、SQL*Plusによって、OKなどのマッピング・ステータスが表示されます。

5. 2番目のマッピングであるキューブ・マッピング(この例ではmap2)を実行します。
2番目のマッピングは前のマッピングと同じ方法で実行できます。または、表10-4に示す追加パラメータを指定して、この例のmap2の実行方法を指定することもできます。

map2.main (p_status => :status,               \
p_operating_mode => 'SET_BASED',   \
p_audit_level => 'COMPLETE');

6. 2つのマッピングの実行結果を確認して、commitコマンドまたはrollbackコマンドのいずれかを送信します。

7. 「プロセス・フロー・エディタを使用したマッピングのコミット」の手順に従って、コミット計画を自動化します。

プロセス・フロー・エディタを使用したマッピングのコミット

PL/SQLマッピングの場合のみ、複数のマッピングをコミットまたはロールバックできます。Sqlplusアクティビティ、メイン・プロシージャおよびPL/SQLスクリプトの記述方法に関する知識に基づいて、プロセス・フローを使用すると、すべてのマッピングが正常に完了した後、またはマッピングに失敗した場合のデータのロールバック後にデータをコミットするロジックを自動化できます。

プロセス・フローを使用した複数のマッピングのコミット手順:

1. PL/SQLマッピングを設計します。
ここで説明する手順は、SQL*LoaderマッピングおよびABAPマッピングには該当しません。

2. 各マッピングが同じスキーマに配布されていることを確認します。
すべてのマッピングには同じスキーマを指定するロケーションが必要です。これは、同じターゲット・モジュールにマッピングを設計することで実行できます。ターゲット・モジュールが複数ある場合は、ロケーションが同じスキーマを指定するようにしてください。

3. 「コミット制御」パラメータを「手動」に設定した状態で、各マッピングを構成します。
プロジェクト・ナビゲータで、マッピングを右クリックし、「構成」を選択します。コード生成オプションで、 「コミット制御」パラメータを「手動」に設定します。

4. 複数のマッピング・アクティビティではなく、1つのSqlplusアクティビティを使用してプロセス・フローを設計します。
典型的なプロセス・フローでは、マッピングごとにマッピング・アクティビティを追加し、プロセス・フローで各マッピング・アクティビティ後に暗黙的なコミットを実行します。ただし、この設計では、マッピング・アクティビティを追加しないでください。かわりに、Sqlplusアクティビティを1つ追加してください。

5. メイン・プロシージャを使用するPL/SQLスクリプトを作成して、各マッピングを実行します。次のスクリプトは、最初のマッピングが成功した場合のみの次のマッピングを実行する方法を示しています。

declare
status VARCHAR2(30);
begin
map1.main(status);
if status != 'OK' then
rollback;
else
map2.main(status);
if status != 'OK' then
rollback;
else
commit;
end if;
end if;
end;

6. PL/SQLスクリプトをSQL*PLUSアクティビティに貼り付けます。
エディタ・エクスプローラで、SQL*PLUSアクティビティの下のSCRIPTを選択し、オブジェクト・インスペクタの「値」 をダブルクリックします。

7. オプションで、「スケジュールの定義」の説明に従って、スケジュールをプロセス・フローに適用します。

8. マッピング、プロセス・フローおよびスケジュール(定義した場合)を配布します。

PL/SQLマッピングにおける参照整合性の確認

複数ターゲットのマッピングを設計するときは、Oracle Warehouse Builderによるターゲットのロードが特定の順序で行われることを確認する場合があります。これは、あるターゲットの1つの列が別のターゲットからデータを導出する場合があるためです。

PL/SQLマッピングにおける参照整合性を確認する手順は、次のとおりです。

1. 複数ターゲットのPL/SQLマッピングを設計します。

2. (オプション)外部キーを指定して、2つのターゲット間に親子関係を定義します。
子表の外部キーは、親表の主キーを参照する必要があります。主キーとして定義した列が親にない場合は、列を追加して主キーとして設定する必要があります。この例は、「SQL*Loaderマッピングでの参照整合性を確認するための従来のロードの使用」を参照してください。

3. マッピングのプロパティで、このプロパティの右にある省略ボタンボタンをクリックして、「ターゲット・ロード順序」プロパティを表示します。
前の手順で外部キー関係を定義した場合、Oracle Warehouse Builderでは、子の前に親ターゲットをロードするデフォルトのロード順序が計算されます。外部キーを定義していない場合は、「ターゲット・ロード順序」ダイアログ・ボックスを使用して、ロード順序を定義します。

詳細は、 「マッピングにおけるターゲット・オブジェクトのロード順序の指定」を参照してください。

4. 「ターゲット・ロード順序付けを使用」構成パラメータが、デフォルト値のTRUEに設定されていることを確認します。

SQL*Loaderマッピング設計のベスト・プラクティス

この項の内容は次のとおりです。

- SQL*Loaderマッピングでの参照整合性を確認するための従来のロードの使用

- SQL*Loaderマッピングでの参照整合性を確認するためのダイレクト・パス・ロードの使用

SQL*Loaderマッピングでの参照整合性を確認するための従来のロードの使用

マスター/ディテール構造を持つ複数レコード・タイプのファイルからデータを抽出して表にマッピングする場合は、順序演算子をマッピングに追加して、マスター・レコードとディテール・レコード間の関係をサロゲート主キーまたは外部キーの関係で保持します。マスター/ディテール・ファイル構造とは、マスター・レコードの後にディテール・レコードが続く構造です。例10-1では、「E」で始まるレコードは従業員(Employee)情報が保存されているマスター・レコードです。「P」で始まるレコードは、対応する従業員の給与(Payroll)情報が保存されているディテール・レコードです。

例10-1 マスター・ディテール構造を持つ複数レコード・タイプのフラット・ファイル

E 003715 4 153 09061987 014000000 "IRENE HIRSH" 1 08500
P 01152000 01162000 00101 000500000 000700000
P 02152000 02162000 00102 000300000 000800000
E 003941 2 165 03111959 016700000 "ANNE FAHEY" 1 09900
P 03152000 03162000 00107 000300000 001000000
E 001939 2 265 09281988 021300000 "EMILY WELLMET" 1 07700
P 01152000 01162000 00108 000300000 001000000
P 02152000 02162000 00109 000300000 001000000

例10-1では、マスター・レコードとディテール・レコード間の関係は、物理的なレコードの順序のみが継承されます。つまり、給与レコードはその前の従業員レコードに対応しています。ただし、これがディテール・レコードをそのマスターに関連付ける唯一の方法である場合、この関係は、Oracle Warehouse Builderによって各レコードがターゲット表にロードされるときに失われます。

マスター・レコードとディテール・レコード間の関係の維持

マスター・レコードとディテール・レコードが共通フィールドを共有している場合は、その両レコード間の関係を維持できます。例10-1の従業員IDのフィールドが従業員レコードと給与レコードの両方に存在する場合、このフィールドを従業員表の主キー、給与表の外部キーとして使用すると、給与レコードを正しい従業員レコードに関連付けることができます。

ただし、マスター・レコードとディテール・レコードを結合するために必要な共通フィールドがファイルに存在しない場合は、順序列をマスター・ターゲットとディテール・ターゲットの両方に追加して、マスター・レコードとディテール・レコード間の関係を維持する必要があります(表10-5および表10-6を参照)。この追加する値を生成するには、順序演算子を使用します。

表10-5は、例10-1にあるファイルからマスター・レコードを抽出したターゲット表を示しています。このマスター・レコードのターゲット表には、従業員情報が格納されています。列E1からE10には、フラット・ファイルから抽出したデータが格納されています。列E11は、マスター順序番号を格納するために追加された列です。この番号は従業員1人につき1つずつ増加します。

表10-5 マスター・レコードが格納されたターゲット表

E1

E2

E3

E4

E5

E6

E7

E8

E9

E10

E11

E

003715

4

153

09061987

014000000

"IRENE

HIRSH"

1

08500

1

E

003941

2

165

03111959

016700000

"ANNE

FAHEY"

1

09900

2

E

001939

2

265

09281988

021300000

"EMILY

WELSH"

1

07700

3

表10-6は、例10-1にあるファイルからディテール・レコードを抽出したターゲット表を示しています。このディテール・レコードのターゲット表には、給与情報が格納されており、従業員1人につき1つ以上の給与レコードが存在します。列P1からP6には、フラット・ファイルから抽出したデータが格納されています。列P7は、ディテール順序番号を格納するために追加された列です。各給与レコードの番号は、表10-5の対応する従業員レコードの番号と一致します。

表10-6 ディテール・レコードが格納されたターゲット表

P1

P2

P3

P4

P5

P6

P7

P

01152000

01162000

00101

000500000

000700000

1

P

02152000

02162000

00102

000300000

000800000

1

P

03152000

03162000

00107

000300000

001000000

2

P

01152000

01162000

00108

000300000

001000000

3

P

02152000

02162000

00109

000300000

001000000

3

マスター・ディテール・レコードの抽出とロード

この項では、マスター・ディテール・フラット・ファイルからレコードを抽出し、そのレコードを2つの異なる表にロードするマッピングの作成方法を説明します。1つのターゲット表にはマスター・レコードを格納し、もう1つのターゲット表にはフラット・ファイルからのディテール・レコードを格納します。2つの表間のマスター・ディテール関係を維持するには、マッピング順序を使用します。

注意:
この説明は、従来型パスによるロードを対象にしています。マスター・ディテール・レコードにダイレクト・パス・ロードを使用する手順は、「SQL*Loaderマッピングでの参照整合性を確認するためのダイレクト・パス・ロードの使用」を参照してください。

この手順では、このようなマッピングを構築するための一般的な手順を概説します。次に示す詳細な手順も参照してください。

- 「フラット・ファイル演算子」"

- 「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」

- 「順序演算子」

- 「マッピング構成のリファレンス」

- 『Oracle Warehouse Builderソースおよびターゲット・ガイド』

マスター・ディテール・フラット・ファイルから抽出し、マスター/ディテール関係を維持するには、次の手順を実行します。

1. マスター・レコードとディテール・レコードで構成されたフラット・ファイル・ソースをインポートして、サンプリングします。
ファイルのサンプリング時にレコード・タイプに名前を指定する場合は、マスター・レコードとディテール・レコードに説明的な名前を割り当てます。これによって、今後はこれらのレコードを容易に識別できます。

この複数レコード・タイプのフラット・ファイルに対する例では、フラット・ファイル・サンプル・ウィザードに部門情報と従業員情報が含まれています。従業員レコードのマスター・レコード・タイプにはEmployeeMasterという名前が指定され、給与情報のディテール・レコード・タイプにはPayrollDetailという名前が指定されます。

2. フラット・ファイル演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップし、データの抽出元のマスター・ディテール・ファイルを指定します。

3. 順序演算子をマッピング・キャンバスにドラッグ・アンド・ドロップします。

4. マスター・レコードに対する表演算子をマッピング・キャンバスにドラッグ・アンド・ドロップします。
以前に作成した既存のワークスペース表を選択するか、属性を指定せずにバインドなしで新しい表演算子を作成できます。次に、必要なすべてのフィールドをフラット・ファイル演算子のマスター・レコードからマスター表演算子にマッピングまたはコピーし(列の作成)、アウトバウンド調整を実行して後で表を定義できるようにします。

この表には、ロードするマスター・フィールドに必要なすべての列と、順序の値をロードするための追加の数値列が含まれている必要があります。

5. ディテール・レコードに対する表演算子をマッピング・キャンバスにドラッグ・アンド・ドロップします。
以前に作成した既存のワークスペース表を選択するか、属性を指定せずにバインドなしで新しい表演算子を作成できます。次に、必要なすべてのフィールドをフラット・ファイル演算子のマスター・レコードからマスター表演算子にマッピングまたはコピーし(列の作成)、アウトバウンド同期化を実行して後で表を定義できるようにします。

この表には、ロードするディテール・フィールドに必要なすべての列と、順序の値をロードするための追加の数値列が含まれている必要があります。

6. 必要なすべてのフラット・ファイル・マスター・フィールドをマスター表に、ディテール・フィールドをディテール表にマッピングします。
図10-8に、このフィールドのマッピングを示します。

7. 順序NEXTVAL属性を、マスター表の追加の順序列にマッピングします。
図10-8に、順序演算子のNEXTVAL属性からマスター表へのマッピングを示します。

8. 順序CURRVAL属性を、ディテール表の追加の順序列にマッピングします。
図10-8は、マッピングが完成した状態を示しています。フラット・ファイルのマスター・フィールドはマスター・ターゲット表にマッピングされ、ディテール・フィールドはディテール・ターゲット表にマッピングされ、順序のマッピングのNEXTVAL属性とCURRVAL属性はマスター・ターゲット表とディテール・ターゲット表にそれぞれマッピングされています。

図10-8 マスター・ディテール・フラット・ファイルから2つのターゲット表へのマッピング

「図10-8 マスター・ディテール・フラット・ファイルから2つのターゲット表へのマッピング」の説明

9. 次のパラメータを使用してソース・データをターゲット表にロードするマッピングを構成します。
ダイレクト・モード: 選択しない

エラー許可: 0

行: 1

後続NULL列: True(すべての表)

エラーの対処方法

この項では、ファイルのエラー数に応じたエラーの対処方法について説明します。

データ・ファイルにほとんどエラーがない場合は、次のように対処します。

1. 順序演算子でマッピングを作成します。

2. 次のパラメータを使用して、マッピングを構成します。
ダイレクト・モード=選択しない

行= 1

エラー許可= 0

3. コードを生成し、 SQL*Loaderスクリプトを実行します。
データ・ファイルにエラーがある場合は、最初のエラーが発生した時点でロードが停止します。

4. データ・ファイルを修正し、次の構成値を使用して制御ファイルを再度実行します。
CONTINUE_LOAD = TRUE

SKIP =ロード済のレコード数

データ・ファイルに少数のエラーがあると思われる場合は、次のように対処します。

1. seq_nextval列に基づいてマスター・レコードに主キー(PK)を作成します。

2. マスター表PKを参照するseq_currval列に基づいてディテール・レコードに外部キー(FK)を作成します。
この場合、エラーがあるマスター・レコードは、対応するすべてのディテール・レコードとともに拒否されます。次の手順に従って、これらのレコードを修復します。

3. マスター・レコードがない、失敗したディテール・レコードをすべて削除します。

4. 不正なファイルのエラーを修正し、これらのレコードのみリロードします。

5. エラーが非常に少ない場合は、残りのレコードをロードし、正しい順序番号を使用して表を手動で更新することもできます。

6. ログ・ファイルでは、エラーで失敗したレコードを識別できます。これは、これらのエラーが整合性制約に違反しているためです。次に、エラーのあるログ・ファイル・レコードの例を示します。

Record 9: Rejected - Error on table "MASTER_T", column "C3".
ORA-01722: invalid number
Record 10: Rejected - Error on table "DETAIL1_T".
ORA-02291: integrity constraint (SCOTT.FK_SEQ) violated - parent key not found
Record 11: Rejected - Error on table "DETAIL1_T".
ORA-02291: integrity constraint (SCOTT.FK_SEQ) violated - parent key not found
Record 21: Rejected - Error on table "DETAIL2_T".
ORA-02291: invalid number

データ・ファイルに常に多数のエラーが存在する場合は、次のように対処します。

1. 順序演算子を使用しないで、すべてのレコードをロードします。
レコードを独立した表にロードします。ダイレクト・モードでデータをロードする際には、次のパラメータを使用すると、データのロードを高速化できます。

行>1

エラー許可= MAX

2. 拒否されたすべてのレコードを修正します。

3. 順序演算子を使用してファイルを再ロードします。

事後操作

マスター表およびディテール表を初めてロードした後は、ロードした順序値を使用して、さらにマスター表データとディテール表のデータを変換、更新またはマージできます。たとえば、マスター・レコードに一意の識別子(従業員IDなど)として機能する列があり、その列をキーとして使用して(この目的で追加した順序フィールドは使用せずに)、マスター行とディテール行を結合する場合は、この一意の列を使用するために、ディテール表を更新できます。これで最初のロード用に作成した順序列は削除できます。アグリゲータ、フィルタ、Match-Mergeなどの演算子は、このような後で行う変換に役立ちます。

SQL*Loaderマッピングでの参照整合性を確認するためのダイレクト・パス・ロードの使用

マスター・レコードに一意のフィールドがある(または複数のフィールドを連結した結果、一意の識別子がある)マスター・ディテール・フラット・ファイルを使用している場合は、オプションのダイレクト・パス・ロードを使用すると、ロードを高速化できます。

ダイレクト・パス・ロードの場合、各レコードのレコード番号(RECNUM)はマスター表とディテール表に格納されます。ロード後の手順では、RECNUMを使用して、各ディテール行を、対応するマスター行の一意の識別子で更新します。

この手順では、このようなマッピングを構築するための一般的な手順を概説します。次に示す詳細な手順も参照してください。

- フラット・ファイル・ソースのインポートの詳細は、『Oacle Warehouse Builderソースおよびターゲット・ファイル』を参照してください。

- ソースとしてのフラット・ファイルの使用方法の詳細は、「フラット・ファイル演算子」を参照してください。

- 表演算子の使用方法の詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

- データ・ジェネレータ演算子の使用方法の詳細は、「データ・ジェネレータ演算子」を参照してください。

- 定数演算子の使用方法の詳細は、「定数演算子」を参照してください。

- マッピングの構成の詳細は、「マッピング構成のリファレンス」を参照してください。

ダイレクト・パス・ロードを使用してマスター・ディテール・フラット・ファイルから抽出し、マスター・ディテール関係を維持する手順は、次のとおりです。

1. マスター・レコードとディテール・レコードで構成されたフラット・ファイル・ソースをインポートして、サンプリングします。
ファイルのサンプリング時にレコード・タイプに名前を指定する場合は、マスター・レコードとディテール・レコードに説明的な名前を割り当てます。これにより、将来これらのレコードを識別する際に役立ちます。

2. フラット・ファイル・ソースからデータをロードするために使用するマッピングを作成します。

3. フラット・ファイル演算子をマッピング・キャンバスにドラッグ・アンド・ドロップし、データの抽出元のマスター・ディテール・ファイルを指定します。

4. データ・ジェネレータ演算子および定数演算子をマッピング・キャンバスにドラッグ・アンド・ドロップします。

5. マスター・レコードに対する表演算子をマッピング・キャンバスにドラッグ・アンド・ドロップします。
以前作成した既存のワークスペース表を選択するか、属性を指定せずにバインドなしで新しい表演算子を作成し、アウトバウンド同期化を実行して後で表を定義できるようにします。

この表には、ロードするマスター・フィールドに必要なすべての列と、RECNUM値をロードするための追加の数値列が含まれている必要があります。

6. ディテール・レコードに対する表演算子をマッピング・キャンバスにドラッグ・アンド・ドロップします。
以前作成した既存のワークスペース表を選択するか、属性を指定せずにバインドなしで新しい表演算子を作成し、アウトバウンド同期化を実行して後で表を定義できるようにします。

表には、ロードするディテール・フィールドに必要なすべての列と、RECNUM値をロードするための追加の数値列、および対応するマスター表の行の一意の識別子で更新する列が含まれている必要があります。

7. 必要なすべてのフラット・ファイル・マスター・フィールドをマスター表に、ディテール・フィールドをディテール表にマッピングします。
図10-9は、このマスター・フィールドとディテール・フィールドのマッピングを示しています。

8. データ・ジェネレータ演算子のRECNUM属性をマスター表とディテール表のRECNUM列にマップします。
図10-9は、データ・ジェネレータ演算子のRECNUM属性がRECORDNUMBER表の属性にマップされるマッピングを示しています。

9. 定数演算子の定数属性を追加します。
マスター行の一意の識別子列がCHARデータ型である場合は、定数属性のプロパティ・インスペクタで、「データ型」プロパティをCHARに、「式」プロパティをアスタリスク(*)に設定します。

マスター行の一意の識別子列が数値である場合は、定数属性のプロパティ・インスペクタで、「データ型」プロパティをNUMBERに、「式」プロパティを0(ゼロ)に設定します。これにより、すべてのデータ行をロード済としてマークします。

10. 定数演算子の定数属性をディテール表の列にマッピングします。この列には、対応するマスター表レコードの一意の識別子が後で格納されます。
図10-9は、マッピングが完成した状態を示しています。フラット・ファイルのマスター・フィールドはマスター・ターゲット表にマッピングされ、ディテール・フィールドはディテール・ターゲット表にマッピングされ、データ・ジェネレータ演算子のRECNUM属性はマスター・ターゲット表とディテール・ターゲット表にそれぞれマッピングされ、定数属性はディテール・ターゲット表にマッピングされています。

図10-9 ダイレクト・パス・ロードを使用したマスター・ディテール・フラット・ファイルからのマッピング

「図10-9 ダイレクト・パス・ロードを使用したマスター・ディテール・フラットファイルからのマッピング」の説明

11. 次のパラメータを使用して、マッピングを構成します。
ダイレクト・モード: True

エラー許可: 0

後続NULL列: True(すべての表)

12. マッピングを検証し、SQL*Loaderスクリプトを生成した後は、更新後のPL/SQLプロシージャを作成し、それをOracle Warehouse Builderライブラリに追加します。

13. SQL*Loaderスクリプトを実行します。

14. 更新後のPL/SQLプロシージャを実行するか、スクリプトを手動で実行して、UPDATE SQL文を実行します。

次に、生成されたSQL*Loader制御ファイルのスクリプトの例を示します。

OPTIONS ( DIRECT=TRUE,PARALLEL=FALSE, ERRORS=0, BINDSIZE=50000, ROWS=200, READSIZE=65536)
LOAD DATA
CHARACTERSET WE8MSWIN1252
INFILE 'g:\FFAS\DMR2.dat'
READBUFFERS 4
INTO TABLE "MATER_TABLE"
APPEND
REENABLE DISABLED_CONSTRAINTS
WHEN
"REC_TYPE"='P'
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS

(
"REC_TYPE" POSITION (1) CHAR ,
"EMP_ID" CHAR ,
"ENAME" CHAR ,
"REC_NUM" RECNUM
)

INTO TABLE "DETAIL_TABLE"
APPEND
REENABLE DISABLED_CONSTRAINTS
WHEN
"REC_TYPE"='E'
FIELDS
TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
"REC_TYPE" POSITION (1) CHAR ,
"C1" CHAR ,
"C2" CHAR ,
"C3" CHAR ,
"EMP_ID" CONSTANT '*',
"REC_NUM" RECNUM

次に、更新後のPL/SQLプロシージャの例を示します。

create or replace procedure wb_md_post_update(
master_table varchar2
,master_recnum_column varchar2
,master_unique_column varchar2
,detail_table varchar2
,detail_recnum_column varchar2
,detail_masterunique_column varchar2
,detail_just_load_condition varchar2)
IS
v_SqlStmt VARCHAR2(1000);
BEGIN
v_SqlStmt := 'UPDATE '||detail_table||' l '||
' SET l.'||detail_masterunique_column||' = (select i.'||master_unique_column||
' from '||master_table||' i '||
' WHERE i.'||master_recnum_column||' IN '||
' (select max(ii.'||master_recnum_column||') '||
' from '||master_table||' ii '||
' WHERE ii.'||master_recnum_column||' < l.'||detail_recnum_column||') '||
' ) '||
' WHERE l.'||detail_masterunique_column||' = '||''''||detail_just_load_condition||'''';
dbms_output.put_line(v_sqlStmt);
EXECUTE IMMEDIATE  v_SqlStmt;
END;
/

パーティション交換ロードを使用したパフォーマンスの向上

データ・パーティションを使用すると、ターゲット・システムでデータをロードまたは削除するときのパフォーマンスが向上します。この方法は、パーティション交換ロード(PEL)と呼ばれています。

PELは、比較的少量のデータを、大量の履歴データを含むターゲットにロードする際に使用してください。ターゲットにできるものとしては、データ・ウェアハウスの表、ディメンション、キューブなどがあります。

この項の内容は次のとおりです。

- パーティション交換ロードについて

- PELのマッピングの構成

- ダイレクトPELと間接PEL

- PELの効果的な使用方法

- マッピングでのターゲットの構成

- Oracle Warehouse BuilderでのPEL使用時の制限

パーティション交換ロードについて

ターゲット・システムのパーティションを操作すると、パーティション交換ロード(PEL)を使用して、即時にデータを追加または削除できます。表が空のパーティションで交換されると、新規データが追加されます。

PELを使用すると、新規データをパーティションとしてターゲット表と交換し、ロードできます。たとえば、新規データを保持する表は、パーティションのアイデンティティをターゲット表から引き継ぎ、このパーティションはソース表のアイデンティティを引き継ぎます。この交換プロセスは、実際のデータの移動を伴わないDDL操作です。

図10-10は、PELの例を示したものです。ソース表Sourceのデータが4つのパーティション(Target_P1、Target_P2、Target_P3およびTarget_P4)で構成されるターゲット表に挿入されます。新規データをTarget_P3にロードする場合、パーティション交換操作では実際のデータを移動せずに、データ・オブジェクトの名前のみを交換します。交換後は、以前のSourceという名前がTarget_P3に変更され、以前のTarget_P3という名前がSourceになります。ターゲット表には、Target_P1、Target_P2、Target_P3およびTarget_P4の4つのパーティションが含まれたままです。Oracle 9iで使用可能なパーティション交換操作は、データの移動なしにロード・プロセスを完了します。

図10-10 パーティション交換ロードの概要

「図10-10 パーティション交換ロードの概要」の説明

PELのマッピングの構成

パーティション交換ロードのマッピングを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、マッピングを右クリックし、「構成」を選択します。
マッピングの「構成」タブが表示されます。

2. デフォルトでは、PELはすべてのマッピングに対して無効です。パーティション交換ロードを使用するには、「PEL有効」を選択します。

3. 「データ・コレクション頻度」を使用して、マッピングを実行するたびに収集する新規データの量を指定します。このパラメータを設定して、年、四半期、月、日、時間、分ごとのデータの収集を指定します。これによって、パーティション数が決定されます。

4. 収集したデータをステージングする一時表を作成する場合は、パーティション交換を実行する前に、「送る」を選択します。このパラメータを選択しないと、一時表は作成されないまま、ソース表がパーティションとしてターゲット表に直接スワップされます。詳細は、「ダイレクトPELと間接PEL」を参照してください。

5. 「データの置換」を選択すると、ターゲット・パーティションにある既存のデータが新しく収集したデータで置換されます。このパラメータを選択しない場合は、ターゲット・パーティションにある既存のデータは保持されます。新規データは、空ではないパーティションに挿入されます。このパラメータはローカル・パーティションに影響を与え、ターゲット表のパーティションを削除またはスワップするために必要です。TRUNCATE/INSERTプロパティは、表レベルで設定できます。

ダイレクトPELと間接PEL

パーティション交換によってターゲットをロードする場合は、ターゲットを間接的または直接的にロードできます。

- 間接PEL: デフォルトでは、パーティション交換プロセスを開始する前に、ソース・データをステージングする一時表が作成され、維持されます。たとえば、マッピングにリモート・ソースまたは複数ソースの結合が含まれている場合は、間接PELを使用します。

- ダイレクトPEL: ターゲット構造に一致するマッピングのソースを設計します。たとえば、マッピングでダイレクトPELを使用すると、以前実行したマッピングでロードしたファクト表をすぐに公開できます。

間接PELの使用方法

PELを使用して設計したマッピングにリモート・ソースまたは複数ソースの結合が含まれている場合、Oracle Warehouse Builderでは、パーティション交換を続行する前に、ソース処理を実行してデータをステージングする必要があります。したがって、このようなマッピングは、ダイレクトPELをFalseに設定した状態で構成します。Oracle Warehouse Builderでは、ソース処理の結果を格納する一時表が透過的に作成され、維持されます。PELの実行後に、この表は削除されます。

図10-11は、2つのソースを結合し、集計を実行するマッピングを示しています。ORDER_SUMMARY表にロードされたすべての新規データが常に同じパーティションにロードされる場合は、このマッピングで間接PELを使用して、ロードのパフォーマンスを改善できます。この場合、Oracle Warehouse Builderではアグリゲータ後とORDER_SUMMARY前に、一時表が透過的に作成されます。

図10-11 複数のソースを使用するマッピング

「図10-11 複数のソースを使用するマッピング」の説明

Oracle Warehouse Builderでは、ターゲット表と同じ構造(列、索引、制約が同じ)を使用して、一時表が作成されます。この一時表は、パフォーマンス向上のためにパラレル・ダイレクト・パス・ロードINSERTを使用してロードされます。INSERTの後、一時表の索引と制約がパラレルで作成されます。

例: ダイレクトPELを使用したファクト表の公開

ソース表がローカルでデータの品質が高い場合は、ダイレクトPELを使用します。マッピングは、ソースとターゲットが同じデータベースにあり、同じ構造であるように設計する必要があります。ソースとターゲットの索引、制約、列数、列タイプおよび列の長さは同じである必要があります。

たとえば、図10-11でのマッピングと同じマッピングがあり、データをターゲットにロードするタイミングをより細かく制御するとします。データ量によってはロードに数時間がかかり、ターゲット表がいつ更新されるかもわかりません。

ダイレクト接PELを使用してデータを即時にターゲットにロードする手順は、次のとおりです。

1. ソース・データを結合し、必要に応じてデータを変換し、確実に検証してステージング表にロードするマッピングを1つ設計します。このマッピングはPELを使用するように構成しないでください。
ステージング表を、別のマッピングでロードする最終ターゲットの構造と完全に一致するように設計します。

たとえば、図10-11にあるステージング表のORDER_SUMMARYは、図10-12にある最終ターゲットORDER_CUBEと同じ構造である必要があります。

2. ステージング表から最終ターゲットにデータをロードする2番目のマッピングを作成します。このマッピングはダイレクトPELを使用するように構成してください。
図10-12は、ステージング表から最終ターゲットにデータをロードするマッピングを示しています。

図10-12 Publish_Sales_Summaryマッピング

「図10-12 Publish_Sales_Summaryマッピング」の説明

3. Oracle Warehouse Builderのプロセス・フロー・エディタまたはOracle Workflowを使用して、最初のマッピングの完了後に2番目のマッピングを開始します。

PELの効果的な使用方法

次の条件がtrueの場合は、スケーラビリティの高いロード・パフォーマンスのためにPELを効果的に使用できます。

- 表のパーティション化と表領域: ターゲット表は、1つのDATE列ごとにレンジ・パーティション化される必要があります。すべてのパーティションは同じ表領域内に作成される必要があります。すべての表は同じ表領域内に作成されます。

- 既存の履歴データ: ターゲット表には大量の履歴データを格納できる必要があります。PELの使用例には、ターゲットがOLTPデータベースやWebログ・ファイルからデータを毎日収集するクリック・ストリーム・アプリケーションがあります。新規データは変換され、履歴データが格納されているターゲットにロードされます。

- 新規データ: 新規データはすべてターゲット表内の同じパーティションにロードする必要があります。たとえば、ターゲット表が日別に区切られている場合、日別のデータは1つのパーティションにロードされる必要があります。

- ロード頻度: ロード頻度は、データ収集頻度以下である必要があります。

- グローバル索引なし: ターゲット表にはグローバル索引は含めないでください。

マッピングでのターゲットの構成

PELのマッピングでターゲットを構成するには、次の手順を実行します。

- 手順1: すべてのパーティションの作成

- 手順2: 「LOCAL」オプションを使用したすべての索引の作成

- 手順3: 「索引を使用」オプションを使用する主キーまたは一意キー

手順1: すべてのパーティションの作成

パーティションは、実行中に自動的に作成されません。すべてのパーティションは、PELを使用する前に、「パーティションの定義」の説明に従って作成する必要があります。

たとえば、新しいデータ・コレクションの頻度として「月」を選択した場合、新規データの月ごとに必要なすべてのパーティションを作成する必要があります。オブジェクト・エディタを使用して、表、ディメンションまたはキューブのパーティションを作成します。

PELを使用するには、すべてのパーティションがネーミング規則に従って命名される必要があります。たとえば、2002年5月のデータを保持するパーティションの場合、そのパーティション名はY2002_Q2_M05という形式にする必要があります。

PELでパーティションを識別するには、次のいずれかの形式の名前をパーティションに指定する必要があります。

Ydddd

Ydddd_Qd

Ydddd_Qd_Mdd

Ydddd_Qd_Mdd_Ddd

Ydddd_Qd_Mdd_Ddd_Hdd

Ydddd_Qd_Mdd_Ddd_Hdd_Mdd

dには、10進数の数字が入ります。すべての文字は大文字にする必要があります。小文字は認識されません。

各パーティションを正しく命名すると、各パーティションの「上限値」プロパティが自動的に計算されます。そうでない場合は、Oracle Warehouse BuilderでDDL文が作成されるように、上限値を各パーティションに対して手動で構成する必要があります。次に、Oracle Warehouse Builderによって作成されたDDL文の例を示します。

. . .
PARTITION A_PARTITION_NAME
VALUES LESS THAN (TO_DATE('01-06-2002','DD-MM-YYYY')),
. . .

手順2: 「LOCAL」オプションを使用したすべての索引の作成

索引(ORDER_SUMMARY_PK_IDX)をORDER_SUMMARY表に追加します。この索引には、ORDER_DATEとITEM_IDの2つの列があります。表エディタの「索引」タブで次のように設定します。

- 「タイプ」列で「UNIQUE」を選択します。

- 「スコープ」列で「LOCAL」を選択します。

これで、表ORDER_SUMMARYにある一意のローカル索引のDDL文が作成できるようになります。

ローカル索引を使用すると、PELのパフォーマンスを最大限に活用できます。ローカル索引では、すべての索引が表と同じ方法でパーティション化されている必要があります。PELを使用して一時表をターゲット表にスワップすると、索引セグメントのアイデンティティもスワップされます。

ローカル索引として索引が作成されている場合、Oracleサーバーでは、パーティション・キー列を索引の最初の列にする必要があります。前述の例では、パーティション・キーはORDER_DATEで、索引ORDER_SUMMARY_PK_IDXの最初の列になります。

手順3: 「索引を使用」オプションを使用する主キーまたは一意キー

この手順では、すべての主キー制約および一意キー制約がUSING INDEXオプションを使用して作成されるように指定する必要があります。プロジェクト・ナビゲータで、表を右クリックして「構成」を選択します。その表の「構成」タブが表示されます。左パネルで主キーまたは一意キーを選択し、右パネルで「索引を使用」を選択します。

USING INDEXオプションを使用すると、表に制約を追加した際に索引が自動的に作成されなくなります。サーバーは制約と同じ列リストを持つ既存の索引を検索します。したがって、各主キー制約または一意キー制約は、ユーザー定義の一意のローカル索引で補足する必要があります。制約ORDER_SUMMARY_PKに必要な索引は、「手順2: ローカル・オプションを使用したすべての索引の作成」で作成したORDER_SUMMARY_PK_IDXです。

Oracle Warehouse BuilderでのPEL使用時の制限

Oracle Warehouse BuilderでのPEL使用時の制限は次のとおりです。

- 日付パーティション・キーは1つのみ: 使用できるDATEデータ型のパーティション・キー列は1つのみです。数値パーティション・キーは、Oracle Warehouse Builderではサポートされていません。

- 一般的なカレンダのみ: 現在のPELメソッドは、世界中で採用されている一般的なカレンダのみをサポートしています。ユーザー定義の会計年度別や四半期別のビジネス・カレンダは、現時点ではサポートされていません。

- すべての日付パーティションが同じ表領域内にあること: ターゲット(表、ディメンションまたはキューブ)のすべてのパーティションは、同じ表領域内に作成される必要があります。

- すべての索引パーティションが同じ表領域内にあること: ターゲット(表、ディメンションまたはキューブ)のすべての索引は、同じ表領域内に作成される必要があります。ただし、索引とデータでは別の表領域を使用できます。

リモート・ソースからの高パフォーマンスのデータ抽出

データベース・リンクを介してリモート・ソースにアクセスするマッピングを設計できますが、大量のデータを移動するとパフォーマンスが低下する可能性があります。同じバージョンのOracle Databaseのソースとターゲット間で大量のデータを移動するマッピングについては、トランスポータブル・モジュールを使用して、パフォーマンスを大幅に改善するためのオプションがあります。

関連項目:
トランスポータブル・モジュールの使用方法の手順は、「トランスポータブル・モジュールを使用する大量のデータの移動」を参照してください。

コード・テンプレート(CT)マッピングを使用して、リモートOracleまたはその他の異種データベース・ソースから効率的にデータを抽出することも可能です。Oracle Warehouse Builderには、異なるデータ移動オプションのCTマッピングに使用できる事前定義済コード・テンプレートのセットが用意されています。

関連項目:

- CTマッピングの定義および使用方法の詳細は、「コード・テンプレート(CT)マッピングの作成」を参照してください。

- Oracle Warehouse Builderに同梱されているコード・テンプレートの説明は、「Oracle Warehouse Builderに同梱されている事前作成コード・テンプレートについて」を参照してください。

11 ETLジョブのスケジュール

この章の内容は次のとおりです。

- スケジュールの概要

- スケジュールの定義

- ETLオブジェクトへのスケジュールの適用

- Oracle Enterprise ManagerでのETLジョブのスケジュール

スケジュールの概要

Oracle Warehouse Builderで設計した操作を実行するタイミングと頻度を計画するにはスケジュールを使用します。スケジュールはOracle Database 10g以上で実行するマッピングおよびプロセス・フローに適用できます。

スケジュールは、ユーザー・インタフェースで定義する間隔に基づき繰り返し実行するように定義できます。定義する各スケジュールでは、Oracle Warehouse BuilderによりiCalカレンダ標準に準拠するコードが生成され、Oracle SchedulerまたはOracle Concurrent Managerなどのスケジューラに配布できます。

Oracle Warehouse Builderを使用する開発フェーズでは、マッピングとプロセス・フローをスケジューリングするかわりに、「オブジェクトの配布」で説明するように、「コントロール・センター」からすぐに起動および停止します。

スケジュールの定義の概要

スケジュールは、プロジェクトで定義され、プロジェクト・ナビゲータの「スケジュール」ノードのカレンダ・モジュールに含まれます。カレンダ・モジュールは、同じ場所に配布される関連スケジュール・セットのグループ化に使用します。

スケジュール定義には、Oracle Warehouse Builderを使用して定義する操作の実行タイミングと頻度の詳細が含まれます。スケジュールを定義する際は、次の詳細を指定します。

- 開始日時
スケジュールの実行を開始する日時

- スケジュール頻度
スケジュールを実行する頻度(日、週など)

- 繰返し間隔
アクティブな時にスケジュールを繰り返す時間間隔。繰返し間隔によってスケジュールを繰り返す頻度が決まります。たとえば、頻度が週のスケジュールを定義するとします。このスケジュールの繰返し間隔は、このスケジュールを2週間ごとの火曜日に繰り返すなどと指定します。

- 終了日時
スケジュールが実行を停止する日時

スケジュールの使用の概要

スケジュールを定義したら、オブジェクトがスケジュールで定義した詳細に従って実行されるようにETLオブジェクトと関連付けできます。スケジュールは、マッピング、コード・テンプレート(CT)マッピング、プロセス・フローおよびデータ監査と関連付けできます。

たとえば、12-mar-08に開始し、11-mar-09に終了するスケジュールを作成するとします。スケジュール頻度は週次に、繰返し間隔は毎週金曜日と定義します。次に、このスケジュールをマッピングに関連付けます。マッピングはスケジュールで指定した詳細に従って実行されます。マッピングは12-mar-08と11-mar-09の間の毎金曜日に実行されます。

スケジュールの配布の概要

スケジュールを配布する場所は、スケジュールを関連付けるETLオブジェクトによって異なります。スケジュール済ジョブはOracle Databaseの場所に配布する必要があります。プロセス・フロー・パッケージはOracle Workflowの場所またはConcurrent Managerの場所のいずれかに配布する必要があります。

スケジュール済ジョブは、プロセス・フローまたはマッピングなどの実行可能オブジェクトを参照できます。ジョブがプロセス・フローを参照する場合は、プロセス・フローをOracle Workflowに配布し、スケジュール済ジョブをデータベースの場所またはConcurrent Managerの場所のいずれかに配布する必要があります。

スケジュールの定義

次の手順を使用して、スケジュールを定義します。

1. スケジュールを作成するプロジェクト・ノードを展開します。

2. 作成していない場合は、スケジュールを含めるカレンダ・モジュールを作成します。
カレンダ・モジュールを作成するには、スケジュール・ノードを右クリックして「新規カレンダ・モジュール」を選択します。モジュールの作成ウィザードが表示されます。このウィザードを使用してカレンダ・モジュールを作成します。このモジュールに関連付けられた場所がスケジュールを配布する場所であることを確認します。

3. スケジュールを作成するカレンダ・モジュールを右クリックし、「新規カレンダ」を選択します。
「スケジュールの作成」ウィザードが表示されます。

4. ようこそページで「次へ」をクリックします。

5. 名前と説明ページに、スケジュールの名前と説明(オプション)を入力し、「次へ」をクリックします。
スケジュール名は表示されるカレンダ・モジュール内で一意であることを確認します。詳細は、「データ・オブジェクトのネーミング規則」を参照してください。

6. 「開始および終了時間」ページで、スケジュールの時間ゾーン、開始時間、終了時間を選択します。「次へ」をクリックします。
これらの値の設定の詳細は、「開始および終了日時」を参照してください。

注意:
スケジュールの作成ウィザードには、使用可能なスケジュール機能がすべて含まれているわけではありません。すべてのスケジュール機能にアクセスするには、ウィザードを使用してスケジュールを定義後、スケジュール・エディタを使用して追加スケジュール機能を指定します。

7. 「頻度および繰返し間隔の選択」ページで、スケジュールの頻度と繰返し間隔を指定します。「次へ」をクリックします。
頻度および繰返し間隔の設定の詳細は、「繰返しスケジュールの定義」を参照してください。

関連項目:
スケジュールの例は、「スケジュールの例」を参照してください。

8. サマリー・ページで、スケジュールに選択したオプションを確認します。「終了」をクリックしてスケジュールを定義します。
これで、カレンダ・モジュールの下のプロジェクト・ナビゲータにスケジュールが作成および追加されます。

スケジュールを定義すると、ワークスペースにスケジュールのメタデータが作成されます。このスケジュールを使用してスケジュールに定義した時間にETLジョブを実行するには、スケジュールを配布しておく必要があります。Oracle Databaseの場所にスケジュールを配布すると、データベース・スケジューラにスケジュールが作成されます。

関連項目:

- 「スケジュールの配布について」

- 「オブジェクトを配布」

スケジュールの編集

スケジュール・エディタを使用して、スケジュールを編集します。

図11-1は、上に開始日時および終了日時が表示されたスケジュール・エディタを示しています。

繰返し式はエディタの左下パネルに表示されます。この繰返し式を使用して、頻度単位、繰返しおよび1つ以上の句を指定します。

スケジュールのプレビューが右下パネルに表示されます。プレビューは、「Enter」キーを押すたびまたはスケジュール・エディタの新規セルに移動するたびにリフレッシュされます。無効スケジュールを指定すると、プレビューにエラー・メッセージが表示されます。

定義できるスケジュールの例は、「スケジュールの例」を参照してください。

図11-1 スケジュール・エディタ

「図11-1 スケジュール・エディタ」の説明

開始日時および終了日時

開始日時と終了日時により、スケジュールの有効期間が定義されます。

最初にタイムゾーンを指定します。デフォルトの開始日を受け入れるか、将来の時点を指定できます。デフォルトの終了日は、デフォルトの開始日と等しいため、必ず変更してください。

ウィザードで作業中に「次へ」をクリックすると、次のページが表示されます。

スケジュール・エディタで作業している場合、開始日時は「繰返し式」の「句」のデフォルトとなります。「スケジュール・プレビュー」の実行時刻は「開始時間」に対応しています。

繰返しスケジュールの定義

繰返し式によってスケジュールを実行する頻度が決まります。頻度単位、繰返し値、1つ以上の句の値を指定して、繰返し式を定義します。

ウィザードで作業中の場合、句は使用できません。ウィザードが終了したら、スケジュールを開き、スケジュール・エディタを使用して句を設定できます。

頻度単位

頻度単位によって、再帰のタイプが決まります。使用できる値は、「年」、「月」、「週」、「日」、「時間」、「分」および「秒」です。

また、スケジュールを「1度」に実行するように定義することもできます。

繰返し

繰返し値は、再帰繰返しの頻度を指定します。デフォルト値は1、最大値は999です。「頻度単位」に「年」を選択して「繰返し」の値を1のままにすると、「開始日時および終了日時」で指定した日付範囲に含まれる年ごとにスケジュールが評価されます。同じスケジュールの「繰返し」の値を2に変更すると、スケジュールは指定した日付範囲内で1年おきにのみ評価されます。

句

「句」を使用すると、5週間ある月の第1金曜日に実行するスケジュールなど、複雑なスケジュールの繰返し式を定義できます。句ごとに値を入力するか、省略記号ボタンをクリックしてセレクタ・ダイアログ・ボックスを表示します。値を迅速に入力するには、最初にセレクタ・ダイアログ・ボックスを使用して有効な値を確認し、次に「スケジュールの例」を参照してください。

図11-2は、年の月を選択するセレクタ・ダイアログ・ボックスを示しています。

図11-2 年の月を選択するためのセレクタ・ダイアログ・ボックス

「図11-2 年の月を選択するためのセレクタ・ダイアログ・ボックス」の説明

セレクタ・ダイアログ・ボックスを使用して「OK」を選択すると、結果がスケジュール・エディタに表示されます。このように、セレクタ・ダイアログ・ボックスを使用して有効な値を確認できます。

図11-3は、結果が表示されたスケジュール・エディタを示しています。

図11-3 1月と6月のMONTH句

「図11-3 1月と6月のMONTH句」の説明

次の句を定義できます。

- 月

- 週番号

- 年の通算日

- 月の通算日

- 日

- 時

- 分

- 秒

- 設定位置

月

この句では、スケジュールが有効な月を1つ以上指定します。値を入力する場合、1月の場合は1、3月の場合は3のように数値を使用するか、2月の場合はFEB、7月の場合はJULのように3文字の略称を使用します。

週番号

年の週番号でスケジューリングできるのは、「頻度単位」で「年」を選択した場合のみです。

値を入力するか、省略記号ボタンをクリックしてセレクタ・ダイアログ・ボックスを表示できます。値を入力する場合、有効な値には年に応じて1から52または53までの正負の整数が含まれます。たとえば、年の最後から2番目の週に実行するようにスケジュールを設定するには、-2を入力するか、セレクタ・ダイアログ・ボックスに入力します。

図11-4は、年の最後から2番目の週に実行するスケジュールが表示されたセレクタ・ダイアログ・ボックスを示しています。

図11-4 「週番号」句が年の最後から2番目の週に設定されている場合

「図11-4 週番号句が年の最後から2番目の週に設定されている場合」の説明

週番号」句は、週は月曜から始まって日曜で終わると定義する、ISO-8601に準拠しています。また、年の第1週はグレゴリオ暦の年の第1木曜と1月4日を含む週として定義されます。

この標準を使用すると、カレンダ年には52週または53週を含めることができます。第1週の一部は前のカレンダ年に含まれる場合があります。第52週の一部は次のカレンダ年に含まれる場合があります。年が53週の場合は、その一部を次のカレンダ年に含める必要があります。

たとえば、1998年の第1週は、1997年12月29日の月曜日に始まっています。最後の週となる第53週は、1999年1月3日の日曜日に終わっています。したがって、1997年12月29日は1998年の第1週に含まれ、1999年1月1日は1998年の第53週に含まれることになります。

年の通算日

この句を使用して、年の通算日を数値として指定します。値1は1月1日、35は2月4日に相当します。有効な値は、1から366までと-366から-1までです。

負の値は、うるう年に関係なく年ごとに同じ日付を識別するのに役立ちます。たとえば、年の第60日は3月1日ですが、うるう年の場合は2月29日です。該当する負の値を計算するには、年の最終日から遡ってカウントします。したがって、12月31日の年の通算日は-1です。12月30日は-2となります。すべての3月1日のスケジュールを暦年に関係なく定義するには、「年の通算日」を-306に設定します。

月の通算日

この句では、月の通算日を数値として指定します。有効な値は1から31までと-1から-31までです。たとえば、10は選択した月の10日を意味します。最終日から遡ってカウントするにはマイナス記号(-)を使用します。たとえば、「月の通算日」句を-1に設定すると、スケジュールは各月の最終日に実行されます。値を-2に設定すると、スケジュールは各月の最終日の前日に実行されます。

日

この句では、月曜から日曜までの曜日をMON、TUEなどの書式で指定します。

「日」の値には、接頭辞として正および負の数値を使用できます。使用できる数値接頭辞は、「頻度単位」で選択する値に応じて異なります。

頻度単位として「年」を選択すると、「日」の接頭辞として年の週数を表す値(1から53および-53から-1)を使用できます。したがって、「日」の設定が26Friの場合は年の26番目の金曜に相当します。頻度単位が「年」の場合の入力-1Monは、年の最後の月曜に相当します。

頻度単位として「月」を選択すると、「日」の接頭辞として月の週数を表す値(1から5および-5から-1)を使用できます。この場合、頻度単位が「月」を設定した場合の入力-1Monは、各月の最終月曜に相当します。

時

この句を使用すると、時間単位でスケジュールできます。有効な値は0から23で、0は午前0時、5は午前5時、13は午後1時、23は午後11時です。

分

この句を使用すると、分単位でスケジュールできます。有効な値は0から59です。たとえば、45は45分後を意味します。

秒

この句を使用すると、秒単位でスケジュールできます。有効な値は0から59です。たとえば、30は30秒後を意味します。

設定位置

Oracle Databaseバージョン10gリリース2以上を使用している場合、この句を使用して、以前評価されたタイムスタンプのリストでのアイテムの位置に基づいてスケジューリングできます。他の句を使用して、タイムスタンプのリストを戻します。次に、「設定位置」句を追加して、リストから1つ以上のアイテムを選択します。この句は、月の最後の平日にジョブを実行するなどの要件がある場合に役立ちます。有効な値は1から9999です。負の数値の場合はリストの末尾からアイテムが選択され(-1が最後のアイテム、-2が最後から2番目のアイテムとなります)、正の数値の場合はリストの先頭からアイテムが選択されます。句の評価は常に最後に行われ、頻度ごとに1回のみ行われます。サポートされる頻度は、「月」および「年」です。

スケジュールの例

表11-1は、スケジュールを定義する際の参考にしてください。

表11-1 スケジュールの繰返し式の例

スケジュールの説明

頻度単位

繰返し

句

毎週金曜

週

1週

日= FRI

隔週金曜

週

2週

日= FRI

毎月最終日

月

1か月

月の通算日= -1

毎月最終日前日

月

1か月

月の通算日= -2

5週ある月の第1金曜日

月

1か月

日= -5FRI

毎月最後の平日

月

1か月

日=MON、TUE、WED、THU、FRI

設定位置=-1

3月10日

年

1年

月= MAR

月の通算日= 10

12日に1回

日

12日

該当なし

毎日午前8時および午後5時

日

1日

時= 8、17

毎月第2水曜日

月

1か月

日= 2 WED

毎月最初の3日間の毎時

時

1時間

月の通算日= 1、2、3

ETLオブジェクトへのスケジュールの適用

スケジュールを定義したら、スケジュールをETLオブジェクトに関連付けます。これでスケジュールで指定した時間にETLオブジェクトを実行できます。スケジュールは、マッピング、コード・テンプレート(CT)マッピング、プロセス・フローおよびデータ監査と関連付けできます。

スケジュールをETLオブジェクトに適用する手順

1. プロジェクト・ナビゲータで、スケジュールを適用するETLオブジェクトを右クリックし、「構成」を選択します。
選択したオブジェクトの構成パラメータが含まれる「構成」タブが「ドキュメント」ウィンドウに表示されます。

2. 「参照カレンダ」フィールドの省略記号ボタンをクリックします。
使用可能スケジュールの一覧を含む「参照カレンダ」ダイアログボックスが表示されます。

スケジュールするマッピングまたはプロセス・フローでは、物理名は25文字以内、ビジネス名は1995文字以内である必要があります。この制限により、Oracle Warehouse Builderでは、配布および実行で必要な接尾辞_jobおよびその他の内部文字をマッピング名に追加できるようになります。

3. 選択したオブジェクトに適用するスケジュールを選択し、「OK」をクリックします。

4. スケジュールおよび関連スケジュールを配布します。
関連するオブジェクトとともに正しく配布された場合、ターゲット・スキーマは作成したスケジュールに基づいてETLオブジェクトを実行します。

Oracle Enterprise ManagerでのETLジョブのスケジュール

マッピングまたはプロセス・フローを正常に配布したら、スケジュールしてOracle Enterprise Managerで実行できます。

注意:
ジョブおよびスケジュールの作成の詳細は、『Oracle Enterprise Manager概要』およびOracle Enterprise Managerのヘルプを参照してください。

Oracle Enterprise Managerにおけるマッピングまたはプロセス・フローのスケジュール手順:

1. Oracle Warehouse Builderにマッピングまたはプロセス・フローを正常に配布します。

2. Oracle Warehouse Builderリポジトリの所有者またはリポジトリ・ユーザーとしてEnterprise Managerに接続します。

3. PL/SQLブロックのWB_RT_API_EXEC.RUN_TASK関数を使用するスケジューラ・ジョブを作成します。
この関数の詳細は、「WB_RT_API_EXEC.RUN_TASK関数」を参照してください。

4. ジョブを実行するスケジュールを作成します。

SQLPLUS_EXEC_TEMPLATE SQLスクリプト

このスクリプトを使用すると、SQL*PlusからETLプロセスを開始し、cron、AT、Autosys、Tivoliなどのスケジューリング・ツールを使用できます。

sqlplus_exec_template.sqlスクリプトは、OWB_HOME/owb/rtp/sqlディレクトリにあります。

戻り値

1 = 成功
2 = 警告
3 = エラー

構文

SQLPLUS_EXEC_TEMPLATE rt_owner location task_type task_name
system_params custom_params

引数

次の各引数の値を入力します。

- rt_owner: リポジトリの所有者。

- location: PL/SQLマッピングおよびプロセス・フローの場合は、配布に使用する場所を指定します。
SQL*LoaderおよびSAPマッピングの場合は、このパラメータをPlatformSchemaに設定します。この変数は大文字小文字を区別します。

- task_type: マッピングまたはプロセス・フローの適切なタスク・タイプを入力します。

- PLSQLMAP: PL/SQLマッピング

- SQLLOADERCONTROLFILE: SQL*Loaderマッピング

- PROCESSFLOW: プロセス・フロー

- ABAPFILE: SAPマッピング

- DATAAUDITOR: データ監査マッピング

- SCHEDULEDJOB: Oracle Warehouse Builderのスケジュール済ジョブ

- task_name: マッピングまたはプロセス・フローの物理名

- system_params: このタスク・タイプのシステム・パラメータの値。これらの値はデフォルト値を上書きします。name=valueという形式でパラメータを入力します。複数のパラメータはカンマで区切り、文字列全体を二重引用符で囲みます。バックスラッシュ (\) はエスケープ文字で、リテラル・テキストとしてカンマまたは二重引用符を含める必要があります。
正しい例は、次のとおりです。

","
"this_param=true"
"this_param=true, that_param=2"

- custom_params: このタスクに定義されたカスタム・パラメータの値。構文のsystem_paramsを参照してください。

例

次の各例では、sqlplus.exeおよびsqplus_exec_template.sqlへのパスを指定する必要があります。

sqlplus user/password@tns_name @sqlplus_exec_template MY_RUNTIME MY_WAREHOUSE PLSQL MY_MAPPING "," ","

sqlplus user/password@tns_name @sqlplus_exec_template MY_RUNTIME PlatformSchema SQL_LOADER MY_LOAD "," ","

sqlplus user/password@tns_name @sqlplus_exec_template MY_RUNTIME MY_WORKFLOW PROCESS MY_PROCESS "," ","

sqlplus user/password@tns_name @sqlplus_exec_template MY_RUNTIME PlatformSchema ABAP MY_SAP "," ","

WB_RT_API_EXEC.RUN_TASK関数

WB_RT_API_EXEC PL/SQLパッケージのRUN_TASKファンクションを使用すると、Oracle Warehouse BuilderからETLプロセスをスケジュールして実行することができます。

戻り値

戻り値は関数のパラメータによって異なります。

background=0およびoem_friendly=0の場合:

1 = 成功
2 = 警告
3 = エラー

background=0およびoem_friendly=1の場合:

0 = 成功または警告
3 = エラー

background=1の場合:

0 = タスクは正常に送信され、実行されました。
1 = タスクは送信されませんでした。

構文

RUN_TASK
( location        IN   VARCHAR2,
task_type       IN   VARCHAR2,
task_name       IN   VARCHAR2,
custom_params   IN   VARCHAR2   DEFAULT NULL,
system_params   IN   VARCHAR2   DEFAULT NULL,
oem_friendly    IN   NUMBER     DEFAULT 0,
background      IN   NUMBER     DEFAULT 0
)
RETURN NUMBER;

次の各パラメータの値を入力します。

- location: PL/SQLマッピングおよびプロセス・フローの場合は、配布に使用する場所を指定します。
SQL*LoaderおよびSAPマッピングの場合は、このパラメータをPlatformSchemaに設定します。この変数は大文字小文字を区別します。

- task_type: マッピングまたはプロセス・フローの適切なタスク・タイプを入力します。

- PLSQLMAPまたはPLSQL: PL/SQLマッピング

- SQLLoaderまたはSQLLoaderControlFileまたはSQLLoaderMap: SQL*Loaderマッピング

- ProcessまたはProcessFlow: プロセス・フロー

- ABAPFileまたはSAPMapまたはSAP: SAPマッピング

- DataAuditor: データ監査マッピング

- ScheduledJob: Oracle Warehouse Builderのスケジュール・オブジェクト

- AppsCMScheduler: Concurrent Managerのスケジュール・ジョブ

- DBMSScheduler: データベースのスケジュール・ジョブ

注意:
以前は、数値とリテラル値のどちらでもtask_typeを指定できました。たとえば、3でProcessFlowを指定し、4でSAPを指定するような方法です。ただし、11gリリース2 (11.2)以降では、数値は有効でなくなりました。必ずリテラル値を使用する必要があります。大文字小文字はどちらでも、また混在していてもかまいません。たとえば、PROCESSFLOW、ProcessFlow、processflowはすべて有効です。

- task_name: マッピングまたはプロセス・フローの名前

- custom_params: このタスクに定義されたカスタム・パラメータの値。構文のsystem_paramsを参照してください。

- system_params: このタスク・タイプのシステム・パラメータの値。これらの値はデフォルト値を上書きします。name=valueという形式でパラメータを入力します。
複数のパラメータはカンマで区切り、文字列全体を二重引用符で囲みます。バックスラッシュ (\) はエスケープ文字で、リテラル・テキストとしてカンマまたは二重引用符を含める必要があります。

正しい例は、次のとおりです。

","
"this_param=true"
"this_param=true, that_param=2"

- oem_friendly: 戻り値を制御します。Enterprise Managerで実行する場合は1に設定し、それ以外の環境の場合は0に設定します。

- background: タスクの実行を制御します。バックグラウンドの場合は1に、フォアグラウンドの場合は0に設定します。

例

次の例は、CUSTOMER_MAP in SALES_TARGET_LOCATIONという名前のマッピングを実行する関数の戻り値を示しています。

BEGIN
DBMS_OUTPUT.PUT_LINE('Result: ' || TO_CHAR(gccrep.wb_rt_api_exec.run_task(
'SALES_TARGET_LOCATION','PLSQLMAP','CUSTOMER_MAP', null, null, 1)));
END;

12 ターゲット・スキーマへの配布およびETLロジックの実行

Oracle Warehouse Builderには、単一論理モデルおよび複数の物理モデルをサポートする機能が用意されています。これにより、データ・ウェアハウスを設計して、複数のターゲット・システムに実装できます。さらに、Oracle Warehouse Builderは同じオブジェクト定義の複数の物理的に異なる実装をサポートしています。

この章では、Oracle Warehouse Builderの実装環境について説明します。オブジェクトの配布方法とETLロジックの実行方法についても説明します。

この章の内容は次のとおりです。

- Oracle Warehouse Builderにおける配布と実行の概要

- 「配布および実行プロセスの手順」

- 「オブジェクトを配布」

- ETLジョブの開始

- SQL*PlusにおけるETLジョブの開始

- SQLスクリプトによるジョブの管理

- 例: ターゲット・スキーマの更新

Oracle Warehouse Builderにおける配布と実行の概要

データ・ウェアハウスを設計した後、設計オブジェクトを配布および実行して、この設計をターゲット・スキーマに実装する必要があります。コントロール・センター・マネージャでは、配布および実行のすべての側面を表示および管理できる総合的な配布コンソールが提供されます。ここから、アクティブな「コントロール・センター」に格納されている情報にアクセスできます。

配布について

配布とは、Oracle Warehouse Builderワークスペースで定義された論理オブジェクトに従ってターゲット・ロケーションに物理オブジェクトを作成するプロセスです。ターゲット・スキーマを設計時に作成されたデータ・オブジェクトおよび定義済ETLオブジェクトは論理定義です。Oracle Warehouse Builderにより、ワークスペースにこれらのデータ・オブジェクトのメタデータが格納されます。これらのオブジェクトをターゲット・スキーマに物理的に作成するには、これらのオブジェクトを配布する必要があります。たとえば、デザイン・センターを使用して表を作成すると、この表のメタデータはワークスペースに格納されます。この表をターゲット・スキーマに物理的に作成するには、この表をターゲット・スキーマに配布する必要があります。

配布プロセスの一環として、Oracle Warehouse Builderはオブジェクトのスクリプトを検証および生成し、スクリプトをコントロール・センターに転送して、オブジェクトに関連付けられた配布アクションに対してスクリプトを起動します。オブジェクトは、プロジェクト・ナビゲータから、またはコントロール・センター・マネージャを使用して配布できます。

注意:
オブジェクトを配布するたびに、Oracle Warehouse Builderでは、すべての設計オブジェクトに対するすべての変更がワークスペースに自動的に保存されます。プリファレンス」ダイアログ・ボックスの「コミットを要求」を選択すると、警告メッセージを表示できます。

配布できるのは、ユーザーにCOMPILE権限があるオブジェクトのみです。デフォルトでは、ワークスペース内のすべてのオブジェクトに対してこの権限があります。ただし、ワークスペースの所有者が異なるセキュリティ・ポリシーを設定している場合があります。

注意:
オブジェクトは常にOracle Warehouse Builderを使用して管理してください。配布した物理オブジェクトをSQLで手動で変更しないでください。そうしないと、論理オブジェクトと物理オブジェクトの同期がとれなくなり、予測できない結果を引き起こす可能性があります。

配布アクションについて

デザイン・センターで新しいオブジェクトを定義すると、オブジェクトはただちにコントロール・センター・マネージャの配布ロケーションの下にリストされます。オブジェクトにはそれぞれデフォルトの配布アクションがあり、この配布アクションは表示可能です。オブジェクトのデフォルト配布アクションは、オブジェクトの現在の設計ステータスと現在の配布ステータスの比較に基づいて決定されます。たとえば、まだ配布されていない表のデフォルト配布アクションは「作成」になります。以前に配布済の表のデフォルト・アクションは「アップグレード」になります。デフォルトを上書きするには、コントロール・センター・マネージャで別の配布アクションを選択します。

デフォルトは前回のアクションで設定され、オブジェクトのタイプによって異なります。

次の配布アクションがあります。

- 作成: ターゲット・ロケーションにオブジェクトを作成します。同じ名前のオブジェクトが存在する場合は、エラーが発生することがあります。たとえば、Oracle Warehouse Builderからオブジェクトが配布されていない場合にこのエラーが発生します。

- アップグレード: 可能な場合、データを喪失することなくオブジェクトを変更します。アップグレード・アクションは元に戻して再実行できません。このアクションは、スケジュールなど、一部のオブジェクト・タイプには使用できません。

注意:
コントロール・センターを使用して、DDLスクリプトにROW MOVEMENT句を含む表をアップグレードすると、アップグレードは失敗します。
この問題を解決するには、表の行移動構成パラメータをNULLに設定してから、「アップグレード」アクションを使用して表を配布します。

- 削除: ターゲット・ロケーションからオブジェクトを削除します。

- 置換: オブジェクトを削除して、再度作成します。このアクションはアップグレードより早いですが、すべてのデータが削除されます。

配布ステータスについて

オブジェクトを配布すると、Oracle Warehouse Builderによりオブジェクトに配布ステータスが割り当てられます。このステータスは配布の結果を表しています。配布ステータスはコントロール・センター・マネージャで表示できます。

配布ステータスは次のいずれかです。

- 未配布: オブジェクトがまだターゲット・スキーマに配布されていないことを示します。

- 正常終了: オブジェクトがターゲット・スキーマに正常に配布されたことを示します。

- 警告: オブジェクトの配布中に警告が生成されたことを示します。

- 失敗: オブジェクトの配布に失敗したことを示します。

ディメンション・オブジェクトの配布について

MOLAPディメンション・オブジェクトを配布するには、ロケーションのバージョンとOracleモジュールの「PL/SQL生成モード」構成パラメータが設定されていることを確認します。キューブ編成のMVをサポートする11g AWを生成するには、ロケーション・バージョンは少なくとも11gR1以上、「PL/SQL生成モード」構成パラメータはデフォルトまたは11gリリース1以上である必要があります。

マッピングおよびプロセス・フローの配布について

ETLオブジェクトにはマッピングとプロセス・フローが含まれています。マッピングまたはプロセス・フローの配布には、次の手順が含まれます。

- 必要に応じて、PL/SQL、SQL*LoaderまたはABAPスクリプトを生成します。

- 必要なロケーションを登録し、必要なコネクタを配布します。これにより、物理ロケーションとそのコネクタの詳細が実行時に利用可能になります。

- PL/SQL、XPDL、SQL*LoaderまたはABAPのスクリプトをデザイン・センターからコントロール・センターに転送します。

Oracle Warehouse Builderプロセス・フローを正常にOracle Workflowに配布するには、『Oracle Warehouse Builderインストレーションおよび管理ガイド』の説明に従って、Oracle Workflowの正しいバージョンにアクセスします。

コード・テンプレート(CT)のマッピングおよびWebサービスの配布について

CTのマッピングまたはWebサービスを配布する前に、 「コントロール・センター・エージェント(CCA)の起動」の説明に従って、コントロール・センター・エージェントを起動する必要があります。

コード・テンプレートのマッピングまたはWebサービスを配布する手順は、次のとおりです。

1. .earファイルを生成します。

2. .earファイルをコントロール・センター・エージェントに関連付けられたOC4Jサーバーに転送します。

スケジュールの配布について

スケジュールに関連付けられたETLオブジェクトに応じて、スケジュールをOracle DatabaseまたはConcurrent Managerに配布できます。

関連項目:
スケジュールの配布の詳細は、「スケジュールの配布の概要」を参照してください。

スケジュールの配布先のリモートのOracle WorkflowロケーションおよびリモートのOracle Warehouse Builder 10gロケーションの場合は、ターゲット・ロケーションにCREATE SYNONYMシステム権限があることを確認します。評価ロケーションが指定されている、または配布ロケーションがコントロール・センター・スキーマとは異なるデータベース・インスタンスを参照する場合は、配布ロケーションにはCREATE DATABASE LINKシステム権限が必要です。

実行について

マッピング、プロセス・フロー、変換、コード・テンプレートのマッピングおよびWebサービスなどのETLロジックを含むオブジェクトの場合、実行という追加ステップがあります。実行とは、配布済オブジェクトに定義されたETLロジックを実行するプロセスです。

通常、オブジェクトは配布されて複数回実行されます。オブジェクト定義が変更された場合は、オブジェクトを再配布する必要があります。たとえば、定義後マッピングを配布するとします。マッピングは特定の間隔(日次または週次)で実行するようにスケジュールできます。マッピング定義が変更されると、マッピングを再配布する必要があります。

たとえば、表からデータを取り出し、ソース・データ上で変換し、ターゲット表にロードするマッピングを定義するとします。このマッピングを配布すると、このマッピングに生成されたPL/SQLコードはターゲット・スキーマに格納されます。このマッピングを実行すると、ETLロジックが実行され、データがソース表から取得されて変換され、ターゲット表にロードされます。

もう1つの例は、表内のデータが表に定義されたデータ・ルールと一致するかどうかを確認するWebサービスの定義例です。Webサービスを配布すると、Webサービスに生成された.earファイルがコントロール・センター・エージェントに転送されます。Webサービスを実行すると、Webサービスで定義されたETLロジックが実行され、表内のデータが表で定義されたデータ・ルールに違反していないかを検証するチェックが実行されます。

構成について

Oracle Warehouse Builderでは、オブジェクトの論理設計が配布の物理詳細から分離されています。この分離は、構成パラメータに物理詳細を格納することによって実現します。名前付きの構成と呼ばれるオブジェクトには、すべての構成設定が格納されます。名前付きの構成を使用して、同じ設計の異なるシステム(開発、本番、テスト)に対して、異なる物理パラメータを実装します。これにより、開発環境からテスト環境、さらに本番環境にOracle Warehouse Builderアプリケーションを容易に移動することができます。たとえば、開発システムで、NOPARALLELとしてパラレル設定を指定できます。本番システムでは、パラレル設定にはPARALLELを指定し、16程度の値に設定できます。

各配布ロケーションに、それぞれオブジェクト・パラメータの設定が異なる名前付き構成を作成できます。各名前付き構成は1つのコントロール・センターとのみ関連付けられます。

関連項目:
複数構成の作成の詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

異なる構成の構成プロパティの表示および設定について

プロジェクトに複数の構成を作成すると、各構成のオブジェクトに異なる構成パラメータを設定できます。常に、この構成の1つのみがアクティブ化され、アクティブ構成と呼ばれます。たとえば、PROD_CONFIG、DEV_CONFIGおよびQA_CONFIGの3つの構成があるとします。表SALES_TABには、3つの構成のそれぞれに異なる構成パラメータを設定できます。

関連項目:
複数構成の詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

オブジェクトを右クリックし、「構成」を選択すると、アクティブ構成のオブジェクトの構成パラメータが新しい「構成」タブに表示されます。ツールバーの構成リストを使用して異なる構成を選択してアクティブ構成を変更すると、新しくアクティブ化された構成の構成パラメータが既存の構成パラメータの右に示されます。

プロジェクトの他の構成の構成パラメータは、「構成」タブの上に表示されるツールバーの「構成列の管理」をクリックすると表示できます。「構成の選択」ダイアログ・ボックスが表示されます。このダイアログボックスには、プロジェクト内で定義されたすべての構成が示されます。「構成」タブに構成パラメータを表示する構成を選択し、「OK」をクリックします。選択した構成のパラメータが、現在の構成パラメータに隣接して表示されます。

異なる構成の構成プロパティは、「構成」タブの上に表示されるツールバーの「違いをハイライト表示」をクリックすると比較できます。Oracle Warehouse Builderでは、選択した様々な構成で設定が異なる構成パラメータがハイライト表示されます。これにより、各構成内のオブジェクトの構成設定を比較できます。

「構成」タブから特定の構成の構成パラメータを削除するには、「構成列の管理」をクリックします。表示される「構成の選択」ダイアログボックスで、「構成」タブから設定を削除する構成の選択を解除し、「OK」をクリックします。

アクティブな構成の構成パラメータのセットは常に「構成」タブに表示され、このセットは削除できません。

配布および実行プロセスの手順

データ・システムのライフサイクルでは、一般に次の手順を実行して配布プロセスでシステムを作成し、実行プロセスでデータをシステムに移動します。

1. ツールバーの構成リストから、オブジェクト設定および使用するコントロール・センターが指定された名前付きの構成を選択します。

2. データ・オブジェクトとETLオブジェクトをターゲット・ロケーションへ配布します。個別に配布、1つずつ順に配布、すべて一度に配布のいずれも可能です。
オブジェクトの配布の詳細は、「オブジェクトの配布」を参照してください。

3. 配布結果を確認します。オブジェクトを配布できなかった場合は、問題を修正し、再度配布します。
配布結果の詳細は、「配布結果の確認」を参照してください。

4. マッピング、プロセス・フローなどの実行可能オブジェクトの場合は、ETLプロセスをただちに開始、または後で実行をスケジュールすることもできます。
ETLプロセスの開始の詳細は、「ETLジョブの開始」を参照してください。

ETLオブジェクトのスケジューリングの詳細は、 「ETLジョブのスケジュール を参照してください。

5. ユーザーの要求やソース・データの変更などにあわせて、ターゲット・オブジェクトの設計を変更します。

6. 変更したオブジェクトの配布アクションを「アップグレード」または「置換」に設定します。
配布アクションの詳細は、「配布アクションについて」を参照してください。

7. 手順1から4を繰返します。

注意:
Oracle Warehouse Builderでは、配布前に、ワークスペースに対するすべての変更が自動的に保存されます。

オブジェクトを配布

オブジェクトは、プロジェクト・ナビゲータまたはコントロール・センター・マネージャを使用して配布できます。プロジェクト・エクスプローラからの配布は、デフォルト・アクションに制限されており、作成」、「置換」、「削除」または「更新」に設定されている可能性があります。デフォルト・アクションは、最後に配布されてからのオブジェクト設計への変更内容によって決定します。デフォルト・アクションを上書きするには、配布プロセスを完全に制御するコントロール・センター・マネージャを使用します。

ETLオブジェクトを配布したら、 「ETLジョブの開始」の説明に従って、ETLオブジェクトで定義されたETL操作を実行するスクリプトを明示的に起動する必要があります。

コントロール・センター・マネージャを使用したオブジェクトの配布

コントロール・センター・マネージャを使用してオブジェクトを配布すると、Oracle Warehouse Builderによって配布するオブジェクトのすべての依存オブジェクトが自動的に配布されます。

注意:
コントロール・センター・マネージャの動作は、「プリファレンス」ダイアログ・ボックスの多数の設定によって制御されます。実際の配布プロセスは、追加の設定によって制御されます。
ツールメニューの、「プリファレンス」をクリックします。「コントロール・センター・モニター」および「配布」の下に、設定がリストされます。設定の説明は、「ヘルプ」をクリックしてください。

コントロール・センター・マネージャを使用したオブジェクトの配布手順

1. プロジェクト・ナビゲータで、配布するオブジェクトが含まれるプロジェクトを開きます。

2. 「ツール」メニューから「コントロール・センター・マネージャ」を選択します。
プロジェクトの構成をアクティブにするために、コントロール・センターにアクセス権を付与するコントロール・センター・マネージャが表示されます。このメニューを選択できない場合は、適切な名前付きの構成およびコントロール・センターがアクティブであることを確認します。

関連項目:
構成の詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

3. リレーショナルまたはROLAPディメンジョン・オブジェクトを配布する場合は、これらのオブジェクトの実装詳細が指定されていることを確認します。これはバインドすることによって指定できます。
詳細は、「ディメンジョン・オブジェクトのリレーショナル実装」および「ディメンジョン・オブジェクトのROLAP実装」を参照してください。

4. (オプション)コード・テンプレートのマッピングまたはWebサービスを配布する場合は、 「コントロール・センター・エージェント(CCA)の起動」の説明に従って、コントロール・センター・エージェントを起動します。

5. コントロール・センター・マネージャのナビゲーション・ツリーで、配布するオブジェクトが含まれるロケーション・ノードを展開します。

6. 配布するオブジェクトを選択します。
複数のオブジェクトを選択する場合は、[Ctrl]キーを押したままにして複数のオブジェクトを選択します。

ノードを選択すると、特定のノードに含まれるすべてのオブジェクトを配布できます。たとえば、特定のモジュールにあるすべての表を配布するには、そのモジュールの表ノードを選択します。モジュール内のすべのオブジェクトを配布するには、モジュールを選択します。

7. 「オブジェクトの詳細」パネルの「詳細」タブで、選択したオブジェクトの配布アクションを設定します。
デフォルト配布アクションを使用して選択したオブジェクトを配布するには、「詳細」タブで、デフォルト・アクション」をクリックします。

関連項目:
配布アクションの詳細は、「配布アクションについて」を参照してください。

8. 選択したオブジェクトを配布します。
オブジェクトをコントロール・センター・マネージャに配布するには、ツールバーの「配布」をクリックします。

オブジェクトをローカル・ファイルへ配布するには、「ファイル」メニューから、 「配布」、「ファイルへ」の順に選択します。ファイルを保存するディレクトリを選択し、ファイルに名前を付けます。

注意:
ローカル・ファイルへの配布オプションを使用すると、指定したディレクトリにファイルが作成されます。このファイルのファイル権限はOracle所有者に設定されます。ファイルを読み取るには、ファイルに対する権限を変更する必要があります。

プロジェクト・ナビゲータを使用したオブジェクトの配布

プロジェクト・ナビゲータを使用してオブジェクトを配布する場合、使用される配布アクションはOracle Warehouse Builderで設定されたデフォルト・アクションです。デフォルト配布アクションの詳細は、「配布アクションについて」を参照してください。

オブジェクトを配布する前に、オブジェクトが正常に生成されていることを確認します。ターゲット・スキーマにオブジェクトを作成するために必要なコードは生成すると作成されます。

プロジェクト・ナビゲータを使用したオブジェクトの配布手順

1. プロジェクト・ナビゲータで、プロジェクトを展開してから配布するオブジェクトが含まれるモジュールを展開します。

2. 配布するオブジェクトのすべての依存オブジェクトが正常に配布されていることを確認します。
たとえば、リレーショナル・ディメンジョンを配布する前に、ディメンジョンの実装詳細を格納する表と、サロゲート識別子の生成に使用する順序がすべて配布されていることを確認します。プロセス・フローを配布する場合は、プロセス・フローで使用するすべのマッピングまたは変換が正常に配布されていることを確認します。

3. リレーショナルまたはROLAPディメンジョン・オブジェクトを配布する場合は、これらのオブジェクトの実装詳細が指定されていることを確認します。これはバインドすることによって指定できます。
詳細は、「ディメンジョン・オブジェクトのリレーショナル実装」および「ディメンジョン・オブジェクトのROLAP実装」を参照してください。

4. コード・テンプレートのマッピングまたはWebサービスを配布する場合は、 「コントロール・センター・エージェント(CCA)の起動」の説明に従って、コントロール・センター・エージェントを起動します。

5. 配布するオブジェクトを選択し、ツールバーの「配布」をクリックします。
または

配布するオブジェクトを選択してから、メニューから「配布」をクリックします。

複数のオブジェクトを選択するには、オブジェクトの選択時に[Ctrl]キーを押したままにします。

配布が完了すると、「ログ」ウィンドウに新しいタブが開き、各配布の詳細が表示されます。

リモート・システムへのターゲット・システムの配布

設計オブジェクトを定義するスキーマと異なるターゲット・システムに設計オブジェクトを配布する場合は、次の追加手順を実行する必要があります。

1. ターゲット・システムにOracle Warehouse Builderをインストールします。

2. リポジトリ・アシスタントを使用して、ターゲット・スキーマ用のワークスペースとリポジトリ・ユーザーを作成します。

3. グローバル・ナビゲータで、新しい構成とその構成を使用する新しいコントロール・センターを作成します。コントロール・センターはターゲット・システムに作成したワークスペースに対応している必要があります。

4. 新しく作成した構成をデフォルト構成として設定します。

5. リモート・ターゲット・スキーマに対応するロケーションを作成します。

6. 設計とETLオブジェクトを配布します。

配布結果の確認

オブジェクトを配布すると、配布結果を確認して配布ステータスをチェックできます。オブジェクトが正常に配布されなかった場合は、配布に生成されたエラー・メッセージを表示できます。

コントロール・センター・マネージャを使用して配布されたオブジェクトの配布結果の表示

コントロール・センター・マネージャを使用してオブジェクトを配布すると、「コントロール・センター・ジョブ」パネルの「ステータス」列を使用してジョブの進行状況を監視できます。ジョブが完了すると、オブジェクトの新しい配布ステータスが「詳細」タブに表示されます。結果を確認し、スクリプトを表示できます。

配布されたスクリプトを表示する手順は、次のとおりです。

1. コントロール・センター・マネージャの「コントロール・センター・ジョブ」パネルで、配布済スクリプトを表示する配布に関連するジョブをダブルクリックします。
選択したジョブの「ジョブ詳細」ウィンドウが表示されます。このウィンドウには、配布中に発生したエラーの詳細が表示されます。

2. 「ジョブ詳細」ウィンドウで、ナビゲーション・ツリーのオブジェクトを選択します。

3. 「スクリプト」タブで、スクリプトを選択して「コードの表示」をクリックするか、スクリプト名をダブルクリックします。

プロジェクト・ナビゲータを使用して配布されたオブジェクトの配布結果の表示

プロジェクト・ナビゲータを使用してオブジェクトを配布すると、各配布の「ログ」ウィンドウに新しいタブが表示されます。このタブには、オブジェクト名と配布ステータスを含めたノード・ツリーが含まれています。ノードを展開して、次のノードを表示します。

- 検証: 展開するとオブジェクトの検証メッセージが表示されます。

- スクリプト: 展開するとオブジェクトに生成されたスクリプトが表示されます。

- 配布: 展開すると配布ステータスが表示されます。配布中に発生したエラーの詳細がここにリストされます。PL/SQLマッピングを配布する場合は、 パッケージの本体またはパッケージ仕様にエラーが発生したかどうかの情報も含まれます。

配布されたスクリプトを表示する手順は、次のとおりです。

1. 「ログ」ウィンドウで、表示する配布済スクリプトの配布関連のタブを選択します。

2. オブジェクト名が表示されているノード、スクリプト・ノードの順に展開します。
配布に使用されたスクリプトがスクリプト・ノードの下にリストされます。

3. 表示するスクリプトをダブルクリックします。
「ドキュメント」ウィンドウに、生成されたコードを含む新しいタブが開きます。このタブには、ソース、仕様、本体の各サブタブが含まれています。仕様サブタブにはパッケージ仕様が、本体サブタブにはパッケージ本体が含まれています。

オブジェクトの配布に失敗すると、仕様および本体の各サブタブを使用してエラーが発生したコードを表示できます。

ETLジョブの開始

ETLとは、ソース・ロケーションからデータを抽出し、マッピングで定義されたように変換し、ターゲット・オブジェクトにロードするプロセスです。マッピング、プロセス・フローまたはデータ監査の実行を開始するときは、データをジョブとしてOracle Warehouse Builderジョブ・キューに送信します。ジョブはただちに開始、またはスケジュールを作成し使用している場合はスケジュールした時間に開始できます。スケジュールの詳細は、「スケジュールの定義」を参照してください。

配布と同様に、プロジェクト・ナビゲータまたはコントロール・センター・マネージャからマッピング、プロセス・フローまたはデータ監査を実行できます。また、SQLスクリプトを実行するOracle Warehouse Builder外部のツールを使用して、これらのジョブを開始することもできます。

マッピング、プロセス・フロー、またはデータ監査の起動手順は、次のとおりです。

1. オブジェクトの配布(必要な場合)
オブジェクトの配布の詳細は、「オブジェクトの配布」を参照してください。

2. プロジェクト・ナビゲータまたはコントロール・センター・マネージャを使用したオブジェクトの実行は、次の項で説明します。

プロジェクト・ナビゲータからETLを開始する手順は、次のとおりです。

マッピングまたはプロセス・フローを選択して、「ファイル」メニューから「開始」を選択します。

実行(開始)するETLオブジェクトごとに、実行ログを含む新しいタブが「ログ」ウィンドウに表示されます。タブ・タイトルは、オブジェクト名のあとにジョブIDが付きます。このタブを使用して、実行ステータスを監視および実行結果を表示します。

コード・テンプレート・マッピングやWebサービスなど、コントロール・センター・エージェントを使用するオブジェクトを実行すると、ジョブのログ・ファイルがOWB_HOME/owb/jrt/log/jrt/jobjob_id/log.xmlディレクトリ・パスに格納されます。このディレクトリ・パスで、job_idは実行されたジョブのIDです。このログ・ファイルを使用して、配布中およびコード・テンプレートのマッピングまたはWebサービス実行中に発生するエラーを解決します。

コントロール・センター・マネージャからETLを開始する手順は、次のとおりです。

マッピングまたはプロセス・フローを選択して、ツールバーの「開始」をクリックします。

または、マッピングまたはプロセス・フローを選択して、「ファイル」メニューから「開始」を選択することもできます。

Webサービス実行の詳細は、「Webサービスの実行」を参照してください。

関連項目:
SQL*Plusを使用してETLジョブを開始する方法の詳細は、「SQL*PlusにおけるETLジョブの開始」を参照してください。

ETLジョブの実行結果の表示

ETLオブジェクトを実行すると、Oracle Warehouse Builderの「ログ」ウィンドウのタブに実行結果が表示されます。別のタブを使用すると、各ETLジョブの実行結果が表示されます。

実行結果には、ETLジョブに関する詳細情報が含まれています。情報は、実行結果タブの次の列を使用して表示されます。

- 選択済行: ETLジョブ中にソース・オブジェクトから選択された行数を表します。

- 挿入済行: ETLジョブ中にターゲット・オブジェクトに挿入された行数を表します。

- 更新済行: ETLジョブの一環として更新されたターゲット・オブジェクト内の行数を表します。

- 削除済行: ETLジョブ中にターゲット・オブジェクトから削除された行数を表します。

- エラー: ETLジョブ実行中に発生したエラー数を表します。

- 警告: ETLジョブ実行中に発生した警告数を表します。

- 開始時間: ETLジョブが開始された時間を表します。

- 経過時間: ETLジョブ完了までの時間を表します。

実行結果タブのアイコン

実行結果タブの上のアイコンを使用すると、タブ上に表示する情報を選択できます。表12-1は、アイコンとその用途を示したものです。

表12-1 実行結果タブのアイコン

アイコン

名前

説明

警告を表示

ETLジョブ実行中に発生する警告を実行結果タブにリストします。切替え可能です。

エラーを表示

ETLジョブ実行中に発生するエラーを実行結果タブにリストします。切替え可能です。

パラメータを表示

ETLジョブ実行中に使用されるパラメータ値をリストします。パラメータはパラメータ・ノードの下にリストされます。

ジョブの停止

現在実行中のETLジョブの実行を停止します。このアイコンは、実行が完了または開始していない場合は無効化されます。

ソースに移動

現在実行中のETLオブジェクトのエディタが表示されます。

詳細の表示

実行詳細ダイアログボックスが表示されます。

ETLジョブのリターン・ステータス

完了した各ETLジョブのリターン・ステータスは、次の値のいずれかになります。

- SUCCESS - マッピングはエラーなしで正常に完了します。

- WARNING - マッピングはエラー付きで完了しますが、「エラーの最大数」パラメータを超えていません。

- ERROR - マッピングは完了しないか、またはマッピングに「エラーの最大数」パラメータを超えるエラーがあります。

データの表示

ETLを完了した後は、Oracle Warehouse Builder内のデータ・オブジェクトを確認し、結果が期待どおりであることを簡単に検証できます。

データ・オブジェクトに格納されているデータの表示手順:

プロジェクト・ナビゲータで、オブジェクトを右クリックし、「データ」を選択します。「データ・ビューア」が開き、オブジェクトの内容が表示されます。

ETLジョブのスケジュール

ETLのスケジュールには、次のいずれかの方法を使用できます。

- スケジューラを使用します。
「スケジュールの定義」を参照してください。

- PL/SQLパッケージDBMS_SCHEDULER PL/SQLを使用して、Oracle Databaseスケジューラを使用します。
DBMS_SCHEDULERパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

- サード・パーティのスケジュール・ツールの使用

SQL*PlusにおけるETLジョブの開始

コントロール・センター・マネージャを使用してオブジェクトを実行する以外に、SQL*Plusを使用できます。Oracle Warehouse Builderに同梱されたsqlplus_exec_templateという名前のスクリプトを使用します。または、sqlplus_exec_background_templateを使用してバックグラウンドでジョブを実行します。

SQLPLUS_EXEC_TEMPLATEスクリプトをSQL*Plusで実行するには、次の手順に従います。

1. デザイン・センターの「ツール」メニューから、SQL*Plusを選択します。
「SQL*Plus」パネルが表示されます。

2. リポジトリ所有者ではなくOracle Warehouse Builderユーザーとして接続します。

3. 次のような構文を使用して、スクリプトを起動します。

@%OWB_HOME%\owb\rtp\sql\sqlplus_exec_template MY_RUNTIME MY_WAREHOUSE PLSQL
MY_MAPPING "," ","

関連項目:
構文の詳細な説明は、「SQLPLUS_EXEC_TEMPLATE SQLスクリプト」を参照してください。

SQLスクリプトによるジョブの管理

Oracle Warehouse Builderには、SQLスクリプトを使用して配布ジョブ、実行ジョブ、コントロール・センターを管理できるように多くのSQLスクリプトがインストールされています。これらのスクリプトは、OWB_HOME/owb/rtp/sqlディレクトリにあります。これらのスクリプトにあるコメントは、その使用方法の説明です。

関連項目:
これらのスクリプトの使用の詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

例: ターゲット・スキーマの更新

シナリオ

数か月間本番状態にあるデータ・ウェアハウスの管理を担当しているとします。データ・ウェアハウスは、人事管理(HR)およびオーダー・エントリ(OE)という2つのソース・スキーマを使用して作成され、ウェアハウス(WH)ターゲット・スキーマにロードされました。最近、HRおよびOEスキーマの表に2つの変更がされたことがわかりました。WHスキーマを更新して、これらの変更を反映する必要があります。

- 変更#1: 最初の変更はHRスキーマの変更でした。REGIONS表のREGION_NAME列の長さが25文字から100文字に変更されました。
図12-1は、REGIONS表の変更を示したものです。

図12-1 変更されたREGIONS表

「図12-1 変更されたREGIONS表」の説明

- 変更#2: 2つ目の変更はOEスキーマの変更でした。LOT_SIZE_NUMBERという行が、データ型NUMBER、精度8、スケール0でORDER_ITEMS表に追加されました。
図12-2は、変更されたORDER_ITEMS表を示しています。

図12-2 変更されたORDER_ITEMS表

「図12-2 変更されたORDER_ITEMS表」の説明

解決策

WHスキーマを更新するには、まずこれらの変更の影響を測定してから、ターゲット・スキーマの更新プランを作成して実行する必要があります。次の手順は、実行する必要がある概要を示したものです。

手順1: 変更されたソース・オブジェクトの識別

手順2: 変更による影響の測定

手順3: 変更されたオブジェクトの再インポート

手順4: データ・フロー内のオブジェクトの更新

手順5: ターゲット・スキーマの再設計

手順6: 再配布スクリプト

手順7: 新規ETLロジックのテスト

手順8: Discoverer EULの更新

手順9: ETLロジックの実行

事例

手順1: 変更されたソース・オブジェクトの識別

データ・ウェアハウスに変更分を反映する最初の手順は、ソース・オブジェクト内の変更を識別することです。ソース・オブジェクトが変更されたことを通知できるプロシージャまたはシステムが配備されている必要があります。

このシナリオでは、HRおよびOEスキーマを管理するグループが、オブジェクトの一部が変更されたことを通知してきました。最初の変更はHRスキーマの変更でした。より長い名前に対応できるように、REGION_NAME列が25文字から100文字に拡張されました。2番目の変更はOEスキーマの変更でした。LOT_SIZE_NUMBER列が追加され、WHスキーマに統合する必要があります。

手順2: 変更による影響の測定

変更を識別した後、ターゲット・スキーマに対する影響を測定する必要があります。

HRスキーマへの変更1については、依存オブジェクトをすべて更新する必要があります。そのためには、REGIONS表を再インポートしてから、REGION_NAME列を使用するオブジェクトを更新する必要があります。依存オブジェクトを識別するには、影響分析ダイアグラムを使用できます。この表を使用するマッピングも更新する必要があります。

OEスキーマの変更2については、 表の再インポートおよびマッピングの更新に加えて、新しい列をWHスキーマに統合する方法を見つける必要があります。売上の1つの単位内の部品または項目の数の動向を追跡するために列が追加されたため、WHスキーマのWH sキューブにNUMBER_OF_IND_UNITSというメジャーを追加し、このメジャーを各オーダーに割り当てます。続いて、この新しい列を SALESキューブに接続する必要があります。

手順3: 変更されたオブジェクトの再インポート

2つのソース・オブジェクトが変更されているので、ワークスペースにメタデータ定義を再インポートする必要があります。ナビゲーション・ツリーからHRスキーマ内のREGIONS表およびOEスキーマ内のORDER_ITEMS表の両方を選択し、メタデータのインポート・ウィザードを使用して定義を再インポートします。

Oracle Warehouse Builderにより、これが更新であることが自動的に検知され、変更された定義の更新のみが実行されます。インポート・プロセスの後に表示される「インポート結果」ダイアログ・ボックスに、同期化の詳細が表示されます。「OK」をクリックし、インポートを続行してワークスペースへ変更をコミットします。インポートを中断する場合は、「元に戻す」をクリックします。

手順4: データ・フロー内のオブジェクトの更新

HRスキーマ内の変更1のように、ソース・オブジェクト内の変更により既存のオブジェクトおよび属性のみが変更された場合は、影響分析ダイアグラムを使用して調整する必要のあるオブジェクトを識別します。

このシナリオでは、データのロードが適切に続行されることを確実にするために、REGIONS表に応じて異なるすべてのオブジェクト内の列の長さを調整する必要があります。

データ・フロー内のオブジェクトの更新手順:

1. ナビゲーション・ツリーからHRスキーマ内のREGIONS表を選択します。「表示」を選択してから、「影響」をクリックします。
ドキュメント・エディタに影響分析ダイアログを含む新しいタブが表示されます。これにより、REGIONS表の影響を受けるオブジェクトはWHスキーマ内のCUSTOMERディメンジョンのみであることがわかります。

この手順では、リポジトリ・ブラウザを設定しておくことが必要です。この設定方法の詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

2. ディメンジョン・エディタ内のCUSTOMERディメンションを開き、リージョン名レベル属性を文字長100に更新します。

3. ソースをターゲットに接続するMAP_CUSTOMERマッピングを開きます。REGIONS Table演算子およびCUSTOMER Dimension演算子の両方については、データ・オブジェクトからマッピング演算子へのインバンド同期化を実行します。
マッピング演算子は、マッピング・オブジェクトと同期される必要があり、マッピング・オブジェクトは更新されたオブジェクトに基づいてコードを生成するために示されます。

これで、変更1に関連付けられたメタデータの更新は完了です。

変更2では新しい列が追加されたため、変更1の場合のようにデータ・フローを更新する必要はありません。ORDER_ITEMS Table演算子を使用するすべてのマッピングに対して、必ずインバウンド同期化を実行します。ORDER_ITEMS表の影響分析ダイアグラムから、影響を受けるのはマッピングMAP_SALESのみであることがわかります。

手順5: ターゲット・スキーマの再設計

変更2では、新しいLOT_SIZE_NUMBER列がORDER_ITEMS表に追加されたため、WHターゲット・スキーマを再設計してこの新しいデータをキューブに取り込む必要があります。その場合は、NUMBER_OF_IND_UNITSという新しいメジャーをSALESキューブに追加して取り込みます。

ターゲット・スキーマの再設計手順:

1. NUMBERデータ型、精度8、スケール0のメジャーNUMBER_OF_IND_UNITSをSALESキューブに追加します。

2. SALESキューブの系統ダイアグラムを表示して、SALESキューブを含むマッピングを確定します。すべてのSALESキューブのマッピング演算子に対してインバウンド同期化を実行します。

3. マッピングMAP_SALESを開き、表ORDER_ITEMSがインバウンド同期化されていることを確認します。

4. ORDER_ITEMS表内のLOT_SIZE_NUMBER列をJoiner演算子に接続してからSet Operation演算子に接続し、次にAggregator演算子に追加します。Aggregator演算子内で加算を行っていることを確認します。

5. 最後に、Aggregator演算子のLOT_SIZE_NUMBER出力属性をSALESキューブのNUMBER_OF_IND_UNITS入力属性に接続します。

手順6: 再配布スクリプト

マッピングがデバッグされた後、デザイン・センターを使用してスクリプトを再生成および再配布します。コントロール・センター・マネージャを使用してデフォルトの配布アクションを検出します。Oracle Warehouse Builderにより、実行する配布のタイプが検出されます。

手順7: 新規ETLロジックのテスト

すべてのオブジェクトを調整し、WHターゲット・スキーマがすべての変更を反映して更新された後、マッピングから生成されたETLロジックをテストします。マッピング・デバッガを使用してこのタスクを完了します。エラーがある場合は、エラーを修正してスクリプトを再配布します。

手順8: Discoverer EULの更新

レポート作成ツールとしてOracle Discovererを使用している場合は、EULを更新します。

Oracle Discoverer EULの更新手順:

1. オブジェクトの構造またはデータが変更されたため、EULで更新する必要があるオブジェクトを識別します。この場合、変更されたオブジェクトはREGIONS表、SALES_ITEMS表およびSALESキューブです。

2. プロジェクト・ナビゲータで、手順1で識別されたすべてのオブジェクトを選択し、「導出」を右クリックして選択します。
導出を実行ウィザードが表示され、これらのオブジェクトを含むビジネス定義モジュール内のこれらのオブジェクト定義が更新されます。

3. これらの変更されたオブジェクトを含むビジネス定義モジュール内の「アイテム・フォルダ」ノードを開きます。

4. 手順1で識別されたオブジェクトを選択し、「配布」を右クリックして選択します。
オブジェクトへの変更がOracle Discover EUL内で更新されます。

手順9: ETLロジックの実行

マッピングの配布後、ETLロジックを実行し、データをターゲットにロードします。

13 デプロイメントと実行の監査

配布および実行情報の監査により、ターゲットのロード方法と、マッピングおよびプロセス・フローの設定とパラメータをより最適化するために可能な処理について、有益な情報が提供されます。また、配布情報に関する迅速なフィードバックが提供され、オブジェクトの配布履歴を取得できます。監査および配布情報は、Oracle Warehouse Builderのリポジトリ・ブラウザで参照できます。

この章の内容は次のとおりです。

- デプロイメントと実行の監査について

- リポジトリ・ブラウザを開く

- 設計レポート

- コントロール・センター・レポート

- 共通リポジトリ・ブラウザ・タスク

デプロイメントと実行の監査について

オブジェクトをデプロイメントし、実行する場合は、Oracle Warehouse Builderでデプロイメントおよび実行に関連する監査情報を生成し、格納します。監査情報を表示および監査するには、次のいずれかの方法を使用します。

- コントロール・センター・マネージャ
コントロール・センター・マネージャを使用してデプロイメントまたは実行を行うと、「コントロール・センター・ジョブ」パネルにデプロイメントまたは実行の結果が表示されます。デプロイメント・ジョブまたは実行ジョブを表す行をダブルクリックすると「ジョブ詳細」ウィンドウを表示します。実行の場合は、「ジョブ詳細」ウィンドウに選択、挿入、更新および削除された行が表示されます。

- リポジトリ・ブラウザまたは異機種間リポジトリ・ブラウザ
この章のこの項では、監査情報にアクセスするためにリポジトリ・ブラウザおよび異機種リポジトリ・ブラウザを使用する方法について説明します。

- Oracle Warehouse Builderリポジトリの監査メタデータを公開するパブリック・ビュー
パブリック・ビューの詳細は、『Oracle Warehouse Builder APIおよびスクリプト・リファレンス』を参照してください。

リポジトリ・ブラウザについて

リポジトリ・ブラウザは、Oracle Warehouse Builderリポジトリに格納されるデータからレポートを生成するブラウザ・ベースのツールです。リポジトリ・ブラウザを使用すると、次の情報を参照できます。

- ワークスペースの設計に関する詳細情報。レポートはワークスペースに格納されたデータから生成されます。

- 高水準かつ詳細なETLランタイム情報へのアクセスを可能にするレポート。この情報に含まれる内容は次のとおりです。

- マッピングおよびプロセス・フローごとのタイミング

- プロセス・フローごとのアクティビティの詳細

- エラー詳細

- 個別のターゲット環境を管理するデプロイメント情報

リポジトリ・ブラウザを使用しなくても、同じ情報にWarehouse Builderのパブリック・ビューからアクセスできます。SQL*Plusセッションを起動し、パブリック・ビューの問合せを実行します。パブリック・ビューのリストは、Oracle Warehouse Builder APIおよびスクリプト・リファレンスを参照してください。

Oracle Warehouse Builderを使用して、Microsoft SQL Server、IBM DB2 UDBなどのOracle以外のデータベースにデータをデプロイできます。ただし、これらの場合では、設計時オブジェクト・データおよびデプロイメント監査データを表示することはできません。実行監査データを含むレポートのみを表示できます。

異機種間環境のリポジトリ・ブラウザ用に生成するレポートの詳細は、「異機種間リポジトリ・ブラウザ・レポートのリスト」を参照してください。

異機種間リポジトリ・ブラウザ(HRAB)について

異機種間リポジトリ・ブラウザ(HRAB)は、DB2、SQL ServerなどのOC4Jサーバーまたは異機種間データベースにデプロイされたオブジェクトに関するレポートを生成するブラウザ・ベースのツールです。異機種間リポジトリ・ブラウザでは、Oracle Warehouse Builderがインストールされていないシステムの監査情報にアクセスできます。

異機種間リポジトリ・ブラウザを使用すると、次の情報を提供するレポートを表示できます。

- SQL Server、DB2などの異機種間データベースにデプロイされているETLオブジェクトに関する実行情報

- WebサービスなどのOC4Jサーバーにデプロイされているオブジェクトに関する実行情報

異機種間データベースまたはOC4Jサーバーの監査情報にアクセスするには、そのデータベースまたはOC4Jサーバーを表すデータ・ストアを作成する必要があります。管理者はデータ・ストアを作成し、リポジトリ・ブラウザまたはOC4Jサーバーに割り当てます。

リポジトリ・ブラウザおよび異機種間リポジトリ・ブラウザの相違点

- 異機種間リポジトリ・ブラウザ・レポートでは、オブジェクト実行に関する情報のみが提供され、設計およびデプロイメントに関する情報は提供されません。

- 異機種間リポジトリ・ブラウザは、リポジトリ・ブラウザ・レポートが提供する情報のサブセットのみを含みます。
たとえば、リポジトリ・ブラウザ・レポートには、マッピングのデバッグ時に生成されるトレース情報を含みます。異機種間リポジトリ・ブラウザ・レポートにはこの情報は含まれません。

異機種間データベースおよびOC4Jサーバーへの異機種間リポジトリ・ブラウザのインストール

異機種間データベースおよびOC4Jサーバーへのデプロイメントのための監査情報へのアクセスを使用可能にするには、ターゲット・データベースの監査表および監査ビューをインストールする必要があります。

監査表をインストールするスクリプトは、OWB_HOME/owb/rtasst/jrtauditディレクトリに格納されています。このディレクトリには、db2、sqlserverおよびoracleというサブディレクトリがあります。ターゲット・データベースに応じて、インストール・スクリプトを実行するサブディレクトリを選択します。

たとえば、DB2上に監査表および監査ビューをインストールするには、OWB_HOME/owb/rtasst/jrtaudit/db2ディレクトリに格納されているinstall.sqlファイルを実行します。

データ・ストアの作成

データ・ストアを使用すると、DB2、SQL Serverなどの異機種間データベースおよびOracle Warehouse Builderインストールの一部ではないOC4Jサーバーへのデプロイメントに関する監査情報にアクセスできます。

管理者がデータベース(SQL ServerまたはDB2)またはOC4Jサーバーの異機種間リポジトリ・ブラウザ内にデータ・ストアを作成します。データ・ストアの名前はAuditDSである必要があります。

admin_client.jarコマンドライン・ユーティリティを使用してデータ・ストアを作成できます。次は、データ・ストアtestDataStoreの作成例です。

java -jar admin_client.jar deployer:oc4j:localhost oc4jadmin
-addManagedDataSource -applicationName default -dataSourceName testDataSource
-jndiLocation jdbc/testDataSource -connectionPoolName scottConnectionPool

oc4jadminユーザーのパスワードを入力するように求められます。パスワードを入力して、[Enter]キーを押してください。

また、データ・ストアも暗黙的に作成されます。コード・テンプレート(CT)・マッピングがデータベース・ロケーションに格納されているオブジェクトを参照している場合で、CTマッピングがデプロイされているときは、最適なデータ・ソースが作成されます。

監査のタイプ

リポジトリ・ブラウザが表示する監査情報は次のように分類できます。

- PL/SQLランタイム監査
これは、PL/SQLスクリプトを使用してデプロイされたオブジェクトの従来のOracle Warehouse Builderランタイム監査の監査情報のことです。

データ・オブジェクト、マッピング、プロセス・フローではPL/SQLデプロイメントを使用します。

- 異機種間ランタイム監査
これは、OC4JサーバーまたはDB2、SQL Serverなどの異機種間データベースにデプロイされているオブジェクトに関する監査情報を参照します。複数のコントロール・センター・エージェント(CCA)の監査を含みます。

これには、コード・テンプレート、Webサービスおよびコード・テンプレート・マッピングに関する情報を含みます。

表13-1に、Oracle Warehouse Builderオブジェクトを他のターゲット・ロケーションにデプロイする場合に使用できる監査のタイプを示します。

表13-1 他のデプロイメント・ロケーションの監査のタイプ

デプロイメント・ロケーション

PL/SQLランタイム監査

異機種間ランタイム監査

Oracle Warehouse BuilderをインストールしたOracle Database

はい

はい

Oracle Warehouse BuilderをインストールしていないOracle Database

いいえ

はい

異機種間データベース

いいえ

はい

OC4Jサーバー

いいえ

はい

異機種間リポジトリ・ブラウザ・レポートのリスト

異機種間リポジトリ・ブラウザが生成するレポートの内容は、このリポジトリ・ブラウザによって生成される対応レポートに基づいています。レポートはOracle Database環境用に生成されたレポートのサブセットです。異機種間リポジトリ・ブラウザ・レポートで使用する用語は、異機種間データベースに関連しています。たとえば、プロセスという用語はタスクに置き換えられ、マップという用語はステップに置き換えられます。

ただし、異機種間リポジトリ・ブラウザ・レポートには、Oracle Database用のリポジトリ・ブラウザ・レポートほど詳細な情報は含まれていません。異機種間リポジトリ・ブラウザでは、次のリポジトリ・ブラウザ・レポートを使用できます。

- 実行スケジュール・レポート

- 実行サマリー・レポート

- マップ実行レポート

- マップ開始レポート

- マップ実行の実行レポート

- マップ実行のトレース・レポート

- マップ実行のファイル・レポート

- 実行エラー診断レポート

- 管理レポート

異機種間リポジトリ・ブラウザ・レポートを使用すると次の機能を使用できます。

- ジョブの実行監査データを削除

- ジョブのエラーおよびトレース・データを削除

監査レポートの表示

監査レポートでは、デプロイメントおよびETLジョブに関する情報が提供されます。オブジェクトをデプロイしたりジョブを開始したりするたびに、それらのアクティビティの詳細がワークスペースに格納されます。この情報は、次の環境からアクセスできます。

- コントロール・センター・マネージャ

- リポジトリ・ブラウザ

リポジトリ・ブラウザでは、情報が事前定義済のレポート形式で表示されます。レポートは、デフォルトのWebブラウザで表示されます。リポジトリ・ブラウザ・リスナーを実行している必要があります。

リポジトリ・ブラウザを開く

異機種間データベースまたはOC4Jサーバーにデプロイされたオブジェクトの監査データにアクセスするには、異機種間データベースまたはOC4Jサーバーに必要な監査表がインストールされていることを確認する必要があります。

監査表の作成の詳細は、「異機種間データベースおよびOC4Jサーバーへの異機種間リポジトリ・ブラウザのインストール」を参照してください。

リポジトリ・ブラウザを開く操作は、次に示すマルチステップ・プロセスです。

1. リポジトリ・ブラウザを開く前に、「リポジトリ・ブラウザ・リスナーの管理」の説明に従って、リポジトリ・ブラウザ・リスナーを起動する必要があります。

2. リポジトリ・ブラウザ・リスナーが実行中である場合、「リポジトリ・ブラウザへのアクセス」の説明に従って、リポジトリ・ブラウザを複数の方法で起動できます。

3. リポジトリ・ブラウザが開き、ログイン・ページが表示されます。このページでは、「ワークスペースへのログイン」の説明に従ってワークスペースにログインします。

注意:
リポジトリ・ブラウザを開くには、ACCESS_PUBLICVIEW_BROWSERシステム権限が必要です。この権限は、参照するワークスペースの所有者であれば自動的に付与されます。そのワークスペースの所有者でない場合は、この権限を取得するにはデータベース管理者に問い合せてください。

リポジトリ・ブラウザ・リスナーの管理

リポジトリ・ブラウザを開く前に、リポジトリ・ブラウザ・リスナーを起動する必要があります。

Windowsでのリポジトリ・ブラウザ・リスナーの起動

コマンド・プロンプト・ウィンドウを開き、startOwbbInst.batを実行します。このファイルは、OWB_HOME\owb\bin\win32ディレクトリにあります。OC4J管理者のパスワードを設定するように求められます。パスワードを入力して、[Enter]キーを押してください。パスワードの確認を求められたら、同じパスワードを再度入力します。

Windowsでのリポジトリ・ブラウザ・リスナーの停止

コマンド・プロンプト・ウィンドウを開き、OWB_HOME\owb\bin\win32ディレクトリに格納されているstopOwbbInst.batを実行します。リポジトリ・ブラウザ・リスナーの起動時に設定したOC4J管理者のパスワードを指定するように求められます。パスワードを入力して、[Enter]キーを押してください。

UNIXでのリポジトリ・ブラウザ・リスナーの起動

OWB_HOME/owb/bin/unixディレクトリにある./startOwbbInst.shを実行します。OC4J管理者のパスワードを設定するように求められます。パスワードを入力して、[Enter]キーを押してください。パスワードの確認を求められたら、同じパスワードを再度入力します。

UNIXでのリポジトリ・ブラウザ・リスナーの停止

OWB_HOME/owb/bin/unixディレクトリにある./stopOWBBInst.shを実行します。リポジトリ・ブラウザ・リスナーの起動時に設定したOC4J管理者のパスワードを指定するように求められます。パスワードを入力して、[Enter]キーを押してください。

リポジトリ・ブラウザへのアクセス

リスナーが実行中である場合、次のいずれかの方法でリポジトリ・ブラウザを起動できます。

- 「スタート」メニューから「プログラム」、Warehouse Builderフォルダ、「Warehouse Builder」、「リポジトリ・ブラウザ」を選択します。

- デザイン・センターの「ツール」メニューから「リポジトリ・ブラウザ」を選択します。

- 任意のWebブラウザから、リポジトリ接続ページのロケーションを入力します。たとえば、リポジトリ・ブラウザ・リスナーがowb_serverというコンピュータ上で実行されている場合、次のアドレスを入力すると、リポジトリ・ブラウザが起動します。
https://owb_server:8999/owbb/RABLogin.uix?mode=design

または

https://owb_server:8999/owbb/RABLogin.uix?mode=runtime

どの方法を取った場合でも、リポジトリ・ブラウザを起動すると、ブラウザでリポジトリ接続ページが開き、ここからリポジトリ・ブラウザにログインします。

ワークスペースへのログイン

ワークスペースにログインするには、アクセスするワークスペースの接続情報を指定します。接続情報が不明な場合は、データベース管理者に問いわ合せてください。

ワークスペース所有者またはワークスペース・ユーザーとしてコントロール・センターに接続できます。ワークスペース所有者として接続した場合、監査詳細を削除したり、検証を検証したり、ロケーションの登録を解除したり、サービス・ノード設定を変更したり、ユーザー・データ値を表示したり、実行ジョブを開始または停止したりできます。管理権限を使用してワークスペース・ユーザーとして接続した場合、監査詳細を削除したり、ロケーションの登録を解除したり、サービス・ノード設定を変更したり、実行ジョブに関連するユーザー・データ値を表示したり、実行ジョブを開始または停止したりすることができます。

一度リポジトリ・ブラウザにログインすると、次のレポートをすべて表示できます。

- デプロイメント

- 実行

- 管理

注意:
異機種間データベースまたはOC4Jサーバーにログインする場合は、実行レポートのみを表示できます。

監査情報のロケーションに応じて、次の項を参照してください。

- Oracleデータベースへの接続

- 異機種間データベースまたはOC4Jサーバーへの接続

複数のワークスペースへのアクセス権を持っている場合、リポジトリ・ブラウザでは該当するワークスペースを含むリストが表示されます。接続するワークスペースを選択します。

「デザイン・センター」を選択し、オブジェクト設計に関するレポートへのアクセスを可能にするリポジトリ・ナビゲータを表示します。「コントロール・センター」を選択し、リポジトリ・ブラウザで使用できるレポートのすべてのタイプをリストするコントロール・センター・レポート・ページを表示します。

Oracleデータベースへの接続

ユーザー名: ワークスペースへの接続に使用するワークスペース所有者またはワークスペース・ユーザーの名前を指定します。

パスワード: 「ユーザー名」フィールドで指定したユーザーのパスワードを指定します。

ホスト・アドレス、ポート番号およびサービス名の選択: ワークスペースを含むOracle Databaseのホスト名、ポート番号およびサービス名を指定してワークスペースに接続する場合は、このオプションを選択してください。

ネット・サービス名の選択: Oracle Warehouse Builderリポジトリを含むOracle Databaseに関連付けられているネット・サービス名を指定してワークスペースに接続する場合は、このオプションを選択してください。

異機種間データベースまたはOC4Jサーバーへの接続

Oracle Warehouse Builderを使用すると、異機種間データベース(SQL ServerおよびDB2など)や外部のOC4Jサーバーへのデプロイメントに関する監査情報にアクセスできます。異機種間データベースまたはOC4Jサーバーへの接続には、データ・ストアを使用します。データベース管理者に、データ・ストアに使用するユーザー資格証明を問い合せ、これを「ユーザー名」および「パスワード」フィールドに入力します。

設計レポート

リポジトリ・ブラウザでは、Oracle Warehouse Builderの設計に関するレポートを提供します。これらのレポートには、オブジェクト・サマリー・レポート、系統レポートおよび影響分析を含みます。

次は、リポジトリ・ブラウザが提供する設計レポートのリストです。

- オブジェクトのプロパティ

- オブジェクト・レポート

- オブジェクト系統

- オブジェクトの影響

リポジトリ・ナビゲータ

リポジトリ・ナビゲータ・ページを使用して、ワークスペースのメタデータの検索、およびメタデータの主なプロパティ、系統、影響分析、およびワークスペースの関連レポートおよびコントロール・センター・レポートのリストへのアクセスが可能になります。リポジトリ・ナビゲータには、「検索」、「すべて」および「関連リンク」のセクションがあります。

検索

オブジェクト・タイプまたは名前(あるいはその両方)により検索します。

- オブジェクト・タイプによって検索するには、「タイプ別検索」リストから検索するオブジェクトのタイプを選択します。検索結果はこのタイプのすべてのオブジェクトのリストとなります。

- 名前で検索するには、「検索」フィールドにオブジェクト名を入力します。名前の最初の文字(1文字または複数の文字)のみを検索することが可能で、その場合の検索結果は、名前がこれらの文字で始まるオブジェクトのリストとなります。

「実行」をクリックして検索を開始します。

リポジトリ・ブラウザでは、ワークスペース・オブジェクトの検索ページという新規ページに検索結果が表示されます。このページから新規オブジェクトを検索することもできます。

すべて

ワークスペースのナビゲータ・ツリーが含まれています。

表13-2に、列の用途を示します。

表13-2 すべてのセクションのテーブルの列の説明

列ヘッダー

説明:

フォーカス

この列内のアイコンをクリックすると、ツリーのフォーカスが変更されます。

名前

ツリー内のアイテムの名前。

ツリー内のアイテムの隣にあるプラス記号(+)またはマイナス記号(-)をクリックすると、ツリーが拡張または縮小されます。

オブジェクトの「名前」をクリックすると、そのオブジェクトのオブジェクトのプロパティ・ページが開きます。

レポート

この列内のアイコンをクリックすると、関連アイテムのオブジェクト・レポート・ページが開きます。

オブジェクト・レポートにリストされるレポートは、レポートを表示するオブジェクトによって異なります。たとえば、ワークスペースのレポート・リンクをクリックするとワークスペース、コネクタ、コントロール・センターおよびロケーションに関するサマリー・レポートが示されます。プロジェクトの「レポート」リンクをクリックすると、詳細プロジェクト・レポートおよびサマリー・レポートが表示されます。

系統

この列内のアイコンをクリックすると、関連アイテムのオブジェクト系統ページが開きます。

影響

この列内のアイコンをクリックすると、関連アイテムのオブジェクトの影響ページが開きます。

関連リンク

「コントロール・センター - レポート」をクリックするとコントロール・センター・レポート・ページが開き、ここから、デプロイメント、実行または管理レポートを選択できます。

リフレッシュ

「リフレッシュ」をクリックすると、ワークスペースのビューがリフレッシュされます。

データをリフレッシュするとツリーが閉じます。リフレッシュの前に特定の領域にナビゲートまたはフォーカスを置いた場合は、ツリー内の目的のノードにナビゲートまたはフォーカスを置く必要があります。

オブジェクトのプロパティ

オブジェクトのプロパティ・ページには、リポジトリ・ナビゲータで選択したオブジェクトのプロパティが表示されます。プロパティには、オブジェクト名、ビジネス名、検証ステータス、作成タイムスタンプおよびオブジェクトを作成し、更新したユーザーの名前が含まれます。

このページから、ページの左側にある対応するリンクをクリックして、オブジェクト・レポート、オブジェクト系統またはオブジェクトの影響の各ページに移動できます。

関連項目:

- 「サマリー・レポート」

- 「詳細レポート」

オブジェクト・レポート

オブジェクト・レポート・ページでは、リポジトリ・ナビゲータで選択したオブジェクトに関する事前定義済デザイン・センター・レポートにアクセスできます。メタデータを調べるには、これらのレポートを使用します。

レポート名をクリックするとレポートが表示されます。

次のタイプのレポートを使用できます。

- 「サマリー・レポート」

- 「詳細レポート」

- インプリメンテーション・レポート

- 影響分析レポート

サマリー・レポート

サマリー・レポートに表示される情報のタイプは、選択したオブジェクトによって決まります。たとえば、表サマリー・レポートには、モジュール内のすべての表がリストされます。マテリアライズド・ビュー・サマリー・レポートには、モジュール内のすべてのマテリアライズド・ビューがリストされます。モジュールを識別するヘッダー情報も表示されます。アイテム名を選択すると、そのアイテムの詳細レポートが表示されます。

サマリー・レポートは、次のオブジェクトについて使用できます。

アドバンスト・キュー
コレクション
コネクタ
コントロール・センター
キューブ
データ・プロファイル
ディメンション
外部表
フラット・ファイル
ファンクション
ロケーション
マッピング
マテリアライズド・ビュー
ネストした表
オブジェクト・タイプ
パッケージ
プラッガブル・マッピング
プロシージャ
プロセス・フロー
順序
テーブル・ファンクション
テーブル
可変長配列
ビュー

詳細レポート

詳細レポートに表示される情報のタイプは、選択したオブジェクトによって決まります。詳細レポートには、アイテムに関する総合的な情報が示されます。たとえば、詳細表レポートには表の列、キー、外部キーおよび物理構成パラメータに関する情報がリストされます。

詳細レポートは、次のオブジェクトについて使用できます。

アドバンスト・キュー
代替ソート順序
アプリケーション・サーバー
ビジネス・エリア
コレクション
構成テンプレート
キューブ
顧客アプリケーション
DB2
DRDA
データ・プロファイル
データ・ルール
ディメンション・ドリル・パス
ディメンション
ドリル・パス
ディテール・ドリル
エキスパート・モジュール
エキスパート
エキスパート・タスク
外部表
ファイル・モジュール
ファイル
ファンクション
ゲートウェイ
Informix
インストレーション
アイテム・フォルダ
コントロール・コード・テンプレート
ファンクション・コード・テンプレート
コード・テンプレート・フォルダ
統合コード・テンプレート
ジャーナル・コード・テンプレート
ロード・コード・テンプレート
Oracle Targetコード・テンプレート
コード・テンプレート・タスク
値リスト
MIV
マッピング・モジュール
マッピング
マテリアライズド・ビュー
モジュール
ネストした表
ODBC
オブジェクト・タイプ
Oracle Business Intelligenceモジュール
Oracle Discovererモジュール
パッケージ
Peoplesoftアプリケーション
プラッガブル・マッピング
プロシージャ
プロセス・フロー・モジュール
プロセス・フロー
プロジェクト
RDBモジュール
レコード
登録済ファンクション
SQL Server
順序
Siebelアプリケーション
ソース・モジュール
Sybaseモジュール
テーブル・ファンクション
テーブル
ターゲット・モジュール
Teradataモジュール
可変長配列
ビュー
Webサービス・パッケージ

インプリメンテーション・レポート

インプリメンテーション・レポートは、ディメンションおよびキューブについて実行できます。このレポートは、物理オブジェクトが論理オブジェクトの実装にどのように使用されているかについて情報を提供します。

影響分析レポート

影響分析レポートには、レポートのサブジェクトに属するすべてのアイテムがリストされます。マッピング名およびマップ先のアイテム名も表示されます。このレポートでは、選択したアイテムに関連するすべてのアイテムのワンステップ影響分析が示されます。

たとえば、マッピングでソースとして使用している表のすべての列のリストが必要である場合、このレポートを使用します。

影響分析レポートの詳細は、「オブジェクトの影響」を参照してください。

系統レポート

系統レポートには、マッピングでターゲットとして使用されているアイテムがリストされます。系統レポートの詳細は、「オブジェクト系統」を参照してください。

オブジェクト系統

オブジェクト系統ページでは、リポジトリ・ナビゲータで選択したオブジェクトの系統ダイアグラムが表示されます。系統ダイアグラムでは、図のサブジェクトを形成するために使用するすべてのオブジェクトおよび変換が図で表示されます。

オブジェクト・レベルまたはアイテム・レベルのいずれかで系統を実行できます。オブジェクト・レベルでは、図に表、ビュー、マテリアライズド・ビュー、ディメンション、キューブ、レコードおよび演算子を含むことができます。アイテム・レベルでは、図に列、メジャー、フィールド、演算子パラメータ、レベル属性を含むことができます。系統ダイアグラムは、画面の右側にサブジェクトを表示して表示されます。

オブジェクト系統ページから、ページの左側にある対応するリンクをクリックして、オブジェクトのプロパティ、オブジェクト・レポートまたはオブジェクトの影響の各ページに移動できます。

オブジェクトの影響

オブジェクトの影響ページでは、リポジトリ・ナビゲータで選択したオブジェクトの影響分析ダイアグラムが表示されます。影響分析ダイアグラムは、選択したオブジェクトの定義が依存するオブジェクトを図で表したものです。選択したオブジェクトの定義における変更の潜在的な影響を表します。サブジェクトは画面の左側に表示されます。

このページから、ページの左側にある対応するリンクをクリックして、オブジェクト・レポート、オブジェクトのプロパティまたはオブジェクト系統の各ページに移動できます。

系統ダイアグラムおよび影響分析ダイアグラムは、依存性索引に基づいて作成されます。ダイアグラムに表示されているデータを最新の状態にするには、索引をリフレッシュする必要があります。

オブジェクトの「影響分析」をクリックすると、impact_objectID.jpegファイルが生成され、ブラウザ・ページに表示されます。objectIDは選択したオブジェクトのオブジェクトIDを表します。同様に、オブジェクトの「系統」をクリックすると、lineage_objectID.jpegファイルが生成されます。系統と影響分析のどちらでも、.jpegファイルに加えて同名の.svgファイルが生成されます。これらのファイルを使用する場合、ファイルは次の場所にあります。UNIXの場合、これらのファイルはOWB_HOME/owb/j2ee/applications/owbb/generated_images/フォルダに格納されています。

Windowsでは、これらのファイルはOWB_HOME\owb\j2ee\applications\owbb\generated_images\フォルダに格納されています。

コントロール・センター・レポート

リポジトリ・ブラウザの「コントロール・センター」セクションには、デプロイメント・レポート、実行レポートおよび管理レポートというタイプのレポートが用意されています。

注意:
レポート・ページの「デザイン・リポジトリ: ナビゲータ」リンクをクリックして、任意のコントロール・センター・レポートから設計オブジェクト・レポートにアクセスできます。

デプロイメント・レポート

トップレベル・デプロイメント・レポートは次のとおりです。

- デプロイメント・スケジュール・レポート。基本属性が示され、すべてのデプロイメントのノード・ツリー形式の詳細が時間順に表示されます。

- オブジェクト・サマリー・レポート。基本属性が示され、デプロイされたオブジェクト(プロセス、マップおよびデータ・オブジェクト)が最新のデプロイメントの詳細とともにタイプまたは名前順でリストされます。

- ロケーション・レポート。オブジェクトがデプロイされたすべてのロケーションが示されます。

これらのトップレベル・デプロイメント・レポートから、特定のプロセス・フロー、マッピングまたはデータ・オブジェクトのデプロイメントに関する詳細を提供する、デプロイメント・エラーの詳細レポートおよびデプロイメント・レポートにアクセスできます。

実行レポート

トップレベル実行レポートは次のとおりです。

- 実行スケジュール・レポート。基本属性が示され、すべてのプロセス実行(およびトップレベルのマップ実行)のノード・ツリー形式の詳細が時間順に表示されます。

- 実行サマリー・レポート。基本属性が示され、実行されたプロセス(およびトップレベル・マップ)がタイプまたは名前順でリストされます。

これらのトップレベル実行レポートから、次の操作が可能な他のレポートにアクセスできます。

- 指定のプロセス実行またはマップ実行の実行ジョブ詳細を示す実行レポート(場合によっては実行詳細レポートと呼ばれる)、マップ実行時に検出された指定ターゲットの論理エラーの詳細を示す実行ジョブ・レポートおよびランタイム・エラーの基本詳細およびターゲット詳細を示し、可能な場合はソースおよびターゲット列詳細をリストするジョブ・エラー診断レポートを使用したジョブの監視。

- マップ実行時に検出された指定ターゲットの論理エラーの詳細を示すエラー表実行レポート、ソース値とターゲット値の詳細およびマップ実行時に検出されたデータ・エラーを示すトレース・レポート、プロセスまたはマップの基本属性を示し、プロセスまたはマップ実行に関連するログ・ファイルとデータ・ファイルをリストし、さらに選択したファイルの内容を表示するジョブ・ファイル・レポートを使用した診断の表示。

- プロセスまたはマップの識別プロパティ(最新デプロイメント日および最新実行日を含む)を示し、最新のデプロイメントにより指定されたプロセスのすべての実行パラメータをリストし、さらに最新のデプロイメント仕様からパラメータのデフォルト値を割り当てるジョブ開始レポートを使用したジョブの再実行。

管理レポート

主要なリポジトリ・ブラウザ管理レポートである「サービス・ノード・レポート」では、Oracle Real Application Clusters(Oracle RAC)システムのサービス・ノード情報を管理できます。

また、ロケーション・レポート(トップレベル・デプロイメント・レポート)から、基本的なロケーション属性、現在のコントロール・センター接続詳細および現在のロケーション接続詳細を示すロケーション検証レポートにアクセスできます。

デプロイメント・レポート

トップレベル・デプロイメント・レポートは、デプロイメント・スケジュール・レポート、オブジェクト・サマリー・レポートおよびロケーション・レポートです。これらのトップレベル・デプロイメント・レポートから、特定のプロセス、マップまたはデータ・オブジェクトのデプロイメントに関する詳細を提供する、デプロイメント・エラーの詳細レポートおよびデプロイメント・レポートにアクセスできます。

デプロイメント・スケジュール・レポート

デプロイメント・スケジュール・レポートは、基本属性を示し、すべてのデプロイメントのノード・ツリー形式の詳細を時間順に表示する、トップレベルのコントロール・センター・レポートです。

実行詳細を表示し、データ・オブジェクト、マップおよびプロセス・デプロイメント・レポートにアクセスするには、デプロイメント・スケジュール・レポートを使用します。

デプロイメント・スケジュール・レポートには、表13-3に表示される列を含むノード・ツリーを含みます。

表13-3 デプロイメント・スケジュール・レポートの内容

列名

説明

選択

デプロイメント・ツリーでこのノードを選択する場合にクリックします。この機能は、デプロイメント・スケジュール・レポートの削除機能と組み合せて使用します。

フォーカス

この列内のアイコンをクリックすると、ツリーのフォーカスがこのノードに変更されます。

名前

このデプロイメント・レポート内のすべてのアイテムを表すツリーです。ノードを拡張するには、ノードの+(プラス)アイコンをクリックします。ノードを縮小するには、ノードの-(マイナス)アイコンをクリックします。

ロケーション・デプロイメント・スケジュール・レポートを表示するには、ロケーション名をクリックします。オブジェクト名をクリックし、オブジェクトのデプロイメント・レポートを表示します。

デプロイメント

デプロイメント実行を識別する番号。

タイプ

アイテムのタイプ。

オブジェクト・ステータス

オブジェクトのステータス。

日付

デプロイメントの日付。

デプロイメント・ステータス

デプロイメントのステータス。これには、次のステータスがあります。

- 完了: デプロイメントが完了したことを示します。

- ビジー: デプロイメントが進行中であることを示します。

- 準備完了: ジョブが開始された直後か、終了する直前であることを示します。

注意: デプロイメント・ステータスが非常に長い間「準備完了」になっている場合は、フォルダOWB_HOME/owb/rtp/sqlにあるスクリプトdeactivate_deployment.sqlを使用して、デプロイメント・ステータスを無効にしてください。

関連情報

関連するデプロイメント・エラーの詳細レポートへのリンクを含む他の関連情報(適切な場合)。

デプロイメント・スケジュール・レポートでは、次の操作が可能です。

- デプロイメントを拡張して実行詳細を表示します。

- 日付範囲に基づいてデプロイメントをフィルタします。

- デプロイメントを表示する日付範囲を設定します。

- レポートをリフレッシュしてデプロイメント詳細を表示します。

- 権限に不足がない場合、選択したデプロイメント監査詳細を削除できます。

ロケーション・デプロイメント・スケジュール・レポート

ロケーション・デプロイメント・スケジュール・レポートは、外見上はデプロイメント・スケジュール・レポートに似ていますが、特定のロケーションのデプロイメントのみを表示し、監査詳細を削除できないという点を除きます。

ロケーションにデプロイされたオブジェクトを表示するには、ロケーションのノード・ツリーを展開します。オブジェクト名をクリックし、オブジェクトのデプロイメント・レポートを表示します。デプロイメントが失敗したオブジェクトでは、「関連情報」列内のリンクを使用して、デプロイメント・エラーの詳細レポートにアクセスします。

ロケーション・レポート

このデプロイメント・レポートには、オブジェクトがデプロイされたすべてのロケーションが示されます。

このレポート内では、次の操作が可能です。

- 名前および最新デプロイメント時間によりロケーションをソートします。

- 権限に不足がない場合、選択したロケーションを登録解除できます。

- 権限に不足がなく、「検証」列にリンクが表示されている場合、ロケーションの接続詳細をテストおよび更新するための関連するロケーション検証レポートを開くことができます。

ロケーション・レポートには、「コントロール・センター接続」、「論理詳細」および「物理詳細」の3つのセクションがあります。

コントロール・センター接続 このセクションでは、コントロール・センターのサービスの説明が表示されます。

論理的な詳細 この項では、名前、タイプ、サービスの説明およびこのロケーションへの前回のデプロイメントの日付、デプロイメントに使用するユーザー名などのすべてのロケーションの詳細が表示されます。ロケーションのオブジェクト・サマリー・レポートを表示するには、そのロケーション名をクリックします。

ロケーションの登録を解除するには、ロケーションの右側にある「選択」をクリックしてロケーションを選択し、次に「選択したロケーションの登録解除」をクリックします。

物理的な詳細 このセクションにはコントロール・センターに関連付けられているホスト名、ポートおよびサービス名を表示するノード・ツリーとコントロール・センターに属するロケーションのリストがあります。

オブジェクト・サマリー・レポート

オブジェクト・サマリー・レポートは、基本属性を示し、デプロイされたオブジェクト(プロセス・フロー、マッピングおよびデータ・オブジェクト)を最新のデプロイメントの詳細とともにタイプまたは名前順でリストします。

オブジェクト名をクリックし、選択したオブジェクトのデプロイメント・レポートを表示します。ロケーションのロケーション・オブジェクト・サマリー・レポートを表示するには、そのロケーション名をクリックします。

このレポート内では、次の操作が可能です。

- 名前、タイプ、ロケーション、最新デプロイメント時間およびオブジェクト・ステータスにより実行をソートします。

- タイプおよびステータスによりオブジェクトをフィルタします。

ロケーション・オブジェクト・サマリー・レポート

ロケーション・オブジェクト・サマリー・レポートでは、選択したロケーションにデプロイされるすべてのオブジェクト(プロセス・フロー、マッピングおよびデータ・オブジェクト)がリストされます。提供される詳細には、オブジェクト名、オブジェクト・タイプ、最新デプロイメント日付およびオブジェクト・ステータスが含まれます。

このレポートは、オブジェクト・サマリー・レポートに類似していますが、「ロケーション・パラメータ」セクションも含まれるという点を除きます。「ロケーション・パラメータ」セクションでは、ホスト名、ポート番号、スキーマ名、FTPユーザー名、データベース・リンク名などのロケーションの詳細が表示されます。権限が十分である場合、Webサーバー・ベース・パラメータを更新できます(該当する場合)。

オブジェクト名をクリックし、選択したオブジェクトのデプロイメント・レポートを表示します。

デプロイメント・レポート

このデプロイメント・レポートは、特定のプロセス・フロー、マッピングまたはデータ・オブジェクトのデプロイメントに関する詳細を提供します。

アイテムがプロセス・フローである場合、このレポートは、基本的なプロセス・フロー属性を示し、プロセス・フローとそのサブプロセスのすべてのデプロイメントを時間順にリストします。アイテムがマッピングである場合、このレポートは、基本的なマッピング属性を示し、すべてのデプロイメントを時間順にリストします。アイテムがデータ・オブジェクトである場合、このレポートは、基本的なデータ・オブジェクト属性を示し、データ・オブジェクトとそのセカンドクラス・データ・オブジェクトのすべてのデプロイメントを時間順にリストします。

デプロイメント中に発生したエラーの詳細を表示するには、デプロイ・メッセージセクションのリンクをクリックします。

このレポート内では、次の操作が可能です。

- デプロイメント時間によってデプロイメントをソートします。

- デプロイメント・ステータスによってデプロイメントをフィルタします。

デプロイメント・エラーの詳細レポート

デプロイメント・エラーの詳細レポートでは、特定のデプロイメント・エラーの詳細を示し、デプロイメント・エラーに関するすべてのメッセージをリストします。

このレポート内では、次の操作が可能です。

- メッセージ番号によりエラー・メッセージをソートします。

- 重大度によりエラー・メッセージをフィルタします。

実行レポート

トップレベル実行レポートは、実行スケジュール・レポートおよび実行サマリー・レポートです。

これらのトップレベル実行レポートから、エラー表実行レポート、ジョブ・エラー診断レポート、トレース・レポート、実行ジョブ・レポート、ジョブ・ファイル・レポート、ジョブ開始レポートおよび実行レポートにアクセスできます。

実行スケジュール・レポート

この実行レポートは、基本属性を示し、すべてのプロセス・フロー実行およびトップレベルのマッピング実行のノード・ツリー形式の詳細を時間順に表示します。各実行の詳細には、名前、ジョブID、タイプ、ロケーション名、実行日および実行ステータスが含まれます。

オブジェクト名をクリックし、オブジェクトの実行レポートを表示します。「関連情報」列では実行ジョブ・レポートへのリンクを提供します。十分な権限を持っている場合、オブジェクトを選択して、「選択した監査詳細の削除」をクリックすることで、オブジェクトの実行の監査詳細を削除できます。

このレポート内では、次の操作が可能です。

- 1つのプロセス実行の詳細にフォーカスを置きます。

- プロセス実行を拡張してアクティビティ実行詳細を表示します。

- 実行名、実行ステータスおよび日付範囲によりプロセス実行をフィルタします(ビジー・ステータスの実行のみを表示する場合など)。

- 日付範囲の開始および終了の設定に使用できる日付ピッカーに対し、カレンダ・アイコンを使用します。

- レポートをリフレッシュして実行詳細を表示します。

- 権限に不足がない場合、選択したプロセス実行監査詳細を削除できます。

実行サマリー・レポート

この実行レポートでは、プロセス・フローおよびマッピング実行のすべてをタイプまたは名前順でリストします。「関連情報」列内のリンクをクリックすると実行ジョブ・レポートにアクセスできます。

実行サマリー・レポート内では、次の操作が可能です。

- 名前、タイプ、最新実行時間および実行ステータスにより実行をソートします。

- タイプおよび実行ステータスによりプロセス(およびマップ)をフィルタします。

実行レポート

実行レポート(場合によっては実行詳細レポートと呼ばれます)は、指定のプロセスのすべての実行詳細、指定のマップまたは指定のデータ・オブジェクトがソースまたはターゲットであるすべてのマップの実行を示します。

実行レポートがプロセスまたはマップについてのものである場合、このレポートは、基本的なプロセスまたはマップの属性を示し、プロセスまたはマップの実行が時間順にリストされます。

ジョブ開始レポートを表示するには、このページの最上部にある「開始」リンクをクリックします。

実行レポート内では、次の操作が可能です。

- 実行開始時間によりプロセスまたはマップの実行をソートします。

- アクティビティ実行詳細を示すためのプロセスまたはマップの実行を表示または非表示にします。

- 実行ステータスおよび実行重大度によりプロセスまたはマップの実行をフィルタします。

エラー表実行レポート

この実行レポートは、マップの実行時に検出された指定ターゲットに関する論理エラーの詳細を示します。

このレポート内では、次の操作が可能です。

- マップ・タイプ、マップ名、実行開始時間、ルール・タイプおよびルール使用方法により論理エラーをソートします。

- マップ名、ルール・タイプおよびルール使用方法により論理エラーをフィルタします。

- 権限に不足がない場合、「エラー表のパージ」を使用して、選択した論理エラーを削除できます。

実行ジョブ・レポート

実行ジョブ・レポートは、プロセス実行またはマップ実行に関する詳細情報を示します。

実行ジョブ・レポートには、次のセクションがあります。実行詳細、「実行パラメータ」、「ステップ詳細」、「エラー・メッセージ」、「論理エラー」および監査詳細です。

プロセス実行に関する実行ジョブ・レポート

実行ジョブ・レポートがプロセス実行に関するものである場合、このレポートは、基本的なプロセス実行詳細を示し、実行パラメータをリストし、アクティビティ(マップおよびサブプロセス)詳細を時間順にリストし、さらにエラー・メッセージをリストします。

プロセス実行に関する実行ジョブ・レポートでは、次の操作が可能です。

- マップ実行詳細を示すためのアクティビティ詳細を表示または非表示にします。

- レポートをリフレッシュして実行詳細を表示します。

- プロセス実行を終了します。

マップ実行に関する実行ジョブ・レポート

実行ジョブ・レポートがマップ実行に関するものである場合、このレポートは、ソースおよびターゲットのデータ・オブジェクトを含む基本的なマップ実行詳細を示し、実行パラメータをリストし、マップ・ステップ詳細を時間順にリストし、エラー・メッセージをリストし、論理エラー詳細をリストし、SQL Loaderのログ・ファイルの内容を表示します(該当する場合)。

マップ実行に関する実行ジョブ・レポートでは、次の操作が可能です。

- ソースおよびターゲットのデータ・オブジェクトを含むマップ・ステップ詳細を表示および非表示にします。

- レポートをリフレッシュして実行詳細を表示します。

- エラー表、マップ・ステップ、ルール・タイプおよびルール使用方法により論理エラーをソートします。

- マップ実行を終了します。

- ロールに十分な権限がある場合、マップ実行のエラーおよびトレース監査詳細を削除し、エラー表を削除して選択した論理エラーを削除できます。

トレース・レポート

この実行レポート(マップの実行トレース・レポートとも呼ばれます)は、ソース値およびターゲット値の詳細およびマップの実行時に検出されたデータ・エラーを示します。

このレポート内では、次の操作が可能です。

- 行キー、表名によりファイルをソートします。

- 実行重大度およびソースまたはターゲットで診断トレースをフィルタします。

注意:
トレース診断は、マップの実行が「監査レベル」ランタイム・パラメータの特定の設定により実行される場合に使用できます。このトレース機能は、大量の監査データを生成する可能性があるため、注意して使用してください。

ジョブ・ファイル・レポート

この実行レポートは、基本的なプロセス・フローまたはマッピング属性を示し、プロセス・フローまたはマップの実行時に外部プロセスによって作成されたログ・ファイルおよびデータ・ファイルをリストし、さらに選択済ファイルの内容を表示します。

ジョブ・ファイル・レポートでは、次の操作が可能です。

- ファイル・タイプ、作成時間によりファイルをソートします。

- 任意の選択済ファイルの内容を表示します。

ジョブ開始レポート

この実行レポートは、プロセス・フローまたは実行可能マップの識別プロパティ(最新デプロイメント日および最新実行日を含む)を示し、最新のデプロイメントにより指定されたプロセスまたは実行可能マップのすべての実行パラメータをリストし、さらに最新のデプロイメント仕様からパラメータのデフォルト値を割り当てます。

ジョブ開始レポートでは、次の操作が可能です。

- 名前、カテゴリにより実行パラメータをソートします。

- 入力パラメータ値を変更します(許可されている場合)。

- 必要に応じてデフォルトの実行名を変更します。

- すべてのパラメータ設定をデフォルト値にリセットします。

- 基本検証をパラメータ値に適用します。

- ただちに実行するようにスケジュールされるようにプロセスまたはマップの実行を開始します。

- プロセスまたはマップの最新のデプロイメント詳細に関するデプロイメント・レポートにナビゲートします。

- 現行のプロセスまたはマップの最新の実行に関する実行レポートにナビゲートします。

ジョブ・エラー診断レポート

この実行レポート(実行エラー診断レポートとも呼ばれます)は、プロセス・フローまたはマッピング実行中に発生したランタイム・エラーについて収集された診断情報を表示します。また、ランタイム・エラーの詳細を示し、ターゲット詳細を示し、可能な場合はソースおよびターゲット列の詳細をリストします。一部の列値は、ロールに適切な権限がある場合にのみ表示されます。

このレポートでは、ソースおよびターゲット・カテゴリ、ソースおよびターゲット名、行キー、列名により列詳細をソートできます。

管理レポート

トップレベル管理レポートは、サービス・ノード・レポートです。このレポートから、ロケーション検証レポートを開くことができます。

サービス・ノード・レポート

この管理レポートは、Oracle Real Application Clusters(RAC)システムのサービス・ノード情報を表示し、これを管理できます。具体的には、次のファンクションを実行します。

- 基本属性を表示します。

- 基礎となるシステム表から生成された、Oracle RACシステムで現在使用されているすべてのサービス・ノードの詳細およびステータスをリストします。

- 現在使用されていないOracle RACシステムで使用できるサービス・ノードをリストします。

- ランタイム・リポジトリへのアクセスに使用されるネット・サービス名を示します。

サービス・ノード・レポートでは、次の操作が可能です。

- インスタンス番号、インスタンス名またはランタイム・バージョンによりサービス・ノードをソートします。

- ノードが使用可能でもアクティブでもない場合に、インスタンス番号を更新します。

- 使用可能な設定を設定または設定解除します。(Oracle RACシステムにより保持されているアクティブ設定は変更できません)。

- 使用可能でもアクティブでもない選択済のサービス・ノードを、Oracle RACシステムによる使用から除外します。

- 使用可能なノードのリストから、ノードをサービスに追加します。

- ランタイム・リポジトリのネット・サービス名を設定します。

- レポートをリフレッシュしてサービス・ノード詳細を表示します。

(ノード詳細を追加、削除または更新できるのは、十分な権限がある場合に限られます。)

ロケーション検証レポート

この管理レポートは、名前、タイプなど基本的なロケーション属性、現行のコントロール・センター接続詳細および現行のロケーション接続詳細を示します。

ロケーション検証レポートでは、次の操作が可能です。

- 「接続テスト」をクリックしてロケーション接続をテストする

- 「更新の詳細」をクリックしてロケーション接続詳細を更新する

共通リポジトリ・ブラウザ・タスク

次のシナリオは、リポジトリ・ブラウザを使用して実行する代表的なアクションの例です。

- 最近実行されたプロセスの識別

- プロセスの実行に失敗した理由の識別

- プロセスの実行の比較

- マップの実行が予期せぬ結果を招いた理由の把握

- 最近実行されたデプロイメントの識別

- 特定のロケーションにデプロイされたデータ・オブジェクトの識別

- 特定のロケーションにデプロイされたデータ・オブジェクトの識別

- 特定のデプロイ済データ・オブジェクトを使用するマップの実行の識別

- デプロイ済プロセスのデフォルトのデプロイメント時間設定の把握

- プロセスの再実行

- プロセスの実行の監視

- プロセスの実行の終了

- プロセスの実行監査詳細の削除

- 以前のデプロイメント監査詳細の削除

- データ監査の実行後に作成されるエラー表の表示

- ロケーションの登録解除

- 変更済データベース環境のロケーション接続詳細の更新

- 変更済Oracle RAC環境のサービス・ノード詳細の更新

最近実行されたプロセスの識別

1. 実行スケジュール・レポートを開き、最新のプロセスの実行を参照します。

2. 必要に応じて、実行名、実行ステータスおよび日付範囲を使用して、表示される情報をフィルタします。

3. エラーがあるかまたは完了していないものとしてレポートされているプロセスの実行をメモします。

4. ステップ3で識別されたプロセスの実行のツリー構造を拡張し、アクティビティ(つまり、サブプロセスおよびマップのいずれか)の詳細を参照します。

プロセスの実行に失敗した理由の識別

1. 実行スケジュール・レポートを開き、エラーがあるとマークされているプロセスの実行をメモします。

2. 「実行レポートの実行」リンクをクリックし、プロセスの実行の詳細を提供する実行レポートを開きます。

3. エラーがあるかまたは完了していないものとしてレポートされているマップの実行をメモします。

4. 「実行レポートの実行」リンクをクリックし、ステップ3で識別されたマップの実行の詳細を提供する実行レポートを開きます。

5. プロセスレベルまたはマップレベルのエラー・メッセージについては、「エラー診断レポートの実行」リンクをクリックすると、ソース・データ値を含むエラーの詳細を表示するジョブ・エラー診断レポートが開きます。

プロセスの実行の比較

1. 実行サマリー・レポートを開き、すべてのプロセスのリストを参照します。

2. プロセス名をクリックし、プロセスの実行レポートを参照します。

3. 必要に応じて、表示/非表示機能を使用して詳細を表示し、以前の実行の結果を比較します。

マップの実行が予期せぬ結果を招いた理由の把握

1. 実行スケジュール・レポートを開き、必要なマップの実行が含まれるプロセスの実行をメモします。

2. 「実行レポートの実行」リンクをクリックし、プロセスの実行の詳細を提供する実行レポートを開きます。

3. 「実行レポートの実行」リンクをクリックし、マップの実行の詳細を提供する実行レポートを開きます。

4. マップの実行のAudit Levelランタイム・パラメータがCompleteに設定されている場合、「トレース」タブ・リンクを選択してトレース・レポートを参照します。

5. 必要に応じて、エラーおよびソースまたはターゲットによりトレース行をフィルタし、予期せぬソースまたはターゲット・アクションをメモします。

6. エラー・メッセージについては、「エラー診断レポートの実行」リンクをクリックすると、ソース・データ値を含むエラーの詳細を表示するジョブ・エラー診断レポートが開きます。

7. 「エラー行とトレース行の削除」をクリックし、このマップの実行の詳細またはエラーおよびトレースをすべて削除します(必要なくなった場合)。
削除中の場合は、確認画面が表示され、アクションの確認が要求されます。

最近実行されたデプロイメントの識別

1. デプロイメント・スケジュール・レポートを開き、最新のデプロイメントを参照します。

2. 必要に応じて日付範囲を使用して、表示される情報をフィルタします。
エラーがあるかまたは完了していないものとしてレポートされているデプロイメントをメモします。

3. 任意のデプロイメントのツリー構造を拡張し、そのコンポーネント(つまり、単位およびデプロイ済オブジェクト)の詳細を参照します。

4. エラー・メッセージについて、「配布エラーの詳細レポート」リンクをクリックし、関連するデプロイメント・エラーの詳細レポートを表示します。

特定のロケーションにデプロイされたデータ・オブジェクトの識別

1. ロケーション・レポートを開き、登録済のロケーションを参照します。

2. 「ロケーション名」リンクをクリックし、ロケーションのオブジェクト・サマリー・レポートを参照します。

3. 必要に応じてオブジェクト・タイプおよびオブジェクト・ステータスを使用して、表示される情報をフィルタします。

4. データ・オブジェクトの「名前」リンクをクリックし、データ・オブジェクトのデプロイメント・レポートを参照します。
このデータ・オブジェクトとそのセカンドクラス・データ・オブジェクトのすべてのデプロイメントについて、詳細が表示されます。

特定のデプロイ済データ・オブジェクトを使用するマップの実行の識別

1. オブジェクト・サマリー・レポートを開き、すべてのデプロイ済オブジェクトのリストを参照します。

2. 必要に応じてオブジェクト・タイプおよびオブジェクト・ステータスを使用して、表示される情報をフィルタします。

3. 「名前」列で、オブジェクトを表すリンクをクリックし、このオブジェクトのデプロイメント・レポートを表示します。

4. 右上の「使用可能なレポート」セクションで、「実行」をクリックしてオブジェクトの実行レポートを表示します。このレポートには、マップ実行でオブジェクトが使用される方法と使用される場合のサマリーが含まれています。

5. 実行レポートの「実行の詳細」セクションで、「実行ジョブ・レポート」を選択して、マッピングまたはプロセス・フロー実行の詳細を含む実行ジョブ・レポートを表示します。

デプロイ済プロセスのデフォルトのデプロイメント時間設定の把握

1. 「オブジェクト・サマリー・レポート」を開き、すべてのデプロイ済プロセスを参照します。

2. 「名前」列で、プロセス・フロー名をクリックし、プロセス・フローのデプロイメント・レポートを表示します。

3. 「使用可能なレポート」セクションで、「開始」をクリックしてプロセスのジョブ開始レポートを表示します。
実行パラメータには、デフォルトのデプロイメント時設定があります。

4. 「実行パラメータ」セクションで、必要に応じて、入力パラメータ値を変更します。

5. 「実行開始」をクリックし、新規プロセスを実行します。

プロセスの再実行

1. 実行スケジュール・レポートを開き、すべてのプロセス実行のリストを参照します。

2. 「実行の詳細」セクションで「名前」列のマッピングまたはプロセス・フロー名をクリックし、選択したオブジェクトの実行レポートを表示します。

3. 「使用可能なレポート」セクションで、「開始」をクリックして選択したオブジェクトのジョブ開始レポートを表示します。
実行パラメータには、デフォルトのデプロイメント時設定があります。

4. 必要に応じて、入力パラメータ値を変更します。

5. 「実行開始」をクリックし、新規プロセスを実行します。

プロセスの実行の監視

1. 実行スケジュール・レポートを開き、実行中のプロセスの実行を参照します。

2. 必要に応じて、現在実行中のプロセスの実行のみを表示する「実行ステータス」フィルタを使用します。

3. プロセスの実行の進行状況に従って、必要に応じて「リフレッシュ」をクリックします。

4. 「名前」列で、プロセス・フロー名をクリックし、指定されたプロセスの実行の詳細を含む実行レポートを表示します。

5. 必要に応じて「リフレッシュ」をクリックし、プロセスの実行の進行状況を辿ります。

6. ワークフロー・システムで認識されているプロセスの実行の場合、「関連情報」リンクをクリックしてOracle Workflow Monitorに切り替え、グラフィック表示で進行状況を辿ります。現在のレポート・ページに戻るには、ブラウザの「戻る」ボタンを使用します。

プロセスの実行の終了

1. 実行スケジュール・レポートを開き、実行中のプロセスの実行を参照します。

2. 「名前」列で、プロセス・フロー名をクリックし、プロセスの実行の実行レポートを表示します。

3. 「停止」をクリックし、指定のプロセスの実行を終了します。

4. 必要に応じて「リフレッシュ」をクリックし、プロセスの実行が終了したときにその進行状況を辿ります。

プロセスの実行監査詳細の削除

1. 実行スケジュール・レポートを開き、最新のプロセスの実行を参照します。

2. 実行名を使用して、表示される情報をフィルタします。

3. 削除するすべての実行を選択し、「選択した監査詳細の削除」をクリックします。
確認画面が表示され、アクションの確認を求められます。

以前のデプロイメント監査詳細の削除

1. デプロイメント・スケジュール・レポートを開き、最新のデプロイメントを参照します。

2. 日付範囲を使用して、表示される情報をフィルタします。

3. 削除するすべての実行を選択し、「選択した監査詳細の削除」をクリックします。
確認画面が表示され、アクションの確認を求められます。

データ監査の実行後に作成されるエラー表の表示

1. エラー表に対する権限をリポジトリ・ブラウザに付与します。
「エラー表に対する権限の付与」を参照してください。

2. 実行サマリー・レポートまたは実行スケジュール・レポートを開き、すべてのプロセスのリストを表示します。

3. データ監査を含むプロセス・フローに対応する「関連情報」列内のリンクをクリックして、そのプロセス・フローの実行ジョブ・レポートを表示します。

4. データ監査アクティビティに対応する「関連情報」列内のリンクをクリックして、そのアクティビティの実行ジョブ・レポートを表示します。

5. データ監査の制約に違反したデータは、「論理エラー」表に示されます。「論理エラー」列のリンクをクリックして、そのエラー表の実行レポートを表示します。

十分な権限を持っている場合、エラー表の「実行レポート」を使用して、エラー表からデータを削除できます。

ロケーションの登録解除

1. ロケーション・レポートを開き、登録済のロケーションを参照します。

2. 登録解除するロケーションを選択し、「選択したロケーションの登録解除」をクリックします。
確認画面が表示され、アクションの確認を求められます。

変更済データベース環境のロケーション接続詳細の更新

1. ロケーション・レポートを開き、ロケーションを参照します。

2. そのロケーションの右側にある「選択」列をクリックして検証されるロケーションを選択します。選択したロケーションに対応する「検証」列内のリンクをクリックします。
ロケーション検証レポートが表示され、ロケーションおよびコントロール・センターの接続詳細が示されます。

3. 必要に応じてサービス説明値を変更し、「更新の詳細」をクリックします。

4. ロケーション・ステータスセクションで、「ステータスの取得」をクリックし、ロケーションの現在の接続設定を検証します。
ロケーション接続テストの結果は、現行セッション終了後は保持されません。

変更済Oracle RAC環境のサービス・ノード詳細の更新

1. サービス・ノード・レポートを開き、現在Oracle RACシステムを説明している設定を参照します。

2. サービス・ノードの詳細および使用方法を更新してから、要求された変更が行われるように「ノードの詳細の更新」をクリックします。

3. 必要に応じて、サービス・ノードを追加または削除します。

4. 「リフレッシュ」をクリックし、Oracle RACシステムの現在の設定を参照します。

5. 必要に応じて、コントロール・センターへのアクセスに使用するネット・サービス名を設定します。

14 メタデータの依存性の管理

メタデータの依存性マネージャでは、ワークスペースで行ったオブジェクト定義またはメタデータへの変更の影響を検出および解決できます。

この章の内容は次のとおりです。

- 「メタデータ依存性マネージャについて」

- 「LIAダイアグラムを開く」

- LIAダイアグラムでのオブジェクトの管理および確認

- 変更の自動伝搬を使用した設計メタデータの変更

メタデータ依存性マネージャについて

メタデータ依存性マネージャでは、Oracle Warehouse Builderリポジトリのメタデータで表されるようにデータ・オブジェクト間の依存性を確認できるインタフェースを提供します。メタデータ依存性マネージャでは、インタラクティブな系統および影響ダイアグラムの形式で依存性を表します。系統ダイアグラムではオブジェクトのデータ・フローをソースまで追跡し、それらのパスに沿ってすべてのオブジェクトを表示します。影響ダイアグラムでは選択したオブジェクトから導出されるすべてのオブジェクトを識別します。

このタイプの情報は、次のような多くの状況で役立ちます。

- ディメンション、キューブまたはビジネス・インテリジェンス・ツール・レポートなどのターゲット・オブジェクトから、ターゲットに表示される結果の計算に使用される各データ・ソースの列を識別します。

- ソース表、プラッガブル・マッピングなどのプロジェクト全体で使用されるオブジェクトの設計の変更の影響を評価します。

- ソース表の列のデータ型への変更など、設計の変更を設計のダウンストリームに伝搬します。

エンドツーエンド・データ系統および影響分析では、設計変更のプランニングの強化、ソース・システムを変更した場合の予期せぬ影響の識別の迅速化、ビジネス・インテリジェンス結果、マスター・データまたはその他のデータ統合プロセスのより効果的な監査の実現により、プロジェクトのリスクが削減されます。

例: 系統ダイアグラムおよび影響分析ダイアグラム(LIA)

ファイル、データベースおよびアプリケーションなどのソースのメタデータはデータ統合システムの設計および実装後でさえ変更できます。ソース・メタデータの変更は、これに付随してOracle Warehouse Builderの実装に対する影響があることを意味します。Oracle Warehouse Builderを使用すると、変更済のソース定義をワークスペースに再インポートできます。ただし、元のウェアハウス設計は再インポートした定義に対して有効ではなくなるため、設計を変更して不整合を修正する必要があります。

まず、ソースの変更によりウェアハウス設計がどのように影響されるかを特定し、ソースに依存しているすべての設計オブジェクトを決定します。次に、すべての影響を受ける設計オブジェクトがソースの変更を反映して更新されるように、メタデータを同期化する必要があります。このプロセスの完了後、更新された設計を再デプロイして、データ・ウェアハウスを再作成し、データを同期化できます。

たとえば、ある会社がデータ・ウェアハウスのソース・データをCUSTOMERSというフラット・ファイルから取得するとします。CUSTOMERSフラット・ファイルおよびダウンストリーム・ステージング表は、ETL設計の複数のマッピングから参照され、最終的にキューブと、レポートに使用されるOracle Discovererのインスタンスにロードされます。CUSTOMERSのレコードには、数値のCUSTOMER_ID列と、US、EMEA、APACまたはOTHERの値を使用できるREGION列が含まれます。CUSTOMERSのレコードは、顧客マスター・データベースにも提供されます。

時間の経過とともに、次の問題が発生しました。

- 顧客マスター・データの所有者は、入力が必須の列GROUP_IDにNULL値が含まれることがあることを見つけました。

- マーケティング部門では、Oracle Discovererで生成されるレポートに示される顧客のブレークダウンおよび地域ごとの売上に疑問を持っています。

- 以前は数値のみが含まれていたCUSTOMER_ID列に現在は文字と数字が含まれることがあります。

- 以前50文字であった既存のCUSTOMER_NAME列は100文字に拡張されます。

- 設計のその他の複数のマッピングで参照されるプラッガブル・マッピングはGROUP_ID列のNULL値を含む行を拒否するように更新されます。

CUSTOMERSの定義への変更は、そのフラット・ファイルのすべてのダウンストリーム・オブジェクトに影響する可能性があります。顧客マスター・データのエラーはソース・データから発生しているか、ETLマッピングの不具合が原因である可能性があります。Oracle Discovererレポートに関する問題は、顧客の地域情報の情報の元が文書化できる場合は、解決できます。

Oracle Warehouse Builderリポジトリのメタデータに基づくデータ系統機能およびデータ影響分析がない場合、変更を担当した開発者が、ステージング表、ODS表、ディメンション、キューブ、Discovererオブジェクトおよびマスター・データを含むデータ統合設計全体を手動で確認する必要があります。ソース・データの設計変更では、それらのオブジェクトのロードに使用するETLマッピングを手動で更新する必要があります。BIレポートへのマーケティングの信頼性は開発者の手動による設計の確認に依存しています。

Oracle Warehouse Builderのメタデータ依存性管理、データ系統および影響分析機能では、次のようにこのようなタスクを簡略化します。

- メタデータ依存性マネージャは、顧客マスター・データの不正な列の系統の追跡を自動化します。

- レポートで使用される地域データの元が文書化され、立証できるため、Discoverer設計を検証できます。

- CUSTOMER_ID列への数値以外の値の追加で影響を受ける可能性のあるETLマッピングおよびターゲットを自動的に識別できます。

- CUSTOMER_NAME列定義への変更により影響を受ける設計全体を通じたターゲット・オブジェクトおよびETLマッピングを自動的に識別し、さらに更新することもできます。

系統ダイアグラムおよび影響分析ダイアグラムおよびメタデータ依存性ダイアグラムについて

メタデータ依存性ダイアグラムでは、Oracle Warehouse Builderが管理するオブジェクトの間の関係を示します。このダイアグラムには構造の関係(2つの表の列間の主キーと外部キーの関係など)およびデータ関係(CUSTOMERSフラット・ファイルからCUSTOMERS_STAGEステージング表へのデータ・フローなど)の両方を示します。

ダイアグラムを読み取って、データ系統および影響分析情報を検出できます。ダイアグラムを左から右に読み取ると、影響分析情報(特定のオブジェクトまたは列による影響を受けるオブジェクト)を検出することができ、右から左に読み取ると、データ系統情報(出力オブジェクトに含まれるデータのソースの識別)を検出できます。

たとえば、ファイルからデータを抽出するマッピングがあり、外部表を使用して表にデータをロードするとします。この関係は次のとおりです。

flat_file > external_table > table

図14-1にADDRESS_EXT_TABという名前の外部表の系統ダイアグラムを示します。ADDRESS_CSVはフラット・ファイルで、ADDRESS_EXT_TABの系統の一部です。したがって、ADDRESS_CSVに対する変更は、すべてADDRESS_EXT_TABに影響します。

図14-1 ADDRESS_EXT_TABLEの系統分析ダイアグラム

「図14-1 ADDRESS_EXT_TABLEの系統分析ダイアグラム」の説明

図14-2にADDRESS_TABLEを含むADDRESS_EXT_TABの影響ダイアグラムを示します。ADDRESS_EXT_TABに対する変更は、すべてADDRESS_TABLEに影響します。ADDRESS_EXT_TABはADDRESS_TABLEの系統の一部です。

図14-2 ADDRESS_EXT_TABLEの影響分析ダイアグラム

「図14-2 ADDRESS_EXT_TABLEの影響分析ダイアグラム」の説明

注意:
ダイアグラムにはDEFAULT_CONFIGURATIONオブジェクトとともにソース・データ・オブジェクトおよびターゲット・データ・オブジェクトが含まれます。この理由は、選択した構成がソースからターゲットへのデータの移動方法に影響することがあるためです。

図14-3に示すように、オブジェクト・アイコンのいずれかの側にあるプラス記号(+)をクリックすることにより、オブジェクトの系統および影響を含むようにダイアグラムを拡張できます。

図14-3 系統ダイアグラムおよび影響分析ダイアグラム

「図14-3 系統ダイアグラムおよび影響分析ダイアグラム」の説明

LIAダイアグラムを開く

デザイン・センターのプロジェクト・ナビゲータでLIAダイアグラムを生成できます。

デザイン・センターでLIAダイアグラムを生成する手順は、次のとおりです。

1. 分析するオブジェクトが表示されるまでプロジェクト・ナビゲータを展開します。

2. オブジェクトを右クリックして、「系統」または「影響」を選択します。
「系統」タブまたは「影響」タブが表示され、オブジェクトの系統(選択したオブジェクトの左側にあるオブジェクトの1レベル)または影響(選択したオブジェクトの右側にあるオブジェクトの1レベル)のいずれかが示されます。

また、「表示」メニューから「系統」コマンドおよび「影響」コマンドを使用することもできます。

LIAダイアグラムでのオブジェクトの管理および確認

オブジェクトとダイアグラム・タイプの最初の選択では、そのオブジェクトからダイアグラムが分岐する開始点と方向を決定します。LIAダイアグラムは次の方法で変更できます。

- 他のオブジェクトをダイアグラムにドラッグアンドドロップして、他のオブジェクトの依存性を表示します。

- オブジェクト・アイコンの隣にあるプラス記号(+)またはマイナス記号(-)をクリックすると、ダイアグラムのブランチが拡張または縮小されます。

- キャンバスから選択したオブジェクトを削除します。「グラフ」メニューから、選択したオブジェクトの非表示を選択して、キャンバスからオブジェクトを削除します。非表示のオブジェクトを表示するには、「グラフ」メニューから「リフレッシュ」を選択します。

- 「LIAダイアグラムのグループの使用」の説明に従って、グループ化ツールを使用して、ダイアグラムのセクションを1つのアイコンに縮小します。

- 「オブジェクトの属性の表示」の説明に従って、属性を表示するオブジェクトをダブルクリックします。

- オブジェクトを右クリックすると、「エディタを開く」、完全な系統の表示および完全な影響の表示の各メニュー・オプションが表示されます。
「エディタを開く」オプションは、「変更の自動伝搬を使用した設計メタデータの変更」で説明されています。

完全な系統の表示オプションおよび完全な影響の表示オプションは、「LIAダイアグラムでのオブジェクトの系統および影響の確認」で説明されています。

LIAダイアグラムでのオブジェクトの系統および影響の確認

「グラフ」メニューの次のオプションを使用すると、LIAダイアグラムの系統および影響分析情報を確認できます。

- 完全な影響の表示: ノードを開くと選択したオブジェクトのダイアグラムのすべての影響を表示します。

- 完全な系統の表示: 選択したオブジェクトの完全な系統ダイアグラムを生成します。

- 系統の表示: 選択したオブジェクトの系統ダイアグラムの次のレベルのオブジェクトを表示します。

- 系統の非表示: 選択したオブジェクトの系統を非表示にします。

- 影響の表示: 選択したオブジェクトの影響ダイアグラムの次のレベルのオブジェクトを表示します。

- 影響の非表示: 選択したオブジェクトのすべての影響を非表示にします。

LIAダイアグラムでのオブジェクトを検索するための検索機能の使用方法

Oracle Warehouse Builderの他のエディタと同様に、系統ダイアグラムおよび影響分析ダイアグラムのオブジェクトを検索できます。順方向の検索では影響分析を左から右方向に検索し、逆方向の検索ではデータ系統を右から左に検索します。ダイアグラムは現在の一致ノードがダイアグラムの中心に位置するように移動されます。また、ダイアグラムの検索ではすべての一致がハイライトされます。

系統ダイアグラムおよび影響分析ダイアグラム(LIA)で検索する手順は、次のとおりです。

1. 「検索」メニューから「検索」を選択します。
「検索」ダイアログ・ボックスが表示されます。

2. 「検索」フィールドに検索するオブジェクトの名前を入力します。

3. オブジェクトを検索するときに追加オプションを使用するには、詳細を表示をクリックします。
拡張検索オプションは「検索」ダイアログ・ボックスに表示されます。

4. (オプション)次の各セクションの説明に従って、高度な検索オプションを指定します。

- 検索条件の指定

- 一致オプション

- 検索オプション

- スコープ

- 方向

これらのセクションでは、マッピングおよびプラッガブル・マッピング用の高度な検索の実行について説明します。ただし、機能およびプロセスは、LIAダイアグラムで高度な検索を実行する場合と同じです。

5. 「OK」をクリックします。

LIAダイアグラムでのグループの使用

グループを使用すると、複雑なダイアグラムのオブジェクトを簡単に配置および編集できるように編成できます。ダイアグラム内のオブジェクト数が削減されることのより、現在関心のあるオブジェクトにより簡単に焦点を当てることができます。

グループを作成する手順は、次のとおりです。

1. オブジェクトのグループを囲む四角をドラッグおよびドロップすることにより、グループを選択します。

2. ツールバーの選択したオブジェクトのグループ化をクリックします。
選択したデータ・オブジェクトのグループ化ダイアログ・ボックスが表示されます。

3. グループの名前を入力します。
選択したオブジェクトは1つのフォルダ・アイコンに閉じられます。

個々のオブジェクトをグループで表示するには、フォルダ・アイコンをダブルクリックします。これらのオブジェクトはグループ化されていないオブジェクトと同じ方法で機能できます。

オブジェクトのグループ化を解除するには、グループを選択し、ツールバーの選択したオブジェクトのグループ化を解除をクリックします。

LIAダイアグラムでのグループの管理

次の操作は、LIAダイアグラムのグループを操作するために使用できます。

- 選択したオブジェクトのグループ化: キャンバス上の選択したオブジェクトを含むグループを作成します。フォルダ・アイコンはグループ内のすべてのオブジェクトを表します。オブジェクトが多くある場合、グループ化によりキャンバス上の混乱を軽減できます。グループ内の個別のオブジェクトを表示するには、アイコンをダブルクリックします。

- 選択したオブジェクトのグループ化解除: すべてのオブジェクトを個別に表されるように選択しグループを消去します。グループ化を解除するフォルダ・アイコンを選択し、選択したフォルダのグループ化解除をクリックします。

- モジュールごとのグループ化: すべてのオブジェクトをモジュールごとに自動的にグループ化します。フォルダ・アイコンはモジュールおよびモジュール内のすべてのオブジェクトを表します。モジュールごとにグループ化するには、「グラフ」メニューからモジュールごとのグループ化を選択します。
グループ内の個別のオブジェクトを表示するには、アイコンをダブルクリックします。

- モジュールのグループ化解除: すべてのオブジェクトが個別に表示されるようにモジュール・グループを消去します。モジュールのグループ化を解除するには、「グラフ」メニューからモジュールのグループ化解除を選択します。

オブジェクトの属性の表示

ダイアグラムのオブジェクト・アイコンを開くことにより、その属性を確認できます。アイコンを開くには、ダブルクリックします。アイコンに縮小表示するには、右上角にある下向き矢印をクリックします。

属性のLIAダイアグラムを生成する手順は、次のとおりです。

1. オブジェクトのLIAダイアグラムを生成します。

2. そのアイコンをダブルクリックして、属性を表示します。

3. 属性を右クリックして、系統の表示または影響の表示を選択します。
各属性が選択した属性の系統パスまたは影響パスと一緒に異なる色でハイライトされます。

この詳細情報は、監査や変更の伝搬の計画に使用できます。

図14-4に、列属性がマッピングで接続される2つの展開されたアイコンを示します。

図14-4 LIAダイアグラムで展開されたアイコン

「図14-4 LIAダイアグラムで展開されたアイコン」の説明

LIAダイアグラムのエクスポートと印刷

「ファイル」メニューのコマンドを使用して、LIAダイアグラムをSVG形式またはJPEG形式にエクスポートしたり、印刷したりできます。

- ダイアグラムのエクスポート: アクティブ・ダイアグラムをSVGファイル、JPEGファイルとしてローカル・ファイル・システムにエクスポートします。LIAダイアグラムをエクスポートするには、「ファイル」メニューから「エクスポート」→ダイアグラムを選択します。

- 印刷オプション: ダイアグラムを印刷するための「印刷設定」、「プレビュー」および「印刷」オプションを提供します。

変更の自動伝搬を使用した設計メタデータの変更

LIAダイアグラムでは、1つ以上のオブジェクトへの変更で無効になる可能性のあるすべてのオブジェクトを識別します。この情報により、影響を受けるオブジェクトを調べ、必要に応じて変更できます。多くの変更は、メタデータ依存性マネージャのダウンストリーム・オブジェクトに自動的に伝搬できます。

オブジェクトを手動で変更する手順は、次のとおりです。

1. 依存性マネージャで、変更する最初のオブジェクトに移動します。たとえば、ソース表に移動します。

2. ダイアグラムのオブジェクト・アイコンを右クリックして「エディタを開く」を選択します。
オブジェクト用の編集ツールが開きます。たとえば、表を選択した場合、データ・オブジェクト・エディタが開きます。

3. 編集ツールで必要な変更を行い、変更を保存します。

4. 変更が必要な場合、LIAダイアグラムで識別されたすべてのオブジェクトでこれらの手順を繰り返します。

変更の影響を受けるオブジェクトがわずかのみである場合は、オブジェクトを手動で変更できます。ただし、多くのオブジェクトが影響を受ける場合は、変更の自動伝搬を使用すると時間を節約できます。

依存マネージャを使用してメタデータの変更を伝搬するには:

1. ダイアグラムでオブジェクト・アイコンをダブルクリックします。
たとえば、ソース表のアイコンをダブルクリックします。

2. 変更するメタデータを右クリックし、「変更の伝播」を選択します。
たとえば、表の列を右クリックします。

3. 依存性マネージャでの変更の自動伝搬の説明に従って属性を変更します。

依存性マネージャでの変更の自動伝搬

「変更の伝播」ダイアログ・ボックスでは、系統影響分析ダイアグラムに示すように、Oracle Warehouse Builderですべての依存オブジェクトに伝播するメタデータの変更を指定します。このダイアログ・ボックスでは、「伝播」、「属性」、既存の値および「新しい値」の列にメタデータの詳細を表示します。

図14-5に、変更の伝播ダイアログ・ボックスを示します。

図14-5 変更の伝播ダイアログ・ボックス

「図14-5 変更の伝播ダイアログ・ボックスの説明

「属性」列には、名前、ビジネス名、データ型メタデータ属性が表示されます。既存の値列には、属性の現在の値が表示され、「新しい値」にはメタデータ依存性マネージャが検出した変更された値が表示されます。

変更する属性ごとに「伝播」を選択します。たとえば、列のデータ型および長さを変更する場合は、これらの属性の左にある「伝播」を選択します。

「新しい値」フィールドでは、属性ごとに希望の値を入力できます。伝搬する変更を選択後、「OK」 をクリックします。

15 ETL設計のトラブルシューティングおよびエラー処理

この章では、ETLのトラブルシューティングおよびOracle Warehouse Builderのエラー・ログについて説明します。また、DMLエラーのロギングなど、ETLのエラー処理方法についても説明します。

この章の内容は次のとおりです。

- Oracle Warehouse Builderでのエラー・ログの調査

- マッピングでエラーを発生した演算子の特定

- DMLエラー・ロギングの使用

- ETLプロセスのトラブルシューティング

Oracle Warehouse Builderでのエラー・ログの調査

Oracle Warehouse Builderを使用する間、設計者はログ・ファイルにアクセスして様々な種類のエラーについて調査する必要があります。この項では、Oracle Warehouse Builderでログに記録されるすべてのタイプのエラー・メッセージについて概略を示し、そのアクセス方法について説明します。

Oracle Warehouse Builderでは、各種操作を実行する場合、次のようなエラーが記録されます。

- 検証エラーのトラブルシューティング

- 生成エラーのトラブルシューティング

- デプロイメント・エラーおよび実行エラーのトラブルシューティング

- Name and Addressサーバー・エラーのトラブルシューティング

この項では、Oracle Warehouse Builderで各種操作を実行した後にエラー・ログを取得する方法を示します。

検証エラーのトラブルシューティング

Oracle Warehouse Builderでは、プロジェクト・ナビゲータからオブジェクトを選択し、次に「ファイル」メニューから「検証」を選択することにより、すべてのオブジェクトを検証できます。検証が完了すると、「ログ」ウィンドウに検証メッセージが表示されます。

図15-1に、「メッセージ・ログ」ウィンドウの新しいタブの検証メッセージを示します。

図15-1 検証エラー・メッセージ

「図15-1 検証エラー・メッセージ」の説明

また、「マッピング」を選択し、次に「検証」を選択すると、マッピング・エディタからマッピングを検証できます。「検証結果」ウィンドウに検証メッセージおよびエラーが表示されます。

検証結果では、オブジェクト名を表示するノード、検証ノードの順に開きます。検証エラーがある場合は、表示されます。検証メッセージをダブルクリックすると、「メッセージ・エディタ」ウィンドウ内にエラー・メッセージの詳細が表示されます。

Oracle Warehouse Builderでは、各検証済オブジェクトに対する最新の検証メッセージが保存されます。プロジェクト・ナビゲータ内のコンソール・ツリーからオブジェクトを選択し、メニュー・バーから「表示」を選択し、次に「検証メッセージ」をクリックすることによりこれらのメッセージにいつでもアクセスできます。「検証結果」ウィンドウにメッセージが表示されます。

生成エラーのトラブルシューティング

Oracle Warehouse Builderのオブジェクト用のスクリプトを生成した後、「ログ」ウィンドウに生成結果およびエラーが表示されます。「ログ」ウィンドウのエラー・メッセージをダブルクリックすると、メッセージ・エディタが表示され、ローカル・システムにエラーを保存できます。

図15-2に「生成結果」ウィンドウを表示します。

図15-2 生成結果ウィンドウ

「図15-2 生成結果ウィンドウ」の説明

デプロイメント・エラーおよび実行エラーのトラブルシューティング

実行またはデプロイメントンエラーおよび警告メッセージのログをローカル・システム上の指定した場所に保存できます。プロジェクト・ナビゲータで、プロジェクトを選択します。「ツール」メニューから「プリファレンス」を選択します。「プリファレンス」ダイアログ・ボックスの左側にあるオブジェクト・ツリーで、「Oracle Warehouse Builder」ノードを展開し、「ロギング」オプションをクリックします。右側に表示されるプロパティを使用して、ログ・ファイルのパス、ファイル名および最大ファイル・サイズを設定します。保存するログのタイプを選択することもできます。

メニュー・バーから「表示」を選択し、次に「ログ」を選択することにより、Oracle Warehouse Builderコンソールからデプロイメント・メッセージおよびエラー・メッセージのログを参照できます。この「メッセージ・ログ」パネルは読取り専用です。

ランタイム監査ブラウザ

データの転送またはロード中にエラーが発生した場合、監査ルーチンは、ランタイム表にエラーを報告します。ランタイム監査ブラウザを使用して、これらのエラー・レポートに簡単にアクセスできます。ランタイム監査ブラウザは、過去のデプロイメントおよび実行に関する詳細情報を提供します。これらのレポートはランタイム・リポジトリ内に格納されたデータから生成されます。実行レポートの「実行」タブをクリックしてエラー・メッセージおよび監査詳細を表示します。

マッピングでエラーを発生した演算子の特定

マッピングのデプロイ時にエラーが発生した場合は、エラー・メッセージで指定された行番号を使用して、エラーの発生箇所を特定します。生成済コードにはマッピングの各演算子のコメントが含まれています。これにより、マッピング内のどの演算子がエラーを発生させているかを特定できます。

次の例に、セット・ベース・モードで生成されたフィルタ演算子用のコードを表示します。/*および*/で囲まれているコメントは、文の特定の部分を実行する演算子を示します。

INSERT INTO "FLTR_TGT"
("CHANNEL_ID", "CHANNEL_DESC")
(SELECT
/*+ NO_MERGE */
/* CHANNELS.INOUTGRP1, FILTER.INOUTGRP1 */
"CHANNELS"."CHANNEL_ID" "CHANNEL_ID",
"CHANNELS"."CHANNEL_DESC" "CHANNEL_DESC"
FROM
"SH"."CHANNELS"@"ORA11@SH_SRC_LOCATION"  "CHANNELS"
WHERE
( "CHANNELS"."CHANNEL_ID"  < 5/* OPERATOR FILTER: FILTER CONDITION */ )
)
;

Name and Addressサーバー・エラーのトラブルシューティング

Oracle Warehouse Builderで提供されるName and Addressのクレンジング・サービスを使用する場合は、それに関連したエラーが表示されることがあります。

Name and Addressサーバーの起動および実行エラーは、次の場所に保存されます。

OWB_HOME/owb/bin/admin/NASvr.log

Name and Addressサーバーが次の場所で有効になっている場合、

OWB_HOME/owb/bin/admin/NameAddr.properties:TraceLevel=1,

ログ・ファイルNASvrTrace.logが同じディレクトリに生成されます。

DMLエラー・ロギングの使用

エラー・ロギングにより、文の実行中にエラーが発生してもDML文の処理を続行できます。エラー・コードおよび関連するエラー・メッセージなどのエラーの詳細は、エラー表に格納されています。DML操作が完了すると、エラー表をチェックして、エラーのある行を修正できます。DMLエラー・ロギングは、INSERT、UPDATE、MERGEなどのSQL文および複数表挿入に対応しています。これは、長時間かかるバルクDML文を実行する場合に有効です。

Oracle Warehouse Builderでは、セット・ベースのPL/SQLマッピングで使用するデータ・オブジェクトである表、ビュー、マテリアライズド・ビュー、ディメンションおよびキューブに対してエラー・ロギングを実行できます。DMLエラー・ロギングは、Oracle Database 10g リリース2以降で作成されたターゲット・スキーマのみに対応しています。

DMLエラー表について

DMLエラー表には、マッピングを使用してDML操作を実行したときに発生したエラーの詳細が記載されています。表、ビューおよびマテリアライズド・ビューにのみ、エラー表を定義できます。

DMLエラー表名プロパティを使用して、特定のデータ・オブジェクトのDMLエラーを記録します。データ・オブジェクトをターゲットとして使用するマッピングでは、ターゲット・オブジェクトにバインドされている演算子の「DMLエラー表名」プロパティを、DMLエラーが格納されるDMLエラー表の名前に設定します。

DMLエラーを格納する独自の表を作成したり、Oracle Warehouse BuilderによりDMLエラー表を生成できます。ターゲット演算子に「DMLエラー表名」プロパティが設定されているマッピングをデプロイするときに、「DMLエラー表名」プロパティで指定した名前を持つ表がターゲット・スキーマにまだない場合は、作成されます。

DMLエラー表がマッピングとともに作成される場合は、マッピングの削除によりDMLエラー表も削除されます。

ソース・ターゲット・オブジェクト列に加えて、DMLエラー表には表15-1に示す列が含まれています。DMLエラーのログに独自の表を使用している場合、表にこれらの列が含まれていることを確認します。

表15-1 エラー表のDMLエラーのある列

列名

説明

ORA_ERR_NUMBER$

Oracleエラー番号。

ORA_ERR_MESG$

Oracleエラー・メッセージ・テキスト。

ORA_ERR_ROWID$

(更新および削除)エラーのある行の行ID。

ORA_ERR_OPTYPE$

操作のタイプ: 挿入(I)、更新(U)、削除(D)

ORA_ERR_TAG$

ランタイム監査データの手順または詳細な監査ID。これはランタイム・ビューALL_RT_AUDIT_STEP_RUNSのSTEP_ID列です。

DMLエラー・ロギングの有効化

DMLエラー・ロギングがセット・ベースのPL/SQLマッピングに生成されるとき、次の条件を満たしています。

- 表、ビュー、マテリアライズド・ビュー、ディメンションまたはキューブをロードするマッピングでは、ターゲット・オブジェクトを表す演算子に対してDMLエラー表名プロパティが設定されます。

- マッピングを含むモジュールの「PL/SQL生成モード」構成パラメータは、「Oracle10g」、Oracle Database 11gまたは「デフォルト」に設定されます。
その値が「デフォルト」に設定されている場合、このモジュールに関連付けられているロケーションのVersionプロパティが「10.2」、「11.1」または「11.2」に設定されています。

DMLエラー・ロギングおよびETL

DMLエラー・ロギングが有効なデータ・オブジェクトが含まれるマッピングの実行は、次のいずれかの条件で失敗します。

- 生成されたエラーの数が、指定したマッピングのエラーの最大数を超えています。
マッピングのエラー最大数のデフォルト・セットは50です。マッピングのエラーの構成パラメータの最大数を設定して、この値を変更できます。プロジェクト・ナビゲータで、マッピングを右クリックして「構成」を選択します。エラー構成パラメータの最大数で、マッピングの実行が終了する前に生成される可能性のあるエラーの最大数を指定します。

- サポートされていない機能があると、エラーが発生します。
「DMLエラー・ロギングの制限」を参照してください。

DMLエラー表を切り捨て、以前のロード中に生成されたエラーの詳細を削除できます。これは、エラー表の維持管理に便利です。マッピングが実行される前に、エラー表を切り捨てるには、DMLエラー・ロギングが有効なデータ・オブジェクトにバインドされている演算子の「エラー表の切り捨て」プロパティを選択します。

プロパティ「ロールアップ・エラー」および「このプロパティからのエラーのみを選択」は、DMLエラー・ロギングには使用されません。

DMLエラー・ロギングの制限

- DMLエラー・ロギングは、非スカラー・データ型ではサポートされません。

- 各DML文には特定の制限があります。これは、その文に関連するマニュアルに記載されています。

関連項目:
各DML文のDMLエラー・ロギングの制限については、Oracle Database SQL言語リファレンスを参照してください。

- データ・オブジェクトに定義したDMLエラー表がある場合、コントロール・センター・マネージャの「アップグレード」オプションを使用してデータ・オブジェクトをアップグレードすることはできません。

- エラー・ロギングの必要性に応じて、マッピングに表演算子を構成し、APPENDまたはNOAPPENDヒントを使用できます。たとえば、ダイレクト・パス・インサートは、一意キー違反のエラー・ロギングには対応していません。一意キー違反を記録するには、NOAPPENDヒントを使用します。

ETLプロセスのトラブルシューティング

この項では、ETLの実行中に発生するエラーのトラブルシューティングのヒントを説明します。

ハイブリッド・マップの実行時のORA-04063

PL/SQL OracleターゲットCTを含むハイブリッド・マッピングの実行時に次のエラーが発生する場合があります。

ORA-04063: package body "DEMO.ORACLE_SQL_POWER_MTI" has errors

これは、マッピングを実装するために生成されたPL/SQLパッケージであるORACLE_SQL_POWER_MTIにコンパイル・エラーがあることを示しています。

このエラーの原因を特定するには、SQL*Plusを起動して、ターゲット・ユーザーとして接続し、次のコマンドを実行します。

ALTER PACKAGE ORACLE_SQL_POWER_MTI COMPILE BODY;
SHOW ERRORS;

たとえば、ソース表またはビューに対する権限がターゲット・ユーザーに付与されていない場合は、表が見つからないというエラーが発生する可能性があります。すべてのエラーを解決して、パッケージを再コンパイルし、ハイブリッド・マッピングを実行します。

エージェント・ログ・ファイル

エージェント・ログ・ファイルを使用すると、コード・テンプレート・マッピングのデプロイメント・エラーおよび実行エラーをデバッグできます。Windowsでは、デザイン・センター・コンソールにエージェント・ログが表示されます。

次は、UNIXのエージェント・ログです。

- OWB_HOME/owb/bin/adminにあるjrt.logファイルには、エージェント・プロセスおよび監査設定エラーからの出力が格納されます。

- コード・テンプレート・マッピングの実行ログは、OWB_HOME/owb/jrt/log/owbフォルダに保存されます。それぞれのジョブ実行は、ジョブ実行の監査証跡を使用してXMLログ・ファイルを含む別のディレクトリで表されます。

コントロール・センター・エージェント(CCA)の起動時に発生するエラー

コントロール・センター・エージェントの起動時に次のエラーが発生する場合があります。

Error initializing server: Application: system is in failed state as initialization failed.

このエラーを解決するには、フォルダOWB_HOME/owb/jrt/applicationsのサブディレクトリをすべて削除してからコントロール・センター・エージェントを起動します。

セキュアWebサイトからのWebサービス実行時のエラー

セキュアなWebサイトからWebサービスを実行するときに、次のエラーが発生する場合があります。

SSLエラー: 要求されたターゲットへの有効な認証パスが見つかりません。

このエラーを解消するには、次の手順を実行します。

1. OC4JサーバーからSSLチャンネルに使用する証明書をエクスポートします。これは、$J2EE_HOME/configディレクトリにあります。
$JAVA_HOME/bin/keytool -export -storepass welcome -file server.cer -keystore OWB_HOME.owb/jrt/config/serverkeystore.jks

server.cerは証明書のエクスポート先となるファイル、serverkeystore.jksはOracle Warehouse Builderの組込みOC4Jサーバーで使用されるキーストアです。Oracle Warehouse Builderの組込みサーバー以外のOC4Jインスタンスを使用する場合、serverkeystore.jksは、OC4JでSSLを設定したときに作成したキーストア・ファイルです。

2. 手順1でエクスポートしたserver.cerを、OC4Jサーバー側の$JAVA_HOME/jre/lib/securityディレクトリにコピーします。

3. OC4Jサーバー側のjava信頼済認証ストアに証明書をインポートします。
$JAVA_HOME/bin/keytool -import -v -trustcacerts -file

$JAVA_HOME/jre/lib/security/server.cer -keystore

$JAVA_HOME/jre/lib/security/cacerts

ここで、cacertsは信頼できる証明書の格納に使用するファイルで、server.cerは手順2でコピーしたファイルです。

cacertsのパスワードの入力を求められます。

ターゲット・スキーマへのマッピングのデプロイ時のREP-01012

ターゲット・スキーマへのマッピングのデプロイ時に、次のエラーが発生する場合があります。

REP-01012: Cannot deploy PL/SQL maps to the target schema because it is not owned by the Control Center

原因

このエラーは、他のコントロール・センターを使用して以前オブジェクトをデプロイしたターゲット・スキーマにマッピングをデプロイしようとする場合に発生します。

ターゲット・スキーマに関連付けることができるのは1つのコントロール・センターのみです。このターゲット・スキーマへのデプロイメントに関する監査データはコントロール・センター・リポジトリの監査表に書き込まれます。コントロール・センターでは、監査データの書き込み先のコントロール・センターに関する情報を提供するターゲット・スキーマに様々なオブジェクト(主にシノニム)を作成します。他のコントロール・センターを使用して同一のターゲット・スキーマにマッピングをデプロイしようとする場合、REP-01012エラーが発生します。

注意:
ローカル・コントロール・センターを使用して、表、ビュー、ディメンションなどのデータ・オブジェクトをリモート・ターゲットにデプロイできます。これは、Oracle Warehouse Builderがこれらのオブジェクトの監査情報を管理しないためです。

ただし、Oracle Warehouse Builderでは、1つのターゲット・スキーマに複数のマッピングをデプロイできます。

通常、デプロイメントのためにコントロール・センターを使用する場合、ターゲット・スキーマを含むデータベースにインストールされているコントロール・センターを使用してターゲット・スキーマにマッピングをデプロイします。ターゲット・スキーマを含むデータベース以外のデータベースにインストールされているコントロール・センターを使用してターゲット・スキーマにマッピングをデプロイできます。ロケーション・ナビゲータで、ターゲット・スキーマを含むリモート・ホストにインストールされるコントロール・センターを指し示すコントロール・センターを作成します。このため、リモート・コントロール・センターにマッピングをデプロイできます。

解決策

1. 元のコントロール・センターを使用してターゲット・スキーマにデプロイされたマッピングを削除します。

2. 元のコントロール・センターからロケーションの登録を解除します。

3. ターゲット・スキーマとターゲット・スキーマのコントロール・センターとの間の関連付けを提供するシノニムを削除します。

4. 新しいコントロール・センターを使用してロケーションを登録します。

5. 新しいコントロール・センターを使用してマッピングをデプロイします。

ロケーションを削除できない

ロケーションを削除する前に、次の操作を実行します。

- 他のロケーションを使用するロケーションを使用するすべてのモジュールを再構成します。
モジュールを編集して、モジュールの可能性のあるデータ・ロケーションのセットからロケーションを削除します。

- ロケーションを登録解除します。

OWBSYSユーザーとしてログインし、次の問合せを実行して、ロケーションがコントロール・センターにまだ関連付けられているかどうかを判定します。

SELECT s.name owner, r.name referenced, c.name connector,
c.REGISTERED, c.STRONGTYPENAME
FROM cmplogicalconnector_v c, cmplocation_v s, cmplocation_v r
WHERE c.owninglocation = s.elementid AND c.referencedlocation = r.elementid;

16 Oracle Warehouse BuilderでのWebサービスの作成と消費

Webサービスは、エンタープライズ・アプリケーションを統合するための広く使用されているサービス指向アーキテクチャ(SOA)アプローチの基礎です。Webサービスは、業界標準のメカニズムを使用し、プロバイダのプラットフォーム、ロケーション、またはサービス実装に依存することなく、リモート・コンテンツおよびアプリケーション機能に簡単にアクセスできます。

Oracle Warehouse BuilderベースのソリューションはSOAベースのアーキテクチャに完全に参加できます。特定のOracle Warehouse BuilderオブジェクトをWebサービスとして公開することができるため、他の開発者が業界標準を使用してこれらのオブジェクトで定義した機能を活用できます。

この章の内容は次のとおりです。

- Webサービスの概要

- WebサービスとしてのOracle Warehouse Builderオブジェクトの公開

- URLに基づくWebサービスの作成

- Webサービスの実行

- プロセス・フローでのアクティビティとしてのWebサービスの使用

- マッピングでのWebサービスの使用

- Secure Sockets Layer(SSL)を使用してのWebサービスへの安全なアクセス

- 事例: データ統合のためのWebサービスの使用

Webサービスの概要

Webサービスとは、ネットワークを介してコンピューティング・リソースまたはサービスにアクセスするための標準的でベンダー非依存の方法を提供するように設計されたソフトウェア・システムです。これは、オープンなXMLベースの標準規格およびトランスポート・プロトコルを使用して、コール側クライアントとデータを交換します。

Webサービスは、通常、次から構成されます。

- Webサービスの公開されているインタフェース定義。クライアントがサービスに送信できるメッセージとWebサービスがコール元に返すレスポンスを説明しています。

- インタフェースで公開される機能を提供する実装。

Webサービスのコール元はプログラミング言語、アプリケーション・サーバー技術またはデータベースの選択など基盤となる実装の詳細に依存しません。公開されたインタフェースでは、コール元がWebサービスを消費するために必要なすべての情報を説明します。

実装の違いはコール元に公開されないため、Webサービスでは異なる技術ベンダーのソフトウェア・コンポーネントを簡単に統合できます。Webサービスに基づくソリューションの構築アプローチは一般にサービス指向アーキテクチャ(SOA)と呼ばれます。

Webサービスを構築するには複数の共通のアプローチがありますが、エンタープライズ・コンピューティングでは、Webサービスは、通常、XMLベースの標準Simple Object Access Protocol(SOAP)およびWeb Services Description Language(WSDL)を使用してやり取りします。

Simple Object Access Protocol(SOAP)

Simple Object Access Protocol(SOAP)は、コンピュータ・ネットワーク上でXMLベースのメッセージを交換するためのプロトコルであり、通常はHTTPを使用します。SOAPはWebサービス・スタックの基本レイヤーであり、抽象度の高いレイヤーの構築を可能にする基本的なメッセージング・フレームワークを提供します。これを使用して、Webサービス・リクエストの送信およびWebサービス・レスポンスの受信を行います。

Web Services Description Language(WSDL)

Web Services Description Language (WSDL)は、Webサービスを使用して通信する方法に関する、XMLベースのサービスの説明です。次の情報が含まれています。

- Webサービスの目的とロケーション(リモート・コンピュータ上)

- Webサービスで実行できる操作

- 各操作の入力パラメータおよび戻り値

- Webサービスとの対話に必要なプロトコル・バインディングおよびメッセージ・フォーマット

サポートされている操作およびメッセージの概要が説明され、その後に、具体的なネットワーク・プロトコルとメッセージ・フォーマットに関連付けられています。

Webサービスの利点

Webサービスでは次の利点を提供します。

- サービス指向アーキテクチャ(SOA)のサポート

- アプリケーション機能の機能をアプリケーション開発者どうしで共有できる

- データ統合プロセスを呼び出すサービスを構築できる

- 他のユーザーが作成したアプリケーション・ロジックを再利用できるため、アプリケーションを構築できる

Oracle Warehouse BuilderでのWebサービスについて

Oracle Warehouse BuilderではSOAP標準およびWSDL標準を使用してWebサービスの統合がサポートされるため、SOAベースのエンタープライズ・アーキテクチャに完全に統合できます。Oracle Warehouse Builderに慣れている開発者は、既存のツール、コードおよびスキル・セットを使用してデータ統合設計でWebサービスベースのソリューションを作成して、活用できます。たとえば、Oracle BPELプロセス・マネージャなどの製品に基づくより大きなソリューションにETL設計を統合できます。

関連項目:
Webサービスの概念の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

Oracle Warehouse Builderでは次のWebサービス関連の機能がサポートされます。

- 他のシステムが起動または消費できるSOAPベースのWebサービスとしてOracle Warehouse Builder ETLジョブを公開。
「Webサービスの公開について」を参照してください。

- Oracle Warehouse Builder ETL設計以外で作成された機能を公開するWebサービスの呼出し。
「Webサービスの消費について」を参照してください。

Oracle Warehouse Builderベースの設計をSOAベースのソリューションに完全に参加させることができる2つの機能領域があります。

Webサービスの定義について

Webサービスはデザイン・センターのアプリケーション・サーバー・モジュール内に定義されます。アプリケーション・サーバー・モジュールは、Webサービスのデプロイ先となるロケーションに関連付けられます。これには、WebサービスおよびWebサービス・パッケージが格納されます。Webサービス・パッケージは一連のWebサービスを含んでおり、主に関連するWebサービスをグループ化するために使用されます。

既存のOracle Warehouse Builderオブジェクトに基づいてWebサービスを定義するには、プロジェクト・ナビゲータの「アプリケーション・サーバー」ノードを使用します。グローバル・ナビゲータで公開アプリケーション・サーバー・ノードを使用して、公開Webサービスを定義します。

Webサービスの公開について

Oracle Warehouse Builderを使用して設計したETLプロセスを、他のアプリケーション開発者がWebサービスの形式で使用できるようにするプロセスを、Webサービスの公開と呼びます。Webサービスを公開するには、Webサービスに関する情報を含むWSDLファイルを作成し、このWSDLファイルをリモート・アクセスで使用できるようにする必要があります。

Oracle Warehouse Builderを使用してWebサービスを公開する場合、機能をWebサービスとして公開するオブジェクトを選択する必要があります。コード・ジェネレータでは必要なWSDLファイルが生成されます。

関連項目:
「WebサービスとしてのOracle Warehouse Builderオブジェクトの公開」

Webサービスの消費について

他のアプリケーション開発者がETL設計でリモートに使用できるWebサービスを使用するプロセスをWebサービスの消費といいます。Webサービスを消費するには、WebサービスのWSDLファイルのロケーションを把握している必要があります。その後、必要なタスクを実行するWebサービスへのリクエストを作成できます。

ETL設計でリモートWebサービスを消費する前に、Oracle Warehouse BuilderにWebサービスをインポートする必要があります。

関連項目:

- マッピングでのWebサービスの使用

- プロセス・フローでのアクティビティとしてのWebサービスの使用

パブリックWebサービスについて

公開Webサービスは、定義されているワークスペース全体からアクセス可能で、特定のプロジェクトに限定されることはありません。公開Webサービスはグローバル・ナビゲータの公開アプリケーション・サーバー・ノードで作成されます。

公開Webサービスは、Oracle Warehouse BuilderオブジェクトではなくURLのみに基づくことができます。公開Webサービスを作成すると、既存のWebサービスに基づくWebサービスを作成できます。

関連項目:
公開Webサービスの作成の詳細は、「URLに基づくWebサービスの作成」を参照してください。

WebサービスとしてのOracle Warehouse Builderオブジェクトの公開

特定のOracle Warehouse Builderオブジェクトを使用して定義されたETLプロセスは、これらのオブジェクトをWebサービスとして公開すると、他のアプリケーション開発者が使用できるようになります。Oracle Warehouse BuilderオブジェクトをWebサービスとして公開すると、他の開発者はこのWebサービスにリモートでアクセスし、このオブジェクトに定義された機能を使用できます。Webサービスはオープンな業界標準のメカニズムを使用しているので、開発者がOracle Warehouse Builderをインストールしたり、Oracle Warehouse Builderの仕組みに精通している必要はありません。

次のOracle Warehouse Builderオブジェクトに基づいてWebサービスを作成できます。

- コード・テンプレート(CT)マッピングを含むマッピング

- プロセス・フロー

- 変換

- データ監査

- チェンジ・データ・キャプチャ用の表またはモジュール

Oracle Warehouse Builderオブジェクトに基づいてWebサービスを作成する方法

Oracle Warehouse Builderオブジェクトに基づいてWebサービスを作成するには、次のいずれかの方法を使用します。

- Oracle Warehouse BuilderオブジェクトをWebサービスとして公開します。
「WebサービスとしてOracle Warehouse Builderオブジェクトを公開する手順」を参照してください。

- Webサービスの作成ウィザードを使用してWebサービスを定義します。次に、Webサービスを生成し、デプロイします。
Webサービスの作成の詳細は、「Oracle Warehouse Builderオブジェクトに基づいてWebサービスを作成する手順」を参照してください。

「URLに基づくWebサービスの公開手順」の説明に従ってURLに基づくWebサービスを公開することもできます。

注意:
データ・ウェアハウスの存続期間中に、Webサービスが基づいているオブジェクトの定義が変更する可能性があります。これらの変更をWebサービスに伝搬するには、「Webサービスのデプロイ」に説明する手順を使用してWebサービスを再デプロイします。
プロセス・フローで使用するWebサービスを修正し、再デプロイする場合は、ensure that you synchronize the Web service as described in 「Webサービスのアクティビティと参照Webサービスとの同期」.

Webサービスでサポートされているバージョン

表16-1では、Oracle Warehouse Builderがサポートする標準および製品のバージョンを示します。

表16-1 Webサービスの標準および製品のサポートされているバージョン

標準または製品

バージョン

WSDL

1.1

SOAP

1.1, 1.2

OC4Jスタンドアロン

10g以降

Oracle Application Server

10g以降

WebサービスとしてOracle Warehouse Builderオブジェクトを公開する手順

プロジェクト・ナビゲータからOracle Warehouse BuilderオブジェクトをWebサービスとして簡単に公開できます。Webサービスとして公開するオブジェクト(マッピング、プロセス・フロー、データ監査または変換)を右クリックし、「Webサービスとして公開」を選択します。既存のアプリケーション・サーバー・モジュールおよびWebサービス・パッケージを含むアプリケーション・サーバーまたはWebサービス・パッケージの選択ダイアログ・ボックスが表示されます。Webサービスとして公開するアプリケーション・サーバー・モジュールまたはWebサービス・パッケージを選択します。アプリケーション・サーバー・モジュールまたはWebサービス・パッケージの下にある選択したオブジェクトに基づいてWebサービスが作成され、Webサービスが公開されます(アプリケーション・サーバーにWebサービスがデプロイされます)。

関連項目:
WebサービスとしてOracle Warehouse Builderオブジェクトを公開する例は、「例: Webサービスとしてのマッピングの公開」を参照してください。

Oracle Warehouse Builderオブジェクトに基づいてWebサービスを作成する手順

次の手順を使用して、Oracle Warehouse Builderオブジェクトに基づくWebサービスを公開します。

1. アプリケーション・サーバー・モジュールまたはそれに関連付けられるロケーションをまだ作成していない場合は、プロジェクト・ナビゲータでそれらを作成します。アプリケーション・サーバー・モジュールはWebサービスおよびWebサービス・パッケージのセットのコンテナです。

関連項目:
アプリケーション・サーバー・モジュールの作成の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

2. 「Oracle Warehouse Builderオブジェクトに基づいてWebサービスを作成する方法」の説明に従ってWebサービスを作成します。

3. 「Webサービスの検証」の説明に従ってWebサービスを検証します。

4. 「Webサービスの生成」の説明に従ってWebサービスを生成します。

5. 「Webサービスのデプロイ」の説明に従ってWebサービスをデプロイします。

「Webサービスの実行」の説明に従ってWebサービスを実行することでWebサービスで定義されている機能を使用できます。

URLに基づくWebサービスの公開手順

次のURLオブジェクトに基づいてWebサービスを公開する手順を使用します。

1. まだ作成していない場合は、グローバル・ナビゲータで、「パブリック・アプリケーション・サーバー」ノードおよび関連ロケーションで公開アプリケーション・サーバー・モジュールを作成します。公開アプリケーション・サーバー・モジュールはWebサービスのセットのコンテナです。

関連項目:
公開アプリケーション・サーバー・モジュールの作成の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

2. 「URLに基づくWebサービスの作成」の説明に従ってWebサービスを作成します。

3. 「Webサービスの検証」の説明に従ってWebサービスを検証します。

4. 「Webサービスの生成」の説明に従ってWebサービスを生成します。

5. 「Webサービスのデプロイ」の説明に従ってWebサービスをデプロイします。

サービス・パッケージの作成

Webサービス・パッケージはWebサービスのセットのコンテナです。Webサービス・パッケージを使用して、関連するWebサービスのセットをグループ化します。Webサービス・パッケージには関連付けられているロケーションがないため、このパッケージが含むアプリケーション・サーバー・モジュールの同一のロケーション詳細を使用します。

グローバル・ナビゲータではなくプロジェクト・ナビゲータでのみ、Webサービス・パッケージを作成できます。

Webサービス・パッケージを作成する手順は、次のとおりです。

1. Webサービス・パッケージを作成するプロジェクト・ノードを開きます。

2. 作成していない場合は、Webサービス・パッケージを含むアプリケーション・サーバー・モジュールを作成します。

関連項目:
アプリケーション・サーバー・モジュールの作成の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

3. Webサービス・パッケージを作成するアプリケーション・サーバー・ノードを開きます。Webサービス・パッケージを右クリックし、新規Webサービス・パッケージを選択します。
Webサービス・パッケージの作成ダイアログ・ボックスが表示されます。

4. Webサービス・パッケージの作成ダイアログ・ボックスに次の詳細を入力します。

- 名前: Webサービス・パッケージの名前。

- 説明: Webサービス・パッケージの説明(オプション)。

Oracle Warehouse Builderオブジェクトに基づいてWebサービスを作成する方法

プロジェクト・ナビゲータを使用して、Oracle Warehouse Builderオブジェクトに基づくWebサービスを作成します。

Oracle Warehouse Builderオブジェクトに基づいてWebサービスを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、プロジェクト・ノードを開き、Webサービスを作成するアプリケーション・サーバー・ノードを開きます。

2. 「Webサービス」ノードを右クリックして「新規Webサービス」を選択します。
Webサービス・パッケージでWebサービスを作成するには、プロジェクト・ナビゲータで、Webサービス・パッケージを右クリックして「新規Webサービス」を選択します。

Webサービスの作成ウィザードが表示されます。

3. ウィザードのようこそページで「次へ」をクリックします。

4. 「名前と説明」ページで、次の詳細を入力し、「Webサービスのネーミング」の説明に従って、「次へ」をクリックします。

5. 「実装」ページで、「Webサービス実装の定義」の説明に従って詳細を入力し、「次へ」をクリックします。

6. 仕様の確認ページで、ウィザードに入力した詳細を確認します。値を変更するには、「戻る」をクリックします。Webサービスの定義を完了するには、「終了」をクリックします。
「ソースの表示」をクリックして、Oracle Warehouse Builderで生成されるWSDLコードを表示し、このWebサービスを実装します。

Webサービスが作成され、ナビゲータ・ツリーに追加されます。

また、Webサービスを作成するうえで基づくオブジェクトを右クリックしてWebサービスの作成を選択することで、Webサービスをすばやく作成できます。アプリケーション・サーバーまたはWebサービス・パッケージの選択ダイアログ・ボックスが表示されます。選択して「OK」をクリックします。選択したアプリケーション・サーバー・ノードの下にWebサービスが作成され、追加されます。

例: WebサービスのWSDLファイル

次は、Webサービスで作成されるWSDLファイルの例です。

<definitions
name="HttpSoap11"
targetNamespace="http://dbWebService.packaging.sdk.jrt.wh.oracle/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://dbWebService.packaging.sdk.jrt.wh.oracle/"
xmlns:mime="http://http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>
<types>
</types>
<message name="FUNCTION_TARGETInput">
<part name="P1" type="xsd:string"/>
<part name="P2" type="xsd:string"/>
</message>
...
...
...

Webサービスのネーミング

名前と説明ページに、Webサービスの説明を入力します。このページでは、次の情報を入力します。

名前: Webサービスの名前。この名前は、Oracle Warehouse Builderのネーミング標準に準拠している必要があります。

説明: Webサービスの説明(オプション)。

Webサービス実装の定義

実装ページを使用して、WebサービスのベースとなるOracle Warehouse Builderオブジェクトを選択します。

次のオプションのいずれかを選択して、Webサービスを作成します。

- マッピングからの作成

- プロセス・フローからの作成

- 変換からの作成

- データ監査からの作成

- チェンジ・データ・キャプチャ用の表またはモジュールからの作成

選択するオプションに基づいて、オプションの下にあるテキスト領域にWebサービスに基づくことができる使用可能なオブジェクトを表示します。このテキスト領域からOracle Warehouse Builderオブジェクトを選択します。

CTマッピングに基づくWebサービスを作成するときは、Webサービスに関連付けられているエージェントがコード・テンプレート・マッピングに関連付けられているエージェントと異なる場合、検証中に警告が表示されます。この場合でも、そのWebサービスを生成、デプロイおよび実行できます。ただし、実行が失敗する場合があります。

CTマッピングに基づくWebサービスを作成する場合は、Webサービスではコード・テンプレート・マッピングと同じエージェントを使用することをお薦めします。

Webサービスの検証

Webサービスを検証すると、メタデータ定義および構成パラメータが確認され、Oracle Warehouse Builderによって定義されたルールに応じてこれらが有効であるかどうかが確認されます。Webサービスを検証すると、Webサービスに関連付けられているWSDLファイルはW3C WSDLスキーマに対して検証されます。検証が成功すると、Webサービスをデプロイコードを生成できます。

Webサービスを検証するには、デザイン・センターでWebサービスを選択し、ツールバーの「検証」をクリックします。または、デザイン・センターでWebサービスを右クリックし、「検証」をクリックします。

また、アプリケーション・サーバー・モジュールまたはWebサービス・パッケージを検証することもできます。この操作により、アプリケーション・サーバー・モジュールまたはWebサービス・パッケージに含まれるすべてのWebサービスが検証されます。

Webサービスの生成

Webサービスを生成することで、OC4JまたはOracle Application Serverロケーションに関連付けられているWebサービスのデプロイに必要なコードが作成されます。Webサービスを生成すると、各Webサービスに対応するWSDLファイルが作成されます。Oracle Warehouse Builderオブジェクトに基づくWebサービスでは、.earファイルも生成されます。Webサービス・パッケージでは、Webサービスごとに.earファイルが1つ生成されます。

生成されたファイルは、デザイン・クライアントがインストールされているファイル・システムのデフォルトのロケーションに格納されます。これらの生成済ファイルを表示または編集できません。

Webサービスを生成するには、Webサービスを選択し、ツールバーの「生成」をクリックします。または、Webサービスを右クリックして「生成」を選択します。また、アプリケーション・サーバー・モジュールまたはWebサービス・パッケージに含まれるすべてのWebサービスに対して同時にコードを生成するためのアプリケーション・サーバー・モジュールまたはWebサービス・パッケージも生成できます。

注意:
パブリックWebサービスを生成することはできません。ただし、公開Webサービスは検証きません。

Webサービスのデプロイ

Webサービスのデプロイでは生成時に作成されたスクリプトを使用して、Webサービスを含むアプリケーション・サーバー・モジュールに関連付けられているエージェントのロケーションにWebサービスを作成します。

Webサービスをデプロイすると、そのWebサービスに対応する.earファイルが、OWB_HOME/owb/jrt/applicationsディレクトリに配置されます。このディレクトリには、Oracle Warehouse Builderの埋込みOC4Jインスタンスにデプロイされた各Webサービス用の個別フォルダも含まれています。

Webサービスをデプロイするには、コントロール・センター・エージェント(CCA)およびOC4Jインスタンスが必要です。

Webサービスは次にデプロイできます。

- OC4Jスタンドアロン・インスタンス
Oracle Warehouse Builderをインストールすると、同時にOC4Jインスタンスがインストールされます。このOC4JインスタンスまたはOracle Application Serverインスタンスの一部であるOC4JインスタンスにWebサービスをデプロイできます。

- Oracle Application Server
WebサービスをOracle Application Serverにデプロイできます。実行する前に、このOracle Application Serverインスタンスを指し示すURIロケーションを作成します。Oracle Application Serverインスタンスに関連するロケーションの作成の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

Webサービスはデザイン・センターかコントロール・センター・マネージャからデプロイできます。

注意:
パブリックWebサービスをデプロイすることはできません。

Webサービスのデプロイの前提条件

Oracle Warehouse Builderオブジェクトに基づいてWebサービスをデプロイする前に、必ず次を実行します。

- Webサービスが基づくOracle Warehouse Builderオブジェクトをデプロイします。

- コントロール・センター・エージェントを起動します。

関連項目:
コントロール・センター・エージェントの起動の詳細は、「コントロール・センター・エージェント(CCA)の起動」を参照してください。

コントロール・センター・マネージャを使用してのWebサービスのデプロイ

デザイン・センターで、「ツール」メニューから「コントロール・センター・マネージャ」を選択し、コントロール・センターを開きます。「コントロール・センター・マネージャ」で、Webサービスを含むロケーションを表すノードを開きます。Webサービスを選択し、「デフォルト・アクション」を「作成」に設定し、ツールバーの「デプロイ」をクリックします。

デザイン・センターを使用してのWebサービスのデプロイ

プロジェクト・ナビゲータで、Webサービスを右クリックして「デプロイ」を選択します。または、Webサービスを選択して、ツールバーの「デプロイ」をクリックします。

URLに基づくWebサービスの作成

Oracle Warehouse Builderを使用して、URLから公開Webサービスを作成できます。公開Webサービスはグローバル・ナビゲータの公開アプリケーション・サーバー・ノードで定義する公開Webサービスです。公開Webサービスは、主にETLオブジェクトのWebサービスとして使用できる既存の機能を活用するために使用します。ETL設計で既存のWebサービス(ローカルまたはリモート)を使用する前に、Webサービスの機能を表すOracle Warehouse Builderの公開Webサービスを作成する必要があります。

URLからWebサービスを作成するには、有効なWSDLファイルを指すURLが必要です。URLはローカル・ファイル・システムまたはリモート・ロケーションを指すことができます。WSDLファイルがリモート・コンピュータ上にある場合、リモート・ロケーションへのアクセスに使用するプロキシ設定を指定する必要があります。

外部URLに基づくWebサービス作成のためのプロキシ設定

外部URLに基づくWebサービスを作成する場合、外部URLへのアクセスに必要なプロキシ設定を指定する必要があります。プロキシを設定するには、次の手順を実行します。

1. デザイン・センターで、「ツール」メニューから「プリファレンス」を選択します。
「プリファレンス」ダイアログ・ボックスが表示されます。

2. 左側にあるナビゲータ・ツリーで、Webブラウザおよびプロキシを選択します。
Webブラウザおよびプロキシプリファレンスが「プリファレンス」ダイアログ・ボックスの右側に表示されます。

3. HTTPプロキシ・サーバーの使用を選択して、次のフィールドの値を指定します。

- ホスト名: プロキシ・サーバー名を表します。

- ポート番号: プロキシ・サーバーのポート番号を表します。

- 例外: バイパスされるプロキシ・サーバーのアドレスを表します。アスタリスク(*)ワイルドカードとして使用し、縦棒(|)を使用して複数のエントリを区切ります。

4. プロキシ・サーバーで認証が必要な場合は、プロキシ・サーバーに認証が必要を選択します。「ユーザー名」フィールドおよび「パスワード」フィールドを使用して資格証明を入力します。

5. プロキシのテストをクリックし、プロキシ設定をテストします。

URLに基づくWebサービスの作成手順

次のURLに基づいてWebサービスを作成する手順を使用します。

1. デザイン・センターのグローバル・ナビゲータで、Webサービスを作成するアプリケーション・サーバー・ノードを開きます。

2. アプリケーション・サーバー・ノードを右クリックして「新規Webサービス」を選択します。
Webサービスの作成ウィザードが表示されます。

3. ウィザードのようこそページで「次へ」をクリックします。

4. 「名前と説明」ページで、次の詳細を入力し、「公開Webサービスのネーミングと説明」の説明に従って、「次へ」をクリックします。

5. 仕様の確認ページで、ウィザードに入力した詳細を確認します。値を変更するには、「戻る」をクリックします。Webサービスの定義を完了するには、「終了」をクリックします。
「ソースの表示」をクリックして、このWebサービスの実装に使用されるWSDLコードを表示します。

Webサービスが作成され、ナビゲータ・ツリーに追加されます。

公開Webサービスのネーミングと説明

名前と説明ページを使用して、Webサービスの基礎として機能とするWSDLファイルのロケーションを指定します。このページには、次のフィールドが含まれます。

- 名前: Webサービス名を示します。名前は自動的にWSDLファイルから導出され、必要に応じて編集できます。

- WSDLファイルのロケーション: 「参照」をクリックし、WSDLファイルへのパスを指定します。URLアドレスにはネットワークを介してアクセス可能なローカル・ファイルまたはURLアドレスのパスを使用できます。WSDLファイルには既存のWebサービスの定義が含まれます。
このプロパティは、グローバル・ナビゲータを使用してURLに基づくWebサービスを作成する場合にのみ表示されます。

- 説明: Webサービスの説明(オプション)。

Webサービスの実行

Webサービスの実行により、Webサービスで定義している機能を実行できます。Webサービスは、コントロール・センター・マネージャまたはWebブラウザから実行できます。

Webサービスの実行の前提条件

Webサービスを実行するには、OWB_J2EE_EXECUTORロールを付与されたJ2EEユーザーを使用する必要があります。Oracle Warehouse Builderの埋込みOC4Jサーバーを使用する場合、このロールは作成済です。

注意:
CTマッピングを含むWebサービスで、Webサービスの実行に複数日かかる可能性がある場合は、ジョブをさらに細かく分けることをお薦めします。OC4Jのデフォルトのトランザクション・タイムアウトは1日に設定されています。ジョブの実行時間が1日を超えると、その実行はタイムアウトとなり、予期しないエラーが発生します。

次のいずれかの方法で、J2EEユーザーにこのロールを割り当てます。

- リポジトリ・アシスタントのJ2EEユーザー・アカウントの管理オプション

- デザイン・センターの「ツール」メニューにあるJ2EEユーザーの管理オプション

関連項目:

- J2EEロールの詳細は、「Secure Sockets Layer(SSL)を使用してのWebサービスへの安全なアクセス」 を参照してください。

- J2EEユーザーの管理の詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

コントロール・センター・マネージャを使用してのWebサービスの実行

コントロール・センター・マネージャを使用してWebサービスを実行する手順は、次のとおりです。

1. 「コントロール・センター・マネージャ」で、Webサービスを含むロケーション・ノードを開き、Webサービスを選択して、ツールバーで「開始」をクリックします。または、Webサービスを右クリックして「開始」を選択します。
「操作の選択」ダイアログ・ボックスが表示されます。「操作」リストにWebサービスを使用して実行できる操作のリストがあります。

Webサービスに含まれる操作が1つのみの場合は、「操作の選択」ダイアログ・ボックスは表示されません。

2. 「操作」リストで実行する操作を選択し、「OK」をクリックします。
Webサービスの実行パラメータを提供するために使用する「入力パラメータ」ダイアログ・ボックスが表示されます。

3. 「入力パラメータ」ダイアログ・ボックスで、表示するパラメータの値を入力します。
リストされるパラメータは、Webサービスが基づくオブジェクトのタイプによって異なります。たとえば、PL/SQLマッピングに基づくWebサービス、プロセス・フローおよびデータ監査にはCUSTOM_PARAMS and SYSTEM_PARAMSがあります。コードCTマッピングに基づくWebサービスにはパラメータOWB_PARAMSが含まれます。

- CUSTOM_PARAMS: Webサービスで使用するマッピングの入力パラメータの値を表します。
たとえば、マッピングに基づくWebサービスを作成し、マッピングに入力パラメータが必要な場合、CUSTOM_PARAMSフィールドを使用してこれらの入力パラメータの値を入力します。複数の値はコンマを使用して区切ります。

- SYSTEM_PARAMS: バルク・サイズ、「監査レベル」、オペレーティング・モード、「エラーの最大数」および「コミット頻度」などのマッピング実行パラメータがある場合に、その値を表します。複数のシステム・パラメータがある場合は、カンマを使用してパラメータの間を区切ります。
次に例をあげます。OPERATING_MODE=SET_BASED,AUDIT_LEVEL=NONE

- OWB_PARAMS: Webサービスが基づくCTマッピングのパラメータを表します。

4. 「OK」をクリックします。

Webサービスが実行され、デザイン・センターの新しいログ・ウィンドウに実行結果が表示されます。表示される詳細には、選択、挿入、更新または削除された行の数と発生したエラーまたは警告の数が含まれます。

ブラウザを使用したWebサービスの実行

任意のブラウザを使用して、Oracle Warehouse Builderの埋込みOC4Jサーバーまたはその他のOC4JサーバーにデプロイされたWebサービスを実行します。

Oracle Warehouse Builderの埋込みOC4Jサーバーを使用してWebサービスにアクセスする場合は、Webサービスのセキュリティに関するすべての前提条件が満たされます。Webサービスを実行するには、基本認証を提供する必要があります。

ブラウザを使用してWebサービスを実行する手順は、次のとおりです。

1. 「 Webサービスの実行の前提条件」の説明に従って前提条件が満たされていることを確認します。

2. (オプション) Oracle Warehouse Builderとともにインストールされたもの以外のOC4JサーバーにデプロイされたWebサービスを実行するときには、「外部OC4Jサーバーでのセキュアなアクセスの設定」に記載された手順を実行してください。

注意:
Oracle Warehouse Builderの埋込みOC4JサーバーにデプロイされていないWebサービスを実行すると、エラーが発生する場合があります。これらのエラーの解決の詳細は、「セキュアWebサイトからのWebサービス実行時のエラー」を参照してください。

3. Webブラウザを開き、アドレス・バーに次のURLを指定して、[Enter]キーを押します。
http://host_name:8888/jndi_name/webservice

Webサービスを安全に実行するには、次のURLを使用します。

https://host_name:4443/jndi_name/webservice

Webサービスのエンドポイント・ページが表示されます。Oracle Warehouse Builderが提供するAGENTWEBSERVICE Webサービスを使用する場合、AgentWebServiceエンドポイント・ページが表示されます。

ここで、host_nameはWebサービスを格納するコンピュータのホスト名を表し、jndi_nameはWebサービスで生成される.earファイルの名前です。Oracle Warehouse Builderと一緒にインストールされるAGENTWEBSERVICEを使用してWebサービスを実行するには、jndi_nameとしてjrtを使用します。

Webサービスで使用するデフォルトのポート番号は8888および4443です。別のポート番号を使用できます。

4. 「ブラウザを使用したWebサービスに対する操作の実行」に示す手順に従ってWebサービスを実行します。

ブラウザを使用したWebサービスに対する操作の実行

グローバル・ナビゲータのAGENT_SERVERノードの下にあるAGENTWEBSERVICE Webサービスは、WebサービスとしてOracle Warehouse BuilderとともにインストールされたAGENTサーバーを公開する埋込みWebサービスです。この項で示される手順は、AGENTWEBSERVICEに対応するインタフェースであるAgentWebServiceエンドポイント・ページを使用して実行します。このWebサービスはコントロール・センター・エージェント(CCA)の起動時に自動的に起動されます。ただし、他のWebサービスのエンドポイントを使用してもWebサービスで定義する操作を実行できます。

1. Webサービスで実行する操作を選択し、操作の実行に必要な情報を入力します。
次に、AGENTWEBSERVICEを使用する際に選択できる一部の操作を示します。

- isDeployed
「WebサービスまたはアプリケーションがOC4Jサーバーにデプロイされているかどうかの特定」を参照してください。

- runCCJob
「コントロール・センター・ジョブの実行」を参照

- abortJob
「実行ジョブの終了」を参照

- invokeEAR
「デプロイ済のアプリケーションの実行」を参照

2. トランスポート情報の表示ノードを開き、HTTP認証というラベルの右にある「有効化」を選択します。

3. トランスポート情報の表示セクションで、次のフィールドの詳細を入力します。

- ユーザー名: Webサービスの実行に使用される、OWB_J2EE_OPERATORロールを持つJ2EEユーザーの名前。

- パスワード: 「ユーザー名」で指定したJ2EEユーザーのパスワード

4. 「呼出し」をクリックします。
操作の結果を含むテスト結果ページが表示されます。

注意:
資格証明を入力して、「呼出し」をクリックした後、資格証明の入力を求められることがあります。トランスポート情報セクションで指定したJ2EEの資格証明を再度入力してください。

WebサービスまたはアプリケーションがOC4Jサーバーにデプロイされているかどうかの特定

isDeployed操作では、WebサービスまたはアプリケーションがOC4Jサーバーにデプロイされているかどうかの特定できます。

WebサービスがOC4Jサーバーにデプロイされているかどうかを特定する手順は、次のとおりです。

1. AgentWebServiceエンドポイントページで、「操作」フィールドのisDeployedを選択します。

2. 「jndiName」フィールドで、アプリケーションの名前を入力します。
jndi_nameまたは完全修飾アプリケーション名を使用します。この名前を特定するには、OWB_HOME/owb/jrt/applicationsディレクトリを確認します。

WebサービスがOC4Jインスタンスにデプロイされた場合、テスト結果ページのXMLコードに「True」が表示されます。

コントロール・センター・ジョブの実行

runCCJob操作により、コントロール・センター・ジョブを実行できます。ジョブにはOracle Warehouse Builderを使用して定義されたWebサービス、マッピングおよびプロセス・フローが含まれます。

コントロール・センター・ジョブを実行する手順は、次のとおりです。

1. AgentWebServiceエンドポイントページで、「操作」フィールドのrunCCJobを選択します。

2. 次の各フィールドに情報を入力します。

- ユーザー名: Webサービスを実行するワークスペースの名前を表します。

- パスワード: 「ユーザー名」フィールドで指定したユーザーのパスワードを表します。

- ワークスペース: Webサービスの実行ジョブを実行するワークスペースの名前を表します。Webサービスを実行するユーザーがワークスペース所有者でない場合は、ユーザー名に接頭辞としてワークスペース名を付けます(test_user.my_workspaceなど)。

- ロケーション: タスクのデプロイ先のロケーションの物理名を表します。

- task_type: タスクのタイプを表します。次の値を使用します。
PLSQL - PL/SQLマッピング用

SQL_LOADER - SQL*Loaderマッピング用

PROCESS - プロセス・フロー用

SAP - SAPマッピング用

DATA_AUDITOR - Oracle Warehouse Builderのデータ監査マッピング用

- task_name: デプロイ済のオブジェクトの物理名を表します。たとえば、MY_MAPPINGです。プロセス・フローの場合は、プロセス・フローが属しているプロセス・フロー・パッケージの名前でプロセス・フロー名を修飾します(たとえば、MY_PROCESS_FLOW_PACK. MY_PROCESS_FLOW)。

- connection_string: コントロール・センター・マネージャが含むコンピュータの接続情報を表します。

- system_params: バルク・サイズ、「コミット頻度」などのマッピング実行パラメータを表します。複数のシステム・パラメータがある場合は、カンマを使用してパラメータの間を区切ります。
次に例をあげます。OPERATING_MODE=SET_BASED,AUDIT_LEVEL=NONE

- custom_params: マッピングの入力パラメータを表します。

runCCJob操作では、実行が成功した場合は1を、警告がある場合は2を、実行時にエラーがある場合は3を戻します。

実行ジョブの終了

abortJob操作により、コントロール・センター・マネージャに送信された特定のジョブを終了できます。

特定のジョブを終了する手順は、次のとおりです。

1. AgentWebServiceエンドポイント・ページで、「操作」フィールドのabortJobを選択します。

2. jobIDフィールドに終了するコントロール・センター・ジョブのジョブIDを入力します。

3. 「timeOut」フィールドで、タイム・アウトの値をミリ秒単位で入力します。このフィールドに0を入力すると、タイムアウトがないことを示します。

テスト結果ページのTRUEの戻り値はコントロール・センター・マネージャに終了メッセージが送信されたことを示します。

デプロイ済のアプリケーションの実行

invokeEAR操作では、Webサービス、CTマッピングなどのデプロイ済のアプリケーションを実行できます。

WebサービスまたはCTマッピングを実行する手順は、次のとおりです。

1. AgentWebServiceエンドポイント・ページで、「操作」フィールドのinvokeEARを選択します。

2. 「jndiName」フィールドで、WebサービスのJNDI名を入力します。

3. 「soa_params」フィールドで、マッピング実行パラメータの値を入力します。各値はカンマで区切ります。

4. 「owb_params」フィールドで、入力パラメータの値を入力します。

テスト結果ページにはWebサービス実行のジョブIDが含まれています。

プロセス・フローでのアクティビティとしてのWebサービスの使用

Webサービスで定義した機能をプロセス・フローの一部として使用できます。Webサービスは、新規に作成するか、またはOracle Warehouse Builderにインポートできます。プロセス・フローでWebサービスを使用するには、Webサービスのアクティビティを使用します。

プロセス・フローでWebサービスを使用する例は、事例: データ統合のためのWebサービスの使用を参照してください。

プロセス・フローでWebサービスを使用するルール

プロセス・フローでは、次のように、特定のルールに準拠しているWebサービスのみがOracle Warehouse Builderでサポートされます。

- アクセス可能なWSDLファイルで記述されるWebサービスのみがサポートされます。

- WSDLファイルに複数のサービスが含まれる場合は、1つのサービスを指定する必要があります。

- 基本認証を含むWebサービスには資格情報を提供するためにURIロケーションが必要です。Webサービス・アクティビティのデプロイ済ロケーションプロパティをこのURIロケーションに設定する必要があります。

- Webサービスに複数のポートが含まれる場合は、ポートを指定する必要があります。

- ポートはhttpトランスポートを使用する必要があります。

プロセス・フローでのWebサービスの使用ステップ

プロセス・フローでWebサービスを使用する手順は次のとおりです。

1. プロジェクト・ナビゲータで、プロセス・フローを作成します。
プロセス・フローの詳細は、「プロセス・フローを定義する手順」を参照してください。

2. プロセス・フローの一部であるWebサービスのアクティビティを除きすべてのアクティビティを追加して、アクティビティ間のデータ・フローを確立します。

3. 外部Webサービスを使用している場合、グローバル・ナビゲータで公開Webサービスを作成することにより、WebサービスをOracle Warehouse Builderにインポートします。

関連項目:
Webサービスのインポートの詳細は、「URLに基づくWebサービスの作成」を参照してください。

4. プロジェクト・ナビゲータまたはグローバル・ナビゲータのいずれかからプロセス・フロー・エディタのキャンバスにWebサービスをドラッグ・アンド・ドロップします。
または

「グラフ」メニューから「使用可能なオブジェクト」を選択します。「使用可能なオブジェクトの追加」ダイアログ・ボックスが表示されます。必要なWebサービスを選択して、「OK」をクリックします。

「Webサービス操作」ダイアログ・ボックスが表示されます。

5. Webサービスの使用可能な操作から操作を1つ選択して、「OK」をクリックします。選択した操作はプロセス・フローで使用されます。
Webサービスはプロセス・フロー・エディタに追加され、プロパティが「構造」パネルにリストされます。

同期Webサービスの操作には入力メッセージおよび出力メッセージの両方が含まれます。これらは、プロセス・フローのWebサービス・アクティビティの入力パラメータまたは出力パラメータにマップされます。

6. Webサービスのアクティビティの各プロパティに必要な入力値を指定します。「構造」パネルのプロパティを選択し、「プロパティ・インスペクタ」を使用して値を設定します。
Webサービスに認証が必要な場合は、URIロケーションを作成し、Webサービスのアクティビティのデプロイ済ロケーションプロパティをこのURIロケーションに設定する必要があります。

7. Webサービス・アクティビティとの間のデータ・フローを確立します。

8. プロセスを生成し、エラーが発生した場合は解決します。

9. Webサービスのアクティビティの形式でプロセス・フローに追加したすべてのWebサービスがデプロイされたことを確認します。

10. 手順1で作成されたプロセス・フローを含むプロセス・フロー・パッケージをデプロイします。コントロール・センター・マネージャを使用するか、プロジェクト・ナビゲータでプロセス・フロー・パッケージを右クリックして「デプロイ」を選択します。

11. プロセス・フローを実行します。プロジェクト・ナビゲータで、プロセス・フローを右クリックして「開始」を選択します。

Webサービス・アクティビティと参照されているWebサービスとの同期

Webサービスの定義が変更されると、このWebサービスを消費するすべてのプロセス・フローにそれらの変更を伝搬する必要があります。

プロセス・フローで使用するWebサービスを同期する手順は、次のとおりです。

1. Webサービスを使用するプロセス・フロー・パッケージを右クリックして「開く」を選択します。
このプロセス・フローのプロセス・フロー・エディタが表示されます。

2. Webサービスが変更されたことを示しているWebサービスのアクティビティを選択します。「編集」メニューから、「同期化」を選択します。
「同期化」ダイアログ・ボックスが表示されます。Webサービスを同期する必要のあるオブジェクトが選択されると、変更することはできません。

3. オブジェクトIDによる一致、オブジェクト位置による一致またはオブジェクト名による一致のいずれかの一致オプションを選択して「一致方針」を指定します。
これらのオプションの詳細は、「ヘルプ」をクリックします。

4. 「置換」または「マージ」を選択して「同期化方針」を指定します。

5. 「OK」をクリックして、Webサービスとベースにするオブジェクトを同期します。

Webサービスに行った変更は、Webサービスに基づいているWebサービスのアクティビティに伝搬されます。

マッピングでのWebサービスの使用

Webサービスは本質的に関数であるため、Oracle Databaseが提供するWebサービスのサポートを活用することで、マッピング内のWebサービス(PL/SQLパッケージ)を使用できます。このため、既存のWebサービスにある機能を活用できます。

次の方法のいずれかを使用して、Webサービスソースまたはターゲットとして使用するマッピングを作成します。

- UTL_HTTPパッケージを使用します。

- JPublisherユーティリティを使用してWebサービスに対するSQLのインタフェースの役割を果します。
「JPublisherを使用してマッピングでWebサービスを消費する手順」を参照してください。

- UTL_DBWSパッケージを使用してWebサービスを消費します。
Oracle Databaseのリリースに応じて、これらのタスクを実行するにはDBWSユーティリティをダウンロードしてインストールする必要があります。

- OWB_HOME/owb/misc/mappingWSディレクトリにあるスクリプトuse_webservice_in_mapping.tclを使用して、マッピングのWebサービスを消費するために使用できるエキスパートを作成します。

JPublisherを使用してマッピングでWebサービスを消費する手順

JPublisherユーティリティでは、オブジェクト・タイプ(Oracleオブジェクト、可変長配列、ネストした表、REFまたはオブジェクト・タイプである可能性がある)がJavaクラスに変換され、オブジェクトの各属性のアクセッサ・メソッドが生成されます。JPublisherではオブジェクト・タイプとJavaクラスとのマッピング、オブジェクトの属性のタイプと対応するJava型とのマッピングが作成されます。

PL/SQLパッケージでは、JPublisherによりパッケージのサブプログラムごとにラッパー・メソッドを含むクラスが作成されます。オブジェクト・メソッドと同様に、サブプログラムごとに作成されたラッパー・メソッドは、元のメソッドが静的メソッドである場合でも必ずインスタンス・メソッドです。JPublisherが生成したラッパー・メソッドでは、JavaコードからPL/SQLストアド・プロシージャを呼び出したり、クライアントのJavaプログラムからJavaストアド・プロシージャを呼び出す便利な方法を提供します。

1. JPublisherを使用してWSDLファイルのテーブル・ファンクション・プロキシを生成し、PL/SQLラッパーおよびプロキシ・コードを公開します。
たとえば、次のコマンドではhttp://99.22.32.21:9762/services/test_ws?wsdlというURLで使用できるWebサービスのプロキシが生成されます。

jpub -user wh_tgt/wh_tgt_pswd -sysuser system/oracle -dir=test_ws
-proxywsdl=http://90.22.32.21:9762/services/test_ws?wsdl

ここで、wh_tgtおよびwh_tgt_pswdは、マッピングがデプロイされているOracle Warehouse Builderロケーションに対するデータベース資格証明です。

JPublisherではJavaクラスおよびPL/SQLラッパーを生成し、指定のスキーマ(WH_TGT)にロードします。

2. (オプション)Webサービスを呼び出すPL/SQLコードを定義します。
この手順によって、テーブル・ファンクションへのコールアウトがOracle Databaseレベルで動作することが、Oracle Warehouse Builderを介さずに確認されます。

次の例では、パッケージmy_packの一部であるmy_funcという関数へのコールアウトが正しく機能することを確認します。

SELECT * FROM TABLE(WH_TGT.MY_PROC.MY_FUNC)

3. テーブル・ファンクション・プロキシを生成したWebサービスのメタデータを、インポート・メタデータ・ウィザードによってOracle Warehouse Builderにインポートします。
メタデータにはユーザー定義型およびPL/SQLパッケージが含まれます。

4. Webサービスを消費するOracle Warehouse Builderマッピングを開き、テーブル・ファンクション演算子を追加してWebサービスを呼び出します。次のタスクを実行します。

- テーブル・ファンクション演算子の「テーブル・ファンクション名」プロパティで、マッピングに追加する(手順1で)生成されたテーブル・ファンクションの名前を入力します。

- テーブル・ファンクション演算子のINGRP1グループで、入力パラメータの型フィールドを使用してテーブル・ファンクションが許容する入力の型を選択します。

5. Webサービスへの入力を表すソース行を定義します。
Webサービスを表す演算子をテーブル・ファンクション演算子の入力グループにマッピングします。

6. Webサービスの出力をマッピングの表に取得します。
テーブル・ファンクション演算子ではコレクション型を出力として戻すので、必要に応じて、オブジェクトの拡張演算子を使用してターゲット表に個別に行をマッピングします。

7. (オプション)企業のファイアウォールの背後で実行する場合など、Webプロキシを設定する場合は、プロシージャINITIALIZE_PROXYを使用するマッピング前プロセス演算子を使用してHTTPプロキシを構成します。

8. マッピングを生成して実行します。

Secure Sockets Layer(SSL)を使用してのWebサービスへの安全なアクセス

セキュリティが主な問題点である場合、Oracle Warehouse BuilderではSecure Sockets Layer(SSL)を使用してWebサービスにセキュアな方法でアクセスできます。これにより、OC4JサーバーとWebサービスとの間で交換するメッセージが確実に保護されます。

Oracle Warehouse Builderの埋込みOC4Jサーバーとその他の外部OC4JサーバーのどちらにデプロイされたWebサービスにも安全にアクセスできます。

関連項目:
「ブラウザを使用したWebサービスの実行」

コントロール・センター・エージェントのセキュリティのJ2EEロール

Oracle Warehouse Builderでは、Oracle Warehouse Builderのコントロール・センター・エージェントのセキュリティを促進する次の3つのロールが提供されます。

- OWB_J2EE_EXECUTOR: 権限受領者がコントロール・センター・エージェント(CCA)でマッピングを実行できます。

- OWB_J2EE_OPERATOR: OWB_J2EE_EXECUTORロールを含み、権限受領者が監査情報にアクセスし、操作できます。

- OWB_J2EE_ADMINISTRATOR: OWB_J2EE_EXECUTORロールを含み、権限受領者がOC4Jを管理したり、コントロール・センター・エージェントにOracle Warehouse Builderオブジェクトをデプロイしたりできます。

外部OC4Jサーバーでのセキュアなアクセスの設定

(Oracle Warehouse Builderに埋め込まれていない)その他のOC4JサーバーにあるWebサービスに安全にアクセスできます。実行する前にOC4Jサーバーでのセキュリティを設定する必要があります。

他のOC4Jサーバーへの安全なアクセスを設定する手順は、次のとおりです。

1. キーツール・ユーティリティを使用してRSAの秘密鍵と公開鍵のペアを持つキー・ストアを作成します。
次の例では、RSAキー・ペア生成アルゴリズムを使用して、123456というパスワードを持つmykeystore.jksというファイルにあるキー・ストアを生成します。

%keytool -genkey -keylag RSA -keystore mykeystore.jks -storepass 123456

keystoreオプションでは、キーを格納するファイル名が設定されます。storepassオプションでは、キー・ストアを保護するパスワードを設定します。storepassオプションを省略すると、パスワードを入力するように求められます。

2. キー・エントリのパスワードを入力するように求められます。OC4J 10.1.3.xの実装では、キー・ストアのパスワードはキー・エントリのパスワードと同じである必要があります。
現在のディレクトリにmykeystore.jksファイルを作成されます。キーのデフォルトの別名はmykeyです。

3. secure-web-site.xmlファイルがない場合は、OWB_HOME/j2ee/home/configに作成します。
開始するには、default-web-site.xmlから必要な内容をすべてコピーします。これには、通常、要素に次のサブ要素が含まれます。

- <web-app> (保護するWebアプリケーションごと)

- (ロギング用。これは適切なログ・ファイルを指定することを確認する)

- <default-web-app>

4. 次の要素を使用してsecure-web-site.xmlを更新します。

- Webサイト要素を更新し、secure="true"を追加して、ポート番号を使用可能なポートに設定します。スタンドアロンOC4Jでは、デフォルト設定であるHTTPプロトコルを使用します。デフォルトの443を使用するには、スーパー・ユーザーである必要があります。
protocol="http"およびsecure="true"を設定する場合は、HTTPSプロトコルが使用されます。

次は、要素の例です。

<web-site port="4443" secure="true" protocol="http"
display-name="Default Oracle OAS Containers for J2EE Web Site">
...
...
</web-site>

- 次のようにweb-site要素の下にエントリを追加しキー・ストアとそのパスワードを定義します。
<ssl-config keystore="your_keystore" keystore-password="your_password" />

ここで、your_keystoreはキー・ストアへのパス、つまり、OWB_HOME/j2ee/home/config (WebサイトのXMLファイルが格納されている場所)への相対または絶対パスです。また、your_passwordはキー・ストアのパスワードです。

5. 変更内容をsecure-web-site.xmlに保存します。

6. セキュアなWebサイトを有効にするには、OWB_HOME/owb/jrt/configディレクトリにあるserver.xmlファイルにセキュアなWebサイトを追加します。

7. OC4Jサーバーを再起動して、以前の変更が適用されていることを確認します。

8. まだ作成されていない場合は、OWB_J2EE_EXECUTORロール、OWB_J2EE_OPERATORロールおよびOWB_J2EE_ADMINISTRATORロールを作成します。
OWB_HOME/owb/jrt/configフォルダにあるfile system-jazn-data.xmlファイルを参照してください。

9. Webサービスを実行するために使用するJ2EEユーザーを作成して、このユーザーにOWB_J2EE_EXECUTORロールを付与します。

キー・ストア・パスワードの更新

Oracle Warehouse Builderの埋込みOC4Jサーバーの場合は、WebサービスでSSLを使用するための安全なキー・ストアが提供されます。このキー・ストアは、OWB_HOME/owb/jrt/configフォルダにあるserverkeystore.jksファイルで使用できます。

このキー・ストアのデフォルトのパスワードは、welcomeです。パスワードを変更するにはJAVA_HOME/bin/keytoolを使用します。または、JAVA_HOME/bin/keytoolを使用して新しく作成されたキー・ストアにキー・ストアを置き換えます。

事例: データ統合のためのWebサービスの使用

会社Aと会社Bが合併しました。会社Aは米国のサンフランシスコにあり、会社Bは中国の上海にあります。現在、それぞれの会社はまだ別々に独自のビジネス・プロセスに従っています。それらのビジネス・プロセスを統合するためのプランを策定する必要があります。

企業AではOracle Databaseを使用してデータを格納し、データ統合およびETLではOracle Warehouse Builderを使用しています。指定期間の売上合計の決定にはマッピングが使用されています。

企業BはSQL Serverデータベースを使用してデータを格納し、データ統合およびETLではOracle Warehouse Builderを使用しています。ソース表はSQLサーバーであるので、指定期間の売上合計の決定にはCTマッピングを使用しています。

例: Webサービスとしてのマッピングの公開

企業AではORDERSという表に売上詳細を格納しています。PRODUCTS表には製品の詳細が格納されます。マッピングLOAD_TOTAL_SALES_MAPによりソース・データが変換され、売上合計の詳細をターゲット表TOTAL_SALESにロードされます。データ統合要件の一部として、企業Aおよび企業Bのビジネス・プロセスを統合する必要があります。

マッピングLOAD_TOTAL_SALES_MAPをWebサービスとして公開することで、ロケーション、データ形式またはプロバイダのプラットフォームに依存することなくマッピングで定義された機能にリモートにアクセスできます。

企業Aではデータの格納に次の表を使用します。

- ORDERS: には、order_id、order_date、product_id、quantityおよびcustomer_idの各列が含まれます。

- PRODUCTS: には、product_id、product_name、product_descおよびproduct_priceが含まれます。

- CUSTOMERS: にはcustomer_id、first_name、last_name、cust_addressおよびcust_cityが含まれます。

次の手順を使用して、LOAD_TOTAL_SALES_MAPをWebサービスとして公開します。

1. プロジェクト・ナビゲータで、作成しているWebサービスが含まれるINTEGRATION_AS_MODというアプリケーション・サーバー・モジュールを作成します。このモジュールのロケーションの詳細がWebサービスのデプロイ先のエージェント・ロケーションに設定されていることを確認します。

2. LOAD_TOTAL_SALES_MAPマッピングを含むOracleモジュールを開きます。

3. LOAD_TOTAL_SALES_MAPマッピングを右クリックしてWebサービスとしての公開を選択します。
アプリケーション・サーバーまたはWebサービス・パッケージの選択ダイアログ・ボックスが表示されます。

4. INTEGRATION_AS_MODを選択して、「OK」をクリックします。

WS_LOAD_TOTAL_SALES_MAPというWebサービスが作成され、アプリケーション・サーバー・モジュールINTEGRATION_AS_MODに関連付けられているエージェント・ロケーションにデプロイされます。

例: プロセス・フローでのWebサービスの消費

企業BではLOAD_TOT_SALES_CT_MAPというCTマッピングを使用して指定期間の売上の集計をターゲット表TOT_SALESにロードします。このマッピングは企業Aが使用するマッピングに似ています。ただし、ソース表ORDERS、PRODUCTS、CUSTOMERSはSQL Serverデータベースに格納されているため、CTマッピングを使用しています。

企業Bは中国の上海にあるので、ソース表の売上金額は中国の元で格納されています。ただし、企業Aおよび企業Bは合併されたため、営業管理者は両社の連結売上を共通の通貨である米国ドルで確認する必要があります。今度は、企業Bの売上金額を米国ドルに変換する必要があります。

変換レートの決定には、外部の通貨変換Webサービスを使用できます。このWebサービスでは2つの入力パラメータ変換元通貨および変換先通貨を取ります。その出力は変換元通貨から変換元通貨への変換に使用する必要のある複数の出力です。これは外部のWebサービスであるため、最初にこのWebサービスをOracle Warehouse Builderにインポートする必要があります。

プロセス・フローでWebサービスを消費する手順

1. LOAD_TOT_SALES_CT_MAPコード・テンプレート(CT)マッピングの変更

2. 通貨変換Webサービスのインポート

3. 通貨変換Webサービスを消費するプロセス・フローの作成

LOAD_TOT_SALES_CT_MAPコード・テンプレート(CT)マッピングの変更

CTマッピングLOAD_TOT_SALES_CT_MAPを編集して、マッピング入力演算子および式演算子を追加します。マッピング入力演算子を使用して通貨変換値を指定します。式演算子を使用して、中国元の合計売上に変換値を乗算して、変換された売上金額をTOT_SALES表にロードすることによって、米国ドルの合計売上を求めます。

通貨変換Webサービスのインポート

通貨変換Webサービスは次で入手できる外部のWebサービスです。

http://www.webservicex.net/CurrencyConvertor.asmx?WSDL

プロセス・フローでこのWebサービスを消費するには、次の手順を使用してこのWebサービスをOracle Warehouse Builderにインポートする必要があります。

1. グローバル・ナビゲータで、PUBLIC_AS_MODというアプリケーション・サーバー・モジュールを作成します。
URLに基づくWebサービスをインポートするには、グローバル・ナビゲータで公開Webサービスを作成する必要があります。

2. グローバル・ナビゲータで、PUBLIC_AS_MODを右クリックして、「新規Webサービス」を選択してURLに基づくWebサービスを作成します。このWebサービスはWS_CURR_CONVERTと呼ばれます。
通貨変換WebサービスへのURLを使用してWSDLファイルのロケーションを指定します。

URLに基づくWebサービスの作成の詳細は、「URLに基づくWebサービスの作成」を参照してください。

通貨変換Webサービスを消費するプロセス・フローの作成

プロセス・フローを使用して、オブジェクトの実行順序を確立し、オブジェクトの出力を他への入力として使用します。このプロセス・フローでは、企業Bの米国ドルの売上金額がターゲット表にロードされます。

表16-1に、企業Bの米国ドルの売上金額をTOT_SALES表にロードするプロセス・フローを示します。

WebサービスCONVERTSERVICE_CONVERSIONRATEがまず実行され、その出力は、中国元の金額に乗算して米国ドルに変換するため変換値です。この値はマッピング入力パラメータ演算子としてLOAD_TOT_SALES_CT_MAP CTマッピングへの入力として指定され、変換値を表すマッピング・アクティビティCMAP1として表されます。

図16-1 Webサービスを消費するプロセス・フロー

「図16-1 Webサービスを消費するプロセス・フロー」の説明

例: Oracle Warehouse Builder WebサービスとOracle BPELプロセス・マネージャの統合

Oracle Warehouse Builderを使用して開発したETL機能をOracle BPELプロセス・マネージャなどの製品と統合できます。これは、Oracle BPELプロセス・マネージャで消費できるETLオブジェクトをWebサービスとして公開することにより実行されます。

Oracle BPELプロセス・マネージャでは、BPELプロセスを設計、デプロイおよび管理するための包括的で使いやすいソリューションを提供します。

シナリオ

企業Aの営業責任者は指定期間の企業Aと企業B両方の売上業績を評価する必要があります。A社およびB社には、指定期間の売上業績を決定するそれぞれ独自のプロセスがあります。合併企業としての一定期間の合計売上を簡単に決定できるようにこれらのプロセスを統合する必要があります。

ETL機能とOracle BPELプロセス・マネージャを統合する前に

A社ではマッピングLOAD_TOTAL_SALES_MAPマッピングを使用しており、これは、WebサービスWS_LOAD_TOTAL_SALES_MAPとして公開されています。企業BではLOAD_TOT_SALES_CT_MAPというコード・テンプレート・マッピングと中国元の売上を米国ドルに変換するプロセス・フローを使用しています。このプロセス・フローをWebサービスとして必ず公開します。また、これらのWebサービスに関連付けられているすべてのオブジェクトも公開します。

BPELとの統合手順

1. Oracle SOAスイートを起動します。

2. JDeveloper BPEL Designerを起動します。

3. BPEL_INTEGというBPELプロセスを作成します。このプロセスではA社とB社が作成するWebサービスを使用します。
図16-2にプロセスBPEL_INTEGを示します。

図16-2 Webサービスを使用するBPELプロセス

「図16-2 Webサービスを使用するBPELプロセス」の説明

4. アプリケーション・ナビゲータでBPELプロセスを右クリックし、「デプロイ」を選択して、デプロイメント・ロケーションを選択することで、BPELプロセスをデプロイします。
「ログ」パネルを使用してデプロイメント結果を表示できます。

5. Webブラウザを使用してBPELマネージャにログインします。

6. 「ダッシュボード」タブで、「デプロイ済BPELプロセス」セクションでBPEL_INTEGを選択します。

7. 「開始」タブを選択します。

8. 入力フィールドを使用して入力パラメータSTART_DATE and END_DATEの値を入力し、「XMLメッセージの転送」をクリックしてBPELプロセスを実行します。
たとえば、入力フィールドにSTART_DATA=2007-01-01,END_DATA=2008-12-31という値を入力します。

9. ビジネス・プロセス実行の監査証跡を確認します。BPELコンソール「インスタンス」タブを選択して、このフローのリンクをクリックします。

17 トランスポータブル・モジュールを使用する大量のデータの移動

Oracle Warehouse Builderではエンタープライズ・データ・ウェアハウスを段階的に構築、公開できます。データ・ウェアハウスのパフォーマンスおよび管理性を向上できます。

Oracle Warehouse Builderマッピングはデータベース・リンクを使用してリモート・データにアクセスします。オーバーヘッドおよびネットワークの遅延を処理することで、このデータ・アクセス・プロセスはマッピングを使用したローカル・データへのアクセスより遅くなります。データ・アクセスを迅速化するには、次のいずれかの手法を使用できます。

- トランスポータブル・モジュールを作成して、リモート・オブジェクト(表、ビュー、マテリアライズド・ビューなど)をソース・データベースからターゲット・データベースにコピーします。ターゲット・データ・ウェアハウスのマッピングがデータにローカルにアクセスできます。

- ソース・データベースのデータを部分的に所有し、トランスポータブル・モジュールを使用して、ソース・データベースからターゲット・データに前処理されたデータをコピーし、最終的にデータ・ウェアハウスにロードできます。

トランスポータブル・モジュールは、オブジェクトのパッケージをできるかぎり迅速にサイト間で移動する出荷サービスのような役割を果します。

注意: トランスポータブル・モジュールを利用するには、所属する組織がOracle Warehouse Builder Enterprise ETL Optionのライセンスを所有していることを確認します。

この章の内容は次のとおりです。

- トランスポータブル・モジュールについて

- トランスポータブル・モジュール使用の利点

- トランスポータブル・モジュールの使用手順

- トランスポータブル・モジュールの編集

トランスポータブル・モジュールについて

トランスポータブル・モジュールでは、関連するデータベース・オブジェクトのグループをデータベース間で迅速にコピーできます。

デザイン・センターを使用して、まずトランスポータブル・モジュールを作成し、ソース・データベース・ロケーションとターゲット・データベース・ロケーションを指定します。次に、トランスポータブル・モジュールに含めるデータベース・オブジェクトを選択します。選択したオブジェクトのメタデータがソース・データベースからトランスポータブル・モジュールにインポートされます。メタデータはワークスペースに格納されます。データおよびメタデータをソースからターゲットに物理的に移動するには、トランスポータブル・モジュールを構成して、ターゲット・ロケーションにデプロイする必要があります。デプロイメント時に、データおよびメタデータの両方がソース・データベースから抽出され、ターゲット・データベース内に作成されます。

次の技術を組み合せることによりデータおよびメタデータを移動できます。

- Oracle Data Pump

- トランスポータブル表領域

- DBMS_FILE_TRANSFER

- バイナリFTP

- ローカル・ファイル・コピー

- コード生成およびデプロイメント

トランスポータブル・モジュールを構成し、使用技術に影響を与えることができます。

トランスポータブル・モジュールには次のソース・オブジェクトを追加できます。

- 表領域

- スキーマ

- 表

- ビュー

- 順序

- マテリアライズド・ビュー

- PL/SQLファンクション、プロシージャおよびパッケージ

- オブジェクト・タイプ

- 可変長配列タイプ(Varray)

- ネストした表のタイプ

従来の抽出、変換およびロード(ETL)プロセスでは、データベース・リンクを使用した複数のリモート・アクセスによるリモート・データベースからデータを抽出します。

図17-1に、リモート・データベースからのデータの従来の抽出を示します。

図17-1 データベース・リンクを使用した複数のリモート・アクセスによるリモート・データベースからのデータの抽出

「図17-1 データベース・リンクを使用した複数のリモート・アクセスによるリモート・データベースからのデータの抽出」の説明

データベース・リンクを使用するリモート・アクセス中は、シリアルの問合せ、シリアルのDMLおよびネットワーク遅延による重要なパフォーマンスの低下が発生する可能性があります。同じソース表に複数回アクセスする場合は、パフォーマンスの低下がさらに多く発生します。

トランスポータブル・モジュール・アーキテクチャでは、マッピングに必要なすべてのソース・オブジェクトがバンドルされ、1回のデプロイでターゲットに移動されます。トランスポータブル・モジュールのデプロイメントでは、Oracle Data Pump、FTPおよびOracleトランスポータブル表領域を使用して、高速の転送パフォーマンスが実現されます。この転送により、ネットワーク遅延のコストが吸収されます。その後、マッピングがデータにローカルでアクセスすることで、パラレル・クエリーとパラレルDMLが有効になります。同じデータに繰返しアクセスすることで、トランスポータブル・モジュールのパフォーマンス上の利点が増えます。

図17-2 トランスポータブル・モジュールのデプロイメント

「図17-2 トランスポータブル・モジュールのデプロイメント」の説明

トランスポータブル・モジュールを使用してデータ・ウェアハウスのロードをより管理しやすくなります。トランスポータブル・モジュールがデプロイメントを完了するための短い期間のみ、ソース・データベースを停止する必要があります。ソース・データベースのユーザーはデータ全体がデータ・ウェアハウスにロードされるまで待機する必要はありません。たとえば、トランスポータブル・モジュールの実装を使用する場合、トランスポータブル・モジュールは20GBの表領域を約5分間でコピーできるため、ソース・データベースのダウン・タイムが5分になります。

ターゲット・データベースにコピーされたデータはソース・データベースに存在する情報のスナップショットです。同じものを使用してデータ・バージョニング・システムを作成します。上級ユーザーは、転送された表にストリームを作成して、ソースからリアルタイムの変更をキャプチャできます。また、転送された表をさらに大きな表にパーティションとしてコピーできます。

複数部門があるエンタープライズ環境では、中間レポートと目的の更新に使用するターゲット・データベースは実際は操作データ・ストアである場合があります。このターゲット・データベースは、結果として、データ収集の次の段階へのソースとして機能します。データ・ウェアハウスに格納する前にデータの移動先のパスとともに、トランスポータブル・モジュールを複数のステージで使用できます。

また、トランスポータブル・モジュールを使用してデータ・マートを公開できます。データ・マートは、通常、単一アクセスまたは部門別アクセスのためのより大きなデータ・ウェアハウスの一部です。場合により、データ・マートの作成が、データ・ウェアハウスで収集と処理が行われた内容のコピーになることがあります。トランスポータブル・モジュールを作成して、このタスクを実行できます。また、同じトランスポータブル・モジュールを使用してデータ・マートを複数のロケーションにデプロイすることもできます。

図17-3に、データ・マートの公開に使用するトランスポータブル・モジュールを示します。

図17-3 データ・ウェアハウスのデータ・マート

「図17-3 データ・ウェアハウスのデータ・マート」の説明

トランスポータブル・モジュールはソース・データベース・オブジェクトのスナップショットをデプロイするので、デプロイメント時間を使用してデータ・マートのバージョンを追跡できます。

トランスポータブル・モジュールおよびOracleデータベース技術について

トランスポータブル・モジュールは、Oracle Warehouse Builderの技術とOracle Databaseの技術を組み合せて活用することで機能します。トランスポータブル・モジュールはソース・データベースの一部をターゲット・データベースにレプリケートします。レプリケート可能なソース・データベースの一部には表領域、表、索引、制約およびその他の関連オブジェクトが含まれます。

データベースのリリースによっては、Oracle Databaseが表領域をレプリケートします。2つのOracle8iリリースのデータベース間、または2つのOracle9iリリースのデータベース間でデータを転送する場合は、データベースによりOracleトランスポータブル表領域機能が呼び出されます。2つのOracle 10gデータベース間でデータを転送する場合は、データベースではOracle Data Pump機能を呼び出します。

Oracle Database 10gおよびOracle Data Pumpの場合、表領域を転送することなく表を転送できます。たとえば、表が100 KBであり表領域のサイズが10MBである場合、表領域全体をデプロイすることなく表をデプロイできます。Oracle Data Pumpのみスキーマ全体をコピーするオプションを提供します。Oracle 10gリリース・データベースでは、「トランスポータブル・モジュールの構成」の説明に従って構成時にデータ・ポンプまたはトランスポータブル表領域のいずれかを指定します。

注意:
トランスポータブル表領域およびデータ・ポンプの詳細は、Oracle Database 11gのマニュアルを参照してください。

トランスポータブル・モジュール使用の利点

トランスポータブル・モジュールの導入前に、最もスケーラビリティの高いデータ・トランスポーテーション方法はRAWデータを含むフラット・ファイルの移動に依存する。この方法ではソース・データベースへのデータのアンロードまたはこのデータベースからのエクスポートを必要であり、これらのファイルをターゲット・データベースにロードまたはインポートします。トランスポータブル・モジュールの方法では、アンロードおよびリロード手順全体がバイパスされ、Oracle Database技術、トランスポータブル表領域およびデータ・ポンプにアクセスできます。

高パフォーマンスのデータ抽出

トランスポータブル・モジュールではリモートにデータにアクセスするためのマッピングの必要性が軽減されます。リモート・コンピュータに大量のデータがある場合、トランスポータブル・モジュールを使用してソースをOracleのターゲット・データベースに迅速にコピーできます。その後、Oracle Warehouse Builderのマッピングはデータのローカル・コピーに直接アクセスできます。さらに、ソースがターゲットの一部となるので、ソース・データに対してETL操作を直接実行できます。

データ・マートの分散とアーカイブ

中央のデータ・ウェアハウスは、依存するデータ・マートが読取り専用である場合はETL処理を処理します。トランスポータブル・モジュールを使用して、読取り専用のデータ・マートから複数の部門のデータベースにコピーできます。この方法では、中央のデータ・ウェアハウスを使用して新しいデータ・マートを定期的に公開したり、古い表領域を削除して新しい表領域をインポートすることで古いデータ・マートを置き換えることができます。重複および分散にはあまり時間がかからないため、毎日の分析またはビジネス操作用のデータ・マートを公開および分散できます。

ソースのアーカイブ

ソース表領域を読取り専用モードに設定して、ターゲットにエクスポートできます。すべてのデータ・ファイルをコピーして、特定の時点のソース・データベースの一貫性のあるスナップショットが作成されます。その後このコピーをアーカイブできます。アーカイブされたデータは、ソース・データベースおよびターゲット・データベースにリストアできます。

トランスポータブル・モジュールを使用する手順

前提作業

「トランスポータブル・モジュールを使用する要件の確認」の説明に従って、必要なロールおよび権限を持つユーザーとしてソース・データベースおよびターゲット・データベースに接続できることを確認します。

組織がWarehouse Builder Enterprise ETLオプションのライセンスを所有していることを確認してください。

トランスポータブル・モジュールを使用するには、次の各項を参照してください。

データベース管理者への注意: この手順の手順1では複数の強力なデータベース・ロールおよび権限が必要です。手順3では、スキーマのパスワードに関する知識が必要です。セキュリティに関する考慮事項によっては、手順3を開発者が実行できるようにするか、またはデータベース管理者のみが実行できるように制限できます。

1. トランスポータブル・モジュールのロケーションの指定

次のステップに進む前に次の接続が成功するかをテストしてください。

2. トランスポータブル・モジュールの作成

3. トランスポータブル・モジュールの構成

4. トランスポータブル・モジュールの生成とデプロイ

5. トランスポータブル・モジュールによってデータをアクセスするマッピングの設計

6. トランスポータブル・モジュールの編集

トランスポータブル・モジュールを使用する要件の確認

トランスポータブル・モジュールのソース・ロケーションを作成するときは、ソース・ロケーション・ユーザーは、ソース・データベースのリリースに応じて、特定のロールまたは権限(あるいはその両方)を処理する必要があります。

- ソース・データベースがOracle 10gより前である場合は、ソース・ロケーション・ユーザーにSYSDBA権限が必要です。

- ソース・データベースがOracle 10gである場合は、SYSDBA権限は必要ありませんが、ソース・ロケーション・ユーザーに次を割り当てる必要があります。

- CONNECTロール

- EXP_FULL_DATABASEロール

- ALTER TABLESPACE権限

トランスポータブル・モジュールのターゲット・ロケーションを作成するときは、ターゲット・ロケーション・ユーザーは、ターゲット・データベースのリリースに応じて、特定のロールまたは権限(あるいはその両方)を処理する必要があります。

- ターゲット・データベースがOracle 10gより前である場合は、ターゲット・ロケーションのユーザーにSYSDBA権限が必要です。

- ターゲット・データベースがOracle 10gである場合は、SYSDBA権限は必要ありませんが、ターゲット・ロケーション・ユーザーに次を割り当てる必要があります。

- 管理オプションを備えるCONNECTロール

- 管理オプションを備えるRESOURCEロール

- IMP_FULL_DATABASEロール

- ALTER TABLESPACE権限

- 管理オプションを備えるEXECUTE_CATALOG_ROLE

- 管理オプションを備えるCREATE MATERIALIZED VIEW権限

- CREATE ANY DIRECTORY権限

注意:
トランスポータブル・モジュールがソース・データベースからオブジェクトを読み取り、ターゲット・データベースにオブジェクトを作成するには、トランスポータブル・モジュールのソース・ロケーションおよびトランスポータブル・モジュールのターゲット・ロケーションに多くの強力なロールおよび権限を割り当てる必要があります。本番環境では、必要に応じて、DBAが(ロケーション・ナビゲータを使用して)データ・ウェアハウス用のトランスポータブル・モジュールのソース・ロケーションおよびターゲット・ロケーションを作成し、パスワードを隠蔽することを選択することがあります。

次はDBAがソース・ロケーション・ユーザーにソース・データベースの必要なロールおよび権限を割り当てるSQLスクリプトです。

grant connect to <TM src location user>;
grant exp_full_database,alter tablespace to <TM src location user>;

次はDBAがターゲット・ロケーション・ユーザーにターゲット・データベースの必要なロールおよび権限を割り当てるSQLスクリプトです。

grant connect,resource to <TM tgt location user> with admin option;
grant imp_full_database,alter tablespace to <TM tgt location user>;
grant execute_catalog_role to <TM tgt location user> with admin option;
grant create materialized view to <TM tgt location user> with admin option;
grant create any directory to <TM tgt location user>;

トランスポータブル・モジュールのロケーションの指定

トランスポータブル・モジュールを作成する前に、まずロケーション・ナビゲータでソース・ロケーションとターゲット・ロケーションを定義します。各トランスポータブル・モジュールには1つのソース・ロケーションと1つのターゲット・ロケーションのみを定義できます。

トランスポータブル・モジュールを指定する手順は、次のとおりです。

1. ロケーション・ナビゲータで、「ロケーション」ノードを開きます。

2. 「データベース」ノードを開きます。

3. トランスポータブル・モジュール・ソース・ロケーションノードまたはトランスポータブル・モジュール・ターゲット・ロケーションノードを右クリックし、「新規」を選択します。
Oracle Warehouse Builderでは、ソース・ロケーションまたはターゲット・ロケーションの接続情報を指定するダイアログ・ボックスが表示されます。

4. ソース・ロケーションとターゲット・ロケーションの定義の手順は、ターゲットではオプションのFTP接続の詳細を指定しないことを除き同じです。「トランスポータブル・モジュールのソース・ロケーションの情報」の手順に従って、接続情報を指定し、接続をテストします。

トランスポータブル・モジュールのソース・ロケーションの情報

Oracle Warehouse Builderではまずこの接続情報を使用してソース・コンピュータからトランスポータブル・モジュールのメタデータをワークスペースにインポートします。デプロイメント時に、この接続情報はソースからターゲットへのデータの移動に使用されます。

名前

ソース・データベースまたはターゲット・データベースのロケーションの名前。

説明

ロケーションの説明(オプション)。

ユーザー名およびパスワード

Oracle Warehouse Builderではデータベース・ユーザー名およびパスワードを使用して、トランスポータブル・モジュールに含めるソース・オブジェクトのメタデータを取得します。また、デプロイメント時にこの情報を使用してトランスポータブル表領域操作またはデータ・ポンプ操作を実行します。

トランスポータブル・モジュールと併用するためにデータベースにアクセスするには、「トランスポータブル・モジュールを使用する要件の確認」の説明に従って、ユーザーが必要なデータベース・ロールおよび権限を持っていることを確認します。

ホスト

データベースがインストールされるコンピュータのホスト名。

ポート

データベースがインストールされるコンピュータのポート番号。

サービス

データベースがインストールされるコンピュータのサービス名。

バージョン

リストからOracle Databaseリリース番号を選択します。

ユーザー名およびパスワード(オプション)

Oracleトランスポータブル表領域をデータの転送方法として使用する場合、FTPアカウント資格証明を指定します。トランスポータブル表領域メソッドを構成しない場合は、FTP資格証明は不要です。

トランスポータブル表領域を使用するように構成しているけれども、ソース・データベースおよびターゲット・データベースの両方が同じコンピュータにあるか、ソースおよびターゲットの両方が共有ディスク・ボリュームにアクセスできる場合、FTPアカウントの資格情報を空白のままにすることができます。FTP資格情報がない場合は、ソース・ディレクトリからターゲット・ディレクトリへのソース・ファイルのプレーン・コピーが試行されます。

接続テスト

「接続テスト」をクリックし、接続設定を検証します。Oracle Warehouse Builderにより、ソース・データベースへの接続、およびソース・コンピュータ上のFTPサービスへの接続(該当する場合)が試行されます。両方の資格証明が検証された後のみ成功メッセージが表示されます。

トランスポータブル・モジュールの作成

トランスポータブル・モジュールを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノードを開きます。

2. 「トランスポータブル・モジュール」ノードを右クリックして「新規」を選択します。
トランスポータブル・モジュールの作成ウィザードのようこそページが表示されます。

3. ウィザードでは次のタスクをガイドします。
トランスポータブル・モジュールの説明

ソース・ロケーションの選択

ターゲット・ロケーションの選択

インポートする表領域およびスキーマ・オブジェクトの選択

トランスポータブル・モジュール定義の確認

トランスポータブル・モジュールの説明

名前と説明ページで、トランスポータブル・モジュールの名前と説明(オプション)を入力します。

ソース・ロケーションの選択

ウィザード・ページから新しいソース・ロケーションを作成できるので、「トランスポータブル・モジュール・ソース・ロケーションの情報」の説明に従って、ウィザードを起動する前にトランスポータブル・モジュールのロケーションを定義することをお薦めします。

既存のロケーションを選択すると接続がテストされ、有効な接続を持つロケーションを指定するまで、次の処理に進むことができません。

ターゲット・ロケーションの選択

リストからターゲット・ロケーションを選択します。ターゲット・ロケーションが表示されない場合、「新規」をクリックして、「トランスポータブル・モジュールのソース・ロケーション情報」の説明に従ってターゲット・ロケーションを定義します。

インポートする表領域およびスキーマ・オブジェクトの選択

内容の定義ページを使用して、トランスポータブル・モジュールに含む表領域およびスキーマ・オブジェクトを選択します。左ペインの「使用可能なデータベース・オブジェクト」に、すべてのソース表領域、スキーマおよび使用可能なスキーマ・オブジェクトがリストされます。右ペインの選択したデータベース・オブジェクトにはオブジェクトを選択して移動した後オブジェクトが表示されます。

表領域を開いて各表領域内のスキーマと各スキーマ内のオブジェクトを表示します。ビューや順序のような表領域以外のスキーマ・オブジェクトは、表領域に格納されていない場合も、それぞれのスキーマ所有者の下にリストされます。同時に複数のオブジェクトを選択するには、[Ctrl]キーを押しながら選択します。トランスポータブル・モジュールには、次のタイプのオブジェクトを組み込むことができます。

- 表

- ビュー

- マテリアライズド・ビュー

- 順序

- PL/SQLファンクション、プロシージャおよびパッケージ

- オブジェクト・タイプ、可変長配列タイプおよびネストした表タイプ

使用可能なデータベース・オブジェクトフィールドから表領域およびスキーマを選択し、中央の矢印ボタンをクリックして、選択したデータベース・オブジェクトフィールドにオブジェクトを移動します。

使用可能なデータベース・オブジェクト

マウスをノードに置くことでデータ・ファイルの数とその合計サイズを表示できます。このウィザードではツールチップの情報が表示されます。

図17-4にツールチップが表示されたウィザードを示します。

図17-4 データ・ファイルの数と合計サイズの表示

「図17-4 データ・ファイルの数と合計サイズの表示」の説明

使用可能なデータベース・オブジェクトリストのオブジェクトの検出

懐中電灯アイコンをクリックして、ソース・データ・オブジェクトをタイプまたは名前ごとに検出します。「オブジェクト」フィールドで、%文字をワイルドカードとして使用して、検索のフィルタリングに使用する名前またはパターンを入力します。タイプ リストから、検索するオブジェクトのタイプを示します。必要なボックスを確認して、名前または説明で検索を実行します。

たとえば、オブジェクト」フィールドに'T%'と入力し、「タイプ」フィールドから表領域を選択して、「次を検索」をクリックします。使用可能なデータベース・オブジェクトナビゲーション・ツリーのカーソルでは、先頭が'T'の最初の表領域の名前を選択します。選択する表領域でない場合は、「次を検索」をクリックして次の表領域を検索します。この検索プロセス時に、ナビゲーション・ツリーではすべてのスキーマ名が展開され、すべての表領域が表示されます。

ヒント:
表などのスキーマ・レベル・オブジェクトを検索する場合は、検索を開始する前にナビゲーション・ツリーから表領域またはスキーマを選択することをお薦めします。これにより、すべての表領域にわたって検索が実行されることがなくなり、検索時間が大幅に短縮されます。

使用可能なデータベース・オブジェクトリストの検出:

スキーマ・ノードまたはスキーマの任意のノードをダブルクリックすると、フィルタ・パターンに入力できます。たとえば、T%を入力して「OK」をクリックすると、ナビゲーション・ツリーにTで始まるオブジェクトのみが表示されます。ナビゲーション・ツリーにはオブジェクト名とともにフィルタ基準が表示され、フィルタが適用されたオブジェクト・タイプについての有益なヒントを提供します。

図17-5にスキーマが選択されている内容の定義ページを示します。

図17-5 内容の定義ページで選択されているスキーマ・ノード

図17-5 内容の定義ページで選択されているスキーマ・ノード

トランスポータブル・モジュールに含めることのできないオブジェクト

トランスポータブル・モジュールに含めることのできないアイテムを選択した場合は、含めることのできないアイテムをリストし、理由を説明するダイアログ・ボックスが表示されます。

図17-6に「インポート・フィルタ」ダイアログ・ボックスを示します。

図17-6 「インポート・フィルタ」ダイアログ・ボックス

「図17-6 「インポート・フィルタ」ダイアログ・ボックス」の説明

トランスポータブル・モジュール定義の確認

サマリー情報を確認して、「終了」をクリックし、選択した表領域およびスキーマ・オブジェクトのメタデータをインポートします。

ワークスペースでトランスポータブル・モジュールを作成したら、トランスポータブル・モジュール・ノードにあるプロジェクト・ナビゲータに配置できます。ツリーを展開すると、インポートされた定義が表示されます。

Oracle Warehouse Builderでは、スキーマごとに個別のモジュールが作成されます。プロジェクト・ナビゲータのスキーマ名はソース・データベースのスキーマ名を反映しています。

トランスポータブル・モジュールに含まれるオブジェクトはソース・データベースを反映しているので、ユーザー・インタフェースを使用してこれらのオブジェクトを編集することはできません。ソース・データベースが変更されている場合、オブジェクトを再インポートできます。トランスポータブル・モジュールからオブジェクトを削除するには、オブジェクトを右クリックして、「削除」を選択します。このアクションでトランスポータブル・モジュールの定義からオブジェクトを削除しますが、基盤となるソース・データベースには影響されません。

トランスポータブル・モジュールの構成

プロジェクト・エクスプローラで、トランスポータブル・モジュールを右クリックして、「構成」を選択しターゲット・データベースへのデプロイを構成します。構成パラメータを次のレベルで設定します。

- トランスポータブル・モジュールの構成プロパティ

- スキーマの構成プロパティ

- ターゲット・データファイルの構成プロパティ

- 表領域の構成プロパティ

ほとんどの事例では、「パスワード」設定を除き、すべての構成パラメータでデフォルト設定を受け入れることができます。各ターゲット・スキーマにパスワードを指定する必要があります。ターゲットにスキーマが存在する場合は、既存のパスワードを指定します。スキーマが存在しない場合は、指定したパスワードでスキーマを作成できます。

企業のセキュリティ・ポリシーに応じて、データベース管理者のみがスキーマ・パスワードを把握する可能性があります。この場合、データベース管理者は各スキーマにパスワードを指定する必要があります。また、ターゲットにソース・スキーマに一致する既存のスキーマがない場合、開発者は新しいスキーマの新しいパスワードを定義できます。

トランスポータブル・モジュールの構成プロパティ

トランスポータブル・モジュールに次のランタイム・パラメータを設定します。

ターゲット・オペレーティング・システム・タイプ

ターゲットのオペレーティング・システムのタイプを選択します。Oracle Database 10g以前のリリースの場合、ターゲット・コンピュータのオペレーティング・システムのタイプはソース・コンピュータと同じである必要があります。Oracle Database 10g以降のリリースでは、オペレーティング・システムからオペレーティング・システムにデプロイできます。

作業ディレクトリ

トランスポータブル・モジュールのデプロイメント専用のターゲット・コンピュータ上にディレクトリを作成する必要があります。この専用ディレクトリには、一時ファイル、スクリプト、ログ・ファイル、トランスポータブル表領域のデータ・ファイルを含むラン・タイムで生成されたファイルが格納されます。専用ディレクトリを作成せずに、「作業ディレクトリ」としてフルパスを入力すると、生成されたファイルはランタイム・ホーム・ディレクトリの下に保存されます。

デプロイ内容

Oracle Warehouse Builderではトランスポータブル・モジュールの表のみをデプロイするか、ビュー、順序などの関連するカタログ・オブジェクトのすべてを一緒にデプロイするかを選択できます。表のみをデプロイする場合は、TABLES_ONLYを選択します。その他の場合は、ALL_OBJECTSを選択します。

TABLES_ONLYオプションを使用すると、トランスポータブル・モジュールのデータを更新できます。以前ALL_OBJECTSオプションを使用してデプロイしており、同じソースの表領域のみを置き換える必要がある場合、TABLES_ONLYオプションを使用してトランスポータブル・モジュールを再デプロイします。デプロイメントでは、ターゲットの既存の表領域が削除され、新しい表領域が挿入され、以前デプロイしたメタデータが再コンパイルされます。

同様に、データ・ポンプを使用してトランスポータブル・モジュールを以前デプロイした場合は、再デプロイメントによりトランスポータブル・モジュールの表のみが変更されます。

表領域の転送

デフォルトでは、この設定は有効で、表領域が転送されます。この設定を有効にする場合は、「ターゲット・データファイルの構成プロパティ」の下の設定も指定します。

ソース・データベースおよびターゲット・データベースの両方がOracle 10g以降である場合、この設定を無効にすることを検討してください。たとえば、表が100 KBであり表領域のサイズが10 MBである場合、表領域全体をデプロイすることなく表をデプロイできます。「表領域のトランスポート」を無効にすると、表のデプロイにOracle Data Pumpが使用され、「表が存在する場合のアクション」設定を指定できます。

注意:
ソース・ロケーションまたはターゲット・ロケーションがOracle 10g以外である場合、デフォルトで「表領域のトランスポート」オプションが設定されています。その場合は、「表領域のトランスポート」がデータ移動のための唯一の実装方法です。ソース・ロケーションおよびターゲット・ロケーションの両方がOracle 10gである場合、「表領域のトランスポート」の選択を解除し、Data Pumpを使用できます。

トランスポータブル・モジュールが選択されている場合、表17-1に示すように、ソース・ロケーションおよびターゲット・ロケーションのリリースに応じて、さらなる制限が適用されます。データ・レプリケーションをプランニングする場合は、次の制限を検討してください。通常、Oracle Database 10gリリース2は、優先されるターゲット・データベースです。

表17-1 データベース・リリース間でデータをレプリケートするための要件

ソース・ロケーション

ターゲット・ロケーション

10g

他のOracle 10gロケーションをターゲットとするには、両方のデータベースに同じキャラクタ・セットと同じ各国語キャラクタ・セットが設定されている必要があります。

Oracle8iまたはOracle9iロケーションをターゲットにすることはできません。

9i

Oracle9iロケーションまたはOracle Database 10gロケーションをターゲットとするには、両方のデータベースに同じキャラクタ・セットと同じ各国語キャラクタ・セットが設定されており、両方のデータベースが同じオペレーティング・システム・プラットフォーム上にある必要があります。

Oracle8iまたはOracle9iロケーションをターゲットにすることはできません。

8i

Oracle8i、Oracle9iまたはOracle Database 10gをターゲットにするには、次のすべてが必要です。

- ソース・データベースとターゲット・データベースの両方に同じキャラクタ・セットが設定されている。

- ソース・データベースとターゲット・データベースの両方に同じ各国語キャラクタ・セットが設定されている。

- ソース・データベースとターゲット・データベースの両方が同じオペレーティング・システム・プラットフォーム上にある。

- ソース・データベースとターゲット・データベースの両方に同じブロック・サイズである。

- 表領域の転送中にスキーマの名前を変更することはできない。

- 表領域の転送中にスキーマの名前を変更することはできない。

スキーマの構成プロパティ

トランスポータブル・モジュールに次のスキーマ・パラメータを設定します。

ターゲット・スキーマ名

このプロパティを使用すると、ターゲットにソース・スキーマがデプロイされるときにソース・スキーマの名前を変更できます。「デフォルト」を選択して、省略記号ボタンをクリックしてターゲットのスキーマの新しい名前を入力し、「OK」をクリックします。たとえば、SCOTTをSCOTT1に変更できます。

パスワード

既存のスキーマでは、スキーマの有効なパスワードを入力します。作成するスキーマでは、指定したパスワードでスキーマが作成されます。

デフォルト表領域

ターゲット・スキーマを作成するときに使用するデフォルト表領域を指定します。この設定を空白のままにすると、ターゲットが指定したデフォルトが使用されます。

スキーマが存在する場合のアクション

ターゲットにスキーマが存在する場合に実行するアクションを指定します。デフォルト値は「スキップ」です。

スキーマが存在しない場合のアクション

ターゲットにスキーマが存在しない場合に実行するアクションを指定します。デフォルト値は「作成」です。

スキーマが存在する場合のアクション

「表領域のトランスポート」が無効になっている場合、このプロパティを使用して、ターゲットに表が存在する場合に実行するアクションを指定します。デフォルト値は「スキップ」です。

ソース・スキーマのコピー

「表領域のトランスポート」の選択を解除してOracle Data Pumpを使用する場合は、このオプションを選択するとターゲットにソース・スキーマ全体をコピーできます。

パラレル

「表領域のトランスポート」の選択を解除してOracle Data Pumpを使用する場合は、データ転送の実行に使用するOracle Databaseの最大プロセス数を指定します。

ターゲット・データファイルの構成プロパティ

トランスポータブル・モジュールには次のデータ・ファイル・パラメータを設定する必要があります。

ディレクトリ

ターゲット・コンピュータ上のデータ・ファイルの格納先のディレクトリを指定します。このディレクトリを指定しないままにすると、データ・ファイルは作業ディレクトリに格納されます。

ファイル名

ターゲット・コンピュータに作成するデータ・ファイルの名前を指定します。このパラメータを使用してデータ・ファイルの名前を変更できます。「デフォルト」受け入れてソース・データベースのデータ・ファイル名を保持するか、省略記号ボタンをクリックしてデータ・ファイルの新しい名前を入力し、「OK」をクリックします。

上書き

このパラメータを選択すると、既存のデータ・ファイルが上書きされます。その他の場合は、既存のデータ・ファイルが見つかるとデプロイメントが終了します。

表領域の構成プロパティ

「表領域のトランスポート」を有効にする場合、トランスポータブル・モジュールの表領域パラメータを設定します。

表領域名

Oracle Database 10gより前のバージョンのデータベースを使用している場合、ターゲット表領域名はソース表領域名と同じである必要があります。この場合、このフィールドは読取り専用です。ターゲット・データベースに同じ名前を持つ表領域が含まれる場合、ランタイム操作によりまず既存の表領域が削除され、新しい表領域に置き換えられます。

Oracle 10g以降を使用する場合は、ターゲットの表領域名を変更できます。

既存の表領域の削除

この設定が選択されている場合は、既存の表領域が削除されターゲットで再作成されます。デフォルトでは、この設定は選択されていないため、同じ名前の表領域が存在する場合、ターゲット内の表領域を削除することはできません。この場合、デプロイメント・プロセスがエラーで停止します。

トランスポータブル・モジュールの生成とデプロイ

トランスポータブル・モジュールをデプロイする場合、ビューなどのその他のカタログ・オブジェクトが個別に表示される間にすべての表を含むようにコントロール・センターにトランスポータブル・モジュールが表示されます。トランスポータブル・モジュールのデプロイ・アクションを選択すると、コントロール・センターでは関連付けられているカタログ・オブジェクトが同じデプロイ・アクションに設定されます。

トランスポータブル・モジュールのデプロイメント時には、デプロイメントの進行状況をユーザーが監視する2通りの方法があります。最初の方法は、「ジョブ詳細」ウィンドウを使用します。このステータス行は最新のステータスですぐに更新されます。ステータス行のすぐ上のメッセージ・ボックスにそれまでにログされたすべてのメッセージが表示されます。

進行状況を監視するもう1つの方法は、トランスポータブル・モジュール配布プロセスで生成されるログ・ファイルを監視することです。トランスポータブル・モジュール・ログ・ファイルは、ユーザーが構成した「作業ディレクトリ」に作成されます。ファイル名はTM Name.logです。たとえば、トランスポータブル・モジュールの名前がTM1の場合はTM1.logになります。このファイルは、ジョブ詳細ウィンドウのメッセージ・ボックスに表示されるものと同じメッセージを含む、プレーン・テキスト・ファイルです。例17-1は、トランスポータブル・モジュール・ログ・ファイルの内容を示しています。

現在、ログ・ファイルを表示するために合計16の手順があります。ユーザー構成に応じて、スキップされる手順もあれば、参照表でエラーが見つからないために参照制約を作成できないなど、トランスポータブル・モジュールが無視できるとみなしたエラー・メッセージを含む手順もあります。このログ・ファイルには、重要な情報が含まれています。トランスポータブル・モジュールの配布中および配布の完了後に、慎重に確認する必要があります。

例17-1 重要な情報を含むログ・ファイル

step1 begin: making connection to target db ...
step1 end: connected to target
Target OWB_HOME = /data/oracle/ora1010
step2 begin: making connection to source db...
step2 end: skipped.
step3 begin: making source tablespaces read only...
step3 end: skipped.
step4 begin: exporting tts...
step4 end: skipped.
step 5 begin: checking for existing datafiles on target...
step5 end: skipped.
step 6 begin: drop existing tablespaces
step6 end: skipped.
step7 begin: transporting datafiles...
step7 end: skipped.
step8 begin: managing schemas/users ...
step8 end: completed setting up target schemas
step9 begin: drop non-table schema objects...
step9 end: nothing to drop.
step10 begin: converting datafiles...
step10 end: skipped.
step 11 begin: importing tts ...
find or create a usable dblink to source.
step11 end: importing tts is not requested by user.
step 11 end: import tts is successful
step 12 begin: restore source tablespaces original status ...
step12 end: skipped.
step13 end: skipped.
step14 begin: non-tts import ...

Import: Release 10.1.0.4.0 - Production on Tuesday, 04 April, 2006 10:43
Copyright (c) 2003, Oracle.  All rights reserved.

Username:
Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - Production
With the Partitioning, OLAP and Data Mining options
Starting "TMTGT_U"."SYS_IMPORT_TABLE_02":  TMTGT_U/********@(DESCRIPTION=(ADDRESS=(HOST=LOCALHOST)(PROTOCOL=tcp)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORA1010.US.ORACLE.COM))) parfile=/home/ygong/tmdir/TM1_imptts.par
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TBL_TABLE_DATA/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 64 KB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . imported "TMU1"."TA"                                      2 rows
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
ORA-39083: Object type REF_CONSTRAINT failed to create with error:
ORA-00942: table or view does not exist
Failing sql is:
ALTER TABLE "TMU1"."TA" ADD CONSTRAINT "TA_T1_FK" FOREIGN KEY ("C") REFERENCES "TMU1"."T1" ("C") ENABLE

Job "TMTGT_U"."SYS_IMPORT_TABLE_02" completed with 1 error(s) at 10:44
step14: import has failures.
step14 end: non-tts import completed with warnings
step15 end: create flat file directories skipped.
step16 end: transporting flat files skipped.

トランスポータブル・モジュールによってデータをアクセスするマッピングの設計

トランスポータブル・モジュールのデプロイに成功したら、ETL設計でトランスポータブル・モジュールのオブジェクトを使用できます。マッピングにソース演算子およびターゲット演算子を追加すると、トランスポータブル・モジュール・フォルダからオブジェクトを選択できます。

トランスポータブル・モジュールの編集

トランスポータブル・モジュールはプロジェクト・ナビゲータのデータベース・ノード内のトランスポータブル・モジュール・ノードに下にあります。

トランスポータブル・モジュールを編集するには、プロジェクト・ナビゲータからトランスポータブル・モジュールの名前を右クリックし、「開く」を選択します。Oracle Warehouse Builderにより、4つのタブを含む「トランスポータブル・モジュールの編集」ダイアログ・ボックスが表示されます。

名前

「名前」タブで、トランスポータブル・モジュールの名前と説明を編集できます。

ソース・ロケーション

Oracle Warehouse Builderではこの接続情報を使用してソース・コンピュータにアクセスしたり、メタデータをワークスペースにインポートしたりします。また、実行時にこの情報を使用して、表領域データをソースからターゲットに移動します。

「ソース・データベース」タブは読取り専用です。ソース・コンピュータから表領域をインポートしたら、ロケーション情報は変更できません。

表領域

「表領域」タブには転送する表領域とそのサイズが表示されます。このタブは読取り専用です。また、表領域の個別のデータ・ファイルの表領域サイズも表示できます。詳細は、「表領域プロパティの表示」を参照してください。

ターゲット・ロケーション

使用可能なターゲット・ロケーションと選択したターゲット・ロケーションが表示されます。ロケーションは「使用可能なロケーション」から「選択されたロケーション」に移動したり、新しいロケーションを構成したりできます。

表領域プロパティの表示

プロジェクト・ナビゲータで表領域の名前を右クリックし、「開く」を選択すると、表領域のプロパティを表示できます。「表領域の編集」ダイアログ・ボックスが開きます。このプロパティ・シートには、表領域内の各データファイルのサイズが表示されます。「名前」と「ソース・データファイル」の2つのタブがあります。

トランスポータブル・モジュールへのメタデータの再インポート

前回のトランスポータブル・モジュールの作成以降にソース・データを変更した場合、メタデータを再インポートしてワークスペース定義を更新できます。再インポートダイアログ・ボックスを開き、トランスポータブル・モジュールの作成時に指定したソース・ロケーションが格納され、ソース・オブジェクトが表示されます。

トランスポータブル・モジュールの定義を再インポートする手順は、次のとおりです。

1. プロジェクト・ナビゲータで、トランスポータブル・モジュールの名前を右クリックして再インポートを選択します。
トランスポータブル・モジュールの再作成ダイアログ・ボックスが表示されます。

2. 使用可能なデータベース・オブジェクト列で、再インポートするオブジェクトを選択します。
以前ワークスペースにインポートしたデータベース・オブジェクトは太字で表示されます。また、新しい定義をインポートすることもできます。

3. 矢印ボタンを使用して、選択したデータベース・オブジェクト列にオブジェクトを移動して、「OK」をクリックします。

Oracle Warehouse Builderでは既存の定義が再インポートされ、新しい定義が作成されます。トランスポータブル・モジュールでは変更が反映され、再インポートの完了後更新されます。

第III部

データのプロファイリングとデータ品質

Oracle Warehouse Builderでは、ETLプロセスの一部にできるデータ品質機能が提供されます。これにより、データ・プロファイリングの実行やデータ・コンプライアンスのチェックも可能になります。

関連項目:
データ品質およびデータ・プロファイリングの概要は、『Oracle Warehouse Builder概要』を参照してください。

構成は次のとおりです。

- 第18章「データ・プロファイリングの実行」

- 第19章「データ・ルールの設計と導出」

- 第20章「データ監査およびデータ・ルールによる品質の監視」

- 第21章「データ・ルールによるデータ整備とデータ修正」

- 第22章「名前とアドレスのクレンジング」

- 第23章「照合、マージおよび重複除外」

18 データ・プロファイリングの実行

この章では、Oracle Warehouse Builderのデータ・プロファイリング機能、およびOracle Warehouse BuilderのETLまたはその他のETLツールを使用してこの機能を使用する方法を説明します。

この章の内容は次のとおりです。

- データ・プロファイリングの概要

- データ・プロファイリングの実行

- プロファイリングのパフォーマンス向上を目的としたデータ・プロファイリング・プロセスのチューニング

- Oracle Master Data Management(MDM)で使用するデータの監視および修復(DWR)

データ・プロファイリングの概要

データ・プロファイリングでは、データ・ウェアハウジングまたはその他のデータ統合シナリオでソース・データを使用する前にその品質を評価できます。

データ・プロファイリングではデータ内の内容、構造および関係を分析し、パターンおよびルール、矛盾、異常、冗長性を検出します。

データ・プロファイリングは、データ統合またはウェアハウス・シナリオにおけるあらゆるソースに適用できる他、MDMシナリオのマスター・データ・ストアに適用できます。また、データ・ディクショナリに定義された基本的メタデータ以上の情報の検出が可能なため、新規のソースが関係するあらゆるシナリオで便利に使用できます。

Oracle Warehouse Builderがサポートするデータ・プロファイリング用のソース

Oracle Warehouse Builderのデータ・プロファイリングでは、次のソース・タイプがサポートされています。

- Oracleデータベース

- OracleゲートウェイまたはODBCでアクセスするデータ・ソース

- フラット・ファイル・ソース
フラット・ファイルをプロファイリングするには、Oracle Warehouse Builderでフラット・ファイルをインポートし、フラット・ファイルに基づいて外部表を作成してから、外部表をプロファイルする必要があります。

- SAP R/3およびその他のERPアプリケーション・ソース

注意:
データ・プロファイリングではJDBCでアクセスしたソースはサポートしません。

Oracle Warehouse Builderデータ・プロファイリングとOracle Warehouse Builder ETLとの併用

Oracle Warehouse Builderのデータ・プロファイリングおよびその他のデータ品質機能では、次の方法で、Oracle Warehouse Builder ETLから値を導出したり、Oracle Warehouse Builderに値を追加します。

- Oracle Warehouse Builderのデータ品質ではデータ・ルールに基づいてデータ・クレンジング・ロジックを自動的に生成できます。クレンジング・プロセスが、他のETLマッピングと同じ機能を持つ、自動的に生成されたETLマッピングにより実装されます。データ・クレンジング・プロセスのデプロイメント、実行およびスケジューリングはその他のマッピングと同一です。Oracle Warehouse Builder ETL機能に習熟した開発者であれば、たとえば、データ・クレンジング・プロセスのパフォーマンスの調整や生成されたコードの確認などを、他のETLマッピングの場合と同様に実行できます。カスタム・データ・クレンジングおよび修正ロジックが必要な場合は、PL/SQLで実装できます。

- データ・プロファイリング結果に関するメタデータは、データ・ルールとして表され、プロファイリング対象のデータ・オブジェクトにバインドできます。このようなルールは、プロファイリング対象のオブジェクトをETLで使用する任意のコンテキストで使用できます。
たとえば、Oracle Warehouse Builder ETLはETLロジックのデータ・ルールを使用して、表内の準拠行および非準拠行の別のデータ・フローを実装できます。非準拠行はデータベースで有効なデータ・クレンジング、修正および改良のロジックを使用してルーティングされ、通常のマッピング演算子を使用して転送されるか、単にエラー表に記録されます。非準拠行を処理する他のオプションに必要なすべてのロジックは、データ・ルールを使用するOracle Warehouse Builderマッピングに対して自動的に生成されます。

また、Oracle Warehouse Builderのデータ・プロファイリング機能ではOracle Warehouse Builder ETLのインフラストラクチャを使用してデータ・ソースに接続し、プロファイリング対象のデータにアクセスし、プロファイリング・ワークスペースと呼ばれるスクラッチ領域に中間のプロファイリング結果を移動します。

Oracle Warehouse Builderデータ・プロファイリングのその他のETLソリューションとの併用

Oracle Warehouse Builderのデータ・プロファイリングおよびデータ品質は、任意のサード・パーティのETLソリューションまたはハンドコードされたETLソリューションと併用できます。このようなシナリオの使用モデルは次のとおりです。

- 既存のETLソリューションをそのままにする

- Oracle Warehouse Builderで、データ・ソースに接続するためのワークスペースおよびロケーションを作成します。

- データ・プロファイルを作成し、プロファイリングするオブジェクトを追加し、プロファイリング・パラメータを設定します。

- プロファイリング・ジョブの実行

- データ・プロファイル・エディタで結果を確認

- プロファイリング結果に基づいてデータ・ルールを導出し、データのパターンをより適切に理解して文書化します。

これらのタスクの実行方法の詳細は、「データ・プロファイリングの実行」を参照してください。

Oracle Warehouse Builderのデータ・クレンジングおよび修正機能をサード・パーティのETLソリューションと併用することもできます。データ・クレンジングと修正の詳細は、第21章「データ・ルールによるデータ整備とデータ修正」を参照してください。データ監査の詳細は、第20章「データ監査およびデータ・ルールによる品質の監視」を参照してください。

データ・プロファイル・エディタについて

データ・プロファイル・エディタでは、Oracle Warehouse Builderのデータ・プロファイリング、データ・ルールおよびデータ・クレンジング機能のほとんどの主要なユーザー・インタフェースを提供します。データ・プロファイル・エディタで、次のことを実行できます。

- データ・プロファイリング、つまり、選択したオブジェクトの属性分析および構造分析を設定して実行します。

- プロファイル分析およびソース表ルールに基づく新しいターゲット・スキーマを生成します。このターゲット・スキーマはすべてのデータがプロファイルのオブジェクトに適用されているデータ・ルールに準拠しています。

- データ・ルール戦略および選択したクレンジング戦略に基づいてデータ修正を実行するマッピングおよび変換を自動的に生成します。

図18-1に、データ・プロファイル・エディタを示します。

図18-1 データ・プロファイル・エディタ

「図18-1 データ・プロファイル・エディタ」の説明

データ・プロファイル・エディタには、次のユーザー・インタフェースがあります。

- メニュー・バー

- ツールバー

- オブジェクト・ツリー

- プロパティ・インスペクタ

- モニター・パネル

- プロファイル結果キャンバス

- データ・ドリル・パネル

- データ・ルール・パネル

各パネルの内容の詳細は、オンライン・ヘルプを参照してください。

データ・プロファイリングの実行

データ・プロファイリングはリソース集中型であるため、特に大容量のデータではプロファイル実行時間がきわめて長くなる場合があります。1つまたはすべてのソース・システムの全体の内容のプロファイリングは、有効なプロファイリング結果を生成するうえで最も効率的な方法ではない可能性があります。初回の限定的なデータ・プロファイリングでは、次にプロファイルする内容を決定するうえで使用する検出を生成する反復的なアプローチは、プロファイリング対象が大規模で複雑なソースのセットに対応する必要がある場合に、より効果的な可能性があります。

次のガイドラインでは、データ・プロファイリング結果の有効性を向上させるとともに、プロファイリングの時間と手間を削減できます。

- 多数のダウンストリーム・オブジェクトに影響するソースまたは影響されるオブジェクトがシステムの最重要の出力であるソースをプロファイリングします。たとえば、ソース表に多数のダウンストリームのビジネス・インテリジェンス・レポートの内容に影響するデータを含む場合、その表のプロファイリングを検討します。特定の列のみをダウンストリーム・ターゲットで使用する場合、属性セットを使用してそれらの列にプロファイリングを限定することを検討します。

ヒント:
Oracle Warehouse Builderのデータ系統機能およびデータ影響分析機能を使用して、システム内で大きな影響を受けるソースを識別します。詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

- エラーの可能性のあるデータを含む可能性が高いソースをプロファイリングします。たとえば、手動で入力されている顧客および発注データは、仕入先からダウンロードした製品データよりエラーを含む可能性が高くなります。

- 特に最初のデータ品質が不明なソースでは、任意の既存システムに新しいソースを統合する前にそのソースをプロファイリングします。

- ソースのドキュメントがある場合、このドキュメントに基づいてデータ・ルールを定義し、そのルールに準拠するデータに絞ってプロファイリングします。準拠するデータがない場合は、より全体的なプロファイリングを検討します。

- 重要な結果を提供する可能性が低いプロファイリング・タイプを無効にします。たとえば、初回のプロファイリングの引渡しをドメイン検出のみに限定して実行したり、機能の依存性の検出などより高度で演算が集中するプロファイリング・タイプの前に実行することをお薦めします。

- 最初は、ソースのコンテンツ全体をプロファイリングするのではなく、プロファイリングをデータのランダム・サンプリングに制限します。データ・ルールの最初のセットを識別したら、それらのルールへの準拠性についてすべての行をプロファイリングできます。

たとえば、5つの表CUSTOMERS、REGIONS、ORDERS、PRODUCTSおよびPROMOTIONSを含むデータ・ソースについて検討します。次の情報があります。

- CUSTOMERS表は、多くの重複エントリおよびエラーの可能性があるエントリを含むことが分かっており、マーケティング・キャンペーンの作成で使用されます。

- ORDERS表には、手書きの書式や電話の注文から転写した発注データを含みます。

- PRODUCTS表には、信頼できる仕入先からダウンロードしたデータが含まれており、自由書式のテキストを含むVARCHAR2(4000)列のDESCRIPTIONがあります。

- ソース・システムのマニュアルにORDERS表とREGIONS表の間に外部キー関係があると記載されていても、このマニュアルは数年前のもので、ソース・システムが変わっている可能性があります。

このような場合、最初のプロファイリング・プロセスを次のように制限できます。

- 他の表の前にCUSTOMERS表をプロファイリングします。これは、この表がエラーを含むことが分かっているためです。

- すべてのプロファイリングからPRODUCTS.DESCRIPTION列を除外します。これは、自由形式のテキストはプロファイリングで有効な情報を生成する可能性が低いためです。

- ランダム・サンプリングを使用してすべての表から限定された数の行をプロファイリングします。

- ORDERS表およびREGIONS表をプロファイリングし、外部キー関係をテストします。

その後は、最初の引渡しでの検出内容に基づいてその後のプロファイリングを実行できます。

関連項目:
データ・プロファイリング・プロセスのチューニング方法の詳細は、「プロファイリングのパフォーマンス向上を目的としたデータ・プロファイリング・プロセスのチューニング」を参照してください。

データ・プロファイリングの制限

- Oracleデータベースに格納されているデータ、Oracle Gatewayにアクセス可能なデータ、SAPシステムのデータのみをプロファイリングできます。フラット・ファイルに格納されているデータをプロファイリングしてから、そのフラット・ファイルに基づいて外部表を作成する必要があります。

- JDBCベース接続でアクセスするプロファイル・データを直接プロファイリングすることはできません。Oracleデータベースのこのデータを最初にステージングしてからプロファイリングする必要があります。

- データ・プロファイリングでは必ずデフォルト構成を使用します。複数の構成を使用する顧客は、デフォルト構成にプロファイリング用の適切な設定が含まれていることを確認します。

- プロファイリング・ワークスペース・ロケーションは、Oracle 10gデータベース以上である必要があります。

- ソース・モジュールおよびデータ・プロファイルが異なるデータベース・インスタンス上にある場合は、複雑なデータ型を含むソース表をプロファイルできません。

- データ・プロファイリングは各表、ビューまたはマテリアライズド・ビューの165列を超えるデータを一度に解析できません。165を超える列を含むオブジェクトをプロファイリングする場合は、属性セットを作成してプロファイリングする列のサブセットを選択する必要があります。詳細は、「属性セットを使用したデータ・オブジェクトの列のサブセットのプロファイル」を参照してください。

データ・プロファイリングの前提条件

- データ・オブジェクトをプロファイリングする前に、データ・プロファイリングを実行するソース・オブジェクトの正しいメタデータをプロジェクトが含むことを確認します。

- プロファイリングするオブジェクトには、ソース・データが含まれている必要があります。たとえば、ステージング領域に格納されている表をプロファイリングする場合、プロファイルを実行する前にソースからステージング表をロードする必要があります。

- データ・プロファイリングではマッピングを使用してプロファイリングを実行するため、使用するすべてのロケーションが登録されていることを確認する必要があります。データ・プロファイリングではロケーションの登録が試行されます。なんらかの理由で、データ・プロファイリングでロケーションを登録できない場合は、プロファイリングを開始する前にロケーションを明示的に登録する必要があります。

関連項目:
メタデータのインポートの詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

データ・プロファイリングの実行ステップ

データ・プロファイリングを準備するには、プロジェクトに1つ以上のデータ・プロファイルを作成する必要があります。データ・プロファイル・オブジェクトはそれぞれプロジェクト内のメタデータ・オブジェクトです。データ・プロファイル・オブジェクトでは次を格納します。

- プロファイリングするオブジェクトのセット

- このオブジェクトのセットに対して実行するプロファイリングのタイプ

- プロファイリング操作をコントロールするしきい値などの設定

- これらの設定するデータ・プロファイリングの最新の実行で返される結果

- プロファイリング結果から生成されるデータの修正に関するメタデータ

プロファイリングするオブジェクトを決定した後は、次のステップに従ってプロファイリング・プロセスを実行します。

1. プロジェクト・ナビゲータで、プロジェクト・ノードを開いてプロファイリングするすべてのオブジェクトをこのプロジェクトにインポートします。
「データ・プロファイリングの前提条件」を参照してください。

2. オブジェクトをインポートしたプロジェクトで、プロファイリングするオブジェクトを含むデータ・プロファイル・オブジェクトを作成します。
「データ・プロファイルの作成」を参照してください。

3. データ・プロファイルを構成し、プロファイリング対象データに対して実行する分析のタイプを指定します。
「データ・プロファイルの構成」を参照してください。

4. データをプロファイリングし、前のステップで指定した分析のタイプを実行します。
「データのプロファイリング」を参照してください。

5. データ・プロファイリングの結果を確認し、分析します。
「プロファイル結果の表示」を参照してください。

プロファイリング結果に基づいて、スキーマおよびデータの修正の生成を決定できます。これらの修正はOracle Warehouse Builderが自動的に生成します。スキーマの修正およびデータの修正の自動的な生成の詳細は、「データ・プロファイリングの結果からの修正マッピングの生成」を参照してください。

また、データ・プロファイリング結果に基づいて、データ・ルールを導出することもできます。プロファイリングの結果に基づくデータ・ルールの導出の詳細は、「データ・プロファイリング結果からのデータ・ルールの導出」を参照してください。

データ・プロファイリングの作成

ロケーションの準備が完了し、データが使用可能になったら、デザイン・センターでデータ・プロファイル・オブジェクトを作成する必要があります。データ・プロファイルは、ワークスペース内のメタデータ・オブジェクトで、プロファイリングするデータ・オブジェクトのセット、プロファイル操作の管理の設定、データをプロファイリングした後に戻す結果、および修正情報(これらの修正を使用する場合)を指定します。

データ・プロファイルを作成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、データ・プロファイルを作成する「プロジェクト」ノードを開きます。

2. 「データ・プロファイル」を右クリックして新規データ・プロファイルを選択します。
データ・プロファイルウィザードのようこそページが表示されます。

3. ようこそページで「次へ」をクリックします。

4. 名前と説明ページで、データ・プロファイルの名前と説明(オプション)を入力します。「次へ」をクリックします。

5. オブジェクトの選択ページで、データ・プロファイルに含めるオブジェクトを選択し、矢印を使用してこれらを「選択済」リストに移動します。「次へ」をクリックします。
複数のオブジェクトを選択するには、オブジェクトの選択中に[Ctrl]キーを押し続けます。データ・プロファイルに表、ビュー、マテリアライズド・ビュー、外部表、ディメンションおよびキューブを含めることができます。

6. 属性セットを含む表、ビューまたはマテリアライズド・ビューを選択した場合、「属性セットの選択」ダイアログ・ボックスが表示されます。このダイアログ・ボックスの最下部にあるリストに、データ・オブジェクトで定義した属性セットが表示されます。

- 属性セットに定義されている属性のみをプロファイリングするには、リストから属性セットを選択します。

- データ・オブジェクトのすべての列をプロファイリングするには、リストから<すべての列>を選択します。

7. オブジェクトの選択ページでディメンション・オブジェクトを選択した場合、これらのディメンション・オブジェクトにバインドされるリレーショナル・オブジェクトもプロファイルに追加されることを示す警告が表示されます。次に進むには、「はい」をクリックします。

8. サマリー・ページで、前のウィザード・ページでの選択を確認します。「戻る」をクリックして、選択した値を変更します。データ・プロファイルを作成するには、「終了」をクリックします。
Oracle Warehouse Builderの「注意」ダイアログが表示されます。「OK」をクリックし、新しく作成したデータ・プロファイルのデータ・プロファイル・エディタを表示します。

ナビゲーション・ツリーの「データ・プロファイル」ノードに、この新規データ・プロファイルが追加されます。

データ・プロファイルの構成

特定のタイプを分析する場合または分析しない場合は、データ・プロファイルを実行する前に構成する必要があります。

データ・プロファイルは、次のいずれかのレベルで設定できます。

- プロファイル全体(プロファイルに含まれるすべてのオブジェクト)

- データ・プロファイルの個別オブジェクト
たとえば、データ・プロファイルには3つの表が含まれます。1つの表に対して特定のタイプの分析を実行する場合、この表のみを構成します。

- オブジェクト内の属性
たとえば、表内の1つの列のみが問題となっており、ほとんどのレコードは特定ドメイン内の値に一致していることがわかっている場合です。プロファイリング・リソースをドメインの検出と分析に集中できます。必要なプロファイリングのタイプを絞り込むことによって、使用するリソースが減り、結果をより速く取得できます。

データ・プロファイルの構成の実行ステップ

1. プロジェクト・ナビゲータで、データ・プロファイルを右クリックして「開く」を選択します。
データ・プロファイルに対するデータ・プロファイル・エディタが表示されます。

2. 構成パラメータを設定するレベルを選択します。

- データ・プロファイル全体を構成するには、「プロファイル・オブジェクト」タブで、データ・プロファイルを選択します。

- 「プロファイル・オブジェクト」タブで、データ・プロファイルの特定のオブジェクトを構成するには、データ・プロファイルを表すノードを開きます。データ・オブジェクト名をクリックしてデータ・オブジェクトを選択します。

- データ・プロファイルのオブジェクトで属性を構成するには、「プロファイル・オブジェクト」タブで、データ・プロファイルを表すノードを開きます。属性が含まれるデータ・オブジェクトを開き、属性名をクリックして必要な属性を選択します。

3. 「プロパティ・インスペクタ」パネルを使用して必要な構成パラメータを設定します。
構成パラメータはロード、集計、パターン検出、ドメイン検出、関係属性カウント、一意キー検出、関数従属性検出、行関係検出、冗長列検出、およびデータ・ルール・プロファイリングのタイプに分類されます。次の項では、各カテゴリのパラメータを説明します。

ロード構成パラメータ

表18-1ではこのカテゴリのパラメータを説明します。

表18-1 ロード構成パラメータの説明

構成パラメータ名

説明

データ型検出を使用可能にする

このパラメータをTRUEに設定すると、選択した表のデータ型検出が有効になります。

共通形式検出を使用可能にする

このパラメータをTRUEに設定すると、選択した表の共通形式検出が有効になります。

データをワークスペースにコピー

このパラメータをTRUEに設定すると、ソースからプロファイル・ワークスペースへのデータのコピーが有効になります。

ランダム・サンプル率

この値は、ロード時にランダムに選択される合計行のパーセントを表します。

プロファイルを常に強制実行する

このパラメータをTRUEに設定すると、データ・プロファイラがデータ・オブジェクトの再リロードと再プロファイリングを強制実行します。

サンプル・セット・フィルタ

データをプロファイル・ワークスペースにロードするときにソースに適用されるWHERE句を表します。このフィールドの省略記号ボタンをクリックして、「式ビルダー」を表示します。これを使用してWHERE句を定義します。

NULL値表現

プロファイリング時にこの値はNULL値とみなされます。値は一重引用符で囲む必要があります。デフォルト値はNULLであり、データベースNULLとみなされます。

集計構成パラメータ

このカテゴリは、「NOT NULL推奨率」というパラメータ1つで構成されています。列内のNULL値の割合がこのしきい値の割合より低い場合、その列はNOT NULLの可能性がある列として検出されます。

パターン検出構成パラメータ

- パターン検出の有効化: このパラメータをTrueに設定すると、パターン検出が使用可能になります。

- 最大パターン数: プロファイラが属性に対して取得するパターンの最大数を表します。たとえば、このパラメータを10に設定すると、プロファイラは属性に対して上位10パターンを取得します。

ドメイン検出構成パラメータ

表18-2ではこのカテゴリのパラメータを説明します。

表18-2 ドメイン検出構成パラメータの説明

構成パラメータ名

説明

ドメイン検出の有効化

このパラメータをTrueに設定すると、ドメイン検出が使用可能になります。

ドメイン検出最大個別値件数

列内の個別値の最大数で、その列がドメインによって定義されている可能性があると検出されるためのものです。その列内の個別値の数が最大の個別値カウント・プロパティと同じかそれ以下で、個別値の数の行数合計に占める割合が最大の個別値パーセント・プロパティと同じかそれ以下である場合、列のドメイン検出が発生します。

ドメイン検出最大個別値パーセント

列内の個別値の最大数を表中の行数合計に対する割合で表したもので、その列がドメインによって定義されている可能性があると検出されるためのものです。その列内の個別値の数が最大の個別値カウント・プロパティと同じかそれ以下で、個別値の数の行数合計に占める割合が最大の個別値パーセント・プロパティと同じかそれ以下である場合、列のドメイン検出が発生します。

ドメイン値準拠最小行数

指定された個別値の行の最小数で、その個別値がドメインに準拠しているとみなされるための数値です。その値を持つ行の数が最小の行カウント・プロパティと同じかそれ以上で、その値を持つ行の数の行数合計に占める割合が最小の行パーセント・プロパティと同じかそれ以上である場合、値に対するドメイン値準拠が発生します。

ドメイン値準拠最小行パーセント

指定された個別値の行の最小数を行数合計に対する割合で表したもので、その個別値がドメインに準拠しているとみなされるための数値です。その値を持つ行の数が最小の行カウント・プロパティと同じかそれ以上で、その値を持つ行の数の行数合計に占める割合が最小の行パーセント・プロパティと同じかそれ以上である場合、値に対するドメイン値準拠が発生します。

関係属性カウント構成パラメータ

このカテゴリには、「最大属性カウント」パラメータが含まれています。これは、一意キー、外部キーおよび機能依存プロファイリングの属性の最大数です。

一意キー検出構成パラメータ

- 一意キー検出の有効化: このパラメータをTrueに設定すると、一意キー検出が使用可能になります。

- 最小一意性割合: これは、一意キー関係を満たすために必要な行の最小割合です。

関数従属性検出構成パラメータ

- 関数従属性検出の有効化: このパラメータをTrueに設定すると、関数従属性検出が使用可能になります。

- 最小関数従属性割合: これは、関数従属性を満たすために必要な行の最小割合です。

行関係検出構成パラメータ

- 関係検出の有効化: このパラメータをTrueに設定すると、外部キー検出が使用可能になります。

- Soundex関係の検出を使用可能にする: このパラメータをTRUEに設定すると、文字列データ型を含む列でのsoundex関係の検出が有効になります。これらの属性は関係検出の一部であることを確認する必要があります。

- 最小関係割合: これは、外部キー関係を満たすために必要な行の最小割合です。

- 最小Soundex関係割合: これは、Soundex関係を満たすために必要な行の最小割合です。同じSoundexの値を含む値は同じであるとみなされます。

冗長列検出構成パラメータ

- 冗長列検出の有効化: このパラメータをTrueに設定すると、外部キーと一意キーのペアに対して冗長列検出が使用可能になります。

- 最小冗長性割合: これは、冗長な行の最小割合です。

パフォーマンス構成

このカテゴリには、マテリアライズド・ビューの作成を有効化パラメータが含まれます。このパラメータをTRUEに設定すると、データ・プロファイルのすべての表の各列にマテリアライズド・ビューを作成します。これによりドリルダウン中の問合せのパフォーマンスが強化されます。

データ・ルール・プロファイリング構成パラメータ

このカテゴリには、「表のデータ・ルール・プロファイリングを使用可能にします。」パラメータが含まれています。このパラメータを「True」に設定すると、選択した表のデータ・ルール・プロファイリングが使用可能になります。この設定を適用できるのは表のみで、個別の属性には適用できません。

データのプロファイリング

選択したオブジェクトのディープ・スキャンを実行すると、データ・プロファイリングが実行されます。実行するプロファイリングのオブジェクト数やタイプによって、時間がかかる場合があります。ただし、プロファイリングは非同期のジョブとして実行されるため、プロファイリング・プロセス中にデザイン・センター・クライアントを閉じることができます。ETLジョブと同様に、ジョブ・モニターで実行中のジョブを参照できます。プロファイリング・ジョブが完了すると、Oracle Warehouse Builderにより、ジョブが完了した旨が表示されます。

データ・プロファイリングの実行ステップ

データ・プロファイルを作成した後、それをデータ・プロファイル・エディタで開いてデータをプロファイリングしたり、以前に実行したプロファイルの結果を確認できます。データ・プロファイル・エディタのオブジェクト・ツリーには、プロファイルの作成時に選択したオブジェクトが表示されます。「プロファイル」、「追加」の順に選択すると、プロファイルにオブジェクトを追加できます。

データ・プロファイルを使用してデータをプロファイリングするには:

1. プロジェクト・ナビゲータで「データ・プロファイル」ノードを開き、データ・プロファイルを右クリックして「開く」を選択します。
選択したデータ・プロファイルがデータ・プロファイル・エディタに開きます。

2. データ・プロファイルを構成していない場合は、「データ・プロファイルの構成」の説明に従ってデータ・プロファイルを構成します。

3. 「プロファイル」メニューから「プロファイル」を選択します。
初めてデータをプロファイリングする場合は、「データ・プロファイル設定」ダイアログ・ボックスが表示されます。プロファイリング・ワークスペースの詳細を入力します。入力する情報の詳細は、「ヘルプ」をクリックしてください。

Oracle Warehouse Builderでは、プロファイリングに使用するメタデータの準備を開始します。進行状況ウィンドウには、データをプロファイリングするために作成されているオブジェクト名が表示されます。メタデータの準備が完了した後、「プロファイリングが開始されました」ダイアログ・ボックスで、プロファイリング・ジョブが開始したことが通知されます。

4. 「プロファイリングが開始されました」ダイアログ・ボックスで、「OK」をクリックします。
プロファイリング・ジョブが開始すると、データ・プロファイリングは非同期ジョブとして実行されるため、処理を続行したり、設計センターを閉じることもできます。プロファイリング・プロセスは、完了するまで実行されます。

5. データ・プロファイル・エディタの「モニター」パネルでプロファイリング・ジョブのステータスを確認します。
プロファイリング・ジョブの進行状況は、「モニター」パネルで引き続きモニターできます。プロファイリング・ジョブが完了すると、ステータスが「完了」として表示されます。

6. プロファイリングが完了すると、「プロファイル結果の取得」ダイアログ・ボックスが表示され、結果のリフレッシュが要求されます。「はい」をクリックしてデータ・プロファイリング結果を取得し、これらをデータ・プロファイル・エディタに表示します。

注意:
データ・プロファイリング結果は、以降にプロファイリングを実行すると上書きされます。

プロファイル結果の表示

プロファイリング操作が完了した後、データ・プロファイル・エディタでデータ・プロファイルを開き、結果を確認および分析できます。プロファイリング結果には、プロファイリングされたデータに関する様々な分析情報および統計情報が含まれています。異常が発生している箇所にすぐにドリルダウンして、その原因を確認できます。その後、修正する必要のあるデータを特定できます。

プロファイル結果を表示する手順は、次のとおりです。

1. ナビゲーション・ツリーでデータ・プロファイルを選択し、右クリックして「開く」を選択します。
データ・プロファイル・エディタが開き、データ・プロファイルが表示されます。

2. 前にデータ・プロファイル・エディタにデータ・プロファイリング結果を表示したことがある場合は、最新の結果が表示されるように、プロンプトが表示された時点で表示をリフレッシュします。
プロファイリングの結果がプロファイル結果キャンバスに表示されます。

3. 「データ・ルール」パネルと「モニター」パネルの左上隅にある矢印記号をクリックし、この2つのパネルを最小化します。
これにより、画面領域が最大化されます。

4. オブジェクト・ツリーの「プロファイル・オブジェクト」タブでオブジェクトを選択し、特定のオブジェクトの結果にフォーカスを置きます。
選択したオブジェクトのプロファイリング結果は、プロファイル結果キャンバスの次のタブを使用して表示されます。

- データ・プロファイル

- プロファイル・オブジェクト

- 集計

- データ型

- ドメイン

- パターン

- 一意キー

- 関数従属性

- 参照

- データ・ルール

データ・プロファイル内の様々なオブジェクトを切り替えることができます。前のオブジェクトで選択したタブは選択されたまま残ります。

データ・プロファイル

「データ・プロファイル」タブには、データ・プロファイルの一般情報が表示されます。このタブを使用して、データ・プロファイルに関するノートや情報を格納します。

プロファイル・オブジェクト

「プロファイル・オブジェクト」タブには「オブジェクト・データ」および「オブジェクト・ノート」という2つのサブタブがあります。「オブジェクト・データ」タブには、オブジェクト・ツリーの「プロファイル・オブジェクト」タブで選択したオブジェクト内のデータ・レコードがリスト表示されます。サンプルで使用した行数がリストされます。タブの上部にあるボタンを使用すると、問合せの実行、データの追加取得またはWHERE句の追加ができます。

集計

「集計」タブには、最小値、最大値、個別値の数およびNULL値など、各列の重要なメジャーがすべて表示されます。特定のデータ型の場合にのみ使用可能なメジャーがあります。たとえば、平均、中央値および標準偏差などのメジャーです。情報は、「表形式」サブタブまたは「グラフィカル」サブタブで参照できます。

表18-3に、「集計」タブで使用可能な測定結果を示します。

表18-3 集計結果

メジャー

説明

列

集計メジャーを特定するデータ・プロファイリング用のプロファイリング対象のデータ・オブジェクト内の列の名前。

最小

列のデータベース固有の順序付けに関する最小値

最大

列のデータベース固有の順序付けに関する最大値

個別数

列の個別値の合計数

%個別

行セット数全体に対する列の個別値の割合

NOT NULL

列に対してNOT NULL制約がデータベースで定義されているかどうかを示す

推奨NOT NULL

データ・プロファイリング結果が列にNULL値を許可するよう推奨しているかどうかを示します。値が「はい」の場合、この列にNULL値を許可しないよう推奨しています。

NULL数

列のNULL値の合計数

% NULL

行セット数全体に対する列のNULL値の割合

シックスシグマ

表の合計行数(可能性)に対するNULL値(欠損)の数

平均

行セット数全体での列の平均値

中央値

行セット数全体での列の中間値

標準偏差

列の標準偏差

集計結果表の値にハイパーリンクが付いている場合、この値をクリックするとデータにドリルダウンできます。これにより、この結果を生成したサンプルのデータを分析できます。

たとえば、図18-2に示すように、SALARY列までスクロールして24000と表示されている「最大」セルの値をクリックすると、下部の「データ・ドリル・パネル」が変更され、この列のすべての個別値とカウントが左側に表示されます。右側のデータ・ドリルでは、個別値から選択した値にズームインして、これらの値が検出されたレコード全体を表示できます。

図18-2 表形式の集計結果

「図18-2 表形式の集計結果」の説明

グラフィカル分析では結果がグラフ形式で表示されます。グラフィカル・ツールバーを使用して表示を変更できます。また、「列」および「プロパティ」メニューを使用して、表示されるデータ・オブジェクトを変更することもできます。

データ型

「データ型」タブにはデータ型のプロファイリング結果が表示されます。これには、文字データ型の長さや数値データ型の精度とスケールなどのメトリックが含まれます。検出された各データ型は、属性全体で検出された主要なデータ型と比較され、主要なメジャーに準拠する行の割合が表示されます。

データ型のプロファイリングの一例は、VARCHARとして定義されていて数値のみが格納されていた列を検出することです。この列のデータ型をNUMBERに変更すると、格納と処理の効率が向上します。

表18-4に、「データ型」タブで使用可能な測定結果を示します。

表18-4 データ型の結果

メジャー

説明

列

データ型分析を実行したデータ・オブジェクト内の列の名前

文書化されたデータ型

ソース・オブジェクト内の列のデータ型

主要なデータ型

データ・プロファイリングでは、列値の分析に基づいて、これが主要な(最も頻度の高い)データ型であることが判別されます。

%主要なデータ型

列値が主要なデータ型を持つ行の合計行数に対する割合

文書化された長さ

ソース・オブジェクト内のデータ型の長さ

最小長

列に格納されているデータの最大長

最大長

列に格納されているデータの最小長

主要な長さ

データ・プロファイリングでは、列値の分析に基づいて、これが主要な(最も頻度の高い)長さであると判別されます。

%主要な長さ

列値が主要な長さである行の合計行数に対する割合

文書化された精度

ソース・オブジェクト内のデータ型の精度

最小精度

ソース・オブジェクト内の列の最小精度

最大精度

ソース・オブジェクト内の列の最大精度

主要な精度

データ・プロファイリングでは、列値の分析に基づいて、これが主要な(最も頻度の高い)精度であると判別されます。

%主要な精度

列値が主要な精度を持つ行の合計行数に対する割合

文書化されたスケール

ソース・オブジェクト内のデータ型に指定されているスケール

最小スケール

ソース・オブジェクト内のデータ型の最小スケール

最大スケール

ソース・オブジェクト内のデータ型の最大スケール

主要なスケール

データ・プロファイリングでは、列値の分析に基づいて、これが主要な(最も頻度の高い)スケールであると判別されます。

%主要なスケール

列値が主要なスケールを持つ行の合計行数に対する割合

ドメイン

「ドメイン」タブには、特定の属性に存在する可能性のある値セットに関する結果が表示されます。情報は、「表形式」サブタブまたは「グラフィカル」サブタブで参照できます。

図18-3は、データ・プロファイル・エディタの「ドメイン」タブを示しています。

図18-3 ドメイン検出結果

「図18-3 ドメイン検出結果」の説明

列のドメインを検出するプロセスには2つのフェーズがあります。最初に、列の個別値を使用して、その列がドメインで定義されている可能性があるかどうかが判別されます。通常、ドメインにはいくつか個別値が存在します。次に、可能性のあるドメインが識別され、個別値のカウントを使用して、その個別値がドメインに準拠しているかどうかが判別されます。ドメイン検出の両方のフェーズのしきい値を制御するプロパティは、プロパティ・インスペクタで設定できます。

詳細が必要な結果が見つかった場合は、ドリルダウンし、データ・ドリル・パネルを使用して、結果の原因に関する詳細を参照します。

たとえば、列REGION_IDについて4つの値3、2、4および1のドメインが検出されたとします。この検出結果に影響したレコードを調べるには、REGION_ID行を選択してデータ・ドリル・パネルで詳細を参照します。

表18-5に、「ドメイン」タブで使用可能な測定結果を示します。

表18-5 ドメイン結果

メジャー

説明

列

ドメイン検出を実行した列の名前

検出されたドメイン

検出されたドメイン値

%準拠

すべての列値のうち、検出されたドメイン値に準拠する列値の割合

シックスシグマ

ドメイン結果のシックスシグマ値

パターン

「パターン」タブには、属性内のパターンに関して検出された情報が表示されます。パターン検出とは、プロファイラが特定の属性について検出したデータの正規表現の生成を試行することです。パターン検出プロセスでは、英語以外の文字はサポートされません。

表18-6に、「パターン」タブで使用可能な測定結果を示します。

表18-6 パターン結果

メジャー

説明

列

パターンの結果を検出した列の名前

主要な文字パターン

最も検出頻度の高かった文字パターンまたはコンセンサス・パターン。

%準拠

データ・パターンが主要な文字パターンと一致した行の割合。

主要な単語パターン

最も検出頻度の高かった単語パターンまたはコンセンサス・パターン。

%準拠

データ・パターンが主要な単語パターンと一致した行の割合。

共通形式

名前、アドレス、日付、ブール、社会保障番号、電子メール、URL。これは、プロファイラによる参照しているデータへのセマンティクス認識の追加試行です。パターンと他のなんらかのテクニックに基づいて、特定の属性のデータが属しているドメイン・バケットの特定が試行されます。

%準拠

データ・パターンがコンセンサス共通形式パターンと一致した行の割合。

一意キー

「一意キー」タブには、データ・ディクショナリに文書化された既存の一意キーおよびデータ・プロファイリング操作で検出された一意キーまたはキーの組合せの候補に関する情報が表示されます。それぞれについて一意性の割合が表示されます。文書化済列が「いいえ」の一意キーは、データ・プロファイリングで検出された一意キーです。

たとえば、電話番号は98%のレコードで一意です。これは一意キーの候補として使用でき、準拠しないレコードを整備できます。また、ドリルダウン機能を使用して、電話番号の重複の原因を「データ・ドリル・パネル」に表示することもできます。表18-7は、「一意キー」タブで使用可能な各種の測定結果を示しています。

表18-7 一意キーの結果

メジャー

説明

一意キー

検出された一意キー

文書化済

列の一意キーがデータ・ディクショナリに存在するかどうかを示します。

「はい」という値は、一意キーがデータ・ディクショナリに存在することを示します。「いいえ」という値は、その一意キーがデータ・プロファイリングによって検出されたことを示します。

検出済

データ・プロファイリングでは、列値の分析に基づいて、「ローカル属性」列に表示される列に一意キーを作成する必要があるかどうかが判別されます。

ローカル属性

プロファイルされたデータ・オブジェクトの列の名前

一意の数

ソース・オブジェクト内で、ローカル属性で表される属性が一意である行の数

%一意

ソース・オブジェクト内で、ローカル属性で表される属性が一意である行の割合

シックスシグマ

表の合計行数(可能性)に対するNULL値(欠損)の数

関数従属性

「関数従属性」タブには、他の属性に依存するか他の属性を決定付けると思われる属性の情報が表示されます。情報は、「表形式」サブタブまたは「グラフィカル」サブタブで参照できます。「表示」リストを使用すると、レポートのフォーカスを変更できます。データ・プロファイリング中は、データベース内で定義されている一意キーは関数従属性として検出されません。

表18-8に、「関数従属性」タブで使用可能な測定結果を示します。

表18-8 関数従属性の結果

メジャー

説明

決定子

「依存」に表示される属性を決定するものと判明した属性の名前

依存

他の属性の値により決定されることが判明した属性の名前

欠陥数

決定子属性の値のうち、依存属性により決定されなかった値の数

%準拠

検出された従属性に準拠する値の割合

シックスシグマ

シックスシグマの値

タイプ

関数従属性のタイプ。指定できる値は単方向または双方向

たとえば、「表示」リストから「100%の依存性のみ」を選択すると、表示される情報は絶対依存性に限定されます。常に他の属性に依存する属性がある場合、その属性は参照表の候補として推奨されます。推奨事項は「タイプ」列に表示されます。属性を別の参照表に移動すると、スキーマが正規化されます。

「関数従属性」タブには「グラフィカル」サブタブも表示されるため、情報をグラフ形式で表示できます。リストから依存性とプロパティを選択し、グラフ・データを表示できます。

たとえば、図18-4では、EMPLOYEE_IDがDEPARTMENT_IDを決定付けると思われる依存性(EMPLOYEE_ID->DEPARTMENT_ID)を選択しています。Oracle Warehouse Builderでは、ほとんどのEMPLOYEE_ID値がDEPARMENT_IDを決定付けるものと判断されます。プロパティを「非準拠」に切り替えると、この検出の例外を表示できます。

図18-4 グラフ形式の関数従属性

「図18-4 グラフ形式の関数従属性」の説明

参照

「参照」タブには、データ・ディクショナリに文書化されている外部キーとプロファイリング中に検出された関係に関する情報が表示されます。関係ごとに準拠レベルを表示できます。情報は、「表形式」サブタブと「グラフィカル」サブタブの両方で参照できます。また、他の2つのサブタブ「結合」サブタブおよび「冗長列」サブタブは、「参照」タブでのみ使用可能です。

表18-9に、「参照」タブで使用可能な測定結果を示します。

表18-9 参照の結果

メジャー

説明

関係

関係の名前

タイプ

関係のタイプ。使用可能な値は、「行関係」および「外部キー」です。

文書化済

列の外部キーがデータ・ディクショナリに存在するかどうかを示します。

「はい」は列の外部キーがデータ・ディクショナリに存在することを示します。「いいえ」はデータ・プロファイリングによって外部キーが検出されたことを示します。

検出済

データ・プロファイリングでは、列値の分析に基づいて、「ローカル属性」に表示される列に外部キーを作成する必要があるかどうかが判別されます。

ローカル属性

ソース・オブジェクト内の属性の名前

リモート・キー

ローカル属性の参照先オブジェクト内のキーの名前

リモート属性

参照先オブジェクト内の属性の名前

リモート・リレーション

ソース・オブジェクトの参照先オブジェクトの名前

リモート・モジュール

参照オブジェクトを含むモジュールの名前

カーディナリティ範囲

2つの属性間のカーディナリティの範囲

たとえば、EMP表に5行の従業員データが含まれているとします。部門10および20にそれぞれ従業員が2人、部門30に従業員が1人います。DEPT表には3行の部門データがあり、それぞれのdeptno値が10、 20および30となっています。

データ・プロファイリングでは、EMP表とDEPT表の行関係が検索されます。カーディナリティ範囲は、1-2:1-1です。これは、EMP表では個別値ごとの行数が1(deptno 30)から2(deptno 10および20)の範囲内にあるためです。DEPT表には、個別値(10、20および30)ごとに1行しかありません。

親なしの子の数

ソース・オブジェクト内の親なしの子行の数

%準拠

検出された従属性に準拠する値の割合

シックスシグマ

表の合計行数(可能性)に対するNULL値(欠損)の数

たとえば、EmployeesおよびDepartmentsという2つの表の参照関係を分析しているとします。図18-5に示した参照のデータ・プロファイリング結果を使用すると、Employees表のDEPARTMENT_ID列が、その時点でDepartments表の98%でDEPARTMENT_ID列に関連付けられていることがわかります。次に、「検出済」列でハイパーリンクとなっている「はい」をクリックすると、検出された外部キー関係に準拠していなかった行を表示できます。

図18-5 参照の結果

「図18-5 参照の結果」の説明

また、「グラフィカル」サブタブを選択すると、情報をグラフ形式で表示できます。この表示は、親なしの子など非準拠レコードを表示する際に効率的です。「グラフィカル」サブタブを使用するには、「参照」および「プロパティ」リストから選択します。

「結合」サブタブには、「参照」リストから選択した参照の結合分析が表示されます。結果は、参照関係に可能性のある3つの結果(結合、親なしの子、子なしのオブジェクト)の相対サイズと正確なカウントを示します。

たとえば、EMPLOYEES表とDEPARTMENTS表の両方にDEPARTMENT_ID列が含まれているとします。DEPARTMENTS表のDEPARTMENT_ID列とEMPLOYEES表のDEPARTMENT_ID列の間には、1対多の関係が存在します。「結合」は、両方の表に値を持つ値を表します。「親なしの子」は、EMPLOYEES表にのみ存在してDEPARTMENTS表には存在しない値を表します。すべての「子なし」の値は、DEPARTMENTS表には存在しますがEMPLOYEES表には存在しません。ダイアグラム上の値にドリルインして「データ・ドリル・パネル」に詳細を表示できます。

図18-6に、「参照」タブの「結合」サブタブを示します。

図18-6 結合の結果

「図18-6 結合の結果」の説明

「冗長列」サブタブには、子表に含まれていて主表にも含まれている列に関する情報が表示されます。冗長列の結果を使用できるのは、プロファイリング中に完全に一意の列が検出された場合のみです。

たとえば、表18-10および表18-11に示すように、2つの表EMPおよびDEPTが、EMP.DEPTNO (fk) = DEPT.DEPTNO (uk)という外部キー関係を持つとします。

表18-10 EMP表

社員番号

Dept.いいえ

ロケーション

100

1

CA

200

2

NY

300

3

MN

400

1

CA

500

1

CA

表18-11 DEPT表

部門番号

ロケーション

郵便番号

1

CA

94404

3

NY

10022

3

MN

21122

この例で、EMP表のLocation列は、結合から同じ情報を取得できるため冗長列です。

データ・ルール

「データ・ルール」タブには、オブジェクト・ツリーで選択した表のデータ・プロファイリングによって定義されたデータ・ルールが表示されます。各データ・ルールには、次の詳細が含まれています。

- ルール名: データ・ルール名を表します。

- ルール・タイプ: データ・ルールのタイプの簡潔な説明を入力します。

- 元: データ・ルールの元を表します。たとえば、値「導出済」はデータ・ルールが導出されたことを示します。

- %準拠: データ・ルールに準拠している行の割合。

- 欠陥数: データ・ルールに準拠しない行数。

このタブに表示されるデータ・ルールは、「データ・ルール」パネルでアクティブになっているデータ・ルールを反映しています。このタブでデータ・ルールを直接作成することはできません。

属性セットを使用したデータ・オブジェクトの列のサブセットのプロファイル

属性セットを使用すると、データ・プロファイリング操作の対象を、表、ビューまたはマテリアライズド・ビューの列のサブセットに制限できます。

属性セットを使用する理由は次のとおりです。

- プロファイリング結果が必要でない列を除外することで、プロファイリングにかかる時間を短縮できます。

- データ・プロファイリングでは、表、ビューまたはマテリアライズド・ビューの列を、一度に165までしかプロファイルできません。属性セットを使用して、オブジェクトから165以下の列を選択してプロファイルできます。

属性セットを使用したデータ・プロファイリングは、次の上位レベルの手順で構成されています。

1. 属性セットの定義

2. 属性セットを含むデータ・プロファイルの作成

3. データ・プロファイリングの実行
データのプロファイリングの詳細は、「データのプロファイリング」を参照してください。

4. データ・プロファイリングの結果の確認
プロファイリングの結果の詳細は、「プロファイル結果の表示」を参照してください。

属性セットの定義

次の手順で、表、ビューまたはマテリアライズド・ビューの属性セットを定義します。

1. プロジェクト・ナビゲータで、表、ビューまたはマテリアライズド・ビューをダブルクリックします。
選択したオブジェクトのエディタが開かれます。

2. 「属性セット」タブを選択します。

3. 「属性セット」セクションで「名前」列の空白領域をクリックし、作成する属性セットの名前を入力して、[Enter]キーを押してください。

4. 手順3で作成した属性セットの名前を選択します。
選択した属性セットの「属性」セクションに、データ・オブジェクトの属性が表示されます。

5. 属性セットに含めるすべての属性で、「挿入」を選択します。

6. ツールバーの「保存」をクリックして変更内容を保存します。

属性セットを含むデータ・プロファイルの作成

1. プロジェクト・ナビゲータで、「データ・プロファイル」ノードを右クリックして新規データ・プロファイルを選択します。
データ・プロファイルの作成ウィザードのようこそページが表示されます。

2. ようこそページで「次へ」をクリックします。

3. 名前と説明ページで、データ・プロファイルの名前と説明(オプション)を入力します。「次へ」をクリックします。

4. オブジェクトの選択ページでプロファイリングするデータ・オブジェクトを選択し、シャトル矢印を使用して、データ・オブジェクトを「選択済」リストに移動します。
選択したデータ・オブジェクトに属性セットが含まれている場合は、「属性セットの選択」ダイアログ・ボックスが表示されます。

5. 「属性セットの選択」ダイアログ・ボックスで、プロファイリングする属性セットを選択して「OK」をクリックします。

6. オブジェクトの選択ページで「次へ」をクリックします。

7. サマリー・ページで、ウィザードのこれまでのページで選択したオプションを確認し、「終了」をクリックします。
データ・プロファイルが作成され、ナビゲータ・ツリーに追加されます。

データ・プロファイルの編集

データ・プロファイルの作成後に、データ・プロファイル・エディタを使用してプロファイルの定義を変更できます。プロファイル設定を変更したり、データ・プロファイルにプロファイル設定を追加したり、これらを削除したりすることも可能です。オブジェクトを追加するには、メニュー・バーのオプションを使用する方法と「データ・プロファイルの編集」ダイアログの「オブジェクトの選択」タブを使用する方法があります。

データ・プロファイルを編集する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、データ・プロファイルを右クリックして「開く」を選択します。
データ・プロファイル・エディタが表示されます。

2. 「編集」メニューから「プロパティ」を選択します。
「データ・プロファイルの編集」ダイアログ・ボックスが表示されます。

3. 「データ・プロファイルの編集」ダイアログ・ボックスで、データ・プロファイルの次のプロパティのいずれかを編集し、「OK」をクリックします。

- データ・プロファイルの名前または説明を変更するには、「名前」タブで、名前または説明を選択し、新規値を入力します。

- オブジェクトを追加または削除するには、「オブジェクトの選択」タブで、矢印を使用してデータ・プロファイルのオブジェクトを追加または削除します。

- データ・プロファイリングのステージング領域の場所を変更するには、「データのロケーション」タブを使用します。
矢印を使用して、新規ロケーションを「選択されたロケーション」セクションに移動します。このロケーションをデータ・プロファイルのデフォルトのプロファイリング・ロケーションとして設定するために「新規構成デフォルト」が選択されていることを確認します。

注意:
データ・プロファイリングを実行した後に、プロファイリングのロケーションを変更する場合、前のプロファイリング結果は失われます。

データ・プロファイルへのデータ・オブジェクトの追加

データ・プロファイルにデータ・オブジェクトを追加するには:

1. プロジェクト・ナビゲータで、データ・プロファイルを右クリックして「開く」を選択します。
データ・プロファイル・エディタが表示されます。

2. 「プロファイル」メニューから「追加」を選択します。
「プロファイル表の追加」ダイアログ・ボックスが表示されます。

3. 「プロファイル表の追加」ダイアログ・ボックスで、データ・プロファイルに追加するオブジェクトを選択します。矢印を使用してこれらを「選択済」セクションに移動します。
オブジェクトの選択時に、[Ctrl]キーを押し続けることで複数のファイルを選択できます。

プロファイリングのパフォーマンス向上を目的としたデータ・プロファイリング・プロセスのチューニング

データ・プロファイリングは、プロセッサおよびI/Oが集中するプロセスであり、プロファイリングの実行時間は数分から数日にわたります。次の条件が満たされていることを確認することで、最大限のデータ・プロファイリング・パフォーマンスを達成できます。

- データベースがデータ・プロファイリング用に適切に設定されていること。

- データ・プロファイリングの実行時に適切なデータ・プロファイリング構成パラメータを使用すること。

データ・プロファイリングのパフォーマンス向上を目的としたデータ・プロファイルのチューニング

データ・プロファイルは、データ・プロファイリング結果を最適化するように構成できます。データ・プロファイルの構成には構成パラメータを使用します。

関連項目:
データ・プロファイルの構成と設定可能な構成パラメータの詳細は、「データ・プロファイルの構成」を参照してください。

次のガイドラインに従うと、データ・プロファイリング・プロセスが高速になります。

- 必要なタイプの分析のみを実行します。
プロファイリング対象となるオブジェクトに特定のタイプの分析が不要であることがわかっている場合は、構成パラメータを使用して該当タイプのデータ・プロファイリングをオフにします。

- プロファイリングするデータ量を制限します。
WHERE句とサンプル率構成パラメータを使用します。

プロファイリングのソース・データがOracle Databaseに格納されている場合は、ソース・スキーマをプロファイル・ワークスペースと同じデータベース・インスタンスに置くことをお薦めします。そのためには、プロファイリング・ワークスペースをソース・スキーマ・ロケーションと同じOracle Databaseインスタンスにインストールします。これにより、データベース・リンクを使用してデータをソースからプロファイリング・ワークスペースに移動する必要がなくなります。

データ・プロファイリングのパフォーマンス向上を目的としたOracle Databaseのチューニング

データ・プロファイリング・パフォーマンスを向上させるには、Oracle Databaseを実行するコンピュータに特定のハードウェア機能が必要です。さらに、データ・プロファイリングを実行するOracle Databaseインスタンスを最適化する必要があります。

効率的なデータ・プロファイリングのための考慮事項は、次のとおりです。

- マルチプロセッサ

- メモリー

- I/Oシステム

マルチプロセッサ

Oracle Databaseを実行するコンピュータには、複数のプロセッサが必要です。データ・プロファイリングは、Oracle Databaseが提供する並列化を最大限に利用するように設計されチューニングされています。大きい表(1000万行以上)をプロファイリングする間は、マルチプロセッサ・コンピュータを使用することをお薦めします。

データ・プロファイリングの実行に必要な問合せには、ヒントが使用されます。これにより、Oracle Databaseの初期化パラメータ・ファイルからの並列度が使用されます。デフォルトの初期化パラメータ・ファイルには、並列度を利用するパラメータが含まれています。

メモリー

データ・プロファイリング時には、高いメモリー・ヒット率を確保することが重要です。そのためには、システム・グローバル領域に割り当てるサイズを大きくします。システム・グローバル領域のサイズは500MB以上の値に構成することをお薦めします。可能であれば、2GBまたは3GBに構成してください。

上級データベース・ユーザーの場合は、バッファ・キャッシュ・ヒット率とライブラリ・キャッシュ・ヒット率を調べることをお薦めします。バッファ・キャッシュ・ヒット率は95%以上に、ライブラリ・キャッシュ・ヒット率は99%以上に設定してください。

I/Oシステム

I/Oシステムの処理能力は、データ・プロファイリングのパフォーマンスに直接影響します。データ・プロファイリング処理では、全表スキャンと大規模結合が頻繁に実行されます。現在のCPUではI/Oシステムの能力を容易に超えてしまう可能性があるため、I/Oサブシステムを慎重に設計して構成する必要があります。I/Oパフォーマンスの向上に役立つ考慮事項は、次のとおりです。

- CPUとI/Oの中断なしの連携をサポートするには、多数のディスク・スピンドルが必要です。ディスクが少数しかなければ、I/Oシステムは高度な並列処理に適応しません。CPUごとに2枚以上のディスクを使用することをお薦めします。

- ディスクを構成します。論理ストライプ・ボリュームを既存のディスク上に作成し、各ボリュームを使用可能な全ディスク間でストライプ化することをお薦めします。ストライプ幅の計算には、次の計算式を使用します。
MAX(1,DB_FILE_MULTIBLOCK_READ_COUNT/number_of_disks) X DB_BLOCK_SIZE

DB_FILE_MULTIBLOCK_SIZEおよびDB_BLOCK_SIZEは、データベース初期化パラメータ・ファイル内で設定するパラメータです。計算式で得られた値の倍数をストライプ幅として使用することもできます。

論理ボリュームを作成してメンテナンスするには、Veritas Volume ManagerまたはSun Storage Managerなどのボリューム管理ソフトウェアが必要です。Oracle Database 10g以上を使用していて、ボリューム管理ソフトウェアがない場合は、Oracle Databaseの自動記憶域管理機能を使用してワークロードをディスクに分散できます。

- 表領域ごとに異なるストライプ・ボリュームを作成します。いくつかの表領域に同じディスク・セットを使用することも可能です。
データ・プロファイリングの場合、通常はUSERS表領域とTEMP表領域が同時に使用されます。これらの表領域を別のディスクに配置してI/Oの競合を減らすことを検討できます。

Oracle Master Data Management(MDM)で使用するデータの監視および修復(DWR)

データの監視および修復(DWR)は、Oracle Master Data Management(MDM)でのデータ管理を支援するために設計されたプロファイリングおよび修正ソリューションです。MDMアプリケーションは、統合された単一のデータ・ビューを提供する必要があります。最初にシステムのマスター・データをクリーンアップしてから、接続された複数のエンティティで共有する必要があります。

MDMアプリケーションがデータの整備および統合を実行できるように、Oracle Warehouse Builderには、データ・プロファイリングおよびデータ修正機能が用意されています。DWRは次のMDMアプリケーションに使用できます。

- Customer Data Hub(CDH)

- Product Information Management(PIM)

- Universal Customer Master(UCH)

MDMで使用するデータの監視および修復(DWR)の概要

データの監視および修復(DWR)では、次の機能を使用してMDMデータベースに格納されたデータの分析、整備、統合を行うことができます。

- データ・プロファイリング
データ・プロファイリングは、ソース・データの欠陥を検出および測定できるデータ分析方法です。

データ・プロファイリングの詳細は、「データ・プロファイリングの概要」を参照してください。

- データ・ルール
データ・ルールにより、ソース・データ内の有効なデータと関係を判別し、データ品質を確保できます。MDM固有のデータ・ルールをインポートしたり、データ・プロファイリングを実行する前の独自のデータ・ルールを定義したり、データ・プロファイリングの結果からデータ・ルールを導出できます。

データ・ルールの詳細は、「データ・ルールの概要」を参照してください。

- データ修正
データ修正により、データおよびメタデータの矛盾、冗長性、誤りを修正できます。修正マッピングを自動的に作成し、ソース・データを整備できます。

データ修正の詳細は、「ETLでのデータ・ルールおよび自動データ修正の概要」を参照してください。

DWRにより、重要なビジネス・ルールを定期的に測定できます。データに矛盾を検出した場合、新しいデータ・ルールを定義して適用し、データ品質を確保できます。

MDMで事前に定義されているデータ・ルール

Oracle Warehouse Builderには、MDMアプリケーションでよく利用されるデータ・ルールのセットがあります。たとえば、次のカスタム・データ・ルールは、Customer Data Hub(CDH)およびUniversal Customer Master(UCM)の両方のアプリケーションで使用できます。

- 属性の完全性

- 連絡先の完全性

- データ型

- データ・ドメイン

- 制限値

- 一意キー検出

- 完全名の標準化

- 共通パターン

- 名前の大文字化

- 内線電話番号

- 国際電話番号

- 名前のみのアクセス・リストの禁止

- 名前またはSSNによるアクセス・リストを禁止

- 電子メール・リストの禁止

これらのデータ・ルールの詳細は、『Oracle Watch and Repair for MDMユーザーズ・ガイド』を参照してください。

データの監視および修復(DWR)を実行する際の前提条件

データの監視および修復(DWR)を使用するには、次のソフトウェアが必要です。

- Oracle Database 11gリリース1(11.1)以上

- Oracle Warehouse Builder 11gリリース1 (11.1.0.7)以上

- Customer Data Hub(CDH)、Product Information Management(PIM)またはUniversal Customer Master(UCH)のうち、1つ以上のMaster Data Management(MDM)アプリケーション。

Oracle Databaseで実行されるMDMアプリケーションの場合、DWRを直接使用できます。ただし、Oracle Databaseで実行されないMDMアプリケーションの場合には、サード・パーティのデータベースとのゲートウェイを設定する必要があります。

Oracle Warehouse Builderを使用してデータの監視および修復(DWR)を実行する手順

次の手順で、データの監視および修復(DWR)を実行します。

1. Master Data Management(MDM)アプリケーション・データベースに対応するロケーションを作成します。
ロケーション・ナビゲータの「データベース」ノードの下にある「Oracle」ノードを使用します。ユーザー名、パスワード、ホスト名、ポート、サービス名、データベースのリリースなど、MDMアプリケーションの詳細を指定します。

2. プロジェクト・ナビゲータで「アプリケーション」ノードを開き、MDMアプリケーションのノードを表示します。
「CDH」ノードはCustomer Data Hubアプリケーションを表します。「PIM」ノードはProduct Information Managementアプリケーションを表します。「UCM」ノードはUniversal Customer Masterを表します。

3. DWRを実行するMDMアプリケーションのタイプに対応するノードを右クリックし、「CMIモジュールの作成」を選択します。
モジュールの作成ウィザードを使用して、MDMメタデータ定義を格納するモジュールを作成します。モジュールの作成時の手順1で作成したロケーションを選択します。

4. 手順3で作成したモジュールにMDMアプリケーションからメタデータをインポートします。モジュールを右クリックして、「インポート」を選択します。
MDMメタデータをインポートできるメタデータのインポート・ウィザードが表示されます。

5. 「MDMデータ・ルールのインポート」の説明に従って、MDM固有のデータ・ルールをインポートします。

6. 「データ・ルールのデータ・オブジェクトへの適用」の説明に従って、MDMアプリケーション表にデータ・ルールを適用します。
データ・ルールを表に適用すると、表データがデータ・ルールを使用して定義されたビジネス・ルールに準拠しているかどうかがわかります。手順5でインポートしたデータ・ルールまたは作成したその他のデータ・ルールを適用できます。データ・ルールの作成の詳細は、「データ・ルールの作成ウィザードを使用したデータ・ルールの作成」を参照してください。

7. プロファイリングするMDMアプリケーションのすべての表を含むデータ・プロファイルを作成します。
データ・プロファイルの作成の詳細は、「データ・プロファイルの作成」を参照してください。

8. 「データのプロファイリング」の説明に従って、MDMアプリケーション・オブジェクトにデータ・プロファイリングを実行します。

9. 「プロファイル結果の表示」の説明に従って、データ・プロファイリングの結果を表示します。

10. (オプション)「データ・プロファイリング結果からのデータ・ルールの導出」の説明に従って、データ・プロファイリングの結果に基づいてデータ・ルールを導出します。
データ・プロファイリングの結果から導出したデータ・ルールは、自動的に表に適用されます。

11. 「修正オブジェクトの作成手順」の説明に従って、修正マッピングを作成します。

12. 「スキーマ修正のデプロイ」および「修正マッピングのデプロイ」に従って、Oracle Warehouse Builderにより生成された修正マッピングでデータおよびメタデータを修正します。

13. 「修正済データおよびメタデータのMDMアプリケーションへの書込み」の説明に従って、手順12で作成した修正オブジェクトに格納された修正済データをMDMアプリケーションに書き込みます。

MDMデータ・ルールのインポート

Customer Data Hub(CDH)およびUniversal Customer Master(UCM)アプリケーションに必要なデータ・ルールは、OWB_HOME/owb/misc/dwr/customer_data_rules.mdlファイルに記述されています。これらのデータ・ルールをインポートするには、「ファイル」メニューから「インポート」、Oracle Warehouse Builderメタデータの順に選択します。「メタデータのインポート」ダイアログ・ボックスで、customer_data_rules.mdlを選択して「OK」をクリックします。「メタデータのインポート」ダイアログの詳細は、このページの「ヘルプ」をクリックします。

インポートされたデータ・ルールは、グローバル・ナビゲータで「パブリック・データ・ルール」ノードの「MDM Customer Data Rules」ノードの下に表示されます。

修正済データおよびメタデータのMDMアプリケーションへの書込み

整備済および修正済のデータは、データ・プロファイリングによって作成される修正オブジェクトに保存されます。

より効果的に処理するために、修正が必要な行のみを書き込むことができます。これは、生成された修正マッピングを変更することで実現します。未変更の準拠行を通過するブランチを削除します(このブランチには、負のフィルタと集合演算子が含まれています)。修正マッピングでブランチを処理している修正済の行のみを保持します。

ソースのMDMアプリケーションに修正データを書き込むには、次の手順に従います。

1. マッピング・エディタを使用してマッピングを作成します。

2. 修正済の表をマッピング・エディタにドラッグ・アンド・ドロップします。これがソース表になります。

3. UCMの場合は、作業する実表に対応するインタフェースをドラッグ・アンド・ドロップします。
MDMアプリケーション・ツールおよびドキュメントを使用して、特定のインタフェース表の実表を判別します。

4. 修正済の表からインタフェース表に列をマッピングします。

5. マッピングをデプロイして実行し、修正済のデータをソースMDMアプリケーションに書き込みます。

6. インタフェース表に対する変更で実表を更新します。Siebel Enterprise Integration Manager(EIM)を使用できます。EIMはコマンドラインで実行することも、Graphical User Interface(GUI)からでも実行できます。
EIMの使用方法の詳細は、『Siebel Enterprise Integration Manager管理ガイド』を参照してください。

19 データ・ルールの設計と導出

この章では、Oracle Warehouse Builderのデータ・ルールとその用途について説明し、データ・ルールを設計し、データ・プロファイリング結果からデータ・ルールを導出する方法について説明します。

この章の内容は次のとおりです。

- データ・ルールの概要

- データ・ルールの使用

データ・ルールの概要

データ・ルールは、Oracle Warehouse Builderで作成できる有効なデータ値と関係の定義です。データ・ルールは表、ビュー、マテリアライズド・ビューおよび外部表に適用できます。データ・ルールによって、表(またはその他のオブジェクト)内の正当なデータまたは1つの表の異なる列または異なる表間の正当な関係が判断されます。

データ・ルールはOracle Warehouse Builderのデータ品質機能の中核です。

- データ・プロファイリングの後、検出されたデータ関係に基づいてデータ・ルールを自動的に生成できます。また、データ・プロファイリングを特定のデータ・ルールに対してテストできます。

- データ監査ではデータ・ルールを使用してデータの準拠性をテストし、非準拠データに関する統計情報を生成します。

- 自動生成されたデータ・クレンジング・マッピングではデータ・ルールを、非準拠データを判別するベースとして使用します。非準拠データに適用するデータ・ルールおよびクレンジング方針を選択することで、クレンジング・マッピングの内容が決定されます。

- スキーマ・クレンジングでは、オブジェクトにバインドされているデータ・ルールをクレンジング済のスキーマで定義されている制約に変換します。

- ETLマッピングでは、表またはその他のオブジェクトにマッピングに適用されている1つ以上のデータ・ルールがある場合、Oracle Warehouse Builderは非準拠行を管理および監査するためのエラー表およびその他のロジックを自動的に作成、管理します。

データ・ルールを作成するには次の2つの方法があります。

- 「データ・プロファイリング結果からのデータ・ルールの導出」の説明に従って、データ・プロファイリングの結果から1つ以上のルールを導出します。

- 「データ・ルールの作成ウィザードを使用したデータ・ルールの作成」の説明に従って、データ・ルールを直接定義します。

また、すべてのOracle Warehouse Builderワークスペースには、NULL以外の値のテスト、共通データ形式のテストなど一般的な状況で、ワークスペースのすべてのプロジェクトでアクセス可能な特定数の事前定義済のパブリック・データ・ルールがあります。

データ・ルールのメタデータは、ワークスペースに格納されます。データ・ルールを使用するには、データ・ルールをデータ・オブジェクトに適用します。たとえば、有効値が'M'と'F'であることを指定するgender_ruleというデータ・ルールを作成したとします。このデータ・ルールは、Employees表のemp_gender列に適用できます。データ・ルールを適用することによって、emp_gender列に格納される値が'M'または'F'のいずれかであることが保証されます。データ・ルール・バインディングの詳細は、Employees表の表エディタの「データ・ルール」タブで表示できます。

データ・ルールのタイプ

表19-1に、データ・ルールのタイプを示します。

表19-1 データ・ルールのタイプ

データ・ルールのタイプ

説明

例

ドメイン・リスト

属性に使用可能な値リストを定義します。

Gender属性には「M」または「F」を使用できます。

ドメイン・パターン・リスト

属性が準拠可能なパターンのリストを定義します。パターンの定義には、Oracle Databaseの正規表現構文を使用します。

電話番号のパターンを次に示します。

(^[[:space:]]*[0-9]{ 3 }[[:punct:]|:space:]]?[0-9]{ 4 }[[:space:]]*$)

ドメイン範囲

属性に使用可能な値の範囲を定義します。

Salary属性の値には100から10000を使用できます。

共通形式

属性が準拠可能な既知の共通形式を定義します。

このルール・タイプには、「電話番号」、「IPアドレス」、「SSN」、「URL」、「電子メール・アドレス」という多くのサブタイプがあります。タイプごとに、事前定義の形式がリストされます。このリストには形式を追加することもできます。

電子メール・アドレスは次の形式で指定する必要があります。

^(mailto:[-_a-z0-9.]+@[-_a-z0-9.]+$)

NULLなし

属性にはNULL値を使用できないことを指定します。

Employees表の従業員のdepartment_id列はNULLにできません。

関数従属性

データ・オブジェクト内のデータを正規化可能として定義します。

Dept_name属性は、Dept_no属性に依存します。

一意キー

特定のデータ・オブジェクトで属性または属性のグループが一意であるかどうかを定義します。

部門名は一意である必要があります。

参照

値間で使用する必要がある関係のタイプ(1:n)を定義します。

Departments表のdepartment_id列は、Employees表のDepartment_id列と1:nの関係を持つ必要があります。

名前とアドレス

「Name and Address」のサポートを使用して、属性グループを名前またはアドレスとして評価します。

カスタム

入力パラメータに指定するSQL式を適用します。

VALID_DATEというカスタム・ルールには、START_DATEおよびEND_DATEという2つの入力パラメータがあります。このルールの有効な式は、次のように定義されます。

THIS."END_DATE" > "THIS"."START_DATE"

オブジェクトとしてのデータ・ルールおよびデータ・ルールのバインディング

データ・ルールは、各ワークスペース内のオブジェクトであり、ルールが適用される可能性のある個々のデータ要素から独立して存在します。たとえば、NULLなしというルールは、ルールの適用対象の特定の列に依存することなく存在し、電子メール・アドレスなどの共通形式ルールは、このルールの対象となる特定の表の特定の列に依存していません。

プロジェクト・ナビゲータで、プロジェクトの「データ・ルール」ノードには、1つ以上のデータ・ルールがグループ化された「データ・ルール」フォルダが含まれます。また、ワークスペース内のすべてのプロジェクト用に定義されたパブリック・データ・ルールもあります。

データ・ルールには、特定のインスタンスでのルールの適用先のオブジェクトを識別する入力パラメータがあります。データ・ルールをバインドするということは、1つまたは複数の表の1つ以上の列など、ルールが管理するデータ・ルールを特定のデータ・オブジェクトに関連付けるということです。1つの表または複数の表の中の複数の列に対して、1つのデータ・ルールを複数回バインドすることができます。

たとえば、値MおよびFに列を制限するgender_ruleドメイン・リスト・ルールは、1つの表内またはEMPLOYEES.emp_gender、EMPLOYEES.manager_gender、CHILDREN.child_genderなどの複数の異なる表内でさえも複数の異なる列に適用できます。このような場合、ルールが更新されると、ルールがバインドされているすべての場所が影響されます。次回、データ・ルールを使用してコードを生成しデプロイするときは、更新されたデータ・ルール定義が使用されます。たとえば、gender_ruleが不明な性別Xを受け入れるように変更した場合は、gender_ruleのバインド先であるオブジェクトのETLを再生成することでそのルールをすべての箇所に適用できます。

データ・ルールの使用

データ・プロファイリング結果に基づいてデータ・ルールを導出するのみでなく、独自のデータ・ルールを定義することも可能です。データ・ルールは、それが定義されているプロジェクト内の複数の表にバインドできます。1つのオブジェクトに必要な数のデータ・ルールを含めることができます。

デザイン・センターを使用して、データ・ルールを作成および編集します。データ・ルールを作成した後、そのルールを次のようなシナリオで使用できます。

データ・プロファイリングでのデータ・ルールの使用

データ・プロファイリングを使用して表を分析する際に、データ・ルールを使用して、指定のルールに対するデータの準拠レベルを分析して統計を収集できます。その結果から、新規のデータ・ルールを導出できます。データ・プロファイリングにより大多数のレコードで特定の列の値がred、whiteおよびblueであることが判明した場合は、カラー・ドメイン(red、whiteおよびblue)を定義する新規データ・ルールを導出できます。その後、このルールを再利用して他の表をプロファイルしたり、スキーマ修正、データの整備やデータの監査でのその他のルールのように使用できます。

スキーマ修正でのデータ・ルールの使用

データ・ルールを使用して、ソース・スキーマを、新規表の構造がデータ・ルールに厳密に準拠している新規ターゲット・スキーマに変換できます。新しいスキーマでは、表の列はデータ・ルールに一致するデータ型を持ち、ルールに基づく制約が生成され、表に適用されて、その制約が規定され、スキーマが正規化されます。

データ整備でのデータ・ルールの使用

データ・ルールを使用する第2の方法では、データ・ルールを修正マッピングに使用し、ソース表のデータをデータ・ルールと比較検証し、準拠レコードと非準拠レコードを判別します。分析されたデータ・セットは修正され(孤立レコードの削除、不正確なドメイン値の修正など)、整備されたデータ・セットが修正済ターゲット・スキーマにロードされます。

データ監査でのデータ・ルールの使用

データ・ルールは、データ監査にも使用されます。データ監査とは、データを一連のデータ・ルールと比較検証して準拠レコードと非準拠レコードを判別するプロセスです。データ監査により、ルールに対するシステム内のデータの準拠レベルを示す統計メトリックが収集され、欠陥データが監査表とエラー表にレポートされます。その点では、データ・ルール・ベースの修正マッピングに似ていますが、この種の修正マッピングには、データ・ルールに準拠しないデータ用のレポート専用オプションも用意されています。

フォルダのデータ・ルールの管理

各データ・ルールは、関連するデータ・ルールを分類するコンテナ・オブジェクトであるデータ・ルール・フォルダに属しています。データ・ルールを作成するには、まず、少なくとも1つのデータ・ルール・フォルダを作成する必要があります。

データ・ルール・フォルダを作成するには、ナビゲーション・ツリーで「データ・ルール」を右クリックして新規データ・ルール・フォルダを選択します。「データ・ルール・フォルダの作成」ダイアログ・ボックスが表示されます。新しいデータ・ルール・フォルダの名前を入力して、「OK」をクリックします。

データ・プロファイリング結果からのデータ・ルールの導出

データ・プロファイリング結果に基づいて、データの整備に使用するデータ・ルールを導出します。データ・ルールを作成し、それをデータ・プロファイルに手動で適用できますが、データ・プロファイリング結果に基づくデータ・ルールの導出により、生産性を強化し、自分のルールを基礎となるデータに反映させることができます。

データ・ルールは、データ・オブジェクト内に格納できる正当なデータのセットを判別する式です。データ・ルールは、データ・ルールに準拠する値のみをデータ・オブジェクト内で使用可能にする場合に使用します。データ・ルールは、データを整備する場合にデータの修正または削除の基準となります。また、データ・ルールを使用して、ルールに準拠していないデータをレポートすることもできます。

たとえば、Employeesという表にEmployee_Number、Gender、Employee_Nameの各列が含まれているとします。プロファイリング結果は、Employee_Number列の値の90%が一意であり、一意キーの主要な候補であることを示しています。また、Gender列の値の85%が「M」または「F」であり、ドメインに適した候補でもあることを示しています。そこで、これらのルールを「プロファイル結果キャンバス」から直接導出できます。

データ・ルールの導出の実行ステップ

1. ナビゲーション・ツリーでデータ・プロファイルを選択し、右クリックして「開く」を選択します。
プロファイリング結果を示すデータ・プロファイル・エディタが表示されます。

2. プロファイリング結果を確認し、データ・ルールに導出する検出内容を決定します。
データ・ルールを保証する結果のタイプは様々です。一般にデータ・ルールに導出される結果によっては、検出されたドメイン、2つの属性間の関数従属性または一意キーが含まれることがあります。

3. データ・ルールの導出元として使用する結果が表示されるタブをクリックします。
たとえば、「EMPLOYEE_NUMBER」列に対して一意キー・ルールを施行するデータ・ルールを作成するには、「一意キー」タブにナビゲートします。

4. データ・ルールの導出元として使用する結果を含むタブをクリックします。
青い矢印アイコンを含むセルに対してデータ・ルールを定義できます。セルに緑の矢印アイコンが含まれる場合、データ・ルールはそのセルで表される列に対して定義されています。

5. 「プロファイル」メニューから「データ・ルールの導出」を選択します。または、「データ・ルールの導出」ボタンをクリックします。
たとえば、EMPLOYEE_NUMBER列に一意キー・ルールを作成するには、この列を選択して「データ・ルールの導出」をクリックします。

データ・ルールの導出ウィザードが表示されます。

6. ようこそページで「次へ」をクリックします。

7. 名前と説明ページで、「名前」フィールドにデータ・ルールのデフォルト名が表示されます。新しい名前を指定するには、名前を選択し、新しい名前を入力し、「次へ」をクリックします。

8. ルールの定義ページで、データ・ルールのパラメータに関する詳細を入力し、「次へ」をクリックします。
「タイプ」フィールドには、導出するデータのタイプに応じて自動的に値が移入されます。このデータ・ルールのタイプは編集できません。

このページの下部にある他のフィールドでは、データ・ルールのパラメータを定義します。一部のフィールドには、データ・プロファイリング結果に基づいて値が移入されます。フィールドの数とタイプは、データ・ルールのタイプに応じて異なります。

9. サマリー・ページで、ウィザードで設定したオプションを確認します。選択した値のいずれかを変更するには「戻る」をクリックします。データ・ルールを作成するには、「終了」をクリックします。
データ・ルールが作成され、データ・プロファイル・エディタの「データ・ルール」パネルに表示されます。導出されたデータ・ルールは、プロジェクト・ナビゲータの「データ・ルール」ノードの下にある「Derived_Data_Rules」ノードにも追加されます。このデータ・ルールを他のデータ・オブジェクトにアタッチして再利用できます。

データ・ルールの作成ウィザードを使用したデータ・ルールの作成

プロジェクト・ナビゲータの「データ・ルール」フォルダに、データ・ルールが含まれています。すべてのデータ・ルールは、データ・ルール・フォルダに属している必要があります。各プロジェクトのサブフォルダ「DERIVED_DATA_RULES」には、データ・プロファイリングによって導出されたデータ・ルールが含まれています。追加のデータ・ルール・フォルダを作成して、作成したデータ・ルールを格納できます。

データ・ルールを作成する手順は、次のとおりです。

1. データ・ルールの作成先の「データ・ルール」フォルダを右クリックし、新規データ・ルール・フォルダを選択します。
データ・ルールの作成ウィザードのようこそページが表示されます。

2. ようこそページで「次へ」をクリックします。

3. 名前と説明ページに、データ・ルールの名前と説明(オプション)を入力します。「次へ」をクリックします。

4. ルールの定義ページで、作成するデータ・ルールのタイプを指定します。また、データ・ルールの作成に必要な追加情報も指定します。「次へ」をクリックします。
たとえば、ドメイン範囲ルールを作成する場合、有効なドメイン値を表す値を指定する必要があります。

データ・ルールの詳細は、「データ・ルールの定義」を参照してください。

5. サマリー・ページで、ウィザードでの選択項目を確認します。「戻る」をクリックして、選択した値を変更します。データ・ルールを作成するには、「終了」をクリックします。
データ・ルールは、作成先の「データ・ルール」フォルダに追加されます。

データ・ルールの定義

ルールの定義ページまたは「ルールの定義」タブを使用して、データ・ルールの詳細を指定します。このページの上部には、データ・ルールのタイプを示す「タイプ」リストが表示されます。データ・ルールを作成する場合は、「タイプ」フィールドを展開してデータ・ルールのタイプを表示し、作成するタイプを選択します。データ・ルールを編集する際、作成したデータ・ルールのタイプは変更できないため、「タイプ」フィールドは無効になります。データ・ルールのタイプの詳細は、「データ・ルールのタイプ」を参照してください。

注意:
データ・ルールを導出する際、「タイプ」フィールドには自動的に値が移入されますが、この値は編集できません。

このページの下のセクションで、データ・ルールに関する詳細を追加指定します。このセクションに表示されるフィールドの数と名前は、作成したデータ・ルールのタイプによって異なります。

たとえば、タイプとしてカスタムを選択した場合は、「属性」セクションを使用して、ルールに必要な属性を定義します。「式」フィールドの省略記号ボタンを使用して、「属性」セクションで定義した属性を含んだカスタム式を定義します。

データ・ルールのタイプとして「ドメイン範囲」を選択すると、ページ下部には、範囲のデータ型、最小値および最大値を指定するためのフィールドが表示されます。データ・ルールを導出する場合、これらのフィールドの一部はルールを導出するプロファイリング結果に基づいて移入されます。これらの値は編集可能です。

データ・ルールの編集

データ・ルールの作成後に、その定義を編集できます。データ・ルール名を変更し、説明を編集できます。データ・ルールのタイプは変更できません。ただし、データ・ルールに対して指定した他のパラメータは変更できます。たとえば、「ドメイン範囲」タイプのデータ・ルールの場合、範囲のデータ型、最小値および最大値を編集できます。

データ・ルールを編集する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、データ・ルールを右クリックして「開く」を選択します。
「データ・ルールの編集」ダイアログ・ボックスが表示されます。

2. 「名前」タブで、次のタスクを実行できます。

- データ・ルールの名前を変更するには、名前を選択して新しい名前を入力します。

- データ・ルールの説明を編集するには、説明を選択して新しい説明を入力します。

3. 「定義」タブで、データ・ルールのプロパティを編集します。

注意:
データ・ルールのタイプは変更できません。変更できるのは、ドメインの境界、ドメイン・リスト、一意キー内の属性数などのデータ・ルールのタイプに関するプロパティのみです。

データ・ルールのオブジェクトへの適用

オブジェクトにデータ・ルールを適用すると、データ・ルールの定義がオブジェクトにバインドされます。たとえば、ルールをDept表にバインドすると、表に指定されている属性に対してルールが確実に実装されます。データ・ルールを適用するにはオブジェクト・エディタを使用します。データ・プロファイル・エディタの「データ・ルール」パネルから導出したデータ・ルールも適用できます。

データ・ルールの適用ウィザードを使用して、データ・オブジェクトにデータ・ルールを適用できます。事前に作成したデータ・ルールまたはデータ・オブジェクトに作成したデータ・ルールを適用できます。データ・ルールの適用先として可能なデータ・オブジェクトのタイプは表、ビュー、マテリアライズド・ビューおよび外部表です。

データ・ルールをデータ・オブジェクトに適用する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、データ・ルールを適用するオブジェクトを右クリックして「開く」を選択します。
データ・オブジェクトのエディタが表示されます。

2. 「データ・ルール」タブで、データ・オブジェクトにバインドされているデータ・ルールが表示されます。「ルールの適用」をクリックして、新しいデータ・ルールを適用します。
データ・ルールの適用ウィザードが表示されます。

3. ようこそページで「次へ」をクリックします。

4. ルールの選択ページで、データ・オブジェクトに適用するデータ・ルールを選択して、「次へ」をクリックします。
BUILT_INノード、DERIVED_DATA_RULESノードおよび作成する任意の他のデータ・ルール・フォルダの下にデータ・ルールがまとめられます。

BUILT_INノードには、ワークスペースで定義されたデフォルトのデータ・ルールが含まれています。たとえば、外部キー、一意キー、NOT NULLなどです。

DERIVED_DATA_RULESノードには、データ・プロファイリングによって導出されたすべてのデータ・ルールが表示されます。

5. 名前と説明ページに、データ・ルールの名前と説明(オプション)を入力して、「次へ」をクリックします。

6. ルール・パラメータのバインド・ページで、「バインド」リストを使用して、データ・ルールを適用する必要のあるデータ・ルールの列を選択して、「次へ」をクリックします。

7. サマリー・ページで、前のウィザード・ページでの選択を確認します。「戻る」をクリックして、選択した値を変更します。データ・ルールを適用するには、「終了」をクリックします。
データ・ルールはデータ・オブジェクトにバインドされ、「データ・ルール」タブにリストされます。

ETLマッピング内のデータ・ルールの手動での適用

データ・オブジェクトを使用する場合は、マッピング内でデータ・ルールを適用するかどうかを決定できます。

ETLマッピングにデータ・ルールを適用する手順は、次のとおりです。

1. 「マッピングを使用して抽出、変換、ロード(ETL)を実行する手順」にある手順を使用してETLマッピングを定義します。

2. マッピング・エディタで、データ・ルールが定義されているデータ・オブジェクトを選択します。
プロパティ・インスペクタ」にマッピング・プロパティが表示されます。

3. 「データ・ルール」ノードで、「データ・ルール」フィールドの右にある省略記号ボタンをクリックします。
「データ・ルール」ダイアログ・ボックスが表示されます。左側に、選択したデータ・オブジェクトに定義されたデータ・ルールが示されます。

4. アクションを指定するデータ・ルールを選択します。
右側のデータ・ルール情報」セクションに選択したデータ・ルールの詳細が表示されます。

5. ルール・アクション列で、次のオプションの1つを選択して、ソース・レコードが選択したデータ・ルールに違反する場合に実行する必要のあるアクションを示します。

- 無視: データ・ルール違反は無視され、レコードはETLマッピングのロジックの一部として処理されます。

- エラーへの移動: データ・ルールに違反する行がエラー表に移動されます。

- レポート: 選択したデータ・ルールに違反する行がレポートに追加されます。

20 データ監査およびデータ・ルールによる品質の監視

この章では、データ監査を使用したデータ品質の監視について説明します。

この章の内容は次のとおりです。

- データ監査の概要

- データ監査を使用したデータ品質の監視

データ監査の概要

データ監査とは、データを一連のデータ・ルールと比較検証して準拠レコードと非準拠レコードを判別するプロセスです。データ監査では、監査データに対してエラーがいくつ発生しているかを監査し、マークすることで、システム内のデータがどの程度ルールに準拠しているかを示す統計メトリックを収集します。データ監査により、定義されたデータ・ルールにデータが準拠していることを確認し、ビジネス・ルールに対する準拠性を追跡できます。

データ監査は、ビジネス要件に合ったデータ品質レベルを継続して確保するための重要なツールです。また、異常なデータの急激な増加を判断することで、特定のイベントをその急増に結び付け、新しいデータ・ソースの追加、システムに影響するデータ・ソースまたはアプリケーションへの変更など、可能性のある根本原因を特定できます。

Oracle Warehouse Builderを使用してデータを監視するには、最初に「データ・プロファイリングの実行」の説明に従ってデータ・ルールを検出または設計する必要があります。その後、データ監査を定義してスケジューリングするか、より大きなプロセス・フローにデータ監査を組み込みます。

関連項目:
データ監査を使用したデータ品質の監視

データ監査は必要に応じて随時デプロイおよび実行できます。ただし、通常は、データ・ウェアハウスやERPシステムなどの運用環境においてデータの品質を監視するため、データ・ロードなどの更新後即時に、または定期的な間隔で、プロセス・フローの一部として監査の実行がスケジューリングされます。

関連項目:
データ監査を使用したデータ・オブジェクトの監査

データ監査のしきい値

データ監査には、ロジックを作成できるしきい値があります。その理由は、ルールに準拠しないレコードが大量に発生すると、プロセス・フローが正常に進行せず、エラーまたは通知ストリームが発生する可能性があるためです。しきい値は、データ監査によって監査するデータ・ルールごとに指定できます。この値を使用して、定義した制限内にデータ・オブジェクトのデータが収まっているかどうかを判断できます。プロセスでは、このしきい値に基づいてアクションを選択できます。プロセス・フローでは、結果に基づき、この値およびブランチをテストできます。

たとえば、Employees表のデータを監査するデータ監査を作成するとします。この表には、emp_email_unique_ruleとemp_sal_min_ruleという2つのデータ・ルールが含まれます。これら両方のルールに対してしきい値として80%を指定します。つまり、Employees表の80%未満のデータがデータ・ルールに準拠しない場合、この表の監査は失敗します。

関連項目:
しきい値の指定の詳細は、「定義済のデータ・ルールに違反するデータに対するアクションの指定」を参照してください。

データ監査の監査結果

ルールに準拠しないレコードにしきい値を設定する以外にも、監査結果を取得し、分析を目的としてこれらを格納できます。データ監査を実行すると、複数の出力値が設定されます。これらの値の1つが監査結果です。監査結果により、データ監査の実行時に発生するデータ・ルール違反の範囲に関する情報が提供されます。

関連項目:
データ監査の実行結果

データ監査を使用したデータ品質の監視

データ監査はオブジェクトであり、ソース・スキーマを継続的にモニターしてデータが定義済のデータ・ルールに準拠していることを確認するために使用できます。モニターできるのは、データ・ルールが定義されているオブジェクトのみです。

データ監査では複数のデータ・オブジェクトのデータ品質を監視できます。表、ビュー、マテリアライズド・ビューおよび外部表のデータ監査を作成できます。

関連項目:
データ監査の詳細は、「データ監査の概要」を参照してください。

データ品質を監視するには、次の手順を実行します。

1. 監視するデータ・オブジェクトを含むデータ監査を作成します。
「データ監査の作成」を参照してください。

2. (オプション)データ監査を構成して、データ監査の物理的なデプロイメント・パラメータを設定します。データ監査を実行するときはこれらのパラメータを使用します。
「データ監査の構成」を参照してください。

3. データ監査をデプロイし、データ監査をターゲット・スキーマで作成します。
「オブジェクトのデプロイ」を参照してください。

4. データ監査を実行して、データ・オブジェクトで定義しているデータ・ルールに準拠していないレコードを識別します。データ監査を手動で実行するか、指定した時間に実行するようにスケジューリングできます。
データ監査の実行の詳細は、「データ監査を使用したデータ・オブジェクトの監査」を参照してください。

5. データ監査の一部であるオブジェクトの定義されたデータ・ルールに準拠しないと判定されたレコードを表示します。
「データ監査エラー表の表示」を参照してください。

注意:
データ監査用のメタデータは、マージ・モードではインポートできません。インポート・モード・オプションの詳細は、『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

データ監査の作成

データ監査の作成ウィザードを使用して、データ監査を作成します。データ監査はプロジェクトのOracleモジュールの一部です。

データ監査を作成する手順は、次のとおりです。

1. データ監査を作成するOracleモジュールを展開します。

2. 「データ監査」を右クリックして、新規データ・プロファイルを選択します。
データ監査の作成ウィザードが表示されます。

3. 名前と説明ページで、次の詳細を入力し、「次へ」をクリックします。

- 名前: データ監査の名前を入力します。

- 説明: データ監査の説明(オプション)を入力します。

4. オブジェクトの選択ページで、監査するデータ・オブジェクトを選択して「次へ」をクリックします。
「使用可能」セクションには、監査可能なオブジェクトのリストが表示されます。「選択済」セクションには、監査用に選択されたオブジェクトが表示されます。ボタンを使用して、オブジェクトを「選択済」セクションに移動します。複数のオブジェクトを選択するには、オブジェクトの選択時に[Ctrl]キーを押したままにします。

5. アクションの選択ページで、選択したオブジェクトにバインドされているデータ・ルールに準拠していないレコードに対して実行されるアクションを指定します。「次へ」をクリックします。
「定義済のデータ・ルールに違反するデータに対するアクションの指定」を参照してください。

6. サマリー・ページで、選択項目を確認します。「戻る」をクリックして選択した値を変更するか、または「終了」をクリックしてデータ監査を作成します。

新しいデータ監査は、「データ監査」ノードに追加されます。この時点で、データ監査のメタデータのみがワークスペースに格納されます。このデータ監査を使用してデータ・オブジェクトのデータの品質を監視するには、「データ監査を使用したデータ・オブジェクトの監査」の説明に従ってデータ監査を実行する必要があります。

定義済のデータ・ルールに違反するデータに対するアクションの指定

データ監査の作成ウィザードのアクションの選択ページまたは「データ監査の編集」ダイアログ・ボックスの「アクションの選択」タブを使用して、データ・オブジェクトで定義されているデータ・ルールに違反するレコードの処理方法を指定します。また、データに対して許容する非コンプライアンスのレベルを指定できます。

このページには、「エラーしきい値モード」と「データ・ルール」という2つのセクションが含まれます。

エラーしきい値モード

エラーしきい値モードを使用して、データ・ルールに対するデータの準拠を判断する方法を指定します。

次の方法から1つ選択します。

- パーセント: データ監査により、データ・ルールに準拠しないレコードの割合に基づいて監査結果が設定されます。この割合は、ルールの欠陥しきい値に指定されます。

- シックスシグマ: データ監査により、データ・ルールに対するシックスシグマ値に基づいて監査結果が設定されます。いずれかのルールに対して計算されたシックスシグマ値が、指定されたシグマしきい値より小さい場合は、データ監査により、AUDIT RESULTが2に設定されます。

データ・ルール

「データ・ルール」セクションには、オブジェクトの選択ページで選択したオブジェクトに適用したデータ・ルールがリストされています。各ルールに対して次を指定します。

- アクション: ソース・オブジェクトのデータがデータ・ルールに準拠しない場合に実行されるアクション。データ・ルールが監査されるようにするには、「レポート」を選択します。データ・ルールが無視されるようにするには、「無視」を選択します。

- 欠陥しきい値: 監査が確実に実行されるために、データ・ルールに準拠する必要があるレコードの割合。1から100の間の値を指定します。「エラーしきい値モード」セクションで「シックスシグマ」を選択している場合、この値は無視されます。

- シグマしきい値: 必要な一致率。0から7の間の値を指定します。7に設定している場合、失敗は許容されません。「エラーしきい値モード」セクションで「パーセント」を選択している場合、この値は無視されます。

データ監査の編集

データ監査を作成した後、次の手順でデータ監査を編集し、そのプロパティを変更できます。

1. プロジェクト・ナビゲータで、データ監査を右クリックして「開く」を選択します。
「データ監査の編集」ダイアログ・ボックスが表示されます。

2. 「名前」タブで、データ監査の新しい名前と説明を入力します。

3. 「オブジェクトの選択」タブで、ボタンを使用してデータ監査の一部として監査するオブジェクトを追加または削除します。

4. 「アクションの選択」タブで、指定したデータ修正アクションを編集します。
「定義済のデータ・ルールに違反するデータに対するアクションの指定」を参照してください。

5. 「オブジェクトの調整」タブで、オブジェクトの左側にあるチェック・ボックスを選択し、最新のリポジトリ定義を使用してその定義を調整します。「調整」をクリックします。

6. 「OK」をクリックし、「データ監査の編集」ダイアログ・ボックスを閉じます。

データ監査の構成

構成フェーズ中に構成パラメータを設定して、作成したデータ監査に物理的なデプロイメント・プロパティを割り当てます。データ監査の「構成」タブでは、データ監査の物理プロパティを構成できます。

データ監査を構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。

2. 構成するデータ監査の名前を右クリックして「構成」を選択します。
データ監査の「構成」タブが表示されます。

3. 要件に基づいて、「ランタイム・パラメータ」、データ監査パラメータおよび「コード生成オプション」にリストされているパラメータを構成します。

ランタイム・パラメータ

表20-1に、ランタイム構成パラメータを示します。

表20-1 データ監査用のランタイム構成パラメータ

構成パラメータ名

説明

デフォルト・パージ・グループ

パッケージの実行時に使用されます。ランタイム・スキーマ内の各監査レコードは、指定したパージ・グループに割り当てられます。

バルク・サイズ

カーソルの処理中にバッチとしてフェッチされる行数。

表分析のサンプリング率

ターゲット表の分析時にサンプリングされる行の割合。ターゲット表を分析して、ターゲット表にデータをロードする間のパフォーマンス向上に使用できる統計を収集します。

コミット頻度

コミットの発行前に処理される行数。

エラーの最大数

このステップの実行が終了するまでに許容されるエラーの最大数。

デフォルト・オペレーティング・モード

使用するオペレーティング・モードを表す

選択できるオプションは、「行ベース」、「行ベース(ターゲットのみ)」、「セット・ベース」、「セット・ベースから行ベースへのフェイルオーバー」、「セット・ベースから行ベース(ターゲットのみ)へのフェイルオーバー」です。

デフォルト監査レベル

パッケージの実行時に使用する監査レベルを指定します。パッケージの実行時にランタイム・スキーマ内で取得される監査情報の量は、このパラメータの設定値に応じて異なります。

選択できるオプションは、次のとおりです。

- ERROR DETAILS: 実行時には、エラー情報と統計監査情報が記録されます。

- COMPLETE: 実行時にはすべての監査情報が記録されます。この設定では大量の診断データが生成され、割当済表領域がすぐにいっぱいになってしまう可能性があります。

- NONE: 実行時に監査情報は記録されません。

- STATISTICS: 実行時には統計監査情報が記録されます。

データ監査パラメータ

このカテゴリにはデータ監査と同じ名前が使用されます。表20-2では、汎用的なデータ監査構成パラメータについて説明します。

表20-2 データ監査用のデータ監査構成パラメータ

構成パラメータ名

説明

生成コメント

生成されたコードに関するコメントを追加指定します。

しきい値モード

失敗のしきい値の測定に必要なモードを指定します。オプションは「PERCENTAGE」と「SIX SIGMA」です。

言語

生成済コードの定義に使用する言語。オプションは、「PL/SQL」(デフォルト)と「UNDEFINED」です。「PL/SQL」(デフォルト)が選択されていることを確認してください。

デプロイ可能

このデータ監査をデプロイすることを示すには、このオプションを選択します。Oracle Warehouse Builderでコードが生成されるのは、データ監査がデプロイ可能としてマークされている場合のみです。

参照カレンダ

データ監査に関連付けるスケジュールを指定します。スケジュールでは、データ監査の実行時期を定義します。

コード生成オプション

表20-3にデータ監査に設定できるコード生成オプションを示します。

表20-3 データ監査用のコード生成オプション

構成パラメータ名

説明

ANSI SQL構文

生成されたコードでANSI SQLコードを使用するには、このオプションを選択します。このオプションを選択しなければ、Oracle SQL構文が生成されます。

コミット制御

コミットの実行方法を指定します。このパラメータに使用可能なオプションは、「自動」、「自動相関」および「手動」です。このパラメータが「自動」に設定されていることを確認してください。

パラレルDMLの有効化

実行時にパラレルDMLを有効化するには、このオプションを選択します。

表分析文

データ監査用の統計収集に使用する文を生成するには、このオプションを「True」に設定します。ターゲット表がマッピングと同じスキーマにない場合に、その表を分析するには、マッピングを所有するスキーマにANALYZE ANYを付与する必要があります。

最適化コード

最適化コードの生成を指定するには、このオプションを選択します。

生成モード

最適化コードを生成する際のモードを選択します。選択できるオプションは、「すべてのオペレーティング・モード」、「行ベース」、「行ベース(ターゲットのみ)」、「セット・ベース」、「セット・ベースから行ベースへのフェイルオーバー」および「セット・ベースから行ベース(ターゲットのみ)へのフェイルオーバー」です。

ターゲット・ロード順序付けを使用

ターゲット・ロード順序付け用のコードを生成するには、このオプションを選択します。

エラー・トリガー

エラー・トリガー・プロシージャの名前を指定します。

バルク処理コード

バルク処理コードを生成するには、このオプションを選択します。

データ監査を使用したデータ・オブジェクトの監査

データ監査の作成後に、データ・オブジェクト内のデータのモニターに使用できます。これにより、オブジェクトのデータ・ルール違反が確実に検出されます。データ監査を実行すると、データ・オブジェクトについて定義済のデータ・ルールに違反しているレコードがエラー表に書き込まれます。

データ監査には2つの使用方法があります。

- 手動によるデータ監査の実行

- データ監査実行のスケジューリング

手動によるデータ監査の実行

データ・オブジェクト内のデータがそのオブジェクトに対して定義済のデータ・ルールに準拠しているかどうかをチェックするには、データ監査を実行する必要があります。データ監査は、デザイン・センターまたはコントロール・センター・マネージャから実行できます。データ監査をデザイン・センターから実行するには、データ監査を右クリックして「開始」を選択します。コントロール・センター・マネージャの場合は、データ監査を選択し、「ファイル」メニューから「開始」を選択します。結果は、「データ監査の実行結果」で説明したように「ジョブ詳細」ウィンドウに表示されます。

データ監査実行のスケジューリング

データ監査の実行をスケジュールする手順は、次のとおりです。

1. データ監査を表すデータ監査モニター・アクティビティを含むプロセス・フローを作成します。

2. このプロセス・フローを事前定義済の時刻に実行するようにスケジュールします。
オブジェクトのスケジューリングの詳細は、「スケジュールの定義」を参照してください。

図20-1は、データ監査モニター・アクティビティを含むプロセス・フローを示しています。このプロセス・フローでは、LOAD_EMP_MAPはEMP表にデータをロードするマッピングです。データ・ロードに成功すると、データ監査EMP_DATA_AUDITが実行されます。データ監査では、表に対して定義されたデータ・ルールに基づいてEMP表のデータがモニターされます。

図20-1 プロセス・フローにおけるデータ監査モニター・アクティビティ

「図20-1 プロセス・フローにおけるデータ監査モニター・アクティビティ」の説明

データ監査の実行結果

データ監査の実行後、「ジョブ詳細」ウィンドウに実行詳細が表示されます。「ジョブ詳細」ウィンドウには、「入力パラメータ」および「実行結果」という2つのタブがあります。「ジョブの詳細」ウィンドウが表示されるのは、デプロイメント・プリファレンスの「モニターの表示」を「True」に設定している場合のみです。

関連項目:
デプロイメント・プリファレンスの詳細は、『Oracle Warehouse Builder概要』を参照してください。

図20-2に、「入力パラメータ」タブおよび「実行結果」タブを含む「ジョブの詳細」ウィンドウを示します。

図20-2 データ監査の実行結果

「図20-2 データ監査の実行結果」の説明

「入力パラメータ」タブ

「入力パラメータ」タブには、データ監査の実行に使用された入力パラメータの値が表示されます。

「実行結果」タブ

「実行結果」タブには、データ監査の実行結果が表示されます。このタブには「行アクティビティ」セクションと「出力パラメータ」セクションがあります。

「行アクティビティ」セクションには、各ステップにおけるエラー表への挿入の詳細が表示されます。複数のデータ・ルールを指定した場合、データ監査に複数表挿入が使用されます。この場合は、行数のカウントが不正確になります。

たとえば、図20-2のデータ監査実行の結果では、E_NOT_NULLというデータ・ルールによってエラー表に1つのレコードが挿入されています。

「出力パラメータ」セクションには、次の3つのパラメータがあります。

- AUDIT_RESULT: データ監査の実行結果を示します。このパラメータに可能な値は次のとおりです。

- 0: データ・ルール違反は発生しませんでした。

- 1: データ・ルール違反が1つ以上発生しましたが、データ監査で定義された最低品質のしきい値を満たせないデータ・ルールはありませんでした。

- 2: 1つ以上のデータ・ルールが最低品質のしきい値を満たせませんでした。

しきい値の設定の詳細は、「データ監査の作成」でアクションを選択する手順を参照してください。

- EO_<データ・ルール名>: 指定したデータ・ルールについて計算されたエラー品質を表します。0はすべてのエラー、100はエラーなしを示します。

- SO_<データ・ルール名>: 指定したデータ・ルールについて計算されたシックスシグマ品質を表します。

データ監査エラー表の表示

データ監査を、手動で実行するか、またはプロセス・フローの一部として実行する場合、Oracle Warehouse Builderではデータ監査に含まれるオブジェクトに定義されたデータ・ルールに準拠しないレコードをエラー表に書き込みます。データ監査に含まれるオブジェクトごとに準拠しないレコードを格納する、オブジェクトに対応したエラー表があります。

リポジトリ・ブラウザを使用すると、エラー表に書き込まれた準拠しないレコードがすべて表示されます。

データ監査の実行によって作成されたエラー表を表示するには、次の手順を実行します。

1. 「エラー表の権限の付与」の説明に従って、エラー表の権限を付与します。

2. リポジトリ・ブラウザを使用して、エラー表を表示します。次のステップを実行します。

1. 「リポジトリ・ブラウザを開く」に示すようにリポジトリ・ブラウザを開きます。

2. 「データ監査の実行結果として作成されたエラー表の表示」に示すように、リポジトリ・ブラウザを使用してエラー表を表示します。

エラー表に対する権限の付与

リポジトリ・ブラウザを使用して、エラー表に格納されているデータを表示する前に、エラー表の権限をOWBSYSユーザーに付与する必要があります。これにより、リポジトリ・ブラウザでエラー表データにアクセスできるようになります。

エラー表の権限を付与する手順は、次のとおりです。

1. SQL*Plusで、エラー表が含まれるスキーマにログインします。
オブジェクトのエラー表はオブジェクトと同じスキーマに格納されています。

2. SQLスクリプトOWB_HOME\owb\rtp\sql\grant_error_table_privileges.sqlを実行します。

3. プロンプトが表示された場合、権限を付与するエラー表の名前を入力します。
「エラー表名」プロパティを使用してオブジェクトのエラー表の名前を指定しなかった場合、デフォルト名が表示されます。エラー表を使用するオブジェクトの場合、デフォルトのエラー表名は、「_ERR」という接頭辞が付いたオブジェクト名です。

4. 権限を付与する各エラー表に対し手順2から3を繰り返します。

21 データ・ルールによるデータ整備とデータ修正

この章ではOracle Warehouse Builderのデータ整備機能とその使用方法を説明します。

この章の内容は次のとおりです。

- ETLでのデータ・ルールおよび自動データ修正の概要

- データ・プロファイリング結果からの修正マッピングの生成

- データ・プロファイリング結果に基づいたソース・データの整備および変換

ETLでのデータ・ルールおよび自動データ修正の概要

プロファイリング結果からデータ・ルールを導出した後、プロファイリング結果に基づいたソース・データの修正プロセスを自動化できます。スキーマ修正とマッピング修正を作成できます。スキーマ修正ではスクリプトが作成されます。このスクリプトを使用すると、導出したデータ・ルールを適用して、ソース・オブジェクトと同じ構造を持つデータ・オブジェクトの修正済セットを作成できます。マッピング修正では、ソース・オブジェクトからデータを取得して新しいオブジェクトにロードするための新しい修正マッピングが作成されます。

データ・オブジェクトの特定のセット(表、ビューなど)およびそれらのオブジェクトに適用されるデータ・ルールの特定のセットでは、Oracle Warehouse Builderにより次のデータ修正オブジェクトおよびロジックが自動的に生成されます。

- 修正済スキーマ・オブジェクトの定義。これは、ソース表と同じ列を持ち、同じデータ・ルールがバインドされている表ですが、制約が存在し、データ型やその他の構造がより厳格なため、データ・ルールの修正が必要です。修正済スキーマ・オブジェクトへの個々のデータ・ルールの適用方法の詳細は、表21-1「スキーマ修正に対するデータ・ルールの実装」を参照してください。

- 修正した新しい表にクリーンなバージョンのソース・データをロードするためのクレンジングETLマッピング。準拠した行は、変更することなく、クリーンな表にパススルーできます。準拠していないデータはフィルタリングして除外するか、報告するか、準拠するように修正できます。Oracle Warehouse Builderには多数の一般的なデータ修正アルゴリズムが組み込まれていますが、ユーザー独自のクレンジング・ロジックを実装することもできます。使用可能な修正方法の詳細は、表21-2「データ修正のクレンジング方針」を参照してください。

修正するデータを実際に作成するには、修正するスキーマ・オブジェクト、マッピングおよび関連するデータ・ルールをターゲット・ロケーションにデプロイするか、マッピングを実行するか、必要に応じて、マッピングの実行をスケジュールする必要があります。整備済スキーマ・オブジェクトを元のクリーンではない状態のデータをソースとして使用してさらにETLを実行できます。

ETLマッピングのデータ・ルールを手動で適用することもできます。表などのデータ・オブジェクトをマッピングに追加する場合、オブジェクトに適用する1つ以上のデータ・ルールを選択できます。オブジェクトに対してエラー表が作成され、準拠データと非準拠データに対してマッピング内に個別のフローを定義できます。

データ・プロファイリング結果からの修正マッピングの生成

データ・ルールに基づいてソース表またはその他のオブジェクトの修正を自動的に生成する場合、生成されるオブジェクトには次が含まれます。

- 修正されたスキーマ・オブジェクトの定義。つまり、ソース表と同じ列を持つけれども修正するデータ・ルールに対応する制約、型およびその他の構造を持つ表です。

- 準拠ソース・データをターゲット表に移動するか、非準拠データをフィルタするか、指定のアルゴリズムに基づいて非準拠データから修正済の準拠データを生成するETLマッピングをクレンジング

修正するデータを実際に作成するには、修正するスキーマ・オブジェクト、マッピングおよび関連するデータ・ルールをターゲット・データベースにデプロイするか、マッピングを実行するか、必要に応じて、マッピングの実行をスケジュールする必要があります。

修正作成の前提条件

修正作成の前提条件は次のとおりです。

- 修正するソース・データ・オブジェクト(表、ビューなど)をプロファイリングしたデータ・プロファイルが存在する必要があります。

- 修正する非準拠データの特定に使用するデータ・ルールが存在する必要があります。

修正オブジェクトの作成のステップ

データ・プロファイル・エディタではデータ・プロファイリング結果に基づくスキーマの修正およびデータの整備を実行するマッピングを作成できます。

修正を作成する手順は、次のとおりです。

1. データ・プロファイルが開いていない場合、プロジェクト・ナビゲータでそのデータ・プロファイルを右クリックし、「開く」を選択して開きます。

2. 「プロファイル」メニューから「修正の作成」を選択します。
修正の作成ウィザードが表示されます。

3. ようこそページで「次へ」をクリックします。

4. ターゲット・モジュールの選択ページで、修正を含むターゲット・モジュールを指定し、「次へ」をクリックします。
新しいモジュールを作成するか、既存のモジュールを使用できます。

- 修正を既存のターゲット・モジュールに格納するには、「既存のモジュールを選択」を選択します。「使用可能」リストには修正を格納できる既存のモジュールが表示されます。このリストからモジュールを選択します。

- 修正を新規ターゲット・モジュールに格納するには、「新規ターゲット・モジュールの作成」を選択します。モジュールの作成ウィザードが表示され、新規ターゲット・モジュールの作成ステップが示されます。

前の修正によって作成された修正オブジェクトを削除するには、「前の修正オブジェクトを削除します。」を選択します。

5. オブジェクトの選択ページで、修正を生成するオブジェクトを「選択済」リストに移動して選択します。「次へ」をクリックします。
「フィルタ」リストを使用すると、選択可能なオブジェクトをフィルタできます。デフォルト選択は「すべてのオブジェクト」です。表やビューなど、特定タイプのデータ・オブジェクトのみを表示できます。

6. データ・ルールおよびデータ型の選択ページで、生成する必要のある修正を選択することによってスキーマ修正を実行します。「次へ」をクリックします。
データ修正の指定の詳細は、「修正されるスキーマ・オブジェクトのデータ・ルールおよびデータ・タイプの選択」を参照してください。

7. (オプション)データ・ルール検証ページで、検証エラーを書き留め(存在する場合)、作業を進める前にこれらを修正します。
修正対象として選択したオブジェクトに前のデータ修正アクションの修正オブジェクトが存在する場合、このページにメッセージが表示されます。「次へ」をクリックし、前に作成した修正オブジェクトを削除します。

8. 修正された表の確認と受入ページで、修正するオブジェクトを選択し、「次へ」をクリックします。
オブジェクトの修正方法を指定する方法の詳細は、「修正するオブジェクトの選択」を参照してください。

9. データ修正アクションの選択ページで、ソース・データのクレンジングを実行する修正アクションを指定し、「次へ」をクリックします。
データの修正およびクレンジングを実行するアクションの指定の詳細は、「データ修正の選択とアクションのクレンジング」を参照してください。

10. サマリー・ページで、「終了」をクリックして修正オブジェクトを作成します。

修正スキーマが作成され、プロジェクト・ナビゲータに追加されます。修正オブジェクトおよびマッピングは、修正の作成ウィザードのターゲット・モジュールの選択ページでターゲット・モジュールとして指定したモジュールの下に表示されます。修正オブジェクトはソース・オブジェクトと同じ名前を使用します。修正マッピングの名前は、接頭辞M_を持つオブジェクト名です。修正マッピングはソース・データを整備し、そのデータを修正済のターゲット・オブジェクトにロードするために使用されます。

修正するスキーマ・オブジェクトのデータ・ルールおよびデータ型の選択

データ・ルールおよびデータ型ページを使用して、修正されるデータ・オブジェクトに対して生成するスキーマ修正を選択します。Oracle Warehouse Builderは、データ・プロファイリング結果に基づいて、このページにデータ型修正およびデータ・オブジェクトに適用できるデータ・ルールを移入します。

スキーマ修正では、データ型の定義を修正し、修正するオブジェクトに適用するデータ・ルールを定義します。修正用に選択したオブジェクトはページの左側に表示され、モジュールごとにツリーに編成されます。右のパネルには「データ・ルール」および「データ型」という2つのタブがあります。オブジェクト名をクリックしてオブジェクトを選択し、「データ・ルール」タブおよび「データ型」タブを使用してこのオブジェクトに対してどのようにスキーマ修正を実行するかを定義します。

データ・ルール: 「データ・ルール」タブには、オブジェクト・ツリーで選択されたオブジェクトに使用可能なデータ・ルールが表示されます。修正するオブジェクトに対して生成するデータ・ルールを指定するには、データ・ルールの左側にあるチェック・ボックスを選択します。Oracle Warehouse Builderは、スキーマ生成時にこれらのデータ・ルールを使用して表の制約を作成します。

「バインド」セクションには、ルールのバインド先となる表の列に関する詳細が含まれています。ルール名をクリックするとそのルールのバインドが表示されます。

Oracle Warehouse Builderでは、データ・ルールを修正されたスキーマ・オブジェクトに適用するために様々な方法を使用します。使用される方法は、実装するデータ・ルールのタイプによって異なります。

表21-1に、オブジェクト・スキーマの修正方法を示します。また、各修正で使用されるデータ・ルール・タイプも示します。

表21-1 スキーマ修正に対するデータ・ルールの実装

スキーマ修正方法

説明

修正方法を使用可能なデータ・ルールのタイプ

制約の作成

修正表にデータ・ルールを反映する制約が作成されます。制約を作成できない場合は、データ・ルールの適用ウィザードのデータ・ルール検証ページに検証メッセージが表示されます。

カスタム

ドメイン・リスト

ドメイン・パターン・リスト

ドメイン範囲

共通形式

NULLなし

一意キー

データ型の変更

プロファイリングの結果に従って列のデータ型がNUMBERまたはDATEに変更されます。データ型が、タイプIs NumberおよびIs Nameのデータ・ルール用に変更されます。

Is Number

Is Date

検索表の作成

検索表が作成され、修正された表および検索表に、該当する外部キー制約または一意キー制約が追加されます。

関数従属性

名前およびアドレスの解析

名前およびアドレス属性が修正表に追加されます。名前およびアドレス属性は、Name and Address演算子の出力値の選択に対応します。データ整備の目的で作成されたマップでは、Name and Address演算子は名前およびアドレス整備の実行に使用されます。

名前とアドレス

データ型: 「データ型」タブには、修正対象として選択している列が表示されます。変更は、データ型または精度の変更、あるいは固定長から可変長への変更になります。このタブの「文書化されたデータ型」列には既存の列定義が表示され、「新規データ型」列にはこの列定義に対して提案された修正内容が表示されます。

列定義を修正するには、列名の左側にあるチェック・ボックスを選択します。

修正するオブジェクトの選択

修正された表の確認と受入ページを使用して、修正するオブジェクトを確認し、データ修正の実行方法に関する追加の詳細を指定します。このページには、「データ・ルール」および「データ型」ページのスキーマ修正で選択したオブジェクトが含まれます。

データ・オブジェクトの修正方法を指定するには、次の手順に従います。

1. 「生成される修正表を確認して確定してください」セクションで、データ・オブジェクトの左側にある「作成」を選択して、修正済スキーマ内にこのデータ・オブジェクトを作成します。
修正された表の定義セクションに、選択したデータ・オブジェクトの修正の詳細が表示されます。「列」タブには、修正するデータ・オブジェクトで作成される列の詳細が表示されます。「制約」タブには、修正するデータ・オブジェクトで作成される制約の詳細が表示されます。「データ・ルール」タブには、修正するデータ・オブジェクトに作成されるデータ・ルールの詳細が表示されます。

2. 修正された表の定義セクションの「列」タブで、次の操作を実行します。

- 修正済のデータ・オブジェクトにこの列を作成するには、列名の左側で「作成」を選択します。

- 修正済のデータ・オブジェクトからこの列を削除するには、列名の左側にある「作成」を選択解除します。

- 値をクリックして、新しい値を入力することで、列の「データ型」、「長さ」、「精度」、「秒精度」および「スケール」を編集します。ただし、列名は変更できません。

3. 修正された表の定義セクションの「制約」タブで、次の操作を実行します。

- さらに制約を追加するには、「制約の追加」をクリックします。

- 修正するデータ・オブジェクトから制約を削除するには、制約を選択して「削除」をクリックします。

4. 修正された表の定義セクションの「データ・ルール」タブで、次の操作を実行します。

- 修正するデータ・オブジェクトにこの導出されたデータ・ルールを適用するには、データ・ルールの左側にあるチェック・ボックスを選択します。
「バインド」列には、データ・ルールを適用する必要のある列を必ず含めてください。

- 「ルールの適用」をクリックして、修正するオブジェクトに新しいデータ・ルールを適用します。データ・ルールの適用ウィザードではデータ・ルールの適用をプロセスに沿ってガイドします。

データ修正およびデータ・クレンジング・アクションの選択

データ・プロファイリングの結果に基づいて修正オブジェクトの自動生成を決定する場合は、ソースの不整合データを修正済オブジェクトに格納する前のクレンジング方法を指定する必要があります。このために、修正オブジェクトに適用されるデータ・ルールごとにクレンジング方針を指定します。

データ修正アクションの選択ページでは、ソース・データの修正方法を指定できます。このページには、「修正済の表の選択」および「データ修正アクションの選択」の2つのセクションがあります。「修正済の表の選択」セクションには、修正用に選択したオブジェクトがリストされます。このセクションには、修正するために選択したデータ・オブジェクトごとに次の列があります。

- 修正: このオプションを設定すると、表の列に表示されているデータ・オブジェクトの修正オブジェクトの生成を行うことができます。

- 表: 指定されている修正アクションのデータ・オブジェクト名を表します。

- ロード・オプション: 修正マッピングでロードするレコードを示します。生成される修正マッピングがすべてのレコードをロードする必要があることを示すには、「すべてのレコード」を選択します。生成される修正マッピングが修正するオブジェクトのみをロードする必要があることを示すには、修正するオブジェクトを選択します。

- 監査オプション: このオプションを設定すると、表の列に表示されている表のデータ監査を作成します。

- 説明: 作成される修正マッピングの説明を表します。

「データ修正アクションの選択」に関連するデータ・ルールを表示するには「修正済の表の選択」でデータ・オブジェクトを選択します。

データ修正アクションの選択

各データ・ルールで、データ・オブジェクトのデータ・ルール・セットに違反するデータ値を処理する方法を指定する修正アクションを選択する必要があります。「アクション」列のリストを使用して、実行する修正アクションを指定します。

選択できる修正アクションは次のとおりです。

- 無視: データ・ルールは無視されるため、このデータ・ルールに基づいて拒否される値はありません。

- レポート: データ・ルールは、レポート作成専用にデータがロードされた後にのみ実行されます。「無視」オプションと同様ですが、データ・ルールに違反している値を含むレポートが作成されます。このアクションは、一部のルール・タイプに対してのみ使用できます。

- 整備: このデータ・ルールで拒否された値はエラー表に移動され、そこでクレンジング方針が適用されます。このオプションを選択した場合は、「クレンジング方針の指定」の説明に従って、クレンジング方針を指定する必要があります。

クレンジング方針の指定

各データ・ルールで、「クリーンアップ方針」リストを使用してセット・データ・ルールに違反するデータをクレンジングする方法を指定します。このオプションは、「アクション」列で「整備」を選択した場合にのみ有効になります。整備方針は、データ・ルールのタイプとルール構成によって異なります。データ・ルールと一致しないレコードを格納するにはエラー表を使用します。

表21-2では、クレンジング方針を説明し、方針に適用可能なデータ・ルールのタイプをリストしています。

表21-2 データ修正のクレンジング方針

クレンジング方針

説明

適用可能なデータ・ルールのタイプ

削除

ターゲット表とエラー・レコードを移入しません。

すべて

カスタム

ヘッダーが格納されるターゲット表にファンクションが作成されます。実装詳細は含まれません。このファクションに実装詳細を追加する必要があります。

ドメイン・リスト

ドメイン・パターン・リスト

ドメイン範囲

共通形式

NULLなし

名前とアドレス

カスタム

既存ファンクションの使用

修正を実行する既存のファンクションのリストから選択します。

ドメイン・リスト

ドメイン・パターン・リスト

ドメイン範囲

共通形式

NULLなし

名前とアドレス

カスタム

最小値に設定

エラー・レコードの属性値をデータ・ルールに定義されている最小値に設定します。

定義された最小値を持つ「ドメイン範囲」ルール

最大値に設定

エラー・レコードの属性値をデータ・ルールに定義されている最大値に設定します。

定義された最大値を持つ「ドメイン範囲」ルール

類似度

許可されたドメイン値に基づく類似度アルゴリズムを使用して、エラー・レコードに類似した値が検出されます。類似した値が検出されない場合は元の値が使用されます。

文字データ型を持つ「ドメイン・リスト」ルール

Soundex

許可されたドメイン値に基づくSoundexアルゴリズムを使用して、エラー・レコードに類似した値が検出されます。Soundex値が検出されない場合は元の値が使用されます。

文字データ型を持つ「ドメイン・リスト」ルール

マージ

Match-Mergeアルゴリズムを使用して、重複レコードが1つの行にマージされます。

一意キー

モードに設定

失敗となった関数従属性パーティションにモード値がある場合は、モード値を使用してエラー・レコードを修正します。

関数従属性

関連項目:
「データ・ルールのタイプ」

修正表およびマッピングの表示

表エディタで修正表を表示すると、表の設計の一部として作成したデータ・ルールと制約を確認できます。また、他のすべてのETLマッピングが表示可能であるように、修正マッピングも表示できます。

修正マッピングを表示する手順は、次のとおりです。

1. マッピングをダブルクリックし、マッピング・エディタでオブジェクトを開きます。

2. マッピングが開いた後、「表示」→「自動レイアウト」を順番に選択してマッピング全体を表示します。
図21-1に、修正の作成ウィザードで生成された修正マップを示します。

図21-1 生成された修正マッピング

「図21-1 生成された修正マッピング」の説明

3. サブマッピングATTR_VALUE_1を選択し、ツールバーの「子グラフの表示」をクリックしてサブマッピングを表示します。
図21-2に、表示されるサブマッピングを示します。

図21-2 修正サブマッピング

「図21-1 修正サブマッピング」の説明

サブマッピングは、修正の作成ウィザードで指定した実際の修正クレンジングを行うマッピング内の要素です。このサブマップの中央に、修正の作成ウィザードによりファンクションとして生成されたDOMAINSIMILARITY変換があります。

データ・プロファイリング結果に基づいたソース・データの整備および変換

修正オブジェクトの生成後は、修正オブジェクトをデプロイして実行し、スキーマの修正とデータの整備を実行する必要があります。修正マッピングをデータ・ルールとともに実行すると、データが修正されます。また、関連するデータ・ルールは、データ管理でオプションで使用できるように修正されるスキーマのオブジェクトにバインドされたままになります。

スキーマの修正およびデータのクレンジングでは、次の手順を実行する必要があります。

1. スキーマ修正のデプロイ

2. 修正マッピングのデプロイ

スキーマ修正のデプロイ

データ・プロファイリングの結果に基づいてスキーマ修正を実行すると、指定したスキーマ修正アクションが生成され、修正済のデータ・オブジェクトが生成されます。修正済データ・オブジェクトの名前は、接頭辞TMP_を持つ元のソース・オブジェクトの名前です。

スキーマの修正をデプロイする場合は、すべての修正済オブジェクトを、データ修正プロセスの一部として修正済のオブジェクトに対して定義されたデータ・ルールがある場合は一緒にデプロイします。

修正マッピングのデプロイ

修正マッピングを生成して、データ・プロファイリング結果に基づいてソース・データをクレンジングすると、Oracle Warehouse Builderはワークスペースに修正マッピングを作成します。特定のデータ・オブジェクトの修正マッピングの名前は、接頭辞M_を持つデータ・オブジェクトの名前です。たとえば、DEPT表をクレンジングするために生成された修正マッピングはM_DEPTになります。

データ修正プロセスの一環として作成した修正マッピングをデプロイするには、次の手順を実行します。

1. ソース表のSELECT権限をPUBLICに付与します。
たとえば、修正マッピングには、HRスキーマのEMPLOYEES表が含まれます。HR.EMPLOYEES表で、SELECT権限がPUBLICに付与される場合にのみ、この修正マッピングを正常にデプロイできます。

2. データ・プロファイリングによって作成された修正表をデプロイします。
プロジェクト・ナビゲータで、表を右クリックして「デプロイ」を選択できます。または、コントロール・センターを使用してデータ・オブジェクトをデプロイできます。

3. ソース・データをクレンジングするために生成された修正マッピングをデプロイします。

4. ソース・データをクレンジングして修正済の表にロードするには、その他のETLマッピングと同様に修正マッピングを実行します。
マッピングを実行するには、プロジェクト・ナビゲータでマッピングを右クリックして「開始」を選択します。

また、このマッピングをスケジュールして、その他のマッピングなどを実行したり、プロセス・フローにマッピングを含めたりできます。

22 名前とアドレスのクレンジング

この章では、Oracle Warehouse Builderの名前とアドレスのクレンジング機能について説明します。

この章の内容は次のとおりです。

- Oracle Warehouse Builderの名前とアドレスのクレンジングについて

- Name and Address演算子を使用したName and Addressデータのクレンジングおよび修正

- Name and Addressサーバーの管理

Oracle Warehouse Builderの名前とアドレスのクレンジングについて

Oracle Warehouse Builderには名前とアドレスのクレンジング機能が備わっています。この機能は、複数のサード・パーティ・ベンダーの名前とアドレスのクレンジング・ツールと統合できます。Oracle Warehouse Builderでは、名前とアドレスが解析され、このタイプのデータに固有の方法(よくあるニックネームや略称の照合など)が使用されます。名前とアドレスのクレンジング・ソフトウェアのサード・パーティ・ベンダーから提供されたデータ・ライブラリと入力データを比較して、名前およびアドレスのソース・データのエラーや不整合を識別して修正できます。また、郵便配達区域や地理座標などの情報を使用して、レコードを補強できます。

注意:
Oracle Warehouse Builderでは、Oracle Warehouse Builder ETLマッピングで使用されるName and Address演算子を通じてその名前とアドレスのクレンジング機能を公開します。
サード・パーティETL製品のユーザーも既存のETLソリューションを保持すると同時に、Oracle Warehouse Builderを使用して名前およびアドレス・クレンジングを行うことができます。

- サード・パーティのETLツールを使用してステージング表に名前およびアドレスのクレンジング入力データをロードするか、既存の表をソースとして使用します。

- Oracle Warehouse Builder ETLマッピングを使用して、名前およびアドレスのクレンジングを適用したり、修正されたデータを出力表にロードします。

- サード・パーティのETLツールを使用してその後の処理のための出力表からクレンジング済の結果を選択します。

マッピング用のデプロイされるコードは、名前およびアドレスのクレンジングを実行するデータベースにロードされるPL/SQLパッケージのみであるので、この技術はPL/SQパッケージからロジックを呼び出すことのできるETLツールから使用できます。

また、データ・ライブラリはOracle Warehouse Builderにバンドルされていません。ライセンスはサード・パーティ・ベンダーから直接購入する必要があります。

注意:
Name and Address演算子を使用するには、別途ライセンスが必要で、サード・パーティの名前とアドレスのクレンジング・ソフトウェアをインストールする必要があります。『Oracle Warehouse Builderインストレーションおよび管理ガイド』を参照してください。

Oracle Warehouse Builderで使用可能な名前とアドレスのクレンジングのタイプ

Name and Address演算子によって修正されるエラーや非一貫性には、アドレス形式の相違、略語の使用、スペルの間違い、古くなった情報、一貫性のないデータ、名前の順序変更などがあります。この演算子は、これらのエラーと非一貫性を次のように修正します。

- 名前とアドレスの入力データを個々の要素に解析します。

- 名前とアドレスのデータを標準化します。これには、一般的なニックネームやビジネス名、および各国の郵政公社で承認されているアドレス・コンポーネントの標準的な略称が使用されます。名前やアドレスを標準化すると、照合や世帯検索が容易になり、顧客を単一のビューで表示するのに非常に役立ちます。

- 番地名や市区町村名などのアドレス情報を修正します。不適切なアドレスや郵送不可能なアドレスをフィルタリングすると、マーケティング・キャンペーンのコストの削減につながります。

- 性別、郵便番号、国コード、区画ID、ビジネスIDと顧客IDなどの追加データを名前とアドレスに追加します。この情報以外に調査ジオコーディングなどのアドレス情報を加えると、地理的な場所に基づくマーケティング・キャンペーンに使用できます。
アドレスに地理的情報を追加しておくと、地域特有のマーケティング活動が容易になります。たとえば、大都市圏内の顧客(都市圏の半径nマイル以内)に限定したマーケティングや、会社の店舗が対象とする顧客(店舗の半径xマイル以内)に限定したマーケティングなどがあります。Oracle DatabaseのオプションであるOracle Spatial、およびOracle Databaseに同梱されているOracle Locatorは、この機能とともに使用できる製品です。

また、Name and Address演算子を使用すると、アドレス修正と郵便照合がサポートされている国の郵便レポートを生成できます。郵便レポートによって、郵便割引を受けられる場合もあります。詳細は、「郵便レポートについて」を参照してください。

例: アドレス情報の修正

この例では、Name and Address演算子を使用するマッピングによってレコードを操作する方法を説明します。このマッピングでは、データ品質のエラーを処理する推奨方法を説明するためにスプリッタ演算子も使用しています。

入力例

この例では、ソース・データには表22-1に示すデータ行のあるCustomer表が含まれます。

表22-1 Name and Address演算子へのサンプル入力

アドレス列

アドレス・コンポーネント

名前

Joe Smith

番地

8500 Normandale Lake Suite 710

市区町村

Bloomington

郵便番号

55437

このデータにはニックネーム、姓および郵送先アドレスの一部が含まれますが、顧客のフル・ネーム、完全な番地および州がありません。また、このデータには、トラック輸送の距離計算に使用される、緯度や経度などの地理的な情報も含まれていません。

手順の例

この例のマッピングでは、Name and Address演算子を使用して名前とアドレスのレコードを整備した後に、スプリッタ演算子を使用して、レコードの解析が成功したかどうかに応じてレコードを別々のターゲットにロードします。この項では、このようなマッピングの設計に必要な一般的な手順を説明します。

サンプル・レコードを変更する手順は、次のとおりです。

1. マッピング・エディタで、次の演算子をキャンバスに追加します。

- レコードの抽出元のCUSTOMERS表。これはデータ・ソースです。このソースには、表22-1のデータが含まれています。

- Name and Address演算子。この演算子をキャンバスに追加すると、Name and Addressウィザードが起動します。ウィザードの手順に従ってください。

- スプリッタ演算子。この演算子の使用方法は、スプリッタ演算子を参照してください。

- 解析に成功したレコード、解析エラーが発生したレコードおよびアドレスは解析されたが郵便照合ソフトウェアに存在しなかったレコードをロードする3つのターゲット演算子。

2. CUSTOMERS表の属性をName and Address演算子のIngroupにマッピングします。Name and Address演算子のOutgroupの属性をスプリッタ演算子のIngroupにマッピングします。
スプリッタ演算子の使用は必須ではありませんが、この演算子は、適切なレコードと問題が発生したレコードを分割する重要な機能を果します。

3. スプリッタ演算子の各Outgroupの分割条件を定義し、Outgroupをターゲットにマッピングします。

図22-1に、この例で設計するマッピングを示します。データは、CUSTOMERSソース表からName and Address演算子にマッピングされ、次にスプリッタ演算子にマッピングされます。スプリッタ演算子によって、解析に成功したレコードと、解析時にエラーが発生したレコードが分割されます。OUTGRP1の出力は、CUSTOMERS_GOODターゲットにマッピングされます。OUTGRP2の分割条件は、たとえば、Is ParsedフラグがFalseのレコードはNOT_PARSEDターゲットにロードされるように設定されます。この場合、OUTGRP2の「分割条件」はINGRP1.ISPARSED='F'と設定されます。REMAINING_RECORDSグループのレコードは、解析に成功していますが、そのアドレスは郵便照合ソフトウェア内で検出されません。これらのレコードは、PARSED_NOT_FOUNDターゲットにロードされます。

図22-1 Name and Address演算子とともにスプリッタ演算子を使用したマッピング

「図22-1 Name and Address演算子とともにスプリッタ演算子を使用したマッピング」の説明

出力例

この例で設計したマッピングを実行すると、Name and Address演算子によって、ソース表にあるアドレス・データが標準化および修正され、完全なデータになります。この例では、ターゲット表に、表22-2に示すアドレス・データが含まれています。表22-1の入力レコードと比較してください。

表22-2 Name and Address演算子の出力サンプル

アドレス列

アドレス・コンポーネント

標準化された名前

JOSEPH

姓

SMITH

第1アドレス

8500 NORMANDALE LAKE BLVD

第2アドレス

STE 710

市区町村

BLOOMINGTON

都道府県

MN

郵便番号

55437-3813

緯度

44.849194

経度

-093.356352

解析済

True

適切な名前

True

適切なアドレス

True

検出済

True

名前警告

False

番地警告

False

市区町村警告

False

この例では、入力データが次のように変更されています。

- Joe SmithがFirst_Name_Standardized(標準化された名前)とLast_Name(姓)の2列に分割されています。

- JoeがJOSEPHに標準化され、SuiteがSTEに標準化されています。

- Normandale LakeがNORMANDALE LAKE BLVDに修正されています。

- 郵便番号の最初の部分である55437にZIP+4コードが追加され、55437-3813になっています。

- 緯度および経度が追加されています。

- レコードが様々な方法でテストされ、適切なレコードは、問題が発生したレコードとは別のターゲットにロードされます。

郵便レポートについて

割引が適用されるオートメーション郵便料金の郵便物の生成に使用されるアドレス一覧はすべて、郵便レポート認証ソフトウェアで照合される必要があります。認証は、サード・パーティ・ベンダーの名前とアドレスのソフトウェアおよびデータによって異なります。次のような認証があります。

- 米国郵政公社: Coding Accuracy Support System(CASS)

- カナダ郵便局: Software Evaluation and Recognition Program(SERP)

- オーストラリア郵便局: Address Matching Approval System(AMAS)

米国郵政公社のCASS認定

Coding Accuracy Support System(CASS)は、米国郵政公社(USPS)と郵便業界の協力によって開発されました。このシステムは、郵便利用者にとって、アドレス照合ソフトウェアの品質を測定する共通プラットフォームとなり、特に、すべての郵便に適用される5桁の郵便番号、ZIP+4番号、配布ポイント・コードおよび配達ルート・コードの正確さを検証します。オートメーション料金の郵便物の生成に使用されるアドレス一覧はすべて、CASS認定ソフトウェアで照合される必要があります。

USPS要件を満たすには、郵便利用者はCASSレポートを原本のフォームでUSPSに送信する必要があります。

カナダ郵便局のSERP認定

カナダ郵便局は、ソフトウェア・パッケージを評価するSoftware Evaluation and Recognition Program(SERP)というテスト・プログラムを開発しました。このプログラムでは、カナダ郵便局の要件に対して、メーリング・リストを検証する機能、または検証して修正する機能が評価されます。SERP要件を満たす郵便プログラムは、カナダ郵便局のWebサイトにリストされています。

カナダのインセンティブ・レターメール、広告付きアドメールおよび刊行物メールを利用する顧客は、アドレス照合プログラムの要件を満たしている必要があります。顧客は、使用しているデータベースとカナダ郵便局のアドレス・データを比較することで、Statement of Accuracyを取得できます。

オーストラリア郵便局のAMAS認定

Address Matching Approval System(AMAS)は、アドレス指定の品質を向上させるためにオーストラリア郵便局によって開発されました。このシステムは、アドレス照合ソフトウェアの次の機能をテストおよび測定する基準を提供します。

- 郵便アドレス・ファイル(PAF)に対するアドレスの照合および修正。

- 各アドレス・レコードへの一意の配布ポイントID(DPID)の追加。これは、メールのバーコード化への手順の1つです。

AMASによって、企業は次の機能を持つアドレス照合ソフトウェアを開発できます。

- バーコード作成用アドレスの準備。

- 高品質なアドレス指定。

- 郵便物の事前区分け申請による割引資格の適用。

事前区分けサービス料金は、利用者が、最新バージョンのPAFで有効な配布ポイントID(DPID)を持つAMAS承認ソフトウェアを使用していることが条件です。

郵便局で入手可能な事前区分け申請書を使用する場合は、郵便物が適切に準備されていることを宣言する必要があります。

入力ロールの説明

名前またはアドレスのクレンジングに対して選択する各属性について、ソース属性に格納されるデータのタイプを示す入力ロールを指定する必要があります。Oracle Warehouse Builderでは、データに対して最も適した入力ロールを選択できる定義済入力ロールのセットが用意されています。

たとえば、Employees表には、last_name列とcity列が含まれます。これらの列には、それぞれ「姓」と「市区町村」を選択できます。

表22-3に、Name and Address演算子の入力ロールを示します。

表22-3 Name and Address演算子の入力ロール

入力ロール

説明

パススルー

処理を必要としない属性。

名

名、ニックネームまたは名の略称。

ミドル・ネーム

ミドル・ネームまたはイニシャル。ミドル・ネームが1つのみの場合または複数のミドル・ネームがある場合は最初のミドル・ネーム(Ethel May Roberta Louise Mertzの場合の「May」など)に使用します。

ミドル・ネーム2

第2のミドル・ネーム(Ethel May Roberta Louise Mertzの場合の「Roberta」など)。

ミドル・ネーム3

第3のミドル・ネーム(Ethel May Roberta Louise Mertzの場合の「Louise」など)。

姓

姓。

最初の部分名

次のように人名の最初の部分。

- プリネーム

- 名

- ミドル・ネーム(複数可)

これらのコンポーネントが1つのソース列に含まれている場合に使用します。

最後の部分名

次のように人名の最後の部分。

- 姓

- ポストネーム

これらのコンポーネントがすべて1つのソース列に含まれている場合に使用します。

プリネーム

Ms.、Mr.またはDr.など、名前の前に付く敬称情報。

ポストネーム

Jr.やPh.D.など、名前の世代または他の敬称情報。

人名

次のような完全人名。

- 最初の部分名(「プリネーム」、「名」および「ミドル・ネーム」で構成)

- 最後の部分名(「姓」および「ポストネーム」で構成)

これらのコンポーネントがすべて1つのソース列に含まれている場合に使用します。

人名2

入力に複数の個人連絡先が含まれている場合に第2の人名を指定します。

人名3

入力に複数の個人連絡先が含まれている場合に第3の人名を指定します。

会社名

会社名または組織名。

第1アドレス

次のようなボックス、ルートまたは番地。

- 番地名

- 建物番号

- SWやNなど、市区町村マップのグリッド方向。

- Avenue、StreetまたはRoadなどの番地タイプ。

これには、区画名や区画番号は含まれません。

第2アドレス

次を含む番地の第2の部分。

- 区画名

- 区画番号

たとえば、第2アドレスがSuite 2100の場合、区画名はSTE(Suiteを標準化したもの)で区画番号は2100です。

アドレス

次を含む完全アドレス行。

- 第1アドレス

- 第2アドレス

これらのコンポーネントで1列が共有される場合に使用します。

アドレス2

汎用アドレス行。

地区

南アメリカとラテン・アメリカのアドレスに一般的な地区またはバリオ。

地方名

日本の市または島。

ローカリティ2

日本の区。

ローカリティ3

日本の町または村。

ローカリティ4

日本の字、部、地割または線。

市区町村

市区町村名。

都道府県

都道府県名。

郵便番号

アメリカのZIPコードやカナダの郵便番号などの郵便番号。

国名

国の正式名称。

国コード

ISO 3166-1993(E)の2文字または3文字の国コード。たとえば、アメリカはUSまたはUSA、カナダはCAまたはCANです。

最終行

次を含む最後のアドレス行。

- 市区町村

- 都道府県

- 郵便番号

これらのコンポーネントがすべて1つのソース列に含まれている場合に使用します。

最終行2

日本語版アダプタの場合は、アドレスの後に示される追加の行情報を指定します。

行1 -> 10

任意のタイプの名前、ビジネス、人名およびアドレスの自由形式テキストに使用します。これらのロールは、データの内容に関する情報をパーサーに提供しません。可能な場合は、用意されている個別の入力ロールを使用してください。

出力コンポーネントの説明

出力コンポーネントを使用して、Name and Address演算子によってクレンジングされたデータを格納する属性を定義します。「パススルー」の入力ロールを持つ属性は、自動的に出力コンポーネントとして表示されます。クレンジングされたデータを格納するために、追加の出力コンポーネントを定義できます。

出力コンポーネントのカテゴリ

出力コンポーネントは、次のカテゴリにグループ化されています。

- パススルー

- 名前

- アドレス

- 付加ベンダー

- エラー・ステータス

- 国固有

パススルー

「パススルー」出力コンポーネントは、処理を必要としない属性に使用されます。「パススルー」入力ロールを作成すると、対応する「パススルー」出力コンポーネントが自動的に作成されます。「パススルー」出力コンポーネントは編集できませんが、対応する入力ロールは編集できます。

名前

表22-4では、「名前」出力コンポーネントについて説明します。この表に示すように、1つのレコードを処理するために多数のコンポーネントを複数回使用できます。たとえば、会社名が2回出現するレコードの場合、2つの出力属性を追加して両方を抽出できます。一方を「第1」インスタンス、他方を「第2」インスタンスとして割り当てます。

表22-4 「名前」出力コンポーネント

サブフォルダ

出力コンポーネント

説明

なし

プリネーム

名前の前に表示されるタイトルまたは敬称(Ms.またはDr.など)。複数回使用できます。

なし

標準化された名前

名の標準バージョン(Tedの場合はTheodore、Jimの場合はJamesなど)。複数回使用できます。

なし

標準化されたミドル・ネーム

ミドル・ネームの標準バージョン(Tedの場合はTheodore、Jimの場合はJamesなど)。ミドル・ネームが1つのみの場合に使用するか、複数のミドル・ネームがある場合は最初の1つに使用します。複数回使用できます。

なし

標準化されたミドル・ネーム2

第2のミドル・ネームの標準バージョン(Tedの場合はTheodore、Jimの場合はJamesなど)。複数回使用できます。

なし

標準化されたミドル・ネーム3

第3のミドル・ネームの標準バージョン(Tedの場合はTheodore、Jimの場合はJamesなど)。複数回使用できます。

なし

ポストネーム

世代を示す名前の接尾辞(Sr.、Jr.、IIIなど)。複数回使用できます。

なし

その他のポストネーム

資格、学位、所属を示す名前の接尾辞(Ph.D.、M.D.、R.N.など)。複数回使用できます。

なし

タイトル

人名のタイトル(マネージャなど)。複数回使用できます。

なし

名前指示部

人名指定。ATTN(宛)またはC/O(気付)など。複数回使用できます。

なし

関係

他の人に関連する情報(受託者など)。複数回使用できます。

なし

SSN

社会保障番号。

なし

電子メール・アドレス

電子メール・アドレス。

なし

電話番号

電話番号。

なし

名前/会社他

会社名または人名に関連付けられている付加情報。

なし

人名

名、ミドル・ネームおよび姓。複数回使用できます。

人名

名

入力名に検出された名。複数回使用できます。

人名

ミドル・ネーム

ミドル・ネームまたはイニシャル。ミドル・ネームが1つの場合に使用するかまたは複数のミドル・ネームがある場合は最初の1つに使用します(Ethel May Roberta Louise Mertzの場合はMayなど)。複数回使用できます。

人名

ミドル・ネーム2

第2のミドル・ネーム(Ethel May Roberta Louise Mertzの場合の「Roberta」など)。複数回使用できます。

人名

ミドル・ネーム3

第3のミドル・ネーム(Ethel May Roberta Louise Mertzの場合の「Louise」など)。複数回使用できます。

人名

姓

姓。複数回使用できます。

導出済

性別

性別。

- M = 男性

- F = 女性

- N= 中性(男性または女性)

- 空白 = 不明

複数回使用できます。

導出済

人数

レコードで参照される人数。たとえば、人名John and Jane Doeを含むレコードの場合、「人数」は2となります。

ビジネス

会社名

会社名または組織名(部課など)。複数回使用できます。

ビジネス

会社数

レコードで参照される会社数。複数回使用できます。

ビジネス

会社ロケーション

社内のロケーション(買掛管理など)。

アドレス

表22-5では、「アドレス」出力コンポーネントについて説明します。二重アドレスを含むレコードの場合は、表に示すように、標準アドレスとして使用する(「アドレス」コンポーネントに割り当てる)行と、多数の出力コンポーネントに二重アドレスとして使用する行を指定できます。

表22-5 「アドレス」出力コンポーネント

サブフォルダ

出力コンポーネント

説明

なし

アドレス

次を含む完全アドレス行。

- 第1アドレス

- 第2アドレス

標準アドレスまたは二重アドレスとして使用できます。

なし

第1アドレス

次のようなボックス、ルートまたは番地。

- 番地名

- 建物番号

- SWやNなど、市区町村マップのグリッド方向。

- Avenue、StreetまたはRoadなどの番地タイプ。

出力コンポーネント「区画名」や「区画番号」は含めません。標準アドレスまたは二重アドレスとして使用できます。

第1アドレス

番地番号

住宅やビルの番号など、アドレスを識別する番号。プライマリ範囲と呼ぶこともあります。たとえば、200 Oracle Parkwayの場合、「番地番号」の値は200です。標準アドレスまたは二重アドレスとして使用できます。

第1アドレス

前方向

番地名の前に使用される番地の方向インジケータ。たとえば、100 N University Driveの場合、「前方向」の値はNです。標準アドレスまたは二重アドレスとして使用できます。

第1アドレス

番地名

番地名。標準アドレスまたは二重アドレスとして使用できます。

第1アドレス

プライマリ名2

第2の番地名。通常は交差点にあるアドレスに使用されます。

第1アドレス

番地タイプ

街路識別子(ST、AVE、RD、DR、HWYなど)。標準アドレスまたは二重アドレスとして使用できます。

第1アドレス

後方向

番地名の後に使用される番地の方向インジケータ。たとえば、100 15th Ave.S.の場合、「後方向」の値はSです。標準アドレスまたは二重アドレスとして使用できます。

なし

第2アドレス

次を含む番地の第2の部分。

- 区画名

- 区画番号

たとえば、第2アドレスSuite 2100の場合、「区画名」はSTE(Suiteの標準化バージョン)で、「区画番号」は2100です。標準アドレスまたは二重アドレスとして使用できます。

第2アドレス

区画名

第2アドレスのタイプ(APTまたはSTEなど)。たとえば、第2アドレスSuite 2100の場合、「区画名」はSTE(Suiteの標準化バージョン)です。標準アドレスまたは二重アドレスとして使用できます。

第2アドレス

区画番号

第2アドレスの識別番号(アパート番号または部屋番号など)。たとえば、第2アドレスSuite 2100の場合、「区画番号」は2100です。標準アドレスまたは二重アドレスとして使用できます。

第2アドレス

非郵便第2アドレス

正式な郵便形式でない第2アドレス。

第2アドレス

非郵便区画名

正式な郵便形式でない区画名。

第2アドレス

非郵便区画番号

正式な郵便形式でない区画番号。

アドレス

最終行

次を含む最後のアドレス行。

- 市区町村

- 都道府県

- アドレスが完全に割り当てられている場合の書式化済郵便番号。

最終行

地区

南アメリカとラテン・アメリカのアドレスに一般的な地区またはバリオ。

最終行

市区町村

市区町村名。アメリカの市名は、米国郵政公社の参照名に変換できます。

最終行

省略市区町村

市区町村名の省略形。アメリカの場合は13文字です。

最終行

省略市区町村2

市区町村名の代替省略形。

最終行

代替市区町村

複数の名前で参照可能な市区町村を表す代替名。アメリカでは、市を実際の名前または地域名で参照できます。たとえば、Brighton Massachusettsの代替市区町村名としてBostonを使用できます。

最終行

地方コード

International Mailsort Codeの末尾3桁。各国の地域または地方を表します。「地方コード」は、000から999までの数値です。

最終行

地方名

イギリスでは、次のアドレスに地方名KNAPHILLが割り当てられています。

Chobham Rd
Knaphill
Woking GU21 2TZ

最終行

ローカリティ2

日本の区。

最終行

ローカリティ3

日本の町または村。

最終行

ローカリティ4

日本の字、部、地割または線。

最終行

区名

イギリス、アメリカまたは他の国の郡の名前。

最終行

都道府県

都道府県名。

最終行

郵便番号

完全郵便番号。空白や他の文字(非英数字)は削除されます。

最終行

書式化された郵便番号

郵便番号の書式化済バージョン。空白や他の文字(ダッシュなどの非英数字)を含みます。

最終行

配布ポイント

アメリカとオーストラリアで使用される指定。

- アメリカの場合、これは2桁の郵便配布ポイントで、9桁の完全郵便番号およびチェック数値と組み合されて配布ポイントのバーコードを形成します。

- オーストラリアの場合は、9桁の配布ポイントです。

最終行

国コード

国際標準化機構により定義されたISO 3166-1993(E)の2文字の国コード(アメリカはUS、カナダはCAなど)。

最終行

国コード3

国際標準化機構により定義されたISO 3166-1993(E)の3文字の国コード(アメリカはUSA、フランスはFRA、ウクライナはUKRなど)。

最終行

国名

完全な国名。

アドレス

アドレス2

アドレス行2。通常は、番地とビルまたは階の両方を含む香港のアドレスに使用します。

アドレス

最終行2

日本でアドレスの後に表示される追加情報。

その他のアドレス行

ボックス名

私書箱のアドレス名。たとえば、PO Box 95の場合、「ボックス名」はPO BOXです。標準アドレスまたは二重アドレスとして使用できます。

その他のアドレス行

ボックス番号

私書箱のアドレス番号。たとえば、PO Box 95の場合、「ボックス番号」は95です。標準アドレスまたは二重アドレスとして使用できます。

その他のアドレス行

ルート名

地方のルート・アドレスのルート名。アドレスRoute 5 Box 10の場合、「ルート名」はRTE(Routeの標準化バージョン)です。標準アドレスまたは二重アドレスとして使用できます。

その他のアドレス行

ルート番号

地方のルート・アドレスのルート番号。アドレスRoute 5 Box 10の場合、「ルート番号」は5です。標準アドレスまたは二重アドレスとして使用できます。

その他のアドレス行

ビル名

ビル名(Cannon Bridge Houseなど)。イギリスでは、ビル名が一般的です。

その他のアドレス行

複合

ビル、キャンパスまたはその他の複合ビル。次に例を示します。

USS John F. Kennedy
Shadow Green Apartments
Cedarvale Gardens
Concordia College

「出力コンポーネント」ダイアログ・ボックスの「インスタンス」フィールドを使用すると、アドレスに複数の複合コンポーネントが含まれている場合に、どの複合コンポーネントを戻すかを指定できます。

その他のアドレス行

他のアドレス

その他のアドレス情報。

複数の「その他」フィールドを含むレコードの場合は、出力コンポーネント・ページで使用するインスタンスを指定することで各フィールドを抽出できます。

地理

緯度

北緯。北半球の場合はプラス、南半球の場合はマイナスです(北アメリカの場合は常にプラスです)。

地理

経度

東経。東半球の場合はプラス、西半球の場合はマイナスです(北アメリカの場合は常にマイナスです)。

地理

地域一致精度

緯度と経度で識別されたロケーションがアドレスとどの程度一致しているかを示します。

付加ベンダー

ベンダー固有の用途に20個のコンポーネントを使用できます。

エラー・ステータス

表22-6では、「エラー・ステータス」出力コンポーネントについて説明します。「エラー・ステータス」コンポーネントの使用上の注意事項は、「Name and Addressデータでのエラー処理」を参照してください。

表22-6 「エラー・ステータス」出力コンポーネント

サブフォルダ

出力コンポーネント

説明

名前とアドレス

適切なグループ

名前グループ、アドレス・グループまたは名前およびアドレス・グループが正常に処理されたかどうかを示します。

- T =
名前グループの場合、名前が正常に解析されました。

アドレス・グループの場合、郵便照合データベースでアドレスが検出されたか(使用可能な場合)、郵便データベースがインストールされていない場合は正常に解析されました。

名前およびアドレス・グループの場合、名前とアドレスの両方が正常に処理されました。

- F = グループは正常に解析されませんでした。

このフラグを「解析済」フラグのような他のフラグと併用し、後にスプリッタ演算子を使用すると、解析に失敗したレコードを固有のターゲット内で分離して個別に扱うことができます。

名前とアドレス

解析済

名前またはアドレスが解析済かどうかを示します。

- T = 名前またはアドレスは正常に解析されましたが、なんらかの警告条件を示すフラグが設定されている可能性があります。

- F = 名前またはアドレスを解析できません。

「名前警告」または「市区町村警告」などの警告フラグのステータスを確認してください。

名前とアドレス

解析ステータス

郵便照合ソフトウェアの解析ステータス・コード。

名前とアドレス

解析ステータスの説明

郵便照合ソフトウェアの解析ステータスのテキスト説明。

名前のみ

適切な名前

名前が正常に解析されたかどうかを示します。

- T = 名前は正常に解析されましたが、なんらかの警告条件を示すフラグが設定されている可能性があります。

- F = 名前を解析できません。

名前のみ

名前警告

パーサーにより名前に例外的なデータまたはエラーの可能性のあるデータが検出されたかどうかを示します。

- T = パーサーが名前を解析できなかったか、例外的なデータが検出されました。解析ステータス・コンポーネントで警告の原因を確認してください。

- F = 名前の解析に問題はありません。

アドレスのみ

適切なアドレス

アドレスが正常に処理されたかどうかを示します。

- T = 正常に処理されました。アドレスが郵便照合データベース内で検出されました。または、アドレスが示す国用の郵便照合データベースがインストールされていない場合は、アドレスが正常に解析されました。

- F = 正常に処理されませんでした。アドレスが示す国用の郵便照合データベースがインストールされている場合は、データベース内でアドレスが検出されませんでした。国に使用可能な郵便照合データベースがない場合は、アドレスを解析できません。

このコンポーネントは、郵便照合対象の国と郵便照合対象外の国のレコードが混在している場合に使用します。

アドレスのみ

検出済

アドレスが示す国用の郵便照合データベース内でアドレスがリストされているかどうかを示します。

- T = アドレスが郵便照合データベース内で検出されました。

- F = アドレスは郵便照合データベース内で検出されませんでした。このステータスは、アドレスが有効でないことまたはその国に郵便照合が使用可能でないことを示している可能性があります。

このフラグがTrueとなるのは、他の検出フラグがすべてTrueの場合のみです。郵便照合が使用可能な場合、このフラグはレコード品質の最高のインジケータです。

アドレスのみ: 検出済

市区町村が検出済

T = 郵便照合ソフトウェアにより市区町村が検出されました。それ以外の場合、値はFです。

アドレスのみ: 検出済

番地名が検出済

T = 郵便照合ソフトウェアにより番地名が検出されました。それ以外の場合、値はFです。

アドレスのみ: 検出済

番地番号が検出済

T = 郵便照合ソフトウェアにより、指定した番地番号の有効範囲内で番地番号が検出されました。それ以外の場合、値はFです。

アドレスのみ: 検出済

番地コンポーネントが検出済

T = 郵便照合ソフトウェアにより、「前方向」または「後方向」などの番地コンポーネントが検出されました。それ以外の場合、値はFです。

アドレスのみ: 検出済

曖昧でない一致が検出済

郵便照合ソフトウェアにより郵便データベース内で一致するアドレスが検出されたかどうかを示します。

- T = 郵便照合ソフトウェアにより、入力レコードと郵便データベース内の単一エントリとの一致が検出されました。

- F = アドレスが曖昧です。郵便照合ソフトウェアにより、アドレスが複数の郵便データベース・エントリと一致することが検出されましたが、選択できませんでした。たとえば、入力アドレスは100 4th Avenueですが、郵便データベースには100 4th Ave Nと100 4th Ave Sが含まれており、入力では方向が指定されていないため、一致に失敗します。

アドレスのみ

市区町村警告

T = パーサーにより、市区町村に例外的なデータまたはエラーの可能性のあるデータが検出されました。それ以外の場合、値はFです。

アドレスのみ

番地警告

T = パーサーにより、番地アドレスに例外的なデータまたはエラーの可能性のあるデータが検出されました。それ以外の場合、値はFです。

アドレスのみ

検証可能なアドレス

T = アドレスが該当する国には郵便照合を使用可能です。それ以外の場合、値はFです。

Fは、アドレスに該当する国用の郵便照合データベースがインストール済かどうかを示すものではありません。単に特定のアドレスに照合が使用可能でないことを示します。

アドレスのみ

アドレスが修正済

照合中になんらかの方法でアドレスが修正されたかどうかを示します。この場合、標準化は修正とはみなされません。

- T = アドレスのなんらかのコンポーネントが、標準化以外の方法で変更されました。他の「修正済」フラグの1つもTrueである必要があります。

- F = アドレスのコンポーネントは変更されていませんが、標準化された可能性はあります。

アドレスのみ: アドレスが修正済

郵便番号が修正済

T = 照合中に郵便番号が修正されました。枝番が追加された可能性があります。それ以外の場合、値はFです。

アドレスのみ: アドレスが修正済

市区町村が修正済

T = 照合中に市区町村名が修正されました。それ以外の場合、値はFです。

郵便番号入力を使用して、郵政公社で参照している市区町村名が判別されます。

アドレスのみ: アドレスが修正済

番地が修正済

T = 照合中に番地名が修正されました。それ以外の場合、値はFです。

一部の正しい番地名が、郵政公社が参照している代替名に変更された可能性があります。

アドレスのみ: アドレスが修正済

番地コンポーネントが修正済

T = 照合中に、「前方向」または「後方向」など、1つ以上の番地コンポーネントが修正されました。

アドレスのみ

アドレス・タイプ

アドレスのタイプ。次に一般的な例を示します。実際の値は、郵便照合ソフトウェアのベンダーによって異なります。

- B = ボックス

- F = 会社

- G = 普通配送

- H = 高層アパートまたはオフィス・ビル

- HD = 高層のデフォルト。この場合、ビル全体に単一のZip+4郵便番号が適用されます。Name and Address演算子では、階または部屋のアドレスが提供されていれば、郵便番号割当てをさらに詳細なレベルで検出できます。その場合、レコードは該当する階または部屋を表す限定的なZip+4コードを使用してHタイプとして処理されます。

- M = 軍

- P = 私書箱

- R = 地方コード

- S = 番地

アドレスのみ

解析国

レコードの最終解析に使用した国パーサー。

国固有

表22-7に、特定の国に固有の出力コンポーネントを示します。

表22-7 国に固有の出力コンポーネント

サブフォルダ

出力コンポーネント

説明

アメリカ

ZIP5

5桁のアメリカ郵便番号。

アメリカ

ZIP4

ロケーションをさらに詳細に指定するために5桁のアメリカ郵便番号に追加される4桁の接尾辞。

アメリカ

都市名

プエルトリコで使用される地方単位の名前。

アメリカ

LACSフラグ

T = アドレスにはLACS変換が必要であり、LACSベンダーに送信する必要があります。それ以外の場合、値はFです。

Locatable Address Conversion System(LACS)は、911緊急システムが実装された時点で新規のアドレスを提供します。通常、911アドレス変換では、地方スタイルのアドレスが市区町村スタイルの番地アドレスに変更されますが、既存の市区町村スタイルのアドレスの名前や番号が変更されることがあります。

アメリカ

CART

4文字のUSPS運送業者ルート。

アメリカ

DPBCチェック数値

配布ポイントのバーコードを形成するチェック数値。

アメリカ

自動ゾーン・インジケータ

T = この郵便番号による郵便は、バーコード・ソート装置でソートされます。それ以外の場合、値はFです。

アメリカ

都市インジケータ

T = アドレスは地方にあります。それ以外の場合、値はFです。

アメリカ

LOT(Line of Travel)

アメリカ郵政公社(USPS)の移動ライン。

アメリカ

LOT順序

アメリカ郵政公社(USPS)の移動ラインの順序。

アメリカ: 調査/地理

メトロポリタン統計地域

メトロポリタン統計地域(MSA)番号。たとえば、0000はアドレスがMSA内にないことを示します。通常は地方を示します。

アメリカ: 調査/地理

マイナー調査区域

マイナー調査区域

アメリカ: 調査/地理

CBSAコード

大都市圏と小都市圏を識別する5桁のコア・ベース統計地域(CBSA)コード。

アメリカ: 調査/地理

CBSA記述子

"CBSAが大都市圏(人口50,000人以上)であるか小都市圏(人口10,000人から49,999人まで)であるかを示します。"

アメリカ: 調査/地理

FIPSコード

連邦情報処理規格(FIPS)により郡に割り当てられた完全(州および郡)コード。FIPSの区コードは州内で一意であるため、完全FIPSコードには2桁の州コードとそれに続く3桁の区コードが含まれています。

アメリカ: 調査/地理

FIPS区

連邦情報処理規格(FIPS)により定義された3桁の区コード。

アメリカ: 調査/地理

FIPS地区コード

連邦情報処理規格(FIPS)により定義された5桁の地区コード。

アメリカ: 地理

調査ID

アメリカの調査の地域およびブロック・グループ番号。最初の6桁は地域番号で、最終桁は地域内のブロック・グループ番号です。これらのコードは、人口統計コーディング・データベースとの照合に使用されます。

カナダ

インストール・タイプ

カナダ郵便施設のタイプ。

- STN = 局

- RPO = 郵便取扱小売店

"たとえば、アドレスPO Box 7010, Scarborough ON M1S 3C6の場合、インストール・タイプはSTNです。"

カナダ

インストレーション名

カナダ郵便設備の名前。たとえば、アドレスPO Box 7010, Scarborough ON M1S 3C6の場合、「インストレーション名」はAGINCOURTです。

香港

デリバリー・オフィス・コード

香港で使用される郵便コード。たとえば、次のアドレスにはデリバリー・オフィス・コードWCHが割り当てられています。

Oracle
39/F The Lee Gardens
33 Hysan Ave
Causeway Bay

香港

デリバリー・ビート・コード

香港で使用される郵便コード。たとえば、次のアドレスにはデリバリー・ビート・コードS06が割り当てられています。

Oracle
39/F The Lee Gardens
33 Hysan Ave
Causeway Bay

Name and Addressデータでのエラー処理

他の種類の解析と同様に、Name and Address解析は、キーワードとそのキーワードを含むパターンの識別に依存します。自由形式の名前とアドレスのデータは、キーワード・セットが大きく100%完全であることがないため、解析が困難な場合があります。キーワード・セットは何百万ものレコードを分析することで構築されますが、新しいデータ・セットに、未定義のキーワードが含まれることもあります。

自由形式の名前とアドレスのレコードの大半には、数字、文字および英数字文字列の共通パターンが含まれるため、多くの場合、解析は英数字のパターンのみに基づいて実行できます。ただし、英数字のパターンが曖昧であったり、特定のパターンがみつからない場合があります。Name and Addressの解析エラーによって、データ・マッピングの制御に使用できる解析ステータス・コードが設定されます。

品質の基準はアプリケーションによって異なるため、特定のレコードの品質を判断するのに役立つフラグが数多く用意されています。郵便照合がサポートされる国の場合は、Is Good Groupフラグを使用してください。このフラグによって、アドレスが郵便データベース内の有効なエントリであることが確認されます。また、米国のCoding Accuracy Support System(CASS)認証およびカナダのSoftware Evaluation and Recognition Program(SERP)認証の郵便でも、Is Good Groupフラグを使用してください。

郵便レポートを指定しないかぎり、アドレスは郵便データベースで見つからなくても使用できます。たとえば、交差点のアドレスやビル名が郵便データベースで見つからない場合がありますが、配達には問題ありません。Is Good Groupフラグが失敗を示す場合は、別のエラー・フラグによって解析ステータスを判断できます。

Is Parsedフラグは、解析プロセスの成功または失敗を示します。Is Parsedが解析の成功を示す場合でも、特異なデータを示す解析警告フラグをチェックする必要があります。このレコードは手動でチェックできます。

Is Parsedが解析の失敗を示す場合は、元のデータを保存して、データの損失を防ぐ必要があります。

スプリッタ演算子を使用して、解析に成功したレコードと解析に失敗したレコードを別々のターゲットにマッピングします。

Name and Address演算子を使用したName and Addressデータのクレンジングおよび修正

Name and Address演算子は、PL/SQL入力を1つ受け入れてPL/SQL出力を1つ生成します。

タイムアウト・エラーになる場合は、Name and Addressサーバーのソケット・タイムアウト設定の値を大きくする必要があります。タイムアウト設定は、サーバーが接続をドロップする前にマッピングからの解析リクエストを待機する秒数です。デフォルト設定は600秒(10分)です。非アクティブが原因でサーバーが接続をドロップすると、以降の解析リクエストは失敗してNAS-00021エラーが戻されます。

ほとんどのマッピングの場合、2つの解析リクエストの間に長時間が経過することはまれです。ただし、行ベース・モードでレコードをフィルタするのは非効率的なため、フィルタ演算子を使用して行ベース・モードで動作するマップの場合は、2つのレコード解析リクエスト間に長時間経過することがあります。このタイプのマッピングの場合は、接続がドロップされないようにソケットのタイムアウト値の増加が必要になります。

ソケットのタイムアウト設定値を大きくするには、「Name and Addressサーバーの管理」を参照してください。

Name and Address演算子を使用したマッピングの作成

Name and Address演算子は、入力グループ1つと出力グループ1つを使用します。

Name and Address演算子によってマッピングを作成する手順は次のとおりです。

1. ソース・データを表す演算子とクレンジングしたデータを表す演算子を、マッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
たとえば、ソース・データがある表に格納され、クレンジングしたデータが別の表に格納される場合、その表にバインドされる2つの表演算子をキャンバスにドラッグ・アンド・ドロップします。

2. Name and Address演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
Name and Addressウィザードが表示されます。

3. 名前ページで、Name and Address演算子に対して名前(およびオプションの説明)を指定します。
あるいは「名前」フィールドに表示されたデフォルト名をそのまま採用できます。

4. 定義ページで、ソース・データのタイプを定義する値を選択します。
「ソース・データの詳細の指定および解析タイプの設定」を参照してください。

5. グループ・ページで、入力グループや出力グループの名前を任意に変更します。
Name and Address演算子は、1つの入力グループINGRP1と1つの出力グループOUTGRP1を使用します。グループは編集、追加または削除できません。入力データに複数のグループが必要な場合は、グループごとに別個のName and Address演算子を作成します。

6. 接続の入力ページで、マッピング内の任意の演算子から、Name and Address演算子にコピーおよびマップする属性を選択します。
演算子の接続の入力ページで指定する手順は次のとおりです。

1. 「使用可能な属性」パネルで、グループ全体または個別の属性を選択します。
特定の属性またはグループを名前で検索するには、「検索」にテキストを入力して「実行」をクリックします。次の一致を検索するには、「実行」を再度クリックします。

複数のグループまたは属性を選択するには、[Shift]キーを押しながら選択します。異なるグループの属性を選択するには、最初にジョイナ演算子または集合演算子を使用してグループを結合する必要があります。

注意:
ソース・データに演算子を作成していない場合、「使用可能な属性」セクションは空です。

2. 2つのパネルの間にある右矢印ボタンを使用して、選択内容を「マップ済属性」パネルに移動します。
「マップ済属性」セクションには、Name and Address演算子によって処理される属性がリストされます。

7. 入力属性ページで、そこで選択した各属性に入力ロールを割り当てます。
入力ロールには、データの行にある名前およびアドレスの情報のタイプを指定します。できるかぎり、個別でないロール(「最終行」)でなく個別ロール(「市区町村」、「都道府県」および「郵便番号」)を選択してください。個別ロールの方が解析が強化されます。

関連項目:
入力ロールの説明

入力ロールが「パススルー」に設定された属性の場合、データ型詳細を指定する際に、「データ型」、「長さ」、「精度」、「スケール」および「秒精度」フィールドを使用します。

8. 出力属性ページで、Name and Address演算子での解析済データの処理方法を決定する出力属性を定義します。出力属性プロパティによって、パーサー出力から抽出されたデータが特徴付けられます。
「パススルー」入力ロールを割り当てられている属性は、すべて出力属性として自動的にリストされます。出力属性は追加できます。

注意:
「パススルー」ロールを持つ出力コンポーネントの属性は変更できません。

出力属性を追加する手順は次のとおりです。

1. 「出力」タブの空の行をクリックして属性名を入力します。
出力属性の名前を変更するには、名前を選択して新しい名前を入力します。

2. 「出力コンポーネント」フィールドの省略記号ボタンをクリックして、属性の出力コンポーネントを選択します。

関連項目:
出力コンポーネントの詳細は、「出力コンポーネントの説明」を参照してください。

「解析済」、「適切な名前」、「適切なアドレス」などのエラー処理フラグも追加してください。これらのフラグをスプリッタ演算子に使用すると、適切なレコードをエラーのあったレコードから分離して、別のターゲットにロードできます。

3. 「データ型」、「長さ」、「精度」、「スケール」および「秒精度」フィールドを使用して、出力属性のデータ型詳細を指定します。

9. アドレス修正および郵便番号照合をサポートする国の場合、郵便レポート・ページを使用して郵便レポートの詳細を指定します。
「郵便レポートの詳細の指定」を参照してください。

ソース・データの詳細の指定および解析タイプの設定

定義ページまたは「定義」タブで、ソース・データに関する情報を入力し、ソース・データに対して実行される解析のタイプを指定します。「解析タイプ」、「国」および「二重アドレス割当」の値を設定します。

解析タイプ

次の解析タイプから1つを選択してください。

- 名前のみ: 入力データに名前データのみが含まれている場合に、このオプションを選択します。個人名とビジネス名の両方が対象となります。より一般的な「Name and Address」オプションのかわりにこのオプションを選択すると、アダプタによってはパフォーマンスと精度が向上することがあります。

- アドレスのみ: 入力データがアドレス・データのみで構成され、名前データが含まれていない場合に、このオプションを選択します。より一般的な「Name and Address」オプションのかわりにこのオプションを選択すると、アダプタによってはパフォーマンスと精度が向上することがあります。

- Name and Address: 入力データに名前データとアドレス・データの両方が含まれている場合に、このオプションを選択します。

注意:
解析タイプを指定できるのは、最初にマッピングにName and Address演算子を追加するときのみです。エディタでは解析タイプを変更できません。

国

データの中で最も頻出する国を選択します。主国は、レコードの最初の解析に使用する適切なパーサーまたは解析ルールの手がかりとして、名前とアドレスのクレンジング・ソフトウェアの一部のプロバイダによって使用されています。それ以外の名前とアドレスのサービス・プロバイダの場合は、インストールの外部構成によってこの動作が制御されています。

二重アドレス割当

二重アドレスには、同じアドレス・レコードの私書箱と町村の両方が含まれます。二重アドレスを持つレコードの場合、標準アドレスになるアドレスと、二重アドレスになるアドレスを選択します。二重アドレスの例は、次のとおりです。

PO Box 2589
4439 Mormon Coulee Rd
La Crosse WI 54601-8231

「二重アドレス割当」での選択によって、郵便番号の修正時に割り当てられる郵便コードが決まります。これは、町村の郵便番号と私書箱の郵便番号が異なる場合があるためです。

- 「番地」割当: 町村が標準アドレスで、私書箱が二重アドレスです。これは、Addressコンポーネントに町村が割り当てられることを意味します。前述の例では、Addressは4439 MORMON COULEE RDです。この選択により、郵便番号は54601-8220に修正されます。

- 「私書箱」割当: 私書箱が標準アドレスで、町村が二重アドレスです。これは、Addressコンポーネントに私書箱が割り当てられることを意味します。前述の例では、AddressはPO BOX 2589です。この選択により、郵便番号は54602-2589に修正されます。

- 最終行に最も近い: 最終行に最も近いアドレスが標準アドレスで、もう一方のアドレスが二重アドレスです。これは、最終行に最も近いアドレス行がAddressコンポーネントに割り当てられることを意味します。前述の例では、Addressは4439 MORMON COULEE RDです。この選択により、郵便番号は54601-8220に修正されます。

このオプションは、町村または私書箱を1つ持つレコードには影響しません。

注意:
名前とアドレスのクレンジング・ソフトウェア・プロバイダによっては、「二重アドレス割当」をサポートしていない場合があります。

郵便レポートの詳細の指定

国の認証は、Name and Addressクレンジング・ソフトウェア・ベンダーによって異なります。最も一般的な国の認証は、アメリカ、カナダおよびオーストラリアです。このプロセスにより、郵便利用業者に、アドレス照合ソフトウェアの品質を測定する共通プラットフォームが提供され、あらゆる郵便に適用される郵便番号(アメリカでは、5桁の郵便番号とZIP+4コード)、デリバリ・ポイント・コードおよび配達ルート・コードの正確さについて検証されます。Name and Addressクレンジング・ソフトウェア・ベンダーによっては、これらのパラメータが無視され、郵便レポートを生成する外部の設定が必要になる場合もあります。詳細は、「郵便レポートについて」を参照してください。

郵便レポートを指定するには、「郵便レポート」ファイルで「はい」を選択し、次のフィールドに値を入力します。

プロセッサ名: このフィールドの用途は、名前とアドレスのクレンジング・ソフトウェアのベンダーに応じて異なります。通常、この値はUnited States Coding Accuracy Support System(CASS)レポートに記載されます。

リスト名:アメリカ・レポートおよびイギリス・レポートの「リスト名」セクションに表示されるオプションの参照フィールドですが、他のレポートには含まれません。リスト名により、「July 2005 Promotional Campaign」のように、複数の郵便レポートを追跡するための参照が指定されます。

プロセッサ・アドレス行:これらのアドレス行が各種の郵便レポートに表示される場合があります。名前とアドレスのクレンジング・ソフトウェア・ベンダーによってこれらのフィールドの使用方法が異なります。通常、これらの行には、会社の詳細アドレスを含めます。

Name and Addressサーバーの管理

外部のName and Addressサーバーは、Oracle Databaseとサード・パーティのName and Address処理ライブラリの間にインタフェースを提供します。この項では、Name and Addressサーバーの構成、起動および停止の詳細について説明します。

Name and Addressサーバーの構成

Name and Address演算子は、ランタイム・スキーマにインストールされたUTL_NAME_ADDRパッケージをコールするPL/SQLコードを生成します。UTL_NAME_ADDRパッケージを参照するために、ターゲット・スキーマにプライベート・シノニムNAME_ADDRが定義されます。UTL_NAME_ADDRパッケージは外部Name and Addressサーバーに処理リクエストを送信するJavaパッケージをコールし、外部Name and Addressサーバーはサード・パーティのName and Address処理ライブラリ(Trilliumなど)とのインタフェースを提供します。

サーバー・プロパティ・ファイルNameAddr.propertiesを使用して、サーバー・オプションを構成できます。このファイルは、サーバー・コンポーネントのインストール時に指定したOracleホームの下のowb/bin/adminにあります。次のコードは、一部の重要なプロパティとそのデフォルト設定を示しています。

TraceLevel=0
SocketTimeout=180
ClientThreads=4
Port=4040

TraceLevelプロパティは、通常、サーバー通信の診断を実行して郵便照合プログラムのパーサーからの出力を表示するように変更されます。他のプロパティが変更されることはまれです。

- TraceLevel: owb/bin/adminフォルダにあるファイルNASvrTrace.logの出力を可能にします。このファイルはすべての受信データと送信データを示しており、マッピングがName and Addressサーバーと通信中であることと、Name and Addressサーバーがサービス・プロバイダから出力を受信中であることを検証します。このトレース・ログはすべてのサーバーの入出力を示しており、実行中のマッピングにより解析リクエストが発行されているかどうかを判断する上で最も有効です。ロギングを有効化するには、TraceLevel=1に設定します。ただし、トレースによりパフォーマンスが低下し、作成されるログ・ファイルが大きくなります。本番用にロギングを無効化するには、TraceLevel=0に設定します。

- SocketTimeOut: Name and Addressサーバーが接続をクローズする前に解析リクエストを待機する秒数を指定します。タイムアウトを防ぐためにコンカレント・マッピングを実行する場合は、この時間を1800(30分)まで増やすことができます。

- ClientThreads: クライアント接続の処理に使用するスレッド数を指定します。マップがパラレル化されている場合は、データベース・セッションまたはスレーブ・セッションごとにクライアント接続が1つ確立されます。ほとんどのマップはパラレル化されており、パラレル・プロセス数はプロセッサ数に比例します。単一プロセッサ・コンピュータの場合、大きいマップ用に2つのパラレル・プロセスが生成されます。4プロセッサ・コンピュータの場合は、最高8つのプロセスを生成できます。パラレル化は、Sessionsなどのデータベース初期化設定でも制御できます。
最大のパフォーマンスを得るには、ClientThreadsを同時接続するクライアントの最大数に設定します。実際の接続クライアント数は、マップの実行後にNASvr.logに記録されます。ログに表示されるクライアント接続数が最大数よりも大きい場合は、ClientThreadsの値を増やす必要があります。

スレッドはクライアント間で共有されるため、クライアント数がスレッド数を超えても、すべてのクライアントが処理されます。

- Port: サーバーがリスニングに使用するポートを指定します。このポートはインストーラにより最初に割り当てられています。デフォルト・ポートが他のプロセスと競合する場合は、この値を変更できます。ポートを変更した場合は、utl_name_addrパッケージが接続を確立できるように、runtime_schema.nas_connection表でポートの属性も変更する必要があります。

Name and Addressサーバーの起動と停止

プロパティ・ファイルを編集するか表の保守を実行するたびに、Name and Addressサーバーを停止してから再起動して、変更内容を有効にする必要があります。

Name and Addressサーバーを手動で停止する手順は、次のとおりです。

- Windowsの場合は、OWB_HOME/owb/bin/win32/NAStop.batを実行します。

- UNIXの場合は、OWB_HOME/owb/bin/unix/NAStop.shを実行します。

Name and Addressサーバーを手動で再起動する手順は、次のとおりです。

- Windowsの場合は、OWB_HOME/owb/bin/win32/NAStart.batを実行します。

- UNIXの場合は、OWB_HOME/owb/bin/unix/NAStart.shを実行します。

または、Name and Addressサーバーを手動で再起動することもできます。ただし、自動起動の前に、スクリプトOWB_HOME/owb/bin/unix/NAStart.shのEXECUTE権限をOWBSYSスキーマに付与していることを確認します。

たとえば、SYSユーザーを使用してSYSBDBAとしてSQL*Plusにログインし、次を実行します。

SQL> EXEC DBMS_JAVA.GRANT_PERMISSION( 'OWBSYS', 'SYS:java.io.FilePermission',
'/owb_11g/oracle/owb/bin/unix/NAStart.sh', 'execute' );

ここで、/owb_11gはOracle Warehouse Builderがインストールされるパスです。

23 照合、マージおよび重複除外

この章では、Oracle Warehouse Builderの照合、マージおよびデータ重複機能について説明します。

この章の内容は次のとおりです。

- Oracle Warehouse Builderにおける照合およびマージについて

- Match-Merge演算子による重複ソース・レコードの削除

Oracle Warehouse Builderにおける照合およびマージについて

Oracle Warehouse Builderは、あらゆるデータ・タイプに適用可能な汎用性のあるデータの照合およびマージ機能を備えています。

アルゴリズムに一致する行のリストをターゲット表に書き出すことができます。また、再度幅広い組込みのマージ・ルールを使用し、マージ・ルールを実装して生成されたマージ済レコードに複雑な重複除外ロジックを実装することもできます。

Oracle Warehouse Builderの照合およびマージでは次の機能を提供します。

- 「Jaro-Winkler」アルゴリズム、Levenshtein edit distanceアルゴリズムなどの組込みアルゴリズムを使用したり、実装するカスタム・アルゴリズムを使用して、一致を識別します。

- 重みを使用して、レコード間の一致を識別します。

- 既存のマスター・データ管理アプリケーションなどその他のマージ・ロジックへの入力として一致候補を含む表を生成します。

- 組込みのマージ・ルール、カスタム実装のマージ・ロジックまたはパッケージとカスタム・ルールを組み合せた複雑なマージ・ルールに基づくマージ・ロジックを使用して、マージ・データ・レコードの表を生成します。

- データを相互参照して、一致を追跡および監査します。

- 個人、企業およびアドレス・データ用の高度な照合ルールが組み込まれています。

Oracle Warehouse Builderの照合およびマージ機能をOracle Warehouse Builderの名前とアドレスのクレンジング機能と組み合せることで、ハウスホールディングをサポートできます。これは、名前とアドレスのデータから一意のハウスホールドを識別するプロセスです。

Name and Addressデータのクレンジングの詳細は、第22章「Name and Addressのクレンジング」を参照してください。

注意:
Oracle Warehouse Builderは、Oracle Warehouse Builder ETLマッピングで使用されるMatch-Merge演算子を通じて、その照合およびマージ機能を公開します。サード・パーティのETL製品のユーザーは、既存のETLソリューションを保持したまま、Oracle Warehouse Builderの照合およびマージ機能を使用できます。

- サード・パーティのETLツールを使用してステージング表でMatch-Merge入力データをロードします。

- Oracle Warehouse Builder ETLマッピングを使用して、Match-Mergeを適用して、出力表に結果をロードします。

- サード・パーティのETLツールを使用してその後の処理のための出力表からマージ済の結果を選択します。

マッピング用のデプロイされるコードは、照合およびマージを実行するデータベースにロードされるPL/SQLパッケージのみであるので、この技術はPL/SQパッケージからロジックを呼び出すことのできるELTツールから使用できます。

例: Match-Merge演算子を使用する基本マッピング

図23-1に、Match-Merge演算子を使用するマッピングを示します。Match-Merge演算子の前にName and Address演算子NAMEADDRとステージング表CLN_CUSTOMERSがあることがわかります。多くのシナリオで、名前とアドレスのクレンジングおよび重複除外を行うときは、マッピングでMatch-Merge演算子をName and Address演算子と組み合せることをお薦めします。ソース・データにアドレス・クレンジングを実行すると、一致およびマージ用のエラーのない標準化されたデータが得られます。これにより、結果の品質が向上し、整備済データを照合としてより容易に識別できるため、パフォーマンスが向上します。

図23-1 マッピングでのMatch-Merge演算子

「図23-1 マッピングでのMatch-Merge演算子」の説明

この単純なマッピングは照合およびマージ・プロセスのデータ・フローを表します。

- 顧客表では、Name and Address演算子への入力を提供します。この演算子の出力はCLN_CUSTOMERS表に格納されます。

- CLN_CUSTOMERS表では、FIRST、LASTおよびADDRESS列がMatch-Merge演算子の入力として提供されます。

- Match-Merge演算子では、MM_CUSTOMERS表(実際の重複除外済の行)へのFIRST、LASTおよびADDRESS入力が提供されるとともに、REF_TABLE表へのFIRST、LAST、ADDRESS、MM_FIRST、MM_LASTおよびMM_ADDRESS入力が提供されます。これは、入力からの照合済の行のグループを特定します。

この一致プロセスの詳細は、「照合およびマージ・プロセスの概要」で説明しています。

照合およびマージ・プロセスの概要

照合により、同じ論理データを参照するレコードが判別されます。Oracle Warehouse Builderでは、レコードを比較するための様々な一致ルールが提供されます。一致ルールの範囲は、単純な完全一致から、共通のデータ入力エラーを検出して修正できる高度なアルゴリズムまでおよびます。

マージは、各列のマージ済の値を作成するために選択または定義するマージ・ルールというサバイバーシップ・ルールに基づく一致した複数のレコードを単一の一元化された「ゴールデン」レコードに一元化します。

パッケージされているMDMなど、重複したレコードをマージするためのロジックがあるその他のツールがある場合でも、Oracle Warehouse Builderを使用して一致する行の候補のセットを生成したり、中間表にそれらを格納できます。

関連項目:

- 一致ルール

- マージ・ルール

レコードの一致およびマージの要素

次の概念と用語は、照合およびマージ・プロセスを理解するうえで重要です。

- 一致bin

- 一致bin属性

- 一致レコードのセット

- マージ済レコード

一致bin

一致binは、類似するレコードのためのコンテナで、潜在的な一致を識別するために使用されます。一致bin属性は、レコードが一致bin内に分類される方法を判別するために使用されます。照合の実行中は、Oracle Warehouse Builderでは同じ一致bin内のレコードのみを比較します。一致binによりデータ・セット内の潜在的な一致の数が制限されるので、一致アルゴリズムのパフォーマンスが向上します。

一致bin属性

照合を実行する前に、Oracle Warehouse Builderによりソース・レコードが分割され、より小規模な類似するレコードのグループになります。一致bin属性はソース属性で、レコードの分類方法の決定に使用されます。同じ一致bin属性を持つレコードは、同じ一致bin内に存在します。また一致bin属性により、管理可能なセットになるように一致binが制限されます。

次の競合するニーズを満たすように、慎重に一致bin属性を選択します。

- 一致する可能性のあるすべてのレコードが必ず同じ一致bin内に存在するようにします。

- 一致binサイズをできるかぎり小規模にします。
一致を識別するには、binに含まれるレコード同士を照合する必要があるため、一致binのサイズは小さいほうが効率的です。binが大きければ大きいほど、パフォーマンスは低下します。

一致レコードのセット

一致レコードのセットは、一致bin内で1つ以上の類似するレコードで構成されています。照合の後、各一致binには1つ以上の一致レコードのセットが含まれます。2つのレコードが類似する場合に判別する一致ルールを定義できます。

マージ済レコード

マージ済レコードには、一致レコードのセット内の複数のレコードを使用してマージされたデータが含まれています。各一致レコードのセットにより、独自のマージ済レコードが生成されます。

レコードの一致およびマージ・プロセス

Match-Merge演算子を使用してレコードの照合およびマージを行います。この演算子では、入力ソースからレコードを受け入れ、論理的に同一であるレコードを判別し、一致したレコードから新規のマージ済レコードを構成します。

一致およびマージ・プロセスの概要を示します。次のプロセスがあります。

- 一致binの構成

- 一致レコードのセットの構成

- マージ・レコードの構成

図23-2に、一致およびマージ・プロセスの概要を示します。

図23-2 一致およびマージ・プロセス

「図23-2 一致およびマージ・プロセス」の説明

一致binの構成

一致binは、一致bin属性を使用して構成されています。一致bin属性値が同じレコードは、同じ一致binに存在します。小さな一致binの使用は効率的ではありません。

一致レコードのセットの構成

一致ルールは、各一致bin内のすべてのレコードに適用され、一致レコードのセットが1つ以上生成されます。一致ルールでは、2つのレコードが一致するかどうかが判別されます。一致アルゴリズムは、一致bin内のすべてのレコードを比較するn X nアルゴリズムです。

このアルゴリズムは推移的な照合という点で重要です。レコードA、レコードBおよびレコードCの3つのレコードについて考えてみます。レコードAがレコードBと等しく、レコードBがレコードCと等しい場合、レコードAはレコードCと等しくなります。

関連項目:
一致ルールのタイプおよび一致ルールを作成する手順の詳細は、「一致ルール」を参照してください。

マージ・レコードの構成

1つのマージ・レコードは、1つの照合レコード・セットから作成されます。固有のルールを作成し、マージ・ルールとして使用することで、マージ属性を定義できます。

関連項目:
マージ・ルールのタイプの詳細は、「マージ・ルール」を参照してください。

一致ルール

一致ルールは、2つのレコードが論理的に同じかどうかの判別に使用されます。Oracle Warehouse Builderを使用すると、様々なタイプのルールを使用してソース・レコードを照合できます。Match-MergeウィザードまたはMatchMergeエディタを使用して一致ルールを定義できます。このエディタを使用して、既存の一致ルールを編集するか、新しいルールを追加します。

一致ルールはアクティブまたは受動の可能性があります。アクティブなルールが生成された場合、指定された順序で実行されます。受動ルールは生成されても自動的には実行されません。受動ルールはカスタム・ルールによって実行できます。

表23-1に、一致ルールのタイプを説明します。

表23-1 一致ルールのタイプ

一致ルール

説明

すべて一致

一致bin内の行がすべて照合されます。

一致なし

照合がオフになります。一致bin内の行は照合されません。

条件付き

設定したアルゴリズムに基づいて行が照合されます。条件付き一致ルールの詳細および作成方法は、「条件付き一致ルール」を参照してください。

重み

属性に割り当てるスコアに基づいて行が照合されます。重み一致ルールの詳細および作成方法は、「重み一致ルール」を参照してください。

人名

人名に基づいてレコードが照合されます。人名一致ルールの詳細および作成方法は、「人名一致ルール」を参照してください。

会社

組織または会社の名前に基づいてレコードが照合されます。会社一致ルールの詳細および作成方法は、「会社一致ルール」を参照してください。

アドレス

郵便アドレスに基づいてレコードが照合されます。アドレス一致ルールの詳細および作成方法は、「アドレス一致ルール」を参照してください。

カスタム

定義するカスタム比較アルゴリズムに基づいてレコードが照合されます。カスタム一致ルールの詳細および作成方法は、「カスタム一致ルール」を参照してください。

条件付き一致ルール

条件付き一致ルールにより、レコードの一致条件が指定されます。

条件付き一致ルールを使用すると、複数の属性の比較を組み合せて1つの複合ルールにできます。複数の属性が1つのルールに関与する場合、すべての比較がtrueの場合にのみ2つのレコードは一致するとみなされます。Oracle Warehouse Builderでは、2番目以降の条件の左端の列に「AND」アイコンが表示されます。

比較アルゴリズムを使用して属性を比較する方法を指定できます。

属性

特定の条件のテスト対象となる属性を識別します。任意の入力属性(INGRP1)から選択できます。

位置

実行順序。行ヘッダーをクリックし、その行を新規の位置にドラッグすると、ルールの位置を変更できます。行ヘッダーは、「属性」列の左側にあるボックスです。

アルゴリズム

方法のリストを使用して一致を判別します。各アルゴリズムについては、表23-2を参照してください。

類似度のスコア

「Edit Distance」、「標準化されたEdit Distance」、「Jaro-Winkler」または「標準化したJaro-Winkler」アルゴリズムにより計算された、2つの文字列の一致に必要な類似度の最小値。0(ゼロ)から100の値を入力します。値100は完全一致を示し、値0(ゼロ)は類似度がないことを示します。

空白の一致

照合時の空の文字列の処理オプションを示します。

比較アルゴリズム

条件付き一致ルールの各属性に比較アルゴリズムを割り当て、属性値を比較する方法を指定します。複数の属性が、それぞれに選択した固有の比較アルゴリズムを持つ1つのルールで比較される場合があります。

表23-2に、比較のタイプを示します。

表23-2 条件付き一致ルールに対する比較アルゴリズムのタイプ

アルゴリズム

説明

Exact

属性の値が同じ場合にその属性は一致します。たとえば、「Dog」と「dog!」は、2番目の文字列が大文字始まりでなく、余分な文字が含まれているため、両者は一致しません。

STRING以外のデータ型で、比較可能なタイプはこれのみです。

標準化されたExact

完全一致の比較前に、属性の値が標準化されます。標準化すると、比較時に大/小文字区別、空白および非英数字は無視されます。このアルゴリズムを使用すると「Dog」と「dog!」は一致となります。

Soundex

データがSoundex表示に変換された後、テキスト文字列と比較されます。Soundex表示が一致する場合、2つの属性値は一致するとみなされます。

Edit Distance

「類似度のスコア」に0から100を入力します。2つの属性の類似度が指定した値以上の場合、この属性値は一致するとみなされます。

類似度のアルゴリズムでは、2つの文字列のEdit Distanceが計算されます。値が100の場合、2つの値が同一であることを示し、値が0の場合はまったく類似していないことを示します。

たとえば、文字列「tootle」が文字列「tootles」と比較される場合、Edit Distanceは1です。文字列「tootles」の長さは7です。したがって、類似度の値は、(6/7)*100つまり85となります。

ここで使用するアルゴリズムはLevenshtein edit distanceアルゴリズムです。

標準化されたEdit Distance

類似度のアルゴリズムを使用して一致が判別される前に、属性の値が標準化されます。標準化すると、比較時に大/小文字区別、空白および非英数字は無視されます。

不完全な名前

ある属性の値全体が、同じ単語で始まる他の属性内に含まれる場合、文字列の属性の値は一致するとみなされます。たとえば、「Midtown Power」は「Midtown Power and Light」とは一致しますが、「Northern Midtown Power」とは一致しません。比較時に大/小文字区別および非英数字は無視されます。

略称

ある文字列内で一致する単語の略称が、他の文字列に含まれている場合、文字列の属性の値は一致するとみなされます。このアルゴリズムでは、略称の検出前に、標準化されたExact比較が文字列全体で実行されます。比較時に大/小文字区別および非英数字は無視されます。一致ルールでは、各単語に対して略称が検索されます。比較対象となる長い方の単語に、短い方の単語の文字がすべて含まれる場合、また、その文字が短い方の単語と出現順序が同じ場合、その単語は一致するとみなされます。

たとえば、「Intl.Business Products」は「International Bus Prd」と一致します。

頭文字

ある文字列が他の文字列の頭字語の場合、文字列の属性の値は一致するとみなされます。このアルゴリズムでは、頭字語を識別する前に、標準化されたExact比較が文字列全体で実行されます。一致しない場合は、ある文字列の各単語が、他の文字列内で一致する単語と比較されます。単語全体で一致しない場合、その文字列に含まれる単語の各文字が、他の文字列内の一致していない単語の最初の文字と比較されます。その文字が同じ場合、その名前は一致するとみなされます。

たとえば、「Chase Manhattan Bank NA」は「CMB North America」と一致します。比較時に大/小文字区別および非英数字は無視されます。

Jaro-Wrinkler

「Edit Distance」アルゴリズムをさらに改良した比較システムを使用して、類似度の値に基づいて文字列を一致させます。「Jaro-Winkler」アルゴリズムでは、文字列の長さが考慮され、先頭にあるエラーほど大きなペナルティが適用されます。また、一般的な誤植も認識されます。

その文字列は、類似度の値が指定する「類似度のスコア」のスコア以上の場合に一致します。類似度が100の場合、2つの文字列が同一であることを示します。類似度が0の場合は、まったく類似していないことを示します。実際にアルゴリズムにより計算された値(0.0から1.0)を100倍すると「Edit Distance」のスコアと対応します。

標準化したJaro-Wrinkler

大/小文字区別、空白および非英数字が排除されてから、「Jaro-Winkler」アルゴリズムを使用して一致が判別されます。

Double Metaphone

「Soundex」アルゴリズムをさらに改良したコーディング・システムを使用して、発音の類似する文字列を一致させます。複数の方法で発音可能な文字列に対して2つのコードを生成します。最初のコードが2つの文字列と一致しているか、2番目のコードが2つの文字列と一致している場合、その文字列は一致しています。「Double Metaphone」アルゴリズムでは他に、イタリア語、スペイン語、フランス語、ゲルマンおよびスラブ系言語の発音が考慮されています。「Soundex」アルゴリズムとは異なり、「Double Metaphone」アルゴリズムでは1文字目がエンコードされるため、「Kathy」と「Cathy」は同じ表音コードとして評価されます。

条件付き一致ルールの作成

条件付き一致ルールを定義する手順は、次のとおりです。

1. 「一致ルール」タブまたは一致ルール・ページの最上位で、「ルール・タイプ」列の「条件付き」を選択します。
「詳細」セクションが表示されます。

2. 「追加」をクリックして新規の1行を追加します。

3. 「属性」列の属性を選択します。

4. 「アルゴリズム」列で、比較アルゴリズムを選択します。説明は、表23-2を参照してください。

5. 「Edit Distance」、「標準化されたEdit Distance」、「Jaro-Winkler」または「標準化したJaro-Winkler」アルゴリズムの類似度のスコアを指定します。

6. 空白の処理方法を選択します。

一致ルール: 基本的な例

次の説明では、一部の基本の一致ルールを実際のデータに適用する方法と、複数の一致ルールを相互にやり取りできるようにする方法について示します。

顧客データの照合およびマージの例

Match-Merge演算子を使用して顧客の郵送先リストを管理する方法を考えてみます。照合を使用して、10,000行ある顧客データの表内の同じ人物を参照するレコードを検出します。

たとえば、類似する名前および姓を持つレコードを選別する一致ルールを定義できます。照合を使用して、5つの行が同じ人物を参照していることが判明したとします。その場合、これらのレコードを1つの新規レコードにマージできます。たとえば、マージ・ルールを作成して、一致した5つのレコードの中で一番長いアドレスを持つレコードの値を保持できます。新しくマージされた表には、各顧客につき1つのレコードが含まれています。

表23-3に、Match-Merge演算子を使用する前の、同じ人物を参照している各レコードを示します。

表23-3 サンプル・レコード

行

名

姓

SSN

アドレス

単位

郵便番号

1

Jane

Doe

NULL

123 Main Street

NULL

22222

2

Jane

Doe

111111111

NULL

NULL

22222

3

J.

Doe

NULL

123 Main Street

Apt 4

22222

4

NULL

Smith

111111111

123 Main Street

Apt 4

22222

5

Jane

Smith-Doe

111111111

NULL

NULL

22222

表23-4に、Match-Merge演算子を使用した後のJane Doeに関する単一レコードを示します。新規レコードでは、サンプルの様々な行のデータが含まれていることがわかります。

表23-4 Match-Merge結果

名

姓

SSN

アドレス

単位

郵便番号

Jane

Doe

111111111

123 Main Street

Apt 4

22222

例: 複数の一致ルールの組合せ方法

複数の一致ルールを作成すると、Oracle Warehouse Builderでは2つの行がいずれかの一致ルールを満たしている場合に、両者が一致しているものと判別されます。つまり、Oracle Warehouse Builderでは複数の一致ルールがOR論理を使用して評価されます。

次の例は、Oracle Warehouse Builderで複数の一致ルールがどのように評価されるかを示しています。

「一致ルール」タブの最上部で、表23-5で説明した2つの一致ルールを作成します。

表23-5 2つの一致ルール

名前

位置

ルール・タイプ

使用方法

説明

Rule_1

1

条件付き

アクティブ

SSNの一致

Rule_2

2

条件付き

アクティブ

姓とPHNの一致

タブの下部で、表23-6で説明するようにRule_1に詳細を割り当てます。

表23-6 Rule_1の詳細

属性

位置

アルゴリズム

類似度のスコア

空白の一致

SSN

1

Exact

0

いずれかが空白の場合は一致しない

Rule_2について、表23-7に示す詳細を割り当てます。

表23-7 Rule_2の詳細

属性

位置

アルゴリズム

類似度のスコア

空白の一致

姓

1

Exact

0

いずれかが空白の場合は一致しない

PHN

2

Exact

0

いずれかが空白の場合は一致しない

表23-8に示すデータがあるとします。

表23-8 サンプル・データ

行

名

姓

PHN

SSN

A

John

Doe

650-123-1111

NULL

B

Jonathan

Doe

650-123-1111

555-55-5555

C

John

Dough

650-123-1111

555-55-5555

Rule_1に従って、行BおよびCは一致します。Rule_2に従って行AおよびBは一致します。したがって、Oracle Warehouse Builderでは一致ルールがOR論理を使用して処理されるため、3つのレコードはすべて一致することになります。

推移的一致の例

一般ルールでは、AがBと一致し、BがCと一致する場合、AはCと一致することになります。表23-9で説明するような類似性に基づいて、条件付き一致ルールを割り当てます。

表23-9 条件付き一致ルール

属性

位置

アルゴリズム

類似度のスコア

空白の一致

姓

1

類似度

80

いずれかが空白の場合は一致しない

表23-10に示すデータがあるとします。

表23-10 サンプル・データ

行

名

姓

PHN

SSN

A

John

Jones

650-123-1111

NULL

B

Jonathan

James

650-123-1111

555-55-5555

C

John

Jamos

650-123-1111

555-55-5555

JonesはJamesと類似度80で一致し、JamesはJamosと類似度80で一致します。Jonesは、類似度が60でしきい値の80より低いため、Jamosとは一致しません。ただし、JonesはJamesと一致し、JamesはJamosと一致するため、3つのレコード(Jones、JamesおよびJamos)はすべて一致することになります。

重み一致ルール

重み付けされた一致ルールにより、ルールに含まれる各属性に整数の重みを割り当てることができます。また、しきい値を指定する必要があります。各属性について、Match-Merge演算子により、その重みに類似度のスコアが乗算されてスコアの合計が計算されます。その合計がしきい値以上である場合、比較している2つのレコードは一致するとみなされます。

重み一致ルールは、多数の属性を比較する必要がある場合に非常に便利で、異なる単一の属性が存在しなければ、条件付きルールで発生する可能性のある不一致が発生します。

重みルールは、暗黙的に類似度のアルゴリズムを呼び出し、2つの属性値を比較します。このアルゴリズムでは整数(0から100の間の割合値)を戻します。これは、2つの値の類似度を表します。値が100の場合、2つの値が同一であることを示し、値が0の場合はまったく類似していないことを示します。

類似度アルゴリズム

一致の判別に使用する方法。次のアルゴリズムから選択します。

- Edit Distance: ある文字列から別の文字列への変換に必要な削除、挿入または置換の数が計算されます。

- Jaro-Winkler: 「Edit Distance」アルゴリズムよりも改善された比較システムが使用されます。文字列の長さが考慮され、先頭にあるエラーほど大きなペナルティが適用されます。また、一般的な誤植も認識されます。

属性

特定の条件のテスト対象となる属性を識別します。任意の入力属性(INGRP1)から選択できます。

最大スコア

属性の重み値。「一致のための必須スコア」よりも大きい値を指定する必要があります。

空白の場合にスコア

レコードの1つが空の場合の類似度の値。

一致のための必須スコア

一致に必要な類似度を表す値。値が100の場合、2つの値が同一であることを示します。値0(ゼロ)は類似性がないことを示します。

重み一致ルールの例

表23-11は、2つの異なるレコードに含まれる属性値を示しており、レコードは次の順序で読み込まれます。

表23-11 重み一致ルールの例

レコード番号

名

ミドル・ネーム

姓

レコード1

Robert

Steve

Paul

レコード2

Steven

Paul

一致ルールを「Edit Distance」類似度のアルゴリズムを使用するように定義します。「一致のための必須スコア」は120です。名およびモジュール名の属性には、「最大スコア」を50、「空白の場合にスコア」を20と定義します。姓の属性は、「最大スコア」は80、「空白の場合にスコア」は0です。

重み一致ルールを使用したレコード1とレコード2の比較の例を考えてみます。

- レコード2の名は空白のため、空白のスコア = 20です。

- 2つのレコードのミドル・ネームの類似度は0.83です。この属性に割り当てられた重みは50であるため、この属性の類似度のスコアは41.5です(0.83 X 50)。

- 属性の姓は同一であるため、姓の類似度のスコアは1です。重み付けスコアは80です(1 X 80)。

この比較の合計スコアは143です(20+43+80)。この値は「一致のための必須スコア」に定義した値よりも大きいため、このレコードは一致するとみなされます。

重み一致ルールの作成

重み一致ルールを使用する手順は、次のとおりです。

1. 「一致ルール」タブまたは一致ルール・ページで、「ルール・タイプ」として「重み」を選択します。
ページの最下部に「詳細」タブが表示されます。

2. ページの最下部にある「追加」を選択して新規の1行を追加します。

3. 各行について、「属性」列を使用して属性を選択し、ルールに追加します。

4. 「最大スコア」で、各属性に重みを割り当てます。Oracle Warehouse Builderでは、各属性が類似度のアルゴリズムを使用して比較されます。このアルゴリズムは、2つの行の類似度を表す0から100までのスコアを戻します。

5. 「空白の場合にスコア」で、レコードのいずれかの属性が空白の場合に使用する値を割り当てます。

6. 「一致のための必須スコア」で、一致全体のスコアを割り当てます。
2つの行が一致すると考えられる場合、合計数は「一致のための必須スコア」パラメータで指定した値より大きいはずです。

人名一致ルール

組込み人名ルールは、個々の名前を照合する容易で便利な方法です。人名一致ルールは、最初にName and Address演算子を使用してデータが修正された場合に最も効果的です。

人名一致ルールを使用する場合、レコード内で、人名を表すデータを指定する必要があります。データは複数の列から取得できます。各列には、データが何を表すかを指定する「入力」ロールを割り当てる必要があります。

人名一致ルールを定義するには、ルールの一部である「人名属性」を定義する必要があります。たとえば、「人名属性」の名と姓を比較に使用する人名一致ルールを作成できます。各「人名属性」について、その属性に使用する人名ロールを定義する必要があります。次に、比較に使用するルール・オプションを定義します。たとえば、姓を比較する場合に、ハイフンで連結された姓は一致するとみなすように指定することもできます。

人名ロール

表23-12は、照合に使用する名前の各部分のロールを示しています。一致ルール・ページまたは「一致ルール」タブで、「人名属性」タブの「ロール」列を使用して人名詳細を定義します。

表23-12 人名一致ルールの名前ロール

ロール

説明

プリネーム

プリネームは、次の条件に当てはまる場合にのみ比較されます。

- 姓および(ある場合は)ミドル・ネーム(Middle_name_std、Middle_name_2_stdおよびMiddle_name_3_stdロール)が両方のレコードで一致しています。

- 「"Mrs"の一致」オプションが選択されています。

- いずれかのレコードにFirst_name_stdはありません。

標準化された名前

名を比較します。デフォルトでは、名が一致する必要がありますが、他の比較オプションも指定できます。

名は、両方が空白の場合に一致します。「プリネーム」ロールが割り当てられ、「"Mrs"の一致」オプションが設定されていなければ、空白の名は空白以外の名と一致しません。「姓」ロールが割り当てられていない場合、First_name_stdのロールを割り当てる必要があります。

標準化されたミドル・ネーム、標準化されたミドル・ネーム2、標準化されたミドル・ネーム3

ミドル・ネームを比較します。デフォルトでは、ミドル・ネームが一致する必要がありますが、他の比較オプションも指定できます。複数の「ミドル・ネーム」ロールが割り当てられている場合、異なるロールに割り当てられた属性はクロス比較されます。

たとえば、Middle_name_stdの値は、「Middle_name_2_std」ロールも割り当てられている場合、他のMiddle_name_std値に対してだけでなく、Middle_name_2_stdに対しても比較されます。いずれかまたは両方が空白の場合、ミドル・ネームは一致します。いずれかの「ミドル・ネーム」ロールが割り当てられている場合、「First_name_std」ロールも割り当てられている必要があります。

姓

姓を比較します。デフォルトでは、姓が一致する必要がありますが、他の比較オプションも指定できます。両方が空白の場合、姓は一致しますが、いずれか一方が空白の場合は一致しません。

ポストネーム

「Jr.」や「III」などのポストネームを比較します。値が同一である場合またはいずれかの値が空白の場合に、ポストネームは一致します。

人名詳細

表23-13は、人名一致ルールの一致を判別するオプションを示しています。「一致ルール」タブまたは一致ルール・ページの「詳細」タブを使用して人名詳細を定義します。

表23-13 人名一致ルールのオプション

オプション

説明

姓名の順序の変更を検出

「Elmer Fudd」を「Fudd Elmer」と一致させるなど、姓名の順序の変更が検出されます。このオプションを選択できるのは、「人名属性」タブで属性に「名」および「姓」ロールを選択した場合です。

イニシャルの一致

「R.」と「Robert」など、イニシャルを名前と一致させます。このオプションは、「名」および「ミドル・ネーム」ロール用に選択できます。

部分文字列の一致

「Rob」と「Robert」など、部分文字列を名前と一致させます。このオプションは、「名」および「ミドル・ネーム」ロール用に選択できます。

類似度のスコア

類似度がスコア以上の場合、レコードは一致するとみなされます。たとえば、スコアが80以下の場合、「Susan」と「Susen」は一致となります。

「Edit Distance」または「Jaro-Winkler」アルゴリズムにより計算された類似度のスコアを使用して、一致が判別されます。値100を入力すると完全一致が要求され、値0(ゼロ)を入力すると類似度は要求されません。

表音コードの一致

「Soundex」または「Double Metaphone」アルゴリズムを使用して一致を判別します。

複合名の検出

「De Anne」と「Deanne」など、複合名と名前を一致させます。このオプションは、「名」ロール用に選択できます。

"""Mrs""の一致"

「Mrs.Washington」と「George Washington」など、プリネームと姓名を一致させます。このオプションは「プリネーム」ロール用に選択できます。

ハイフンで連結された一致名

「Reese-Jones」と「Reese」など、ハイフンで連結された名前とハイフンなしの名前を一致させます。このオプションは「姓」ロール用に選択できます。

欠落したハイフンの検出

演算子では、「Hillary Rodham Clinton」と「Hillary Rodham-Clinton」を一致させるなど、欠落したハイフンが検出されます。このオプションは「姓」ロール用に選択できます。

人名一致ルールの作成

人名一致ルールを定義する手順は、次のとおりです。

1. 「一致ルール」タブで、「ルール・タイプ」として「人名」を選択します。
ページの下部に「人名属性」タブと「詳細」タブが表示されます。

2. 「人名属性」タブの左パネルでフルネームを記述する属性を選択し、右矢印を使用して「名前ロール」セクションに移動します。

3. 各属性について、名前ごとにロールを選択します。
一致ルールに対して「姓」または「標準化された名前」のいずれかを定義して、一致ルールを効率的なものにする必要があります。割当て可能なロールのタイプの詳細は、表23-12を参照してください。

4. 「詳細」タブを選択し、表23-13に示す適用可能なオプションを選択します。

会社一致ルール

組込み会社ルールは、ビジネス名を照合する容易で便利な方法です。会社一致ルールは、データが、最初にName and Address演算子を使用してデータが修正された場合に最も効果的です。人名ルールと同様に、このルールでは、レコード内で、どのデータが会社の名前を表すかを設定する必要があります。データは複数の列から取得でき、指定した各列には、データが何を表すかを指定する「入力」ロールを割り当てる必要があります。

すべての属性に対して「会社」ロールを割り当てる必要はなく、また、すべてのロールを属性に割り当てる必要もありません。「会社」ロールに割り当てられた属性は、レコードを比較するために一致ルールで使用されます。割り当てたロールおよび設定した他の比較オプションに基づいて属性が比較されます。各ロールを会社一致ルールで処理する方法の一覧は、「会社ロール」を参照してください。

会社ロール

「会社」ロールでは、照合に使用される会社名の一部を定義します。「会社」ロールに対して選択できるオプションは、会社1または会社2です。属性を1つ選択する場合、会社名に対して、ロールとして会社1を選択します。属性を2つ選択した場合は、いずれか1つを会社1とし、残りを会社2と指定します。

- 会社1: このロールを割り当てる場合、会社1が表すビジネス名が比較されます。「会社1と会社2のクロス一致」ボックスが選択されていなければ、会社1の名前は会社2の名前と比較されません。デフォルトでは、会社名が一致する必要がありますが、他の比較オプションも指定できます。いずれかまたは両方の名前が空白の場合、会社1の名前は一致しません。

- 会社2: このロールを割り当てる場合、会社2に割り当てられた属性の値が比較されます。「会社1と会社2のクロス一致」ボックスが選択されていなければ、会社2の名前は会社1の名前と比較されません。デフォルトでは、会社名が一致する必要がありますが、他の比較オプションも指定できます。いずれかまたは両方の名前が空白の場合、会社2の名前は一致しません。「会社1」ロールが割り当てられていない場合、「会社2」ロールが割り当てられることはありません。

会社の詳細

表23-14に、一致を確認するために会社名の各コンポーネントに設定可能なルール・オプションを示します。

表23-14 会社ルールのオプション

オプション

説明

ストライプ・ノイズ・ワード

照合する前に会社1および会社2からTHE、AND、CORP、CORPORATION、CO、COMPANY、INC、INCORPORATED、LTD、TO、OFおよびBYを削除します。

会社1と会社2のクロス一致

照合する2つのレコードを比較する場合、会社1と会社1および会社2と会社2のレコードをそれぞれ照合し、さらに会社1と会社2のレコードを照合します。

会社名の不完全一致

「不完全な名前」アルゴリズムを使用して、一致が判別されます。たとえば、Midtown PowerとMidtown Power and Lightは一致します。

略称の一致

「略称」アルゴリズムを使用して、一致が判別されます。たとえば、International Business MachinesとIBMは一致します。

頭文字の一致

「頭文字」アルゴリズムを使用して、一致が判別されます。たとえば、CMB, North AmericaとChase Manhattan Bank, NAは一致します。

類似度のスコア

「Edit Distance」または「Jaro-Winkler」アルゴリズムにより計算された類似度のスコアを使用して、一致が判別されます。一致に必要な最小類似度として0(ゼロ)から100の値を入力します。値100を入力すると完全一致が要求され、値0(ゼロ)を入力すると類似度は要求されません。

類似度が類似度のスコアの値以上の場合、2つのレコードは一致とみなされます。

会社一致ルールの作成

会社一致ルールを定義する手順は、次のとおりです。

1. 「一致ルール」タブまたは一致ルール・ページで、「ルール・タイプ」として「会社」を選択します。
ページの下部に「会社属性」タブと「詳細」タブが表示されます。

2. 「会社属性」タブの左パネルで、会社名を表す属性を1つまたは2つ選択して右シャトル・ボタンをクリックします。
選択した属性が「会社ロール」ボックスに移動します。

3. 属性ごとに「ロール」をクリックします。リストから第1の属性について「会社1」を選択し、存在する場合は第2の属性について「会社2」を選択します。

4. 「詳細」タブで、使用可能なオプションを選択します。詳細は、「会社の詳細」を参照してください。

アドレス一致ルール

アドレス一致ルールは、郵便アドレスに基づいてレコードを照合する方法です。アドレス一致ルールは、データが、最初にName and Address演算子を使用して修正された場合に最も効果的です。

アドレス一致ルールは、処理されているアドレスがName and Address演算子を使用して修正されたかどうかによって異なる働きをします。一般に、修正されたアドレスは、郵便照合データベース内で識別されているため、そのアドレスのある国の郵政公社に準拠した既存のアドレスであり、構文的に正しく正当です。一致ルールはそれらの形式について推測を行うため、修正されたアドレスはより迅速に処理できます。

未修正のアドレスは、構文的に正しい場合もありますが、郵便照合データベースでは検出できません。データベース内にないか、アドレスのある国に郵便照合データベースがインストールされていないため、検出されない場合があります。アドレス一致ルールでは、「検出済」ロールに基づいて修正されたアドレスかどうかが判別されます。「検出済」ロールが割り当てられていない場合、一致ルールは、修正されたアドレスと未修正のアドレスの両方に対して比較を実行します。

アドレス一致ルールを作成するには、「アドレス」ロールを様々な属性に割り当てます。「アドレス」ロールに割り当てられた属性は、レコードを比較するために一致ルールで使用されます。属性は、属性が割り当てられたロールおよび他の比較オプションの設定に基づいて比較されます。

アドレス・ロール

表23-15は、アドレスの各部分に対して選択できる「アドレス」ロールを示しています。

表23-15 アドレス・ロール

ロール

説明

第1アドレス

第1アドレスが比較されます。第1アドレスは、番地(100 Main Street)または私書箱(PO Box 100)などです。デフォルトでは、第1アドレスが一致する必要がありますが、類似度のオプションも指定できます。

「第1アドレス」ロールを割り当てる必要があります。

区画番号

第1アドレスが一致した場合に、区画番号(部屋番号、階、棟番号など)が比較されます。「空白の第2アドレスの一致」オプションが設定されていないかぎり、いずれか一方のみでなく、両方が空白の場合に区画番号は一致します。「異なる第2アドレスの許可」オプションが設定されている場合は、区画番号は無視されます。

私書箱

私書箱が比較されます。第1アドレスが私書箱(PO Box 100)を表す場合、私書箱は、私書箱の数字部分(100)のみで、第1アドレスのサブセットです。第1アドレスが番地を表す場合、私書箱は空白になります。

二重第1アドレス

二重第1アドレスは他のレコードの二重第1アドレスおよび第1アドレスと比較され、一致が判別されます。

二重区画番号

二重区画番号アドレスは、他のレコードの二重区画番号および区画番号と比較されます。一方または両方が空白の場合、この区画番号は一致します。「二重区画番号」ロールを割り当てるには、「二重第1アドレス」ロールも割り当てられている必要があります。

二重私書箱

あるレコードの二重私書箱アドレスは、他のレコードの二重私書箱および私書箱と比較されます。「二重私書箱」ロールを割り当てるには、「二重第1アドレス」ロールも割り当てられている必要があります。

市区町村

未修正のアドレスの場合、市区町村が比較されます。修正されたアドレスの場合、郵便番号が一致していない場合にのみ市区町村が比較されます。「市区町村」ロールと「都道府県」ロールの両方が一致している場合は、第1アドレスなどの「アドレス行」ロールが比較されます。

デフォルトでは、市区町村が一致する必要があります。ただし、最終行の類似度のオプションを指定することもできます。両方が空白の場合、市区町村は一致しますが、いずれか一方が空白の場合は一致しません。「市区町村」ロールが割り当てられている場合、「都道府県」ロールも割り当てられている必要があります。

都道府県

このロールを割り当てるのは、「市区町村」ロールも割り当てる場合のみです。

未修正のアドレスの場合、都道府県が比較されます。修正されたアドレスの場合、郵便番号が一致していない場合にのみ都道府県が比較されます。「市区町村」ロールと「都道府県」ロールの両方が一致している場合は、第1アドレスなどの「アドレス行」ロールが比較されます。デフォルトでは、都道府県が一致する必要があります。ただし、最終行の類似度のオプションを指定することもできます。両方が空白の場合、都道府県は一致しますが、いずれか一方が空白の場合は一致しません。「都道府県」ロールが割り当てられている場合、「市区町村」ロールも割り当てられている必要があります。

郵便番号

未修正のアドレス・データの場合、演算子では「郵便番号」は使用されません。

修正されたアドレスの場合、郵便番号が比較されます。未修正のアドレスの場合、「郵便番号」ロールは使用されません。一致するには、郵便番号が同一である必要があります。一方または両方が空白の場合、郵便番号は一致するとみなされます。郵便番号が一致する場合、第1アドレスなどの「アドレス行」ロールが比較されます。郵便番号が一致しない場合、「市区町村」ロールおよび「都道府県」ロールが比較されて、「アドレス行」ロールを比較する必要があるかどうかが判別されます。

検出済

「Is_found_flag」属性は比較されませんが、そのかわりにこの属性を使用して、アドレスが郵便照合データベース内で検出されたかどうかを判別します。したがって、そのアドレスがある国の郵政公社に従った正当なアドレスです。この判別が重要なのは、照合時に行われた比較のタイプは、そのアドレスが郵便データベースで検出されたかどうかによって異なるからです。

アドレスの詳細

表23-16は、アドレス・ルールを使用した場合の一致を判別するオプションを示します。

表23-16 アドレス・ロールのオプション

オプション

説明

異なる第2アドレスの許可

区画番号がNULL値でなく、異なる場合でもアドレスの一致を許可します。

空白の第2アドレスの一致

一方の区画番号がNULL値の場合でもアドレスの一致を許可します。

番地または私書箱の一致

番地または私書箱が一致する場合にレコードが一致します。

アドレス行の類似度

アドレス行の類似度>=スコアの場合に一致します。すべての空白および非英数字文字が削除されてから類似度が計算されます。

最終行の類似度

最終行の類似度>=スコアの場合に一致します。最終行は市区町村および都道府県で構成されています。すべての空白および非英数字文字が削除されてから類似度が計算されます。

アドレス一致ルールの作成

アドレス一致ルールを定義する手順は、次のとおりです。

1. 「一致ルール」タブまたは一致ルール・ページで、「ルール・タイプ」として「アドレス」を選択します。
ページの下部に「アドレス属性」タブと「詳細」タブが表示されます。

2. 「アドレス属性」タブの左パネルで、第1アドレスを表す属性を選択します。右シャトル・キーを使用して、選択した属性をアドレス・ロール属性の列に移動します。

3. 「ロールが必要です」をクリックし、その属性を第1アドレスとして指定します。
第1アドレスとして属性を1つ指定する必要があります。「第1アドレス」ロールを割り当てない場合、一致ルールは無効です。

4. 他の属性を追加し、そのロールを必要に応じて指定します。割当て可能なロールのタイプは、表23-15を参照してください。

5. 「詳細」タブを選択し、表23-16に示す適用可能なオプションを選択します。

カスタム一致ルール

カスタム一致ルールを使用すると、独自の比較アルゴリズムを記述してレコードを照合できます。入力属性を使用したり、この比較内のファンクションを照合できます。アクティブなカスタム・ルールを使用して受動ルールの実行を制御できます。

次の3つの受動組込みルールがあります。

- NAME_MATCH: 組込み名前ルール

- ADDRESS_MATCH: 組込みアドレス・ルール

- TN_MATCH: 組込み条件付きルール

カスタム・ルールを作成して、これらの2つのルールを満たす場合に2つのレコードが一致するとみなされるように指定できます。例23-1は、この例を実装するカスタム一致ルールの作成に使用されるPL/SQLコードを示しています。

例23-1 既存の受動ルールを使用したカスタム・ルールの作成

BEGIN
RETURN(
(NAME_MATCH(THIS_,THAT_) AND ADDRESS_MATCH(THIS_,THAT_))
OR
(NAME_MATCH(THIS_,THAT_) AND TN_MATCH(THIS_,THAT_))
OR
(ADDRESS_MATCH(THIS_,THAT_) AND TN_MATCH(THIS_,THAT_))
);
END;

カスタム一致ルールの作成

カスタム一致ルールを定義する手順は、次のとおりです。

1. 「一致ルール」タブまたは一致ルール・ページで、「ルール・タイプ」として「カスタム」を選択します。
ページの下部に、PL/SQLプログラムのスケルトンとともに「詳細」フィールドが表示されます。

2. 「編集」をクリックしてカスタム一致ルール・エディタを開きます。
エディタの使用の詳細は、「ヘルプ」メニューから「ヘルプ・トピック」を選択してください。

3. PL/SQLコードを入力するには、次の任意の手順を組み合せて使用します。

- ファイルを読み取るには、「コード」メニューから「ファイルを開く」を選択します。

- テキストを入力するには、マウスまたは矢印キーを使用してカーソルを置いてから入力を開始します。「編集」メニューと「検索」メニューのコマンドを使用することもできます。

- ナビゲーション・ツリーでファンクション、パラメータまたは変換を参照するには、カーソルを置いてからオブジェクトをダブルクリックするか、「実装」フィールドにドラッグ・アンド・ドロップします。

4. コードを検証するには、「テスト」メニューから「検証」を選択します。
検証結果が「メッセージ」タブに表示されます。

5. コードを保存するには、「コード」メニューから「保存」を選択します。

6. カスタム一致ルール・エディタを閉じるには、「コード」メニューから「閉じる」を選択します。

マージ・ルール

一致は、論理的に同じレコードのセットを生成します。マージは、一致する一連のレコードから1つのレコードを作成するプロセスです。マージ・ルールは、一致するレコードのセットの属性に適用され、マージ済レコードの属性の単一の値を取得されます。

マージ済レコードの全属性に対してルールを1つ定義する方法と、属性ごとにルールを定義する方法があります。たとえば、マージ済レコードが顧客レコードの場合は、ADDRESS1、ADDRESS2、CITY、STATEおよびZIPなどの属性を持っている可能性があります。各属性の値を最大5つの異なるレコードから選択する5つのルールを記述するか、5つの属性の値をすべて1つのレコードから選択するレコード・ルールを1つ記述できます。レコード・ルールを使用するのは、複数の属性が住所などの論理単位を構成している場合です。たとえば、「市区町村」、「都道府県」および「郵便番号」は3つの異なる属性ですが、これらの属性のデータはすべて同じレコードから取り込まれます。

表23-17に、マージ・ルールのタイプを示します。

表23-17 マージ・ルールのタイプ

マージ・ルール

説明

すべて

空白以外の最初の値が使用されます。

一致ID

別のMatch-Merge演算子から出力されたレコードがマージされます。

ランク

一致セットのレコードをランク付けします。最上位にランク付けされたレコードの関連する属性は、マージ属性値の移入に使用されます。

順序

このルールにデータベースの順序を指定します。値には、この順序での次の値が使用されます。

最小/最大

属性およびリレーションを指定して、マージ属性のソースとして使用するレコードを選択します。

コピー

以前にマージした値とは異なる値を選択します。

カスタム

PL/SQLパッケージ・ファンクションを作成して、マージ値を選択します。その演算子によって、このファンクションのシグネチャが提供されます。ユーザーは、BEGINとENDの間にルールを実装する必要があります。一致したレコードおよびマージ・レコードはこのファンクションのパラメータです。

任意のレコード

「すべて」ルールと同じですが、「任意のレコード」ルールは複数の属性に適用されます。

レコードのランク

「ランク」ルールと同じですが、「レコードのランク」ルールは複数の属性に適用されます。

最小/最大レコード

「最小/最大」ルールと同じですが、「最小/最大レコード」ルールは複数の属性に適用されます。

カスタム・レコード

「カスタム」ルールと同じですが、「カスタム・レコード」ルールは複数の属性に適用されます。

「一致ID」マージ・ルール

「一致ID」マージ・ルールを使用して、別のMatch-Merge演算子からのXREFグループ内で出力済のレコードをマージします。このタイプの入力には、他の演算子は無効です。詳細は、「例: ハウスホールディング用の2つのMatch-Merge演算子の使用」を参照してください。

順序の次の値

ルールで使用される順序を識別します。

「順序」リスト

現行のプロジェクトで定義済の順序がすべて表示されます。

順序の選択

ルールの順序がリストで現在選択されている順序に設定されます。「順序」リストから「順序の選択」に順序を移動します。

「ランク」および「レコードのランク」マージ・ルール

「ランク」および「レコードのランク」ルールを使用するのは、複数のソースからデータをマージする場合です。この2つのルールを使用すると、特定のソースのプリファレンスを識別できます。データには、ルールの基礎となる第2入力属性が必要です。

たとえば、第2属性でデータ・ソースを識別し、これらのデータ・ソースを信頼度順にランク付けするとします。最も信頼度の高い値がマージ済レコードで使用されます。このマージ・ルールは次のようになります。

INGRP1.SOURCE = 'Order Entry'

名前

ルールの任意名。Oracle Warehouse Builderでは、ランク・マージ・ルールごとにRULE_0などのデフォルト名が作成されます。これらの名前は意味のある名前で置き換えることができます。

位置

実行順序。行ヘッダーをクリックし、その行を新規の位置にドラッグすると、ルールの位置を変更できます。行ヘッダーは、「名前」列の左側にあるボックスです。

式のレコードの選択

ランキングに使用されるカスタムSQL式。省略記号ボタンをクリックすると、「ランク・ルール・エディタ」(「式ビルダー」ユーザー・インタフェース)が表示されます。このエディタを使用してランキング式を作成します。

「順序」マージ・ルール

「順序」ルールでは、順序の次の値が使用されます。

順序の次の値

ルールで使用される順序を識別します。

「順序」リスト

現行のプロジェクトで定義済の順序がすべて表示されます。

順序の選択

ルールの順序がリストで現在選択されている順序に設定されます。

「最小/最大」および「最小/最大レコード」マージ・ルール

「最小/最大」および「最小/最大レコード」ルールを使用して、レコード内の別の属性値のサイズに基づいて属性値を選択します。

たとえば、最大の「姓」値を含む各bin内のレコードから「名」値を選択できます。

属性の選択

すべての入力属性が表示されます。値で順序を指定する属性を選択します。

属性リレーション

選択した属性の値を選択するための特性を選択します。

- 最小: 最小の数値または最も古い日付値が選択されます。

- 最大: 最大の数値または最も新しい日付値が選択されます。

- 最短: 最も短い文字値が選択されます。

- 最長: 最も長い文字値が選択されます。

「コピー」マージ・ルール

「コピー」ルールでは、別のマージ済属性の値を使用します。

マージ済属性

マージ属性ページで選択した他のマージ済属性が表示されます。

「カスタム」および「カスタム・レコード」マージ・ルール

「カスタム」および「カスタム・レコード」ルールでは、レコードのマージ用に提供したPL/SQLコードが使用されます。次のコードに、レコード1のTAXID属性の値を戻す「カスタム」マージ・ルールの例を示します。

BEGIN
RETURN M_MATCHES(1)."TAXID";
END;

次のコードは、レコード1のレコードを戻す「カスタム・レコード」マージ・ルールの例です。

BEGIN
RETURN M_MATCHES(1);
END;

マージ・ルール詳細

カスタム・アルゴリズムを構成するPL/SQLコードが表示されます。このフィールドでコードを直接編集するか、カスタム・マージ・ルール・エディタを使用できます。

編集

カスタム・マージ・ルール・エディタが表示されます。

Match-Merge演算子による重複ソース・レコードの削除

Match-Merge演算子を使用すると、データ・ソース内の一致レコードを識別し、単一のレコードにマージできます。

Match-Merge演算子には、1つの入力グループと2つの出力グループ(MergeグループおよびXrefグループ)があります。ソース・データは入力グループにマップされます。Mergeグループには、プロセスの照合が完了した後にマージしたレコードが含まれます。Xrefグループでは、マージ・プロセスのレコードが提供されます。入力グループのすべてのレコードには、Xrefグループ内に対応するレコードがあります。このレコードには元の属性値およびマージ済属性が含まれる場合があります。

Match-Merge演算子には、順序付けされたレコード・ストリームが入力として使用されます。このストリームから一致binが構成されます。各一致binから、一致したセットが構成されます。一致した各セットから、マージ済レコードが作成されます。最初の問合せには、一致bin属性で構成されたORDER BY句が含まれます。

Match-Merge演算子の使用手順

Match-Merge演算子を使用してソース・データを照合およびマージする手順は、次のとおりです。

1. ソース・データを表す演算子およびマージしたデータを表す演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
たとえば、ソース・データがある表に格納され、マージしたデータが別の表に格納される場合、その表にバインドされる2つの表演算子をキャンバスにドラッグ・アンド・ドロップします。

2. Match-Merge演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
Match-Mergeウィザードが表示されます。

3. 名前・ページの「名前」フィールドには、その演算子のデフォルト名が含まれます。この名前を変更するか、デフォルト名を使用できます。
その演算子の説明を入力できます(オプション)。

4. グループ・ページで、グループ名を変更したり、グループの説明を追加できます。
このページには、次の3つのグループが含まれます。

- INGRP1: 入力属性が含まれます。

- MERGE: マージ済レコードが含まれます(通常INGRP1よりレコードが少ないことを意味します)。

- XREF: 元のデータ・セットおよびマージ済データ・セットのリンクが含まれます。マージの実行時に使用される追跡メカニズムです。

5. 接続の入力ページで、照合およびマージする属性を「使用可能な属性」セクションから「マップ済属性」セクションに移動します。「次へ」をクリックします。
このページの「使用可能な属性」セクションで、各演算子のノードがキャンバスに表示されます。ノードを展開して演算子に含まれる属性を表示し、属性を選択して、選択した属性をシャトル矢印を使用して「マップ済属性」セクションに移動します。

注意:
Match-Merge演算子には、順序付けされた入力データ・セットが必要です。複数の演算子のソース・データがある場合、集合演算演算子を使用してデータを結合し、順序付けされたデータ・セットを取得します。

6. 入力属性ページで、属性のデータ型と長さを確認します。
通常、このウィザードを使用する場合は、これらの値をすべて変更する必要はありません。Oracle Warehouse Builderは、出力属性に基づいてこれらの値を移入します。

7. マージ出力ページで、入力属性からマージする属性を選択します。
これらの属性は、Merge出力グループ(整備されたグループ)に表示されます。このグループの属性に、入力属性の名前およびプロパティが保持されます。

8. 相互参照出力ページで、XREF出力グループの属性を選択します。
「ソース属性」セクションには、マージ出力ページで選択したすべての入力属性およびマージ済属性が含まれます。Mergeグループの属性には、接頭辞MM_が付きます。他の属性では、変更されていない属性値を定義します。Mergeグループから属性を1つ以上選択して、入力グループおよびMergeグループをリンクします。

9. 一致binページで、一致bin属性を指定します。これらの属性は、ソース・データを一致binにグループ化する場合に使用されます。
最初のデプロイメントの後に、すべてのレコードまたは新しいレコードのみを照合またはマージするかどうかを選択できます。新しいレコードのみを一致およびマージさせるには「新規レコードのみ一致」を選択します。

新しいレコードの識別条件を指定する必要があります。Match-Merge演算子は、新しいレコードを次の方法で処理します。

- 一致binに新しいレコードが含まれないかぎり、一致bin内のレコードの照合は実行されません。

- 古いレコード同士は比較されません。

- 一致するレコード・セットは、新しいレコードが含まれないかぎり、マージ・プロセスに表示されません。

- 古いレコードは、新しいレコードと一致しないかぎり、Xref出力には表示されません。

一致bin属性および一致binの詳細は、「照合およびマージ・プロセスの概要」を参照してください。

10. 一致ルールの定義ページで、ソース・データの照合に使用する一致ルールを定義します。
一致ルールはアクティブまたは受動の可能性があります。受動一致ルールは生成されますが、自動的には起動しません。1つ以上のアクティブ一致ルールを定義する必要があります。

一致ルール、定義できる一致ルールのタイプおよび一致ルールを定義するために使用する手順の詳細は、「一致ルール」を参照してください。

11. マージ・ルール・ページで、ソース・データから作成した、一致するレコードのセットをマージする場合に使用するルールを定義します。
レコード内の各属性に対してまたはレコード全体に対して一致ルールを定義できます。Oracle Warehouse Builderでは、様々なタイプのマージ・ルールを使用できます。

一致ルールのタイプおよび一致ルールを作成する手順の詳細は、「マージ・ルール」を参照してください。

12. サマリー・ページで、選択した項目を確認します。「戻る」をクリックして、選択した項目を変更します。「次へ」をクリックして、Match-Merge演算子の作成を完了します。

13. Match-Merge演算子のMatchグループを、マージ済データを格納する演算子の入力グループにマッピングします。

Match-Merge演算子を含むマッピングの設計上の考慮事項

マッピングの設計時には、次の考慮事項に注意してください。

- オペレーティング・モード: Match-Merge演算子を含むマッピングを実行できるのは、セット・ベース・モードの場合のみです。演算子は、セット・ベースまたは行ベースの入力を受け入れて、セット・ベースまたは行ベースの出力を生成できます。SQLはセット・ベースのため、一連のレコードが処理されます。PL/SQLは行ベースのため、各行が個別に処理されます。Match-Merge演算子は、レコードの照合時に各行をソース内の後続行と比較して行ベースのコードのみを生成します。

- Match-Merge前のSQLベースの演算子: Match-Merge演算子はセット・ベースのSQL入力を受け入れますが、生成するのは行ベースのPL/SQL出力のみです。SQLコードのみを生成する演算子の場合は、いずれもその前にMatch-Merge演算子を使用する必要があります。たとえば、ジョイナ演算子、参照演算子および集合演算子はセット・ベースのSQL出力を生成するため、前にMatch-Merge演算子を使用する必要があります。セット・ベースの演算子がMatch-Merge演算子よりも後にあるマッピングは無効です。セット・ベースのSQL演算子を使用してMatch-Mergeマッピングの出力を処理する場合は、中間表の出力をステージングします。

- PL/SQL入力: Match-Merge演算子には、他のMatch-Merge演算子以外からのSQL入力が必要です。「例: ハウスホールディング用の2つのMatch-Merge演算子の使用」を参照してください。Match-Merge演算子の前に、PL/SQL出力のみを生成する演算子を使用するには、最初にデータをステージング表にロードする必要があります。

- Match-Merge演算子からのデータの詳細化: データを大幅に詳細化するには、あるMatch-Merge演算子からのXREF出力を別のMatch-Merge演算子にマップします。このシナリオは、Match-Merge演算子のSQL入力ルールに対する1つの例外です。追加の設計要素を使用すると、第2のMatch-Merge演算子はPL/SQLを受け入れます。詳細は、「例: ハウスホールディング用の2つのMatch-Merge演算子の使用」を参照してください。

Match-Merge演算子の使用上の制約

- Match-MergeプロセスではPL/SQLのみが生成されるため、Match-Merge演算子のMergeまたはXREF出力グループを、ソーター演算子または他のMatch-Merge演算子などのSQLのみの演算子に直接マッピングできません。

- Match-Merge演算子ではSQL入力のみが受け入れられるため、Name and Address演算子の出力をMatch-Merge演算子に直接マッピングできません。ステージング表を使用する必要があります。

例: ハウスホールディング用の2つのMatch-Merge演算子の使用

ほとんどのMatch-Merge操作は、1つのMatch-Merge演算子で実行できます。ただし、出力を2つの異なるターゲットに送る場合は、2つのMatch-Merge演算子の連続使用が必要です。

たとえば、名前とアドレスのデータをハウスホールドする際に、最初にアドレス・データ、次に名前データという順序によるマージが必要です。MERGE出力をターゲット表にマップすると仮定すれば、XREFグループをもう1つのMatch-Merge演算子にマップできます。

注意:
XREFグループをステージング表にマップすることもできますが、この方法ではパフォーマンスが大幅に低下する可能性があります。Match-Merge機能は、この項で説明するように、2つのMatch-Merge演算子を使用して最大のパフォーマンスに対応できるように設計されています。

図23-3は、2つのMatch-Merge演算子を使用するマッピングを示しています。MMからのXREFグループはMM_1に直接マップされています。このマッピングを有効にするには、第1のXREFグループ用に生成された一致IDを、第2のMatch-Merge演算子の一致binルールとして割り当てる必要があります。

図23-3 データのハウスホールディング: 第2のMatch-Merge演算子にマージされたXREFグループ

「図23-3 データのハウスホールディング: 第2のMatch-Merge演算子にマージされたXREFグループ」の説明

注意:
ハウスホールディングに関する問題のより完全なソリューションでは、照合とマージを実行して、顧客をハウスホールドにグループ分けする前に個別のレコードに名前およびアドレスのクレンジングを適用する場合があります。

第IV部

参照

構成は次のとおりです。

- 第24章「マッピングおよびプロセス・フローのリファレンス」

- 第25章「ソース演算子およびターゲット演算子」

- 第26章「データ・フロー演算子」

- 第27章「プロセス・フローでのアクティビティ」

- 第28章「Oracle Warehouse Builder変換リファレンス」

- 第29章「Oracle Warehouse Builderコード・テンプレート・ツールおよび置換メソッド」

24 マッピングおよびプロセス・フローのリファレンス

この章の内容は次のとおりです。

- ETLオブジェクトの構成

- 「マッピング構成のリファレンス」

- プロセス・フロー構成のリファレンス

ETLオブジェクトの構成

設計フェーズの前半では、Oracle Warehouse Builderの設計オブジェクトを使用してターゲット・システムの論理モデルを定義しました。この章では、マッピングとプロセス・フローに物理プロパティを割り当てるためのリファレンス情報を提供します。構成パラメータは、ユーザー・インタフェースに表示される順序で示されています。

この項の内容は次のとおりです。

- 「マッピング構成のリファレンス」

- プロセス・フロー構成のリファレンス

マッピング構成のリファレンス

マッピングを適切に構成すると、抽出、変換およびロード(ETL)のパフォーマンスを向上させることができます。そのためには、この項を参考にして、データのロード方法とコードの最適化方法を制御する構成パラメータを設定します。

マッピングの構成パラメータは、次のカテゴリに分類されています。

- ランタイム・パラメータ

- コード生成オプション

これらのパラメータの他に、「ソースとターゲットの参照」の説明に従ってソース演算子およびターゲット演算子を構成できます。その他にも「コード・テンプレート(CT)マッピングを含むマッピングの構成」の説明に従ってCTマッピングに対して構成できるパラメータがあります。

ランタイム・パラメータ

マッピングのランタイム・パラメータの構成時に、マッピングのデフォルト動作を設定します。これらのパラメータは、コントロール・センター、プロセス・フロー・エディタまたはOracle Enterprise Managerでマッピングを実行する際に上書きできます。

「ランタイム・パラメータ」には、次のパラメータがあります。

- 表分析のサンプリング率

- バルク・サイズ

- 再開タスクのチャンク実行

- 再開のチャンク強制

- 再試行するチャンク回数

- チャンク・パラレル・レベル

- コミット頻度

- デフォルト監査レベル

- デフォルト・オペレーティング・モード

- デフォルト・パージ・グループ

- エラーの最大数

- チャンクを処理するスレッド数

表分析のサンプリング率

「表分析文」オプションを選択すると、Oracle Warehouse Builderではターゲット表の統計の収集時期が予想されます。データがターゲット表にロードされた後、各ターゲット表についてコストベース最適化に使用された統計が収集されます。このパラメータは、各ターゲット表でこの分析に使用された行の割合に設定できます。

バルク・サイズ

「バルク・サイズ」を使用して、PL/SQLバルク処理の各バルクの行数を指定します。Oracle Warehouse Builderで「バルク・サイズ」パラメータが使用されるのは、「バルク処理コード」オプションを選択し、オペレーティング・モードを「行ベース」に設定している場合のみです。詳細は、Oracle PL/SQLリファレンス・ガイドを参照してください。

チャンク実行再開タスク

このパラメータはパラレル・チャンク化タスクを再開するかどうかを指定します。新しいパラレル・チャンク化タスクを実行するには、「False」を選択します。パラレル・チャンク化タスクを再開するには、「True」を選択します。実行時に、「入力パラメータ」ダイアログ・ボックスを使用してこのパラメータに設定した値を上書きできます。

チャンク適用の再開

このパラメータは、パラレル・チャンク化タスクがエラーによって停止されていた場合、このタスクを再開するかどうかを指定します。このパラメータを「True」に設定すると、Oracle Warehouse Builderでパラレル・チャンク化タスクを再開します。実行時に、「入力パラメータ」ダイアログ・ボックスを使用してこのパラメータに設定した値を上書きできます。

チャンクの再試行回数

このパラメータでは、失敗したパラレル・チャンク化タスクの再開の試行回数を指定します。試行回数を指定する数値を入力します。実行時に、「入力パラメータ」ダイアログ・ボックスを使用してこのパラメータに設定した値を上書きできます。

チャンク・パラレル・レベル

このパラメータでは、チャンクのパラレル処理に使用する必要のあるスレッド数を指定します。このパラメータの数値を入力します。このパラメータをNULLまたはゼロに設定するとマッピングが連続して実行されます。

実行時に、「入力パラメータ」ダイアログ・ボックスを使用してこのパラメータに設定した値を上書きできます。

コミット頻度

コミット頻度は、非バルク・モードのマッピングにのみ適用されます。バルク・モードのマッピングは、バルク・サイズに従ってコミットされます。

「デフォルト・オペレーティング・モード」を「行ベース」に設定し、「バルク処理コード」の選択を解除した場合には、「コミット頻度」パラメータを使用して、コミット操作前に処理する行数を指定します。このパラメータで指定した行数を処理すると、Oracle Warehouse Builderがデータをデータベースにコミットします。

「バルク処理コード」オプションを選択した場合は、「コミット頻度」を「バルク・サイズ」と同じ値に設定します。2つの値が異なる場合は、「バルク・サイズ」が「コミット頻度」に優先し、コミット操作はバルク・サイズごとに暗黙的に実行されます。

デフォルト監査レベル

「デフォルト監査レベル」を使用して、パッケージの実行時に使用する監査レベルを指定します。監査レベルは、パッケージの実行時にランタイム・スキーマ内で取得される監査情報の量を示します。監査レベルの設定は、次のとおりです。

- なし: 実行時に監査情報は記録されません。

- 統計: 実行時に統計監査情報が記録されます。

- エラーの詳細: 実行時にエラー情報と統計監査情報が記録されます。

- 完了: 実行時にすべての監査情報が記録されます。監査レベルを「完了」に設定してマッピングを実行すると、大量の診断データが生成され、割当済の表領域がすぐにいっぱいになってしまう可能性があります。

デフォルト・オペレーティング・モード

PL/SQL実装を使用したマッピングについて、デフォルト・オペレーティング・モードを選択します。選択したオペレーティング・モードは、マッピングのパフォーマンスに大きく影響する可能性があります。オペレーティング・モードがパフォーマンスに及ぼす影響の詳細は、「セット・ベースと行ベースのオペレーティング・モードの比較」を参照してください。次のオペレーティング・モードから1つ選択できます。

- セット・ベース: すべてのデータを挿入し、そのデータに対してすべての操作を実行するSQL文が1つ生成されます。これにより、データ操作言語(DML)操作が高速になります。セット・ベース・モードは最適なパフォーマンスを提供しますが、生成される監査詳細は最小限となります。

- 行ベース: データを1行ずつ処理する文が生成されます。SELECT文はSQLカーソルです。以降の文はすべてPL/SQLです。データが1行ずつ処理されるため、行ベースのオペレーティング・モードではパフォーマンスが最低ですが、監査は最も詳細になります。

- 行ベース(ターゲットのみ): CURSOR SELECT文が生成され、カーソルにできるかぎり多数の操作が追加されます。ターゲットごとにPL/SQL INSERT文が生成され、各行がターゲットに個別に挿入されます。

- セット・ベースから行ベースへのフェイルオーバー: マッピングがセット・ベース・モードで実行されます。エラーが発生すると実行に失敗し、マッピングが行ベース・モードで再開されます。このモードはテスト環境で使用する場合にのみお薦めします。本番環境での使用はお薦めしません。

- セット・ベースから行ベース(ターゲットのみ)へのフェイルオーバー: 最初にセット・ベース・モードでマッピングが実行されます。エラーが発生すると、実行が行ベース(ターゲットのみ)モードにフェイルオーバーします。このモードはテスト環境で使用する場合にのみお薦めします。本番環境での使用はお薦めしません。

注意:
リリース11.2.0.3以降は、セット・ベースから行ベースへのフェイルオーバー機能は非推奨です。

デフォルト・パージ・グループ

「デフォルト・パージ・グループ」はパッケージの実行時に使用されます。ランタイム・スキーマ内の各監査レコードは、指定したパージ・グループに割り当てられます。

エラーの最大数

「エラーの最大数」を使用して、パッケージの実行時の最大許容エラー数を指定します。パッケージの実行は、エラー数が指定の値を超えた時点で終了します。

「エラーの最大数」パラメータは実行するマッピング全体のエラー数に適用します。次の場合について検討します。

- エラーの最大数が50に設定され、マッピングがセット・ベース・モードで実行されます。データは正常にロードされませんでした。セット・ベースのロードDML文の失敗からエラーが1つ発生しました。マッピングのリターン・ステータスは警告です。

- エラーの最大数が50に設定され、マッピングがセット・ベース・モードで実行され、「制約の有効化」パラメータは「False」に設定されます。データは正常にロードされましたが、制約を再有効化するときに60の制約違反エラーが発生しました。マッピングのリターン・ステータスはエラーです。

- エラーの最大数が50に設定され、マッピングが行ベース・モードで実行されます。データの一部は正常にロードされましたが、多くのエラーが発生しました。マッピングはエラーが50回目に達した後終了します。マッピングのリターン・ステータスはエラーです。

- エラーの最大数が50に設定され、セット・ベースから行ベースへのフェイルオーバー・モードでマッピングが実行されます。セット・ベース・モードでデータが正しくロードされませんでした。セット・ベースのロードDML文の失敗からエラーが1つ発生しました。データの一部は行ベース・モードで正常にロードされましたが、多くのエラーが発生しました。セット・ベース・モードでカウントされたエラーが1つあるため、マッピングは行ベース・モードでエラーが49回目に達した後終了します。マッピングのリターン・ステータスはエラーです。

チャンクを処理するスレッドの数

「チャンクを処理するスレッドの数」パラメータはソース・データの処理に使用するスレッド数を表します。このパラメータをゼロに設定するとマッピングがパラレルで実行されないことを意味します。

コード生成オプション

「コード生成オプション」には、次のオプションがあります。

- ANSI SQL構文

- コミット制御

- 表分析文

- パラレルDMLの有効化

- 最適化コード

- AUTHID

- ターゲット・ロード順序付けを使用

- エラー・トリガー

- バルク処理コード

- 生成モード

ANSI SQL構文

このオプションを選択すると、ANSI SQL構文が生成されます。このオプションを選択しなければ、Oracle SQL構文が生成されます。

コミット制御

自動: これはデフォルト設定です。Oracle Warehouse Builderでは、マッピング設計に基づいてデータがロードされ、自動的にコミットされます。この設定は、すべてのマッピング・タイプに有効です。1つのマッピングに複数のターゲットが存在する場合、データはターゲット単位の処理(INSERT、UPDATE、DELETE)に基づいてコミットされます。

自動相関: 自動相関コミットは特殊なタイプの自動コミットであり、複数のターゲットを持つPL/SQLマッピングにのみ適用されます。Oracle Warehouse Builderでは、すべてのターゲットが集合的に考慮され、データはすべてのターゲット間で均一にコミットまたはロールバックされます。

マッピング動作は、選択したオペレーティング・モードに応じて異なります。自動相関コミットの詳細は、「単一のソースから複数ターゲットへのデータのコミット」を参照してください。

手動: 手動コミット制御を選択するのは、複雑なビジネス・ロジックを示したりデータのコミット前に検証を実行する必要のあるPL/SQLマッピングの場合です。

手動コミットの指定には、次のオプションが用意されています。

- 「マッピングへのコミット・ロジックの埋込み」の説明に従って、マッピング内のコミット・ロジックを定義できます。

- 「マッピング設計に依存しないデータのコミット」の説明に従って、プロセス・フローまたはSQL*Plusセッションでデータをコミットする方法もあります。

コミットなし: このオプションを設定すると、Oracle Warehouse Builderマッピングはマッピングの実行中にコミットを発行しません。

表分析文

このオプションを選択すると、ロード後のターゲット表が元のサイズの2倍または半分の場合に、ターゲットのロード後にターゲット表を分析するためのコードが生成されます。

ターゲット表がマッピングと同じスキーマにない場合に、その表を分析するには、マッピングを所有するスキーマにANALYZE ANYを付与する必要があります。

パラレルDMLの有効化

このオプションを選択すると、実行時にパラレルDMLが有効化されます。DML文をパラレルに実行することで、データ・ウェアハウスに存在する大規模データベースにおけるデータ集中型操作のレスポンス時間が短縮されます。

最適化コード

このオプションを選択すると、スプリッタ演算子が含まれていて複数のターゲット表に挿入するマッピングのパフォーマンスが向上します。このオプションを選択してOracle9i以降でマッピングを実行すると、SQL文が1つ(multi_table_insert)生成されます。このSQL文は、同一のソース・データ・セットに基づいてデータを複数の表に挿入します。

複数表挿入が実行されるのは、このオプションが選択されていて、Oracleターゲット・モジュール・データベースがOracle9i以降の場合のみです。スプリッタ演算子が含まれていて、スプリッタとターゲットの間にアグリゲータ演算子やジョイナ演算子などのアクティブな演算子が存在しないセット・ベース・モードのマッピングに対してのみ、複数表挿入が実行されます。また、複数挿入は、表に対してのみ使用できます。ビュー、マテリアライズド・ビュー、ディメンションまたはキューブには使用できません。各ターゲット表の列数は999より少なくなるようにする必要があります。複数のターゲットを使用するマッピングの作成手順の詳細は、「例: 複数のターゲットを使用するマッピングの作成」を参照してください。

行ベース・モードで実行されるマッピングまたはOracle8iサーバーで実行されるマッピングに対してこのオプションは選択しません。また、個別のターゲットの監査情報が要求された場合もこのオプションを選択しません。

このオプションを選択した場合、すべてのターゲットについてSELECTとINSERTの合計カウントが1つ戻されます。

AUTHID

コードの生成時に使用するAUTHIDオプションを指定します。オプションは「Current_User」、「Definer」または「None」のいずれかを選択できます。

ターゲット・ロード順序付けを使用

複数のターゲットを持つPL/SQLマッピングの場合は、ターゲットのロード順序を定義するコードを生成できます。この順序は、マッピングの複数のターゲット間に親子関係が存在する場合に重要になります。このオプションはデフォルトで選択されます。

エラー・トリガー

このフィールドで、エラー・トリガー・プロシージャの名前を指定します。

バルク処理コード

この構成パラメータを選択し、オペレーティング・モードを「行ベース」に設定すると、Oracle Warehouse BuilderでPL/SQLバルク処理コードが生成されます。PL/SQLバルク処理では、行を1行ずつではなくバルク単位で収集、処理して書き込むことにより、行ベースETLのパフォーマンスが向上します。各バルクのサイズは、構成パラメータ「バルク・サイズ」により決定されます。最適なパフォーマンスが得られるのはセット・ベース・モードで、続いてバルク処理、最後が行ベース・モードです。詳細は、『Oracle PL/SQLリファレンス・ガイド』を参照してください。

生成モード

デフォルトでは、マッピング用のコードの生成時に、可能な全オペレーティング・モードのためのコードが生成されます。つまり、「生成モード」が「すべてのオペレーティング・モード」に設定されている場合は、「デフォルト・オペレーティング・モード」を「セット・ベース」に設定しても、可能な全オペレーティング・モードのためのコードが生成されます。これにより、実行時にテストの目的でオペレーティング・モードを切り替えることができます。

チャンク化オプション

チャンク・オプション・セクションのパラメータでは、PL/SQLマッピング用のパラレル・チャンクを構成できます。

チャンク・オプションの詳細ノードを展開して、次のパラレル・チャンク・オプションを指定します。

- チャンク化方法

- 列番号ごとのチャンク
「NUMBER列でチャンク化」ノードを展開し、パラメータ「チャンク表」、「チャンク列」および「チャンク・サイズ」を設定します。

- ROWIDごとのチャンク
「ROWIDでチャンク化」ノードを展開し、パラメータ「チャンク表」、「チャンク・タイプ」および「チャンク・サイズ」を設定します。

- SQL文ごとのチャンク
「SQL文でチャンク化」ノードを展開し、パラメータ「SQL文」および「SQL文のチャンク・タイプ」を設定します。

チャンク化の方法

このパラメータを使用して、パラレル・チャンク化に使用する方法を選択します。このパラメータに設定できるオプションは、次のとおりです。

- なし: パラレル・チャンク化を実行しません。

- NUMBER列でチャンク化: ソース・データの数値列をチャンクに分割するベースとして使用します。このオプションを選択すると、「NUMBER列でチャンク化」ノード下にリストされているパラメータを設定する必要があります。

- ROWIDでチャンク化: ソース・データの列のROWIDに応じてソース行をチャンクに分割します。このオプションを選択すると、「ROWIDでチャンク化」ノードの下にリストされているパラメータを設定する必要があります。

- SQL文でチャンク化: SQL文を使用してソース・データをチャンクに分割します。このオプションを選択すると、「SQL文でチャンク化」ノードの下にリストされているパラメータを設定する必要があります。

チャンク表

チャンク表を使用して、パラレル・データ・チャンク化を実行するソース表を選択します。

チャンク列

ソース表の数値列を使用してパラレルちゃんかを実行する場合は「チャンク列」パラメータを適用できます。このパラメータを使用して、パラレル・チャンク化を実行する際に基づくソース列を選択します。

チャンク・サイズ

「チャンク・サイズ」を使用して、各チャンクの範囲を指定します。

チャンク・タイプ

チャンク・タイプを使用して、ソース・データをソース列のROWIDに基づいてチャンクに分割する方法を分割します。選択できるオプションは「データ・ブロック別」および「行別」です。

SQL文

ソース・データをより小さなチャンクに分割するうえで使用する「SQL文」を指定します。

SQL文のチャンク・タイプ

このパラメータでは、「SQL文」を使用して指定するSQL文でソース・データをチャンクに分割する方法を指定します。次のいずれかのオプションを選択します。

- NUMBER_COLUMN: ソース・データの数値列を使用してデータをチャンクに分割します。

- ROWID: データを列のROWIDを使用してチャンクに分割します。

SCDの更新

「SCDの更新」セクションのパラメータでは、PL/SQLマッピング用のシリアル・チャンク化を構成できます。「SCDの更新」オプションには「チャンク化方針」というパラメータがあります。

チャンク化方針

「チャンク化方針」パラメータを使用するとシリアル・チャンク化を実行できます。「シリアル」を選択すると、ソース・データに対するシリアル・チャンク化を実行できます。PL/SQLマッピングのシリアル・チャンク化を無効にするには、「なし」を選択します。

ソースとターゲットのリファレンス

表、ビューおよびキューブなど、リレーショナルおよびディメンショナルなソースとターゲットの場合、Oracle Warehouse Builderでは演算子ごとに次の一連のプロパティが表示されます。

- LCR APIを使用

- データベース・リンク

- ロケーション

- 競合解消方法

- スキーマ

- パーティション交換ロード

- ヒント

- 制約管理

- SQL*Loaderパラメータ

LCR APIを使用

デフォルトではこの設定が有効になっており、LCR APIが使用可能な場合はLCR APIを使用してDMLが実行されます。LCR APIが使用できない場合は、標準的なDMLが使用されます。

データベース・リンク

このパラメータは、下位互換性のためにのみ維持されています。

以前のリリースでは、データベース・リンクをリストから名前で選択できました。スキーマとデータベース・リンクについてソース演算子は構成できましたが、ターゲットを構成できるのはスキーマの場合のみです。ソースとターゲットを異なるスキーマに配置できますが、両者は同じデータベース・インスタンスに存在する必要があります。

ロケーション

この設定では、ソース演算子またはターゲット演算子へのアクセスに使用するロケーションを指定します。

競合解決

この設定を有効化すると、LCR APIを使用したDML操作中に生じる可能性のある競合を検出して解決できます。

スキーマ

このパラメータは、下位互換性のためにのみ維持されています。

以前のリリースでは、「スキーマ」フィールドをクリックして名前を入力すると、マッピングを特定のスキーマにリンクできました。

パーティション交換ロード

このセクションの設定を使用して、ターゲット表へのパーティション交換ロード(PEL)を有効化します。それぞれの設定に固有の情報と、PEL用のマッピングの設計方針は、「パーティション交換ロードを使用したパフォーマンスの向上」を参照してください。

ヒント

ロードまたは抽出のヒントを定義します。アプリケーション開発者は、データを処理する方法を絶えず発展させていくものです。たとえば、開発者は、一連の表をどのような順序で結合すると問合せの実行速度が大幅に向上するかを把握しています。Oracle Warehouse Builderでは、このような処理方法を、生成済SQLコードのパッケージにSQLオプティマイザ・ヒントとして組み込むことができます。

「ヒント」ダイアログ・ボックスからヒントを選択する場合、ヒントは「既存のヒント」フィールドに表示されます。付加テキスト列に適切な付加テキストを入力します。エディタによってマッピング定義にヒントがそのまま追加されます。このテキストの検証やチェックは行われません。

INSERTまたはUPDATEモードでデータをロードするマッピングに対して、ロードのヒントを定義できます。デフォルトでは、APPENDやPARALLELなどの一般に使用されるヒントが追加されます。INSERTを除くすべてのロード・モードでは、APPENDヒントは効果がないため、削除することも可能です。

ヒントはマッピング構成時に表示できます。ヒントを構成する手順は次のとおりです。

1. プロジェクト・ナビゲータで、「データベース」フォルダ、続いて必要なモジュールを開きます。

2. モジュールで、「マッピング」ノードを開きます。

3. 必要なマッピングを右クリックして、「構成」を選択します。
「構成」タブにマッピングの構成パラメータが表示されます。

4. 「構成」タブで、必要な演算子タイプ、次に必要な演算子を開きます。

5. ヒント・ノードを展開し、ヒント・タイプの右にある省略記号ボタンをクリックしてヒントを入力します。

オプティマイザ・ヒントとその使用方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

制約管理

次の制約管理パラメータを構成します。

- 例外表名: 再有効化中に外部キー制約に違反したすべての行が、指定の例外表に記録されます。ロード前後には、この表の自動切捨ては実行されません。制約違反はランタイム監査エラー表にもロードされます。
SQLおよびPL/SQLロードの場合、例外表を指定しなければ、無効な行はデフォルト表領域にある一時表にロードされてから、ランタイム監査エラー表にロードされます。表はロード後に削除されます。

SQL*Loaderのダイレクト・パス・ロードを使用している場合は、例外表を指定する必要があります。詳細は、SQL*Loaderのマニュアルを参照してください。

- 制約の有効化: このオプションを「False」に設定すると、ターゲット表の制約を無効化し、データをロードし、制約を再有効化します。再度有効化する間に見つかった制約違反はランタイム監査エラー表で識別され、指定した場合は例外表にロードされます。このオプションを「True」に設定すると、Oracle Warehouse Builderは制約を管理せず、ソースのデータをターゲット表にロードします。
制約を無効化すると、制約チェックが実行されないためロード速度が向上します。ただし、再有効化中にいずれかの行で例外が発生すると、その行に対する制約は未検証状態のままになります。この種の行は、そのROWIDを使用してランタイム監査エラー表に記録されます。エラー行を手動で検査し、必要な訂正処理を行う必要があります。

制約の有効化および無効化はターゲット表に対して行われます。「制約の有効化」パラメータを「True」に設定すると、ターゲット表の制約はデータをロードする前に無効化され、データをロードした後に再有効化されます。制約が再有効化されると、表全体がスキャンされ、制約に違反する行が例外表に記録されます。これらの行は監査ブラウザに制約違反エラーとしてレポートされます。

ターゲット表が空で、「制約の有効化」パラメータが「True」に設定されているシナリオについて考えます。最初に、ソース表には10行あり、そのうち2行がターゲット表の制約に違反しているとします。マッピングを実行すると、まずターゲット表の制約が無効化されます。次に、データ(10行すべて)がロードされてからターゲット表の制約が再有効化されます。制約が再有効化されると、制約に違反する2行が例外表に記録されます。監査ブラウザによって、2つの制約違反エラーがあることがレポートされます。

その後、ターゲット表の制約に違反する5行を含む20行から構成される新規ソース表を使用して、マッピングが再度実行されます。データ(20行すべて)がターゲット表にロードされると、ターゲット表は30行になります。ターゲット表の制約が再有効化されると、7行が例外表に記録されて制約違反エラーとして監査ブラウザでレポートされます。この7行は、新規にレポートされた5行と、最初にレポートされた2行から構成されます。これは、Oracle Warehouse Builderがターゲット表全体をスキャンするためです。30行すべてがチェックされるため、最初のデータ・ロードの違反ありの2行も含まれます。Oracle Warehouse Builderでは、マッピングが2回目に実行されたときに追加された新規の行のみの識別はできません。したがって、データをロードするたびに事前にターゲット表を切り捨てないかぎり、以前のデータ・ロードの制約違反が必ず毎回レポートされます。

「制約の有効化」を「True」に設定するには、次の制限を伴います。

- 「セット・ベース」オペレーティング・モードの場合、ターゲットの外部キー制約がロード前に無効化され、ロード後に再有効化されます。このパラメータは、ターゲット表を参照する他の表の外部キー制約には影響しません。ロードにSQLまたはPL/SQLパッケージではなくSQL*Loaderが使用される場合は、.ctlファイルに再有効化句が追加されます。

- オペレーティング・モードが「セット・ベースから行ベースへのフェイルオーバー」および「セット・ベースから行ベース(ターゲットのみ)へのフェイルオーバー」の場合、選択解除に設定すると、ターゲットの外部キー制約がロード前に無効化され、セット・ベース・モードによるロードに成功した場合は再有効化されます。この設定は、他の表を参照している外部キーには影響しません。ロードが行ベースにフェイルオーバーした場合は、行ベース・モードでロードが繰り返され、すべての制約は有効化されたままになります。

注意:
再有効化中に制約違反が作成されると、ロードはセット・ベース・モードから行ベース・モードにフェイルオーバーしません。

- 「行ベース」または「行ベース(ターゲットのみ)」オペレーティング・モードの場合は、このオプションが選択されなくても、すべての外部キー制約は有効化されたままです。

- TRUNCATE/INSERT DMLタイプの場合は、選択解除に設定すると、デフォルト・オペレーティング・モードに関係なく、ターゲット表を参照する他の表の外部キー制約がロード前に無効化されてロード後に再有効化されます。

SQL*Loaderパラメータ

フラット・ファイルからの入力を含む表演算子を使用する場合は、次の「SQL*Loaderパラメータ」プロパティを構成する必要があります。

- パーティション名: ロードがパーティション・レベルであることを示します。パーティション・レベル・ロードでは、表で指定した1つ以上のパーティションまたはサブパーティションをロードできます。完全データベース、ユーザーおよびトランスポータブル表領域の各モードによるロードでは、パーティション・レベル・ロードはサポートされていません。増分ロード(増分、累積および完了)を実行できるのは完全データベース・モードの場合のみで、増分ロードにパーティション・レベル・ロードは指定できません。どのモードでも、パーティション化されたデータは、パーティションまたはサブパーティションを選択的にロードできるような形式でロードされます。

- ソート済索引句: データの事前ソートに使用される索引を識別します。この句を使用できるのは、ダイレクト・パス・ロードの場合のみです。ある索引用にソートされたデータの順序は、通常、他の索引には適切でないため、SORTED INDEXES句には索引を1つのみ指定します。複数の索引でデータが同じ順序の場合は、すべての索引を指定できます。SORTED INDEXES句にリストされた索引はすべて、ダイレクト・パス・ロードの開始前に作成しておく必要があります。

- 単一行: システムのメモリーに制限がある場合や、大きい表に少数のレコードをロードする場合に、ダイレクト・パス・ロード中にAPPENDとともに使用することを意図しています。このオプションを使用すると、各索引エントリが、一度に1レコードずつ直接索引に挿入されます。表に行を追加(APPEND)する場合、デフォルトではSINGLEROWは使用されません。索引エントリは一時領域に格納され、ロード後に元の索引とマージされます。この方法ではパフォーマンスが向上して最適な索引が生成されますが、余分な記憶域が必要になります。マージ中には、元の索引、新規の索引、新規エントリ用の領域が、すべて同時に記憶域を使用します。SINGLEROWオプションを使用すると、新規索引エントリや新規索引のための記憶域を必要としません。生成後の索引は新規にソートした索引ほど最適でない可能性はありますが、生成に使用される領域は少なくなります。また、索引の挿入ごとにUNDO情報が追加生成されるため、所要時間も長くなります。このオプションは、使用可能な記憶域が制限されている場合に推奨されます。また、ロードされる行数が表のサイズに比べて小さい場合にも推奨されます。比率が1:20以下であれば小さいと考えられます。

- 後続NULL列: SQL*Loaderを、レコードに存在せずに相対位置を持つ列をNULL列として処理するように設定します。

- スキップ対象レコード: SQL*LoaderでSKIPコマンドを起動します。SKIPでは、ファイルの先頭を基準にしてロード対象外となる論理レコードの数を指定します。デフォルトでは、レコードはスキップされません。SKIPを指定すると、なんらかの理由で中断されたロードが継続されます。これは、すべての従来型パスによるロード、単一表のダイレクト・ロード、各表にロードされるレコード数が同一の場合の複数表のダイレクト・ロードに使用されます。各表にロードされるレコード数が異なる場合、複数表のダイレクト・ロードには使用されません。

- データベース・ファイル名: インポートするエクスポート・ファイルの名前を指定します。デフォルト拡張子は.dmpです。複数のエクスポート・ファイルをエクスポートできるため、インポート対象ファイル名の複数指定が必要になることがあります。インポートされたファイルへの読取りアクセス権限が必要です。また、IMP_FULL_DATABASEロールも必要です。

コード・テンプレート(CT)マッピングを含むマッピングの構成

コード・テンプレート(CT)マッピングの構成パラメータはPL/SQLマッピングのパラメータに似ています。ただし、CTマッピングでは、これらのオプションはPL/SQLマッピングにのみ適用されるため、ノードのSCD更新およびチャンク化オプションは表示されません。

CTマッピング用の囲み文字の使用および「ソース・ファイル演算子」という追加パラメータを設定できます。これらのパラメータはマッピングの「構成」タブに表示されます。

囲み文字の使用

CTマッピングの生成済コードでSQL識別子を囲むには、このパラメータを選択します。Oracle Warehouse Builderでは、異機種間データベース・システム間でのCTマッピングの区切り識別子をサポートします。

たとえば、囲み文字の使用パラメータが選択されており、囲み文字が大カッコに設定されている場合、生成されるSQL文は次のようになります。

SELECT [My Empno], [My Emp Name] FROM [My Employees]

デフォルトでは、Oracle Database、IBM DB2 UDB、SQL Serverで使用される囲み文字は二重引用符です。OMB*Plusを使用してプラットフォームごとに必要とされる囲み文字を設定できます。たとえば、SQL Serverプラットフォームの囲み文字を大カッコに変更するには、次のOMB*Plusコマンドを使用します。

OMBALTER PLATFORM 'SQLSERVER' SET PROPERTIES (ENCLOSURE_CHAR) VALUES ('/[/]');

正しく機能させるために囲み文字の使用パラメータを使用しているCTマッピングでは、作成する新しいプラットフォームすべてに正しい囲み文字を設定する必要があります。たとえば、MySQLデータベースを参照するMYSQLという新しいプラットフォームを作成するとします。CTマッピングでMySQLデータベースの表を使用しており、二重引用符を囲み文字として使用してコードを生成する必要があります。CTマッピングでコードを生成する前に、次の文を使用して、MYSQLプラットフォームの囲み文字を設定する必要があります。

OMBALTER PLATFORM 'MYSQL' SET PROPERTIES (ENCLOSURE_CHAR) VALUES ('"')

注意:
囲み文字の使用パラメータはフラット・ファイル演算子を含むCTマッピングではサポートされていません。

SQL*Loaderデータファイル

「ソース・ファイル演算子」パラメータを設定するには、「SQL*Loaderデータファイル」セクションを使用します。1つ以上のフラット・ファイル演算子を含むCTマッピングでは、関連付けられているデータ・ファイルのパラメータを設定できます。

ソース・ファイル演算子

現在のデータ・ファイルを関連付ける必要のあるフラット・ファイル演算子を指定するにはこのプロパティを使用します。

CTマッピングに含まれるフラット・ファイル演算子が1つのみの場合、「ソース・ファイル演算子」パラメータの設定は任意になります。ただし、CTマッピングに含まれるフラット・ファイル演算子が複数の場合は、このパラメータを設定する必要があります。このパラメータでは、Oracle Warehouse Builderがデータ・ファイルとフラット・ファイル演算子との間の関係を理解できます。

このプロパティは、Oracle Warehouse Builder 11gリリース2(11.2.0.2)から使用できます。

フラット・ファイル演算子の構成

フラット・ファイル演算子の「構成」タブには、マッピングでの演算子の使用方法によっては、フラット・ファイル演算子に関する追加設定が表示されます。

- ターゲットとしてのフラット・ファイル演算子: PL/SQLデプロイメント・コード・パッケージが生成されます。ターゲットとして使用するフラット・ファイル演算子に関連するパラメータの構成については、「ターゲットとしてのフラット・ファイル演算子」を参照してください。

- ソースとしてのフラット・ファイル演算子: SQL*Loaderスクリプトが生成されます。ソースとして使用するフラット・ファイル演算子に関連するパラメータについては、「ソースとしてのフラット・ファイル演算子」を参照してください。

ターゲットとしてのフラット・ファイル演算子

フラット・ファイルをターゲットとして使用するマッピングに固有のプロパティを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータでマッピングを選択し、メニュー・バーから「設計」→「構成」を選択します。
または、構成するマッピングを右クリックして、「構成」を選択します。

マッピングの「構成」タブが表示されます。

2. 構成するパラメータを選択し、パラメータ名の右側の空白をクリックしてパラメータ値を編集します。
パラメータごとに、リストからオプションを選択するか、値を入力するかまたは省略記号ボタンをクリックして別の「プロパティ」ダイアログ・ボックスを表示できます。

3. 「デプロイ可能」オプションを選択し、デプロイ可能としてマークされたマッピング・オブジェクトについて一連のスクリプトを生成します。このオプションを選択していないマッピングの場合、スクリプトは生成されません。

4. 「言語」を、選択したマッピング用に生成するコードのタイプに設定します。選択できるオプションは、マッピングにおける演算子の設計と使用に応じて異なります。マッピングに応じて、「PL/SQL」、「ABAP」(SAPソース・マッピングの場合)または「SQL*Loader」から選択できます。

5. マッピングのデプロイ先ロケーションを指定します。

6. 「ランタイム・パラメータ」で、「デフォルト・オペレーティング・モード」を「行ベース(ターゲットのみ)」に設定します。このタイプのマッピングの場合、他のデフォルト・オペレーティング・モードではコードが生成されません。各ランタイム・パラメータの詳細は、「ランタイム・パラメータ」を参照してください。

7. 「コード生成オプション」の説明に従って「コード生成オプション」を設定します。

8. 「ソースとターゲットの参照」の説明に従って「ソースとターゲットの参照」を設定します。

9. 「アクセス指定」では、「ターゲット・データファイル名」にフラット・ファイル・ターゲットの名前を指定します。「ターゲット・データファイルのロケーション」では、ランタイム・プラットフォームがインストールされているコンピュータにあるターゲット・ファイルを指定します。出力をxmlファイルにする場合は、「XMLファイルとして出力」を選択します。

ソースとしてのフラット・ファイル演算子

フラット・ファイル演算子をソースとして使用するマッピングを構成する手順は、次のとおりです。

1. プロジェクト・ナビゲータでマッピングを選択し、メニュー・バーから「設計」→「構成」を選択します。または、構成するマッピングを右クリックし、「構成」を選択します。

2. 構成するパラメータを選択し、パラメータ名の右側の空白をクリックしてパラメータ値を編集します。
各パラメータについて、選択するかどうかを指定するか、リストからオプションを選択するか、値を入力するか、省略記号ボタンをクリックして他の「プロパティ」ダイアログ・ボックスを表示できます。

3. SQL*Loaderスクリプトが生成されるように「デプロイ可能」オプションを選択します。

4. 「ログ・ファイルのロケーション」と「ログ・ファイル名」を指定します。

5. 「ロード継続」を選択します。
SQL*Loaderによりデータ行または索引エントリのための領域がすべて使用されてしまうと、ロードが中断されます。「ロード継続」オプションが選択されている場合は、中断したロードの継続が試行されます。

6. 「NLSキャラクタ・セット」で、CHARACTERSET句に置くキャラクタ・セットを指定します。

7. 「ダイレクト・モード」を選択して、ダイレクト・パス・ロードが実行されるように指定します。このオプションを選択しなければ、従来型パスによるロードが実行されます。通常はダイレクト・モードの方が高速です。

8. 「リカバリ可能操作」を選択してロードがリカバリ可能になるように指定します。このオプションを選択しなければ、ロードはリカバリ不可能になり、レコードはREDOログに記録されません。

9. フラット・ファイル・ソースを使用したマッピング用に生成されるSQL*LoaderスクリプトのOPTIONS句に影響する次のパラメータを構成します。
パラレル・ロードの実行: このオプションを選択すると、ダイレクト・ロードを複数のコンカレント・セッションで実行できます。

エラー許可: 0(ゼロ)より大きい値を指定すると、ERRORS = nオプションが生成されます。SQL*Loaderは、このエラー上限に達した後の最初の一致ポイントでロードを終了します。

スキップ対象レコード: 0より大きい値を指定すると、SKIP = nオプションが生成されます。この値は、ファイルの先頭を基準としてロード対象外のレコード数を示します。値を指定しなければ、レコードはスキップされません。

ロード対象レコード: 0より大きい値を指定すると、LOAD = nオプションが生成されます。この値は、ロード対象の最大レコード数を示します。値を指定しなければ、すべてのレコードがロードされます。

コミットごとの行: 0より大きい値を指定すると、ROWS = nオプションが生成されます。ダイレクト・パス・ロードの場合、この値はデータの保存前にソースから読み取る行数を識別します。従来型パスによるロードの場合は、バインド配列の行数を指定します。

読取りサイズ: 0より大きい値を指定すると、READSIZE = nオプションが生成されます。この値は、読取りバッファのサイズ指定に使用されます。

バインド・サイズ: 0より大きい値を指定すると、BINDSIZE = nオプションが生成されます。この値は、バインド配列の最大バイト数を示します。

読取りバッファ: 0より大きい値を指定すると、READBUFFERS n句が生成されます。READBUFFERSでは、ダイレクト・パス・ロード中に使用するバッファの数を指定します。READBUFFERSの値は、必要な場合にのみ指定してください。

空白を保持: このオプションを選択すると、PRESERVE BLANKS句が生成されます。この句により、オプションの囲みデリミタが存在しない場合に先行の空白が保持されます。また、事前に決定済のサイズでフィールドが指定されている場合も、後続の空白がそのまま保持されます。

データベース・ファイル名: このパラメータを使用すると、ロード対象の物理ファイルの特性を指定できます。これらのパラメータの初期値は、マッピングに使用するフラット・ファイルのプロパティから設定されます。

このパラメータを空白以外の値に設定すると、FILE=オプションが生成されます。指定した値は、生成コードでは一重引用符で囲まれます。

制御ファイルのロケーションおよび制御ファイル名: 監査詳細に必要な制御ファイル名。

SQL*Loaderオプションおよび句の詳細は、Oracle Databaseユーティリティを参照してください。

10. 「ランタイム・パラメータ」を開き、マッピングをデプロイメント用に構成します。
監査: このオプションを選択すると、パッケージの実行時に監査が実行されます。

デフォルト・パージ・グループ: 「デフォルト・パージ・グループ」はパッケージの実行時に使用されます。ランタイム・スキーマ内の各監査レコードは、指定したパージ・グループに割り当てられます。

11. ソースとターゲットの参照を開き、「ソースとターゲットの参照」の説明に従ってマッピングの演算子の物理プロパティを設定します。

プロセス・フローの構成のリファレンス

プロセス・フロー・モジュールを構成する手順は、次のとおりです。

1. プロセス・フロー・モジュールを右クリックして「構成」を選択します。
プロセス・フロー・モジュールの「構成」タブが表示されます。

2. 「評価ロケーション」と識別ロケーションのパラメータを設定します。
「評価ロケーション」は、このプロセス・フローの評価元ロケーションです。

識別ロケーションは、生成済コードのデプロイ先ロケーションです。

プロセス・フロー・パッケージを構成する手順は、次のとおりです。

1. プロセス・フロー・パッケージを右クリックして「構成」を選択します。
プロセス・フロー・パッケージの「構成」タブが表示されます。

2. 「参照カレンダ」と「生成コメント」のパラメータを設定します。
「参照カレンダ」は、このパッケージに関連付けるスケジュールを提供します。

「生成コメント」は、生成済コードに関する追加のコメントを提供します。

パッケージのアクティビティのいずれかをクリックすると、そのプロパティが表示されます。

「パスの設定」を使用し、プロセス・フローの各アクティビティについて次のプロパティを設定します。

実行ロケーション: このアクティビティの実行元ロケーションです。Oracle Enterprise Managerを構成した場合、Oracle Enterprise Managerエージェントを選択してプロセス・フローを実行できます。

リモート・ロケーション: FTPアクティビティ専用のリモート・ロケーション。

作業ロケーション: FTP、FILE EXISTSおよび外部プロセス・アクティビティ専用の作業ロケーション。

配布ロケーション: デプロイ・ロケーション。この設定は変換アクティビティにのみ適用されます。事前定義済の変換を参照するアクティビティの場合は、設定を「デフォルトのロケーションを使用」から変更して有効なロケーションを指定する必要があります。

「一般プロパティ」では、バウンド名(プロセス・フロー内でアクティビティが表すオブジェクトの名前)を参照できます。バウンド名を持つのは、マッピング・アクティビティ、変換アクティビティおよびサブプロセス・アクティビティのみです。

「実行の設定」で、オプション「ステータスとしてリターンを使用」を選択します。

この設定は、出力でNUMBERを戻すアクティビティの動作を制御します。この種のアクティビティには、「FTP」、「ユーザー定義」および「変換」などがあります。「ステータスとしてリターンを使用」を選択すると、プロセス・フロー・エディタではアクティビティの次の数値戻り値に基づいて送信推移条件が割り当てられます。

1 = 正常終了推移

2 = 警告推移

3 = エラー推移

25 ソース演算子とターゲット演算子

この章では、Oracle Warehouse Builderマッピングにおけるソースおよびターゲットとしての演算子の使用方法について説明します。

この章の内容は次のとおりです。

- ソースおよびターゲット演算子のリスト

- Oracleソースおよびターゲット演算子の使用

- リモートおよびOracle以外のソースおよびターゲット演算子の使用

- フラット・ファイルのソースおよびターゲット演算子の使用

ソースおよびターゲット演算子のリスト

ソースおよびターゲット演算子は、次のとおりです。

- 定数演算子

- オブジェクトの構成演算子

- キューブ演算子

- データ・ジェネレータ演算子

- ディメンション演算子

- オブジェクトの拡張演算子

- 外部表演算子

- 「フラット・ファイル演算子」"

- マッピング入力パラメータ演算子

- マッピング出力パラメータ演算子

- マテリアライズド・ビュー演算子

- キュー演算子

- 「順序演算子」

- 表演算子

- 可変長配列イテレータ演算子

- ビュー演算子

Oracleソースおよびターゲット演算子の使用

Oracleソースおよびターゲット演算子とは、ワークスペースのOracleデータ・オブジェクトにバインドされている演算子を指します。これらの演算子をマッピングで使用して、Oracleデータ・オブジェクトへのデータのロードまたはOracleデータ・オブジェクトからのデータのソーシングを実行します。

Oracleソースおよびターゲット演算子のプロパティの設定

プロパティ・インスペクタに、選択した演算子のプロパティが表示されます。これにはソースおよびターゲット演算子のパラメータの次のカテゴリが含まれます。

- チェンジ・データ・キャプチャ: このカテゴリは、表およびビューに対してのみ表示されます。これには、「キャプチャの一貫性」、「チェンジ・データ・キャプチャ・フィルタ」、「有効」および「トリガー・ベース・キャプチャ」の各プロパティが含まれます。

- 条件付きロード: 「更新用ターゲット・フィルタ」、「削除用ターゲット・フィルタ」および「制約による一致」の各プロパティを設定できます。

- データのチャンク化: このカテゴリは、表、ビューおよびマテリアライズド・ビューに対して表示されます。これには、「フィルタ条件のチャンク化」、「チャンク化有効」および「パラレル・チャンクのフィルタ条件」の各プロパティが含まれます。これらのプロパティの詳細は、「表演算子のチャンク化」を参照してください。

- エラー表: 「エラー表名」、「ロールアップ・エラー」および「この演算子からのエラーのみを選択」の各プロパティを設定できます。このプロパティのセクションは、表、ビュー、マテリアライズド・ビュー、外部表およびディメンションのマッピング演算子にのみ表示されます。

- 一般: 「一般」ノードに、「プライマリ・ソース」、「ターゲット・ロード順序」および「ロード・タイプ」を設定できます。ターゲットのタイプに応じて、「Oracleターゲット演算子のロード・タイプ」および「フラット・ファイルのロード・タイプ」で説明しているようにロード・タイプに異なる値を設定できます。

- キー(読取り専用): 「キー名」、「キー・タイプ」および「参照キー」を表示できます。演算子がソースとして機能する場合は、キー設定は結合演算子とともに使用されます。演算子がターゲットとして機能する場合は、キー設定は「制約による一致」パラメータとともに使用されます。

- ファイル・プロパティ: ファイル・プロパティでは、「バウンド名」を参照できます。

- 一時ステージ表: このカテゴリは、表、ビュー、マテリアライズド・ビューおよび外部表に対して表示されます。これには、「付加DDL句」、「一時ステージング表です」および「一時ステージ表ID」の各プロパティが含まれます。これらのプロパティの詳細は、「ETL実行中の一時表の作成」を参照してください。

キャプチャ一貫性

キャプチャ一貫性によって実行されたチェンジ・データ・キャプチャのタイプが決まります。次のいずれかのオプションを選択します。

- 一貫セット: 一貫セットのチェンジ・データ・キャプチャが実行されます。

- 非一貫セット: 非一貫セットのチェンジ・データ・キャプチャが実行されます。

- なし: チェンジ・データ・キャプチャは実行されません。

チェンジ・データ・キャプチャ・フィルタ

チェンジ・データ・キャプチャ・フィルタは、特定のサブスクライバの変更のキャプチャに使用されたフィルタを表します。

有効

チェンジ・データ・キャプチャを実行する機能を有効化する場合に選択します。

トリガー・ベースのキャプチャ

ソース表でトリガーを使用して変更がキャプチャおよび伝播されたことを示す場合に使用します。

プライマリ・ソース

Oracle Application Embedded Data Warehouse(EDW)ユーザーは、EDWのドキュメントを参照してください。その他のユーザーは、このパラメータは無視してください。

Oracleターゲット演算子のロード・タイプ

ロード・タイプのプロパティを使用して各ターゲット演算子のロード・タイプを選択します。

ディメンションおよびキューブ演算子を除き、すべてのOracleターゲット演算子について、次のオプションを1つ選択します。

- CHECK/INSERT: ターゲットに既存の行があるかどうかをチェックします。既存の行がない場合は、受信行がターゲットに挿入されます。

- DELETE: 受信行セットを使用して、ターゲットの行のうち削除対象となる行がどれであるかを判別します。

- DELETE/INSERT: ターゲットの行をすべて削除し、新規行を挿入します。

- INSERT: 受信行セットをターゲットに挿入します。同じプライマリ・キーまたは一意のキーの行が存在する場合は、挿入操作に失敗します。

- INSERT/UPDATE: それぞれの受信行について最初に挿入演算を実行します。挿入に失敗すると、更新演算が行われます。更新する一致レコードがない場合は、挿入が実行されます。INSERT/UPDATEを選択しており、「デフォルト・オペレーティング・モード」が「行ベース」に設定されている場合は、ターゲットに一意制約を設定する必要があります。オペレーティング・モードが「セット・ベース」に設定されている場合は、Oracle Warehouse BuilderによってMERGE文が生成されます。

- NONE: ターゲットに対して演算は実行されません。この設定はテストに便利です。抽出と変換は実行されますが、ターゲットには何も影響しません。

- TRUNCATE/INSERT: ターゲットを切り捨てた後、受信行セットを挿入します。このオプションを選択すると、マッピングの実行に失敗した場合でも、操作をロールバックできません。切捨てでは、ターゲットからデータを完全に削除します。

- UPDATE: 受信行セットを使用してターゲットの既存の行を更新します。指定の一致条件に合致する行がない場合は、何も変更されません。
ターゲット・モジュールの構成パラメータ「PL/SQL生成モード」をOracle 10g、Oracle 10gリリース2、Oracle 11gリリース1またはOracle 11gリリース2に設定すると、ターゲットがセット・ベース・モードで更新されます。生成されるコードには、挿入句なしでMERGE文が含まれます。Oracle9i以前のバージョンのPL/SQLコードを生成するよう構成されたモジュールについては、ターゲットは行ベース・モードで更新されます。

- UPDATE/INSERT: 「デフォルト・オペレーティング・モード」が各受信行に対して「行ベース」に設定されている場合、行が更新されていないときは最初に更新が実行され、続けて挿入が行われます。「デフォルト・オペレーティング・モード」が「セット・ベース」に設定されている場合は、MERGE文が生成されます。セット・ベース・モードを生成できるのは、ターゲット・モジュールの「PL/SQL生成モード」パラメータがOracle 10g以上の場合のみです。

ディメンジョンおよびキューブの場合、ロード・タイプのプロパティのオプションは、ロードおよび削除です。データをディメンジョンまたはキューブにロードする場合はロードを使用します。データをディメンジョンまたはキューブから削除する場合は削除を使用します。

フラット・ファイル・ターゲットのロード・タイプ

SQL*Loaderパラメータを構成し、マッピングのSQL*Loaderオプションを定義します。構成中に選択した値は、生成されたSQL*Loaderと実行時の制御ファイルに直接影響します。SQL*Loaderには、データをロードする方法が2つあります。

- 従来型パスによるロード: SQL INSERT文を実行し、Oracleデータベースの表にデータを移入します。

- ダイレクト・パス・ロード: Oracleデータ・ブロックをフォーマット化し、データベース・ファイルに直接データ・ブロックを書き込むことによってOracleデータベースのオーバーヘッドを大幅に削減します。直接ロードでは他のユーザーとのデータベース・リソースの競合がないため、通常ディスク・スピードに近い速度でデータをロードできます。
制限、セキュリティおよびバックアップ関連などの特定の考慮事項は、データベース・ファイルへのそれぞれのアクセス方法で検討する必要があります。詳細は、「Oracle Databaseユーティリティ」を参照してください。

SQL*Loaderを使用してフラット・ファイルからデータを抽出するマッピングの設計および実装では、生成されたSQL*Loaderスクリプトに影響を及ぼす様々なプロパティを構成できます。1つのマッピングの各ロード演算子には、ロード・タイプと呼ばれる演算子のプロパティがあります。このプロパティに含まれる値は、ロード演算子に対するSQL*Loader INTO TABLE句の生成方法に影響します。SQL*Loaderではデータの追加、挿入、置換または切捨てはできますが、この処理中はデータは更新できません。

表25-1に、各ロード・タイプに関連付けられたINTO TABLE句と、その既存ターゲットのデータに対する影響を示します。

表25-1 ロード・タイプとINTO TABLEの関係

ロード・タイプ

INTO TABLE句

既存データのターゲットに対する影響

INSERT/UPDATE

APPEND

追加データをターゲットに追加します。

DELETE/INSERT

REPLACE

既存データを削除し、新規データと置換します(DELETEトリガーが起動します)。

TRUNCATE/INSERT

TRUNCATE

既存データを削除し、新規データと置換します(DELETEトリガーが起動します)。

CHECK/INSERT

INSERT

ターゲット表が空であるとみなされます。

NONE

INSERT

ターゲット表が空であるとみなされます。

ターゲット・ロード順序

このプロパティでは、同じマッピング内の複数のターゲットのロード順序を指定できます。Oracle Warehouse Builderは、デフォルトのロード順序を外部キー関係に基づいて決定します。このプロパティでデフォルト順序を上書きします。

更新用ターゲット・フィルタ

条件でTRUEと評価された場合、その行は更新ロード操作に含まれます。

削除用ターゲット・フィルタ

条件でTRUEと評価された場合、その行は削除ロード操作に含まれます。

制約による一致

ターゲット演算子をUPDATE条件またはDELETE条件付きでロードする場合は、一致基準を指定できます。一致基準とロード基準は手動で設定することも、複数の組込みオプションから選択することもできます。ターゲットの一意キーまたは主キーの情報で属性に手動で設定されている一致基準とロード基準を上書きするかどうかを指定する場合は、「制約による一致」を使用します。「制約による一致」プロパティをクリックすると、その演算子で定義されている制約と組込みロード・オプションがリスト表示されます。

「すべての制約」を選択すると、手動で設定した属性のロード設定がすべて無効になり、表25-2に示されているようにターゲット属性のロードおよび一致プロパティが設定されているものとしてデータがロードされます。

「すべての制約」を選択すると、ロード設定「行の更新中に列をロードする」はキー属性に対して自動的に いいえ」とはみなされません。ただし、MERGE生成を実行中は、この点が検証され、UPDATE一致に使用される特定の属性がUPDATEロードにも使用されている場合は検証警告が表示されます。

表25-2 すべての制約を選択した場合のターゲットのロード設定

ロード設定

キー属性

その他すべての属性

行の更新中に列を一致させる

はい

いいえ

行の削除中に列を一致させる

はい

いいえ

「制約なし」を選択すると、手動で設定したすべてのロード設定が優先され、データはその設定に従ってロードされます。

演算子にすでに定義されている制約を選択すると、手動で設定した属性のロード設定はすべて無効になり、表25-3に示されているようにターゲットのロードおよび一致プロパティが設定されているものとしてデータがロードされます。

すでに定義されている制約を選択すると、ロード設定「行の更新中に列をロードする」はキー属性に対して自動的に いいえ」とはみなされません。ただし、MERGE生成を実行中は、UPDATE一致に使用される特定の属性がUPDATEロードにも使用されている場合は検証警告が表示されます。

表25-3 選択済の制約を選択した場合のターゲットのロード設定

ロード設定

選択済キー属性

その他すべての属性

行の更新中に列を一致させる

はい

いいえ

行の削除中に列を一致させる

はい

いいえ

制約をデフォルト値に戻す方法

属性レベルで変更を加えた後、すべての設定をデフォルトに戻す場合は、「拡張」をクリックします。ロード・オプションを含むリストが表示されます。デフォルトに戻される設定は、選択する制約タイプに応じて異なります。

たとえば、すべてのキー属性の一致プロパティをリセットする場合は、「拡張」をクリックしてから「制約なし」を選択し、「OK」をクリックします。手動によるロード設定は上書きされ、データは表25-4の設定に基づきロードされます。

表25-4 拡張と制約なしを選択した場合のデフォルトのロード設定

ロード設定

すべてのキー属性

その他すべての属性

行の挿入中に列をロードする

はい

いいえ

行の更新中に列をロードする

はい

はい

行の更新中に列を一致させる

いいえ

いいえ

行の削除中に列を一致させる

いいえ

いいえ

また、「拡張」をクリックしてから「すべての制約」を選択すると、手動で設定したロード設定が上書きされ、データは表25-5の設定に基づいてロードされます。

表25-5 拡張とすべての制約を選択した場合のデフォルトのロード設定

ロード設定

すべてのキー属性

その他すべての属性

行の挿入中に列をロードする

はい

はい

行の更新中に列をロードする

いいえ

はい

行の更新中に列を一致させる

はい

いいえ

行の削除中に列を一致させる

はい

いいえ

バウンド名

コード・ジェネレータで使用する名前です。演算子が現在バインドおよび同期化されている場合、このプロパティは読取り専用になります。演算子がまだバインドされていない場合は、ワークスペース・オブジェクトに対して同期化する前に、マッピング・エディタでバウンド名を編集できます。

キー名

主キー、外部キーまたは一意キーの名前です。

キー列

このキーを定義するローカル列です。演算子に複数のキー列がある場合は、各キー列はカンマで区切ります。

キー・タイプ

主キー、外部キーまたは一意キーのキー・タイプです。

参照キー

演算子に外部キーがある場合は、「参照キー」に参照オブジェクトの主キーまたは一意キーが表示されます。

エラー表名

ロード操作中の無効なレコードを格納する、エラー表の名前です。

ロールアップ・エラー

「はい」を選択し、エラー表からエラー名で選択したレコードをロールアップします。これにより、特定の入力レコードで生成されたエラーはすべて、エラー名属性で連結されたエラー名を持つ単一のレコードにロールアップされます。

この演算子からのエラーのみを選択

エラー表から選択された行には、このマップ実行でこの演算子によって作成されたエラーのみが含まれます。

「属性のプロパティ」の設定

ソースおよびターゲット演算子の各属性に対して、パラメータは次のタイプに分類されます。

- 一般: 「一般」プロパティでは、「バウンド名」プロパティ、ビジネス名、物理名を表示できます。

- チャンク化列: このカテゴリは、表、ビューおよびマテリアライズド・ビューの各演算子の属性に対してのみ表示されます。これには、「NUMBER列のチャンク化」プロパティのみが含まれます。

- コード・テンプレートのメタデータ・タグ: このカテゴリには、「SCD」、「UD1」、「UD2」, 「UD3」、「UD4」、「UD5」および「UPD」の各プロパティが含まれます。

- データ型情報: データ型のプロパティは、すべての演算子に適用できます。これには「データ型」、「精度」、「スケール」、「長さ」および「小数秒精度」があります。

- ロード・プロパティ: 表、ディメンジョン、キューブ、ビューおよびマテリアライズド・ビューの演算子にはロード・プロパティ・カテゴリがあります。このカテゴリには、「行の挿入中に列をロードする」、「行の更新中に列をロードする」、「行の更新中に列を一致させる」、「更新: 演算」および「行の削除中に列を一致させる」の設定が含まれます。

特定の演算子にはその演算子に固有のプロパティが含まれます。これらのプロパティは演算子固有プロパティ・ノードにリスト表示され、その演算子の項で説明されています。

バウンド名

このアイテムを識別するためにコード・ジェネレータで使用される名前です。デフォルトでは、アイテムと同じ名前です。これは演算子がバインドされている場合は、読取り専用の設定になります。

データ型

属性のデータ型です。

精度

データ型が数値型または浮動小数点型の場合、この属性の最大桁数になります。これは読取り専用の設定です。

スケール

小数点以下の桁数です。数値属性にのみ適用されます。

長さ

CHAR、VARCHARまたはVARCHAR2属性の最大長です。

小数秒精度

日時フィールドの小数部の桁数です。0から9までの数値を入力できます。このプロパティは、TIMESTAMP、TIMESTAMP WITH TIME ZONEおよびTIMESTAMP WITH LOCAL TIME ZONEデータ型に対してのみ使用されます。

行の挿入中に列をロードする

この設定により、そのようにマッピングされている場合でもデータはターゲットへ移動されません。「はい」(デフォルト)を選択すると、データはマップ済ターゲットに到達します。

行の更新中に列をロードする

この設定により、そのようにマッピングされている場合でも選択した属性データはターゲットへ移動されません。「はい」(デフォルト)を選択すると、 データはマップ済ターゲット属性に到達します。一意キーの列がまったくマップされていない場合は、一致条件の作成に一意キーは使用されません。一意キーの列がまったくマップされていない場合は、エラーが表示されます。キー列以外の列がマップされていない場合、その列はロードには使用されません。

行の更新中に列を一致させる

この設定では、ソース属性とマップ先のターゲット属性の間で一致するものがあった場合のみ、データ・ターゲット行が更新されます。一致がある場合は、行が更新されます。このプロパティを「はい」(デフォルト)に設定すると、属性は一致属性として使用されます。この設定を使用する場合は、すべてのキー列をマップする必要があります。ターゲット・エンティティに定義されている一意キーが1つのみの場合は、制約を使用してこの設定を上書きします。

更新: 演算

一致する行が検出された場合に更新演算を実行するように指定できます。更新演算はソース属性のデータを使用してターゲット属性で実行されます。表25-6は、指定できる更新演算を示し、その論理を説明したものです。

表25-6 更新演算

演算

例

ソースの値が5で、ターゲットの値が10の場合の結果

=

TARGET = SOURCE

TARGET = 5

+=

TARGET = SOURCE + TARGET

TARGET = 15(5 + 10)

-=

TARGET = TARGET - SOURCE

TARGET = 5(10 - 5)

=-

TARGET = SOURCE - TARGET

TARGET = マイナス5(5 - 10)

*=

TARGET = SOURCE * TARGET

TARGET = 50 (5 * 10)

/=

TARGET = TARGET / SOURCE

TARGET = 2 (10 / 5)

=/

TARGET = SOURCE / TARGET

TARGET = 0.5 (5 /10)

||=

TARGET = TARGET || SOURCE

TARGET = 105(10は5で切捨て)

=||

TARGET = SOURCE || TARGET

TARGET = 510(5は10で切捨て)

行の削除中に列を一致させる

ソース属性とマップ先のターゲット属性の間で一致するものがあった場合のみ、データ・ターゲット行が削除されます。一致がある場合は、行で削除演算が実行されます。このプロパティを「はい」(デフォルト)に設定すると、属性は一致属性として使用されます。この制約設定は上書きできます。

チャンク化番号列

属性のチャンク化番号列を選択し、その属性をチャンク化属性として使用します。このプロパティはパラレル・チャンク化にのみ適用されます。

定数演算子

定数演算子を使用すると定数値を定義できます。定数はPL/SQLまたはABAPマッピングの任意の場所に配置できます。

画像constant.gifの説明

1つ以上の定数属性を含む出力グループが1つ作成されます。Oracle Warehouse Builderでは、マッピング実行の最初に定数が初期化されます。

たとえば、現在のシステム日付の値を表演算子にロードするために定数演算子を使用します。式ビルダーで、事前定義済の変換のリストから、パブリック変換SYSDATEを選択します。

パブリック変換の詳細は、第4章、「データ変換の概要」を参照してください。

PL/SQLまたはABAPマッピングでの定数演算子の定義手順:

1. マッピング・エディタのキャンバスに定数演算子をドロップします。

2. 定数演算子を右クリックして「開く」を選択します。
「定数エディタ」ダイアログ・ボックスが表示されます。

3. 「出力」タブで、「属性」列の空白列をクリックし、出力属性の名前を入力して出力属性を作成します。
割り当てられているデフォルトのデータ型はNUMERICです。データ型と長さ、精度などの属性に関連付けられたその他のパラメータは変更できます。

4. 出力属性に関連付けられた式を入力します。
出力属性の式フィールドを使用して、式を入力します。または、「式」フィールドの右の省略記号ボタンをクリックし、「式ビルダー」ダイアログ・ボックスを使用して式を定義します。

出力属性に割り当てられた長さ、精度およびスケールの各プロパティは、マッピングで定義した式によって戻される値と一致する必要があります。VARCHAR、CHARまたはVARCHAR2データ型の場合は、'my_string'のように、定数文字列リテラルを一重引用符で囲みます。

5. 「OK」をクリックして、「定数エディタ」ダイアログ・ボックスを閉じます。

オブジェクト演算子の構成

オブジェクトの構成演算子では、それを構成する個々の属性を使用して、マッピングにSQLオブジェクトのデータ型(オブジェクト・タイプおよびコレクション・タイプ)、PL/SQLオブジェクト・タイプおよびカーソルを作成できます。

画像construct_object_icon.gifの説明

たとえば、オブジェクトの構成演算子を使用して、データ型がオブジェクト・タイプの列を含む表へのデータのロードに使用するSQLオブジェクト・タイプを作成できます。また、この演算子を使用して、アドバンスト・キューにデータをロードするペイロードを作成することもできます。この演算子では、SYS.REFCURSORオブジェクトも構成できます。

オブジェクトの構成演算子には、入力グループと出力グループが1つずつあります。入力グループはオブジェクト・タイプを構成する各属性を表します。オブジェクトの構成演算子の出力は、各属性を使用して作成されるオブジェクト・タイプです。マッピングでは、オブジェクトの構成演算子の出力属性のデータ型はマップ先のターゲット属性と一致する必要があります。

図25-1は、オブジェクトの構成演算子を使用するマッピングを示したものです。ソース表CUST_SRCは、個別の属性を使用して、顧客アドレスの各コンポーネントを格納します。ただし、ターゲット表CUSTOMERSは、顧客アドレスの格納にオブジェクト・タイプを使用します。CUST_SRC表からCUSTOMERS表にデータをロードするには、顧客アドレスのシグネチャがCUSTOMERSの顧客アドレスのシグネチャと一致するオブジェクト・タイプであることが必要です。オブジェクトの構成演算子は、顧客アドレスを入力として格納するCUST_SRCから各属性を取得してオブジェクト・タイプを構成します。オブジェクトの構成演算子は、ワークスペースに格納されているユーザー定義のデータ型CUST_ADDRにバインドされます。

図25-1 マッピングでのオブジェクトの構成演算子

「図25-1 マッピングでのオブジェクトの構成演算子」の説明

マッピングでのオブジェクトの構成演算子の定義手順:

1. オブジェクトの構成演算子をマッピング・エディタにドラッグ・アンド・ドロップします。

2. 「オブジェクトの構成の追加」ダイアログ・ボックスを使用して、オブジェクトを作成または選択します。これらのオプションの詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. オブジェクトの構成に使用する個々のソース属性を、オブジェクトの構成演算子の入力グループにマップします。

4. オブジェクトの構成演算子の出力属性をターゲット属性にマップします。ターゲット属性のデータ型はオブジェクト・タイプである必要があります。
オブジェクトの構成演算子の出力属性のシグネチャとターゲット属性のシグネチャは、同じである必要があります。

キューブ演算子

キューブ演算子を使用して、キューブからのデータのソーシングやキューブへのデータのロードを行います。

画像illustration cube.gifの説明

キューブ演算子には、キューブと同じ名前のグループが含まれます。このグループには、各キューブ・メジャーの属性があります。キューブが参照する各ディメンション・レベルのサロゲート識別子やビジネス識別子の属性も含まれます。また、キューブ演算子では、キューブが参照する各ディメンションに対してグループが1つ表示されます。

オーファン管理ポリシーを指定してキューブのエラー表を作成する場合、このキューブをマッピングに追加すると、キューブ演算子にはERROR_<cube_name>というグループが含まれます。これは、マッピング・キャンバスのキューブ演算子ではなく、キューブ演算子詳細に表示される属性を含む出力グループです。これらの属性を使用してデータ・フローを作成するには、キャンバス上のERROR_<cube_name>グループを選択してから、 「グラフ」メニューから「表示セットの選択」、「すべて」の順に選択してキャンバス上にこれらの属性を表示します。

キューブ演算子は、現在のプロジェクトの任意のOracleモジュールに定義されているキューブにバインドできます。また、キューブ演算子を同期化して、バインドされているキューブに対する変更内容で更新もできます。キューブ演算子を同期化するには、マッピング・エディタのキャンバスでキューブ演算子を右クリックして、「同期化」を選択します。

キューブ演算子のプロパティ

キューブ演算子には、キューブのロードに使用できる次のプロパティがあります。

ロード・タイプ キューブにデータをロード中、またはキューブからデータを削除中であることを示す場合は、このプロパティを使用します。このプロパティの次のいずれかの値を設定します。

- INSERT_LOAD
ソース・データ・セットからのすべてのレコードがキューブに挿入されます。オーファン管理にはこのオプションを設定することをお薦めします。

- LOAD
ソース・データ・セットからのレコードがキューブにマージされます。したがって、ソースからロード中のレコードがキューブに存在している場合、このレコードは更新されます。存在しないソース・データ・セット内のレコードが挿入されます。

- REMOVE
受信ソース・レコードと一致するキューブ内のレコードがキューブから削除されます。

ターゲット・ロード順序 同じマッピング内の複数のターゲットのロード順序を指定します。Oracle Warehouse Builderは、デフォルトの順序を外部キー関係に基づいて決定します。このプロパティでデフォルト順序を上書きできます。

ソース集計の有効化 このプロパティをTrueに設定すると、キューブをロードする前にソース・データが集計されます。ソース・データはすべてのディメンジョン・キー別にグループ化されます。

キューブ・メジャー属性のデフォルト集計関数はSUMです。キューブ・メジャーのソース集計関数プロパティの設定は変更できます。

キューブのオーファン管理ポリシーをデフォルト・ディメンジョン・レコードに設定し、キューブ演算子のソース集計の有効化プロパティをFalseに設定すると、キューブ表を更新すると実行エラーが発生する場合があります。したがって、このシナリオの場合Oracle Warehouse Builderでは、キューブ検証中に警告が表示されます。

キューブの解決 キューブをロード中にキューブ・データを集計する場合は、このプロパティを「はい」に設定します。ロード時間が長くなりますが、問合せ時間は短くなります。データがロードされてから、次に集計されます。

増分集計 このオプションを選択すると、増分ロードを実行できます。以前にキューブが解決されている場合は、後続のロードでは新規データのみが集計されます。

AWステージ済ロード:  TRUEに設定すると、セット・ベースのAWロード・データは、AWにロードされる前に一時表にステージされます。

AWロード前に切捨て キューブのロード開始前に既存の全キューブの値を切り捨てる必要があるかどうかを示します。このプロパティを「はい」に設定すると、既存のキューブ・データが切り捨てられます。

キューブ属性のプロパティ

キューブ演算子で属性に次のプロパティを設定できます。

更新: 演算 このプロパティはROLAP実装を使用するキューブおよびキューブ・メジャーを表す属性にのみ適用できます。

キューブをロード中のキューブ・メジャーの更新操作のタイプを指定します。選択できるオプションは、+=、-=、/=、=、=-、=||および||=です。デフォルト値は=で、この値を使用してソースのファクト・レコードがキューブに挿入されます。

たとえば、このプロパティを+=に設定すると、キューブ・メジャーにマップされるソース属性値は既存のメジャー値に追加されます。同じディメンジョンに複数のソース・ファクト・レコードがある場合は、これらのレコードをキューブにロードする前に集計にアグリゲータ演算子を使用することを確認します。

NULLデータ値 キューブのオーファン管理ポリシーでNULLと解釈されている値を指定します。キューブをロードする際に、キューブ・エディタの「孤立」タブを使用してNULLディメンション・キー値と無効ディメンション・キー値を使用するレコードの取扱い方法を指定します。

このプロパティのデフォルト値はNULLです。

データ・ジェネレータ演算子

データ・ジェネレータ演算子を使用して、順序、レコード番号またはシステム日付をマッピングに取り込みます。単一のデータ・ジェネレータ演算子を使用してこれらの関数を複数マップできます。

画像data_gen.gifの説明

推奨:
PL/SQLマッピングでは、データ・ジェネレータ演算子のかわりに定数演算子または順序演算子を使用してください。

フラット・ファイルのソースおよびターゲットのマッピングでは、データ・ジェネレータ演算子によってマッピングがSQL*Loaderに接続され、データベース・レコードに格納されるデータが生成されます。

次のファンクションを使用できます。

- RECNUM

- SYSDATE1

- SEQUENCE

Oracle Warehouse Builderでは、フィールド指定として順序、レコード番号、システム日付および定数を指定するのみでデータを生成できます。SQL*Loaderでは、LOADキーワードで指定された数のレコードが挿入されます。

データ・ジェネレータ演算子には、レコード番号、システム日付および一般的な順序に対応する事前定義済の属性がある出力グループが1つあります。データ・ジェネレータ演算子を使用して、レコード番号、システム日付または順序を取得します。その他のすべてのファンクションには、定数演算子または式演算子を使用します。

図25-2は、データ・ジェネレータ演算子を使用して現在のシステム日付を取得するマッピングを示したものです。フラット・ファイルCUSTOMERS_TXTのデータがステージング表CUST_STAGEにロードされます。ステージング表には、データがロードされた日付の追加属性が含まれます。データ・ジェネレータ演算子のSYSDATE1属性は、ステージング表CUST_STAGEのDATE_LOADED属性にマップされます。

図25-2 マッピングでのデータ・ジェネレータ

「図25-2 マッピングでのデータ・ジェネレータ」の説明

SQL*Loaderマッピングでのデータ・ジェネレータの定義手順:

1. マッピング・エディタのキャンバスにデータ・ジェネレータ演算子をドロップします。

2. データ・ジェネレータ演算子からSEQUENCE属性を選択し、ターゲット列にマップします。
Oracle Warehouse Builderでは、プロパティ・インスペクタにこの属性のプロパティが表示されます。

3. 「式」フィールドで省略記号のボタンをクリックして「式ビルダー」を開き、式を定義します。

4. (オプション)RECNUM属性に対して手順2と3を繰返します。

データファイル・レコード番号への1列の設定

レコードのロード元であるレコード番号に属性を設定するには、RECNUM属性からマップします。レコードの番号は、最初のデータ・ファイルの先頭をレコード1として、順番にカウントされます。RECNUMは、1つの論理レコードがまとめられるたびに増分されます。これは廃棄、スキップ、拒否またはロードされたレコードについて増分されます。たとえば、オプションSKIP=10を使用すると、最初にロードされたレコードのRECNUMは11になります。

現在日付への1列の設定

SYSDATEからマップした列は、SQL SYSDATEファンクションで定義した形式で現在のシステム日付を取得します。

ターゲット列のデータ型はCHARまたはDATEである必要があります。列のデータ型がCHARの場合、日付はdd-mon-yy形式でロードされます。システム日付がDATE列にロードされると、この列には時間形式と日付形式でアクセスできます。新規システム日付や時間は、従来型パスのロードで挿入されたレコードの各配列、ダイレクト・パス・ロード中にロードされたレコードの各ブロックに使用されます。

一意の順序番号への1列の設定

SEQUENCE属性をターゲット列にマップして、列の順序番号を生成します。SEQUENCEキーワードは列の一意の値を保証します。SEQUENCEは、ロードまたは拒否される各レコードを増分します。廃棄またはスキップされたレコードに対しては、値は増加しません。

生成されるデフォルト順序はSEQUENCE(COUNT)です。プロパティ式の順序式は編集できますが、構文を指定する必要があります。

列名とSEQUENCEファンクションの組合せにより、列の指定が完全になります。表25-7は、順序値に使用可能なオプションを示したものです。

表25-7 順序値のオプション

値

説明

COUNT

順序は表にあるレコード数と増分を加算した数から始まります。

integer

開始順序番号を指定します。

MAX

順序は列に増分を加算した現在の最大値から始まります。

incr

レコードのロード後または拒否後に順序番号が増分する値です。

ロード中にレコードが拒否されると、データ・エラーに関係なく、挿入の順序が保持されます。たとえば、ある列の4つの行に順序番号10、12、14、16が割り当てられている場合に、12の行が拒否されると、10、12、14ではなく、10、14、16が割り当てられている有効な行が挿入されます。拒否されたデータを修正して再度挿入すると、順序と一致するように列を手動で設定できます。

ディメンション演算子

ディメンション演算子を使用して、ディメンションおよび緩やかに変化するディメンションからのデータのソーシングやディメンションへのデータのロードを行います。

図dimension.gifの説明

ディメンション演算子には、ディメンションの各レベルにグループが1つ含まれます。グループにはディメンション・レベルと同じ名前を使用します。各レベルのレベル属性は、レベルを表すグループの下に示されています。

ディメンジョン・レベルのサロゲート識別子属性または親サロゲート識別子参照属性にはデータ・フローをマップできません。Oracle Warehouse Builderでは、ディメンションのロード時にこれらの列が自動的に入力されます。

ワークスペースに格納されているディメンションとディメンション演算子をバインドし、同期化できます。生成済コードのエラーを回避するには、ディメンション演算子を含むマッピングを配布する前に、ワークスペース・ディメンションの配布が完了していることを確認します。ディメンジョン演算子を同期化するには、マッピング・エディタのキャンバスでディメンジョンを右クリックして、「同期化」を選択します。

オーファン管理ポリシーを指定してディメンジョンのエラー表を作成する場合、このディメンジョンをマッピングに追加すると、ディメンジョン演算子にはERROR_<dimension_name>というグループが含まれます。これは、マッピング・キャンバスのディメンジョン演算子ではなく、ディメンジョン演算子詳細に表示される属性を含む出力グループです。これらの属性を使用してデータ・フローを作成するには、キャンバス上のERROR_<dimension_name>グループを選択してから、 「グラフ」メニューから「表示セットの選択」、「すべて」の順に選択してキャンバス上にこれらの属性を表示します。

マッピングでのディメンション演算子の使用手順:

1. ディメンション演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
Oracle Warehouse Builderにより、「ディメンションの追加」ダイアログ・ボックスが表示されます。

2. 「ディメンションの追加」ダイアログ・ボックスでディメンションを選択します。
または、手順1と2を1つの手順に組み合せることができます。マッピング・エディタで、プロジェクト・ナビゲータにナビゲートします。ディメンジョンを選択し、マッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

3. ディメンション演算子からターゲットへ属性をマップ、またはソースからディメンション演算子へ属性をマップします。

ディメンション演算子プロパティ

プロパティ・インスペクタを使用して、ディメンションまたは緩やかに変化するディメンションからのデータのロードまたは削除に関する追加詳細を定義するオプションを設定します。

演算子、ディメンション内の各レベルを表すグループおよびレベル属性という3つのレベルでプロパティを設定できます。次の各項では、ディメンジョン演算子プロパティについて説明します。これらのプロパティは、AWプロパティ、ディメンション・プロパティ、エラー表、履歴ロギングおよび孤立した管理ポリシーに分類されます。

ターゲット・ロード順序 同じマッピング内の複数のターゲットのロード順序を指定します。Oracle Warehouse Builderは、デフォルトの順序を外部キー関係に基づいて決定します。このプロパティでデフォルト順序を上書きします。

AWプロパティ

AW名 ディメンジョン・データが格納されるアナリティック・ワークスペースの名前を表します。

AWステージ済ロード このプロパティはMOLAPディメンジョンにのみ適用できます。アナリティック・ワークスペースへのロード前にセット・ベースのロード・データを一時表にステージするには、このオプションを選択します。

ディメンション演算子内の各グループはディメンション・レベルを表します。ディメンション・レベルごとに次のプロパティを設定できます。

- 抽出タイプ: ディメンションがソースとして使用される場合に実行される抽出操作を表します。タイプ2のSCDから現行レコードのみを抽出するには、「現行のみ抽出(タイプ2のみ)」を選択します。このプロパティはタイプ2のSCDにのみ有効です。ディメンションまたはSCDからすべてのレコードを抽出するには、「すべて抽出」を選択します。

- デフォルトのオープン・レコード終了時間: このプロパティは、タイプ2のSCDにのみ適用可能です。これは、新規に作成したオープン・レコードの終了時間として使用される日付値を表します。デフォルト値は「NULL」です。

注意:
「コミット制御」プロパティを「手動」に設定してある場合は、「自動ヒントが有効です」プロパティを「FALSE」に設定してください。それ以外の場合は、マッピングが正しく実行されない可能性があります。

AWロード前に切捨て: このプロパティはMOLAPディメンションにのみ適用可能です。これは、新規データをロードする前に既存のすべてのディメンション・データを切り捨てるかどうかを示します。新規データをロードする前に既存のすべてのディメンション・データを切り捨てるには、このプロパティをYESに設定します。

ディメンジョン・プロパティ

ロード・タイプ ディメンションについて実行される操作のタイプを表します。選択できるオプションは、次のとおりです。

- LOAD: ディメンションまたは緩やかに変化するディメンションにデータをロードする場合は、この値を設定します。

- REMOVE: ディメンションまたは緩やかに変化するディメンションからデータを削除する場合は、この値を設定します。

データをロードまたは削除する際に、ソース・レコードがディメンション内に存在するかどうかを判別するための検索が実行されます。照合は自然キー識別子によって実行されます。レコードが存在する場合、REMOVE操作により既存のデータが削除されます。LOAD操作では既存のデータが更新され、その後新規データがロードされます。

親レコードを削除すると、子レコードは存在しない親を参照します。

タイプ2 現行のみ抽出/削除 このプロパティは、タイプ2のSCDにのみ適用可能です。抽出または削除するレコードを指定するには、このプロパティを使用します。このプロパティには次の値を設定できます。

- YES: タイプ2のSCDからデータを抽出する場合は、ソース・データ内のビジネス識別子と一致する現行レコードのみが抽出されます。タイプ2のSCDからデータを削除する場合は、ソース・データ内のビジネス識別子と一致する現行レコードのみがクローズされます(有効期限はSYSDATEまたは「デフォルトのオープン・レコード終了時間」プロパティで定義した日付のいずれかに設定されます)。
スノーフレーク実装を使用するタイプ2のSCDの場合、子レコードが含まれるレコードは削除できません。

- NO: タイプ2のSCDからデータを抽出する場合は、データ・ソースのビジネス識別子と一致するすべてのレコード(履歴レコードを含む)がディメンションから抽出されます。
タイプ2のSCDからデータを削除する場合は、ソース・データ・セット内のビジネス識別子と一致するすべてのレコード(履歴レコードを含む)が削除されます。

エラー表

DMLエラー表名 ディメンジョンに関連付けられたDMLエラーを格納する表の名前を表します。DMLエラーのログを作成するには、ディメンジョンに対するDMLエラー・ロギングを有効にする必要があります。DMLエラー・ロギングの詳細は、「DMLエラー・ロギングの使用」を参照してください。

エラー表名 データ・プロファイリングおよびオーファン管理の強制により発生する論理エラーを格納するエラー表の名前を表します。ディメンジョンのエラー表名プロパティの値を指定すると、このディメンジョンに関連付けられたディメンジョン演算子のエラー表名プロパティには同じ名前が表示され、名前は編集できません。それ以外の場合は、エラー表がある場合は名前を指定します。

エラー表の切り捨て このプロパティはエラー表にのみ適用でき、DMLエラー表には適用できません。使用するたびにエラー表を切捨てるには、このプロパティをはいに設定します。

履歴ロギング・プロパティ

デフォルトの初期レコード有効時間: このプロパティはタイプ2のSCDにのみ適用可能です。特定のディメンション・レコードの初期ロードに対する有効時間として割り当てられるデフォルト値を示します。このプロパティに設定されているデフォルト値はSYSDATEです。

デフォルトのオープン・レコード有効時間: このプロパティはタイプ2のSCDにのみ適用可能です。初期レコードの後のオープン・レコードの有効時間に設定されるデフォルト値を示します。このプロパティのデフォルト値はSYSDATEです。この値は変更しないでください。

デフォルトのオープン・レコード終了時間: このプロパティは、タイプ2のSCDにのみ適用可能です。これは、ディメンション内のすべてのレベルについて、新規に作成したオープン・レコードの終了時間として使用される日付値を表します。デフォルト値は「NULL」です。

複数の履歴ロードのサポート このプロパティはタイプ2のSCDにのみ適用可能です。単一ロード操作中に特定のビジネス識別子に対して複数行をロードする場合は、このオプションを選択します。このオプションを選択すると、マッピングは行ベースの非バルク・モードで実行されます。

特定のビジネス識別子に複数のレコードをロードする場合は、タイプ2レベルの有効日がソース演算子または変換演算子からロードされていることを確認してください。

通常、この状態は2つのディメンジョンの更新期間中に複数回ディメンジョン・レコードが変更される場合に発生します。たとえば、ディメンジョンは1日に1回のみ更新しますが、その日のうちにはディメンジョン・レコードの変更は複数回あります。

順不同履歴ロードのサポート このプロパティはタイプ2のSCDにのみ適用可能です。このプロパティをTrueに設定すると、履歴レコードの順不同変更を連続データ・ロードにロードできます。

このプロパティを「複数の履歴ロードのサポート」と併用することもできます。ただし、このプロパティを使用するとパフォーマンスのオーバーヘッドとなります。

Type2 Gap: このプロパティはタイプ2のSCDにのみ適用可能です。レコードがバージョン管理されている場合、古いレコードの終了時間と現行レコードの有効時間の時間間隔を示します。

トリガー属性の値が更新されると、現行レコードはクローズされ、更新された値で新しいレコードが作成されます。古いレコードのクローズおよび現行レコードのオープンは同時に行われるため、両方で同じ値を使用するのではなく、古いレコードの終了時間とオープン・レコードの有効時間の間に時間間隔を置くことをお薦めします。

Type2 Gap Units このプロパティはタイプ2のSCDにのみ適用可能です。「Type2 Gap」プロパティで示されたギャップ間隔を測定するために使用される時間単位を示します。オプションは、「秒」、「分」、「時間」、「日」および「週」です。デフォルト値は「秒」です。

オーファン管理ポリシー

デフォルト・レベル・レコードの作成 ディメンジョン演算子のバインド先のディメンジョンにデフォルト・レベル・レコードを作成する必要があるかどうかを示します。ディメンジョンのビジネス識別子およびサロゲート識別子にデフォルト行を作成する場合は、このプロパティを「はい」に設定します。

デフォルト・レコードで使用する値は、ディメンジョン演算子のバインド先のディメンジョンに選択したオーファン管理ポリシーによって異なります。ディメンジョンのオーファン管理ポリシーとしてメンテナンスなしを指定した場合は、ディメンジョン演算子の各レベルで属性のデフォルト値プロパティを使用してデフォルト・レコードで使用する値を指定します。ディメンジョンのオーファン管理ポリシーをデフォルト親に設定し、デフォルト・レコードに使用する属性値を指定した場合は、これらの値が属性のデフォルト値プロパティに自動的に表示され、デフォルト・レコードに使用されます。ディメンジョン・レベルの属性にデフォルト値を指定しないと、NULL値を使用してデフォルト・レコードが作成されます。

このプロパティを使用して時間ディメンジョンのデフォルト・レコードを生成することもできます。時間ディメンジョンには、オーファン管理ポリシーを設定できるオーファン・タブはありません。ただし、オーファン管理ポリシーが「メンテナンスなし」以外の値に設定されたキューブで時間ディメンションを使用する必要がある場合は、レベル属性の「デフォルト値」プロパティを設定してから、時間ディメンションの「デフォルトのレベル・レコードの作成」プロパティを「はい」に設定して、時間ディメンションのデフォルト・レコードを生成できます。

無効キーのLOADポリシー 無効の親レコードを含むレコードのロードに使用するオーファン管理ポリシーを表します。オプションは、メンテナンスなし、デフォルト親およびオーファン拒否です。

NULLキーのLOADポリシー NULL親キー参照を含むレコードのロードに使用するオーファン管理ポリシーを表します。オプションは、メンテナンスなし、デフォルト親およびオーファン拒否です。

レコード・エラー行 「はい」を選択し、ディメンジョンのロードに使用するソース・データ・セットに含まれるオーファン・レコードをエラー表に格納します。エラー表は「エラー表名」プロパティで表されます。

オブジェクト演算子の拡張

オブジェクトの拡張演算子を使用して、オブジェクト・タイプを拡張し、オブジェクト・タイプを構成する個々の属性を取得できます。

画像expand_object_icon.gifの説明

オブジェクトの拡張演算子をワークスペース・オブジェクト・タイプにバインドおよび同期化できます。マッピングの生成エラーを回避するため、ワークスペース・オブジェクト・タイプを配布してからマッピングを配布する必要があります。

オブジェクトの拡張演算子には、入力グループと出力グループが1つずつあります。入力グループは、個々の属性を取得するために拡張するオブジェクト・タイプを示します。オブジェクトの拡張演算子をワークスペース・オブジェクトにバインドすると、演算子の出力グループにはオブジェクト・タイプを構成する個々の属性が含まれます。

オブジェクトの拡張演算子を含むマッピングを正常に配布するには、次の条件が満たされていることを確認します。

- ソース表を含むスキーマがウェアハウス・スキーマと同じインスタンス上にあること。

- ソース表に対するSELECT権限がウェアハウス・スキーマに付与されていること。

- オブジェクトの拡張演算子で使用されるすべてのオブジェクト・タイプおよびネストされた表に対するEXECUTE権限がウェアハウス・スキーマに付与されていること。

図25-3は、オブジェクトの拡張演算子を使用するマッピングを示したものです。ソース表CUSTOMERSには、SQLオブジェクト・タイプであるデータ型ADDR_TYPEのCUSTOMER_ADDRESS列が含まれています。ただし、ターゲット表CUSTには、Oracle組込みデータ型の4つの異なる列が含まれ、これらには顧客アドレスの各コンポーネントが格納されています。CUSTOMER_ADDRESS列の個々の属性を取得するには、オブジェクト・タイプADDR_TYPEにバインドされるオブジェクトの拡張演算子を作成します。次に、CUSTOMER_ADDRESS列をオブジェクトの拡張演算子の入力グループにマップします。オブジェクトの拡張演算子の出力グループには、CUSTOMER_ADDRESS列の個々の属性が含まれています。これらの出力属性をターゲット演算子にマップします。

図25-3 マッピングの拡張演算子

「図25-3 マッピングの拡張演算子」の説明

マッピングのオブジェクトの拡張演算子の定義手順:

1. オブジェクトの拡張演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. 「オブジェクトの拡張の追加」ダイアログ・ボックスを使用して、オブジェクトを作成または選択します。これらのオプションの詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. 拡張するソース属性をオブジェクトの拡張演算子の入力グループにマップします。
入力オブジェクト・タイプのシグネチャは、オブジェクトの拡張演算子のシグネチャと同じである必要があります。

4. オブジェクトの拡張演算子の出力属性をターゲット属性にマップします。

外部表演算子

外部表演算子を使用して、ワークスペースの外部表に格納されているデータをソーシングできます。これで、外部表データを別のワークスペース・オブジェクトにロードしたり、データの変換を実行できます。たとえば、外部表に格納されているデータをソーシングし、マッピング演算子を使用してこのデータを変換してから、ディメンションまたはキューブにロードできます。

画像external_table_icon.gifの説明

図25-4は、外部表演算子を使用するマッピングを示したものです。外部表演算子EXPENSE_CATEGORY_EXTは、ワークスペース内の同じ名前の外部表にバインドされます。この外部表に格納されているデータは、ディメンジョンEXPENSE_CATEGORIESのロードに使用されます。

図25-4 マッピングの外部表演算子

「図25-4 マッピングの外部表演算子」の説明

外部表演算子を含むマッピングを作成する手順は、次のとおりです。

1. 外部表演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「外部表の追加」ダイアログ・ボックスが表示されます。

2. 「外部表の追加」ダイアログ・ボックスを使用して、外部表を作成または選択します。これらのオプションの詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. 外部表演算子の出力グループの属性をターゲット演算子または中間変換演算子にマップします。

入力パラメータのマッピング演算子

マッピング入力パラメータを使用して、Oracle Warehouse Builderの外部情報をマッピングへの入力として取り込むことができます。

画像input_parm.gifの説明

たとえば、マッピング入力パラメータ演算子を使用して、データをステージング領域にロードするマッピングにSYSDATEを渡すことができます。同じマッピング入力パラメータ演算子を使用して、データをターゲットにロードする別のマッピングにタイムスタンプを渡すこともできます。

マッピングを生成すると、PL/SQLパッケージが作成されます。マッピング入力パラメータは、パッケージのメイン・プロシージャのシグネチャの一部になります。

マッピング入力パラメータ演算子のカーディナリティは1です。この場合、次の演算子への入力として別の行セットと組み合せることができる1つの行セットが作成されます。

各マッピング入力パラメータ演算子は、マッピング入力パラメータ演算子の出力属性となります。これらの出力属性は、マッピング・エディタ内の他の演算子と接続して使用できます。

マッピング入力パラメータ演算子を定義する場合は、データ型とオプションのデフォルト値を指定します。

マッピングのマッピング入力パラメータ演算子の定義手順:

1. マッピング入力パラメータ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. マッピング入力パラメータ演算子を右クリックし、「詳細をオープン」を選択します。
マッピング入力パラメータ・エディタが表示されます。

3. 左の「出力属性」を選択し、「出力属性」タブを表示します。

4. 出力属性を追加するには、「属性」列の空白フィールドをクリックし、出力属性の名前を指定します。また、該当する属性のデータ型、長さ、精度、スケールおよび秒説明などの詳細を指定します。
属性の名前を変更し、データ型やその他の属性のプロパティを定義できます。

5. 「OK」をクリックしてマッピング入力パラメータ・エディタを閉じます。

6. マッピング入力パラメータ演算子の出力属性をターゲット演算子の属性に接続します。
図25-5は、マッピング入力パラメータ演算子を使用するマッピングを示したものです。

図25-5 マッピング入力パラメータが表示されたマッピング・エディタ

「図25-5 マッピング入力パラメータが表示されたマッピング・エディタ」の説明

出力パラメータのマッピング演算子

単一のマッピング出力パラメータ演算子を使用して、PL/SQLマッピングの値をOracle Warehouse Builderの外部アプリケーションに送信します。

画像output_parm.gifの説明

マッピング出力パラメータ演算子は、SQL*Loaderマッピングでは無効です。マッピングを生成すると、PL/SQLパッケージが作成されます。マッピング出力パラメータは、パッケージのメイン・プロシージャのシグネチャの一部になります。

マッピング出力パラメータ演算子にあるのは1つの入力グループのみであり、出力グループはありません。1つのマッピングで使用できるのは、1つのマッピング出力パラメータ演算子のみです。マッピング出力パラメータ演算子にマップできるのは、行セットに関連付けられていない属性のみです。たとえば、定数、入力パラメータ、マッピング前プロセスからの出力、またはマッピング後プロセスからの出力にはすべて、行セットに関連付けられていない属性を含めることができます。

マッピングのマッピング出力パラメータ演算子の定義手順:

1. マッピング出力パラメータ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. マッピング出力パラメータ演算子を右クリックし、「詳細をオープン」を選択します。
マッピング出力パラメータ・エディタが表示されます。

3. 左の「入力属性」タブのリンクをクリックし、「入力属性」ページを表示します。

4. 入力属性を追加するには、「属性」列の空白フィールドをクリックし、入力属性の名前を指定します。また、該当する属性のデータ型、長さ、精度、スケールおよび秒説明などの詳細を指定します。
属性の名前を変更し、データ型やその他の属性のプロパティを定義できます。

5. 「OK」をクリックしてマッピング出力パラメータ・エディタを閉じます。

6. マッピング出力パラメータ演算子の入力属性をターゲット演算子の属性に接続します。
図25-6に、マッピングに使用されるマッピング出力パラメータ演算子の例を示します。

図25-6 出力パラメータ演算子が表示されたマッピング・エディタ

「図25-6 出力パラメータ演算子が表示されたマッピング・エディタ」の説明

マテリアライズド・ビュー演算子

マテリアライズド・ビュー演算子を使用すると、ワークスペースに格納されているマテリアライズド・ビューからのデータのソーシングやマテリアライズド・ビューへのデータのロードが可能です。

画像mview.gifの説明

たとえば、マテリアライズド・ビューに格納されているデータを使用してキューブをロードできます。マテリアライズド・ビュー演算子には、INOUTGRP1と呼ばれるI/Oグループが1つあります。この演算子にはグループを追加できませんが、既存のI/Oグループには属性を追加できます。

マテリアライズド・ビュー演算子は、ワークスペース・マテリアライズド・ビューにバインドおよび同期化できます。生成されたコード・パッケージでのエラーを回避するため、ワークスペース・マテリアライズド・ビューを配布してから、マテリアライズド・ビュー演算子を含むマッピングを生成する必要があります。

図25-7は、マテリアライズド・ビュー演算子を使用するマッピングを示したものです。2つのソース表PRODUCTSおよびALL_SALESからのデータは、ジョイナ演算子を使用して結合されます。次に、このデータはアグリゲータ演算子を使用して集計されます。集計されたデータを使用してマテリアライズド・ビューSALES_MVがロードされます。

図25-7 マテリアライズド・ビュー演算子を含むマッピング

「図25-7 マテリアライズド・ビュー演算子を含むマッピング」の説明

マテリアライズド・ビュー演算子を含むマッピングの作成手順:

1. マテリアライズド・ビュー演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「マテリアライズド・ビューの追加」ダイアログ・ボックスが表示されます。

2. 「マテリアライズド・ビューの追加」ダイアログ・ボックスを使用して、マテリアライズド・ビューを作成または選択します。これらのオプションの詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. マテリアライズド・ビュー演算子の属性をマップします。
マテリアライズド・ビュー演算子をターゲットとして使用している場合は、ソース属性をマテリアライズド・ビュー演算子の属性に接続します。マテリアライズド・ビュー演算子をソースとして使用している場合は、マテリアライズド・ビュー演算子の属性をターゲットに接続します。

キュー演算子

キュー演算子を使用すると、アドバンスト・キューをマッピングでソースまたはターゲットとして使用できます。

データ・ウェアハウスの作成およびメンテナンスで最も重要なタスクは、既存データのリフレッシュ、オペレーショナル・データベースからの新規データの追加などです。キュー演算子を使用してソース・オブジェクトの変更をキャプチャし、その変更をステージング・データベースに、または直接データ・ウェアハウスまたはオペレーショナル・データ・ストアに送信します。

注意:
キュー演算子は同じマッピング内のソースおよびターゲットとして使用することはできません。

キュー演算子の使用

キュー演算子の使用には、次のオプションが用意されています。

- 新しいキュー演算子の定義: キュー演算子をパレットからマッピングにドラッグします。マッピング・エディタにウィザードが表示されます。

- 既存のキュー演算子の編集: キュー演算子を右クリックして「詳細をオープン」を選択します。

キュー演算子の使用例は、「LCRキャスト演算子」を参照してください。

演算子ウィザードまたは演算子エディタのどちらを使用する場合も、次のタスクを実行します。

- キューの選択

- キュー演算子のソース・タイプの選択

- キュー演算子のユーザー定義タイプまたは主タイプの選択

- ソース・オブジェクトの選択

- プロセスのソース変更の指定

実行する必要があるタスクは、キュー演算子がバインドされているアドバンスト・キューのペイロード・タイプによって異なります。SYS.ANYDATA以外のすべてのペイロード・タイプの場合は、キュー演算子のバインド先のキューを選択する必要があります。SYS.ANYDATAタイプのペイロードの場合は、リストされているすべてのタスクを実行する必要があります。

キューの選択

キュー演算子ウィザードの「キューの選択」ページまたはキュー演算子エディタの「選択」ページを使用して、演算子をバインドするアドバンスト・キューを選択します。

このページのノード・ツリーには、現行プロジェクトのアドバンスト・キューがリストされます。キュー演算子をバインドする必要があるアドバンスト・キューを選択します。

キュー演算子のソース・タイプの選択

ソース・タイプの選択ページを使用して、キューをリアルタイム・キューとして使用するか、バッチ・キューとして使用するかを指定します。キューが受信するメッセージのタイプも指定します。

次のいずれかのオプションを選択し、キューのタイプを指定します。

- リアルタイム・ソース
キュー演算子がリアルタイム・ソースであることを示す場合は、このオプションを選択します。リアルタイム・キューを使用すると、ターゲット・オブジェクトのソース変更を瞬時に移入できます。キュー演算子に関連付けられたソース・オブジェクトのすべてのDML変更は、「ソース・オブジェクトの選択」で指定されているように、瞬時にAQに追加されます。

リアルタイム・ソースを含むマッピングはリアルタイム・マッピングといいます。リアルタイム・マッピングを配布する必要があります。その後、キューにソースの変更が加えられるたびに、Oracle Warehouse Builderによって自動的にマッピングが実行され、ターゲット・オブジェクトの変更が公開されます。

- バッチ・ソース
キュー演算子がバッチ・ソースであることを示す場合は、このオプションを選択します。バッチ・マッピングによって、マッピングを明示的に実行する場合のみ、ソースからの変更が加えられたターゲット・オブジェクトが移入されます。

バッチ・ソースを定義する場合は、ウィザードまたはエディタでバッチ・ソースの詳細を指定しません。キュー演算子を定義するその他のタスク関連のすべてのウィザードまたはエディタ・ページは無効になります。

SYS.ANYDATAペイロードを使用するリアルタイム・キューの場合は、キュー内のメッセージの書式を指定する必要があります。次のいずれかのオプションを選択して、メッセージの書式を指定します。

- Oracleキャプチャ・プロセスのメッセージ書式
受信したメッセージの書式がLCRであることを指定します。Oracle Warehouse Builderは、DML変更をキャプチャ、変更をLCRにフォーマット化、LCRをキューに追加します。

LCRの詳細は、「Oracle Streamsの概念および管理」を参照してください。

このオプションを選択する場合は、「ソース・オブジェクトの選択」および「プロセスのソース変更の指定」で説明するように、キャプチャする必要があるソース表とDML操作を指定する必要があります。

- ユーザー定義のメッセージ書式
キューが受信したメッセージがユーザー定義書式であることを指定します。このオプションを選択する場合は、「キュー演算子のユーザー定義タイプまたは主タイプの選択」で説明するように、「ユーザー定義タイプの選択」ページまたは「主タイプの選択」ページを使用してメッセージ書式を表すユーザー定義タイプを指定します。

キュー演算子のユーザー定義タイプまたは主タイプの選択

キューでユーザー定義メッセージ書式を使用する場合は、メッセージ書式を表すユーザー定義タイプを指定する必要があります。「ユーザー定義タイプ」ページまたは「主タイプ」ページを使用して、ユーザー定義タイプを選択します。

このページにはユーザー定義タイプを選択できるノート・ツリーが含まれます。主データ・タイプ・ノードには選択できる主データ・タイプがリストされます。メッセージ書式で主データ・タイプを使用する場合は、このノードを展開して主データ・タイプを選択します。ユーザー定義タイプを含む各Oracleモジュールに個別ノードが表示されます。必要なモジュール・ノードを展開し、キュー・メッセージ書式を表すユーザー定義タイプを選択します。

ソース・オブジェクトの選択

「ソースの選択」ページを使用して、データ変更をキャプチャするソース表を指定します。このページは、キューがOracleキャプチャ・メッセージ書式を使用するリアルタイム・ソースの場合にのみ有効化されます。

「使用可能表」セクションには、データ変更をキャプチャできる表がリストされます。表を選択し、矢印を使用して表を「選択済表」セクションへ移動します。[Ctrl]キーを押しながら表を選択すると、複数の表を選択できます。

プロセスのソース変更の指定

「プロセスのソース変更」ページを使用して、「ソースの選択」ページで選択した表にキャプチャする必要があるDML変更を指定します。このページは、キューがOracleキャプチャ・メッセージ書式を使用するリアルタイム・ソースの場合にのみ有効化されます。

「プロセスへの変更を特定」セクションには、「オブジェクトの選択」ページで選択した表がリストされます。各表に、表名の右のチェック・ボックスを使用してキャプチャする必要があるDML操作を選択します。表に挿入されたすべての行をキャプチャする表に対して、「挿入」を選択します。表のすべての変更をキャプチャするには、表の右の「更新」を選択します。表から削除された行をキャプチャするには、表名の右の「削除」を選択します。

順序演算子

順序演算子は、行ごとに増分する順序番号を生成します。

画像sequence.gifの説明

たとえば、順序演算子を使用すると、データをディメンション表にロードするときにサロゲート・キーを作成できます。順序は、ターゲット演算子の入力または他のタイプの演算子の入力に接続できます。順序の出力は、他の演算子からの出力と組み合せることができます。

順序番号は表とは関係なく生成されるため、同じ順序を複数の表に対して使用できます。同じ順序が複数のセッションで使用できるため、順序番号は連続していない場合があります。

この演算子には、次の出力属性のある出力グループが含まれます。

- CURRVAL: 現在の値から生成されます。

- NEXTVAL: 次の値から始まり、連続して増分する番号の行セットを生成します。

順序は、いずれかのモジュールのワークスペース順序にバインドおよび同期化できます。生成されたコード・パッケージでのエラーを回避するため、ワークスペース順序を生成および配布してから、順序を含むマッピングを配布する必要があります。詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

順序を含むマッピングは、行ベース・モードを使用して生成してください。行が選択されていなくても順序は増分されます。最後の番号から順序を開始する場合、セット・ベースまたはフェイルオーバー・オペレーティング・モードのセット・ベースでSQLパッケージを実行しないでください。モード設定の構成の詳細は、「ランタイム・パラメータ」を参照してください。

図25-8に、順序演算子を使用して表の主キーを自動的に生成するマッピングを示します。順序演算子のNEXTVAL属性は、ターゲット表UNIFIED_PRODUCTSの入力属性にマップされます。ソース表ORACLE_PRODUCTSの他の入力属性は、ターゲットに直接マップされます。

図25-8 マッピングの順序演算子

「図25-8 マッピングの順序演算子」の説明

マッピングの順序演算子の定義手順:

1. 順序演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「順序の追加」ダイアログ・ボックスが表示されます。

2. 「順序の追加」ダイアログ・ボックスを使用して、順序を作成または選択します。これらのオプションの詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. 必要な出力属性を順序演算子からターゲット属性に接続します。

表演算子

表演算子を使用すると、ワークスペースに格納されている表からのデータのソーシングや表へのデータのロードが可能です。

画像table.gifの説明

表演算子は、ワークスペース表にバインドおよび同期化できます。生成されるコード・パッケージでのエラーを避けるため、表演算子を含むマッピングを生成する前にワークスペース表を配布しておく必要があります。

図25-8に、表演算子をソースとターゲットの両方として使用するマッピングを示します。図25-2に、表演算子をターゲットとして使用するマッピングを示します。

マッピングの表演算子の定義手順:

1. 表演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「表の追加」ダイアログ・ボックスが表示されます。

2. 「表の追加」ダイアログ・ボックスを使用して、表を作成または選択します。これらのオプションの詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. 表演算子の属性をマップします。
表をターゲットとして使用する場合は、ソース属性を表演算子の属性に接続します。表をソースとして使用する場合は、表演算子の属性をターゲットに接続します。

表演算子のマージ最適化

表演算子のマージの最適化プロパティを有効化できます。このプロパティをTrueに設定すると、MERGE文で式および変換の呼出しまたは実行が最適化されます。

たとえば、更新操作のみの対象で変換にマップされる列がターゲット表に含まれるようなマッピングについて考えます。旧リリースのOracle Warehouse Builderでは、変換が不要な行も含め、すべての行に対して変換を実行していました。このリリースから、マージの最適化を有効化すると、Oracle Warehouse BuilderはMERGE文の更新部分でのみ変換を呼び出すようになりました。

表演算子のチャンク化

チャンク化を使用すると、マッピングのソース・データをチャンクに分割できます。チャンクはデータ・パーティション・アルゴリズムで定義され、各チャンクは処理後、ターゲットに個別にロードされます。

チャンク化の詳細は、「PL/SQLマッピングのチャンク化について」を参照してください。

表演算子にソース・データ・チャンク化を使用するには、マッピング・キャンバスで表演算子を選択します。プロパティ・インスペクタに演算子のプロパティが表示されます。

シリアルまたはパラレル・チャンク化の両方を実行できます。シリアル・チャンク化を実行するには、「SCDの更新」ノードで「チャンク化有効」および「フィルタ条件のチャンク化」オプションを設定します。パラレル・チャンク化を実行するには、「チャンク化」ノードで「チャンク化式」オプションを設定します。

チャンク化有効

このオプションを選択すると、表演算子で表されるソース表のシリアル・データ・チャンク化を有効化できます。

マッピングの特定のソース表に対してのみデータ・チャンク化を有効にできます。たとえば、マッピングに3つの表演算子が含まれ、1つの表演算子に対してのみデータ・チャンク化を有効にすると、すべてのマッピング機能が各データ・チャンクに1回ずつ、複数回実行されます。ただし、残りの2つの表のチャンク化は有効でないため、これらのソースはマッピングの最初の反復中にのみデータ行を提供します。

チャンク・フィルタ条件

チャンク・フィルタ条件を使用すると、シリアル・チャンク化を実行中にソース・データを複数のチャンクに分割する際に使用する条件を指定できます。各反復中に、チャンク・フィルタ条件によってソース・データがソースからフィルタ処理されます。

Oracle Warehouse Builderには、すべてのチャンク・フィルタ条件で使用する必要がある事前定義マッピング定数get_chunk_iteratorが用意されています。これは1から開始される反復カウントで、チャンク処理で各マップを実行するたびに増分されます。データ・ソースの値を使用する条件を設定できます。

たとえば、フィルタ条件をget_chunk_iterator = INOUTGRP1.CHUNK_GRP_NUMと設定できます。この場合、CHUNK_GRP_NUMはソース表内の属性です。

チャンク化式

チャンク化式を使用して、パラレル・チャンク化に対してソース・データを複数のチャンクに分割する際に使用する条件を設定します。

ETL実行中の一時表の作成

Oracle Warehouse Builderを使用すると、データの抽出中およびロード中に一時表を使用できます。リモート・ソースから複数のターゲットにデータを抽出する必要がある場合には、一時表が役立ちます。

通常、一時ステージング表は、ディメンション演算子のサブマッピング拡張によって自動的に生成されるディメンション・ロード・ロジックで使用されます。これで、ターゲット表で参照を行うことにより発生する問題を回避できます。

次のプロパティを使用すると、ETLの実行中に一時表を作成できます。

一時ステージ表

一時ステージ表のプロパティを「True」に設定すると、表演算子に対する既存のバインドはすべて無視されます。一時ステージング表がマッピングとともに配布され、この表演算子からのすべてのロードおよび抽出操作はステージング表から実行されます。

配布された表のデータベース内での名前は演算子名に基づいており、名前の競合を避けるために一意の識別子が付加されています。マップが削除または再配布されると、表は自動的に削除されます。各マッピングの実行前に、表は自動的に切り捨てられます。

このプロパティをデフォルト値の「False」に設定した場合、このプロパティによる影響はありません。

付加DDL句

このプロパティを使用して、表の作成に使用されるDDL文に付加句を追加します。たとえば、次のTABLESPACE句を使用して、デフォルト表領域TABLESPACE MY_TBLSPCではなく、MY_TBLSPC表領域の一時表に記憶域を割り当てます。

「付加DDL句」プロパティに値を指定しない場合、表作成にこのプロパティによる影響はありません。

一時ステージ表ID

「一時ステージ表ID」プロパティを使用して、コード・ジェネレータで一時ステージ表に使用される内部識別子を指定します。「一時ステージ表ID」プロパティの値が、マッピング内の他の一時ステージ表と同じである場合、配布された同じ一時ステージ表が両方の演算子にバインドされます。これにより、同じマッピング内の同じ一時ステージング表を複数の用途に使用できます。

DMLエラー・ロギング

ターゲット表でDMLエラー・ロギングを実行できます。表演算子のプロパティDMLエラー表名を使用して、その表でDML操作を実行中に発生するエラーを格納するエラー表の名前を指定します。エラー表は、表演算子を含むマッピングを実行すると作成されます。

DMLエラー・ロギングの詳細は、「DMLエラー・ロギングの使用」を参照してください。

データ・ルールおよび表のロード

DMLエラーのロギングのほかに、データ・プロファイリングおよびオーファン管理エラーなどの論理エラーも格納できます。表演算子のエラー表名プロパティを使用して、表演算子に関連付けられたリポジトリ表の論理エラーを格納する表の名前を指定します。表のエラー表名プロパティの名前を指定した場合は、この表に関連付けられた表演算子のエラー表名プロパティには自動的に同じ名前が使用されます。

可変長配列イテレータ演算子

ネストした表または可変長配列タイプのオブジェクトがある場合、可変長配列イテレータ演算子を使用して、この表タイプの値を反復できます。

画像varrayiterator.gifの説明

この演算子は、表タイプ属性をソースとして受け入れ、ネストした表に定義されているベース要素タイプまたは可変長配列タイプの値を生成します。演算子がバインドされている場合、演算子に対して調整演算が実行されます。バインドされていない可変長配列イテレータ演算子については、調整演算はサポートされていません。

可変長配列イテレータ演算子は、バインドされている演算子またはバインドされていない演算子として作成できます。バインドされていない可変長配列イテレータ演算子は同期化または検証できません。この演算子の入力グループと出力グループは1つずつのみです。他のデータ型の属性を持つ入力グループも使用できます。ただし、少なくとも1つの表タイプ属性が必要です。

出力グループの属性は、入力グループの属性のコピーです。唯一異なるのは、出力グループは、演算子がバインドされている表タイプ(入力グループ属性の1つ)のかわりに、入力グループのベース要素タイプと同じ属性を持つという点です。入力グループは編集できます。出力グループは編集できません。

図25-9は、可変長配列イテレータ演算子を含むマッピングを示したものです。

図25-9 マッピングの可変長配列イテレータ演算子

「図25-9 マッピングの可変長配列イテレータ演算子」の説明

マッピングの可変長配列イテレータ演算子の定義手順:

1. 可変長配列イテレータ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「可変長配列イテレータの追加」ダイアログ・ボックスが表示されます。

2. 「可変長配列イテレータの追加」ダイアログ・ボックスで、バインドされていない演算子またはバインドされている演算子を選択します。

- バインドされていない演算子を選択すると、属性のない可変長配列イテレータ演算子が作成されます。これらの属性は手動で作成する必要があります。

- バインドされている演算子を選択する場合は、ツリーに表示されている使用可能なネストした表または可変長配列タイプの1つを選択する必要があります。出力属性はベース要素と同じです。

3. 「OK」をクリックします。

4. 可変長配列イテレータ演算子の属性をマップします。

バインドされていない演算子の場合、マッピング・エディタのキャンバスでバインドされていない可変長配列イテレータ演算子を右クリックし、「詳細をオープン」を選択します。これにより、「可変長配列イテレータ」エディタのダイアログ・ボックスが開きます。入力グループに属性を追加するには、「追加」ボタンを使用します。変更できるのは、出力グループの属性のデータ型のみです。

ビュー演算子

ビュー演算子を使用すると、ワークスペースに格納されているビューからのデータのソーシングやビューへのデータのロードが可能です。

画像view.gifの説明

ビュー演算子は、ワークスペース・ビューにバインドおよび同期化できます。生成されたコード・パッケージでのエラーを回避するため、ワークスペース・ビューを配布してから、ビュー演算子を含むマッピングを生成する必要があります。

マッピングのビュー演算子の定義手順:

1. ビュー演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「ビューの追加」ダイアログ・ボックスが表示されます。

2. 「ビューの追加」ダイアログ・ボックスを使用して、ビューを作成または選択します。これらのオプションの詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. ビュー演算子の属性をマップします。
ビューをターゲットとして使用する場合は、ソース属性をビュー演算子の属性に接続します。ビューをソースとして使用する場合は、ビュー演算子の属性をターゲットに接続します。

インライン・ビューのビュー演算子の使用

ビュー演算子を使用してマッピングにインライン・ビューを作成できます。インライン・ビューの場合は、次の演算子プロパティを設定する必要があります。

インライン: 演算子がインライン・ビューであることを示す場合に選択します。

ビューの問合せ: インライン・ビューの問合せテキストを指定する場合に使用します。問合せテキストには、演算子の属性名に対応する列の別名が必要です。

リモートおよびOracle以外のソースおよびターゲット演算子の使用

マッピングのターゲット演算子は、Oracle Databaseのリモート・ロケーションまたはOracle以外のデータベースのロケーション(ゲイトウェイ経由のSQLサーバーまたはDB2など)のオブジェクトにバインドできます。このような演算子はゲートウェイ・ターゲットと呼びます。データベース・リンクを使用して、これらのターゲットにアクセスします。データベース・リンクはロケーションを使用して作成されます。OracleデータベースからリモートでSAP表にアクセスするデータベース・リンクを生成できないため、SAPターゲットはサポートされていません。

マッピングでリモート・ターゲットやゲートウェイ・ターゲットを使用する場合は、次の各項で説明する特定の制限が課されます。

- Oracle以外またはリモート・ターゲットの使用制限

- Oracle以外およびリモート・ターゲットに関するOracle Warehouse Builderの対応策

Oracle以外またはリモート・ターゲットの使用制限

マッピングでリモート・ターゲットまたはゲートウェイ・ターゲットを使用する場合は、次の制限が適用されます。

- ターゲット演算子のロード・タイプのプロパティは「TRUNCATE/INSERT」に設定できません。
このため、マッピングを検証すると、検証エラーが発生します。

- ゲートウェイ・ターゲットの場合、ターゲット演算子のロード・タイプのプロパティを「INSERT/UPDATE」に設定すると、ロード・タイプを「INSERT」に設定した場合と同じ結果になります。

- DML文でRETURNING句はサポートされません。
RETURNING句を使用すると、行ベース・モードを使用してターゲットにロードされた行のROWIDを取得できます。これらのROWIDは、ランタイム監査システムによって記録されます。ただし、リモート・ターゲットまたはゲートウェイ・ターゲットの場合、RETURNING句は生成されず、NULLはROWIDフィールドのランタイム監査システムに渡されます。

- セット・ベース・モードの場合、データはOracleデータベースからリモート・ターゲットまたはゲートウェイ・ターゲットにはロードできません。セット・ベースのフェイルオーバーを含め、他のすべてのモードはサポートされます。
ターゲット演算子の「オペレーティング・モード」プロパティをセット・ベースに設定すると、ランタイム・エラーが発生します。

- 行ベースのバルク処理はサポートされていません。

注意:
リリース11.2.0.3以降は、セット・ベースから行ベースへのフェイルオーバー機能は非推奨です。

Oracle以外およびリモート・ターゲットに関するOracle Warehouse Builderの対応策

マッピングでリモート・ターゲットまたはゲートウェイ・ターゲットを使用する場合は、特定の制限があるアクティビティに対してはデフォルトの対応策が使用されます。これらの対応策は情報用のみです。これらの対応策を有効にするために、なんらかの作業を明示的に実行する必要はありません。

リモート・ターゲットまたはゲートウェイ・ターゲット用として使用されるデフォルトの対応策は、次のとおりです。

- ターゲットのロード・タイプを「INSERT/UPDATE」または「UPDATE/INSERT」(Oracle9iデータベースの場合)、および「UPDATE」(Oracle Database 11gの場合)に設定すると、このマッピングをセット・ベース・モードで実装するMERGE文が生成されます。ただし、MERGE文はリモート・ターゲットまたはゲートウェイ・ターゲットに対しては実行できません。このため、マッピングでリモート・ターゲットまたはゲートウェイ・ターゲットを使用する場合は、MERGE文なしでコードが生成されます。生成されるコードは、PL/SQL生成モードがOracle8iに設定されている場合に生成されるコードと同じです。

- リモート・ターゲットまたはゲートウェイ・ターゲットにロードされるデータベース順序を参照するセット・ベースのDML文の場合、GLOBAL_NAMESパラメータをTRUEに設定する必要があります。マッピング用のコードの生成時にマッピングにリモート・ターゲットまたはゲートウェイ・ターゲットが含まれる場合、このパラメータはTRUEに設定されます。

- リモート・ターゲットまたはゲートウェイ・ターゲットへの複数表挿入の場合、複数表挿入文ではなく、INSERT文が表ごとに生成されます。

- リモート・データベースまたはOracle以外のデータベースへのバルク挿入実行中は、バルク処理コードは生成されません。かわりに、一度に1行を処理するコードが生成されます。演算子のバルク生成プロパティは無視されます。

注意:
リモート・ターゲットまたはゲートウェイ・ターゲットで使用されるロード・タイプは、他のOracleターゲット演算子で使用されるものと同じです。ロード・タイプのプロパティの詳細は、「Oracleターゲット演算子のロード・タイプ」を参照してください。

フラット・ファイルのソースおよびターゲット演算子の使用

フラット・ファイル演算子を使用すると、フラット・ファイルをマッピングのソースまたはターゲットとして使用できます。次の項では、フラット・ファイル演算子の使用について説明します。

フラット・ファイル演算子

フラット・ファイル演算子を使用して、データをフラット・ファイルから抽出、またはフラット・ファイルにデータをロードします。

画像flatfile.gifの説明

フラット・ファイル演算子は、マッピングでソースまたはターゲットとして使用できます。ただし、同じマッピング内では2つは相互に排他的です。フラット・ファイルのソースとターゲットのコード生成言語は異なります。このため、マッピングには、この項の後で説明する制限付きのフラット・ファイル、リレーショナル・オブジェクトおよび変換が混在する場合があります。

フラット・ファイル演算子には、次のオプションがあります。

- 前にインポートしたフラット・ファイルの使用

- マッピングへの新規フラット・ファイルのインポートおよびバインド

- マッピングでの新規フラット・ファイルのソースまたはターゲットの定義

マッピングでのフラット・ファイル演算子の使用手順:

1. フラット・ファイル演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. 「フラット・ファイルの追加」ダイアログ・ボックスを使用して、オブジェクトを作成または選択します。これらのオプションの詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. フラット・ファイル演算子からターゲットへ属性をマップ、またはソースからフラット・ファイル演算子へ属性をマップします。

マッピングでソースおよびターゲットとしてフラット・ファイルを使用する例は、第7章、「SQL*Loader、SAPおよびコード・テンプレート・マッピングの使用」を参照してください。

フラット・ファイル・ソース演算子

フラット・ファイルのデータは、フラット・ファイル演算子または外部表演算子を使用してマッピングに取り込むことができます。大量のデータをロードする場合、フラット・ファイルからロードすることにより、DIRECT PATH SQL*Loaderオプションを使用できるようになり、パフォーマンスが向上します。

大量のデータをロードしない場合、外部表機能で使用可能な多くのリレーショナル変換を利用できます。

関連項目:
外部表とフラット・ファイルの比較の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

ソースとして使用する場合、フラット・ファイル演算子は、SQL*Loaderユーティリティを使用してフラット・ファイルからデータを読み取る行セット・ジェネレータとして機能します。フラット・ファイル・ソース演算子は、フラット・ファイル・ターゲットまたは外部表へのマップ用としては使用しないでください。フラット・ファイル・ソース演算子を使用してマッピングを設計する場合は、次の演算子を使用できます。

- フィルタ演算子

- 定数演算子

- データ・ジェネレータ演算子

- 「順序演算子」

- 式演算子

- 変換演算子

- 外部表演算子を除くその他のリレーショナル・ターゲット・オブジェクト

注意:
順序、式または変換演算子を使用する場合、SQL*Loaderの直接ロード設定は構成パラメータとして使用できません。

マッピングでフラット・ファイルをソースとして使用する場合、マッピングを正常に配布するために、ターゲット・ロケーションからフラット・ファイル・ロケーションへのディレクトリを作成してください。

フラット・ファイル・ターゲット演算子

フラット・ファイル・ターゲットを使用したマッピングでは、データを表の行にロードするのではなく、データをフラット・ファイルにロードするPL/SQLパッケージが生成されます。

注意:
1つのマッピングは、最大50のフラット・ファイル・ターゲット演算子を含むことができます。

既存のフラット・ファイルは、レコード・タイプが単一でも複数でも使用できます。複数のレコード・タイプのフラット・ファイルをターゲットとして使用する場合は、1つのレコード・タイプに対してのみマップできます。同じソースからフラット・ファイルのすべてのレコード・タイプをロードする場合、同じフラット・ファイルをターゲットとしてマッピングに再ドロップし、別のレコード・タイプにマップできます。この例は、「SQL*Loaderマッピングでの参照整合性を確認するためのダイレクト・パス・ロードの使用」を参照してください。または、ロードするレコード・タイプごとに異なるマッピングを作成してください。

新規フラット・ファイル・ターゲットの作成の詳細は、『Oacle Warehouse Builderソースおよびターゲット・ファイル』を参照してください。

フラット・ファイル・ソースおよびターゲット演算子のプロパティの設定

フラット・ファイル演算子のプロパティは、ソースまたはターゲットのいずれかとして設定できます。フラット・ファイルのロード・タイプおよび「1行目のフィールド名」を設定できます。他のすべての設定は読取り専用であり、フラット・ファイルをインポートした方法によって異なります。

フラット・ファイルのロード・タイプ

リストからロード・タイプを選択します。

- 挿入: 新規ターゲット・ファイルを作成します。既存のターゲット・ファイルがある場合は、以前のファイルは新規に作成したファイルで置き換えられます。

- 更新: ターゲット・ファイルが存在しない場合は新規ターゲット・ファイルを作成します。既存のターゲット・ファイルが存在する場合は、そのファイルが追加されます。

- なし: ターゲット・ファイルのデータ上では操作は実行されません。この設定はテスト目的の場合に便利です。ターゲットに影響することなく、すべての変換および抽出が実行されます。

1行目のフィールド名

演算子の1行目のフィールド名を書き込む場合、このプロパティを「True」に設定します。それ以外の場合は、「False」に設定します。

26 データ・フロー演算子

マッピング・エディタには、事前に作成済の一連のマッピング演算子が用意されています。これらの演算子を使用して、ソースからターゲットへのデータ移動方法を指定する共通の変換を定義できます。

この章では、マッピングに演算子を使用してデータを変換する方法について説明します。マッピングの設計に役立つウィザードが用意されている演算子があります。また、SQL式の記述に役立つ式ビルダーを起動できる演算子もあります。

この章の内容は次のとおりです。

- データ・フロー演算子のリスト

- 演算子ウィザードについて

- 式ビルダーについて

データ・フロー演算子のリスト

次のデータ・フロー演算子があります。

- アグリゲータ演算子

- Anydataキャスト演算子

- デュプリケータ解除演算子

- 式演算子

- フィルタ演算子

- ジョイナ演算子

- LCRキャスト演算子

- LCRスプリッタ演算子

- 参照演算子

- ピボット演算子

- マッピング後プロセス演算子

- マッピング前プロセス演算子

- 集合演算演算子

- ソーター演算子

- スプリッタ演算子

- 副問合せフィルタ演算子

- テーブル・ファンクション演算子

- 変換演算子

- アンピボット演算子

演算子ウィザードについて

設計に関して様々な決定を行う必要がある演算子の場合、演算子の定義を指示するウィザードが用意されています。各ウィザードは、実行する必要がある手順の概要を示すようこそページから始まります。各ウィザードは、選択内容をリストするサマリー・ページで終わります。ウィザードでナビゲートするには「次へ」および「戻る」を使用します。演算子ウィザードを閉じるには、任意のウィザード・ページで「終了」をクリックします。

次の演算子には、ユーザーをサポートするウィザードがあります。

- 参照演算子

- Match-Merge演算子。「Match-Merge演算子による重複ソース・レコードの削除」を参照してください。

- Name and Address演算子。詳細は、「Name and Address演算子を使用した正しい名前および住所データのクレンジングおよび訂正」を参照してください。

- キュー演算子

- ピボット演算子

- アンピボット演算子

演算子を定義する作業への習熟後は、ウィザードを無効化し、かわりに演算子エディタを使用することもできます。演算子エディタを起動するには、マッピング・エディタで演算子を右クリックして「詳細を開く」を選択します。演算子エディタでは、ウィザードと同じ内容が、ウィザード・ページではなくタブ形式で表示されます。

演算子ウィザードまたは演算子エディタのどちらを使用する場合も、演算子ごとに次の各ページを完了する必要があります。

- 演算子ウィザードの一般ページ

- 演算子ウィザードのグループ・ページ

- 演算子ウィザードの入力ページと出力ページ

- 演算子ウィザードの「接続の入力」

演算子ウィザードの一般ページ

一般ページを使用して、演算子の名前と説明(オプション)を指定します。デフォルトでは、ウィザードにより演算子の種類が名前として割り当てられます。たとえば、新しいピボット演算子のデフォルト名は「ピボット」です。

演算子ウィザードのグループ・ページ

「グループ」タブで、グループ情報を編集します。

各グループには、名前、方向および説明(オプション)が表示されます。ほとんどの演算子のグループ名は変更できますが、どの演算子の場合もグループの方向は変更できません。グループの方向には、「入力」、「出力」、「I/O」のいずれかを指定できます。

演算子によっては、「グループ」タブでグループを追加および削除できます。たとえば、入力グループを「ジョイナ」に、出力グループを「スプリッタ」に追加します。

演算子ウィザードの入力ページと出力ページ

演算子エディタには、「グループ」タブに表示されているグループのタイプごとに、タブが1つずつ表示されます。これらのタブには、属性名、データ型、長さ、精度、スケールおよび説明(オプション)が表示されます。

演算子によっては、属性を追加、削除および編集できます。マッピング・エディタでは、編集できないプロパティはグレー表示になります。たとえば、データ型がNUMBERの場合、精度とスケールは編集できますが、長さは編集できません。

演算子ウィザードの「接続の入力」

接続の入力ページを使用して、属性を演算子にコピーおよびマッピングします。選択する属性は、入力グループのマッピング・メンバーとなります。「使用可能な属性」パネルには、マッピングの全演算子のリストが表示されます。

演算子の接続の入力ページで指定する手順は次のとおりです。

1. 「使用可能な属性」パネルで、グループ全体または個別の属性を選択します。
名前で特定の属性またはグループを検索するには、「検索」にテキストを入力し、「実行」を選択します。次の一致を検索するには、「実行」を再度選択します。

複数のグループまたは属性を選択するには、[Shift]キーを押しながら選択します。異なるグループの属性を選択するには、最初にジョイナ演算子または集合演算子を使用してグループを結合する必要があります。

2. 2つのパネルの間にある右矢印ボタンを使用して、選択内容を「マップ済属性」パネルに移動します。
接続の入力のリストからグループまたは属性を削除するには、左矢印を使用できます。選択内容が入力グループから削除され、ソース演算子と現行の演算子の間のデータ・フロー接続も削除されます。

式ビルダーについて

一部のデータ・フロー演算子の場合は式を作成する必要があります。式とは、データを変換したり制限を指定する文または句です。これらの式は、SQL文の一部としてインラインで使用されるSQLの各部を構成します。それぞれの式は、データ・フロー演算子のロールにより決定されるタイプに属しています。式を作成するには、式ビルダーを使用する方法と、演算子または演算子の属性のプロパティ・インスペクタの「式」フィールドに入力する方法があります。

「式ビルダー」のオープン

フィルタ、ジョイナおよびアグリゲータなどの演算子の場合、演算子のプロパティ・インスペクタから式ビルダーを開くことができます。式、データ・ジェネレータ、スプリッタおよび定数などの演算子の場合は、演算子属性のプロパティ・インスペクタから式ビルダーを開くことができます。

式ビルダーを開く手順は、次のとおりです。

1. マッピング・エディタで、式ビルダーを開く演算子または属性を選択します。
プロパティ・インスペクタに、選択した演算子または演算子属性のプロパティが表示されます。

2. プロパティ・インスペクタで、式ビルダーを使用して設定するプロパティの省略記号ボタンをクリックします。
図26-1のような式ビルダーが表示されます。

図26-1 式ビルダー・インタフェース

「図26-1 式ビルダー・インタフェース」の説明

3. 式を作成するには、次の方法があります。

- 式ビルダーの右側にある「式」フィールドにテキストを入力します。

- 左パネルの「入力」タブと「変換」タブからアイテムをドラッグし、右側の「式」フィールドにドロップします。

- 左パネルの「入力」タブと「変換」タブでアイテムをダブルクリックします。

- 「式」フィールドの下で使用可能な算術演算子のボタンをクリックします。

4. 「検証」をクリックします。
式の構文が正確であることが検証されます。

5. 「OK」をクリックし、式を保存して式ビルダーを閉じます。

「式ビルダー」のユーザー・インタフェース

「式ビルダー」の構成は、次のとおりです。

- 左側のパネルのナビゲーション・ツリーには次の2つのタブが表示されます。

- 「入力」タブ:入力パラメータのリストです。

- 「変換」タブ: パブリックOracle事前定義済ライブラリ、パブリックOracleカスタム・ライブラリ、プライベートOracleライブラリにある事前定義済のファンクションおよびプロシージャのリストです。

- 「式」フィールド: 右側のパネルの上部には、「式」フィールドがあります。このフィールドを使用して、式の入力や編集を行います。

- 算術演算子ボタン: 「式」フィールドの下には、算術演算子ボタンがあります。このボタンを使用すると、手動で入力しなくても式を作成できます。使用できる算術演算子は、アクティブなデータ・フロー演算子のタイプによって異なります。

- その他: アクティブな式タイプに該当する、使用可能なSQL句のリストです。
Oracle9i Databaseからは、DECODEファンクションのかわりにCASEファンクションの使用が推奨されています。これは、DECODEファンクションではSQLしか生成できませんが、CASEファンクションではSQLとPL/SQLの両方を生成できるためです。式にDECODEファンクションを使用すると、コード生成時にCASEファンクションに変換されます(該当する場合)。つまり、すべてのオペレーティング・モード(セットベース、行ベースなど)でDECODEの機能を配布でき、Oracle Databaseのリリース(8.1、9.0以上)を意識しなくても済みます。

たとえば、次のファンクション

DECODE (T1.A, 1, 'ABC', 2, 'DEF', 3, 'GHI', 'JKL')

は、次のファンクションに変換されます。

CASE T1.A WHEN 1 THEN 'ABC'
WHEN 2 THEN 'DEF'
WHEN 3 THEN 'GHI'
ELSE 'JKL'

- 「検証」ボタン: このボタンを使用して、式ビルダーの現在の式を検証します。式を検証すると、その式で参照しているすべてのマッピング・オブジェクトにワークスペース・オブジェクトが関連付けられていることを確認できます。式ビルダーで作成できる式は、演算子の入力とそのプロジェクトで実行可能な変換のみです。この制限によって、演算子の外部の要素が変更されたときの式の無効化を防止できます。配布データベースがデザイン・ワークスペースと異なる場合、データベースが式を受け付けないことがあります。式が有効でも、データベースに対して不適切である場合にこの現象が発生します。このような場合、式エラーは配布時にのみ検出できます。

- 「検証結果」フィールド: 右側のパネルの下部には、「検証結果」フィールドがあります。このフィールドの右側にある「検証」ボタンを選択すると、このフィールドでは検証結果が表示されます。

アグリゲータ演算子

アグリゲータ演算子は、入力データの合計や平均などのデータ集計を計算します。集計データを含む出力行セットを提供します。

画像aggregator.gifの説明

アグリゲータ演算子では、入力グループ1つと出力グループ1つを使用します。出力グループの場合は、集計の実行対象の属性を指定するGROUP BY句を定義します。オプションで、集計データを制限するHAVING句も指定できます。出力グループ内の各属性は同じカーディナリティを持ちます。出力行セットの行数は、入力行数以下になります。

アグリゲータ演算子を1つ使用して複数の集計を実行できます。アグリゲータの出力グループに含まれる属性ごとに異なる集計関数を指定できますが、各アグリゲータでサポートされているGROUP BY句とHAVING句はそれぞれ1つのみです。

図26-2に、アグリゲータ演算子を使用してチャネルと製品の売上合計を集計するマッピングを示します。出力属性の式プロパティを使用して、属性TOTAL_SALESに適用する集計関数がSUMであることを指定しています。アグリゲータ演算子のGroup Byプロパティを使用して、売上の集計対象にチャネルIDと製品IDを指定しています。このアグリゲータ演算子の出力は、ターゲット表SALES_FACTにマップされます。

図26-2 マッピングに使用したアグリゲータ演算子

「図26-2 マッピングに使用したアグリゲータ演算子」の説明

マッピングのアグリゲータ演算子を定義する手順は、次のとおりです。

1. アグリゲータ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. キャンバス上で、アグリゲータ演算子の入力グループにソース属性を接続します。

3. アグリゲータ演算子を右クリックして「詳細を開く」を選択します。
アグリゲータ・エディタが表示されます。

4. 「出力属性」タブで、集計データを格納する出力属性を作成します。
出力属性を作成するには、「属性」列の下の空のセルをクリックして属性名を入力します。属性に割り当てられているデフォルトのデータ型はNUMBERです。データ型や、データ型に関連のある他のパラメータ(長さ、精度など)は変更できます。

出力属性が入力属性を(「入力」グループから)参照する場合、「Group By句」は自動的に設定されます。

図26-2に示した例では、出力属性を追加して属性名をTOTAL_SALESに変更しています。

5. 各出力属性の式を定義します。属性に関連付けられた「式」列に式を直接入力できます。または、「式」フィールドの右側にある省略記号ボタンをクリックして式ビルダーを表示します。式ビルダーの使用方法の詳細は、「集計関数の式」を参照してください。
図26-2に示した例では、式をSUM(amount_sold)として定義しています。

6. 「OK」をクリックしてアグリゲータ・エディタを閉じます。

7. 演算子についてGroup By句とHaving句(オプション)を定義します。手順の詳細は、「Group By句」および「Having句」を参照してください。

8. アグリゲータ演算子の出力グループに含まれる属性を、ターゲットの入力グループにマップします。

Group By句

Group By句では、グループごとに1行ずつサマリー行を戻すように受信行セットをグループ化する方法を定義します。グループ化の方法は、入力グループの順序付き属性リストで指定します。デフォルトのGROUP BY句はNONEです。

Group By句を定義する手順は次のとおりです。

1. マッピング・エディタのキャンバスでアグリゲータ演算子を選択します。
プロパティ・インスペクタにアグリゲータ演算子のプロパティが表示されます。

2. 「Group By句」プロパティの右側の省略記号のボタンをクリックします。
「式ビルダー」が表示されます。

3. ソース・データのグループ化に使用する属性を「入力」タブから「アグリゲータ」セクションの「Group By句」に移動します。複数の属性を選択する場合は、カンマで属性を区切ります。

4. 「OK」をクリックします。

Having句

Having句は、出力グループで戻される行のグループをこの条件がtrueとなるグループに限定するブール条件です。この句を指定しなければ、全グループの全サマリー行が出力グループで戻されます。

Having句を定義する手順は、次のとおりです。

1. マッピング・キャンバスでアグリゲータ演算子を選択します。
プロパティ・インスペクタにアグリゲータ演算子のプロパティが表示されます。

2. Having句プロパティの右にある省略記号のボタンをクリックします。
図26-3に示すように、Having句の「式ビルダー」ダイアログ・ボックスが表示されます。

図26-3 「Having句」ダイアログ・ボックス

「図26-3 Having句ダイアログ・ボックス」の説明

3. アグリゲータ演算子のHaving句を表す式を作成します。
たとえば、図26-3にHaving句式の例を示します。

4. 「OK」をクリックして式ビルダーを閉じます。

5. 編集した属性をアグリゲータ演算子の出力グループからターゲットの属性にマップします。

集計関数の式

属性の式プロパティでは、その属性に対して実行する集計関数を定義します。グループ化されていない各出力属性に対して、集計式の結果をDISTINCTにするかALLにするかを選択します。ALLがデフォルトです。次に例を示します。

- ALL: Select AVG(ALL sal) from emp;

- DISTINCT: Select AVG(DISTINCT sal) from emp;

結果DISTINCTでは、平均を計算する前にすべての重複行が削除されます。

ALL集計では、すべての行の平均値が結果として返されます。

集計関数が不要である場合は、NONEを指定します。属性の集計にNONEを指定すると、その属性は結果としてのGROUP BY関数に自動的に追加されます。

出力属性について式を定義する手順は、次のとおりです。

1. マッピング・キャンバス上のアグリゲータ演算子で、集計関数を定義する出力属性を選択します。
プロパティ・インスペクタに、選択した出力属性のプロパティが表示されます。

2. 「式」プロパティの右側の省略記号のボタンをクリックします。
図26-4のような「式」ダイアログ・ボックスが表示されます。

図26-4 「式」ダイアログ・ボックス

「図26-4 「式」ダイアログ・ボックス」の説明

3. 「関数」リストから、集計関数を選択します。
集計関数として、AVG、COUNT、GROUP_ID、GROUPING、GROUPING_ID、MAX、MEDIAN、MIN、None、STDDEV、STDDEV_POP、STDDEV_SAMP、SUM、VAR_POP、VAR_SAMP、VARIANCEおよびWB_RT_CONCATを選択できます。

図26-2に示した例では、SUMを集計関数として選択します。

4. 集計式としてALLまたはDISTINCTを選択します。

5. 「属性」リストから、集計する属性を選択します。
図26-2に示した例では、リストからamount_sold属性を選択します。

6. 「前述の値の使用」をクリックして、「式」フィールドに集計式を表示します。

7. 「OK」をクリックします。

Anydata Cast演算子

Anydataキャスト演算子を使用すると、Sys.AnyDataタイプのオブジェクトを主タイプまたはユーザー定義タイプに変換できます。Anydataキャスト演算子はAnydata属性をソースとして受け入れ、オブジェクトを目的のタイプに変換します。

画像anydatacast.gifの説明

Anydataキャスト演算子は、ユーザー定義データ型および基本データ型と併用されます。キャスト演算子はフィルタとして機能します。出力グループの属性数はn+1で、nは入力グループの属性数です。この演算子では、入力グループ1つと出力グループ1つを使用します。入力グループは編集できます。出力グループは編集できません。出力グループに可能な操作は、属性名の変更とキャスト先のデータ型の変更のみです。他の出力グループ属性のデータ型は変更できません。

入力グループに属性を接続できます。各出力グループは、Anydata属性を含めて入力グループの属性のコピーを取得します。キャスト操作のソースとして入力グループのAnydata属性を選択する必要があります。

Anydata属性のキャスト先となるデータ型を変更した場合は、次の手順を実行する必要があります。

1. キャスト操作のターゲットである出力グループの属性を編集します。

2. 属性のデータ型を変更します。

Anydataキャスト演算子はバインドされていないため、同期化操作はサポートされていません。

図26-5に、Anydataキャスト演算子を使用するマッピングを表示します。

図26-5 マッピングに使用したAnydataキャスト

「図26-5 マッピングに使用したAnydataキャスト」の説明

マッピングのAnydataキャスト演算子を定義する手順は、次のとおりです。

1. Anydataキャスト演算子をマッピング・エディタのキャンバスにドロップします。
「Anydataキャスト」ダイアログ・ボックスが表示されます。このダイアログ・ボックスのツリーに表示される親ノードの1つを開くと、基本データ型(Anydata以外)が表示されます。他の親ノードはそれぞれモジュールに対応しています。

2. キャストのターゲット・タイプを選択して「終了」をクリックします。

3. ANYDATAキャスト演算子を右クリックして「詳細をオープン」を選択します。
ANYDATA_CASTエディタが表示されます。

4. 「入力属性」タブで、「追加」をクリックして属性の名前、データ型およびその他のプロパティを指定します。

5. 「OK」をクリックして演算子エディタを閉じます。

6. Anydataキャスト演算子の出力グループの属性をターゲットにマップします。

デュプリケータ解除演算子

デュプリケータ解除演算子を使用すると、マッピングが表すSELECTコードにDISTINCT句を挿入してソースから重複データを削除できます。

画像deduplicator.gifの説明

たとえば、ソース表からディメンションにデータをロードした場合に、ディメンション内の上位レベルがソース内で重複していることがあります。

ソース行セットからのすべての属性が、デュプリケータ解除演算子を経由する必要があります。ソース行セットの出力の一部とデュプリケータ解除演算子の出力の一部を同じターゲット表にマッピングすることはできません。

表26-6は、PRODUCTSディメンションにデータをロードする間にデュプリケータ解除演算子を使用してソースの重複値を削除するマッピングを示しています。ソース表では、同じカテゴリに複数の製品が属していることがあるため、カテゴリIDの重複値が含まれています。デュプリケータ解除演算子により、これらの重複値が削除され、カテゴリIDの個別値がPRODUCTSディメンションにロードされます。

図26-6 マッピングに使用したデュプリケータ解除

「図26-6 マッピングに使用したデュプリケータ解除」の説明

重複を削除する手順は、次のとおりです。

1. デュプリケータ解除演算子をマッピング・エディタのキャンバスにドロップします。

2. ソース演算子の属性をデュプリケータ解除演算子のI/Oグループに接続します。

3. デュプリケータ解除演算子グループの属性をターゲット演算子の属性に接続します。

式演算子

式演算子を使用して、演算子の出力パラメータの1つについて非手続き型アルゴリズムを定義するSQL式を記述します。

画像expression.gifの説明

式テキストには、入力パラメータ名、変数名およびライブラリ・ファンクションを組み合せて使用できます。SQLタイプの式を使用して、入力行セットのカーディナリティを保持しながら行セット内の行の列値データを変換するには、式演算子を使用します。この種の式を作成するには、出力属性の属性のプロパティ・ウィンドウを開き、式ビルダーを開きます。

デフォルトでは、式演算子には入力グループ1つと出力グループ1つが含まれます。

図26-7に、式演算子を使用するマッピングを示します。トランザクション表ORACLE_ORDERSには、製品ID、単価、販売数量などのオーダー詳細が含まれています。ORDERS_FACT表には、チャネル、製品およびオーダー間の売上合計額の集計が含まれています。式演算子は、単価を販売数量で乗算して製品ごとの売上高を計算するために使用されています。アグリゲータ演算子により、チャネル・コード、製品IDおよびオーダーID間の売上高が集計されてから、ターゲット表がロードされます。

図26-7 マッピングに使用した式演算子

「図26-7 マッピングに使用した式演算子」の説明

集計関数の記述には、式演算子を使用しないでください。この場合はアグリゲータ演算子を使用します。アグリゲータ演算子の詳細は、「アグリゲータ演算子」を参照してください。

また、式が集計演算子に接続されている場合、配布コンパイル・エラーが発生する可能性があるため、式演算子の式の後に行末または連続ダッシュ(--)のコメントを使用しないでください。その理由は、このシナリオにおける集計演算子によってカッコが追加され、そのカッコの1つがコメントによって削除されることで、カッコが欠落するためです。

マッピングの式演算子を定義する手順は、次のとおりです。

1. 式演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. 式演算子を右クリックして「詳細をオープン」を選択します。
式エディタが表示されます。

3. 「出力属性」タブで、「属性」列の下の空のセルをクリックして出力属性を作成します。割り当てられているデフォルトのデータ型はNUMERICです。データ型およびデータ型に関連付けられた他のパラメータを変更できます。

4. 出力属性に使用される式を定義します。
出力属性の「式」フィールドに式を直接入力します。または、「式」フィールドの右側にある省略記号ボタンをクリックし、式を直接指定できる「式ビルダー」ダイアログ・ボックスを表示します。

5. 「OK」をクリックして式エディタを閉じます。

6. 式出力属性を該当するターゲット属性に接続します。

フィルタ演算子

フィルタ演算子を使用して、行を条件付きでフィルタできます。

画像filter.gifの説明

ソース演算子をフィルタ演算子に接続し、フィルタ条件を適用して、行のサブセットを次の演算子に送ります。フィルタ演算子により、生成されたPL/SQLコードのSQL文またはIF文にWHERE句が挿入されて、ソースからターゲットへのデータがフィルタされます。フィルタ条件は「式ビルダー」で指定します。フィルタ条件には、サポートされるデータ型をすべて使用でき、定数を含めることもできます。

フィルタ演算子に使用するのはI/Oグループ1つのみで、このグループをソース行セットとターゲット行セットの両方に接続できます。結果の行セットは、ブール・フィルタ条件式に基づいてソース行セットがフィルタされた後のサブセットです。ターゲット側で必要な行はすべて、フィルタ演算子を通過する必要があります。フィルタをバイパスしてターゲットに直接挿入できる行セットはなくなります。

フィルタ演算子を含むマッピングの場合、フィルタ条件式をセット・ベース表示モード用にWHERE句として表示するコードが生成されます。元のフィルタ条件でのフィルタ入力名は、ソース表の実際の列名をソース表の別名で修飾した名前で置換されます。

図26-8に、フィルタ演算子を使用して、選択したデータをターゲット表に移動するマッピングを示します。ORACLE_ORDERS表には、オーダー・データが含まれています。フィルタ演算子の「フィルタ条件」プロパティを使用して、最終更新日が現在のシステム日付である記帳済オーダーのみをORDERS表に移動しています。

図26-8 マッピングに使用したフィルタ

「図26-8 マッピングに使用したフィルタ」の説明

マッピングのフィルタ演算子を定義する手順は、次のとおりです。

1. フィルタ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. ソース属性をフィルタ演算子のI/Oグループに接続します。

3. フィルタ演算子のヘッダーを選択します。
プロパティ・インスペクタにフィルタ演算子のプロパティが表示されます。

4. 「フィルタ条件」プロパティの右にある省略記号のボタンをクリックします。
フィルタ条件の「式ビルダー」ダイアログ・ボックスが表示されます。

5. 式ビルダーを使用してフィルタ条件式を定義します。

6. 「OK」をクリックして式ビルダーを閉じます。

7. フィルタ演算子の出力をターゲットのI/Oグループに接続します。

マッピングの自己結合の追加

マッピング・エディタを使用すると、表、ビューまたはソース・データ演算子をそれ自体に対して再帰的に結合できます。

ツリー・ウォーキングとも呼ばれ、表をそれ自体に戻し再帰的に結合することにより、階層のレコードを取得できます。たとえば、従業員データが含まれる表があり、その従業員データには各従業員の管理者が含まれていると想定します。ツリー・ウォーキングを使用すると、特定の管理者に報告する従業員の階層を決定できます。

ツリー・ウォーキングを実行する手順は、次のとおりです。

1. マッピングを作成し、表、ビューまたはマテリアライズド・ビュー演算子など、階層定義が含まれている目的のソース・データ演算子を追加します。

2. ソース・データ演算子をフィルタ演算子に接続します。

3. フィルタ演算子に、最初の2語にCONNECT BYを使用してフィルタ条件を定義します。フィルタ演算子にはCONNECT BY論理のみを含めることに注意してください。つまり、フィルタにANDまたはOR論理を含めないでください。

ジョイナ演算子

ジョイナ演算子は、異なるカーディナリティを持つ様々なソースの複数の行セットを結合し、単一の行セットの出力を生成します。

画像joiner.gifの説明

一般的に、ジョイナ演算子はSQLのJOIN句に対応します。SQLの結合の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

ジョイナ演算子は、各ソース行セットの列値を他の1つ以上の行セットに関連付ける、結合条件と呼ばれるブール条件を使用します。ジョイナ演算子により、生成されたSQL問合せにWHERE句が挿入されます。Oracle9i以上で実行された場合、ANSI完全外部結合がサポートされています。

ジョイナ演算子は、内部結合、外部結合、等価結合および非等価結合に使用できます。また、「マッピングの自己結合の追加」で説明するように、フィルタ演算子を使用して自己結合を作成することもできます。

「結合条件」で説明するように、すべてのジョイナに対して結合条件を設定する必要があります。

外部結合を定義するジョイナの場合、外部結合タイプを指定する方法は2つあります。

- 「結合条件」で説明するように、結合条件にOracle SQL外部結合演算子(+)を挿入します。

- 「入力ロールと内部および外部結合の結合」で説明するように、入力グループにジョイナ入力ロールを設定します。

注意:

- 外部結合の指定に、ジョイナ入力ロール設定と結合条件の両方を使用することはできません。

- データ・ソースとジョイナの間にある演算子により、複合SQLまたはPL/SQLを生成できます。

- 副問合せを生成する介在する演算子(アグリゲータなど)を持たないネストしたジョイナは、通常、生成されたコードでは1つの結合に統合されます。複数のネストした結合演算子を使用するマッピング用に生成されたコードで確認できます。

結合条件

ジョイナの「結合条件」プロパティにより、ジョイナの生成されたコードでの結合条件が決定されます。外部結合演算子(+)を挿入することにより、結合条件を使用して内部結合、左外部結合、右外部結合または完全外部結合を作成することも可能です。

結合条件の関係演算子は、等号に限られません。>、<、!=、>=、<=などの他の演算子も使用できます。結合条件では集計関数はサポートされていません。

結合条件およびデカルト積

結合問合せに使用する2つの表の結合条件を指定しなければ、2つの表のデカルト積が戻されます。

デフォルトの結合条件および外部キー

入力行セットが外部キーを介して関連付けられている場合は、その関係を使用してデフォルトの結合条件を形成できます。

注意:
結合条件を編集する前にジョイナ演算子の入力グループにソースをマッピングした場合、Oracle Warehouse Builderでは、デフォルトの結合条件のみを作成できます。

このデフォルト条件を使用するか、またはさらに変更できます。ソースが外部キーを介して関連付けられていない場合は、結合条件を手動で定義する必要があります。

デフォルトの外部キーにより重複するWHERE句が生成される場合は、ジョイナ演算子により、デフォルトの結合条件を作成する際に、重複する句が削除されます。これは、結合条件で複数の外部キーを参照している場合に発生することがあります。たとえば、表T1の外部キーFK1が表T2の一意キーUK1を指し、表T2の外部キーFK2が表T1の一意キーUK2を指している場合、結合条件は次のようになります。

T1.A = T2.A AND T1.B = T2.B
/*All instances of FK1 -> UK1 are reduced to one WHERE clause*/
AND T2.B = T1.B AND T2.C = T1.C
/*All instances of FK2 -> UK2 are reduced to one WHERE clause */

この場合、ジョイナ演算子により次の結合条件が生成されます。

T2.A = T2.A AND T1.B = T2.B AND T2.C = T1.C

外部結合での結合条件の使用

Oracle SQLを使用する結合条件では、外部結合演算子(+)を使用して生成されたSQLに外部結合を作成できます。

注意:
結合入力ロールは、ジョイナ内での外部結合の動作を制御する際に、外部結合演算子のかわりに使用することが可能で、複数の入力グループを持つ複雑な結合式で外部結合演算子を使用するよりも、維持しやすい場合があります。
詳細は、「入力ロールと内部および外部結合の結合」を参照してください。

次に例を示します。

SELECT ...
FROM A, B
WHERE A.key = B.key (+);

この例では、左外部結合が作成されます。

完全外部結合での結合条件の使用

ターゲットがOracle9i以降をベースとしている場合、ジョイナ演算子では結合条件を使用した完全外部結合もサポートされます。完全外部結合条件を指定するには、関係演算子の両側に外部結合演算子を付ける必要があります。次に例を示します。

T1.A (+) = T2.B (+)

この結合式によって次のコードが生成されます。

SELECT ...
FROM T1 FULL OUTER JOIN T2 ON (T1.A = T2.B);

注意:
Oracle Warehouse Builderでは条件述語の両側に"(+)"記号を使用することによって指定される完全外部結合を使用できますが、この構造は、Oracle SQL構文では無効です。したがって、このような結合条件は、コードの生成時にOracle Warehouse BuilderによってANSI SQL構文に変換されます。

結合条件から完全外部結合を作成する際、次の点に注意してください。

- ANSI結合構文が生成されるのは、ジョイナに完全外部結合条件を指定した場合のみです。それ以外の場合は、Oracle SQLの次の結合構文が生成されます。

SELECT ...
FROM T1, T2
WHERE T1.A = T2.B;

- 完全外部結合条件と結合条件の両方を同じジョイナで指定できます。ただし、同じソースに対して両方の条件を指定した場合、コード生成には限定的な方の結合タイプが使用されます。たとえば、次のように指定するとします。

T1.A(+) = T2.A(+) and T1.B = T2.B

T1.B = T2.BはT1とT2の間の完全外部結合条件よりも限定的であるため、Oracle Warehouse Builderでは完全外部結合のかわりに内部結合文が生成されます。

- 完全外部結合条件と部分外部結合条件を同じジョイナで指定することはできません。完全外部結合を指定する場合、その結合条件の他の部分では部分外部結合を指定できません。たとえば、T1.A (+) = T2.A (+) and T2.B = T3.B (+)は無効です。

- Oracle8iで完全外部結合を作成するには、複数のSQL文を使用する必要があります。
「式ビルダー」では、完全外部結合に次の構文を使用できます。

TABLE1.COL1 (+) = TABLE2.COL2 (+)

コード・ジェネレータでは、前述の式が次のようなANSI SQL 1999の完全外部結合文に変換されます。

SELECT ...
FROM table1 FULL OUTER JOIN table2 ON (table1.col1 = table2.col2)

この構文は、Oracle8iではサポートされません。Oracle8iデータベースに対して完全外部結合を指定すると、妥当性エラーになります。

Oracle Warehouse Builder 10.2ではANSI構文を使用して完全外部結合を変換しますが、Oracle Warehouse Builder 11.2では条件句を省略してクロス結合を作成し、次の検証エラー・メッセージを出力します。

VLD - 1526: 演算子{0}の結合条件の述語に"(+)"付きで異なる表の2つの列が含まれます。これは、ANSI SQL構文の使用時にのみサポートされます。「ANSI SQL構文」の構成が「FALSE」に設定されている場合、述語は1つの外部結合表のみを参照します。結合条件を変更するか、「ANSI SQL構文」を「True」に設定してください。

結合条件のグループ化

複数の条件が含まれる3つ以上の表の結合を作成する場合、どの条件をグループ化するか明確に示す必要があります。

複数の条件が含まれる結合を定義する際、次のガイドラインに従ってください。

- 結合条件で句を強制的に1つの条件に組み合せるには、丸括弧を使用します。
たとえば、結合条件が次のように指定されているとします。

A.ID = B.ID AND (B.ID (+) = C.ID (+) AND B.ID > 10)

Oracle Warehouse Builderによって次のコードが生成されます(この例ではANSIコード生成が指定されていると想定します)。

SELECT ...
FROM
"A"  "A"
JOIN   "B"  "B" ON ( ( "A"."ID" = "B"."ID" ) )
FULL OUTER JOIN   "C"  "C" ON ( "B"."ID" = "C"."ID"  )  WHERE
( "B"."ID" > 10 )

最後の句のB.ID (+) > 10は、どの結合条件にも含まれず、WHERE句として扱われます。

次のように、丸括弧を使用して句をグループ化したとします。

A.ID = B.ID AND (B.ID (+) = C.ID (+) AND B.ID > 10)

Oracle Warehouse Builderにより次のコードが生成されます。

SELECT ...
FROM
"A"  "A"
JOIN   "B"  "B" ON ( ( "A"."ID" = "B"."ID" ) )
FULL OUTER JOIN   "C"  "C" ON ( ( "B"."ID" = "C"."ID" and "B"."ID"  > 10 )/*
OPERATOR JOINER JOIN CONDITION */ )

句B.ID (+) > 10がFULL OUTER JOIN条件に含まれます。

- 外部結合条件記号(+)を使用してWarehouse Builderが結合内で条件を生成するよう強制できます。
たとえば、次の結合条件があったとします。

A.ID = B.ID AND B.ID (+) = C.ID (+) AND B.ID (+) > 10

句B.ID (+) > 10に外部結合演算子が存在するため、Oracle Warehouse Builderは別のWHERE句を生成するかわりに、結合内に条件B.ID > 10を含めるよう強制されます。

注意:
このように(+)演算子を使用した強制的なグループ化は、Oracle Warehouse Builderのコード生成に固有の動作で、標準Oracle SQLでの同じ式とは同じ結果が得られない場合があります。

次のコードが生成されます。

SELECT ...
FROM
"A"  "A"
JOIN  ( SELECT
/* B.INOUTGRP1 */
"B"."ID" "ID",
"B"."NAME" "NAME",
"B"."ATTR" "ATTR"
FROM
"B"  "B" ) "B" ON ( ( ( "A"."ID" = "B"."ID" ) ) AND ( ( "B"."ID" > 10 ) ) )
FULL OUTER JOIN   "C"  "C" ON ( "B"."ID" = "C"."ID"  )

この場合、丸括弧が使用されていないため、条件B.ID (+) > 10は最初のON句に移動されています。

注意:
ジョイナ演算子が含まれるマッピング用にANSI SQLコード生成を構成する場合、条件が予期したとおりにグループ化されているか、生成されたコードを確認することをお薦めします。曖昧な条件により、生成されたコードでの条件のグループ化が意図したものと異なる場合があります。
次のいずれかの方法を使用して結合条件を強制的にグループ化できます。

- マッピング内で複数のネストしたジョイナ演算子を使用し、各演算子に2つの入力グループを使用します。これにより、結合条件およびグループ化が明示的に処理されます。

- または、「ANSI SQL構文」パラメータをfalseに設定します。これにより、WHERE句が「結合条件」プロパティで指定されたとおりに生成されます。

コード・テンプレートのマッピングおよび結合条件のグループ化

コード・テンプレートのマッピングで、前述のガイドラインに従っていない場合、妥当性チェックで警告が表示され、次のいずれかのアクションが実行されます。

- 最後に記された条件が隣接する条件と組み合せられない場合、最後の条件はWHERE句に移動されます。
C.ENAME = A.ENAME AND A.DEPTNO = B.DEPTNO AND C.SAL (+) > 1000という条件を例にとります。条件C.SAL (+) > 1000はC.ENAME = A.ENAMEと組み合せられます。ただし、条件の位置とこの組合せには一貫性がないため、妥当性の警告が表示されます。

- 最後に記された条件が隣接する条件と組み合せられる場合、組み合せられたグループ条件が形成されます。
A.DEPTNO = B.DEPTNO AND C.ENAME = A.ENAME AND C.SAL (+) > 1000という条件を例にとります。条件C.SAL (+) > 1000はC.ENAME = A.ENAMEと組み合せられます。したがって、組み合せられた条件C.ENAME = A.ENAME AND C.SAL (+) > 1000の一部に含められます。

結合条件および結合順序

デフォルトで、ジョイナ内の入力グループの順序が結合順序として使用されます。

ANSI SQL構文を生成する際、結合条件で特定の順序を使用することにより、異なる結合順序を強制できます。次に例を示します。

SELECT ...
FROM T1 FULL OUTER JOIN T2 ON (T1.A=T2.A)
JOIN T3 ON (T2.A=T3.A);

T1、T3、T2のように、入力グループを別の順序で作成する場合を考えます。Oracle Warehouse Builderにより次のコードが生成されます。

SELECT ...
FROM T1 JOIN T3 ON (1=1)
JOIN T2 ON (T1.A=T2.A and T2.A=T3.A);

T1とT3の結合時には、結合条件は指定されません。Oracle Warehouse Builderにより条件1=1(特にブールのtrue)が入力され、指定した2つの条件を使用して(T1 JOIN T3)とT2が結合されます。

ここで、入力グループがT1、T3、T2の順序で作成されるが、生成されるFROM句の順序を最初の例のようにT1、T2、T3とする場合の例を考えます。この場合、生成されるコードに出現する順序でソースを記述するため、次のような結合条件を作成します。

T1.A(+) = T2.A(+) AND T2.A = T3.A

結合条件のフィルタ

フィルタ条件は結合後に適用されます。たとえば、次の結合を考えてみます。

Input1.c --- +
Input2.c --- +---> Joiner
Input3.c --- +

この結合に次の条件が適用されるとします。

- 条件1: Input1.c (+) = Input2.c (+)

- 条件2: Input2.c = Input3.c

- 条件3: Input1.c is not null

最初の2つの条件はtrue結合ですが、第3の条件はフィルタ条件です。ANSIコードを生成する場合、結合条件が次のように解析されます。

SELECT ...
FROM Input1 FULL OUTER JOIN Input2 ON (Input1.c = Input2.c)
JOIN Input3 ON (Input2.c = Input3.c)
WHERE Input1.c IS NOT NULL;

結合条件およびSAPソース

結合条件は、SQLコンテキスト内で定義されます。SAPソースの場合、ABAPコンテキスト内でSQLの結合条件を解析してABAPコードを生成できます。ABAPで可能なのは、定義済の外部キー関係での結合のみです。

入力ロールと内部および外部結合の結合

ジョイナ入力グループの結合入力ロールを使用すると、入力データ・フローに対する内部結合および外部結合の使用を柔軟に制御できます。

入力グループに使用できる結合入力ロールは、標準(デフォルト)、外部結合および完全外部結合です。Oracle Warehouse Builderでは、これらの設定に基づいて、内部結合、左および右外部結合、および完全外部結合でANSI SQLまたはOracle SQLを生成できます。作成する結合の種類を指定するために、各入力グループに対して入力グループの順序および入力ロール設定を使用します。

注意:
外部結合を制御するために結合式で外部結合演算子を使用する場合、すべてのグループの結合入力ロールを標準に設定します。

結合入力ロールを使用した外部および内部結合タイプの指定

2つの隣接する入力グループを考慮する際、生成されるコードでのこれらのグループ間の関係は、2つのグループの結合ロールのプロパティ設定によって決定されます。入力グループINGRP1がソース表T1に接続され、入力グループINGRP2がソース表T2に接続されているとします。結合関係は、次のルールに従って決定されます(優先順)。

表26-1 結合入力ロールおよび結果の結合タイプ

入力ロール

結果の結合操作

両方のロールを標準に設定(デフォルト)

内部結合

T1 JOIN T2

いずれかのロールを完全外部結合に設定

完全外部結合

T1 FULL OUTER JOIN T2

INGRP1ロールを標準に設定

INGRP2ロールを外部に設定

左外部結合

T1 LEFT OUTER JOIN T2

INGRP1ロールを外部に設定

INGRP2ロールを標準に設定

右外部結合

T1 RIGHT OUTER JOIN T2

両方のロールを外部に設定

「2つ以上の入力グループにおける外部結合の入力ロール」を参照

2つ以上の入力グループにおける外部結合の入力ロール

3つ以上の入力グループがある場合、Oracle Warehouse Builderは入力グループを反復し、入力表をリンクする一連の結合を生成します。

いずれかの入力グループの入力ロールが標準または完全外部結合である場合、生成される結合は表26-1「結合入力ロールおよび結果の結合タイプ」で説明されているルールを使用して決定されます。

ただし、2つの連続する入力グループが両方とも入力ロールが外部結合である場合、生成される結合は、前に生成された結合により、左外部結合または右外部結合である可能性があります。生成される結合タイプを決定するルールを、表26-2「連続する外部結合入力ロールで生成される結合」に示します。この表で、INGRP1、INGRP2およびINGRP3はそれぞれ表T1、T2およびT3に関連付けられていると想定します。

表26-2 連続する外部結合入力ロールで生成される結合

入力ロール

結果の結合操作

2つの入力グループが最初の2つの入力グループ

INGRP1 = 外部

INGRP2 = 外部

右外部結合

T1 RIGHT OUTER JOIN T2

生成された直前の結合が左外部結合

INGRP1 = 標準

INGRP2 = 外部

INGRP3 = 外部

左外部結合

T1 LEFT OUTER JOIN T2
LEFT OUTER JOIN T3

生成された直前の結合が左外部結合ではない

INGRP1 = 外部

INGRP2 = 外部

INGRP3 = 外部

右外部結合

T1 RIGHT OUTER JOIN T2
RIGHT OUTER JOIN T3

マッピングでのジョイナ演算子の使用手順

演算子をマッピングに追加する手順は、次のとおりです。

1. ジョイナ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. 3つ以上のソースを結合する必要がある場合、ジョイナ演算子を右クリックして「詳細を開く」を選択します。
ジョイナ・エディタが表示されます。

「グループ」タブで、必要に応じてさらに入力グループを作成します。

入力グループを作成するには、「グループ」列の下の空のセルをクリックして新しいグループ名を入力します。新しいグループに割り当てられているデフォルトの方向はInputです。

入力グループの追加後、「OK」をクリックします。

3. 各入力グループについて、ソースの出力グループを必要なジョイナの入力グループに接続します。
出力属性が、対応する入力のデータ型と一致するデータ型を使用して作成されます。

4. 必要に応じて、各ソースの入力ロールを変更します。
「入力ロールと内部および外部結合の結合」を参照してください。

5. ジョイナ演算子のヘッダーを選択します。
プロパティ・インスペクタにジョイナ演算子のプロパティが表示されます。

6. 結合条件プロパティの右にある省略記号のボタンをクリックします。
「式ビルダー」ダイアログ・ボックスが表示されます。

7. 結合条件を定義します。
「結合条件」を参照してください。

8. 「OK」をクリックして式ビルダーを閉じます。

9. ジョイナ演算子の出力グループの属性をターゲットにマップします。

例: ジョイナ演算子の使用

図26-9に、ジョイナ演算子を使用するマッピングを示します。2つのソース表ORACLE_ORDERSおよびORACLE_ORDER_LINESが結合され、この2つの表のデータが結合されて1つの表となっています。ジョイナ演算子の出力は、ターゲット表DAILY_ORDERSに渡されます。

図26-9 マッピングに使用したジョイナ

「図26-9 マッピングに使用したジョイナ」の説明

LCRキャスト演算子

LCRキャスト演算子を使用して、LCR(論理変更レコード)オブジェクトを構成する列に拡張します。これにより、LCRに含まれた挿入、更新または削除操作を使用して、ターゲット・オブジェクトを更新できます。通常、LCRキャスト演算子は、ソースの変更をターゲット・オブジェクトに公開するリアルタイム・マッピングで、キュー演算子の直後に使用されます。

画像lcr_cast_oper.gifの説明

LCRキャスト演算子は、そのLCRキャスト演算子に変更レコードが格納されている表とバインドする必要があります。LCRキャスト演算子には、1つの入力グループと1つの出力グループがあり、この両グループは編集できません。この演算子にグループを追加することはできませんが、既存の入力または出力グループの名前を変更できます。入力グループには、SYS.LCR $_ROW_RECORDタイプの属性Eventが含まれ、ここにLCRが格納されます。SYS.ANYDATA属性を入力グループと接続する必要があります。出力グループには、LCRキャスト演算子のバインド先の表の列が含まれます。

LCRキャスト演算子をマッピングに追加する手順は、次のとおりです。

1. LCRキャスト演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「LCRキャストの追加」ダイアログ・ボックスが表示されます。

2. LCRキャスト演算子をバインドする表を選択します。

3. ソース演算子の出力属性をLCRキャスト演算子の入力グループに接続します。

4. LCRキャスト演算子の出力グループの属性を、LCRに格納された変更を公開するターゲット表に接続します。

図26-10は、マッピングでのLCRキャスト演算子の使用例を示しています。キュー演算子ADVANCED_QUEUEは、ソース表の変更レコードを格納するアドバンスト・キューを表します。LCRキャスト演算子は、ソース表からの変更レコードの転送先の表にバインドされています。

AQには、PAYLOAD属性で表されるペイロードが含まれています。ペイロードには、変更データがLCRの形で格納されます。PAYLOAD属性をLCRキャスト演算子にマッピングし、LCRキャスト演算子にバインドされているターゲット表に含まれた列にLCRを展開します。その後、LCRキャスト演算子の出力属性をターゲット表ORDERSにマップします。

図26-10 LCRキャスト演算子を使用するマッピング

「図26-10 LCRキャスト演算子を使用するマッピング」の説明

LCRスプリッタ演算子

LCRスプリッタ演算子を使用して、データ・フローのパスに沿って変更を異なる表に送ります。

画像lcr_splitter_oper.gifの説明

LCRスプリッタには入力グループ1つと出力グループ1つが含まれます。両方のグループに、タイプSYS.LCR$_ROW_RECORDのEventという1つの属性が含まれます。入力グループはLCRオブジェクトを表します。入力または出力グループは追加できません。

参照演算子

参照演算子を使用して、表、ビュー、キューブまたはディメンションのデータを検索します。たとえば、参照演算子を使用するのは、キューブをロードするマッピングを定義する場合や、ディメンションのサロゲート・キーを定義する場合などです。

同じ参照演算子を使用して複数のオブジェクトのデータを検索できます。

関連項目:
サロゲート識別子の詳細は、『Oracle Warehouse Builder概要』を参照してください。

画像key_lookup.gifの説明

検索するキーには、任意の一意な値を使用できます。RDBMSで定義されているように主キーまたは一意キーである必要はありません。参照演算子は、指定されたキー入力を使用して検索表からデータを読み取り、一致する行を正確に1つ戻します。この演算子は、入力キーごとに1行を戻します。同じマッピングに複数の参照演算子を使用できます。

参照演算子の出力は、検索オブジェクトの列に対応します。参照操作によって複数のレコードが戻される場合、それらのレコードのうちのどれを選択するかを指定できます。

参照ウィザードには入力グループ1つと出力グループ1つが含まれます。追加の入力および出力グループを作成できます。各入力グループの属性は、同じデータ・ソースから接続されている必要があります。各出力グループは、1つの検索オブジェクトにバインドされます。各参照は、検索値として、1つの入力グループのみの属性を使用します。つまり、各出力グループは、1つの入力グループのみに関連付けられています。各出力グループのツールチップに、関連付けられている入力グループと、使用される検索条件が表示されます。

出力グループはオブジェクトにバインドされているため、属性はオブジェクト内の列です。出力属性の「式」プロパティを使用して、オブジェクト列から導出される追加の出力属性を作成できます。

参照の各出力属性には、DEFAULT VALUEというプロパティがあります。DEFAULT VALUEプロパティは、入力値の参照表で値が検出されない場合に送信行セットでNULLのかわりに使用されます。生成済コードでは、NVLファンクションが使用されます。参照の結果は、常に外部結合文となります。

データの検索元となる表、ビューまたはディメンションは、参照演算子にバインドされます。参照演算子を、バインド先のワークスペース・オブジェクトと同期化できます。ただし、ワークスペース・オブジェクトを参照演算子と同期化することはできません。演算子の同期化の詳細は、「演算子およびワークスペース・オブジェクトの同期化」を参照してください。

参照演算子の使用時の注意点

参照演算子は1行しか戻しません。参照の結果が複数行を戻す場合、戻り値としてどの行を使用するかを指定する必要があります。戻される行の最初の行または最後の行のいずれかを選択できます。

最初または最後の行を選択するため、参照結果が戻される順序が重要になります。SQL問合せでは順序が必ずしも反復可能ではないため、参照結果をソートするために適切なORDER BY句を指定する必要があります。決定できない状況にならないよう、目的のレコードが検索結果として確実に選択されるような、詳細な順序の句を指定する必要があります。

図26-11に、キューブのロードに使用されるマッピングを示します。4つのソース表のデータはジョイナ演算子を使用して結合されます。ただし、ソース表のデータに含まれているのはチャネル名のみです。このキューブをロードするには、サロゲート識別子の値が必要です。参照演算子を使用してCHANNELSディメンションのサロゲート識別子を検索し、この値をキューブにロードします。

図26-11 マッピングに使用した参照演算子

「図26-11 マッピングに使用した参照演算子」の説明

参照演算子の使用

参照演算子の使用には、次のオプションが用意されています。

- 新しい参照演算子の定義: 参照演算子をパレットからマッピングにドラッグします。マッピング・エディタにウィザードが表示されます。

- 既存の参照演算子の編集: 参照演算子を右クリックして「詳細を開く」を選択します。

演算子ウィザードと演算子エディタのどちらを使用する場合も、次のページを完了します。

- 名前

- グループ

- 検索表

- 入力属性

- 出力属性

- 検索条件

- 複数の一致行

- タイプ2履歴検索

- 一致行なし

名前

名前ページまたは「名前」タブを使用して、参照演算子の名前と説明(オプション)を指定します。

グループ

グループ・ページを使用して、入力グループと出力グループをそれぞれ1つ指定します。

参照演算子の場合、入力グループは複数の属性に含まれるソースのデータを表します。出力グループは行に変換されたデータを表します。

デフォルトの入力グループと出力グループの名前を変更したり、説明を追加できます。また、必要に応じて追加の入力および出力グループを作成できます。入力または出力グループを作成するには、グループの名前を指定し、方向(入力または出力)を選択し、説明(オプション)を追加します。

検索表

すべての出力グループは検索表に関連付けられます。検索表ページまたは「検索表」タブを使用して、各出力グループに関連付ける検索表を選択します。

「グループ」フィールドには、参照演算子に対して定義されているすべての出力グループが表示されます。出力グループを選択し、出力グループのバインド先の検索表を指定します。検索表を選択するには、「グループ」フィールドの下のリストをクリックします。検索が実行可能なオブジェクトがツリーに表示されます。検索オブジェクトを選択します。

参照演算子のすべての出力グループについて、この手順を繰り返します。

入力属性

入力属性ページを使用して、各入力グループの入力属性を定義します。

「グループ」フィールドには、参照演算子に対して定義されているすべての入力グループが表示されます。入力グループを選択し、そのグループの属性を作成します。各入力属性には、「デフォルト値」というフィールドが含まれます。このフィールドを使用して、入力属性のデフォルト値を指定します。

出力属性

「出力属性」フィールドを使用して、各出力グループの出力属性を作成します。それぞれの出力グループは検索オブジェクトにバインドされているため、バインドされた検索オブジェクトの列が自動的にグループの出力属性として表示されます。必要な追加の出力属性を作成します。これらには、式を使用して既存の属性から導出される値を使用できます。

「グループ」リストには、参照演算子に対して定義されている出力グループが表示されます。出力グループを選択すると、そのグループの属性が表示されます。出力属性を作成するには、「名前」フィールドの空のセルをクリックして属性名を入力します。その後、データ型、デフォルト値、説明など、属性の追加パラメータを指定します。

出力属性には、「式」という追加パラメータがあります。この列を使用して、出力属性の値を決定するために使用される式を指定します。「式」列に式を直接入力できます。または、「式」列の右側にある省略記号ボタンをクリックして式ビルダー・インタフェースを表示します。このインタフェースを使用して式を定義します。

検索条件

検索ページを使用して、検索の実行対象となるオブジェクトの詳細を入力します。このオブジェクトは、検索結果と呼ばれます。現行のプロジェクトに属する任意の表、ビューまたはディメンションについて検索を実行できます。

検索ページで、出力グループを対応する入力グループに関連付けることもできます。各出力グループは、1つの入力グループにバインドされている必要があります。入力グループにより、出力グループが示す検索表で検索する値が提供されます。

「出力」フィールドには参照演算子の出力グループが示され、「入力」フィールドには入力グループが示されます。出力グループを選択し、「入力」リストからバインド先の入力グループを選択します。すべての出力グループについて、この手順を繰り返します。

出力グループが対応する入力グループに倍土された後、検索を実行するために比較する必要のある出力属性と入力属性をマッピングする必要があります。「出力」フィールドで出力グループを選択し、ページの一番下の領域を使用して検索条件を指定します。この領域に表示される内容は、簡易編集かフリースタイル編集のいずれを選択したかによって異なります。

簡易編集を選択した場合、2つの列を持つ表が表示されます。「検索表の列」を使用して、「入力属性」列で選択した属性の比較対象となる検索表の列を選択します。

フリースタイル編集を選択した場合、式ビルダーと同様のインタフェースが表示されます。これを使用して、検索条件として使用される条件を定義します。検索条件には、等価または不等価条件を使用できます。

検索用のディメンション・レベルを選択すると、オプションとしてディメンション・レベルのサロゲートIDとビジネスID、およびディメンション・データを格納するデータベース表の主キーが表示されます。

複数の一致行

複数の一致行ページを使用して、検索によって複数の行が戻された場合に、検索結果のどの行を検索結果として選択するかを定義します。指定された検索条件が複数のレコードに一致した場合、複数の行が戻されます。

各出力グループについて、検索操作によって複数の行が戻された場合のアクションを定義する必要があります。

「出力グループ」フィールドで出力グループを選択し、次の各項で説明するように、このグループの値を指定します。

複数の行が戻された場合に実行するアクションの選択

次のいずれかのオプションを選択します。

- エラー: 複数行により、マッピングが失敗します。
このオプションを選択すると、この参照演算子が含まれるマッピングを実行した場合、選択した出力グループの検索操作で複数の行が戻されると、マッピングの実行が失敗します。

- すべての行(結果行の数が入力行の数と異なる可能性があります)
このオプションを選択すると、選択した出力グループについて参照演算子によって複数の行が戻された場合、検索結果としてすべての行を戻します。

- 単一行の選択
このオプションを選択すると、選択した出力グループについて参照演算子によって複数の行が戻された場合、戻された行の中から1行のみを検索結果として選択する必要があります。このオプションを選択した場合、このオプションの下にあるセクションのフィールドが有効になります。これらのフィールドを使用して、検索結果セットからどの行を検索結果として選択するかを指定します。

検索結果として選択する行の指定

前のセクションで「単一行の選択」オプションを選択した場合のみ、検索操作によって生成された複数行から選択する1行を選択する必要があります。

各出力グループについて、検索操作によって戻された複数の行から選択する必要のある行に関し、次の情報を指定します。

行の位置: 次のオプションから1つを選択します。

- 任意の行
参照演算子によって戻された結果セットから、任意の1行が検索結果として選択されます。

- 最初の行
参照演算子によって戻された結果セットから、最初の行が検索結果として選択されます。

- 最後の行
参照演算子によって戻された結果セットから、最初の行が検索結果として選択されます。

- n番目の行
参照演算子によって戻された結果セットから、n番目の行が検索結果として選択されます。「n番目の行」フィールドのリストをクリックして、nの値を指定します。

結果セットの順序

このセクションを使用して、結果セット(複数行が含まれる)の行の順序を決定する方法を指定します。検索結果として結果セットから最初、最後、または n番目の行を選択する場合、列の順序が重要になります。目的の行が選択されるよう、順序を決定する条件を正しく指定します。

「使用可能」セクションには、「出力グループ」フィールドで選択した出力グループの検索表の列が表示されます。検索結果セットの行の順序を決定するために使用する列を選択し、矢印を使用して「選択済」セクションに移動します。「選択済」セクションで、結果セットの順序と同じ順序で(上から下に)列が表示されていることを確認します。たとえば、ORDER BY attr2、attr3、attr1のように順序付けを実行する場合、属性は「選択済」セクションと同じ順序でリストされている必要があります。「選択済」セクションの右の矢印を使用して、選択した列の位置を変更できます。

一致行なし

一致行なしページを使用して、検索ページで指定した検索条件を満たす行がない場合に実行するアクションを指定します。すべての出力グループに対して、アクションを指定する必要があります。

「出力グループ」フィールドで出力グループを選択し、次のいずれかのオプションを選択します。

- 行が戻りません。
このオプションでは、検索結果に一致条件を満たす行がない場合、行を戻しません。

- 行を次のデフォルト値とともに戻します
このオプションを使用すると、検索結果が検索条件を満たさない場合に、デフォルト値を含む行を戻すことができます。このオプションの下にある表を使用して、検索列ごとにデフォルト値を指定します。

タイプ2履歴検索

このページを使用するのは、検索ページで検索結果としてタイプ2のSCDを選択した場合のみです。検索結果がタイプ2のSCDの場合、検索として使用する特定のレコードのバージョンを指定する必要があります。

タイプ2のSCDにバインドした各出力グループに対して、「出力グループ」フィールドでグループを選択し、次のいずれかのオプションを選択します。

- 最新のレコードを使用します。
このオプションでは、検索条件を使用した検索の対象となる属性に対応する現行のレコードが戻されます。現行のレコードとは、最新のタイムスタンプが付いたレコードです。

- 過去日付を定数として指定します
このオプションでは、「日付」および「時間」リストで指定した定数値を含むレコードが戻されます。

- 過去日付を持つ入力属性を選択します。
このオプションを選択すると、入力属性の1つに含まれる日時に関連するレコードを戻すことができます。「入力属性」リストを使用して、過去の値を含む属性を選択します。

ピボット演算子

ピボット演算子を使用すると、1行の属性を複数行に変換できます。

画像pivot_icon.gifの説明

この演算子は、複数の行ではなく属性に含まれるデータを変換する場合にマッピングで使用します。このような状況は、クロス集計形式のデータなど、非リレーショナル・データソースからデータを抽出する際に生じることがあります。

例: 売上データのピボット

外部表SALES_DATには、フラット・ファイルのデータが格納されています。この表は、行単位に営業担当、列単位に月を指定して作成されています。

関連項目:
外部表の詳細は、『Oracle Warehouse Builderソースおよびターゲット・ガイド』を参照してください。

図26-12に、フラット・ファイルSALES_DATを示します。

図26-12 SALES_DAT

「図26-12 SALES_DAT」の説明

表26-3は、ピボット操作が実行された後のデータのサンプルを示しています。それまで複数の列(M1、M2、M3...)に含まれていたデータは、1つの属性(Monthly_Sales)に含まれています。SALES_DAT内の1つのID行は、ピボット後のデータの12行に対応します。

表26-3 ピボット後のデータ

REP

MONTH

MONTHLY_SALES

REGION

0675

Jan

10.5

4

0675

Feb

11.4

4

0675

Mar

9.5

4

0675

Apr

8.7

4

0675

May

7.4

4

0675

Jun

7.5

4

0675

Jul

7.8

4

0675

Aug

9.7

4

0675

Sep

NULL

4

0675

Oct

NULL

4

0675

Nov

NULL

4

0675

Dec

NULL

4

この例のピボット変換を実行するには、図26-13に示すようなマッピングを作成します。

図26-13 マッピングに使用したピボット演算子

「図26-13 マッピングに使用したピボット演算子」の説明

ピボット変換を実行するこのマッピングの場合、データは外部表から一度読み取られ、ピボットおよび集計され、セット・ベース・モードでターゲットに書き込まれます。ピボット後にデータをターゲットに直接ロードする必要はありません。データをターゲット演算子に送る前後に、一連の演算子でピボット演算子を使用できます。フィルタ、ジョイナおよび集合演算などの演算子をピボット演算子の前に配置できます。ピボットされたデータは行単位の操作ではないため、マッピングをセット・ベース・モードで実行することも可能です。

行ロケータ

ピボット演算子では、行ロケータはソースからの反復データ・セットに対応するように作成する出力属性です。ピボット演算子を使用すると、1つの入力属性が複数行に変換され、行ロケータの値が生成されます。次の例では、ソースに各月の属性が含まれているため、MONTHという出力属性を作成し、この属性を行ロケータとして指定できます。SALES_DATの行ごとに、12行のピボット・データが出力されます。

表26-4には、行インジケータとしてMONTHを使用してデータがピボットされた後のSALES_DATの1行目のデータを示します。

表26-4 行インジケータによりピボットされたデータ

REP

MONTH

MONTHLY_SALES

REGION

0675

Jan

10.5

4

0675

Feb

11.4

4

0675

Mar

9.5

4

0675

Apr

8.7

4

0675

May

7.4

4

0675

Jun

7.5

4

0675

Jul

7.8

4

0675

Aug

9.7

4

0675

Sep

NULL

4

0675

Oct

NULL

4

0675

Nov

NULL

4

0675

Dec

NULL

4

ピボット演算子の使用

ピボット演算子の使用には、次のオプションが用意されています。

- 新しいピボット演算子の定義: ピボット・ウィザードを使用して、マッピングに新しいピボット演算子を追加します。ピボット演算子をパレットからマッピングにドラッグします。マッピング・エディタにピボット・ウィザードが表示されます。

- 既存のピボット演算子の編集: ピボット・エディタを使用して、前に作成したピボット演算子を編集します。演算子を右クリックして「詳細を開く」を選択します。マッピング・エディタのピボット・エディタが開きます。

ピボット・ウィザードとピボット・エディタのどちらを使用する場合も、次のページを完了します。

- 一般

- グループ

- 接続の入力

- 入力属性

- 出力属性

- ピボット変換

一般

一般ページを使用して、ピボット演算子の名前と説明(オプション)を指定します。デフォルトでは、ウィザードにより演算子名「Pivot」が指定されます。

グループ

グループ・ページを使用して、入力グループと出力グループをそれぞれ1つ指定します。

ピボット演算子の場合、入力グループは複数の属性に含まれるソースのデータを表します。出力グループは行に変換されたデータを表します。

入力グループと出力グループの名前を変更したり、説明を追加できます。各ピボット演算子の入力グループと出力グループはそれぞれ1つのみである必要があるため、ウィザードでグループの追加や削除またはグループの方向の変更はできません。

接続の入力

接続の入力ページを使用して、属性をピボット演算子にコピーおよびマッピングします。選択する属性は、ピボット入力グループにマッピングされます。ページの左側には、マッピングの全演算子のリストが表示されます。

図26-14は、ピボット演算子の入力として選択された外部表SALES_DATのグループを示します。

図26-14 ピボット演算子の「接続の入力」タブ

「図26-14 ピボット演算子の「接続の入力」タブ」の説明

ピボット演算子の接続の入力ページを完了する手順は、次のとおりです。

1. 左側のパネルで、グループ全体または個別の属性を選択します。
名前で特定の属性またはグループを検索するには、「検索」にテキストを入力し、「実行」を選択します。次の一致を検索するには、「実行」を再度選択します。

複数の属性を選択するには、[Shift]キーを押しながら選択します。異なるグループの属性を選択するには、最初にジョイナ演算子または集合演算子を使用してグループを結合する必要があります。

2. ページ中央にある「>」ボタンを使用して、選択内容をウィザード・ページの右側に移動します。
接続の入力のリストからグループまたは属性を削除するには、「<」ボタンを使用します。Oracle Warehouse Builderでは、選択内容が入力グループから削除され、ソース演算子とピボット演算子間のデータ・フロー接続も削除されます。

図26-15は、SALES_DATのグループがPIVOTSALESにコピーおよびマッピングされた様子を示します。

図26-15 ピボットにグループ単位でコピーおよびマップされた属性

「図26-15 ピボットにグループ単位でコピーおよびマップされた属性」の説明

入力属性

入力属性ページで、「接続の入力」タブまたはウィザード・ページで選択した属性を変更します。

入力属性ページでは、次のタスクを実行できます。

- 属性の追加: このページの空白行に属性名やその他の属性の詳細を入力します。

- 属性のプロパティの変更: 属性名、データ型、長さ、精度およびスケールを変更できます。

- 説明(オプション)の追加: 入力属性の説明を入力します。

- 属性キーの指定: オプションとして、「キー」チェック・ボックスを使用し、入力グループを一意に識別する属性を指定します。

出力属性

出力属性ページを使用して、ピボット演算子の出力属性を作成します。「入力属性」タブまたはウィザード・ページで入力属性をキーとして指定した場合、これらの入力属性は、編集も削除もできない出力属性として表示されます。

図26-16には、MONTHが行ロケータとして選択された出力属性を示します。

図26-16 ピボットの「出力属性」タブ

「図26-16 ピボットの「出力属性」タブ」の説明

ピボットの出力属性ページでは、次のタスクを実行できます。

- 属性のプロパティの変更: 前のタブまたはウィザード・ページでキーとして指定した属性を除いて、属性名、データ型、長さ、精度およびスケールを変更できます。

- 説明(オプション)の追加: 出力属性の説明を入力します。

- 行ロケータの指定: ピボット演算子に行ロケータを指定する必要はありませんが、指定しておくことをお薦めします。出力属性ページまたはタブで行ロケータを識別すると、出力データと入力データとの照合がより容易になります。
ピボット演算子において、行ロケータとは、ソースの繰返しデータ・セットに対応する出力属性です。たとえば、ソース・データに、各月の個別の属性が含まれる場合、出力属性「MONTH」を作成し、それを行ロケータとして指定します。

ピボット変換

ピボット変換ページで、各出力属性の式を記述します。

デフォルトでは2行が表示されます。「追加」を使用して、ソースの1行から出力する行数を指定します。たとえば、ソースに1年の四半期ごとの属性が含まれる場合、ソースの各行の出力には4行を指定できます。ソース・データに1年の月ごとの属性が含まれる場合は、ソースの各行の出力には12行を指定できます。

図26-17に、各月の属性を使用してソースに定義されたピボット式とともに「ピボット変換」タブを示します。

図26-17 「ピボット変換」タブ

「図26-17 「ピボット変換」タブ」の説明

ピボット式の記述は、次の出力タイプに基づきます。

- 行ロケータ: 各行の名前を指定します。この名前は表にロードする値です。たとえば、行ロケータが「MONTH」の場合、最初の行には「Jan」と入力します。

- ピボットされた出力データ: リスト・ボックスから該当する式を選択します。たとえば、「Jan」として定義した行では、1月の値のセットを戻す式を選択します。

- すでにキーとして指定された属性: 式が自動的に定義されます。

- 不要なデータ: ピボット変換ページに出力としては不要なデータが含まれる場合、「NULL」式を使用します。Oracle Warehouse Builderでは、NULLとして定義された属性に対して、データのない繰返し行セットが出力されます。

ウィザードを使用してピボット演算子を作成する場合は、ウィザードを閉じるときに「終了」をクリックします。マッピング・エディタに、定義された演算子が表示されます。

ピボット・エディタを使用して既存のピボット演算子を編集する場合は、演算子の編集が終わったときに、「OK」をクリックします。マッピング・エディタで演算子が更新され、変更内容が反映されます。

マッピング後プロセス演算子

マッピング後プロセス演算子を使用して、PL/SQLマッピングの実行後に実行されるプロシージャを定義します。たとえば、マッピング後プロセス演算子を使用すると、マッピングが正常に完了してデータがターゲットにロードされた後で、索引を再び有効化して作成できます。

画像post_map.gifの説明

マッピング後プロセス演算子は、ファンクションまたはプロシージャをマッピングの実行後にコールします。出力パラメータ・グループは、戻り値(ファンクションを介して実装済の場合)の接続ポイントと、ファンクションまたはプロシージャの出力パラメータを提供します。これらの出力属性の接続に制限はありません。

マッピング後プロセス演算子には、選択したPL/SQLプロシージャまたはファンクションに関連付けられているパラメータの数と方向に対応するグループが含まれています。グループと属性のリストを変更するには、ワークスペース内のオブジェクトと同期化する必要があります。

マッピング後プロセス演算子には、定数、データ・ジェネレータ、マッピング入力パラメータおよびマッピング前プロセスからの出力をマップできます。マッピング後プロセス演算子は、SQL*Loaderマッピングには無効です。

マッピング後プロセス演算子をマッピング・エディタに追加した後、「演算子のプロパティ」ダイアログ・ボックスを使用してプロセスの実行条件を指定します。

マッピングにマッピング後プロセス演算子を使用する手順は、次のとおりです。

1. マッピング後プロセス演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
Oracle Warehouse Builderの「マッピング後プロセスの追加」ダイアログ・ボックスが表示されます。

2. 「マッピング後プロセスの追加」ダイアログ・ボックスを使用して、変換を選択または作成します。「マッピング後プロセスの追加ダイアログ・ボックスの使用方法の詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. ソース演算子の出力属性をマッピング後プロセス演算子のI/Oグループに接続します。

4. 演算子の実行条件を設定します。

マッピング後プロセス演算子の実行条件を設定する手順は、次のとおりです。

1. マッピング・キャンバスからマッピング後プロセス演算子を選択します。
プロパティ・インスペクタにマッピング後プロセス演算子のプロパティが表示されます。

2. 「マッピング後プロセスの実行条件」をクリックし、次の実行条件から1つ選択します。
ALWAYS: プロセスはマッピング・エラーに関係なく実行されます。

ON SUCCESS: プロセスは、マッピングがエラーなしで完了した場合にのみ実行されます。

ON ERROR: プロセスは、マッピングの完了時にエラー数がマッピングに対して設定された許容エラー数を超えていた場合にのみ実行されます。

ON WARNING: プロセスは、マッピングの完了時にエラー数がマッピングに対して設定された許容エラー数を下回っていた場合にのみ実行されます。

「エラー発生時」または「警告時」を選択し、マッピングを行ベース・モードで実行する場合は、マッピングの「エラーの最大数」が設定されていることを確認する必要があります。許容エラー数を確認するには、プロジェクト・ナビゲータでマッピングを右クリックし、「構成」を選択して「ランタイム・パラメータ」を開きます。

マッピング前プロセス演算子

マッピング前プロセス演算子を使用して、マッピングの実行前に実行されるプロシージャを定義します。

画像pre_map.gifの説明

たとえば、マッピング前プロセス演算子を使用すると、表をステージング領域にロードするマッピングの実行前に、そのステージング領域にある表を切り捨てることができます。また、データをターゲットにロードするマッピングの実行前に、索引を無効化することも可能です。その後、マッピング後プロセス演算子を使用して、データをターゲットにロードするマッピングの実行後に、索引を再有効化して作成できます。

マッピング前プロセス演算子は、メタデータが定義されているファンクションまたはプロシージャをマッピングの実行前にコールします。出力属性グループは、戻り値(ファンクションとして実装済の場合)と、ファンクションまたはプロシージャの出力パラメータを提供します。これらの属性はダウンストリームにある任意の演算子に接続でき、マッピング後プロセス演算子のような接続の制限はありません。

マッピング前プロセス演算子をマッピング・エディタ・キャンバスにドロップすると、ダイアログ・ボックスが開き、使用可能なライブラリ、カテゴリ、ファンクションおよびプロシージャが表示されます。ツリーからファンクションまたはプロシージャを選択すると、演算子によって選択したファンクションまたはプロシージャに対応する属性が表示されます。

マッピング前プロセス演算子には、選択したPL/SQLプロシージャまたはファンクションの関連パラメータの数と方向に対応するグループが含まれています。

マッピング前プロセス演算子をマッピング・エディタに追加した後、プロパティ・インスペクタを使用してマッピングの実行条件を指定します。

マッピングにマッピング前プロセス演算子を使用する手順は、次のとおりです。

1. マッピング前プロセス演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「マッピング前プロセスの追加」ダイアログ・ボックスが表示されます。

2. 「マッピング前プロセスの追加」ダイアログ・ボックスを使用して、変換を選択または作成します。このダイアログ・ボックスの使用方法の詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. マッピング前プロセス演算子の出力属性を、ターゲット演算子の入力グループに接続します。

4. 演算子の実行条件を設定します。

マッピング前プロセス演算子を使用したマッピングの実行条件を設定する手順は、次のとおりです。

1. マッピング・キャンバスで、マッピング前プロセス演算子を選択します。
プロパティ・インスペクタにマッピング前プロセス演算子のプロパティが表示されます。

2. 「マッピングの実行条件」をクリックし、次の実行条件から1つ選択します。
常時: エラーの有無に関係なくプロセスの完了後にマッピングが実行されます。

ON SUCCESS: プロセスがエラーなしで完了した場合にのみマッピングが実行されます。

ON ERROR: プロセスがエラーありで完了した場合にのみマッピングが実行されます。

集合演算演算子

集合演算では、2つのコンポーネントの問合せ結果が組み合されて1つの結果になります。

画像set.gifの説明

ジョイナは個別の行を組み合せて1行にしますが、集合演算演算子は様々な集合演算条件の中の1つを使用してすべてのデータ行を組み合せて1つの出力行セットにします。集合演算演算子の場合、データは1つの出力に追加されますが、列リストが組み合されて1つの列リストとなることはありません。

集合演算演算子を使用すると、マッピングで次の集合演算を使用できます。

- UNION(デフォルト)

- UNION ALL

- INTERSECT

- MINUS

デフォルトでは、集合演算演算子には入力グループ2つと出力グループ1つが含まれます。演算子エディタを使用すると、入力グループを追加できます。出力グループの属性の数は、最大数の属性を含む入力グループの属性の数と一致します。

集合演算演算子を使用するには、すべての集合の属性数が一致し、対応する属性のデータ型が一致する必要があります。対応する属性は、入力グループ内の属性の順序で判別されます。たとえば、入力グループ1の属性1は入力グループ2の属性1に対応します。

集合演算は上から下へと適用する必要があります。集合演算の実行順序は、入力グループの順序により決定されます。この順序は減算操作にのみ影響します。たとえば、AマイナスBとBマイナスAは異なります。最初の入力グループ内の属性の順序により、集合の構造が決定されます。たとえば、{empno, ename}は{ename, empno}と異なります。

マッピングで集合演算演算子を使用する手順は、次のとおりです。

1. 集合演算演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. 集合演算演算子グループにソース属性を接続します。

3. 集合演算演算子のヘッダーを選択します。
プロパティ・インスペクタに集合演算演算子のプロパティが表示されます。

4. 「集合演算」プロパティのリストをクリックし、リストから操作を選択します。

5. 集合演算出力グループをターゲット入力グループに接続します。

集合演算演算子の属性の同期化

マッピング・エディタの集合演算演算子は、2つのデータ・ストリーム間で属性を照合する際に役に立ちます。マッピングで2つのデータ・ストリームの属性を照合するには、集合演算演算子に対してデータ・ストリームを入力グループとして定義します。「入力属性」タブで、「<入力グループ名>から同期」をクリックします。同期化操作により、ターゲット・グループがソース・グループと最も近くなるよう属性が再調整されてターゲット・グループに追加されます。同期化操作では、次のルールを使用してターゲット内の一致対象が検出および作成されます。

1. 名前とデータ型が一致するターゲット内の既存の属性を検索します。

2. 説明がソース名と一致し、データ型がソースのデータ型と一致するターゲット内の既存の属性を検索します。

3. (1)と(2)が失敗した場合、ソース名とデータ型を使用して新規属性が作成され、一致する正しい位置に挿入されます。一致しないターゲット・グループ属性は、属性の説明に「UNMATCHED」として示されます。
ターゲット属性を特定のソース属性に強制的に一致させるには、ターゲット属性の説明にソース・グループ属性を入力します。

ソーター演算子

ソーター演算子を使用すると、ソート済の行セットを生成できます。

画像sorter.gifの説明

ソーター演算子を使用すると、ソート対象の入力属性とソート順(昇順または降順)を指定できます。Oracle Warehouse Builderでは、マッピングにより生成されるコードにORDER BY句を挿入することでデータがソートされます。

ソーター演算子には、I/Oグループが1つあります。ソーター演算子を使用すると、すべてのリレーショナル・データベース・ソースのデータをソートできます。ソーター演算子の後に任意の演算子を使用できます。

ORDER BY句

ソーター演算子にはORDER BY句が含まれます。この句はI/Oグループの属性の順序付きリストであり、このI/Oグループでは、順序付き属性リストと同じ順序でソートが実行されることが指定されます。各属性について昇順または降順のソートを設定できます。

ウェアハウス内のほとんどのデータは、バッチでロードされます。ロード・ルーチンには問題が発生する場合があります。たとえば、受注バッチに1つの受注番号が複数回含まれ、各受注明細が異なる受注ステータスを表している場合があります。受注のステータスは、1日のうちに「CREATED」から「UPDATED」、「BOOKED」へと進みます。

SQL文ではデフォルトで順序付けが保証されないため、ターゲット表に対する挿入と更新が間違った順序で実行される場合があります。結果のステータスは「BOOKED」である必要がありますが、「UPDATED」行が最後に処理されると、それがその日の最後の値になります。Oracle Warehouse Builderでは、ソーター演算子を使用して順序付きの抽出問合せを作成することで、この問題を解決できます。ORDER BY句では、最後に更新される属性を使用できます。これにより、レコードは必ず作成時の順序で表示されます。

図26-18に、ソーター演算子を使用してORACLE_ORDERS表のレコードをソートするマッピングを示します。ソーター演算子の「Order By句」プロパティを使用して、ORDER_ID属性およびLAST_UPDATED属性の入力レコードをソートします。

図26-18 マッピングに使用したソーター演算子

「図26-18 マッピングに使用したソーター演算子」の説明

マッピングでソーター演算子を使用する手順は次のとおりです。

1. 「ソーター」演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. ソース演算子グループをソーターI/Oグループに接続します。

3. ソーター演算子のヘッダーを選択します。
プロパティ・インスペクタに演算子のプロパティが表示されます。

4. 「Order By句」フィールドの省略記号のボタンをクリックします。
「Order By句」ダイアログ・ボックスが表示されます。

5. ソートする属性を選択します。
「使用可能な属性」リストから属性を選択し、「>」ボタンをクリックします。「使用可能な属性」リストのすべての属性を選択するには、「>>」ボタンをクリックします。

6. 属性にORDER BY句を適用します。
「ORDER BY属性」リストから属性を選択し、「昇順/降順」リストから「ASC」(昇順)または「DESC」(降順)を選択します。

7. 「OK」をクリックします。

8. ソーター演算子の出力をターゲットに接続します。

スプリッタ演算子

スプリッタ演算子を使用すると、1つのソースのデータを複数のターゲットに分割できます。

画像splitter.gifの説明

スプリッタ演算子は、ブール分割条件を使用して1つの入力行セットを複数の出力行セットに分割します。各出力行セットのカーディナリティは、入力のカーディナリティ以下となります。これは、データを作成条件に基づいて異なるターゲットに移動する必要がある場合に役立ちます。複数のフィルタを介してデータを移動するかわりにスプリッタを使用できます。

オプションとして、1つのソースのデータを複数のターゲットに分割するマッピングを最適化してパフォーマンスを向上できます。詳細は、「例: 複数のターゲットを使用するマッピングの作成」を参照してください。

スプリッタ演算子には、入力グループ1つと出力グループ3つが含まれています。出力グループはOUTGRP1、OUTGRP2およびREMAINING_ROWSです。必要に応じて、追加の出力グループを作成できます。REMAINING_ROWS出力グループは削除できますが、編集はできません。

ほとんどの場合、出力グループREMAINING_ROWSには、任意の出力グループには含まれないすべての入力行が含まれます。ただし、NULL値の属性が分割条件に含まれる場合、対応する行はREMAINING_ROWS出力グループに移動されません。

スプリッタ演算子には、分割条件が含まれています。コード生成のために、ソース列が式テンプレート内の入力属性名で置換されます。この式は、WHERE句で使用できる有効なSQL式です。

図26-19に、スプリッタ演算子を使用してソース表CUSTOMERSの顧客データを2つの個別表に分割するマッピングを示します。一方の表には顧客所在地のみが含まれ、他方の表にはその他の顧客詳細が含まれています。スプリッタ演算子の各出力グループの「分割条件」プロパティを使用して、特定のターゲット表に移動するデータを指定します。

図26-19 マッピングに使用したスプリッタ演算子

「図26-19 マッピングに使用したスプリッタ演算子」の説明

マッピングでスプリッタ演算子を使用する手順は、次のとおりです。

1. スプリッタ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。

2. ソース演算子のグループをスプリッタ演算子の入力グループに接続します。
出力属性が、対応する入力のデータ型と一致するデータ型を使用して作成されます。

3. スプリッタ演算子の出力グループを選択します。
プロパティ・インスペクタに出力グループのプロパティが表示されます。

4. 「分割条件」フィールドの右にある省略記号ボタンをクリックします。
「式ビルダー」ダイアログ・ボックスが表示されます。

5. 分割条件を定義します。
たとえば、分割条件としてUPPER(INGRP1.OR_CHANNEL) = 'DIRECT'を定義できます。

6. REMAINING ROWSグループを除く各出力グループの分割条件について式を定義します。

7. 出力グループをターゲットに接続します。

例: 複数のターゲットを使用するマッピングの作成

複数のターゲットを使用するマッピングの設計時には、最適化を行ってパフォーマンスを向上させることができます。マッピングについて正確な監査詳細が必要な場合は、最適化しなくてもかまいません。その場合、ターゲットごとに個別のINSERT文が生成されます。

複数ターゲットのマッピングを最適化するには、組み合された全ターゲットに対して1つのINSERT文が生成されるように、追加の手順を実行する必要があります。この場合、複数表のINSERT SQL文が生成されます。このSQL文は、Oracle9iリリース以降のOracle Databaseサーバーで使用可能なパラレル問合せおよびパラレルDMLサービスを利用します。

複数のターゲットを使用するマッピングを最適化する手順は、次のとおりです。

1. Oracle9i以降のSQLを生成するように構成されているOracleターゲット・モジュールで、マッピングを定義します。
プロジェクト・ナビゲータで、ターゲット・モジュールを右クリックして「構成」を選択します。「配布システム・タイプ」および「PL/SQL生成モード」の下で、Oracle9i以降を選択します。

2. マッピング・エディタで、単一のソース、スプリッタ演算子および複数のターゲットを使用するマッピングを設計します。
マッピングを最適化するには、ターゲットはビューやマテリアライズド・ビューではなく表であることが必要です。各ターゲット表の列数は999より少なくなるようにする必要があります。スプリッタ演算子とターゲットの間に、カーディナリティを変更する演算子を含めないでください。

たとえば、図26-20に示すように、スプリッタとターゲットの間にはフィルタを配置できますが、ジョイナ演算子やアグリゲータ演算子は配置できません。これらの制限は、マッピングを最適化するように選択した場合にのみ適用されます。

図26-20 複数のターゲットを使用するマッピングの例

「図26-20 複数のターゲットを使用するマッピングの例」の説明

3. プロジェクト・ナビゲータで、マッピングを選択してメニュー・バーから「設計」、「構成」を選択します。構成するマッピングを右クリックして「構成」を選択する方法もあります。
マッピングの「構成プロパティ」ダイアログ・ボックスが表示されます。

4. 「ランタイム・パラメータ」を開き、「デフォルト・オペレーティング・モード」を「セット・ベース」に設定します。

5. 「コード生成オプション」を開いて「最適化コード」を「True」に設定します。

このマッピングを実行して生成結果を表示すると、すべてのターゲットについてSELECTとINSERTの合計カウントが1つ戻されます。

副問合せフィルタ演算子

副問合せフィルタ演算子を使用すると、副問合せの結果に基づいて行をフィルタできます。行のフィルタに使用できる条件は、EXISTS、NOT EXISTS、INおよびNOT INです。

画像subquery_filter_oper.gifの説明

たとえば、EMP表に従業員データが含まれているとします。副問合せを使用して別の表からレコードのセットをフェッチし、その後、条件EXISTS、NOT EXISTS、INまたはNOT INのいずれかを使用してEMP表の行をフィルタできます。

副問合せフィルタ演算子には、入力グループ1つ(INGRP1)とI/Oグループ1つ(INOUTGRP1)が含まれます。INGRP1は、ソース・データのフィルタリングに使用される副問合せを示すオブジェクトからマッピングされます。データのフィルタリングに使用されるデフォルトの条件はEXISTSで、INGRP1の左に"E"を表示して示されます。この条件は、必要に応じて変更できます。グループINOUTGRP1は、フィルタする必要のあるソース・データ・セットからマッピングされます。フィルタされたデータはこのグループの出力になります。

副問合せフィルタ演算子によってマッピングを作成する手順は次のとおりです。

1. 副問合せフィルタ演算子をマッピング・キャンバスにドラッグ・アンド・ドロップします。

2. フィルタリングするソースの属性を副問合せフィルタ演算子のI/OグループINOUTGRP1に接続します。

3. 副問合せとして使用するオブジェクトから必要な属性を、副問合せフィルタ演算子のグループINGRP1に接続します。

4. 副問合せフィルタ演算子のヘッダーを選択します。
プロパティ・インスペクタに副問合せフィルタ演算子のプロパティが表示されます。

プロパティ・インスペクタがデザイン・センターに表示されない場合、「表示」メニューから「プロパティ・インスペクタ」を選択します。

5. 「副問合せフィルタ入力ロール」フィールドで、入力行のフィルタリングに使用する条件を選択します。選択できるオプションは、EXISTS、IN、NOT EXISTSまたはNOT INです。

6. フィルタ条件が必要な場合は、「副問合せフィルタ条件」フィールドの省略記号ボタンをクリックし、式ビルダーを表示します。このインタフェースを使用して、入力行セットと副問合せによって戻された行セットの比較に使用するフィルタ条件を指定します。
入力ロールがINまたはNOT INの場合はフィルタ条件は必要ありません。フィルタ・ロールがEXISTSおよびNOT EXISTSの場合、ソース問合せをEXISTSフィルタ副問合せに関連付けるフィルタ条件を指定する必要があります。

7. 入力ロールがINまたはNOT INの場合、各入力属性のプロパティを編集し、副問合せのI/Oグループから一致する属性を選択します。これによってソース入力問合せの入力属性が各副問合せグループ属性に関連付けられ、ソース問合せがフィルタ副問合せに関連付けられたことになります。

8. 副問合せフィルタ演算子のI/Oグループをターゲットに接続します。

図26-21に、副問合せフィルタ演算子の単純な例を示します。このマッピングでは、信用限度額が特定の値よりも大きい顧客に関する注文データが、CUST_TGTというターゲット表にロードされます。注文データはORDERSおよびORDERS_ITEMS表に格納されます。これらの表から注文データを組み合せるには、ジョイナ演算子が使用されます。副問合せフィルタ演算子を使用して、CUSTOMERS表の副問合せの結果に基づいて注文データをフィルタリングします。

比較に必要なCUSTOMERS表の属性は、副問合せフィルタ演算子の入力グループにマッピングされます。ジョイナ演算子の結果で示される注文データは、副問合せフィルタ演算子の入力/出力グループにマッピングされます。副問合せフィルタ演算子の「副問合せフィルタ条件」プロパティは、行の比較に使用される条件を示すよう設定されています。この例では、副問合せフィルタ条件として、次の条件が指定されています。

INGRP1.CUSTOMER_ID  =  INOUTGRP1.CUSTOMER_ID  AND  INGRP1.CREDIT_LIMIT  >= 75000

図26-21 マッピングに使用した副問合せフィルタ演算子

「図26-21 マッピングに使用した副問合せフィルタ演算子」の説明

次に、図26-21で示されたマッピングで使用されている副問合せフィルタ演算子に対して、Oracle Warehouse Builderによって生成されるコードを示します。

SELECT
"ORDERS"."ORDER_ID" "ORDER_ID",
"ORDERS"."CUSTOMER_ID" "CUSTOMER_ID",
"ORDERS"."ORDER_DATE" "ORDER_DATE"
FROM
"OE"."ORDERS"@"ORA11@OE_SRC_LOCATION"  "ORDERS"
JOIN
"OE"."ORDER_ITEMS"@"ORA11@OE_SRC_LOCATION"  "ORDER_ITEMS" ON
( ( "ORDERS"."ORDER_ID" = "ORDER_ITEMS"."ORDER_ID" ) )
WHERE
(EXISTS
(SELECT  1
FROM "OE"."CUSTOMERS"@"ORA11@OE_SRC_LOCATION"  "CUSTOMERS"
WHERE
( "CUSTOMERS"."CUSTOMER_ID"  =  "ORDERS"."CUSTOMER_ID" )  AND
( "CUSTOMERS"."CREDIT_LIMIT"  >= 75000)
)
);

テーブル・ファンクション演算子

テーブル・ファンクション演算子を使用して、マッピング内のテーブル・ファンクションを示します。テーブル・ファンクション演算子を使用すると、入力行セットを操作し、同一または異なるカーディナリティを持つ別の行セットを戻すことができます。

画像table_function_icon.gifの説明

通常のファンクションは一度に1行のみを処理しますが、テーブル・ファンクションでは行セットに同じ複雑なPL/SQLロジックを適用してパフォーマンスを向上できます。従来型のファンクションとは異なり、テーブル・ファンクションは物理表のように問合せ可能な出力行セットを戻すことができます。

テーブル・ファンクションの実行をパラレル化することもできます。この場合、戻された行は中間のステージングなしで次のプロセスに直接ストリーム化されます。テーブル・ファンクションから戻されるコレクションの行は、テーブル・ファンクションの入力全体の処理が完了してからバッチで出力するかわりに、パイプライン化したり生成時のまま1行ずつ出力できます。

テーブル・ファンクションを使用すると、データ・ウェアハウスのロード時にパフォーマンスを大幅に向上できます。

テーブル・ファンクション演算子には入力グループ1つと出力グループ1つが含まれます。

マッピングでテーブル・ファンクション演算子を定義する手順は、次のとおりです。

1. テーブル・ファンクション演算子をキャンバスにドラッグ・アンド・ドロップします。
「テーブル・ファンクション演算子の追加」ダイアログ・ボックスが表示されます。

2. データを変換する既存のテーブル・ファンクションを使用するには、「既存リポジトリ・オブジェクトから選択してバインド」を選択し、ツリーからテーブル・ファンクションを選択します。
テーブル・ファンクション演算子がキャンバスに追加されます。入力グループINGRP1には、テーブル・ファンクションに対して定義されている入力パラメータが含まれています。

3. テーブル・ファンクションによって使用される入力が含まれている演算子を、入力グループ内のパラメータにマッピングします。
通常、入力パラメータの中の1つ以上はコレクション・タイプです。このような場合、ソース・オブジェクトにコレクション・タイプが含まれていなければ、オブジェクトの構成演算子を使用して、個別のソース属性を使用したコレクション・タイプを作成します。

4. テーブル・ファンクション演算子から戻されるグループを、変換ターゲットを示す演算子にマッピングします。

図26-22に、テーブル・ファンクション演算子を使用してデータを表にロードするマッピングを示します。

図26-22 マッピングに使用したテーブル・ファンクション演算子

「図26-22 マッピングに使用したテーブル・ファンクション演算子」の説明

テーブル・ファンクションの特性

- 名前によるパラメータの受渡しはサポートされていません。

- 戻り型がTABLE of PLS Recordの場合は、「PLSレコード」フィールドの名前と一致する名前を選択する必要があります。選択リストから選択できるのは、PLS Recordのフィールドのサブセット1つのみです。

- 戻り型がTABLE of T1%ROWTYPEの場合は、表T1の列名と一致する名前を選択する必要があります。

- 戻り型がTABLE of Object Typeの場合は、「オブジェクト・タイプ」属性の名前と一致する名前を選択する必要があります。

- 戻り型がTABLE of Scalar(TABLE of NUMBERなど)の場合、テーブル・ファンクションから戻されるスカラー値の検索に使用できるのはSELECT COLUMN_VALUEのみです。

テーブル・ファンクション演算子を使用する際の前提条件

マッピングでテーブル・ファンクション演算子を使用するには、事前にOracle Warehouse Builder外部のターゲット・スキーマにテーブル・ファンクションを作成します。バインドされていないテーブル・ファンクション演算子でサポートされているデータベース内のテーブル・ファンクションは、次の要件を満たす必要があります。

入力

- PLS Record(PLS Recordのフィールド)を戻すREFカーソルは、サポートされているスカラー・データ型である必要があります(0..n)。

- 入力パラメータが1つ以上必要です。

出力

- PLS Record(PLS Recordのフィールドは、Oracle Warehouse Builderでサポートされているスカラー・データ型である必要があります)。

- オブジェクト・タイプ(オブジェクト・タイプの属性は、サポートされているスカラー・データ型である必要があります)。

- サポートされているスカラー・データ型。

- ROWTYPE

マッピング内のテーブル・ファンクション演算子の場合

- REFカーソル・タイプ・パラメータごとにパラメータ・グループを1つ追加する必要があります。

- 1つのスカラー型パラメータ・グループの一部として複数のスカラー・パラメータを使用できます。

- パラメータ・グループとグループ内のパラメータは、任意の順序で入力できます。

- テーブル・ファンクション演算子のパラメータの位置は、ターゲット・ウェアハウスで作成されるテーブル・ファンクションのパラメータの位置と同じにする必要があります。

テーブル・ファンクション演算子のプロパティ

テーブル・ファンクション演算子のプロパティにアクセスするには、プロパティ・インスペクタを使用します。プロパティ・インスペクタには、キャンバスで選択したオブジェクトのプロパティが表示されます。たとえば、テーブル・ファンクション演算子の入力グループを選択すると、プロパティ・インスペクタには入力パラメータ・グループのプロパティが表示されます。

テーブル・ファンクション演算子のプロパティ

テーブル・ファンクション演算子のプロパティは、次のとおりです。

テーブル・ファンクション名: テーブル・ファンクション名を表します。このプロパティでは、テーブル・ファンクションの実際の名前と一致する名前を指定する必要があります。

テーブル・ファンクションはターゲット: テーブル・ファンクションがターゲットであることを指定するには、このオプションを選択します。このプロパティはデフォルトで選択されます。

バウンド名: テーブル・ファンクション演算子のバインド先となるリポジトリ内のテーブル・ファンクションの名前。

入力パラメータのプロパティ

- パラメータの位置: テーブル・ファンクション・シグネチャ内のパラメータの位置。このプロパティを適用できるのは、スカラー・パラメータのみです。

出力パラメータ・グループのプロパティ

- スカラー・タイプの表を戻します。: このプロパティは、テーブル・ファンクションの戻り型がTABLE of SCALARであるかどうかを示します。この情報が必須なのは、TABLE of SCALARのSELECTリストの項目がSelect COLUMN_VALUEである必要がありますが、その他の場合には適切な名前である必要があるためです。

出力パラメータ

- タイプ属性名: PLS Recordのフィールド、オブジェクト・タイプの属性またはROWTYPEの列の名前。戻り型がTABLE of SCALARの場合、このプロパティは適用できません。この名前を使用してテーブル・ファンクションがコールされます。

変換演算子

変換演算子を使用し、入力行セットのカーディナリティを保持しながら、PL/SQLファンクションを使用して行セットに含まれる行の列値データを変換します。

画像transform.gifの説明

変換演算子は、ワークスペースのモジュールの1つに含まれるファンクションまたはプロシージャにバインドされる必要があります。変換演算子の入力と出力は、バインド先のワークスペース・ファンクションまたはプロシージャの入力パラメータと出力パラメータに対応します。変換演算子がファンクションにバインドされている場合、結果の出力はファンクションの結果に対応する演算子に追加されます。バインド先のファンクションまたはプロシージャは、ターゲット・システムに存在しないかぎり、マッピングの配布前に生成して配布する必要があります。

Oracle Warehouse Builderでは、ランタイム・スキーマに事前定義済のPL/SQLライブラリ・ファンクションが用意されており、変換演算子をマッピングに追加する際にバインド先ファンクションとして選択できます。また、ファンクションまたはプロシージャはOracleカスタム・ライブラリからも選択できます。

変換演算子のプロパティは次のとおりです。

- ファンクション・コール: コール側パラメータとしてリストされた属性名を使用してコード・ジェネレータにより生成されるファンクション・コール用のテキスト・テンプレート。実際のコールでは、属性名はその属性に接続される実際のソース列またはターゲット列で置換されます。

- ファンクション名: この演算子のバインド先となるファンクションまたはプロシージャの名前。

- プロシージャ: trueの場合は、バインド先変換が戻り値のないファンクションではなくプロシージャであることを示すブール値。

- データ型: 指定の属性に対応するバインド先ファンクションの入力、出力または結果パラメータのデータ型を示します。マッピング変換の出力がCHARデータ型の場合、結果にRTRIMが適用されてからデータがターゲットに移動されます。これにより、出力結果には余分な空白が含まれなくなります。

- デフォルト値: 指定の属性のデフォルト値(デフォルト値がない場合は空白)。

- オプション入力: trueの場合は、指定の属性がオプションであることを示すブール値。属性がオプションの場合、マッピングで接続する必要はありません。

- ファンクション戻り値: trueの場合は、指定の出力属性がファンクションの結果属性であることを示すブール値。結果属性は名前付きの結果です。このプロパティを使用するのは、別の出力が名前付きの結果である場合、または結果出力の名前を変更する場合です。

マッピングで変換演算子を使用する手順は次のとおりです。

1. 変換演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「変換のマッピングの追加」ダイアログ・ボックスが表示されます。

2. 「変換のマッピングの追加」ダイアログ・ボックスを使用して、変換を作成するか、変換を1つ以上選択します。これらのオプションの詳細は、「演算子を追加するための演算子の追加ダイアログ・ボックスの使用」を参照してください。

3. 変換演算子の入力にソース属性を接続します。

4. 入力属性を選択します。「プロシージャ」プロパティが「True」に設定されている場合、入力パラメータを接続しないでください。

5. 変換演算子の出力属性をターゲット属性に接続します。

注意:
変換のシグネチャが非常に長い場合(デザイン・センター・ウィンドウの長さを超える場合)、この変換をプロジェクト・ナビゲータからマッピング・エディタのキャンバスにドラッグ・アンド・ドロップできない可能性があります。このような場合は、コンポーネント・パレットを使用して変換をマッピングに追加できます。

アンピボット演算子

アンピボット演算子は、複数の入力行を1つの出力行に変換します。

画像unpivot_icon.gifの説明

アンピボット演算子を使用すると、ソースからの抽出後に、ソース・データ内で属性別にグループ化されているソース行セットから1行を生成できます。ピボット演算子と同様に、アンピボット演算子もマッピングの任意の場所で使用できます。

例: 売上データのアンピボット

表26-5に、SALESリレーショナル表のサンプル・データを示します。クロス集計フォーマットの場合、MONTH列には年の月ごとに1つずつ最大12の文字値があります。すべての売上データは、MONTHLY_SALESという1列に含まれます。

表26-5 クロス集計フォーマットのデータ

REP

MONTH

MONTHLY_SALES

REGION

0675

Jan

10.5

4

0676

Jan

9.5

3

0679

Jan

8.7

3

0675

Feb

11.4

4

0676

Feb

10.5

3

0679

Feb

7.4

3

0675

Mar

9.5

4

0676

Mar

10.3

3

0679

Mar

7.5

3

0675

Apr

8.7

4

0676

Apr

7.6

3

0679

Apr

7.8

3

図26-23に、表がアンピボットされた後のリレーショナル表SALESのデータを示します。前にMONTH列に含まれていたデータ(Jan、Feb、Marなど)は、12の個別属性(M1、M2、M3など)に対応します。前にMONTHLY_SALESに含まれていた売上データは、各月を表す12の属性間に分散されています。

図26-23 クロス集計フォーマットからアンピボットされたデータ

「図26-23 クロス集計フォーマットからアンピボットされたデータ」の説明

行ロケータ

アンピボット演算子を使用すると、行ロケータに基づいて複数の入力行が1行に変換されます。アンピボット演算子では、行ロケータは定義した一連の出力属性に対応するようにソースから選択する必要のある属性です。アンピボット演算子の場合、行ロケータは必須です。この例では、行ロケータはSALES表のMONTH列で、アンピボットされた出力の属性M1、M2、M3... M12に対応します。

アンピボット演算子の使用

アンピボット演算子の使用には、次のオプションが用意されています。

- 新しいアンピボット演算子の定義: アンピボット演算子をパレットからマッピングにドラッグします。マッピング・エディタにウィザードが表示されます。

- 既存のアンピボット演算子の編集: アンピボット演算子を右クリックして「詳細を開く」を選択します。マッピング・エディタのアンピボット・エディタが開きます。

アンピボット・ウィザードとアンピボット・エディタのどちらを使用する場合も、次のページを完了します。

- 一般

- グループ

- 接続の入力

- 入力属性

- 行ロケータ

- 出力属性

- アンピボット変換

一般

一般ページを使用して、アンピボット演算子の名前と説明(オプション)を指定します。デフォルトでは、ウィザードにより演算子名「アンピボット」が指定されます。

グループ

グループ・ページを使用して、入力グループと出力グループをそれぞれ1つ指定します。

アンピボット演算子の場合、入力グループはクロス集計フォーマットのソース・データを表します。出力グループは、複数の属性間で分散されるターゲット・データを表します。

入力グループと出力グループの名前を変更したり、説明を追加できます。各アンピボット演算子の入力グループと出力グループはそれぞれ1つのみである必要があるため、ウィザードでグループの追加や削除またはグループの方向の変更はできません。

接続の入力

接続の入力ページを使用して、属性を選択し、アンピボット演算子にコピーおよびマップします。

アンピボット演算子の接続の入力ページを完了する手順は、次のとおりです。

1. 左側のパネルで、グループ全体または個別の属性を選択します。
特定の属性またはグループを名前で検索するには、「検索」にテキストを入力して「実行」をクリックします。次の一致を検索するには、「実行」を再度クリックします。

複数のグループまたは属性を選択するには、[Shift]キーを押しながら選択します。異なるグループの属性を選択するには、最初にジョイナ演算子または集合演算子を使用してグループを結合する必要があります。

2. ページ中央にある「>」ボタンを使用して、選択内容をウィザード・ページの右側に移動します。
接続の入力のリストからグループまたは属性を移動するには、「<」矢印を使用できます。Oracle Warehouse Builderでは、選択内容が入力グループから削除され、ソース演算子とアンピボット演算子間のデータ・フロー接続も削除されます。

入力属性

入力属性ページで、「接続の入力」タブまたはウィザード・ページで選択した属性を変更します。

アンピボットの入力属性ページでは、次のタスクを実行できます。

- 属性の追加: このページの空白行に属性名やその他の属性の詳細を入力します。

- 属性のプロパティの変更: 属性名、データ型、長さ、精度およびスケールを変更できます。

- 説明(オプション)の追加: 入力属性の説明を入力します。

- キー属性の指定: アンピボット演算子には1つ以上のキー属性を指定する必要があります。「キー」チェック・ボックスを使用して、入力グループを一意に識別する属性を指定します。キー属性の同じ値を持つ入力行から、アンピボットされた出力行が1つ生成されます。

行ロケータ

行ロケータ・ページを使用して、行ロケータを選択し、行ロケータに含まれる個別値に値を割り当てます。

図26-24では、「Jan」、「Feb」、「Mar」などの値を持つMONTH属性が行ロケータとして選択されています。

図26-24 アンピボットの行ロケータ・ページ

「図26-24 アンピボットの行ロケータ・ページ」の説明

アンピボットの行ロケータ・ページで指定する手順は次のとおりです。

1. 「行ロケータ」リスト・ボックスから属性を選択します。
アンピボット演算子における行ロケータは、出力属性セットに対応するソース・データの属性です。

2. 「追加」を使用して、行ロケータに存在する個別の値の数を指定します。

3. 各行ロケータの値には、ソース・データ・セットに表示されている値を入力します。
文字列値の場合は、一重引用符でテキストを囲みます。たとえば、行ロケータが「MONTH」の場合、その属性には合計12の個別値があります。「追加」をクリックして、各個別値の行を追加します。行ロケータ値には、ソース・データ・セットに表示される値をそのまま入力します。たとえば、表26-5に示す行ロケータ値は、'Jan'、'Feb'および'Mar'となります。

出力属性

「出力属性」タブを使用して、アンピボット演算子の出力属性を作成します。

図26-25に、「出力属性」タブを示します。

図26-25 アンピボットの出力属性ページ

「図26-25 アンピボットの出力属性ページ」の説明

「入力属性」タブまたはウィザード・ページで入力属性をキーとして指定した場合、これらの入力属性は、編集も削除もできない出力属性として表示されます。

アンピボットの出力属性ページでは、次のタスクを実行できます。

- 属性の追加: 「行ロケータ」タブまたはウィザード・ページで指定した行に対応する出力属性の数を増やすには、ページの空白のセルに属性の詳細を入力します。12の行を指定した場合は、12の出力属性と、キーとして指定しなかった他の入力属性の属性を指定します。

- 属性のプロパティの変更: 「入力属性」タブまたはウィザード・ページでキーとして指定した属性を除いて、属性名、データ型、長さ、精度およびスケールを変更できます。

- 説明(オプション)の追加: 出力属性の説明を入力します。

アンピボット変換

「アンピボット変換」タブで、各出力属性の式を記述します。

図26-26に、「アンピボット変換」タブを示します。

図26-26 アンピボット変換ページ

「図26-26 アンピボット変換ページ」の説明

キーとして指定した属性の場合、一致する行と式が自動的に定義されます。Oracle Warehouse Builderでは、キー属性に一致する行として最初の行が表示されます。その他の出力属性の場合、一致する行および式を指定します。

- 一致する行: リスト・ボックスで該当するオプションを選択します。たとえば、年の最初の月として「M1」を定義した属性の場合、リスト・ボックスから「Jan」を選択します。

- 式: リスト・ボックスで該当する式を選択します。データをアンピボットするために作成したすべての新しい属性には、対応するデータが含まれる同じ入力属性を選択します。たとえば、アンピボット属性M1、M2、M3...M12はすべて、同じ式であるINGRP1.MONTHLY_SALESを共有します。その他のすべての出力属性には、入力属性のリストから対応する属性を選択します。

27 プロセス・フローでのアクティビティ

プロセス・フローにより、Oracle Warehouse Builderオブジェクトと、電子メール、FTP、オペレーティング・システム・コマンドなどの外部アクティビティとを相互に関連付け、それらの様々なアクティビティ間の制御フローを定義できます。プロセス・フロー内では、Oracle Warehouse Builderアクティビティを使用して、データ・オブジェクト、外部オブジェクトおよび制御構成を表すことができます。これにより、様々なアクティビティ間のデータ・フローを作成して、特定のデータ・ウェアハウス・タスクを実現できます。

ランタイム・プリファレンスの詳細は、『Oracle Warehouse Builder概要』を参照してください。

プロセス・フローでのアクティビティの使用

この項は、すべてのプロセス・フロー・アクティビティの参照用として使用します。この項ではアクティビティを次のタイプに分類します。

- オブジェクトを表すアクティビティ

- ユーティリティ・アクティビティ

- コントロール・アクティビティ

- オペレーティング・システム・アクティビティ

各アクティビティの詳細は、この項の他の部分に記載されているアルファベット順のリストを参照してください。

オブジェクトを表すアクティビティ

表27-1に、これまでOracle Warehouse Builder内で作成したオブジェクトを表すアクティビティを示します。受信推移は1つ上指定できます。送信推移については、正常終了、警告、エラーおよび無条件の推移をそれぞれ1つずつ使用でき、また、複合条件推移をいくつでも定義できます。

表27-1 オブジェクトを表すアクティビティ

アイコン

アクティビティ

簡単な説明

データ監査モニター

データ・プロファイリングに使用される既存のデータ監査モニターをプロセス・フローに追加します。

マッピング

既存のマッピングをプロセス・フローに追加します。

サブプロセス

既存のプロセス・フローをプロセス・フロー内に埋め込みます。

変換

既存の変換をプロセス・フローに追加します。

Webサービス

既存のWebサービスをプロセス・フローに追加します。

データのコミット

設計オブジェクトを表すアクティビティを追加すると、プロセス・フローではこれらのアクティビティが個別のトランザクションとして評価されます。たとえば、マッピング・アクティビティを追加する場合、各マッピングが独立してコミットおよびロールバックされます。この設計の場合、1回のコミット文またはロールバック文ですべてのマッピングを制御することは不可能です。

複数のマッピングをまとめてコミットまたはロールバックするには、各マッピングをコールするスクリプトに関連付けられたSQL*Plusアクティビティを使用してプロセス・フローを設計することを検討してください。詳細は、「プロセス・フロー・エディタを介したマッピングのコミット」を参照してください。

ユーティリティ・アクティビティ

表27-2に、各ユーティリティ・アクティビティをリストし、関連するアイコンを示します。

表27-2 ユーティリティ・アクティビティ

アイコン

アクティビティ

簡単な説明

割当

値を変数に割り当てます。

Enterprise Java Bean

プロセス・フロー内からEnterprise JavaBeanを実行します。

電子メール

電子メールを送信します。たとえば、プロセス・フローのアクティビティのステータスに関する電子メール・メッセージを送信します。

ファイルが存在

「ファイルが存在」アクティビティを使用して、指定されたドライブまたはディレクトリにファイルが存在するかどうかをチェックします。

Javaクラス

プロセス・フロー内からJavaクラスを実行します。

手動

プロセス・フローを停止します。プロセス・フローを再開するには、手動操作が必要です。

通知

ユーザーに電子メールを送信し、ユーザーがプロセス・フローの処理方法を示すレスポンスをリストから選択できるようにします。

OMBPlus

プロセス・フローでOMB*Plusスクリプトを表します。

ステータスの設定

成功、警告またはエラーのステータスを通知します。

待機

指定した時間分、プロセス・フローの進捗を遅延します。

コントロール・アクティビティ

表27-3に、プロセス・フローの制御に使用するアクティビティを示します。表では、関連付けられているアイコンを示します。また、各アクティビティに使用できる受信および送信推移の数も示します。

表27-3 コントロール・アクティビティ

アイコン

アクティビティ

簡単な説明

受信推移

送信推移

AND

別のアクティビティの起動前に全受信アクティビティを完了することを指定します。

2つ以上が使用可能。受信推移の数は、上位のFORKからの送信推移の数以下であることが必要です。

無条件推移および複合推移は使用不可。

終了(成功)

パスを成功として指定します。

1つ以上が使用可能

使用不可

終了(エラーあり)

パスをエラーで終了として指定します。

1つ以上が使用可能

使用不可

終了(警告あり)

パスを警告付きで終了として指定します。

1つ以上が使用可能

使用不可

終了ループ

forループまたはwhileループの終了を定義します。

1つ以上が使用可能

ForループまたはWhileループに1つのみ。

forループ

終了ループを使用してこのアクティビティを使用し、繰り返す構造を定義します。

必要な終了ループから1つ、およびさらに他のアクティビティから複数

ループ条件が1つおよび必要な終了条件が1つ

FORK

1つのアクティビティが完了してから2つ以上のアクティビティを起動します。

1つ以上が使用可能

2つ以上の無条件推移のみ

OR

指定された2つ以上のアクティビティのいずれかの完了後に、アクティビティを起動します。

2つ以上が使用可能

無条件推移が1つのみ。

ルート

排他的論理和およびif-then-elseシナリオを定義します。

whileループ

条件がTRUEであるかぎり、他のアクティビティを実行します。

必要な終了ループから1つ、およびさらに他のアクティビティから複数

ループ条件が1つおよび必要な終了条件が1つ

オペレーティング・システム・アクティビティ

表27-4に、プロセス・フローで開始可能なオペレーティング・システム・アクティビティを示します。

表27-4 OSアクティビティ

アイコン

アクティビティ

簡単な説明

FTP

プロセス・フロー中にファイル転送プロトコル・コマンドを起動します。たとえば、FTPアクティビティを使用して、マッピングが実行されるコンピュータにデータ・ファイルを移動します。

SQL*Plus

プロセス・フローでSQL*Plusスクリプトを実行します。

ユーザー定義

事前定義されていないアクティビティを表し、プロセス・フローに取り込めるようにします。

ユーザーにオペレーティング・システム・アクティビティを完全に制御させることは望ましくないため、Oracle Warehouse Builderでは、プロセス・フローで開始できるオペレーティング・システム・アクティビティを指定できます。直接実行の権限を付与または取り消すか、「セキュリティ制約の設定」で説明するように、サード・パーティによる実行を必須にすることで、ユーザーのオペレーティング・システム・コマンドの実行権限を制限します。また、プロキシ・コマンドおよびパラメータを使用し、さらに細かいアクセス制御が可能で、これらのコマンドやパラメータは、すべての実行を安全に行うためにも使用できます。

このセキュリティ機能は、$OWB_HOME/owb/bin/adminディレクトリにあるRuntime.propertiesファイルのプロパティの設定で制御します。このファイルには、コントロール・センター・サービスを実行するコントロール・センター・プロパティ値が記述されています。コントロール・センター・サービスの起動時には、このファイルは読取り専用に設定されています。このファイルを変更した場合、コントロール・センター・サービスを再起動しないと、変更は有効になりません。

セキュリティ制約の設定

デフォルトでは、各オペレーティング・システム・アクティビティ・コマンドのsecurity_constraintはDISABLEDに設定されています。

property.RuntimePlatform.0.NativeExecution.FTP.security_constraint = DISABLED
property.RuntimePlatform.0.NativeExecution.Shell.security_constraint = DISABLED
property.RuntimePlatform.0.NativeExecution.SQLPlus.security_constraint = DISABLED

オペレーティング・システム・アクティビティを有効化するには、security_constraintをNATIVE_JAVAまたはSchedulerに設定する必要があります。

property.RuntimePlatform.0.NativeExecution.FTP.security_constraint = NATIVE_JAVA
property.RuntimePlatform.0.NativeExecution.Shell.security_constraint = NATIVE_JAVA
property.RuntimePlatform.0.NativeExecution.SQLPlus.security_constraint = NATIVE_JAVA

NATIVE_JAVAに設定すると、コントロール・センター・サービスによる直接実行が可能になり、SCHEDULERによりDBMS_SCHEDULERを使用して強制的に実行されます。

プロキシ・コマンドおよびパラメータの設定

USER DEFINED(Shell)、FTPおよびSQLPlusの各アクティビティ・タイプには、proxy_commandプロパティとproxy_parameter_listプロパティ(オプション)という2つのプロパティがあります。

プロキシ・コマンドを指定すると、このプロキシ・コマンドがユーザー指定のコマンドおよびパラメータのかわりに実行されます。ユーザー指定のコマンドおよびパラメータは、プロキシ・パラメータに続くパラメータとしてプロキシ・コマンドに渡されます。これにより、プロキシ・コマンドはユーザーのコマンドが実行されるコンテキストになります。

proxy_commandプロパティを使用して、プロキシ・コマンドを指定できます。

アクティビティにプロキシ・コマンドを設定するには、次のコマンドを使用して、プロキシ・コマンドおよびプロキシ・パラメータ・リスト(オプション)を設定します。

property.RuntimePlatform.0.NativeExecution.FTP.proxy_command
property.RuntimePlatform.0.NativeExecution.FTP.proxy_parameter_list
property.RuntimePlatform.0.NativeExecution.Shell.proxy_command
property.RuntimePlatform.0.NativeExecution.Shell.proxy_parameter_list
property.RuntimePlatform.0.NativeExecution.SQLPlus.proxy_command
property.RuntimePlatform.0.NativeExecution.SQLPlus.proxy_parameter_list

たとえば、シェルにプロキシ・コマンドを設定する手順は、次のとおりです。

property.RuntimePlatform.0.NativeExecution.Shell.proxy_command = /bin/proxy_sh
property.RuntimePlatform.0.NativeExecution.Shell.proxy_parameter_list = ?-v?-n?

注意:
Runtime.propertiesファイルに対する変更権限は、Oracle Warehouse Builderの管理者にのみ付与してください。ユーザーには読取り専用権限を付与するようにしてください。

AND

ANDアクティビティを使用して、プロセス・フローを再開する前に2つ以上のアクティビティの完了を指定します。

画像and.gifの説明

ANDアクティビティには2つ以上の受信推移を含むことができます。ANDアクティビティを使用してプロセス・フローを正しく設計するには、ANDより上位のFORKアクティビティを配置する必要があります。また、ANDアクティビティに移動する推移の数は、上位のFORKからの送信推移の数以下である必要があります。FORKは、複数の無条件推移を割り当てることができるようにする唯一のアクティビティであるため、必要に応じて、ANDアクティビティによって複数のアクティビティが完了することを確認します。

ANDアクティビティにより、上位のアクティビティの結果を集計できるようになります。すべての上位のアクティビティがSUCCESSを戻す場合、ANDアクティビティはSUCCESSを戻します。上位のアクティビティがERRORを戻す場合、ANDアクティビティはERRORを戻し、そうでない場合はWARNINGが戻されます。結果を持たないアクティビティは、SUCCESSを戻したとみなされます。SET_STATUSアクティビティを使用して、結果を作成します。この機能は、パラレル実行している一連のマッピングがすべて正常に完了したかどうかをテストする場合に特に役立ちます。

図27-1に、プロセス・フロー内のANDおよびFORKアクティビティを示します。この例では、AND_ACTIVITYが、MAP1およびMAP2の完了に基づいて下位のアクティビティをトリガーします。AND_ACTIVITYが2つの受信推移を持つのに対して、FORKアクティビティは3つの送信推移を持つため、そのプロセス・フローは有効です。また、プロセス・フローは、MAP3に関連付けられている推移およびアクティビティが削除された場合にも有効になります。

図27-1 プロセス・フローのANDアクティビティ

「図27-1 プロセス・フローのANDアクティビティ」の説明

送信条件の場合、ANDアクティビティには1つ、2つまたは3つの条件付き推移を含むことができます。これにより、成功、警告およびエラー・アクティビティで終了する3つのパスになる可能性があります。

割当

割当アクティビティを使用して、変数に値を割り当てます。たとえば、このアクティビティを使用して変数をゼロに戻します。

画像act_icon_assign.gifの説明

表27-5で、割当アクティビティのパラメータを説明します。

表27-5 割当アクティビティ・パラメータ

パラメータ

説明

値

変数に割り当てる値を入力します。

変数

エディタで前に定義した変数を選択します。

データ監査モニター

データのプロファイルの結果に基づいて処理するプロセス・フローを設計できます。たとえば、データの品質がしきい値パラメータによって決定された基準を満たす場合にのみマッピングを実行する論理を作成します。

画像data_auditor_act_icon.gifの説明

表27-6で、データ監査モニター・アクティビティのパラメータを説明します。

表27-6 データ監査モニター・アクティビティ・パラメータ

パラメータ

説明

AUDIT_LEVEL

NONE

STATISTICS

ERROR_DETAILS

COMPLETE

BLUK_SIZE

1+

COMMIT_FREQUENCY

1+

MAX_NO_OF_ERRORS

マッピングを終了するまでに許容するエラーの最大数

OPERATING_MODE

SET_BASED

ROW_BASED

ROW_BASED_TARGET_ONLY

SET_BASED_FAIL_OVER_TO_ROW_BASED

SET_BASED_FAIL_OVER_TO_ROW_BASED_TARGET_ONLY

Enterprise Java Bean

Enterprise Java Beanアクティビティ・タイプを使用して、プロセス・フロー内からEnterprise JavaBean(EJB)をコールします。EJBはビジネス・ロジックを含むサーバー側コンポーネント(J2EEコンテナにより管理される)です。これにより、スケーラビリティが高く、複数のクライアントが使用可能な、トランザクション処理をサポートするアプリケーションを作成できます。

図ejb_activity.gifの説明

Enterprise Java Beanアクティビティ・タイプを使用して、プロセス・フロー内からEJBとして定義された機能を利用します。たとえば、複雑なビジネス・ロジックを実装するEJBのスイートがあるとします。Enterprise Java Beanアクティビティを使用して、このビジネス・ロジックをプロセス・フローに直接統合できます。Enterprise Java Beanアクティビティを使用することで、より高いスケーラビリティ、パフォーマンスおよびセキュリティのトランザクションが提供されます。

注意:
Enterprise Java Beanアクティビティを含むプロセス・フローを配布するには、Enterprise JavaBeanを含むJ2EEプラットフォームを表すURIロケーションを作成する必要があります。

表27-7で、Enterprise Java Beanアクティビティのパラメータを説明します。

表27-7 Enterprise Java Beanアクティビティ・パラメータ

パラメータ名

説明

CLASS_NAME

EJBを実装するクラス名

METHOD_NAME

実行する必要があるクラス内のメソッドの名前

RETURN_VALUE

メソッドにより戻された値の文字列表示

PARAMETER_LIST

Enterprise Java Beanに渡されるパラメータのリスト

例: Enterprise Java Beanアクティビティを使用してEJBからの既存のビジネス・ロジックを利用する

受注処理アプリケーションのロジックを実装するEnterprise JavaBeanのスイートがあるとします。この既存の機能をプロセス・フローで利用できます。Enterprise Java Beanアクティビティにより、この機能をプロセス・フローで直接統合できます。

この受注処理アプリケーションには、特定の日に発生したすべての受注のレポートを生成するEJBが含まれるとします。この受注データをデータ・ウェアハウスにロードするETLロジックを起動する前に、前の日に発生したすべての受注のレポートを生成するプロセス・フローを作成する必要があるとします。

図27-2に、必要な機能を提供するプロセス・フローを示します。Enterprise Java BeanアクティビティORDERS_REPORTは、EJB受注処理アプリケーションとして提供された機能を利用します。LOAD_ORDERSは、レポートの実行後に受注データをウェアハウスにロードするマッピングです。

図27-2 プロセス・フローのEJBアクティビティ

「図27-2 プロセス・フローのEJBアクティビティ」の説明

ORDERS_REPORTアクティビティで、次のパラメータ値を設定します。

- CLASS_NAME: ordersystem.reports

- METHOD_NAME: printReport

- PARAMETER_LIST: ?ReportName?PrintDevice?

「構造」パネルの上部の新規プロセスアクティビティ・パラメータを選択し、表27-8に指定されているように値を設定して、2つのカスタム・パラメータ、ReportNameとPrintDeviceをORDERS_REPORTアクティビティに作成します。

表27-8 カスタム・パラメータの値

ReportNameパラメータ

PrintDeviceパラメータ

方向

IN

IN

リテラル

True

True

値

DailyOrders

lpt1

Enterprise Java Beanアクティビティの配布ロケーションが、指定したEnterprise Java Beanをサポートするアプリケーションを含むJ2EEインスタンスを指すURIロケーションに設定されていることを確認します。たとえば、URIロケーションのURIフィールドは次のように設定されます。

ormi://myhost.example.com:23791/ReportsApp

例: Enterprise Java Beanアクティビティを使用してデータをDB2表から別の表にロードする

DB2データベースにOrdersとOrders_tgtの2つの表が含まれているとします。Oracle Warehouse Builderを使用してデータをOrdersからOrders_tgtにロードします。様々な表ユーティリティで構成されたJ2EEアプリケーションを使用できます。表ユーティリティを使用して、データをある表から別の表にコピーします。

プロセス・フローでデータをコピーする表ユーティリティを利用するには、プロセス・フローにEnterprise Java Beanアクティビティを作成します。Enterprise Java Beanアクティビティのパラメータは次のように設定されます。

- CLASS_NAME: mydb2.TableHandler

- METHOD_NAME: copyTable

- PARAMETER_LIST: ?SrcDataSource?TgtDataSource?SrcTable?TgtTable?

次のカスタム・パラメータを作成します。

- SrcDatasource: ソース・データ・ソースの名前を表します。

- TgtDataSource: ターゲット・データ・ソースの名前を表します。

- SrcTable: ソース表を表します。

- TgtTable: ターゲット表を表します。

表27-9に、カスタム・パラメータSrcDataSource、TgtDataSource、SrcTableおよびTgtTableに設定する値を示します。

表27-9 Enterprise Java Beanアクティビティのカスタム・パラメータ値

SrcDataSource

TgtDataTarget

SrcTable

TgtTable

方向

IN

IN

IN

IN

リテラル

True

True

True

True

値

OLTP_DataSource

Stage_DataSource

Orders

Orders_tgt

このプロセス・フローを配布するには、例: Enterprise Java Beanアクティビティを使用してEJBからの既存ビジネス・ロジックを利用するで説明したように、表ユーティリティ・アプリケーションのJ2EEコンテナを表すURIロケーションを作成し、Enterprise Java Beanの配布ロケーションを設定します。

注意:
J2EEプラットフォームでは、より高いスケーラビリティ、パフォーマンスおよびセキュリティが提供されるため、EJBを使用して、Javaにより提供される機能をプロセス・フローに統合することをお薦めします。

Enterprise Java Beanアクティビティの使用上の制約

- サポートされるパラメータ・タイプは次のとおりです。

- 文字列

- INTEGER

- FLOAT

- 日付

- BOOLEAN

ただし、サポートされるタイプ(文字列、INTEGERなど)の配列はサポートされません。

- 方向がOUTに設定されたカスタム・パラメータはサポートされません。

- Enterprise JavaBeanの実行中にスローされた例外はリポジトリ・ブラウザでのみ使用できます。

- 次のアクションはEnterprise Java Beanアクティビティ内で実行できません。

- 入力、出力およびエラー・ストリームのリダイレクト

- スレッドの作成と管理

- Java Virtual Machine(JVM)の停止

- ネイティブ・ライブラリのロード

- ネットワーク・ソケットでのリスニング、接続の受け入れ、またはネットワーク・ソケットからのマルチキャスト

- ファイル記述子の直接読取りまたは書込み

- ファイルシステムでのファイルの作成、変更または削除

電子メール

プロセス・フローのアクティビティが完了した後に電子メール通知を送信できます。たとえば、マッピングのようなアクティビティがエラーまたは警告で終了したと管理者に通知する場合、これが役立ちます。

画像email.gifの説明

表27-10に、電子メール・アクティビティに設定するパラメータを示します。

表27-10 電子メール・アクティビティ・パラメータ

パラメータ

説明

SMTP Server

送信メール・サーバーの名前。デフォルト値はlocalhostです。

ポート

送信メール・サーバーのポート番号。デフォルト値は25です。

From_Address

プロセス・フロー通知の送信元の電子メール・アドレス

Reply_To_Address

受信者が応答する電子メール・アドレスまたはメーリング・リスト

To_Address

プロセス・フロー通知を受信する電子メール・アドレスまたはメーリング・リスト。カンマまたはセミコロンを使用して、複数の電子メール・アドレスを区切ります。

CC_Address

プロセス・フロー通知のコピーを受信する電子メール・アドレスまたはメーリング・リスト。カンマまたはセミコロンを使用して、複数の電子メール・アドレスを区切ります。

BCC_Address

プロセス・フロー通知のブラインド・コピーを受信する電子メール・アドレスまたはメーリング・リスト。カンマまたはセミコロンを使用して、複数の電子メール・アドレスを区切ります。

Importance

通知の重要性のレベル。重要性についての各オプション、標準、高または低から1つ選択します。

Subject

電子メールの件名の行に表示されるテキスト。

Message_Body

電子メールの本文に表示されるテキスト。テキストの入力または貼付けを実行するには、「アクティビティ」パネル下部の「値」を選択します。プロセス・フロー・エディタに入力できるテキスト数は無制限です。

電子メール・アドレスの場合、表示名の有無にかかわらず電子メール・アドレスを入力できます。たとえば、次の入力は適切です。

jack.emp@example.com

Jack Emp<jack.emp@example.com>

Jack Emp[jack.emp@example.com]

Jack Emp[jack.emp@example.com],Jill Emp[jill.emp@example.com]

Jack Emp[jack.emp@example.com];Jill Emp[jill.emp@example.com]

電子メール・アクティビティを含むプロセス・フローを実行するには、様々なホスト・システムやポートにアクセスする必要があります。Oracle Database 11gリリース1に実装された新しいセキュリティ措置により、ホストおよびポートへのアクセスは制限されます。DBMS_NETWORK_ACL_ADMINパッケージを使用して、電子メール・アクティビティがアクセスするホストおよびポートへのアクセス権を明示的に付与する必要があります。

たとえば、ユーザーOWBSYSがメール・サーバーmail.example.com、ポート25を使用して電子メールを送信する必要があるとします。データベース管理者は次の手順を実行する必要があります。

1. 次のコマンドを使用して、ユーザーOWBSYSのアクセス制御リスト(ACL)を作成します。

EXECUTE DBMS_NETWORK_ACL_ADMIN.CREATE_ACL
('acl_for_owb_cc.xml','ACL for Control Center','OWBSYS','CONNECT');

ACLは、ネットワーク・ターゲットに割り当てないと、アクセス制御の効果を発揮しません。

2. アクセス制御リスト(ACL)をネットワーク・ホストに割り当て、オプションでTCPのポート範囲を指定します。次のコマンドを使用します。

EXECUTE DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL
('acl_for_owb_cc.xml','mail.example.com',25)

3. COMMITコマンドを使用して変更をコミットします。

終了

プロセス・フローのパスはすべて、終了アクティビティで終了する必要があります。

画像end_success.gifの説明

プロセス・フローを最初に作成したときに、デフォルトでは成功タイプの終了アクティビティが含まれています。終了タイプを使用して、パスに含まれるロジックのタイプを指定します。マッピングなどの特定のアクティビティには3種類の結果があるため、表27-11に示すように、3つの終了タイプがエディタに用意されています。これらの終了タイプを使用して、プロセス・フローのエラー処理ロジックを設計できます。

表27-11 終了アクティビティのタイプ

アイコン

終了タイプ

説明

正常終了

正常終了する上位のアクティビティに依存して、パスが論理を含むことを示します。

警告

警告で終了する上位のアクティビティに依存して、パスが論理を含むことを示します。

エラー

エラーで終了する上位のアクティビティに依存して、パスが論理を含むことを示します。

1つ、2つまたは3つすべての終了のタイプを含むように、プロセス・フローを設計できます。終了タイプはそれぞれ1回のみ使用でき、終了タイプは重複して使用できません。各終了アクティビティには、単一または複数の受信推移を含むことができます。

図27-3では、END_SUCCESSに3つの受信推移があり、それぞれが上位のアクティビティの正常終了に依存します。END_ERRORには、上位のマッピング・アクティビティがエラーで終了する場合に実行する電子メール・アクティビティからの1つの受信推移があります。

図27-3 プロセス・フローの終了アクティビティ

「図27-3 プロセス・フローの終了アクティビティ」の説明

デフォルトでは、すべてのプロセス・フローには、END_SUCCESSが含まれます。終了アクティビティを別のタイプに変更できませんが、違うタイプの終了アクティビティを追加できます。

終了アクティビティをプロセス・フローに追加する手順は次のとおりです。

1. プロセス・フロー・エディタのパレットから、該当する「終了」アイコンをキャンバスにドラッグ・アンド・ドロップします。
Oracle Warehouse Builderでは、プロセス・フローに表示されている終了タイプを選択できません。

2. 「OK」をクリックします。
Oracle Warehouse Builderによって、終了アクティビティがキャンバスに追加されます。

終了ループ

エディタは、キャンバスに追加する各ForループおよびWhileループに対して、終了ループを追加します。

画像end_loop_icon.gifの説明

終了ループ・アクティビティには、ForループまたはWhileループ・アクティビティへの単一の無条件送信推移が必要です。ループを構成するすべてのフローを、終了ループ・アクティビティに収束して、次のループ相互作用またはループ終了のいずれかに対してパラレル・フローが確実に残らないようにする必要があります。

ファイルが存在

ファイルが存在アクティビティを使用して、次のアクティビティを実行する前にファイルの存在を確認します。「アクティビティ」パネルで、ファイル名を入力します。

画像file_exists.gifの説明

ファイルが存在アクティビティでの確認は1回のみです。ファイルが存在する場合、プロセス・フローが正常終了推移に進みます。ファイルが存在しない場合、プロセス・フローは警告推移に進みます。ファイルが存在アクティビティは、OMB*Plusを使用している場合のTCLエラーのような重大な障害の場合にのみエラー推移をトリガーします。

ファイルが存在アクティビティには、PATHと呼ばれる1つのパラメータがあります。このパラメータに対して、完全修飾ファイル名、ディレクトリ名、またはセミコロン区切りのリストを指定します。通常、パスはコントロール・センター・サービスが実行中のホストと同じホストでテストされます。

基礎となるオペレーティング・システムのセキュリティ制約は、1つ以上のファイルにアクセスできない場合があり、ファイルが存在しないように見えることがあります。すべてのパスが存在する場合、アクティビティはEXISTSを戻します。パスがまったく存在しない場合は、MISSINGを戻します。複数のパスが存在する場合は、SOME_EXISTを戻します。

FORK

FORKアクティビティを使用して、1つのアクティビティの完了後に複数の並行アクティビティを起動します。

画像fork.gifの説明

FORKアクティビティに複数の受信推移を割り当てることができます。FORKアクティビティは、パラレル処理される複数の無条件送信推移の割当てを可能にする唯一のアクティビティです。

たとえば、図27-4では、MAP1の完了後に、プロセス・フローがFTP、FDSおよびEMAILという名前のアクティビティをパラレル実行します。

図27-4 FORKアクティビティによるパラレル・プロセスの保証

「FORKアクティビティによるパラレル・プロセスの保証」の説明

図27-5に、FORKアクティビティがない同じアクティビティを示します。この場合、アクティビティのうち1つのみがMAP1の完了状態に基づいて実行されます。

図27-5 FORKアクティビティがない結果としての条件付きプロセス

「FORKアクティビティがない結果としての条件付きプロセス」の説明

プロセス・フロー・エディタは、送信推移またはFORKから割り当てることができる並行アクティビティの数を制限しません。並行実行の設計の際、プロセス・フローを実行するために使用するワークフロー・エンジンまたはサーバーによって課せられる制限に基づいてFORKを設計します。

送信FORKアクティビティ推移は、複合式を持つことができません。

forループ

forループを使用して、ループに含まれたアクティビティを繰り返し実行してから終了し、プロセス・フローを再開します。

画像for_loop.gifの説明

forループを追加する際、エディタは終了ループ・アクティビティと終了ループへの推移も追加します。送信推移の場合、ループ条件を持つものと終了条件を持つものを定義します。送信推移を選択して、オブジェクトの詳細の「条件」をクリックします。

表27-12で、forループ・アクティビティのパラメータを説明します。

表27-12 FORループ・アクティビティ・パラメータ

パラメータ

説明

Condition

TRUEと評価された場合、式はループ推移を実行し、それ以外は終了推移を実行します。

変数

変数またはパラメータに限定され、その値は繰返しのたびに増加します。

Initial_Value

ループに入る際の変数の初期値。デフォルトでは、式の入力が必要です。

Next_Value

変数の次の値。デフォルトでは、式の入力が必要です。

FTP

FTPアクティビティを使用して、提供するFTPコマンドのスクリプトに基づいて、あるロケーションから別のロケーションへファイルを転送します。FTPアクティビティは、「ユーザー定義」アクティビティの特化したものです。これら2つのアクティビティの違いは、FTPアクティビティはリモート・ファイル・ロケーションによって構成される必要があることです。

有効化されるプロセス・フローの場合、FTPコマンドには、インストールされたコントロール・センター・サービスを使用したサーバーとの間のデータ転送が含まれる必要があります。コントロール・センター・サービスをホストしていない2台のコンピュータの間でデータを移動するには、1台目のコンピュータがコントロール・センター・サービスのホスト・コンピュータにデータを転送してから、2台目のコンピュータにデータを転送します。

FTPアクティビティを使用してプロセス・フローを設計する前に、ソースと宛先に定義されたロケーションがあることを確認します。

FTPアクティビティは、提供するFTPコマンドのスクリプトに依存します。Oracle Warehouse Builder内でそのスクリプトを記述するか、Oracle Warehouse Builderでそのスクリプトを含むファイルを参照するかを選択できます。次の方法から1つを選択します。

- Oracle Warehouse Builderでのスクリプトの記述

- Oracle Warehouse Builder外部のスクリプトのコール

Oracle Warehouse Builderでのスクリプトの記述

Oracle Warehouse BuilderでFTPコマンドのスクリプトを保守する場合、またはサーバーに対するパスワード・セキュリティが要件である場合、この方法を選択します。

この方法の場合、FTPアクティビティのCOMMANDパラメータで、FTP実行可能ファイルへのパスを入力します。FTPパラメータのパラメータはデザイン・センターの「構造」タブに表示されます。また、UNIX以外のファイル転送プロトコルの場合、PARAMETER_LISTパラメータにプロトコルの追加パラメータを入力します。SCRIPTパラメータのVALUEプロパティにスクリプトを入力します。

表27-13に、Oracle Warehouse Builder内でスクリプトを作成する際にFTPアクティビティに対して設定するパラメータを示します。

表27-13 Oracle Warehouse BuilderにおけるスクリプトのFTPアクティビティ・パラメータ

パラメータ

説明

COMMAND

Windowsオペレーティング・システムの場合はc:\WINNT\System32\ftp.exeなどの、ファイル転送プロトコル・コマンドへのパスを入力します。

PARAMETER_LIST

これはコマンドに渡されるパラメータのリストです。各パラメータはトークンで区切られます。トークンはパラメータ・リスト文字列の最初の文字として使用され、文字列もそのトークンで終わる必要があります。Oracle Warehouse Builderでは「?」の文字が推奨されますが、任意の文字を使用することもできます。たとえば、「abc」、「def」および「ghi」を渡す場合、次のいずれの形式も可能です。

?abc?def?ghi?

または

!abc!def!ghi!

または

|abc|def|ghi|

トークン文字または「\」をパラメータの一部として含める必要がある場合、「\」でエスケープする必要があります。たとえば、「\\」です。「\」がトークン文字である場合、「/」がエスケープ文字となります。

ファイル転送プロトコルに必要な追加パラメータを入力します。

Windowsの場合、?"-s:${Task.Input}"?と入力します。${Task.Input}トークンはOracle Warehouse Builderに対し、スクリプトを一時ファイルに格納し、トークンを一時ファイルの名前で置き換えるよう促します。したがって、スクリプトは標準入力として渡されません。

注意: Windows FTPコマンドはファイルを除く標準入力では使用できないため、-sパラメータが設定されます。

UNIXの場合、この値は空白にしておく必要があります。通常、UNIX FTPは標準入力から読み込むため、その他のパラメータは必要ありません。

RESULT_CODE

アクティビティが正常に完了したかどうかを示すアクティビティ・タイプの整数の出力。

SUCCESS_THRESHOLDQADB55918:closed

FTPコマンド完了ステータスを指定します。正常な完了を示す最も大きい戻り値をオペレーティング・システムから入力します。オペレーティング・システムがさらに大きな値を戻した場合、コマンドが失敗したことを示します。

デフォルト値は0です。

SCRIPT

このパラメータに、FTPに必要なスクリプトを入力できます。

テキストの入力または貼付けを実行するには、プロパティ・インスペクタの「構造」タブでSCRIPTパラメータを選択し、Valueプロパティの上で矢印をクリックします。「プロパティの編集」ダイアログ・ボックスが表示され、そこでスクリプトを入力します。プロセス・フロー・エディタに入力できるテキスト数は無制限です。

スクリプト内の各改行は、[Enter]キーを押す操作に相当します。FTPコマンドを確実に終了させるには、スクリプトがbyeまたはquitで終わり、その後に改行が続く必要があります。

次に、FTPアクティビティのSCRIPTパラメータのValueプロパティに入力するスクリプトの例を示します。

open ${Remote.Host}
${Remote.User}
${Remote.Password}
lcd ${Working.RootPath}
cd ${Remote.RootPath}
get salesdata.txt
quit

スクリプト例には${Remote.User}および${Remote.Password}が含まれる点に注意してください。これらは置換変数です。詳細は、「置換変数の使用」を参照してください。

置換変数の使用

置換変数は、Oracle Warehouse BuilderでFTPスクリプトを記述して格納する場合にのみ使用できます。

置換変数を使用すると、サーバー・ファイル、アカウントおよびパスワードが変更されたときにFTPアクティビティを更新する必要がなくなります。たとえば、FTPアクティビティを使用して特定のディレクトリの下のsalessrv1上のファイルにアクセスする10個のプロセス・フローを作成する場合を考えます。ファイルを移動する場合、置換変数を使用しないと、各FTPアクティビティを個別に更新する必要があります。置換変数を使用すると、更新が必要なのはロケーション情報のみになります。

置換変数はパスワードのセキュリティを維持する上でも重要です。置換変数をサーバー・パスワードとして使用したFTPアクティビティを実行すると、変数はユーザーが入力した関連ロケーションのセキュア・パスワードに解決されます。

表27-14に、FTPアクティビティに入力可能な置換変数を示します。Workingは、コントロール・センター・サービスがあるコンピュータのことで、この事例ではローカル・コンピュータを意味します。Remoteは、データ転送に関与する他のサーバーを意味します。FTPアクティビティを構成する場合に、「プロセス・フローの構成のリファレンス」の説明に従って、どのサーバーをリモートおよびローカルにするかを指定します。

表27-14 FTPアクティビティに対する置換変数

変数

値

${Working.RootPath}

コントロール・センター・サービス・ホストのロケーションに対するルート・パス値

${Remote.Host}

コントロール・センター・サービス・ホストとの間のデータ転送に関与するロケーションに対するホスト値

${Remote.User}

コントロール・センター・サービス・ホストとの間のデータ転送に関与するロケーションに対するユーザー値

${Remote.Password}

コントロール・センター・サービス・ホストとの間のデータ転送に関与するロケーションに対するパスワード値

${Remote.RootPath}

コントロール・センター・サービス・ホストとの間のデータ転送に関与するロケーションに対するルート・パス値

${Task.Input}

WorkingおよびRemoteロケーションは、プロセス・フローの構成時にFTPアクティビティに対して設定されます。

${parameter_name}

${parameter_name}構文を使用して、カスタム・パラメータの値をスクリプトおよびパラメータに置換できます。

すべてのカスタム・パラメータは、コマンドの環境スペースにインポートされます。たとえば、PATHというカスタム・パラメータを定義することにより、オペレーティング・システム実行可能ファイルの検索に使用される検索パスを変更できます(JAVA VMでは、これができない場合があります)。

Oracle Warehouse Builder外部のスクリプトのコール

パスワード・セキュリティの問題がない場合、Oracle Warehouse BuilderではFTPコマンド、ユーザー名およびパスワードを含むスクリプトを持つファイルを指定できます。

ファイル・システムのファイルをコールするには、Oracle Warehouse Builderがそのファイルを指定するようにPARAMETERS_LISTに適切なコマンドを入力します。Windowsオペレーティング・システムの場合、次のように入力します。

?"-s:<file path\file name>"?

たとえば、Cドライブのtempディレクトリにあるmove.ftpという名前のファイルをコールするには、次のように入力します。

?"-s:c:\temp\move.ftp"?

このメソッドの場合、SCRIPTパラメータを空白のままにします。

表27-15に、FTPスクリプトがシステム上のファイルに存在する場合にFTPアクティビティに対して設定するパラメータを示します。

表27-15 Oracle Warehouse Builder外部のスクリプトに対するFTPアクティビティ・パラメータ

パラメータ

説明

Command

このパラメータは空白のままにします。

Parameter List

FTPスクリプトに対するパスとファイルの名前を入力します。プロセス・フロー・エディタは、入力する最初の文字をセパレータと解釈します。たとえば、プロセス・フロー・エディタは次のエントリを/cおよびdirの2つのパラメータとして解釈します。

?/c?dir?

バックスラッシュをエスケープ文字として使用します。たとえば、プロセス・フロー・エディタは次のエントリを-l、-sおよび/の3つのパラメータとして解釈します。

/-l/-s/\//

RESULT_CODE

アクティビティが正常に完了したかどうかを示すアクティビティ・タイプの整数の出力。

Success Threshold

FTPコマンド完了ステータスを指定します。正常な完了を示す最も大きい戻り値をオペレーティング・システムから入力します。オペレーティング・システムがさらに大きな値を戻した場合、コマンドが失敗したことを示します。

デフォルト値は0です。

Script

このパラメータは空白のままにします。

Javaクラス

Javaクラス・アクティビティ・タイプを使用して、プロセス・フローでJavaクラスまたはJava Beanを表します。Java Beanはビルダー・ツールで視覚的に操作できる再利用可能なソフトウェア・コンポーネントです。

画像java_activity.gifの説明

Javaクラス・アクティビティを使用して、Java BeanまたはJavaクラスを使用して定義された機能を利用できます。

表27-16で、Javaクラス・アクティビティのパラメータを説明します。

表27-16 Javaクラス・アクティビティ・パラメータ

パラメータ名

説明

CLASSPATH

Javaクラス・アクティビティの実行時に指定されるclasspathを表します。

CLASS_NAME

プロセス・フローから呼び出すクラスの名前。

JAVA_OPTIONS

JVMに渡されるオプションを表します。

PARAMETER_LIST

JavaクラスまたはJava Beanに渡されるパラメータを表します。

RESULT_CODE

このJavaクラスの終了コードにより戻される値を表します。

RUN_DIRECTORY

Java Virtual Machine(JVM)が起動されるときの作業ディレクトリの名前を表します。

Javaクラス・アクティビティを含むプロセス・フローを配布するのに特別な場所は必要ありません。

注意:
次の理由がある場合、Javaクラス・アクティビティ・タイプの使用はお薦めしません。

- 単一Java仮想マシン(JVM)を各アクティビティの実行に使用しています。

- Oracle Warehouse Builderには、パラメータをアクティビティに渡す安全な方法が用意されていないため、パスワードに関するセキュリティの問題が発生する場合があります。

プロセス・フローでJavaクラス・アクティビティを使用する例

「例: Enterprise Java Beanアクティビティを使用してEJBからの既存ビジネス・ロジックを利用する」で説明しているレポート機能は、EJBではなくJavaクラスで実装できます。この場合、Javaクラス・アクティビティを追加し、そのパラメータに対し次の値を設定します。

- CLASSPATH: home/reports/reports.jar

- CLASS_NAME: ordersystem.reports

- JAVA_OPTIONS: Xmx768M -DDIR=d:¥temp¥

- PARAMETER_LIST: ?ReportName?PrintDevice?

- RUN_DIRECTORY: /home/work

ReportNameおよびPrintDeviceは次のプロパティを使用して作成したカスタム・プロパティです。

- 方向は両方のパラメータともINです。

- リテラルは両方のパラメータともTrueです。

- ReportNameパラメータの値はDailyOrdersに設定されます。

- DailyOrdersパラメータの値はlpt1に設定されます。

Javaクラス・アクティビティの実行可能ファイルのカスタマイズの例

デフォルトでは、Javaクラス・アクティビティは、コントロール・センター・サービス・パスからJava実行可能ファイルを呼び出すオペレーティング・システム・プロセスによって実行されます。プロパティproperty.RuntimePlatform.0.NativeExecution.JavaOSProcess.executableを設定することによって、これを上書きできます。

ファイルOWB_HOME/bin/admin/Runtime.propertiesでこのプロパティを設定します。

たとえば、次の手順を使用して特定のJDKによりJavaアクティビティを実行します。

1. OWB_HOME/owbディレクトリに、次を含むmy_java.shを作成します。

#!/bin/sh
echo $* >> /tmp/out.log
/usr/local/packages/jdk14/jre/java $*

2. OWB_HOME/bin/admin/Runtime.propertiesファイルに、次を追加します。
property.RuntimePlatform.0.NativeExecution.JavaOSProcess.executable=/oracle/owb/my_java.sh

3. my_java.shをOracleユーザーにより実行可能にします。

手動

手動アクティビティを使用して、プロセス・フローを停止します。

画像act_icon_manual.gifの説明

プロセス・フローを停止した後、ユーザーはコントロール・センターまたはリポジトリ・ブラウザによって介入し、プロセス・フローを再開する必要があります。

このアクティビティを使用すると、プロセスを設計してETLプロセスを再起動またはリカバリできるようになります。

手動アクティビティは、通知アクティビティと類似していますが、手動アクティビティはOracle Workflowの実装を必要としないため、電子メールを送信しません。Oracle Workflowと対話せずに通知アクティビティと同じ結果にするには、手動アクティビティの前に電子メール・アクティビティを使用するようにしてください。

表27-17で、手動アクティビティのパラメータを説明します。

表27-17 手動アクティビティ・パラメータ

パラメータ

説明

Performer

プロセス・フローを再開できる個人またはグループの名前。

Subject

アクティビティのサブジェクトを入力します。

Text_body

プロセス・フローを再開する前に実行される特別な指示を入力します。

Priority

優先度を選択します。オプションは、1= 高、50=中、99=低です。

マッピング

マッピング・アクティビティを使用して、マッピング・エディタで定義および構成した既存のマッピングを追加します。

画像mapping.gifの説明

マッピング・アクティビティに複数の受信推移を割り当てることができます。送信推移の場合、1つの無条件推移または各無条件推移のうちの1つに割り当てます。

マッピングをプロセス・フローに追加する場合、その構成プロパティを「アクティビティ」パネルに表示できます。プロセス・フロー・エディタの「マッピング」アクティビティは、マッピング・エディタのマッピングからそのプロパティを継承します。プロセス・フロー・エディタでは、プロパティ・データ型または方向を変更できません。

ただし、プロセス・フローのみに影響を与え、マッピング・エディタのマッピングの設定を変更しない新規の値を割り当てることができます。たとえば、プロセス・フロー・エディタでオペレーティング・モードをセット・ベースから行ベースに変更する場合、プロセス・フローは行ベースで実行します。元のマッピングはそのオペレーティング・モードとしてセット・ベース・モードのままです。基礎となるマッピングのプロパティを変更する場合は、「マッピング構成のリファレンス」を参照してください。

マッピングにマッピング入力パラメータ演算子が含まれる場合、そのデータ型に従って値を指定します。プロセス・フロー・エディタは、マッピングにマッピング入力パラメータ演算子が追加される場合に、PL/SQL式を受け取ることを想定します。マッピング入力パラメータが文字列の場合、二重引用符でその文字列を囲みます。

マッピング・エディタでマッピングを変更したプロセス・フローを更新するには、プロセス・フローからマッピング・アクティビティを削除し、マッピング・アクティビティを再び追加します。

表27-18および表27-19に、PL/SQLおよびSQL*Loaderの様々なマッピング・パラメータを示します。

表27-18に、PL/SQLマッピング・パラメータを示します。

表21-18 PL/SQLのマッピング・パラメータ

パラメータ

有効な値

AUDIT_LEVEL

NONE

STATISTICS

ERROR_DETAILS

COMPLETE

BLUK_SIZE

1+

COMMIT_FREQUENCY

1+

MAX_NO_OF_ERRORS

マッピングをエラーで終了するまでに許容するエラーの最大数

OPERATING_MODE

SET_BASED

ROW_BASED

ROW_BASED_TARGET_ONLY

SET_BASED_FAIL_OVER_TO_ROW_BASED

SET_BASED_FAIL_OVER_TO_ROW_BASED_TARGET_ONLY

表27-19に、SQL*Loaderマッピング・パラメータを示します。

表27-19 SQL*Loaderのマッピング・パラメータ

パラメータ

説明

BAD_FILE_NAME

SQL*LoaderのBADファイルの名前

DATA_FILE_NAME

SQL*LoaderのDATAファイルの名前

DISCARD_FILE_NAME

SQL*LoaderのDISCARDファイルの名前

通知

通知アクティビティを使用すると、ETLプロセスを再開またはリカバリするプロセスを設計できます。このアクティビティはOracle Workflowと連携して機能します。通知を実装するには、Oracle Workflowのワークフロー通知も実装する必要があります。または、電子メール・アクティビティに続けて手動アクティビティを使用することも可能です。メッセージの送信方法はOracle Workflowサブシステムで決定されます。

画像act_icon_notifcation.gifの説明

通知アクティビティを使用するには、最初に表27-20に示されるパラメータを定義します。定義する各レスポンスに基づいて条件付き送信推移を定義します。たとえば、response_typeの値が「はい」、「いいえ」でdefault_responseの値が「はい」の場合は、2つの送信推移を定義します。各推移を右クリックして「条件」を選択し、条件のリストを表示します。この例では、「はい」に設定された条件を持つ1つの送信推移と、「いいえ」に設定された別の送信推移を作成します。

表27-20 通知アクティビティ・パラメータ

パラメータ

説明

Performer

Oracle Workflow管理者によって定義されたロールの名前を入力します。

Subject

電子メールのサブジェクトを入力します。

Text_body

実行者の指示を入力します。レスポンスがプロセス・フローに与える影響を説明し、レスポンスされない場合のデフォルトのアクションを説明します。

Html_body

テキストに追加して、またはテキストのかわりにhtmlを使用します。Html_bodyに入力した内容はText_bodyに追加されます。

Response_type

実行者がレスポンスを選択するカンマ区切りの値リストを入力します。各エントリはアクティビティからの1つの送信推移に対応します。

Default_response

デフォルト・レスポンスを入力します。

Priority

電子メールの優先度を1(高)、50(中)または99(低)のいずれかから選択します。

Timeout

レスポンスを待つ秒数。これが設定される場合は#TIMEOUT推移が必要です。

Response_processor

Oracle Workflow通知レスポンス・プロセッサ機能。詳細は、Oracle Workflowのマニュアルを参照してください。

Expand_roles

通知投票に使用します。この値をTRUEまたはFALSEに設定します。TRUEに設定する場合、通知はグループに1つの共有メッセージではなく、グループの各メンバーに送信されます。詳細は、Oracle Workflowのマニュアルを参照してください。

注意:
Oracle Workflow制限により、実行者、優先度、タイムアウトおよびカスタム・パラメータの値のみを実行時に変更できます。

通知メッセージの置換

カスタム・パラメータを通知アクティビティに追加して、通知を介してユーザーからデータを受け渡し、取り出すことができます。INパラメータは、SQLおよび適切な構文を使用してメッセージに置換されます。たとえば、NAMEというカスタム・パラメータの場合、テキスト&NAMEがパラメータの値で置換されます。また、OUTパラメータに値を入力するよう要求されます。

OMBPlus

OMB*Plusアクティビティを使用して、プロセス・フローにOMB*Plusを表します。これにより、プロセス・フローの実行時にOMB*Plusを起動して、OMB機能を実行したり、エキスパートを呼び出すことができます。

図ombplus_activity.gifの説明

これは特にプロセス・フロー内でマッピングを使用する場合に役立ちます。プロセス・フローの開始前にマップを配布しないでください。プロセス・フローの一部としてOMBPlusアクティビティを使用してこれらを配布できるようになりました。

たとえば、2つのマッピングを実行し、それぞれがターゲット表をロードするプロセス・フローを作成するとします。プロセス・フローの一部としてマッピングを配布できるようになります。

図27-6に、この機能を提供するマッピングを示します。

図27-6 マッピングのOMBPlusアクティビティ

「図27-6 マッピングのOMBPlusアクティビティ」の説明

表27-21で、OMBPlusアクティビティのパラメータを説明します。

表27-21 OMBPlusアクティビティ・パラメータ

パラメータ名

説明

PARAMETER_LIST

1文字目の繰返しで区切られたパラメータのリストを定義します。

たとえば、/VALUE1/VALUE2/VALUE3/では、"/"文字がセパレータとして使用されています。セパレータはリストの最初と最後にも必要です。

RESULT_CODE

アクティビティが正常に完了したかどうかを示すアクティビティ・タイプの整数の出力。

SCRIPT

実行するOMB*Plusスクリプトを表します。

このパラメータは実行するスクリプト本文の入力にのみ使用できます。既存のスクリプトを参照するには、PARAMETER_LISTにスクリプトを指定します。たとえば、/my_script.tcl/value1/value2/です。

SUCCESS_THRESHOLDQADB55918:closed

OMB*Plusスクリプトの完了ステータスを指定します。スクリプト実行の正常完了を示す最も大きい戻り値を入力します。さらに大きな値が戻された場合は、コマンドが失敗したことを意味ます。デフォルト値は0です。

OMB*Plusスクリプトを入力して、ファイルシステム上の既存のスクリプトを実行または参照できます。スクリプトを入力するには、「構造」パネルで「アクティビティ」ノードを開き、「スクリプト」を選択します。プロパティ・インスペクタの「値」フィールドの省略記号ボタンをクリックして、「プロパティの編集」ダイアログ・ボックスにスクリプトを入力し、「OK」をクリックします。ファイルシステム上の既存のスクリプトを参照するには、parameter_listパラメータに移動し、アットマーク@に続いてフルパスを入力します。

OMBPlusアクティビティを含むプロセス・フロー用の実行モード

OMBPlusアクティビティは次のいずれかのモードで実行できます。

- コントロール・センター内部(NATIVE JAVA)

- データベース(Scheduler)

- 無効

owb/bin/admin/Runtime.propertiesに設定されているプロパティ設定property.RuntimePlatform.0.NativeExecution.OMBPlus.security_constraintによりこの動作が制御されます。

OR

ORアクティビティを使用すると、1つ以上の上位のアクティビティの完了に基づいてアクティビティを起動できます。ORアクティビティには、複数の受信推移および1つのみの無条件送信推移を割り当てることができます。

ORアクティビティはANDアクティビティと類似のセマンティックを持ちますが、相違点は、ORアクティビティは完了した最初の上位のアクティビティの正常終了、警告またはエラーの結果を伝播することです。

画像or.gifの説明

プロセス・フローのORアクティビティは、ダウンストリーム・アクティビティが各プロセス・フローの実行に1回のみトリガーされることを確認します。

図27-7に、ORアクティビティを含むプロセス・フローを示します。

図27-7 プロセス・フローにおけるORアクティビティ

「図27-7 プロセス・フローにおけるORアクティビティ」の説明

プロセス・フロー・エディタを使用することにより、ORアクティビティを省略して、3つのマッピング・アクティビティのそれぞれからの推移を、サブプロセス・アクティビティSUBPROC1に割り当てることができます。ただし、この論理では1回のプロセス・フローの実行でSUBPROC1を3回起動することになります。これを回避するには、ORアクティビティを使用してください。

ルート

ルート・アクティビティを使用すると、アクティビティの結果を、定義した条件に基づいて特定の結果になるようにルーティングできます。これにより排他的論理和およびif-the-elseシナリオを定義できます。

画像route.gifの説明

ルート・アクティビティは、操作を持たず、推移の方向を変更する場合に使用します。ルート・アクティビティには、その他のアクティビティと同様に、複合条件を持つ送信推移を追加できます。ただし、このアクティビティには操作がないため、条件ではプロセス・フローのパラメータおよび変数のみを参照できます。ルート・アクティビティを指定することにより、ANDやORアクティビティの結果に影響を与えることができます。ルート・アクティビティは、独自の結果を持たないため、正常終了したものとみなされます。

このアクティビティにはパラメータはありません。

ステータスの設定

ステータスの設定アクティビティを使用して、正常終了、警告またはエラーの各ステータスを通知できます。

画像act_icon_set_status.gifの説明

ステータスの設定アクティビティは、ANDアクティビティの動作を上書きするために使用できます。ANDの直前のアクティビティのいずれかがエラーを戻した場合、ANDアクティビティもエラーとして判断されることに留意してください。先行するアクティビティの結果と無関係にANDを正常終了として判断されるようにするには、そのアクティビティとANDアクティビティの間にステータスの設定アクティビティを挿入します。

SQL*PLUS

SQL*PLUSアクティビティを使用すると、スクリプトをプロセス・フローに導入できます。

画像act_icon_sql_plus.gifの説明

スクリプトの貼付けまたは入力を行うには、キャンバス上でアクティビティを選択します。「構造」パネルで「プロセス・フロー」ノード、「アクティビティ」ノード、「SQL*Plus」ノードの順に開き、SCRIPTを選択します。プロパティ・インスペクタにScriptパラメータのプロパティが表示されます。プロパティ・インスペクタの「値」フィールドにスクリプトを貼り付けるか入力します。または、ファイルシステム上の既存のスクリプトを参照するには、parameter_listに移動し、アットマーク@に続いてフルパスを入力します。

このアクティビティは広範な目的に使用できますが、一例は、「プロセス・フロー・エディタを介したマッピングのコミット」で説明しているように、SQL*PLUSアクティビティを使用してプロセス・フローにおいて複数のマッピングをコミットする方法を制御することです。

プロセス・フローでのSQL*PLUSアクティビティの使用

SQL*PLUSアクティビティのプロセス・フローは配布ロケーションの構成アイテムによって実行されます。

SQL*PLUSアクティビティを実行するロケーションを設定する手順は、次のとおりです。

1. プロジェクト・ナビゲータで、「プロセス・フロー」モジュールを展開します。

2. プロセス・フローを右クリックして「構成」を選択します。
プロセス・フローに対する「構成」タブが表示されます。

3. 「構成」タブで、SQL*Plusアクティビティ・ノードを展開します。

4. SQLPLUSを選択します。

5. 「パスの設定」で、「配布ロケーション」オプションをSQL*Plusアクティビティを実行するロケーションに設定します。

SQL*Plusアクティビティは、ユーザー定義アクティビティと類似していますが、次の相違点があります。

- COMMANDパラメータは、自動的に導出されるため、指定できません。

- ${Task.Input}置換変数を使用した場合は、生成される一時ファイルの末尾は.sqlになります。

- 用意されている置換変数のセットが異なります。このアクティビティは、配布されたデータベース・ロケーションを使用して構成する必要があります。

表27-22 SQL*PLUSアクティビティ・パラメータ

パラメータ

説明

Parameter_List

スクリプトが含まれるファイルのロケーションのフルパスを、その前に@を付けて入力します。

Script

parameter_listにパスを入力するかわりに、スクリプトを入力するか貼り付けることもできます。

置換変数の使用

置換変数はFTPと類似しています。FTPサーバーではなくOracle Databaseに接続する際に、置換変数はリモート・ロケーションのかわりに次のロケーションを使用します。

- 作業ロケーション(ローカル・ロケーション)

- 配布ロケーション(ターゲット・ロケーション)

表27-23 SQL*PLUS置換変数

置換変数

説明

${Working.RootPath}

ローカル作業ディレクトリ

${Task.Input}

SCRIPTパラメータから生成される一時ファイル

${Target.Host}

ターゲット・ロケーションのホスト名

${Target.Port}

ターゲット・ロケーションのターゲット・ポート

${Target.Service}

ターゲット・ロケーションのターゲット・サービス

${Target.TNS}

ターゲット・ロケーションのTNS

${Target.Schema}

ターゲット・ロケーションのターゲット・スキーマ

${Target.User}

ターゲット・ロケーションのユーザー

${Target.Password}

ターゲット・ロケーションのパスワード

${Target.URL}

ターゲット・ロケーションの接続記述子

PARAMTER_LISTが空の場合、配布ロケーション・パラメータに応じて、次のパラメータ・リストのいずれかが使用されます。

- ?${ Target.User }/${ Target.Password }@${ Target.TNS }?@${ Task.Input }?

- ?${Target.User}/${Target.Password}@${Target.URL}?@${Task.Input}?

- ?${Target.Schema}/${Target.Password}@${Target.TNS}?@${Task.Input}?

- ?${Target.Schema}/${Target.Password}@${Target.URL}?@${Task.Input}?

SQL*Plusコマンド

SQL*Plusコマンドは、FTPユーザー定義アクティビティに直接入力できません。ホーム・ディレクトリからロードされるか、そのロケーションがワークスペース管理者によって事前定義されています。

SQL*Plusの実行ロケーションの決定には、次のプラットフォーム・プロパティがこの順序で使用されます。

1. property.RuntimePlatform.0.NativeExecution.SQLPlus.sqlplus_exe_10g

2. property.RuntimePlatform.0.NativeExecution.SQLPlus.sqlplus_exe_9i

3. property.RuntimePlatform.0.NativeExecution.SQLPlus.sqlplus_exe_8i

4. property.RuntimePlatform.0.NativeExecution.SQLPlus.sqlplus_exe_default

同様に、Oracleホームの決定には次のプラットフォーム・プロパティが使用されます。

1. property.RuntimePlatform.0.NativeExecution.SQLPlus.oracle_home_10g

2. property.RuntimePlatform.0.NativeExecution.SQLPlus.oracle_home_9i

3. property.RuntimePlatform.0.NativeExecution.SQLPlus.oracle_home_8i

4. property.RuntimePlatform.0.NativeExecution.SQLPlus.oracle_home_default

開始

デフォルトでは、各プロセス・フローに1つの開始アクティビティを含めます。開始アクティビティの入力パラメータを、全体のプロセス・フローの入力パラメータになるよう設定できます。

画像start.gifの説明

開始アクティビティにパラメータを追加する手順は次のとおりです。

1. プロジェクト・ナビゲータで、「プロセス・フロー」をダブルクリックしてプロセス・フロー・エディタを開きます。

2. 「構造」パネルで、「アクティビティ」ノードを開きます。
「構造」タブが表示されない場合、「表示」メニューから「構造」を選択します。

3. 開始アクティビティを選択して、「構造」タブで新規プロセス・アクティビティ・パラメータ(上部の小さな緑色のプラス記号ボタン)をクリックします。
新しいパラメータが開始アクティビティの下に追加されます。

4. プロパティ・インスペクタで新しいパラメータを選択し、そのパラメータにプロパティを設定します。
パラメータ名およびデータ型を必要に応じて変更します。この方向は変更できません。方向はINであり、パラメータが入力パラメータのみであることを示しています。値にはパラメータ値を入力します。この値は実行時に上書きできます。

5. これで、パラメータをプロセス・フローの他のアクティビティの入力として使用できます。

サブプロセス

以前に作成したプロセス・フローを起動するには、サブプロセス・アクティビティを使用します。1つのプロセス・フローから、同じまたは別のプロセス・フロー・パッケージに含まれる別のプロセス・フローを起動できます。

画像subprocess.gifの説明

サブプロセス・アクティビティをプロセス・フローに追加した後、これを他のアクティビティと類似する設計に使用します。受信推移は複数割り当てることができます。送信推移には、無条件送信推移を1つ、または3つまでの条件付き送信推移を割り当てます。

サブプロセス内の終了アクティビティは、サブプロセス・アクティビティのみに適用され、プロセス・フローの終了ポイントとしては機能しません。

サブプロセス・アクティビティと他のアクティビティの重要な違いには、サブプロセスの内容は参照できるがその内容を親プロセス・フローでは編集できないという点があります。サブプロセスを編集するには、プロジェクト・ナビゲータで基礎となるプロセス・フローを開きます。プロセス・フローの名前の変更以外は、プロセス・フロー・エディタにより子プロセス・フローの変更が親プロセス・フローに伝播されます。

注意:
プロセス・フローの名前の変更は注意してください。別のプロセス・フローで参照されるプロセス・フローの名前を変更する場合は、親プロセス・フローが無効になります。無効なサブプロセスを削除して、子プロセス・フローの新しい名前に関連付けられたサブプロセスを新たに追加する必要があります。

サブプロセス・アクティビティをプロセス・フローに追加する手順は次のとおりです。

1. プロセス・フロー・エディタのパレットから、「サブプロセス」アクティビティ・アイコンをキャンバスにドラッグ・アンド・ドロップします。
Oracle Warehouse Builderにより、プロセス・フローをサブプロセスとして選択し、追加するためのダイアログ・ボックスが表示されます。

2. 「プロセス・フロー・モジュール」を拡張して、親プロセス・フローとして同じプロセス・フロー・パッケージから1つのプロセス・フローを選択します。
Oracle Warehouse Builderにより、プロセス・フローが親プロセス・フローのサブプロセス・アクティビティとして表示されます。

3. サブプロセスの内容を表示するには、サブプロセスを右クリックして、「ノードの拡張」を選択します。
プロセス・フロー・エディタにより、サブプロセスのグラフが青い枠線で囲まれて表示されます。

変換

変換の機能をキャンバスにドロップすると、戻りパラメータが新しいパラメータとして変換と同じ名前で作成されます。変換アクティビティを使用して変換を変換ライブラリからプロセス・フローに追加すると、プロセス・フロー・エディタの「アクティビティ」パネルに変換のパラメータが表示されます。

画像transform.gifの説明

変換アクティビティを起動する受信推移を1つ以上指定できます。送信推移については、無条件推移を1つのみ指定するか、3つの条件付き推移のいずれか1つを指定できます。

条件付き送信推移を指定する場合は、そのステータスが戻り値に基づくようにアクティビティを構成できます。「ステータスとしてリターンを使用」の詳細は、「プロセス・フロー構成のリファレンス」を参照してください。

変換に対して行った変更内容でプロセス・フローを更新するには、プロセス・フローから変換アクティビティを削除した後、変換アクティビティを再度追加してください。

パブリック変換など、配布されていない変換については、「配布ロケーション」の値を使用してアクティビティを構成する必要があります。

ユーザー定義

ユーザー定義アクティビティにより、Oracle Warehouse Builder内で定義されていないアクティビティをプロセス・フローに取り込むことができます。

画像external_process.gifの説明

ユーザー定義プロセス・アクティビティを起動する受信推移を1つ以上指定できます。送信推移については、無条件推移を1つのみ指定するか、3つの条件付き推移のいずれか1つを指定できます。

条件付き送信推移を指定する場合は、そのステータスが戻り値に基づくようにアクティビティを構成できます。「ステータスとしてリターンを使用」の詳細は、「プロセス・フロー構成のリファレンス」を参照してください。

表27-24に、ユーザー定義アクティビティに設定するパラメータを示します。

表27-24 ユーザー定義アクティビティ・パラメータ

パラメータ

説明

Command

定義したユーザー定義プロセスを実行するコマンド。c:\winnt\system32\cmd.exeなどのパスおよびファイル名を入力します。

Parameter List

ユーザー定義プロセスに渡されるパラメータのリスト。?/c?c:\\temp\\run.batなどのパスおよびファイル名を入力します。

プロセス・フロー・エディタは、入力する最初の文字をセパレータと解釈します。たとえば、プロセス・フロー・エディタは次のエントリを/cおよびdirと解釈します。

?/c?dir?

バックスラッシュをエスケープ文字として使用します。たとえば、プロセス・フロー・エディタは次のエントリを-l、-sおよび/と解釈します。

/-l/-s/\//

表27-25にリストされている置換変数も入力できます。

Success Threshold

完了ステータスを指定します。正常な完了を示す最も大きい戻り値をオペレーティング・システムから入力します。オペレーティング・システムがさらに大きな値を戻した場合、コマンドが失敗したことを示します。デフォルト値は0です。

Script

ここにスクリプトを入力するか、スクリプトのファイル名を入力できます。ファイル名を入力する場合、パラメータ・リストの${Task.Input}変数を使用してファイル名を渡します。

テキストの入力または貼付けを実行するには、「アクティビティ」パネル下部の「値」を選択します。プロセス・フロー・エディタに入力できるテキスト数は無制限です。

スクリプト内の各改行は、[Enter]キーを押す操作に相当します。したがって、最終行が確実に送信されるようにするには、スクリプトの最後で改行します。

表27-25に、FTPアクティビティに入力可能な置換変数を示します。

表27-25 ユーザー定義プロセス・アクティビティの置換変数

変数

値

${Working.Host}

コントロール・センター・サービス・ホストのロケーションのホスト値。

${Working.User}

コントロール・センター・サービス・ホストのロケーションのユーザー値。

${Working.Password}

コントロール・センター・サービス・ホストのロケーションのパスワード値。

${Working.RootPath}

ローカル作業ディレクトリ

${Task.Input}

SCRIPTパラメータから作成された一時ファイル。

Task.Input変数を入力し、Oracle Warehouse BuilderにSCRIPTパラメータで記述したスクリプトを参照させます。

Windowsの場合、Parameter_Listに?"-s:${Task.Input}"?と入力します。

UNIXの場合、Parameter_Listに?"${Task.Input}"?と入力します。

ここでは、疑問符はセパレータです。

待機

待機アクティビティを使用して、プロセス・フローに遅延を挿入します。

画像act_icon_wait.gifの説明

表27-26で、待機アクティビティのパラメータを説明します。

表27-26 待機アクティビティ・パラメータ

パラメータ

説明

Minimum_Delay

待機する最小時間を入力します。時間は秒単位で指定します。

Until_Date

待機期日をローカル地域のデフォルト書式で指定します。

whileループ

whileループを使用して、定義した条件がTRUEと評価される場合のみ1つ以上のアクティビティを実行します。

画像while_loop.gifの説明

通常は、whileループを割当アクティビティに関連付けることにより、while条件を定義できます。少なくとも1つの割当アクティビティによりデータが初期化され、また少なくとも1つの割当アクティビティによってループ反復の終わりまでデータが増分されるか、再度データが変更されます。

whileループ・アクティビティを追加する際、エディタは終了ループ・アクティビティと終了ループへの推移も追加します。whileループ・アクティビティからループに含めるそれぞれのアクティビティまでの推移を作成してください。追加する送信推移については、推移を選択してオブジェクトの詳細の「条件」をクリックし、EXIT条件またはLOOP条件を推移に適用します。

ループを実行するかどうかを制御するwhile条件を定義するには、「構造」パネルで「プロセス・フロー」ノード、「アクティビティ」ノード、WHILE_LOOPノードの順に開き、Conditionを選択します。プロパティ・インスペクタにConditionのパラメータが表示されます。

表27-27で、whileループ・アクティビティのパラメータを説明します。

表27-27 whileループ・アクティビティ・パラメータ

パラメータ

説明

Condition

ループ条件または終了条件を持つDefine

Webサービス

Webサービス・アクティビティを使用して、既存のWebサービスをプロセス・フローに追加します。Webサービスはプロジェクト・ナビゲータの「アプリケーション・サーバー」ノードか、またはグローバル・ナビゲータのパブリック・アプリケーション・サーバー・ノードの下で定義される必要があります。

画像webservice_activity.gifの説明

Webサービス・アクティビティにより、プロセス・フローのWebサービスで定義された操作を使用できます。プロセス・フローにWebサービス・アクティビティを追加すると、複数の操作が含まれます。使用する操作を選択するように求められます。

Webサービス・アクティビティのパラメータはWebサービスにより実行される操作のタイプによって異なります。そのため、各種操作は異なるパラメータを含むことができます。表27-28で、デフォルトのWebサービスAgentWebServiceのrunCCJob操作のパラメータを説明します。

表27-28 Webサービス・アクティビティのパラメータ

パラメータ

説明

Username

プロセス・フローを実行しているワークスペース・ユーザーの名前

パスワード

ユーザー名フィールドで指定したユーザーのパスワード

Workspace

Webサービスの実行ジョブが実行する必要のあるワークスペースの名前。

Webサービスを実行しているユーザーがワークスペース所有者ではない場合、ワークスペース名にユーザー名の接頭辞を使用します。たとえば、test_user.my_workspaceです。

ロケーション

操作が配布される先のロケーションの物理名

Task_type

操作のタイプ。次の値のいずれかを使用します。PLSQL、SQL_LOADER、PROCESS、SAPまたはDATA_AUDITOR。

Task_name

プロセス・フローの物理名。属するプロセス・フロー・パッケージの名前でプロセス・フロー名を修飾します。たとえば、MY_PROCESS_FLOW_PACK. MY_PROCESS_FLOWです。

Connection_string

コントロール・センター・マネージャを実行するシステムの接続情報

System_params

マッピングの実行パラメータの値、あれば、「バルク・サイズ」、「監査レベル」またはオペレーティング・モードなどです。

Custom_params

Webサービスが基にするマッピングの入力パラメータの値

Webサービス・アクティビティをプロセス・フローで使用する手順は次のとおりです。

1. プロジェクト・ナビゲータでプロセス・フローをダブルクリックして、Webサービス・アクティビティを追加するプロセス・フローを開きます。
プロセス・フローがエディタに表示されます。

2. プロジェクト・ナビゲータから、追加するWebサービスをドラッグ・アンド・ドロップします。
「Webサービス操作」ダイアログ・ボックスが表示されます。

3. 前の手順で選択したWebサービスに複数の操作が含まれている場合、プロセス・フローに追加するWebサービス内の操作を選択し、「OK」をクリックします。
Webサービス操作がプロセス・フローに追加されます。

4. Webサービス・アクティビティのパラメータを設定します。

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

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

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

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

- 管理変換

- 文字変換

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

- 変換の変換

- 日付変換

- 番号変換

- OLAP変換

- その他の変換

- 空間変換

- ストリーム変換

- XML変換

管理変換

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

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

- WB_ABORT

- WB_COMPILE_PLSQL

- WB_DISABLE_ALL_CONSTRAINTS

- WB_DISABLE_ALL_TRIGGERS

- WB_DISABLE_CONSTRAINT

- WB_DISABLE_TRIGGER

- WB_ENABLE_ALL_CONSTRAINTS

- WB_ENABLE_ALL_TRIGGERS

- WB_ENABLE_CONSTRAINT

- WB_ENABLE_TRIGGER

- WB_TRUNCATE_TABLE

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 (varchar2)

- WB_IS_SPACE

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_JOB_METRICS

- WB_RT_GET_LAST_EXECUTION_TIME

- WB_RT_GET_MAP_RUN_AUDIT

- WB_RT_GET_NUMBER_OF_ERRORS

- WB_RT_GET_NUMBER_OF_WARNINGS

- WB_RT_GET_PARENT_AUDIT_ID

- WB_RT_GET_RETURN_CODE

- WB_RT_GET_START_TIME

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_OF_YEAR

- WB_CAL_MONTH_SHORT_NAME

- WB_CAL_QTR

- WB_CAL_WEEK_OF_YEAR

- WB_CAL_YEAR

- WB_CAL_YEAR_NAME

- WB_DATE_FROM_JULIAN

- WB_DAY_NAME

- WB_DAY_OF_MONTH

- WB_DAY_OF_WEEK

- WB_DAY_OF_YEAR

- WB_DAY_SHORT_NAME

- WB_DECADE

- WB_HOUR12

- WB_HOUR12MI_SS

- WB_HOUR24

- WB_HOUR24MI_SS

- WB_IS_DATE

- WB_JULIAN_FROM_DATE

- WB_MI_SS

- WB_WEEK_OF_MONTH

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(varchar2列用)

- WB_IS_NUMBER

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_AW_PRECOMPUTE

- WB_OLAP_LOAD_CUBE

- WB_OLAP_LOAD_DIMENSION

- WB_OLAP_LOAD_DIMENSION_GENUK

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に示すシナリオに基づいています。

図28-1 OLAP変換の例

「図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_F

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インストレーションおよび管理ガイド』を参照してください。

29 Oracle Warehouse Builderコード・テンプレート・ツールおよび置換メソッド

この章の内容は次のとおりです。

- Oracle Warehouse Builderでサポートされているコード・テンプレート・ツール

- Oracle Warehouse Builderでサポートされていないコード・テンプレート・ツール

- Oracle Warehouse Builderでサポートされているコード・テンプレートの置換メソッド

- Oracle Warehouse Builderでサポートされていないコード・テンプレートの置換メソッド

Oracle Warehouse Builderでサポートされているコード・テンプレート・ツール

Oracle Warehouse Builderには、コード・テンプレートの作成に使用されるODIツールのサブセットが含まれています。すべてのツールを完全に参照するには、次のサイトにあるODI 10.1.3.5の『Oracle Data Integrator Toolsリファレンス・マニュアル』を参照してください。

http://www.oracle.com/technetwork/middleware/data-integrator/overview/index.html

後続の表では、Oracle Warehouse Builderでサポートされているツール、およびサポートされなくなったツールをリストします。

表29-1 Oracle Warehouse Builderでサポートされているコード・テンプレート・ツール

コード・テンプレート

説明

OdiAnt

Apache Software Foundationのビルド・ツールであるAntを呼び出します。このツールは、EJBのアーカイブ、コンパイル、デプロイ、文書化など、複数のコマンドの実行に使用できます。オペレーティング・システム・プロセスを実行し、ファイル、.NETタスク、リモート・タスクなどを操作します。

OdiBeep

エージェントをホスティングしているコンピュータのデフォルトの音声ファイルを再生します。

OdiOSCommand

オペレーティング・システムのコマンド・シェルを起動してコマンドを実行し、出力をファイルにリダイレクトします。

OdiFtpGet

FTPプロトコルのGETコマンドを使用して、リモートのFTPサーバー・コンピュータからローカル・ファイルを取得します。

OdiFtpPut

FTPプロトコルのPUTコマンドを使用して、リモートのFTPサーバー・コンピュータにローカル・ファイルをコピーします。

OdiInvokeWebService(OdiExecuteWebServiceのかわり)

HTTPプロトコルを使用してWebサービスを呼び出し、戻されたレスポンスをXMLファイルに書き込みます。このツールは、記述ファイル(WSDL)のURLが指定されているWebサービスのポートの特定操作を呼び出します。この操作にSOAPリクエストが必要な場合は、リクエスト・ファイルで提供されるか、ツール・コール(XMLRequest)に直接書き出されます。Webサービス・リクエストのレスポンスは、Oracle Data Integratorで使用可能なXMLファイルに書き込まれます。注意: このツールは、OdiExecuteWebServiceのかわりです。注意: このツールは、HTTPとHTTPSの両方のプロトコルをサポートしています。

OdiReadMail

POPまたはIMAPインターネット・メール・サービスからの電子メールとその添付ファイルの読取りに使用できます。このコマンドを使用すると、USERおよびPASSによって指定されている接続パラメータを使用して、サーバーMAILHOSTでホスティングされているメールに接続できます。実行エージェントは、MAX_MSGメッセージを受信するまで、またはTIMEOUTで指定されている最大待機時間が経過するまで、待機モードになります。抽出されたメッセージは、パラメータSUBJECTやSENDERで指定されているフィルタに一致する必要があります。メッセージがこれらの条件を満たすと、そのコンテンツおよびInternet 53添付ファイルが、パラメータFOLDERで指定されたディレクトリに抽出されます。パラメータKEEPがNoに設定されている場合、取得されたメッセージはメールボックスに表示されません。

OdiScpGet

リモートSSHサーバーからファイルを取得します。

OdiScpPut

リモートSSHサーバー・コンピュータのディレクトリにローカル・ファイルをコピーします。

OdiSendMail

SMTPサーバー経由で電子メールを送信できます。

OdiSftpGet

SFTPサブシステムが有効化されているリモートのSSHサーバーからファイルを取得します。

OdiSftpPut

SFTPサブシステムが有効化されているリモートのSSHサーバー・コンピュータにローカル・ファイルをコピーします。

OdiFileAppend

ファイルのセットを1つのファイルに連結します。

HEADERパラメータは、入力ファイルの最初のn行(csvファイルのヘッダーなど)を非表示にするために使用します。KEEP_FIRST_HEADERパラメータは、結果ファイルの最初に表示されるヘッダー行を保持または削除するために使用します。HEADERパラメータを省力した場合、連結はバイナリになります(ファイルのテキスト読取りは実行されません)。

OdiFileCopy

実行エージェントのコンピュータにあるファイルまたはフォルダに、ファイルまたはフォルダをコピーします。

OdiFileDelete

ファイルの変更日付に基づいて、実行元のエージェントが稼働しているコンピュータのファイルまたはディレクトリを削除します。-FROMDATEを省略すると、変更日付が-TODATEの日付より前のすべてのファイルが削除されます。-TODATEを省略すると、変更日付が-FROMDATEの日付より後のすべてのファイルが削除されます。どちらのパラメータも省略すると、-FILEパラメータの値に一致するすべてのファイルが削除されます。

OdiFileMove

実行エージェントのコンピュータにあるファイルまたはディレクトリに、ファイルまたはディレクトリを移動します。このコマンドは、ファイルまたはディレクトリ名の変更にも使用できます。

OdiFileWait

ディレクトリDIRをスキャンし、PATTERNに指定されたマスクに一致するファイルを待機します。指定したファイルが見つかると、パラメータACTIONに指定されたアクションがトリガーされます。実行エージェントは、TIMEOUTによって指定されたタイムアウト制限に到達するまで、FILECOUNTファイルの受信を待機してスタンバイ・モードになります。ディレクトリは、POLLINTミリ秒ごとにスキャンされます。

OdiMkDir

ディレクトリを作成します。親ディレクトリが存在しない場合は、このコマンドにより再帰的に親ディレクトリが作成されます。

OdiOutFile

実行エージェントが稼働しているコンピュータにテキスト・ファイルを生成します。ファイルは<file_name>で定義されているパスに格納され、<Text>で指定されているテキストを含みます。ファイルにデータが含まれている場合は、オプションのパラメータ-APPENDを使用して、ファイルの後に<Text>を追加することができます。パラメータ-FILEおよび-APPENDは、同じ行に指定する必要があります。

OdiSqlUnload

接続パラメータが<driver>、<url>、<user>および<encoded_pass>で指定されているデータ・サーバーで、SQL問合せ<sql_query>を実行することによりデータ・ファイルを生成します。ファイルは、<file_name>(エージェントに相対的)で定義されているパスに書き込まれます。

OdiUnZip

ディレクトリへのアーカイブ・ファイルの解凍に使用します。

OdiZip

1つのディレクトリ、または複数のファイルからZIPファイルを作成します。

OdiXMLConcat

ソースXMLファイルのセットから指定された要素のすべてのインスタンスを抽出し、それらを1つのターゲットXMLファイルに連結します。このツールは、正しく形成されたXMLを解析および生成します。生成されたファイルのDTDの変更や生成は行われません。既存のDTDへの参照は、HEADERパラメータで指定するか、-KEEP_XML_PROLOGUEを使用して元のファイルから保持できます。

注意: このツールでは、XML名前空間はサポートされていません。-ELEMENT_NAMEパラメータに、要素名のローカル部分(名前空間または接頭辞値なし)を指定する必要があります。

OdiXMLSplit

ソースXMLファイルに格納されている指定された要素のすべてのインスタンスを抽出し、複数のターゲットXMLファイルに分割します。このツールは、正しく形成されたXMLを解析および生成します。生成されたファイルのDTDの変更や生成は行われません。既存のDTDへの参照は、HEADERパラメータで指定するか、-KEEP_XML_PROLOGUEを使用して元のファイルから保持できます。

注意: このツールでは、XML名前空間はサポートされていません。-ELEMENT_NAMEパラメータに、要素名のローカル部分(名前空間または接頭辞値なし)を指定してください。

OdiFileWait

ディレクトリDIRをスキャンし、PATTERNに指定されたマスクに一致するファイルを待機します。指定したファイルが見つかると、パラメータACTIONに指定されたアクションがトリガーされます。実行エージェントは、TIMEOUTによって指定されたタイムアウト制限に到達するまで、FILECOUNTファイルの受信を待機してスタンバイ・モードになります。ディレクトリは、POLLINTミリ秒ごとにスキャンされます。

OdiReadMail

POPまたはIMAPインターネット・メール・サービスからの電子メールとその添付ファイルを読み取ります。このコマンドを使用すると、USERおよびPASSによって指定されている接続パラメータを使用して、サーバーMAILHOSTでホスティングされているメールに接続できます。実行エージェントは、MAX_MSGメッセージを受信するまで、またはTIMEOUTで指定されている最大待機時間が経過するまで、待機モードになります。抽出されたメッセージは、パラメータSUBJECTやSENDERで指定されているフィルタに一致する必要があります。メッセージがこれらの条件を満たすと、そのコンテンツおよび添付ファイルが、パラメータFOLDERで指定されたディレクトリに抽出されます。パラメータKEEPがNoに設定されている場合、取得されたメッセージはメールボックスに表示されません。

OdiSleep

<delay>ミリ秒待機します。

Oracle Warehouse Builderでサポートされていないコード・テンプレート・ツール

次のコード・テンプレート・ツールは、Oracle Warehouse Builderでサポートされていません。

表29-2 サポートされていないコード・テンプレート・ツール

サポートされていないツール

OdiReverseGetMetaData

OdiReverseResetTable

OdiReverseSetMetaData

OdiDeleteScen

OdiExportAllScen

OdiExportEnvironmentInformation

OdiExportLog

OdiExportMaster

OdiExportObject

OdiExportScen

OdiExportWork

OdiGenerateAllScen

OdiImportObject

OdiImportScen

OdiDataQuality

OdiKillAgent

OdiPingAgent

OdiPurgeLog

OdiReinitializeSeq

OdiStartScen

OdiUpdateAgentSchedule

OdiSAPALEClient

OdiSAPALEServer

OdiWaitForChildSession

OdiWaitForData

OdiWaitForLogData

OdiWaitForTable

OdiRefreshJournalCount

OdiRetrieveJournalData

OdiWaitForData

OdiWaitForLogData

OdiWaitForTable

Oracle Warehouse Builderでサポートされているコード・テンプレートの置換メソッド

すべてのツールを完全に参照するには、ODI 10.1.3.5の『Oracle Data Integrator Toolsリファレンス・マニュアル』を参照してください。Oracle Technology NetworkのODIホーム・ページにアクセスし、次のドキュメント・リンクを開いてください。

http://www.oracle.com/technetwork/middleware/data-integrator/overview/index.html

Oracle Warehouse Builderでは次の置換方法がサポートされており、リストされているパラメータおよび値が各置換方法でサポートされています。

- getAK

- getAKColList

- getCK

- getColList

- getDataType

- getFK

- getFKColList

- getFilter

- getFilterList

- getFrom

- getGrpBy

- getGrpByList

- getHaving

- getHavingList

- getInfo

- getJDBCConnection

- getJoin

- getJoinList

- getJrnFilter

- getJrnInfo

- getNotNullCol

- getObjectName

- getObjectNameDefaultPSchema

- getOption

- getPK

- getPKColList

- getPop

- GetSchemaName

- getSchemaNameDefaultPSchema

- getSrcTablesList

- getSrcColList

- getSubscriberList

- getTable

- getTargetColList

- getTargetTable

- getUserExit

次の表において、「サポート」列の「はい」は、そのパラメータがOracle Warehouse Builderでサポートされていることを示し、「はい」はOracle Warehouse Builderで使用されていないことを示します。

getAK

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

KEY_NAME FULL_NAME MESS

ID flexfield_code

getAKColList

パラメータ

サポート

サポートされている値

サポートされていない値

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

COL_NAME POS LONGC SCALE FILE_POS BYTES FILE_END_POS CHECK_FLOW CHECK_STAT COL_FORMAT EXPRESSION CX_COL_NAME ALIAS_SEP SOURCE_DT SOURCE_CRE_DT SOURCE_WRI_DT DEST_CRE_DT DEST_WRI_DT DEST_DT

I_COL COL_HEADING COL_DESC IND_WRITE COL_MANDATORY COL_DEC_SEP REC_CODE_LIST COL_NULL_IF_ERR DEF_VALUE SCD_COL_TYPE flexfield_code

pSeparator

はい

pEnd

はい

getCK

パラメータ

サポート

サポートされている値

サポートされていない値

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

COND_ALIAS COND_NAME COND_TYPE COND_SQL FULL_NAME COND_SQL_DDL MESS

ID

getColList

パラメータ

サポート

サポートされている値

サポートされていない値

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

COL_NAME POS LONGC SCALE FILE_POS BYTES FILE_END_POS CHECK_FLOW CHECK_STAT COL_FORMAT EXPRESSION CX_COL_NAME ALIAS_SEP SOURCE_DT SOURCE_CRE_DT SOURCE_WRI_DT DEST_DT DEST_CRE_DT DEST_WRI_DT JDBC_TYPE

I_COL COL_HEADING COL_DESC IND_WRITE COL_MANDATORY COL_DEC_SEP REC_CODE_LIST COL_NULL_IF_ERR DEF_VALUE SCD_COL_TYPE MANDATORY_CLAUSE DEFAULT_CLAUSE flexfield_code

pSeparator

はい

pEnd

はい

pSelector

はい

INS UPD TRG NULL PK UK REW UD1 UD2 UD3 UD4 UD5 MAP SCD_SK SDK_NK SCD_UPD SCD_INS SCD_FLAG SCD_START SCD_END

NEW OLD WS_INS WS_UPD WS_SEL

getDataType

パラメータ

サポート

サポートされている値

サポートされていない値

pDataTypeName

はい

SRC_VARCHAR SRC_NUMERIC SRC_DATE DEST_VARCHAR DEST_NUMERIC DEST_DATE

pDataTypeLength

はい

pDataTypePrecision

はい

getFK

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

FK_NAME FK_TYPE FK_ALIAS PK_ALIAS PK_CATALOG PK_SCHEMA PK_TABLE_NAME FULL_NAME MESS

ID ID_TABLE_PK COMPLEX_SQL PK_I_MOD flexfield_code

getFKColList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

COL_NAME POS LONGC SCALE FILE_POS BYTES FILE_END_POS CHECK_FLOW CHECK_STAT COL_FORMAT EXPRESSION CX_COL_NAME ALIAS_SEP SOURCE_DT SOURCE_CRE_DT SOURCE_WRI_DT DEST_CRE_DT DEST_WRI_DT DEST_DT PK_COL_NAME PK_COL_HEADING PK_COL_DESC PK_LONGC PK_SCALE PK_FILE_POS PK_BYTES PK_FILE_END_POS PK_CHECK_FLOW PK_CHECK_STAT PK_COL_FORMAT

I_COL COL_HEADING COL_DESC IND_WRITE COL_MANDATORY COL_DEC_SEP REC_CODE_LIST COL_NULL_IF_ERR DEF_VALUE PK_I_COL PK_POS PK_IND_WRITE PK_COL_MANDATORY PK_COL_DEC_SEP PK_REC_CODE_LIST PK_COL_NULL_IF_ERR PK_DEF_VALUE SCD_COL_TYPE flexfield_code

pSeparator

はい

pEnd

はい

getFilter

パラメータ

サポート

サポートされている値

サポートされていない値

no_params

はい

getFilterList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

EXPRESSION

ID

pSeparator

はい

pEnd

はい

getFrom

パラメータ

サポート

サポートされている値

サポートされていない値

no_params

はい

getGrpBy

パラメータ

サポート

サポートされている値

サポートされていない値

no_params

はい

getGrpByList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

EXPRESSION

ID

pSeparator

はい

pEnd

はい

getHaving

パラメータ

サポート

サポートされている値

サポートされていない値

no_params

はい

getHavingList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

EXPRESSION

ID

pSeparator

はい

pEnd

はい

getInfo

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

COLL_NAME INT_NAME ERR_NAME TARG_NAME SRC_CATALOG SRC_SCHEMA SRC_WORK_CATALOG SRC_WORK_SCHEMA DEST_CATALOG DEST_SCHEMA DEST_WORK_CATALOG DEST_WORK_SCHEMA SRC_DSERV_NAME SRC_JAVA_DRIVER SRC_JAVA_URL SRC_USER_NAME SRC_ENCODED_PASS SRC_TAB_ALIAS_WORD SRC_DATE_FCT SRC_DDL_NULL SRC_MAX_COL_NAME_LEN SRC_MAX_TAB_NAME_LEN DEST_DSERV_NAME DEST_JAVA_DRIVER DEST_JAVA_URL DEST_USER_NAME DEST_ENCODED_PASS DEST_COL_ALIAS_WORD DEST_TAB_ALIAS_WORD DEST_DATE_FCT DEST_DDL_NULL DEST_MAX_COL_NAME_LEN DEST_MAX_TAB_NAME_LEN CT_ERR_TYPE CT_ORIGIN JRN_NAME JRN_VIEW JRN_DATA_VIEW JRN_TRIGGER JRN_ITRIGGER JRN_UTRIGGER JRN_DTRIGGER SUBSCRIBER_TABLE CDC_SET_TABLE CDC_TABLE_TABLE CDC_SUBS_TABLE CDC_OBJECTS_TABLE

getJDBCConnection

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

SRC DEST

getJoin

パラメータ

サポート

サポートされている値

サポートされていない値

no_params

はい

getJoinList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

EXPRESSION

ID

pSeparator

はい

pEnd

はい

getJrnInfo

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

FULL_TABLE_NAME JRN_FULL_NAME JRN_FULL_VIEW JRN_FULL_DATA_VIEW JRN_FULL_TRIGGER JRN_FULL_ITRIGGER JRN_FULL_UTRIGGER JRN_FULL_DTRIGGER JRN_SUBSCRIBER JRN_NAME JRN_VIEW JRN_DATA_VIEW JRN_TRIGGER JRN_ITRIGGER JRN_UTRIGGER JRN_DTRIGGER JRN_SUBSCRIBER JRN_COD_MODE JRN_METHOD CDC_SET_TABLE CDC_TABLE_TABLE CDC_SUBS_TABLE CDC_OBJECTS_TABLE

getJrnFilter

パラメータはありません。

getNotNullCol

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

COL_NAME MESS

ID flexfield_code

getObjectName

パラメータ

サポート

サポートされている値

サポートされていない値

pMode

はい

L R

pObjectName

はい

pLogicalSchemaName

いいえ

pContextName

いいえ

pLocation

はい

W D

getObjectNameDefaultPSchema

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

getOption

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

getPK

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

KEY_NAME FULL_NAME MESS

ID flexfield_code

getPKColList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

COL_NAME POS LONGC SCALE FILE_POS BYTES FILE_END_POS CHECK_FLOW CHECK_STAT COL_FORMAT EXPRESSION CX_COL_NAME ALIAS_SEP SOURCE_DT SOURCE_CRE_DT SOURCE_WRI_DT DEST_CRE_DT DEST_WRI_DT DEST_DT PK_COL_NAME PK_COL_HEADING PK_COL_DESC PK_LONGC PK_SCALE PK_FILE_POS PK_BYTES PK_FILE_END_POS PK_CHECK_FLOW PK_CHECK_STAT PK_COL_FORMAT

I_COL COL_HEADING COL_DESC IND_WRITE COL_MANDATORY COL_DEC_SEP REC_CODE_LIST COL_NULL_IF_ERR DEF_VALUE SCD_COL_TYPE flexfield_code

pSeparator

はい

pEnd

はい

getPop

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

POP_NAME TABLE_NAME KEY_NAME DISTINCT_ROWS MAX_ERR MAX_ERR_PRCT IKM LKM CKM HAS_JRN

I_POP FOLDER IND_WORK_TARG LSCHEMA_NAME DESCRIPTION WSTAGE OPT_CTX TARG_CTX flexfield_code

GetSchemaName

パラメータ

サポート

サポートされている値

サポートされていない値

pLogicalSchemaName

pContextCode

pLocation

getSchemaNameDefaultPSchema

パラメータ

サポート

サポートされている値

サポートされていない値

pLogicalSchemaName

pContextCode

pLocation

getSrcTablesList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

TABLE_NAME RES_NAME CATALOG WORK_CATALOG SCHEMA WORK_SCHEMA TABLE_ALIAS FILE_FORMAT FILE_SEP_FIELD SFILE_SEP_FIELD FILE_ENC_FIELD FILE_SEP_ROW SFILE_SEP_ROW FILE_FIRST_ROW IND_JRN JRN_ORDER

I_TABLE MODEL_NAME SUB_MODEL_NAME TECHNO_NAME LSCHEMA_NAME POP_TAB_ALIAS TABLE_TYPE DESCRIPTION R_COUNT XFILE_SEP_FIELD XFILE_SEP_ROW FILE_DEC_SEP METADATA OLAP_TYPE flexfield_code

pSeparator

はい

pEnd

はい

getSrcColList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

pUnMappedPattern

pMappedPattern

pSeparator

pEnd

getSubscriberList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

SUBSCRIBER

pSeparator

はい

pEnd

はい

getTable

パラメータ

サポート

サポートされている値

サポートされていない値

pMode

はい

L R A

pProperty

はい

TARG_NAME COLL_NAME INT_NAME ERR_NAME CHECK_NAME CT_NAME FK_PK_TABLE_NAME JRN_NAME JRN_VIEW JRN_DATA_VIEW JRN_TRIGGER JRN_ITRIGGER JRN_UTRIGGER JRN_DTRIGGER SUBSCRIBER_TABLE CDC_SET_TABLE CDC_TABLE_TABLE CDC_SUBS_TABLE CDC_OBJECTS_TABLE

ID flexfield_code

pLocation

はい

W D A

getTargetColList

パラメータ

サポート

サポートされている値

サポートされていない値

pStart

はい

pPattern

はい

COL_NAME POS LONGC SCALE FILE_POS BYTES FILE_END_POS CHECK_FLOW CHECK_STAT COL_FORMAT ALIAS_SEP SOURCE_DT SOURCE_CRE_DT SOURCE_WRI_DT DEST_DT DEST_CRE_DT DEST_WRI_DT JDBC_TYPE

I_COL COL_HEADING COL_DESC IND_WRITE COL_MANDATORY COL_DEC_SEP REC_CODE_LIST COL_NULL_IF_ERR DEF_VALUE SCD_COL_TYPE MANDATORY_CLAUSE DEFAULT_CLAUSE COL_DESC flexfield_code

pSeparator

はい

pEnd

はい

pSelector

はい

getTargetTable

パラメータ

サポート

サポートされている値

サポートされていない値

pPropertyName

はい

TECHNO_NAME TABLE_NAME RES_NAME CATALOG WORK_CATALOG SCHEMA WORK_SCHEMA TABLE_ALIAS FILE_FORMAT FILE_SEP_FIELD SFILE_SEP_FIELD FILE_ENC_FIELD FILE_SEP_ROW SFILE_SEP_ROW FILE_FIRST_ROW IND_JRN JRN_ORDER

MODEL_NAME SUB_MODEL_NAME LSCHEMA_NAME TABLE_TYPE DESCRIPTION TABLE_DESC R_COUNT FILE_DEC_SEP XFILE_SEP_FIELD XFILE_SEP_ROW METADATA_DESC OLAP_TYPE TABLE_DESC WS_NAME WS_NAMESPACE WS_JAVA_PACKAGE WS_ENTITY_NAME WS_DATA_SOURCE flexfield_code

getUserExit

パラメータ

サポート

サポートされている値

サポートされていない値

pOptionName

Oracle Warehouse Builderでサポートされていないコード・テンプレートの置換メソッド

この項では、Oracle Warehouse Builderでサポートされていないコード・テンプレートの置換メソッドをリストします。

- getCatalogName

- getCatalogNameDefaultPSchema

- getColDefaultValue

- getColumn

- getContext

- getFlexFieldValue

- getIndex

- getIndexColList

- getJRNFilter

- getModel

- getNewColComment

- getNewTableComment

- getPrevStepLog

- getSession

- getSessionVarList

- getStep

- getSysDate

- hasPK

- isColAttrChanged

- nextAK

- nextCond

- nextFK

- setNbDelete

- setNbErrors

- setNbInsert

- setNbRows

- setNbUpdate

索引

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Z

A

概要

Webサービスの消費, 16.1.2.3

公開Webサービス, 16.1.3

Webサービスの公開, 16.1.2.2

アクセス

変換ライブラリ, 4.5.2

ACTIVE_DATE属性

概要, 6.2

キューブ, 6.2

アクティビティ

AND, 27.2

割当, 27.3

コントロール, 27.1.3

データ監査モニター, 27.4

電子メール, 27.6

Enterprise Java Bean, 27.5

ファイルが存在, 27.9

forループ, 27.11

FORK, 27.10

FTP, 27.12

プロセス・フロー, 8.4.1

Javaクラス, 27.13

手動, 27.14

マッピング, 27.15

OMBPlus, 27.17

OR, 27.18

OWB固有, 27.1.1

ルート, 27.19

ステータスの設定, 27.20

SQLPlus, 27.21

開始, 27.22

ユーザー定義, 27.25

ユーティリティ, 27.1.2

待機, 27.26

Webサービス, 27.28

whileループ, 27.27

アクティビティ・テンプレート, 8.5 追加

グループをマッピングへ, 26.2.2

マッピング演算子, 5.7

演算子の追加

「演算子の追加」ダイアログ・ボックス, 5.7.1

アドレス, クレンジング, 22.1 管理変換, 28.1.1 アドバンスト・キュー

概要, 2.11.3

構成, 2.12.6

定義, 2.11.3

編集, 2.11.4

利点

Webサービス, 16.1.1

集計関数, 26.4.3 データの集計, 26.4 アグリゲータ演算子, 26.4

ALL, 26.4.3

DISTINCT, 26.4.3

アナリティック・ワークスペース, 3.2.3.1 ANDアクティビティ, 27.2 Anydataキャスト演算子, 26.5, 26.5 適用

データ・ルール, 19.2.5

割当アクティビティ, 27.3 属性のプロパティ, 設定, 25.2.2 属性セット, 2.8

概要, 2.8

作成, 2.8.1

編集, 2.8.2

表, 2.2.1.6

属性

接続, 5.8.3

定義, 2.2.1.6

監査詳細, 削除, 13.5.12, 13.5.13 監査

CTマッピング, 7.6

CTマッピング, 前提条件, 7.6

デプロイメント, 13

実行, 13

自動バインド

ディメンション・オブジェクト, 3.2.1.2

ルール, 3.3.4.9

手順, 3.2.1.2

自動解決

MOLAPキューブ, 3.7.6.3

B

ベスト・プラクティス

データ・オブジェクトのネーミング, 2.1.3

BINARY_DOUBLEデータ型, 2.1.1 BINARY_FLOATデータ型, 2.1.1 バインド

概要, 3.2.1.1

自動バインド, 3.2.1.2

自動バインド, ルール, 3.3.4.9

自動バインド, 手順, 3.2.1.2

手動バインド, 3.2.1.3

手動バインド, 手順, 3.2.1.3

アンバインド, 3.2.1.4

実行する場合, 3.2.1.1

BLOBデータ型, 2.1.1 式の作成, 26.3

C

計算済メジャー

概要, 3.7.1

計算済メジャー・ウィザード

概要, 3.7.5.5

CASSレポート, 22.1.3 CCA

起動, 7.4.7

停止, 7.4.7

変更データ・キャプチャ

コマンド, 7.7.2

CTマッピングを使用して実行, 7.7

変更

ターゲット・スキーマへのロール・アウト, 12.6

CHARデータ型, 2.1.1, 26.21, 26.21 文字変換, 28.1.2 チェック・キー制約, 2.5.1 チャンク化, 25.2.15.2 クレンジング

アドレス, 22.1

名前, 22.1

CLOBデータ型, 2.1.1 コード生成

ターゲット・ディレクトリの構成, 2.12.1.1

オプション, 24.2.2

コード・テンプレート・マッピング

「CTマッピング」を参照

コード・テンプレートの置換方法

OWBでサポートされていない, 29.4

OWBでサポートされている, 29.3

コード・テンプレート・ツール

OWBでサポートされていない, 29.2

OWBでサポートされている, 29.1

コード・テンプレート

事前作成済, 7.4.1

コーディング規則, はじめに コミット計画

複数のマッピングのコミット, 10.1.5

複数ターゲットへのコミット, 10.1.3.1

プロセスの実行の比較, 13.5.3 コンポジット・パーティション, 2.7.5 構成パラメータ

ABAP拡張子, 2.12.1.3

ABAP実行パラメータ・ファイル, 2.12.1.3

ABAPスプール・ディレクトリ, 2.12.1.3

アドバンスト・キュー, 2.12.6

アーカイブ・ディレクトリ, 2.12.1.5

実表, 2.12.3.1

バッファ・キャッシュ, 2.12.2.5, 2.12.3.1

作成, 2.12.3.1

データ・プロファイル, 18.2.5.1

データ・セグメント圧縮, 2.12.2.5, 2.12.3.1

DDLディレクトリ, 2.12.1.3

DDL拡張子, 2.12.1.3

DDLスプール・ディレクトリ, 2.12.1.3

デフォルト索引表領域, 2.12.1.6

オブジェクト表領域, 2.12.1.6

デフォルト・ロールバック・セグメント, 2.12.3.1

配布可能, 2.12.3.1, 3.6, 3.9

配布オプション, 3.9

ディメンション, 3.6

行端, 2.12.1.2

エラー表名, 2.12.2.1, 2.12.3.1

エラー表のみ, 2.12.2.3, 2.12.3.1

FOR UPDATE, 2.12.3.1

ハッシュ・パーティション表領域リスト,2.12.3.1

入力ディレクトリ, 2.12.1.5

無効ディレクトリ, 2.12.1.5

LIBディレクトリ, 2.12.1.3

LIB拡張子, 2.12.1.3

LIBスプール・ディレクトリ, 2.12.1.3

LOADERディレクトリ, 2.12.1.3

LOADER拡張子, 2.12.1.3

LOADER実行パラメータ・ファイル, 2.12.1.3

ローカル・ロールバック・セグメント, 2.12.3.1

ロケーション, 2.12.1.4

ログ・ディレクトリ, 2.12.1.5

ロギング・モード, 2.12.2.5, 2.12.3.1

マスター・ロールバック・セグメント, 2.12.3.1

マテリアライズド・ビュー索引表領域, 3.9

マテリアライズド・ビューの表領域, 3.9

NEXT(日付), 2.12.3.1

オーバーフロー表領域リスト, 2.12.2.6

パラレル・アクセス・モード, 2.12.2.4, 2.12.3.1

並列度, 2.12.2.4, 2.12.3.1

パーティション表領域リスト, 2.12.2.6

PL/SQLディレクトリ, 2.12.1.3

PL/SQL拡張子, 2.12.1.3

PL/SQL生成モード, 2.12.1.1

PL/SQL実行パラメータ・ファイル, 2.12.1.3

PL/SQLスプール・ディレクトリ, 2.12.1.3

クエリー・リライト, 2.12.3.1

キューの伝播, 2.12.8

キュー表, 2.12.7

受信ディレクトリ, 2.12.1.5

リフレッシュ, 2.12.3.1

リフレッシュ, 2.12.3.1

行移動, 2.12.2.5

行レベルの依存性, 2.12.2.5

順序, 2.12.5

ソート・ディレクトリ, 2.12.1.5

ソース・ファイル演算子, 24.2.6.2

SQLPlusディレクトリ, 2.12.1.3

SQLPlus拡張子, 2.12.1.3

SQLPLus実行パラメータ・ファイル, 2.12.1.3

ステージング・ファイル・ディレクトリ, 2.12.1.3

開始, 2.12.3.1

統計収集, 2.12.2.5

表領域, 2.12.2.1, 2.12.2.7, 2.12.3.1

Tclディレクトリ, 2.12.1.3

制約の使用, 2.12.3.1

作業ディレクトリ, 2.12.1.5

構成

アドバンスト・キュー, 2.12.6

キューブ, 3.9

データ監査, 20.2.2

データ・オブジェクト, 1.2

データ・プロファイル, 18.2.5

ディメンション, 3.6

フラット・ファイル演算子, 24.2.7

マッピングのソースとターゲット, 26.18.1

マッピング, 5.11

マスター・ディテール・マッピング, 10.2.1.2

マスター・ディテール・マッピング, ダイレクト・パス・ロード, 10.2.2

マテリアライズド・ビュー, 2.12.3

Name and Addressサーバー, 22.3.1

PL/SQLマッピング, 10.1

キューの伝播, 2.12.8

キュー表, 2.12.7

ランタイム・パラメータ, 2.12

ランタイム・パラメータ, SAPファイル, 7.2.1.3

SAP, ロード・タイプ・パラメータ, 7.2.1.2

順序, 2.12.5

表, 2.12.2

ターゲット・モジュール, 2.12.1

トランスポータブル・モジュール, 17.3.4

ビュー, 2.12.4

CTマッピングの構成

ソース・ファイル演算子, 7.5.2

接続

属性, 5.8.3

グループ, 5.8.2

演算子, 5.8

グループの接続

接続オプション, 5.8.4.2

マッピング接続ダイアログ・ボックス, 5.8.4

演算子の接続

接続オプション, 5.8.4.2

マッピング接続ダイアログ・ボックス, 5.8.4

接続, 更新, 13.5.16 定数演算子, 25.2.3 定数, 定義, 25.2.2 制約

概要, 2.5.1

チェック制約, 作成, 2.5.2.4

チェック・キー, 概要, 2.5.1

編集, 2.5.3

外部キー, 概要, 2.5.1

外部キー, 作成, 2.5.2.2

主キー, 概要, 2.5.1

主キー, 作成, 2.5.2.1

タイプ, 2.5.1

一意キー, 概要, 2.5.1

一意キー, 作成, 2.5.2.3

オブジェクト演算子の構成, 25.2.4 コントロール・アクティビティ, 27.1.3 コントロール・センター・エージェント

起動, 7.4.7

停止, 7.4.7

コントロール・センター・レポート, 13.4 コントロール・センター変換, 28.1.3 コントロール・センター

CTマッピング, 7.8

制御行

概要, 3.3.6

従来型パスによるロード

マスター・ディテール関係, 10.2.1.2

マスター・ディテール・フラット・ファイル, 10.2.1.2

表記規則

コーディング, はじめに

例, はじめに

変換の変換, 28.1.4 相関コミット, 設計上の考慮事項, 10.1.3.1 キューブの作成ウィザード

デフォルト値, 3.7.4

ディメンションの作成ウィザード

使用されるデフォルト, 3.3.3

作成

属性セット, 2.8.1

制約, チェック制約, 2.5.2.4

制約, 外部キー制約, 2.5.2.2

制約, 一意キー制約, 2.5.2.3

CTマッピング・モジュール, 7.4.4

CTマッピング, 7.4

キューブ, キューブ・エディタの使用, 3.7.5

キューブ, ウィザードの使用, 3.7.3

データ監査, 20.2.1

データ・プロファイル, 18.2.4

データ・ルール, 19.2.3

ディメンション, ディメンション・エディタの使用, 3.3.4

ディメンション, ウィザードの使用, 3.3.2

表示セット, 5.9.4.1

式, 26.3

索引, 2.6.1

マッピング, 5

物理オブジェクト, 2.12.1

PL/SQLタイプ, 9.2.3, 9.2.3.3

プラッガブル・マッピング・フォルダ, 5.15.1.5

プラッガブル・マッピング, 5.15.1

主キー制約, 2.5.2.1

プロセス・フロー, 8.3.4

時間ディメンション, 時間ディメンション・ウィザードの使用, 3.10.1

タイプ2 SCD, 3.3.2.6

タイプ3 SCD, 3.3.2.6

Webサービス・パッケージ, 16.2.1

Webサービス, URLに基づく, 16.3

Webサービス, Warehouse Builderオブジェクトに基づく, 16.2.2

CTマッピング・モジュール

作成, 7.4.4

CTマッピング, 5.1.1.4

概要, 7.4

監査, 7.6

監査, 前提条件, 7.6

作成, 7.4

配布, 7.4.10

実行, 7.4.11

生成されるスクリプト, 7.4.9

生成, 7.4.9

異機種データベースからのデータの移動, 7.10

変更データ・キャプチャの実行, 7.7

ETLの実行, 7.4.3

生成されるサンプル・コード, 7.4.9.1

タイプ, 7.4

使用方法, 5.1.1.4, 7.4

コントロールCTの使用, 7.8

OracleターゲットCTの使用, 7.9

検証, 7.4.8

実行結果の表示, 7.4.12

キューブ演算子, 25.2.5 キューブ

概要, 3.1.3

ACTIVE_DATE属性, 6.2

自動解決, MOLAPキューブ, 3.7.6.3

計算済メジャー, 3.7.1

計算済メジャー・ウィザード, 3.7.5.5

計算済メジャー, タイプ, 3.7.1

圧縮, 定義, 3.7.5.3.1

構成, 3.9

作成, キューブ・エディタの使用, 3.7.5

作成, ウィザードの使用, 3.7.3

配布オプション, 3.2.4

配布オプション, データ・オブジェクトのみ配布, 3.2.4

配布オプション, カテゴリのみ配布, 3.2.4, 3.2.4

ディメンション, 3.7.3.3

編集, 3.8

例, 3.7.2

データのロード, 6.2.1

ロード, タイプ2緩やかに変化するディメンションの使用, 6.2

メジャー, 作成, 3.7.3.4

オーファン管理ポリシー, 3.7.5.7

パラレル解決, 3.7.6.6

パーティション化, ディメンションに沿って, 3.7.5.3.1

ETLの実行, 6.2

物理バインド, 3.7.5.8

不規則データ, 3.7.6.1

キューブ・メジャーの解決, 3.7.6.4

解決, ロードに依存しない, 3.7.6.5

スパーシティ, 定義, 3.7.5.3.1

スパーシティ, ガイドライン, 3.7.5.3.1

格納, 3.7.3.2

カスタム変換

概要, 4.4.1.2

定義, 9.2

編集, 9.3

D

データ

集計, 26.4

クレンジング, 22.1

テスト, 5.19.4

表示, 2.1.4

データ監査モニター・アクティビティ, 27.4 データ監査

構成, 20.2.2

作成, 20.2.1

エラー表に対する権限の付与, 20.2.4.1

使用, 20.2.3

エラー表の表示, 13.5.14, 20.2.4

データ・フロー演算子, 26.1 データ・ジェネレータ演算子, 25.2.6 データ・オブジェクト

概要, 2.1

アドバンスト・キュー, 2.11

ネーミングのベスト・プラクティス, 2.1.3

列のデータ型, 2.1.1

定義, 2

ディメンション・オブジェクト, 実装, 3.2

生成, 1.4

配布ロケーションの識別, 13.5.6

リスト, 2.1

データ品質の監視, 20.2

ネーミング規則, 2.1.3

概要, 2.1

順序, 2.9

SQL ServerおよびIBM DB2, 2.13

マップの実行で使用, 13.5.7

検証, 1.3

表示, 2.1.4

データの表示, 2.1.4

データ・オブジェクト, 生成, スクリプトの保存, 1.4.2 データ・プロファイル

オブジェクトの追加, 18.2.9

データ・プロファイル・エディタ

コンポーネント, 18.1.4

データ・プロファイル

データ・オブジェクトの追加, 18.2.9.1

パラメータの構成, 18.2.5.1

構成, 18.2.5

作成, 18.2.4

データ・プロファイリング

修正の生成, 21.2

パフォーマンス・チューニング, 18.3

実行, 18.2

手順, 18.2.3

修正の表示, 21.2.6

結果の表示, 18.2.7

データ品質

Match-Merge演算子, 23.1

データ・ルール, 2.2.1.7

概要, 19.1

適用, 19.2.5

ETLマッピングへの適用, 19.2.6

作成, 19.2.3

導出, 19.2.2

編集, 19.2.4

タイプ, 19.1.1

使用, 19.2

データ変換

概要, 4.1

データ型

サポート・リスト, 2.1.1

データ・ビューア, 2.1.4, 2.1.4 MDMのデータの監視および修復, 実行, 18.4 DATEデータ型, 2.1.1 日付変換, 28.1.5, 28.1.5 DB2

CTマッピングを使用したデータの抽出, 7.10.1

デバッグ

マップの実行, 13.5.4

マッピング, 5.19

プロセス, 13.5.2

開始ポイント, 5.19.7.3

デュプリケータ解除演算子, 26.6, 26.6

DISTINCT, 26.6

デフォルトのデプロイメント時間設定, 13.5.8 定義

アドバンスト・キュー, 2.11.3

定数, 25.2.2

キューブのスパーシティ, 3.7.5.3.1

データ・オブジェクト, 2

ディメンション・オブジェクト, 3

エラー表, 2.1.5.1

SAPオブジェクトのETLプロセス, 7.2

実行ユニット, 7.4.6

数量別ハッシュ・パーティション, 2.7.3

ハッシュ・パーティション, 2.7.2

索引, 2.2.1.4

リスト・パーティション, 2.7.4

マッピング, 5

マテリアライズド・ビュー, 2.4.1

プロセス・フロー, 8.3

キューの伝播, 2.11.5

キュー表, 2.11.1

レンジ・パーティション, 2.7.1

スケジュール, 11.2

順序, 2.9.2

SQL ServerおよびIBM DB2データ・オブジェクト, 2.13

表, 2.2.1

テスト・データ, 5.19.4

タイプ2 SCD, 3.4.1

タイプ3 SCD, 3.4.3

ビュー, 2.3.1, 2.3.2

索引の定義, 2.2.1.4 表の定義, 2.2.1 定義

トランスポータブル・モジュール, 17.3.3.6

削除

グループをマッピングから, 26.2.2

すべて配布, 3.2.4 配布

概要, 12.1.1

CTマッピング, 7.4.10

データ・オブジェクト, 12.3

配布アクション, 12.1.1.1

デプロイメント・エラー, 15.1

配布結果, 12.3.4

配布ステータス, 12.1.1.2

プロセス・フロー, 8.1.1

レポート, 13.4, 13.4.1

トランスポータブル・モジュールの表, 17.3.4.1

トランスポータブル・モジュール, 17.3.5

Webサービス, 16.2.5

Webサービス, 前提条件, 16.2.5

配布アクション, 12.1.1.1 配布および実行

手順, 12.2

配布オプション

すべて配布, 3.2.4

カタログにのみ配布, 3.2.4

デプロイメント・レポート, 13.4, 13.4.1 デプロイメント時間設定, 13.5.8 配布

監査, 13

識別, 13.5.5

導出

データ・ルール, 19.2.2

デザイン・センター

リポジトリ・ブラウザ, 13.3

設計

プロセス・フロー, 8

ターゲット・スキーマ, 1.1

ターゲット・スキーマ, ディメンション, 1.1.3

ターゲット・スキーマ, リレーショナル, 1.1.2

ダイアグラム

影響分析, 14.1.2

系統, 14.1.2

ディメンション演算子, 25.2.7 ディメンション・オブジェクト

配布オプション, すべて配布, 3.2.4

ディメンション・オブジェクト

概要, 3.1

バインド, 3.2.1.1

作成, 概要, 3.1

定義, 3

配布オプション, データ・オブジェクトのみ, 3.2.4

配布オプション, カテゴリのみ配布, 3.2.4

実装, 概要, 3.2

オーファン管理ポリシー, 3.1.4

アンバインド, 3.2.1.4

ディメンション

概要, 3.1.1

バインド, 3.3.4.9

構成, 3.6

制御行, 3.3.6

作成, ディメンション・エディタの使用, 3.3.4

作成, ウィザードの使用, 3.3.2

デフォルト設定, ウィザードの使用, 3.3.3

配布オプション, 3.2.4

配布オプション, データ・オブジェクトのみ配布, 3.2.4

配布オプション, カテゴリのみ配布, 3.2.4

行数の決定, 3.3.6.1

ディメンション属性

作成, 3.3.2.3

編集, 3.5 エラー表, 3.1.4.3 例, 3.3.1 データの抽出, 6.1.3.1 階層, 作成, 3.3.2.4, 3.3.4.5 レベル属性, 作成, 3.3.2.5 レベル, 作成, 3.3.2.4 ファクト・データのリンク, 3.3.6 データのロード, 6.1.1.1

オーファン行管理, 3.1.4.1

ロード, 例, 6.1.1.1 オーファン管理ポリシー, 指定, 3.3.4.7 ETLの実行, 6.1 データの削除, 6.1.4

オーファン行管理, 3.1.4.2

データの削除, 例, 6.1.5 ROLAPディメンションの制限, 3.3.5 デフォルトの親の指定, 3.3.4.8 格納, 3.3.2.2 サロゲート識別子, 3.1.1.1 ダイレクト・パス・ロード

マスター・ディテール関係, 10.2.2

マスター・ディテール・フラット・ファイル, 10.2.2

表示セット

作成, 5.9.4.1

定義, 5.9.4

DISTINCT

アグリゲータ演算子, 26.4.3

デュプリケータ解除演算子, 26.6

DMLエラー・ロギング

概要, 15.2

有効化, 15.2.2

ETL, 15.2.2.1

制限, 15.2.3

動的移入

時間ディメンション, 3.11.1

動的に移入, 3.11.1

E

編集

アドバンスト・キュー, 2.11.4

属性セット, 2.8.2

制約, 2.5.3

キューブ, 3.8

データ・ルール, 19.2.4

ディメンション, 3.5

無効なオブジェクト, 1.3.2

マテリアライズド・ビュー, 2.4.2

PL/SQLタイプ, 9.3.2

キューの伝播, 2.11.6

キュー表, 2.11.2

スケジュール, 11.2.1

順序, 2.9.3

表定義, 2.2.2

時間ディメンション, 3.10.3

変換プロパティ, 9.3

トランスポータブル・モジュール, 17.4

ビュー, 2.3.2

有効日

概要, 3.1.2

ソース属性のマッピング, 6.1.1.2

電子メール・アクティビティ, 27.6 有効化

DMLエラー・ロギング, 15.2.2

階層バージョニング, 3.1.2.2

Enterprise Java Beanアクティビティ, 27.5 エラー・ログ

エラー・ログの解析, 15.1

エラー表, 3.1.4.3

概要, 2.1.5, 15.2.1

列, 2.1.5.2

定義, 2.1.5.1

権限の付与, 20.2.4.1

ETL

ランタイム・パフォーマンスの改善, 10

ETLオブジェクト

スケジュール, 11

例

キューブ, 3.7.2

ディメンション, 3.3.1

タイプ2緩やかに変化するディメンション, 3.1.2.1

タイプ3緩やかに変化するディメンション, 3.1.2.3

表記規則の例, はじめに 例

CTマッピングを使用したデータ制約のチェック, 7.8.1

プロセス・フローでのWebサービスの消費, 16.8.2

CTマッピングを使用したIBM DB2からのデータの抽出, 7.10.1

WebサービスとOracle BPELプロセス・マネージャの統合, 16.8.3

タイプ2 SCDへのデータのロード, 6.1.2

タイプ3 SCDへのデータのロード, 6.1.1.3

ディメンションのロード, 6.1.1.1

トランザクション・データのロード, 5.13

CTマッピングを使用した変更データ・キャプチャの実行, 7.7

Webサービスとしてのマッピングの公開, 16.8.1

ディメンションからのデータの削除, 6.1.5

OracleターゲットCTの使用, 7.9.1

実行

CTマッピング, 7.4.11

SQL*Plusからのマッピング, 10.1.5

レポート, 13.4, 13.4.2

Webサービス, ブラウザの使用, 16.4.2

Webサービス, コントロール・センター・マネージャの使用, 16.4.1

実行

概要, 12.1.2

監査, 13

エラー, 15.1

実行レポート, 13.4, 13.4.2 実行ユニット

演算子の追加, 7.4.6.3

デフォルト実行ユニットの作成, 7.4.6.7

デフォルト・コード・テンプレート, 7.4.6.8

定義, 7.4.4

削除, 7.4.6.6

演算子の削除, 7.4.6.5

実行ビュー

マッピング・エディタ, 5.3.3

メニュー, 7.4.6.1

ツールバー, 7.4.6.1

オブジェクト演算子の拡張, 25.2.8 有効期限

概要, 3.1.2

式ビルダー

概要, 26.3

開く, 26.3.1

式演算子, 26.7, 26.7 式, 作成, 26.3 外部表演算子, 25.2.9 抽出

データをDB2からOracle Databaseへ, 7.10.1

ディメンション・データ, 6.1.3.1

タイプ2の緩やかに変化するディメンションのデータ, 6.1.3.2

タイプ3の緩やかに変化するディメンションのデータ, 6.1.3.3

マスター・ディテール・フラット・ファイルからの抽出, 10.2.1, 10.2.1.2

F

高速リフレッシュ, 2.12.3.3

ファイルが存在アクティビティ, 27.9

ファイル転送

プロセス・フロー, 8.10

フィルタ演算子, 26.8, 26.8, 26.8 フィルタ, 変換を使用, 9.4 ファースト・クラス・オブジェクト

概要, 2.1.2.1

フラット・ファイル演算子, 25.4.1 フラット・ファイル

構成, 24.2.7

マスター・ディテール・マッピングの構成, 10.2.2

マスター・ディテール・レコードの抽出, 10.2.1.2

マスター・ディテール・フラット・ファイルのインポート, 10.2.1.2

マッピング, 7.1

マスター・ディテール・マッピング, ダイレクト・パス・ロードのための更新後スクリプト, 10.2.2

マスター・ディテール, 例, 10.2.1

マスター・ディテール, 抽出, 10.2.1

マスター・ディテール, 初期ロード後の操作, 10.2.1.4

変数名, プロセス・フロー, 8.9

FLOATデータ型, 2.1.1 forループ・アクティビティ, 27.11 外部キー制約, 2.5.1 外部キー, 参照整合性の確認, 10.1.6 FORKアクティビティ, 27.10 FTP

プロセス・フローでの使用, 8.10

FTPアクティビティ, 27.12 完全外部結合, 26.9.1.4, 26.9.2 関数

集計, 26.4.3

変換, 4.4.1.2

定義, 9.2

編集, 9.3.1

G

生成

データ・オブジェクト, 1.4

トランスポータブル・モジュール, 17.3.5

Webサービス, 16.2.4

修正の生成, 21.2 生成

エラー, 15.1

スクリプトの保存, 1.4.2

結果の表示, 1.4.1

スクリプトの表示, 1.4.1

Group By句, 26.4.1 グループ

マッピングへの追加, 26.2.2

接続, 5.8.2

LIAダイアグラム, 14.3.3

マッピングからの削除, 26.2.2

H

数量別ハッシュ・パーティション

概要, 2.7.3

定義, 2.7.3

ハッシュ・パーティション

概要, 2.7.2

定義, 2.7.2

Having句, 26.4.2 階層

作成, 3.3.2.4, 3.3.4.5

階層バージョニング

概要, 3.1.2.2

有効化, 3.1.2.2

ハウスホールディング, 23.1, 23.1, 23.2.3

I

IBM DB2データ・オブジェクト

ネーミング規則, 2.13.1

影響分析

ターゲット・スキーマへの変更のロール・アウト, 12.6

影響分析ダイアグラム, 14.1.2 実装

ディメンション・オブジェクト, MOLAP, 3.2.3

ディメンション・オブジェクト, リレーショナル, 3.2.1

ディメンション・オブジェクト, ROLAP, 3.2.2

ディメンション・オブジェクト,MVによるROLAP, 3.2.2

実装

ディメンション・オブジェクト, 3.2

レポート, 13.3.3.3

インポート

マスター・ディテール・フラット・ファイル, 10.2.1.2

変換, 9.4

ランタイム・パフォーマンスの改善, 10 索引のパーティション化, 2.6.1, 2.7.6

ローカル索引, 2.7.6

索引パーティション

概要, 2.7.6

索引

概要, 2.6

作成, 2.6.1

定義, 2.2.1.4

タイプ, 2.6.1

入力シグネチャ, 5.15.1.3 インストール

エラー, 15.1

INTEGERデータ型, 2.1.1 INTERVAL DAY TO SECONDデータ型, 2.1.1 INTERVAL YEAR TO MONTHデータ型, 2.1.1

J

Javaクラス・アクティビティ, 27.13

結合条件

デフォルト, 26.9.1.2

外部キー, 26.9.1.2

結合入力ロール, 26.9.2, 26.9.2.1 ジョイナ演算子, 26.9, 26.9, 26.9.1.2, 26.9.1.3, 26.9.1.4, 26.9.2

結合条件, 26.9.1.1

SAPソース, 26.9.1.8

複数の行セットの結合, 26.9 結合, 完全外部, 26.9.1.3, 26.9.1.4, 26.9.1.4, 26.9.2, 26.9.2.1 結合, 左外部, 26.9.2.1 結合, 外部, 26.9.1.3 結合, 右外部, 26.9.2.1

K

キー参照演算子, 26.12

L

言語パラメータ

SAP, 7.2.1.3

LCRキャスト演算子, 26.10 LCRスプリッタ演算子, 26.11 制限

事前作成されたコード・テンプレート, 7.4.1.1

系統ダイアグラム, 14.1.2 リスト・パーティション

概要, 2.7.4

定義, 2.7.4

例, 2.7.4

ロード

マスター・ディテール・ターゲットの従来型パス, 10.2.1.2

キューブ, 6.2.1

キューブ, タイプ2緩やかに変化するディメンションの使用, 6.2

マテリアライズド・ビューからのデータ, 25.2.12

ディメンション・データ, 6.1.1.1

ディメンション・データ, 例, 6.1.1.1

マスター・ディテール・ターゲットのダイレクト・パス, 10.2.2

マスター・ディテール・レコード, 10.2.1.2

マスター・ディテール関係, 10.2.1.2, 10.2.2

マスター・ディテール関係, ダイレクト・パス, 10.2.2

トランザクション・データ, 5.13

タイプ2緩やかに変化するディメンション, 6.1.1.2

タイプ2緩やかに変化するディメンション, 例, 6.1.2

タイプ3緩やかに変化するディメンション, 6.1.1.3

タイプ3緩やかに変化するディメンション, 例, 6.1.1.3

ロード・タイプ, 25.2.1.6

SAP, 7.2.1.2

ロケーション

デプロイされたデータ・オブジェクト, 13.5.6

トランスポータブル・モジュール, 17.3.2

登録解除, 13.5.15

接続詳細の更新, 13.5.16

ログ

エラー・ログの解析, 15.1

LONGデータ型, 2.1.1 LONG RAWデータ型, 2.1.1 参照演算子, 26.12

M

メイン・プロシージャ, 10.1.5

管理レポート, 13.4, 13.4.3

手動アクティビティ, 27.14

手動バインド

ディメンション・オブジェクト, 3.2.1.3

手順, 3.2.1.3

マップの実行, 13.5.4, 13.5.7 マッピング・アクティビティ, 27.15 マッピング・デバッガ

制限, 5.19.1

マッピング・エディタ

実行ビュー, 5.3.3

論理ビュー, 5.3.2

マッピング演算子

概要, 4.3

追加, 5.7

アグリゲータ演算子, 26.4

Anydataキャスト, 26.5

接続, 5.8

定数, 25.2.3

オブジェクトの構成, 25.2.4

キューブ, 25.2.5

データ・ジェネレータ, 25.2.6

デュプリケータ, 26.6

ディメンション, 25.2.7

編集, 5.9

オブジェクトの拡張, 25.2.8

式, 26.7

外部表, 25.2.9

フィルタ, 26.8

フラット・ファイル, 25.4.1

ジョイナ, 26.9

LCRキャスト, 26.10

LCRスプリッタ, 26.11

参照, 26.12

出力パラメータのマッピング, 25.2.11

Match-Merge, 23.1

マテリアライズド・ビュー, 25.2.12

Name and Address, 22.1

ピボット, 26.13

マッピング後プロセス, 26.14

マッピング前プロセス, 26.15

キュー, 25.2.13

順序, 25.2.14

設定操作, 26.16

ソーター, 26.17

スプリッタ演算子, 26.18

副問合せフィルタ, 26.19

表, 25.2.15

テーブル・ファンクション, 26.20

変換, 26.21

タイプ, 4.3.1

アンピボット, 26.22

可変長配列イテレータ, 25.2.16

ビュー, 25.2.17

出力パラメータ演算子のマッピング, 25.2.11 出力パラメータのマッピング, 25.2.11 マッピング

概要, 4.2, 5.1

トランスポータブル・モジュール経由でのデータへのアクセス, 17.3.6

自己結合の追加, 26.8.1

データ・ルールの適用, 19.2.6

構成, 5.11, 10.1

マスター・ディテールの構成, 10.2.1.2

作成, 5

デバッグ, 5.19

定義, 5

SQL*Plusからの実行, 10.1.5

フラット・ファイル, 7.1

PEL, 10.3.2

グループ, 26.2.2

ターゲット・ロード, 順序, 5.10.1

マスター・ディテール・マッピング, 10.1.6

ネーミング規則, 5.6.1, 8.5.1

演算子, 4.3

ETLの実行, 5.5

PL/SQLマッピング, 10.1

PL/SQLマッピング, 例, 5.4

ランタイム・パラメータ, 24.2.1

検索, 属性, 5.18

検索, グループ, 5.18

検索, 演算子, 5.18

ソースとターゲット, 構成, 26.18.1

演算子のスポットライト, 5.17.3

ターゲット・ロード順序, 5.10.1

タイプ, 5.1.1

タイプ。SAP ABAPマッピング, 5.1.1.3

タイプ, CTマッピング, 5.1.1.4

タイプ, PL/SQLマッピング, 5.1.1.1

タイプ, SQL*Loader, 5.1.1.2

演算子のグループ化解除, 5.17.2

Webサービスの使用, 16.6

マスター・ディテール・フラット・ファイル

ソースとして, 概要, 10.2.1

"マッピングの構成, 10.2.1.2

マッピングの構成, ダイレクト・パス・ロード, 10.2.2

マスター・ディテール・フラット・ファイルの例, 10.2.1

抽出, 10.2.1.2

抽出, 従来型パスによるロードを使用, 10.2.1.2

抽出, ダイレクト・パスによるロードを使用, 10.2.2

インポートとサンプリング, 10.2.1.2

初期ロード後の操作, 10.2.1.4

パフォーマンス, 10.2.1.2, 10.2.2

ダイレクト・パス・ロードの更新後スクリプト, 10.2.2

RECNUM, 10.2.2

サンプル・マッピング, 従来型パスによるロード, 10.2.1.2

サンプル・マッピング, ダイレクト・パスによるロード, 10.2.2

Match-Merge演算子, 23.1 一致ルール

複数の一致ルール, 23.1.5.2

推移的一致ルール, 23.1.5.3

一致ルール

アドレス一致ルール, 23.1.9

条件付き一致ルール 23.1.4

カスタム一致ルール, 23.1.10

会社一致ルール, 23.1.8

人名一致ルール, 23.1.7

重み一致ルール, 23.1.6

一致

推移, 23.1.5.3

Match-Merge演算子

カスタム・ルール, 23.1.17

設計上の考慮事項, 23.2.2, 23.2.2

例, 23.1.5

一致ルール, 23.1.3

マージ・ルール, 23.1.11

制限, 23.2.2.1

使用, 23.2.1

マテリアライズド・ビュー演算子, 25.2.12 マテリアライズド・ビュー

概要, 2.4

属性セット, 追加, 2.4.2.4

属性セット, 削除, 2.4.2.4

属性セット, 編集, 2.4.2.4

列, 追加, 2.4.2.2

列, 削除, 2.4.2.2

列, 編集, 2.4.2.2

構成, 2.12.3

制約, 追加, 2.4.2.3

制約, 削除, 2.4.2.3

制約, 編集, 2.4.2.3

定義, 2.4.1

属性セットの定義, 2.4.1.6

列の定義, 2.4.1.1

制約の定義, 2.4.1.3

データ・ルールの定義, 2.4.1.7

索引の定義, 2.4.1.4

パーティションの定義, 2.4.1.5

問合せの定義, 2.4.1.2

編集, 2.4.2

高速リフレッシュ, 2.12.3.3

データのロード元, 25.2.12

データのロード先, 25.2.12

名前の変更, 2.4.2.1

定義の更新, 2.4.2

MDSYS.SDO_DIM_ARRAYデータ型, 2.1.1 MDSYS.SDO_DIM_ELEMENTデータ型, 2.1.1 MDSYS.SDO_ELEM_INFO_ARRAYデータ型, 2.1.1 MDSYS.SDO_GEOMETRYデータ型, 2.1.1 MDSYS.SDO_ORDINATE_ARRAYデータ型, 2.1.1 MDSYS.SDO_POINT_TYPEデータ型, 2.1.1 MDSYS.SDOAGGRTYPEデータ型, 2.1.1 マージ・ルール, 23.1.17 メタデータ

依存性, 14

インポートおよびエクスポート・エラー, 15.1

メタデータ依存性, ダイアグラム, 14.1 メタデータ依存性マネージャ, 14.1 MINUS, 集合演算演算子, 26.16 モジュール

ターゲット・モジュールの構成, 2.12.1

プロセス・フロー, 8.1.1, 8.3.2

MOLAP実装

概要, 3.2.3

ディメンション・オブジェクト, 3.2.3

監視

データ・オブジェクト, 監査の使用, 20.2.3

データ品質, 20.2

プロセスの実行の監視, 13.5.10 異機種データベースからのデータの移動

CTマッピングの使用, 7.10

複数のレコード・タイプのフラット・ファイル

マスター・ディテール構造, 10.2.1

マスター・ディテール構造, 例, 10.2.1

複数表のINSERT, 26.18.1

N

名前とアドレス

国の郵便認証, オーストラリア, 22.1.3.3

国の郵便認証, カナダ, 22.1.3.2

国の郵便認定, 米国, 22.1.3.1

演算子, 22.1

ライセンスの購入, 22.1

Name and Address演算子, 22.1

ベスト・プラクティス, 22.1.6

CASSレポート, 22.1.3

有効化, 22.1

入力ロール, 22.1.4

出力コンポーネント, 22.1.5

Name and Addressサーバー, 22.3

構成, 22.3.1

エラー, 15.1

開始, 22.3.2

停止, 22.3.2

名前

クレンジング, 22.1

プロセス・フローの変数名付きフラット・ファイル, 8.9

Name and Address, 処理ライブラリ, 22.3 ネーミング規則

データ・オブジェクト, 2.1.3

ネーミング規則

IBM DB2データ・オブジェクト, 2.13.1

SQL Serverデータ・オブジェクト, 2.13.2

移動

リポジトリ・ブラウザ, 13.3.1

NCHARデータ型, 2.1.1 NCLOBデータ型, 2.1.1 ネストした表

作成, 2.10.8

編集, 2.10.9

概要, 2.10.7

NUMBERデータ型, 2.1.1 番号変換, 28.1.6, 28.1.6 NVARCHAR2データ型, 2.1.1

O

オブジェクト・クラス定義

概要, 2.1.2

オブジェクト・プロパティ, レポート, 13.3.2 オブジェクト・タイプ

作成, 2.10.2

編集, 2.10.3

概要, 2.10.1

オブジェクト

無効なオブジェクト, 編集, 1.3.2

レポート, 13.3.3

OLAP変換, 28.1.7 OMBPlusアクティビティ, 27.17 開く

式ビルダー, 26.3.1

リポジトリ・ブラウザ, 13.2

オペレーティング・モード

行ベース, 10.1.1.2

行ベース(ターゲットのみ), 10.1.1.3

デフォルト・モードの選択, 10.1.1

行ベース, 10.1.1.1

演算子属性, 5.8.3 演算子エディタ

入力タブ, 26.2.2

入力/出力タブ, 26.2.2

出力タブ, 26.2.2

演算子ウィザード, 26.2.1 演算子

概要, 4.1, 4.3

アグリゲータ, 26.4

Anydataキャスト, 26.5, 26.5

接続, 5.8

定数, 25.2.3

オブジェクトの構成, 25.2.4

キューブ, 25.2.5

データ・フロー, 26.1

データ・ジェネレータ, 25.2.6

デュプリケータ, 26.6, 26.6

ディメンション, 25.2.7

編集, 5.9

オブジェクトの拡張, 25.2.8

式, 26.7, 26.7

外部表, 25.2.9

フィルタ, 26.8, 26.8

フラット・ファイル, 25.4.1

フラット・ファイル, 24.2.7

ジョイナ, 26.9, 26.9

LCRキャスト, 26.10

LCRスプリッタ, 26.11

参照, 26.12

出力パラメータのマッピング, 25.2.11

Match-Merge, 23.1

マテリアライズド・ビュー, 25.2.12

Name and Address, 22.1, 22.1

ピボット, 26.13

プラッガブル・マッピング, 4.3.1.4

マッピング後プロセス, 26.14

マッピング前プロセス, 26.15

事前/事後処理, 4.3.1.3

キュー, 25.2.13

順序, 25.2.14

設定操作, 26.16

ソーター, 26.17

ソース, 25.1

スプリッタ演算子, 26.18

副問合せフィルタ, 26.19

表, 25.2.15

テーブル・ファンクション, 26.20

ターゲット, 25.1

変換, 26.21

変換, 4.3.1.2

アンピボット, 26.22

可変長配列イテレータ, 25.2.16

ビュー, 25.2.17

演算子, マッピング

追加, 5.7

接続, 5.8

編集, 5.9

タイプ, 4.3.1

ORアクティビティ, 27.18 Oracle RAC, サービス・ノードの管理, 13.4.3.1 OracleターゲットCT

CTマッピングの使用, 7.9

ORDER BY

ソーター演算子, 26.17

順序付け

複数ターゲット, 10.1.6

オーファン管理ポリシー, 3.1.4

キューブ, 3.7.5.7

ディメンション, 3.3.4.7

その他(SQL以外)の変換, 28.1.8 外部結合, 26.9.1.3 出力コンポーネント

Name and Address演算子, 22.1.5

出力シグネチャ, 5.15.1.4

P

パッケージ

変換, 4.4.1.2

定義, 9.2

編集, 9.3.1

プロセス・フロー, 8.1.1, 8.3.3

パラレル解決

キューブ, 3.7.6.6

パラメータ

マッピング出力, 25.2.11

パーティション交換ロード(PEL), 10.3

概要, 10.3.1

ターゲットの構成, 10.3.5

マッピング, 10.3.2

パフォーマンスの考慮事項, 10.3.4

制限, 10.3.5, 10.3.6

パーティション化, 索引, 2.6.1, 2.7.6 パーティション

概要, 2.7

コンポジット, 2.7.5

定義, 2.2.1.5

定義, 数量別ハッシュ・パーティション, 2.7.3

定義, リスト・パーティション, 2.7.4

定義, レンジ・パーティション, 2.7.1

数量別ハッシュ, 2.7.3

ハッシュ・パーティション, 2.7.2

索引, 2.7.6

リスト, 2.7.4

サブパーティション, 作成, 2.7.5.2

タイプ, 2.7

実行

MDMのデータの監視および修復, 18.4

ETLの実行

手順, 5.5

キューブの使用, 6.2

ディメンションの使用, 6.1

マッピングの使用, 5.5

ピボット演算子, 26.13

編集, 26.13.3

例, 26.13.1

式, 26.13.3.6

グループ, 26.13.3.2

入力属性, 26.13.3.4

出力属性, 26.13.3.5

行ロケータ, 26.13.2, 26.13.3.5

使用, 26.13.3

PL/SQLマッピング, 5.1.1.1, 10.1

例, 5.4

PL/SQLタイプ

概要, 9.2.3.1

変換, 4.4.1.2

作成, 9.2.3, 9.2.3.3

編集, 9.3.2

プラッガブル・マッピング・フォルダ

作成, 5.15.1.5

プラッガブル・マッピング演算子, 4.3.1.4 プラッガブル・マッピング

概要, 5.15

作成, 5.15.1

埋込み, 5.15

再使用, 5.15

演算子のスポットライト, 5.17.3

演算子のグループ化解除, 5.17.2

マッピング後プロセス演算子, 26.14 事前作成されたコード・テンプレート, 7.4.1

制限, 7.4.1.1

事前定義済変換, 4.4.1.1 マッピング前プロセス演算子, 26.15 事前/事後処理演算子, 4.3.1.3 主キー制約, 2.5.1 プロシージャ

変換, 4.4.1.2

定義, 9.2

編集, 9.3.1

プロセス・フロー

概要, 8.1

アクティビティ 8.4.1

変換の追加, 27.24

複合条件, 8.8

作成, 8.3.4

デバッグ, 13.5.2

定義, 8.3

配布, 8.1.1

設計, 8

停止, 27.14

変数名付きフラット・ファイルの処理, 8.9

モジュール, 8.1.1, 8.3.2

パッケージ, 8.1.1, 8.3.3

スクリプト, 27.21

開始, 27.23

サブプロセス, 27.23

FTPを使用したリモート・ファイルの転送, 8.10

推移, 8.6

Enterprise Java Beanの使用, 27.5

Javaクラスの使用, 27.13

OMB*Plusの使用, 27.17

Webサービスの使用, 16.5

プロセスの実行

比較, 13.5.3

デバッグ, 13.5.2

最近の識別, 13.5.1

監視, 13.5.10

再実行, 13.5.9

終了, 13.5.11

プロセス

デバッグ, 13.5.2

最近の識別, 13.5.1

再実行, 13.5.9

プロパティ

ソース演算子, 25.2.1

ターゲット演算子, 25.2.1

オブジェクト, 13.3.2

プロキシ設定

外部URLに基づくWebサービスの作成, 16.3

パブリックOracleカスタム・ライブラリ, 4.5.1 パブリックOracle事前定義済ライブラリ, 4.5.1 オブジェクトの公開

Webサービス, 16.2

Q

キュー演算子, 25.2.13

キューの伝播

概要, 2.11.5

構成, 2.12.8

定義, 2.11.5

編集, 2.11.6

キュー表

概要, 2.11.1

構成, 2.12.7

定義, 2.11.1

編集, 2.11.2

ペイロード・タイプ, 2.11.1.1

R

レンジ・パーティション

定義, 2.7.1

例, 2.7.1.1

RAWデータ型, 2.1.1 RECNUM属性, 10.2.2 RECNUM列, 10.2.2 レコード

マスターおよびディテール・レコードの抽出とロード, 10.2.1.2

フラット・ファイル内のマスターとディテールの関係, 10.2.1

参照整合性, マッピングでの確認, 10.1.6 マスター・ディテール・レコードの関係, 10.2.1 リレーショナル実装

概要, 3.2.1

ディメンション・オブジェクト, 3.2.1

REMAINING_ROWS出力グループ

スプリッタ演算子, 26.18

リモート・ファイル

転送, 8.10

データの削除

ディメンションから, 6.1.4

ディメンションから, 例, 6.1.5

緩やかに変化するディメンションから, 6.1.4

名前の変更

マテリアライズド・ビュー, 2.4.2.1

順序, 2.9.3.1

表, 2.2.2.1

ビュー, 2.3.2.1

表の列の順序変更, 2.2.2.5 繰返しスケジュール, 11.2.1.2 REPLICATE, 28.1.10.1 レポート

コントロール・センター, 13.4

実行, 13.4, 13.4.2

実装, 13.3.3.3

管理, 13.4, 13.4.3

オブジェクト・プロパティ, 13.3.2

デプロイメント, 13.4, 13.4.1

オブジェクト, 13.3.3.3

レポート

コントロール・センター, 13.4

デプロイメント, 13.4, 13.4.1

実行, 13.4, 13.4.2

実装, 13.3.3.3

管理, 13.4, 13.4.3

オブジェクト, 13.3.3

オブジェクト・プロパティ, 13.3.2

リポジトリ・ブラウザ

概要, 13.1.1

コントロール・センター, 13.4

デザイン・センター, 13.3

実装レポート, 13.3.3.3

ログイン, 13.2.3

移動, 13.3.1

オブジェクト・レポート, 13.3.3

開く, 13.2

起動, 13.2.1

停止, 13.2.1

リポジトリ・ナビゲータ, 13.3.1 制約

マッピング・デバッガ, 5.19.1

ROLAP実装

概要, 3.2.2

ディメンション・オブジェクト, 3.2.2

MV実装によるROLAP

概要, 3.2.2

ルート・アクティビティ, 27.19 行ロケータ

ピボット演算子, 26.13.2, 26.13.3.5

アンピボット演算子, 26.22.2, 26.22.3.5

行ベース, 10.1.1.2 行ベース(ターゲットのみ), 10.1.1.3 行ベースとセット・ベース

トランザクション・データのロード, 5.13

行, フィルタ, 26.8 RTRIMファンクション

変換演算子, 26.21

実行

プロセス, 13.5.9

ランタイム・パラメータ

SAP, 7.2.1.3

"ランタイム・パラメータ, 構成, 24.2.1 ランタイム・パフォーマンス, 改善, 10

S

サンプリング

マスター・ディテール・フラット・ファイル, 10.2.1.2

SAP

結合, 26.9.1.8

SAPオブジェクトのETLプロセスの定義, 7.2

言語パラメータ, 設定, 7.2.1.3

ランタイム・パラメータ, 設定, 7.2.1.3

SAP ABAPマッピング, 5.1.1.3 SAPファイルの物理プロパティ

データファイル名, 7.2.1.3

ステージング・ファイルのファイル・デリミタ, 7.2.1.3

ネステッド・ループ, 7.2.1.3

SAPシステム・バージョン, 7.2.1.3

SQL結合失敗, 7.2.1.3

ステージング・ファイル・ディレクトリ, 7.2.1.3

Select Singleの使用, 7.2.1.3

SAPパラメータ

言語, 7.2.1.3

ロード・タイプ, 7.2.1.2

ランタイム, 7.2.1.3

スケジュール

作成, 11.2

定義, 11.2

期間, 11.2.1.1

編集, 11.2.1

例, 11.2.2

繰返し, 11.2.1.2

使用, 11.2

スケジュール

概要, 11.1

ETLジョブ, 12.4.3

ETLオブジェクト, 11

スクリプト

プロセス・フロー, 27.21

スクリプト

FTPコマンド, 27.12.1, 27.12.3

検索

グループ, マッピング, 5.18

演算子, マッピング, 5.18

セカンド・クラス・オブジェクト

概要, 2.1.2.2

自己結合, 26.8.1 順序演算子, 25.2.14 順序

構成, 2.12.5

順序の作成ウィザード, 2.9.2

定義, 2.9.2

編集, 2.9.3

名前の変更, 2.9.3.1

サービス・ノード, 管理, 13.4.3.1 セット・ベースの更新, 10.1.1.1 設定操作演算子, 26.16

INTERSECT, 26.16

MINUS, 26.16

UNION, 26.16

UNION ALL, 26.16

ステータスの設定アクティビティ, 27.20 セット・ベース・モード, 10.1.1.1 セット・ベースと行ベース

トランザクション・データのロード, 5.13

セット・ベースと行ベース・モード, 10.1.1 設定

開始ポイント, 5.19.7.3

属性のプロパティ, 25.2.2

シグネチャ

入力, 5.15.1.3

出力, 5.15.1.4

緩やかに変化するディメンション

概要, 3.1.2

追加属性, 3.1.2

有効日, 3.1.2

有効期限, 3.1.2

階層バージョニング, 概要, 3.1.2.2

階層バージョニング, 有効化, 3.1.2.2

前の属性, 概要, 3.1.2

データの削除, 6.1.4

トリガー属性, 3.1.2

タイプ2, 3.3.2.6

タイプ2, 定義, 3.4.1

タイプ2, 例, 3.1.2.1

タイプ2, 要件, 3.1.2.1

タイプ2, 更新, 3.4.2

タイプ3, 3.3.2.6

タイプ3, 定義, 3.4.3

タイプ3, 例, 3.1.2.3

タイプ3, 要件, 3.1.2.3

解決

キューブ・メジャー, 3.7.6.4

キューブの解決

ロードに依存しない, 3.7.6.5

ソーター演算子, 26.17, 26.17 ソース・ファイル演算子, 7.5.2 ソース演算子, 25.1 ソース

マスター・ディテール・フラット・ファイル・ソース, 10.2.1

マスター・ディテール・フラット・ファイル, 10.2.1

マスター・ディテール・フラット・ファイル, 例, 10.2.1

空間変換, 28.1.9 指定

オーファン管理ポリシー, ディメンション, 3.3.4.7

スプリッタ演算子, 26.18, 26.18 演算子のスポットライト

マッピング, 5.17.3

プラッガブル・マッピング, 5.17.3

SQL式, 26.7 SQL Serverデータ・オブジェクト

ネーミング規則, 2.13.2

SQL*Loaderマッピング, 5.1.1.2 sqlplusアクティビティ, 27.21 開始アクティビティ, 27.22 起動

CCA, 7.4.7

コントロール・センター・エージェント, 7.4.7

Name and Addressサーバー, 22.3.2

リポジトリ・ブラウザ, 13.2.1

開始ポイント, 設定, 5.19.7.3 停止

CCA, 7.4.7

コントロール・センター・エージェント, 7.4.7

Name and Addressサーバー, 22.3.2

リポジトリ・ブラウザ, 13.2.1

ストリーム変換, 28.1.10 サブパーティション

作成, 2.7.5.2

サブプロセス, プロセス・フローの起動, 27.23 副問合せフィルタ演算子, 26.19 置換変数, 27.12.2 サマリー

変換によるデータ, 26.4

サロゲート識別子

概要, 3.1.1.1

使用, 3.1.1.1

サロゲート・キー

キー参照演算子, 26.12

同期

オブジェクトのマッピング, 拡張オプション, 5.12.3

同期化

演算子, 5.12

演算子, 一致方針, 5.12.3.1

Webサービス, 16.2.3

ワークスペース・オブジェクト, 5.12

SYS.ANYDATAデータ型, 2.1.1 SYS.LCR$_ROW_RECORDデータ型, 2.1.1

T

表定義

作成, 2.2.1

編集, 2.2.2

テーブル・ファンクション演算子, 26.20

前提条件, 26.20.1

使用, 26.20

テーブル・ファンクション

変換, 4.4.1.2

表演算子, 25.2.15 表, 2.2.1.4, 2.2.1.7

属性セット, 2.8

属性セット, 追加, 2.2.2.4

属性セット, 定義, 2.2.1.6

属性セット, 削除, 2.2.2.4

属性セット, 編集, 2.2.2.4

チャンク化, 25.2.15.2

列, 追加, 2.2.2.2

列, 定義, 2.2.1.2

列, 削除, 2.2.2.2

列, 編集, 2.2.2.2

構成, 2.12.2

制約, 追加, 2.2.2.3

制約, 定義, 2.2.1.3

制約, 削除, 2.2.2.3

制約, 編集, 2.2.2.3

データ・ルール, 2.2.1.7

定義, 2.2.1, 2.2.1

パーティションの定義, 2.2.1.5

名前, 2.2.1.1

名前の変更, 2.2.2.1

列の順序変更, 2.2.2.5

表(定義済), 2.2 ターゲット・ロード順序, 10.1.6 ターゲット・モジュール

構成, 2.12.1

ターゲット演算子, 25.1

ロード・タイプ, 25.2.1.6

プロパティ, 25.2.1

ターゲット・スキーマ

定義, 1.1

設計, ディメンション, 1.1.3

設計, リレーショナル, 1.1.2

変更の反映, 12.6

ターゲット

ロード順序の定義, 10.1.6

マッピングの複数ターゲット, 10.1.3.1

マッピングの複数ターゲット, 26.18, 26.18.1

テンプレート

アクティビティ, 8.5

テスト・データ, 定義, 5.19.4 時間ディメンション・ウィザード

デフォルト, 3.10.2

時間ディメンション, 3.11.1

作成, 時間ディメンション・ウィザードの使用, 3.10.1

データ範囲, 3.10.1.3

編集, 3.10.3

レベル, 作成, 3.10.1.4

データ移入のオーバーラップ, 3.11.2

移入, 3.11

格納, 3.10.1.2

時間設定, 13.5.8 TIMESTAMPデータ型, 2.1.1 TIMESTAMP WITH LOCAL TIMEZONEデータ型, 2.1.1 TIMESTAMP WITH TIMEZONEデータ型, 2.1.1 トランザクション・データ

ロード, 5.13

転送

リモート・ファイル, 8.10

変換フィルタ・データ, 9.4 変換ライブラリ

概要, 4.5

アクセス, 4.5.2

パブリックOracleカスタム・ライブラリ, 4.5.1

パブリックOracle事前定義済ライブラリ, 4.5.1

タイプ, 4.5.1

変換演算子, 26.21

CHAR, 26.21, 26.21

CHAR結果のRTRIM, 26.21

データ型, 26.21

RTRIMファンクション, 26.21

変換演算子, 4.3.1.2

概要, 4.1

変換プロパティ, 9.3 変換

概要, 4.4

プロセス・フローへの追加, 27.24

管理, 28.1.1, 28.1.1

文字, 28.1.2

コントロール・センター, 28.1.3

変換, 28.1.4

カスタム, 4.4.1.2

カスタムの例 9.4

日付, 28.1.5, 28.1.5

Group By操作, 26.4

インポート, 9.4

概要, 9

番号, 28.1.6, 28.1.6

OLAP, 28.1.7

その他(SQL以外), 28.1.8

事前定義済, 4.4.1.1

ストリーム, 28.1.10

タイプ, 4.4.1

XML, 28.1.11

データの変換

概要, 4.1

推移条件, 8.8 推移エディタ, 8.8 推移

条件, 8.8

プロセス・フロー, 8.6

トランスポータブル・モジュール

概要, 17.1.1

構成, 17.3.4

定義, 17.3.3.6

デプロイ, 17.3.5

編集, 17.4

生成, 17.3.5

ロケーション, 17.3.2

マッピング, 17.3.6

使用, 17.3

ツリー・ウォーキング, 26.8.1 トリガー属性

概要, 3.1.2

チューニング

データ・プロファイリングのパフォーマンス, 18.3

タイプ2緩やかに変化するディメンション

作成, ディメンション・ウィザードの使用, 3.3.2.6

有効日, ソース属性のマッピング, 6.1.1.2

データの抽出, 6.1.3.2

データのロード, 6.1.1.2

データのロード, 例, 6.1.2

更新, 3.4.2

タイプ3緩やかに変化するディメンション

作成, ディメンション・ウィザードの使用, 3.3.2.6

データの抽出, 6.1.3.3

データのロード, 6.1.1.3

データのロード, 例, 6.1.1.3

タイプ

計算済メジャー, 3.7.1

マッピング, 5.1.1

変換, 4.4.1

タイプ

変換ライブラリ, 4.5.1

U

UK，「制約」を参照

一意キー

アンバインド

ディメンション・オブジェクト, 3.2.1.4

演算子のグループ化解除

マッピング, 5.17.2

プラッガブル・マッピング, 5.17.2

UNION ALL集合演算, 26.16 UNION集合演算, 26.16 一意

キー制約, 2.5.1

アンピボット演算子, 26.22

編集, 26.22.3

例, 26.22.1

式, 26.22.3.7

グループ, 26.22.3.2

入力属性, 26.22.3.4

接続の入力, 26.22.3.3

出力属性, 26.22.3.6

行ロケータ, 26.22.2, 26.22.3.5

使用, 26.22.3

更新

ターゲット・スキーマ, 12.6

UROWIDデータ型, 2.1.1 ユーザー定義アクティビティ, 27.25 ユーザー定義型

概要, 2.10

使用

トランスポータブル・モジュール, 17.3

ユーティリティ

アクティビティ, 27.1.2

V

検証

概要, 1.3

データ・オブジェクト, 1.3

無効なオブジェクトの編集, 1.3.2

Webサービス, 16.2.3

検証

概要, 1.3

無効なオブジェクトの編集, 1.3.2

エラー, 15.1

結果の表示, 1.3.1

VARCHARデータ型, 2.1.1 VARCHAR2データ型, 2.1.1 変数

置換, 27.12.2

可変長配列イテレータ演算子, 25.2.16 可変長配列

作成, 2.10.5

編集, 2.10.6

概要, 2.10.4

ビュー演算子, 25.2.17 表示

データ, 2.1.4

データ監査のエラー表, 13.5.14

データ・オブジェクト, 2.1.4

データ・オブジェクトに格納されたデータ, 2.1.4

生成結果, 1.4.1

生成スクリプト, 1.4.1

検証結果, 1.3.1

ビュー

概要, 2.3

属性セット, 追加, 2.3.2.4

属性セット, 削除, 2.3.2.4

属性セット, 編集, 2.3.2.4

列, 追加, 2.3.2.2

列, 定義, 2.3.1.2

列, 削除, 2.3.2.2

列, 編集, 2.3.2.2

構成, 2.12.4

制約, 追加, 2.3.2.3

制約, 削除, 2.3.2.3

制約, 編集, 2.3.2.3

定義, 2.3.1

編集, 2.3.2

マテリアライズド, 25.2.12

名前の変更, 2.3.2.1

W

待機アクティビティ, 27.26

WB_ABORTファンクション, 28.1.1.1

WB_CAL_MONTH_NAMEファンクション, 28.1.5.1

WB_CAL_MONTH_OF_YEARファンクション, 28.1.5.2

WB_CAL_MONTH_SHORT_NAMEファンクション, 28.1.5.3

WB_CAL_QTRファンクション, 28.1.5.4

WB_CAL_WEEK_OF_YEARファンクション, 28.1.5.5

WB_CAL_YEARファンクション, 28.1.5.6

WB_CAL_YEAR_NAMEファンクション, 28.1.5.7

WB_COMPILE_PLSQL変換, 28.1.1.2

WB_DATE_FROM_JULIANファンクション, 28.1.5.8

WB_DAY_NAMEファンクション, 28.1.5.9

WB_DAY_OF_MONTHファンクション, 28.1.5.10

WB_DAY_OF_WEEKファンクション, 28.1.5.11

WB_DAY_OF_YEARファンクション, 28.1.5.12

WB_DAY_SHORT_NAMEファンクション, 28.1.5.13

WB_DECADEファンクション, 28.1.5.14

WB_DISABLE_ALL_CONSTRAINTS, 28.1.1.3

WB_DISABLE_ALL_TRIGGERS, 28.1.1.4

WB_DISABLE_CONSTRAINT, 28.1.1.5

WB_DISABLE_TRIGGER, 28.1.1.6

WB_ENABLE_ALL_CONSTRAINTS, 28.1.1.7

WB_ENABLE_ALL_TRIGGERS, 28.1.1.8

WB_ENABLE_CONSTRAINT, 28.1.1.9

WB_ENABLE_TRIGGER, 28.1.1.10

WB_HOUR12ファンクション, 28.1.5.15

WB_HOUR12MI_SSファンクション, 28.1.5.16

WB_HOUR24ファンクション, 28.1.5.17

WB_HOUR24MI_SSファンクション, 28.1.5.18

WB_IS_DATEファンクション, 28.1.5.19

WB_IS_NUMBERファンクション, 28.1.6.3

WB_IS_SPACEファンクション, 28.1.2.3

WB_JULIAN_FROM_DATEファンクション, 28.1.5.20

WB_LOOKUP_CHARファンクション, 28.1.2.1, 28.1.2.2

WB_LOOKUP_NUMファンクション, 28.1.6.1, 28.1.6.2

WB_MI_SSファンクション, 28.1.5.21

WB_OLAP_AW_PRECOMPUTE, 28.1.7.1

WB_OLAP_LOAD_CUBE, 28.1.7.2

WB_OLAP_LOAD_DIMENSION, 28.1.7.3

WB_OLAP_LOAD_DIMENSION_GENUK, 28.1.7.4

WB_RT_GET_ELAPSED_TIMEファンクション, 28.1.3.1

WB_RT_GET_JOB_METRICSファンクション, 28.1.3.2

WB_RT_GET_LAST_EXECUTION_TIME, 28.1.3.3

WB_RT_GET_MAP_RUN_AUDITファンクション, 28.1.3.4

WB_RT_GET_NUMBER_OF_ERRORSファンクション, 28.1.3.5

WB_RT_GET_NUMBER_OF_WARNINGSファンクション, 28.1.3.6

WB_RT_GET_PARENT_AUDIT_IDファンクション, 28.1.3.7

WB_RT_GET_RETURN_CODEファンクション, 28.1.3.8

WB_RT_GET_START_TIMEファンクション, 28.1.3.9

WB_TRUNCATE_TABLE, 28.1.1.11

WB_WEEK_OF_MONTHファンクション, 28.1.5.22

WB_XML_LOAD, 28.1.11.1

WB_XML_LOAD_F, 28.1.11.2

Webサービス・パッケージ

作成, 16.2.1

Webサービス

概要, 16.1

安全にアクセス, 16.7

利点, 16.1.1

消費, 概要, 16.1.2.3

作成, URLに基づく, 16.3

作成, Warehouse Builderオブジェクトに基づく, 16.2.2

デプロイ, 16.2.5

デプロイ・ロケーション, 16.2.5

実行, ブラウザの使用, 16.4.2

実行, コントロール・センター・マネージャの使用, 16.4.1

生成, 16.2.4

デプロイの前提条件, 16.2.5

公開Webサービス, 概要, 16.1.3

公開, 概要, 16.1.2.2

外部サーバーへのセキュアなアクセスの設定, 16.7.2

同期, 16.5.3

マッピングでの使用, 16.6

プロセス・フローでの使用, 16.5

検証, 16.2.3

外部URLに基づくWebサービス

プロキシ設定, 16.3

WHERE(フィルタ演算子), 26.8 whileループ・アクティビティ, 27.27 ウィザード

キューブの作成ウィザード, 3.7.3

データ監査の作成ウィザード, 20.2.1

データ・ルール・フォルダの作成ウィザード, 19.2.1

データ・ルールの作成ウィザード, 19.2.3

ディメンションの作成ウィザード, 3.3.2

順序の作成ウィザード, 2.9.2

演算子, 26.2.1

ピボット・ウィザード, 26.13.3

時間ディメンション・ウィザード, 3.10.1

アンピボット・ウィザード, 26.22.3

SQL式の記述, 26.7

X

XML変換, 28.1.11

XMLFORMATデータ型, 2.1.1

XMLTYPEデータ型, 2.1.1

Z

LIA，「系統および影響分析」を参照

Copyright © 2000, 2011, Oracle and/or its affiliates. All rights reserved.