ヘッダーをスキップ
Oracle® Database 2日でデータ・ウェアハウス・ガイド
11g リリース2(11.2)
B56298-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

5 ETLロジックの定義

Oracle Warehouse Builderでデータ・オブジェクトの定義を作成およびインポートした後は、データをソースからターゲットに移動する抽出、変換およびロード(ETL)の各操作を設計できます。Warehouse Builderでは、マッピングを使用してこれらの操作を設計します。

この章の内容は次のとおりです。

マッピングおよび演算子について

マッピングとはデータをソースから抽出し、変換してターゲットにロードする一連の操作を表します。これによりデータ・フローおよびデータで実行される操作がビジュアル表示されます。マッピングをWarehouse Builderで設計する場合は、マッピング・エディタ・インタフェースを使用します。

マッピングの基本となる設計要素は演算子です。演算子を使用して、データ・フローでソースおよびターゲットを表現します。また、演算子を使用して、ソースからターゲットへのデータの変換方法を定義することもできます。ソースとして選択する演算子は、マッピングの設計方法に影響を与えます。Warehouse Builderでは、選択された演算子に基づいて、次のいずれかのマッピング生成言語にマッピングが割り当てられます。

各コード言語では、マッピングを設計する際、特定のルールに従う必要があります。

このガイドでは、PL/SQLマッピングを定義する方法を説明します。他のタイプのマッピングを定義するには、『Oracle Warehouse Builderデータ・モデリング、ETLおよびデータ・クオリティ・ガイド』を参照してください。PL/SQLマッピングを定義する基本ルールは、PL/SQLマッピングには、フラット・ファイル演算子またはSAP/R3ソース以外のすべてのタイプのソース演算子を含めることができることです。

マッピングを定義する手順の要約

マッピングを定義する場合に参照する項

  1. マッピングの作成

  2. 演算子の追加

  3. 演算子の編集

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

  5. 演算子、グループおよび属性プロパティの設定

  6. Warehouse Builderのオンライン・ヘルプのマッピング構成のリファレンス

  7. マッピング・デザインに問題がない場合、ツールバーの「生成」アイコンを選択してコードを生成します。

後続の手順

マッピングを設計してマッピングのコードを生成した後、プロセス・フローを作成するか、直接配布を続行して実行できます。

プロセス・フローを使用して、マッピングを相互に関連付けます。たとえば、あるマッピングが完了すると電子メール通知がトリガーされて別のマッピングが起動するように、プロセス・フローを設計できます。

マッピングおよび作成した関連するプロセス・フローを配布し、マッピングを実行します。

マッピングの作成

マッピングを作成する手順

  1. プロジェクト・ナビゲータの「マッピング」ノードに移動します。このノードは、ウェアハウス・ターゲット・モジュールの下、「データベース」フォルダの下の「Oracle」フォルダにあります。

    図5-1 プロジェクト・ナビゲータの「マッピング」ノード

    この図については、図の前後のテキストを参照してください。
    「図5-1 プロジェクト・ナビゲータの「マッピング」ノード」の説明

  2. 「マッピング」を右クリックして「新規マッピング」を選択します。

    「マッピングの作成」ダイアログ・ボックスが表示されます。

  3. 新しいマッピングの名前と説明(オプション)を入力します。

    マッピング名の指定と説明の記述に関するルールを表示するには、「ヘルプ」を選択します。

  4. 「OK」をクリックします。

    マッピングの定義が保存され、その名前がプロジェクト・ナビゲータ内に挿入されます。また、そのマッピングのマッピング・エディタが表示され、タイトル・バーにマッピングの名前が表示されます。

以前に作成したマッピングを開く手順

  1. プロジェクト・ナビゲータで、ウェアハウス・ターゲット・モジュールを「データベース」フォルダに移動して、次にOracle Databaseのフォルダに移動します。

  2. 「マッピング」ノードを開きます。

  3. 次のいずれかの方法で、マッピング・エディタを開きます。

    • マッピングをダブルクリックします。

    • マッピングを選択し、「ファイル」メニューから「開く」を選択します。

    • マッピングを選択し、[Ctrl]キーを押しながら[O]キーを押します。

    • マッピングを右クリックし、「開く」を選択します。

    Warehouse Builderによって、マッピング・エディタが表示されます。

演算子のタイプ

マッピングを設計するときは、マッピング・エディタ・パレットから演算子を選択し、キャンバスにドラッグできます。

  • Oracleソースとターゲット演算子: これらの演算子を使用して、Oracle表、ビュー、マテリアライズド・ビューなどのOracle Databaseオブジェクトを示します。

  • リモートおよびOracle以外のソース演算子とターゲット演算子: これらの演算子の使用には、特別な要件があります。

  • データ・フロー演算子: データ・フロー演算子を使用して、データを変換します。

  • 事前/事後処理演算子: マッピングの実行前または後に処理を実行するには、事前/事後処理演算子を使用します。マッピングに対する値を指定するには、マッピング・パラメータ演算子を使用します。

  • プラガブル・マッピング演算子: プラガブル・マッピング演算子は、マッピング演算子の再利用可能なグループで、単一の演算子として機能します。

演算子の追加

演算子をマッピングに追加する手順は、選択する演算子のタイプによって異なります。これは、一部の演算子はワークスペース・オブジェクトにバインドされ、その他の演算子はバインドされないためです。一般的に、データ・ソースまたはターゲット演算子を追加すると、Warehouse Builderによって、Warehouse Builderワークスペースのそのオブジェクトのバージョンと、マッピング・エディタ用の個別のバージョンが維持されます。たとえば、表演算子をマッピングに追加した場合は、Warehouse Builderによってその表のコピーがワークスペースで維持されます。個々のバージョンは、1つにバインドされます。つまり、マッピングのバージョンがワークスペースのバージョンに バインド されます。

2つのバージョンを区別するために、この項では、ワークスペース内のオブジェクトを総称的にワークスペース・オブジェクトと呼び、具体的には、ワークスペース表ワークスペース・ビューのように表現します。また、マッピングの演算子は演算子、ビュー演算子のように表現します。したがって、ディメンションをマッピングに追加する場合、マッピングのディメンションはディメンション演算子、ワークスペースのディメンションはワークスペース・ディメンションと表されます。

Warehouse Builderでは、ユーザーがこれらのオブジェクトでの定義の変更を同期化できるように、一部の演算子に個別のワークスペース・オブジェクトが保持されます。たとえば、ワークスペース表の新規メタデータ定義を再インポートした場合は、これらの変更内容をマッピングの表演算子に伝播する必要があります。反対に、マッピングの表演算子を変更した場合は、これらの変更内容を関連するワークスペース表に伝播する必要があります。これらのタスクは、同期化と呼ばれるプロセスによって実現します。Warehouse Builderでは、同期化が自動的に行われます。かわりに、マッピング・エディタから手動で同期化することもできます。

演算子をマッピングに追加する手順

  1. マッピング・エディタを開きます。

  2. 「グラフ」メニューから「追加」を選択し、演算子を選択します。または、コンポーネント・パレットからマッピング・エディタのキャンバスに演算子のアイコンをドラッグ・アンド・ドロップします。

    ワークスペース・オブジェクトにバインドできる演算子を選択すると、マッピング・エディタに「マッピングoperator_nameの追加」ダイアログ・ボックスが表示されます。このダイアログ・ボックスの使用方法については、「ヘルプ」をクリックしてください。

    ワークスペース・オブジェクトにバインドできない演算子を選択した場合は、演算子を作成するためのウィザードまたはダイアログ・ボックスが表示されます。

  3. Warehouse Builderに表示される指示に従い、「OK」をクリックします。

    マッピング・エディタでは、キャンバスに最大化された演算子が表示されます。左上の隅に演算子名が表示されます。各属性名およびデータ型を表示できます。

    演算子を最小化するには、右上隅の矢印をクリックします。マッピング・エディタのキャンバスに演算子がアイコンとして表示されます。

    図5-2 マッピング・エディタに表示された表演算子のソース

    この図については、図の前後のテキストを参照してください。
    「図5-2 マッピング・エディタに表示された表演算子のソース」の説明

ワークスペース・オブジェクトにバインドする演算子の追加

ワークスペース・オブジェクトにバインドできる演算子を追加すると、マッピング・エディタに「マッピングoperator_nameの追加」ダイアログ・ボックスが表示されます。次のオプションから1つ選択します。

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

このオプションは、マッピング・エディタを使用して、新規ステージング領域表や新規ターゲット表など、新しいワークスペース・オブジェクトを定義する場合に使用します。

「バインドされていない演算子を属性なしで作成」を選択した後、新しいオブジェクトの名前を入力します。演算子が属性なしでキャンバスに表示されます。

これで、演算子の属性を追加および定義できるようになりました(「演算子の編集」を参照)。次に、ターゲット・モジュールに新規ワークスペース・オブジェクトを作成するために、演算子を右クリックして「作成とバインド」を選択します。

このオプションをマッピング設計で使用する方法の例は、「例: マッピング・エディタによるステージング領域表の作成」を参照してください。

既存のワークスペース・オブジェクトから選択してバインド

このオプションは、ワークスペース内の定義済またはインポート済のオブジェクトに基づいて、演算子を追加する場合に使用します。

接頭辞を入力してオブジェクトを検索するか、選択したモジュール内のオブジェクトの表示リストからオブジェクトを選択します。

複数のアイテムを選択するには、[Ctrl]キーを押しながら各アイテムをクリックします。連続したアイテムのグループを選択するには、選択範囲の最初のオブジェクトをクリックし、[Shift]キーを押しながら最後のオブジェクトをクリックします。

演算子は、マッピングと同じモジュール内のワークスペース・オブジェクトまたは別のモジュールのワークスペース・オブジェクトに基づいて追加できます。別のモジュールのワークスペース・オブジェクトを選択すると、マッピング・エディタによってコネクタが作成されます(コネクタが存在していない場合)。このコネクタによって、マッピングのロケーションとワークスペース・オブジェクトのロケーション間のデータの移動パスが確立されます。

演算子の編集

各演算子には、エディタが関連付けられています。その演算子エディタを使用して、演算子、グループおよび属性に関する一般的な情報と構造的な情報を指定します。演算子エディタでは、グループおよび属性を追加または削除したり、名前を変更できます。演算子の名前も変更できます。

演算子の編集は、ロード・プロパティや条件付き動作の割当てとは異なります。ロード・プロパティや条件付き動作を指定するには、プロパティ・ウィンドウ(「演算子、グループおよび属性プロパティの設定」を参照)を使用します。

演算子、グループまたは属性を編集する手順

  1. マッピング・エディタのキャンバスから演算子を選択するか、演算子内のグループまたは属性を選択します。

  2. 選択したアイテムを右クリックし、「詳細をオープン」を選択します。

    マッピング・エディタに演算子エディタが表示され、「名前」タブ、「グループ」タブ、および各タイプの演算子のグループの「入力/出力」タブが表示されます。

    いくつかの演算子には追加のタブが含まれます。たとえば、Match Merge演算子には一致ルールおよびマージ・ルールを定義するタブが含まれます。

  3. 各タブに表示されるプロンプトに従い、「OK」をクリックして終了します。

    タブの実行方法については、「ヘルプ」を参照してください。

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

マッピング・ソース演算子、データを変換する演算子およびターゲット演算子を選択した後は、これらの演算子を接続できます。データ・フローの接続により、ソースから演算子を通過してターゲットに至るデータ・フローの様子が視覚的に表されます。

演算子は、次のいずれかの方法で接続できます。

演算子の接続

ある演算子と別の演算子との間に既存の接続がない場合は、その演算子同士を接続できます。接続する2つの演算子は、アイコン形式で表示されている必要があります。また、グループから演算子に接続することもできます。グループの上でマウスの左ボタンを押したまま、演算子のタイトル上にドラッグ・アンド・ドロップしてください。

演算子を別の演算子に接続する手順

  1. 接続元の演算子を選択します。

  2. マウス・ポインタを演算子のアイコン上に置き、左ボタンをクリックしたままにします。

  3. その演算子から、接続先の演算子のアイコンにマウスをドラッグします。

  4. ターゲットの演算子の上でマウス・ボタンを放します。

    「マッピング接続」ダイアログ・ボックスが表示されます。

  5. 「接続する属性グループ」セクションで、次の値を選択します。

    ソース・グループ: ターゲット演算子に接続する必要があるグループをソース演算子から選択します。

    ターゲット・グループ: ソース・グループにマップする必要があるグループをターゲット演算子から選択します。

  6. 「接続オプション」セクションで、ソース属性とターゲット属性の接続に使用する方法を選択し、「プレビュー」をクリックします。

  7. 「OK」をクリックして、「マッピング接続」ダイアログボックスを閉じます。

グループの接続

グループを接続すると、属性が自動的にコピーされるか、「マッピング接続」ダイアログ・ボックスが表示されます。

グループを別のグループに接続する手順

  1. 接続元のグループを選択します。

  2. マウス・ポインタをグループの上に置き、左ボタンをクリックしたままにします。

  3. そのグループから、接続先のグループにマウスをドラッグします。

  4. ターゲットのグループの上でマウス・ボタンを放します。

    演算子グループを接続する先のターゲット・グループに属性が含まれる場合は、「マッピング接続」ダイアログ・ボックスが表示されます。

  5. 「接続オプション」セクションで、ソース属性とターゲット属性の接続に使用する方法を選択し、「プレビュー」をクリックします。

  6. 「OK」をクリックして、「マッピング接続」ダイアログボックスを閉じます。

演算子グループを既存の属性を持たないターゲット・グループに接続すると、属性が自動的にコピーされ、各属性が接続されます。これは、「例: マッピング・エディタによるステージング領域表の作成」に示すようなマッピングを設計する場合に便利です。

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

マッピング・エディタでバインドされていない表演算子を使用すると、ステージング領域表をすばやく作成できます。

次の手順は、既存のソース表に基づいてステージング表を作成する方法を示しています。この手順は、ビュー、マテリアライズド・ビュー、フラット・ファイルおよび変換の作成にも使用できます。

ソース表をステージング表にマップする手順

  1. マッピング・エディタで、ソース表を追加します。

    メニュー・バーから「マッピング」「追加」「データ・ソース/ターゲット」の順に選択します。「データ・ソース/ターゲット」メニューで、「表演算子」を選択します。

  2. 「表演算子の追加」ダイアログ・ボックスを使用して、マッピング内のソース表の演算子を選択およびバインドします。「表演算子の追加」ダイアログ・ボックスから、「バインドされていない演算子を属性なしで作成」を選択します。

    図5-3 バインドされていないステージング表(属性なし)とソース表

    この図については、図の前後のテキストを参照してください。
    「図5-3 バインドされていないステージング表(属性なし)とソース表」の説明

  3. ソース演算子のグループにマウス・ポインタを置き、マウス・ボタンを押したままにします。

  4. ステージング領域表グループまでマウスをドラッグします。

    Warehouse Builderによって、ソース属性がステージング領域表にコピーされ、2つの演算子が接続されます。

  5. マッピング・エディタでは、マッピングに追加したバインドされていない表を選択します。右クリックして「作成とバインド」を選択します。

    図5-4 「作成とバインド」ダイアログ・ボックス

    この図については、図の前後のテキストを参照してください。
    「図5-4 「作成とバインド」ダイアログ・ボックス」の説明

  6. 「作成場所」に、表を作成するターゲット・モジュールを指定します。

    Warehouse Builderによって、指定したターゲット・モジュールに新しい表が作成されます。

属性の接続

一方の演算子の単一の出力属性から、他方の演算子の単一の入力属性に線を引きます。

属性を接続する手順

  1. マウス・ボタンをクリックしたまま、ポインタを出力属性の上に置きます。

  2. 出力属性からデータのフロー先となる入力属性にマウスをドラッグします。

    マウスをドラッグするとき、接続を示す行がマッピング・エディタ・キャンバスに表示されます。

  3. 入力属性の上でマウス・ボタンを放します。

  4. ステップ1から3を繰り返し、必要なデータ・フロー接続をすべて作成します。

    図5-5 マッピングで接続した演算子

    この図については、図の前後のテキストを参照してください。
    「図5-5 マッピングで接続した演算子」の説明

属性を接続するときは、次のルールに留意します。

  • 同じ入力属性には2度接続できません。

  • 同じ演算子内の属性には接続できません。

  • 入力専用の属性から接続することも、出力専用の属性に接続することもできません。

  • 確立されているカーディナリティに矛盾する方法では演算子を接続できません。かわりに、ジョイナ演算子を使用します。

演算子、グループおよび属性プロパティの設定

キャンバスでオブジェクトを選択すると、エディタの左側にあるプロパティ・インスペクタに、関連するプロパティが表示されます。

図5-6 表演算子のプロパティ・インスペクタ

この図については、図の前後のテキストを参照してください。
「図5-6 表演算子のプロパティ・インスペクタ」の説明

次のタイプのプロパティを表示および設定できます。

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

マッピングに使用する多くの演算子に対応する定義は、Warehouse Builderワークスペースにあります。このことは、表演算子やビュー演算子など、ソース演算子とターゲット演算子に当てはまります。また、順序演算子や変換演算子など、定義が複数のマッピングにまたがって使用される他の演算子にも当てはまります。このような演算子を変更するときは、変更内容をワークスペース・オブジェクトに伝播する必要があります。

変更の伝播方向は、次の選択肢から決定できます。

ワークスペース・オブジェクトから演算子への同期化: 本番環境でマッピングの使用を開始した後、ソースまたはターゲットに対してETL設計に影響する変更が行われる場合があります。通常、このような変更を管理する最善の方法は、Warehouse Builderのオンライン・ヘルプで説明されているように、Warehouse Builderの依存性マネージャを使用することです。依存性マネージャを使用すると、変更による影響が自動的に評価され、影響を受けるすべてのマッピングがまとめて同期化されます。また、「ワークスペース・オブジェクトから演算子への同期化」で説明されているように、マッピング・エディタで、オブジェクトを手動で同期化することもできます。

演算子からワークスペース・オブジェクトへの同期化: マッピングの演算子を変更する場合は、変更内容を対応するワークスペース定義に伝播させます。たとえば、インポートしてマッピングに使用したソースの場合、属性に複合物理名が付いている場合があります。

同期化がリフレッシュとは異なることに注意してください。リフレッシュ・コマンドでは、マルチユーザー環境で他のユーザーが行った変更にあわせて、確実に最新の状態が保たれます。同期化では、対応するワークスペース・オブジェクトと演算子が照合されます。

演算子の同期化

同期化する場合は、演算子を1つ選択し、指定したワークスペース・オブジェクトの定義とその演算子を同期化します。

演算子を同期化する手順

  1. マッピング・エディタのキャンバスで演算子を選択します。

  2. 「編集」メニューから、「同期化」を選択するか、演算子のヘッダーを右クリックして「同期化」を選択します。

    図5-7 演算子の同期化

    この図については、図の前後のテキストを参照してください。
    「図5-7 演算子の同期化」の説明

  3. デフォルトでは、Warehouse Builderにより、選択した演算子とワークスペース内の関連するオブジェクトを同期化するためのオプションが選択されます。デフォルトを受け入れるか、リスト・ボックスから別のワークスペース・オブジェクトを選択します。

    この手順では、ワークスペース・オブジェクトから演算子への同期化、または演算子からワークスペース・オブジェクトへの同期化のいずれかも選択します。

  4. (オプション)「拡張」をクリックして「一致方針」を設定します。

    「一致方針」の使用方法を参照するには、「ヘルプ」を選択します。

  5. 「OK」をクリックします。

ワークスペース・オブジェクトから演算子への同期化

マッピング・エディタでは、次のような理由により、ワークスペース・オブジェクトから演算子への同期化を実行できます。

  • 手動による変更の伝播: ワークスペース・オブジェクトの変更を関連する演算子に伝播します。ワークスペース・オブジェクトの変更には、構造的な変更、属性名の変更、属性のデータ型の変更などがあります。ワークスペース・オブジェクトの変更を複数のマッピングに自動的に伝播する方法は、Warehouse Builderのオンライン・ヘルプを参照してください。

  • 演算子と新規ワークスペース・オブジェクトの同期化: たとえば、あるバージョンのデータ・ウェアハウスから後のバージョンのデータ・ウェアハウスにマッピングを移行し、バージョンごとに異なるオブジェクト定義を維持する場合は、演算子と新規のワークスペース・オブジェクトを関連付けることができます。

    図5-8 異なるワークスペース・オブジェクトからの同期化

    この図については、図の前後のテキストを参照してください。
    「図5-8 異なるワークスペース・オブジェクトからの同期化」の説明

  • 表によるマッピングのプロトタイプ作成: 設計環境で作業している場合は、表を使用したETLロジックの設計を選択できます。ただし、本番環境では、他のワークスペース・オブジェクト・タイプ(ビュー、マテリアライズド・ビュー、キューブなど)に基づいたマッピングが可能です。

ワークスペース・オブジェクトに基づく演算子の同期化

表5-1に、演算子および同期化できるワークスペース・オブジェクトのタイプを示します。

表5-1 ワークスペース・オブジェクトと同期化される演算子

同期対象: 演算子 同期基準: ワークスペース・オブジェクトのタイプ

キューブ

表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ

ディメンション

表、外部表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ

外部表

表、外部表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ

フラット・ファイル

表、外部表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ

キー参照

表のみ

マテリアライズド・ビュー

表、外部表、ビュー、マテリアライズド・ビュー、ファイル、ディメンションおよびキューブ

マッピング後プロセス

変換のみ

マッピング前プロセス

変換のみ

順序

順序のみ

表、外部表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ

変換

変換のみ

ビュー

表、外部表、ビュー、マテリアライズド・ビュー、ファイル、ディメンションおよびキューブ


外部表演算子から同期化するとき、Warehouse Builderは、関連付けられたフラット・ファイルではなく、ワークスペース外部表のみに基づいて演算子を更新することに注意してください。

演算子からワークスペース・オブジェクトへの同期化

マッピングの演算子を変更した場合は、それらの変更をワークスペース・オブジェクトに伝播する必要があります。同期化によって、表、ビュー、マテリアライズド・ビュー、変換およびフラット・ファイルの各演算子の変更を伝播できます。

次のような理由により、演算子からワークスペース・オブジェクトへの同期化を実行します。

  • 変更の伝播: 演算子の変更を関連するワークスペース・オブジェクトに伝播します。演算子または属性のビジネス名を変更すると、Warehouse Builderによってそのビジネス名の最初の30文字がバウンド名として伝播されます。

  • ワークスペース・オブジェクトの置換: 同期化により、既存のワークスペース・オブジェクトを置換します。

演算子からの同期化は、他の演算子とワークスペース・オブジェクトとの依存関係には影響を与えません。