Warehouse Builderでデータ・オブジェクトの定義を作成およびインポートした後は、データをソースからターゲットに移動する抽出、変換およびロード(ETL)の各操作を設計できます。Warehouse Builderでは、マッピングを使用してこれらの操作を設計します。
この章では、マッピングの作成、編集および使用方法に関する次のトピックについて説明します。
前提作業
最初に、定義されたロケーションを持つウェアハウス・ターゲット・モジュールがプロジェクトに含まれているか確認します。
さらに、マッピングでソースまたはターゲットとして使用するすべての既存のデータをインポートします。
マッピングを定義するには、次の各項を参照してください。
フラット・ファイルから抽出するか、フラット・ファイルにロードするマッピングを設計するには、「マッピングにフラット・ファイルのソースまたはターゲットを使用する手順」を参照してください。
PL/SQLマッピングの場合は、「PL/SQLマッピング設計のベスト・プラクティス」も参照してください。
マッピング・デザインに問題がない場合、ツールバーの「生成」アイコンを選択してコードを生成します。
後続の手順
マッピングを設計してマッピングのコードを生成した後、プロセス・フローを作成するか、直接配布を続行して実行できます。
プロセス・フローを使用して、マッピングを相互に関連付けます。たとえば、あるマッピングが完了すると電子メール通知がトリガーされて別のマッピングが開始するように、プロセス・フローを設計できます。詳細は、「プロセス・フローの設計」を参照してください。
マッピングおよび作成した関連プロセス・フローを配布し、「ターゲット・スキーマへの配布およびETLロジックの実行」の説明に従って、マッピングを実行します。
マッピングには、フラット・ファイル演算子をソースまたはターゲットとして使用できますが、ソースとターゲットの両方のフラット・ファイル演算子は混在できません。既存のフラット・ファイルからファイル定義をインポートし、そのデータをソースまたはターゲットとしてマッピングで使用できます。または、マッピング・エディタでユーザー独自のフラット・ファイル定義を作成し、データを新しいフラット・ファイル・ターゲットにロードできます。
新規フラット・ファイル・ターゲットの作成
ターゲット用の新規フラット・ファイル定義を作成する手順は、次のとおりです。
まだフラット・ファイル・モジュールを作成していない場合は、ここで作成します。
フラット・ファイル・モジュールは、後述されている手順で物理フラット・ファイルを作成する際に必要です。
「マッピングの作成」の説明に従って、マッピング定義を作成します。
フラット・ファイル演算子をキャンバスにドラッグ・アンド・ドロップします。
「フラット・ファイル演算子の追加」ダイアログ・ボックスで、「バインドされていない演算子を属性なしで作成」オプションを選択し、新しいターゲット演算子に名前を割り当てます。
「演算子の編集」の説明に従って、新しい演算子を編集します。
この時点で、フラット・ファイルを表す演算子は定義しましたが、実際のフラット・ファイル・ターゲットは作成していません。
データベースにフラット・ファイルを作成するには、演算子を右クリックして「作成とバインド」を選択します。
フラット・ファイル・モジュールの選択を要求するダイアログ・ボックスが表示され、そこでフラット・ファイルに一意の名前を指定できます。「OK」をクリックすると、プロジェクト・エクスプローラの(指定したモジュールの下の)「ファイル」ノードに新しいターゲットが表示されます。
「マッピングを定義する手順」の説明に従って、マッピングの定義を続行します。
既存のフラット・ファイルに基づくソースまたはターゲットの作成
既存のフラット・ファイルをソースまたはターゲットとして使用する手順は、次のとおりです。
プロジェクト・エクスプローラで、「ファイル」ノードを右クリックし、「新規」を選択します。「フラット・ファイル・モジュールの作成」の説明に従って、フラット・ファイル・モジュールを作成します。
「フラット・ファイルからの定義のインポート」の説明に従って、フラット・ファイル・モジュールを右クリックして、「インポート」を選択して、ファイル定義をインポートします。
ファイルをソースとして使用するか、ターゲットとして使用するかを決定します。
ターゲットとして使用するファイルをインポートする場合は、Warehouse Builderによりマッピングに対してPL/SQLコードが生成されます。「フラット・ファイル・ターゲット演算子」で詳細を確認し、ステップ7に進みます。
ソースとして使用するファイルをインポートする場合は、SQL* Loaderを使用してファイルのフラット構造を保持するか、外部表を介してPL/SQLフォーマットでデータを表現するかを決定する必要があります。次のステップに進みます。
「外部表演算子とフラット・ファイル演算子」を参照し、マッピングに使用する演算子のタイプを決定します。
外部表演算子を選択する場合は、次のステップに進みます。
フラット・ファイル演算子を選択する場合は、ステップ7に進みます。
「新規外部表定義の作成」の説明に従って、外部表を作成します。
プロジェクト・エクスプローラで、外部表を右クリックして「構成」を選択します。「データファイル」ノードで、右クリックして「作成」を選択します。
外部表がデータを継承するフラット・ファイルの名前を入力します。ファイル名とファイル拡張子を入力します(例: myflatfile.dat)。
フラット・ファイル演算子または外部表演算子をキャンバスにドラッグ・アンド・ドロップします。
「演算子の追加」ダイアログ・ボックスで、「既存リポジトリ・オブジェクトから選択してバインド」オプションを選択します。
これで、マッピングの設計を続行できるようになりました。
マッピングを作成する手順は、次のとおりです。
プロジェクト・エクスプローラの「マッピング」ノードにナビゲートします。このノードは、ウェアハウス・ターゲット・モジュールの下、「データベース」フォルダの下の「Oracle」フォルダにあります。
「マッピング」を右クリックして「新規」を選択します。
「マッピングの作成」ダイアログ・ボックスが開きます。
新しいマッピングの名前と説明(オプション)を入力します。
マッピング名の指定と説明の記述に関するルールは、「マッピングでのネーミング規則」を参照してください。
「OK」をクリックします。
マッピングの定義が保存され、その名前がプロジェクト・エクスプローラ内に挿入されます。そのマッピングに対してマッピング・エディタが開き、タイトル・バーにマッピングの名前が表示されます。
以前に作成したマッピングを開く手順は、次のとおりです。
プロジェクト・エクスプローラでウェアハウス・ターゲット・モジュールを「データベース」フォルダに指定して、次に「Oracle」フォルダに指定します。
「マッピング」ノードを開きます。
次のいずれかの方法で、マッピング・エディタを開きます。
マッピングをダブルクリックします。
マッピングを選択し、「編集」メニューから「エディタを開く」を選択します。
マッピングを選択し、[Ctrl]キーを押しながら[O]キーを押します。
マッピングを右クリックし、「エディタを開く」を選択します。
マッピング・エディタが表示されます。
注意: OMB Plusを使用して作成されたマッピングを開く場合に、複数の演算子を含むマッピングであるにもかかわらず、1つの演算子のみを含むように表示されることがあります。すべての演算子を表示するには、マッピング・エディタのツールバーで「自動レイアウト」アイコンをクリックします。 |
マッピング・エディタを初めて開くと、左側にメニュー・バー、複数のツールバー、複数のウィンドウ、右側にキャンバスが表示されます。
図16-1に、マッピング・エディタのキャンバスを示します。
標準エディタ・コンポーネント
マッピング・エディタには、Warehouse Builderのほとんどのエディタに共通する、次の標準コンポーネントがあります。
タイトル・バー: タイトル・バーはエディタの最上部にあり、マッピング名とマッピングについて付与されているアクセス権限が表示されます。
メニュー・バー: タイトル・バーの下に、エディタ・コマンドへのアクセスを提供するメニュー・バーがあります。メニュー・バーにアクセスするには、オプションの1つをクリックするか、ホット・キーを使用します。たとえば、「マッピング」メニューにアクセスするには、[Alt]を押しながら[M]を押します。
ツールバー: メニュー・バーの下に、よく使用するコマンドのアイコンを示すツールバーが表示されます。
キャンバス: キャンバスには、マッピングを設計および変更するためのワークエリアがあります。
インジケータ・バー: エディタの下端に、モード・アイコン、インジケータおよび説明が表示されます。
図16-2に、マッピング・エディタのインジケータ・バーを示します。
左隅には、ネーミング・モード、改名モード、読取り/書込み、検証モードが表示されます。
右隅には、倍率インジケータとナビゲーション・モードが表示されます。この図では、倍率は100%で、ナビゲーション・モードは「モードの選択」に設定されています。
マウスをウィンドウの境界に置き、双方向矢印が表示された時点でマウス・ボタンを押し、マウスをドラッグして必要なサイズを指定すると、ウィンドウのサイズを変更できます。
マウスをタイトル・バーに置き、目的の場所にドラッグして、ウィンドウを移動します。
ウィンドウを表示または非表示にするには、メニュー・バーから「ウィンドウ」を選択し、ウィンドウに対応するチェック・マークをアクティブ化または非アクティブ化します。
エディタを初めて起動するときは、Warehouse Builderの左上隅にエディタのエクスプローラが表示されます。エクスプローラには、キャンバス上の全アクティビティとそのパラメータをリストするツリーが表示されます。キャンバスでアクティビティを選択すると、Warehouse Builderではエクスプローラ上でそのアクティビティにナビゲートします。
エディタを初めて起動するときは、Warehouse Builderの左下隅にプロパティ・インスペクタが表示されます。プロパティ・インスペクタには、マッピングのプロパティ、演算子および演算子の属性が表示されます。キャンバスまたはエクスプローラからオブジェクトを選択すると、そのプロパティがプロパティ・インスペクタに表示されます。
エディタを初めて起動するときは、Warehouse Builderにより左側にパレットが表示されます。パレットには、キャンバスにドラッグ・アンド・ドロップできる演算子が含まれています。パレットは、エディタ上のどこにでも再配置できます。メニュー・バーの「表示」の下に表示される演算子パレットをクリックして、パレットの表示または非表示を選択できます。
「鳥瞰図」では、1回のマウス・ドラッグ操作でキャンバスのビューを移動できます。つまり、スクロール・バーを使用せずにキャンバスのビューを再配置できます。
「鳥瞰図」には、キャンバス全体のミニチュア版が表示されます。青いボックスがあり、キャンバスで現在フォーカスが置かれている部分が表されます。キャンバス・サイズよりも大きく広がっているマッピングの場合は、青いボックスをクリックしてキャンバス上でフォーカスを置く部分にドラッグできます。
「生成」パネルには、データ・オブジェクトの生成結果と検証結果が表示されます。最初にエディタ・ウィンドウを開いた時点では、このパネルは非表示になっており、データ・オブジェクトを初めて生成または検証すると表示されます。「生成」パネルの表示と非表示は、エディタ・メニューから「ウィンドウ」→「生成結果」を選択して切り替えることができます。
生成ウィンドウには、「スクリプト」および「メッセージ」という2つのタブがあります。「スクリプト」タブには、キャンバスで選択したデータ・オブジェクトを実装するための生成済スクリプトが表示されます。「メッセージ」タブには、選択したデータ・オブジェクトに関する検証メッセージが表示されます。メッセージをダブルクリックすると、メッセージ・テキスト全体を表示できます。
マッピング・エディタには、タスク指向のツールバー(一般、グラフィック、生成およびパレット)があります。デフォルトでは、パレット以外のツールバーはメニュー・バーの下に表示されます。各ツールバーは、移動、サイズ変更または非表示にできます。
一般ツールバー: このツールバーを使用して、すべて保存、ダイアグラムのエクスポート、検証、生成および印刷など、一般的な操作を起動します。
ダイアグラム・ツールバー: このツールバーを使用してキャンバスにナビゲートし、キャンバス上のオブジェクトの倍率を変更します。
デバッグ・ツールバー: このツールバーを使用して、マッピングをデバッグするためのコマンドを起動します。
パレット・ツールバー: パレットには演算子アイコンが表示されます。演算子を挿入するには、演算子アイコンをマッピング・エディタのキャンバスにドラッグします。Warehouse Builderには50を超える演算子があるため、タイプに応じて演算子を分類して表示することが必要な場合があります。
メニュー・バーから「表示」を選択し、「オプション」を選択することにより、エディタがキャンバスにマッピングを表示する形式を制御できます。マッピング・エディタのキャンバスの表示オプションの設定が可能な「オプション」ダイアログ・ボックスが表示されます。
「オプション」ダイアログ・ボックスには、次のオプションがあります。これらのオプションを選択するか、選択を解除できます。
入力コネクタ: このオプションを選択すると、入力属性として使用可能な属性の左に、矢印アイコンが表示されます。
キー・インジケータ: このオプションを選択すると、演算子の外部キー属性である属性の左に、キー・アイコンが表示されます。
データ型: このオプションを選択すると、すべての演算子に、属性のデータ型が表示されます。
出力コネクタ: このオプションを選択すると、出力属性として使用可能な属性の右に、矢印アイコンが表示されます。
水平スクロールを有効化: このオプションを選択すると、演算子の水平スクロールが有効になります。
自動レイアウト: このオプションを選択すると、マッピングの自動レイアウトを使用できます。
演算子をマッピングに追加する手順は、選択する演算子のタイプによって異なります。これは、一部の演算子はワークスペース・オブジェクトにバインドされ、その他の演算子はバインドされないためです。一般的に、データ・ソースまたはターゲット演算子を追加すると、Warehouse Builderワークスペースのそのオブジェクトのバージョンと、マッピング・エディタ用の個別のバージョンが維持されます。たとえば、表演算子をマッピングに追加した場合は、その表のコピーがワークスペースで維持されます。個々のバージョンは、1つにバインドされます。つまり、マッピングのバージョンがワークスペースのバージョンにバインドされます。
2つのバージョンを区別するために、この章では、ワークスペース内のオブジェクトを総称的にワークスペース・オブジェクトと呼び、具体的には、ワークスペース表、ワークスペース・ビューのように表現します。また、マッピングの演算子は表演算子、ビュー演算子のように表現します。したがって、ディメンションをマッピングに追加する場合、マッピングのディメンションはディメンション演算子、ワークスペースのディメンションはワークスペース・ディメンションと表されます。
Warehouse Builderでは、ユーザーがワークスペース・オブジェクトの定義の変更を同期化できるように、一部の演算子の個々のワークスペース・オブジェクトがメンテナンスされます。たとえば、ワークスペース表の新規メタデータ定義を再インポートした場合は、これらの変更内容をマッピングの表演算子に伝播する必要があります。反対に、マッピングの表演算子を変更した場合は、これらの変更内容を関連するワークスペース表に伝播する必要があります。これらのタスクは、同期化と呼ばれる処理によって実現します。Warehouse Builderでは、自動的に同期化(Oracle Warehouse Builderインストレーションおよび管理ガイドのメタデータ依存性の管理に関する項を参照)またはマッピング・エディタから手動で同期化(「演算子とワークスペース・オブジェクトの同期化」を参照)できます。
演算子をマッピングに追加する手順は、次のとおりです。
マッピング・エディタを開きます。
「マッピング」メニューから「追加」を選択し、演算子を選択します。または、パレットからマッピング・エディタのキャンバスに演算子のアイコンをドラッグ・アンド・ドロップします。
ワークスペース・オブジェクトにバインドできる演算子を選択すると、マッピング・エディタに「マッピング<演算子名>の追加」ダイアログ・ボックスが表示されます。このダイアログ・ボックスの使用方法の詳細は、「「演算子の追加」ダイアログ・ボックス」を参照してください。
ワークスペース・オブジェクトにバインドできない演算子を選択した場合は、演算子を作成するためのウィザードまたはダイアログ・ボックスが表示されます。
Warehouse Builderに表示される指示に従い、「OK」をクリックします。
マッピング・エディタのキャンバスに演算子が最大化された状態で表示されます。左上隅に演算子名が表示され、各属性名およびデータ型を確認できます。演算子を最小化するには、右上隅の矢印をクリックすると、マッピング・エディタのキャンバスに演算子がアイコンとして表示されます。
「演算子の追加」ダイアログ・ボックスを使用して、ワークスペース内で次の演算子を関連するオブジェクトにバインドできます。
キューブ演算子
ディメンション演算子
外部表演算子
フラット・ファイル演算子
マテリアライズド・ビュー演算子
マッピング前プロセス演算子
マッピング後プロセス演算子
順序演算子
表演算子
変換演算子
ビュー演算子
ワークスペース・オブジェクトにバインドできる演算子を追加すると、マッピング・エディタに「<演算子名>演算子の追加」ダイアログ・ボックスが表示されます。次のオプションから1つ選択します。
このオプションは、マッピング・エディタを使用して、新規ステージング領域表や新規ターゲット表など、新しいワークスペース・オブジェクトを定義する場合に使用します。
「バインドされていない演算子を属性なしで作成」を選択した後、新しいオブジェクトの名前を入力します。演算子がキャンバスに表示されます。ただし、属性は表示されません。
これで、演算子の属性を追加および定義できるようになりました(「演算子の編集」を参照)。次に、ターゲット・モジュールに新規ワークスペース・オブジェクトを作成するために、演算子を右クリックして「作成とバインド」を選択します。
このオプションをマッピング設計で使用する方法の例は、「例: マッピング・エディタによるステージング領域表の作成」を参照してください。
このオプションは、ワークスペース内の定義済またはインポート済のオブジェクトに基づいて、演算子を追加する場合に使用します。
接頭辞を入力してオブジェクトを検索するか、選択したモジュール内のオブジェクトの表示リストからオブジェクトを選択します。
複数のアイテムを選択するには、[Ctrl]キーを押しながら各アイテムをクリックします。連続したアイテムのグループを選択するには、選択範囲の最初のオブジェクトをクリックし、[Shift]キーを押しながら最後のオブジェクトをクリックします。
演算子は、マッピングと同じモジュール内のワークスペース・オブジェクトまたは別のモジュールのワークスペース・オブジェクトに基づいて追加できます。別のモジュールのワークスペース・オブジェクトを選択すると、マッピング・エディタによってコネクタが作成されます(コネクタが存在していない場合)。このコネクタによって、マッピングのロケーションとワークスペース・オブジェクトのロケーション間のデータの移動パスが確立されます。
各演算子には、エディタが関連付けられています。その演算子エディタを使用して、演算子、グループおよび属性に関する一般的な情報と構造的な情報を指定します。演算子エディタでは、グループおよび属性を追加または削除したり、名前を変更できます。演算子の名前も変更できます。
演算子の編集は、ロード・プロパティや条件付き動作の割当てとは異なります。ロード・プロパティや条件付き動作を指定するには、プロパティ・ウィンドウ(「演算子、グループおよび属性プロパティの設定」を参照)を使用します。
演算子、グループまたは属性を編集する手順は、次のとおりです。
マッピング・エディタのキャンバスから演算子を選択します。
あるいは、演算子内のグループまたは属性を選択します。
選択したアイテムを右クリックし、「詳細をオープン」を選択します。
マッピング・エディタに演算子エディタが表示され、「名前」タブ、「グループ」タブ、および各タイプの演算子のグループの「入力/出力」タブが表示されます。
いくつかの演算子には追加のタブが含まれます。たとえば、Match-Merge演算子には一致ルールおよびマージ・ルールを定義するタブが含まれます。
各タブに表示されるプロンプトに従い、「OK」をクリックして終了します。
「名前」タブには、演算子名と説明(オプション)が表示されます。ここでは、演算子の名前を変更したり、説明を追加したりすることができます。「マッピングでのネーミング規則」にリストされている規則に従って、演算子に名前を付けてください。
「グループ」タブで、グループ情報を編集します。
各グループには、名前、方向および説明(オプション)が表示されます。ほとんどの演算子のグループ名は変更できますが、どの演算子の場合もグループの方向は変更できません。グループの方向には、「入力」、「出力」、「入力/出力」のいずれかを指定できます。
演算子によっては、「グループ」タブでグループを追加および削除できます。たとえば、入力グループを「ジョイナ」に、出力グループを「スプリッタ」に追加できます。
演算子エディタには、「グループ」タブに表示されているグループのタイプごとに、タブが1つずつ表示されます。これらのタブには、属性名、データ型、長さ、精度、スケール、秒精度および説明(オプション)が表示されます。
残りのそれぞれのタブで、属性情報を編集します。
図16-3は、演算子エディタの「入力/出力」タブを示します。この例では、演算子として表を選択しているので、「入力/出力」タブのみが表示されます。他の演算子では、「入力」タブや「出力」タブが表示される可能性もあります。
属性は追加、削除および編集できます。マッピング・エディタでは、編集できないプロパティはグレー表示されます。たとえば、データ型がNUMBER
の場合、精度とスケールは編集できますが、長さは編集できません。
属性のデータ型、長さ、精度およびスケールに正しい値を割り当てるには、PL/SQLルールに従います。演算子を同期化すると、Warehouse BuilderではSQLルールに基づいて属性がチェックされます。
マッピング・エディタでのオブジェクトのネーミング規則は、ネーミング・プリファレンスで選択するネーミング・モードに応じて異なります。Warehouse Builderでは、ワークスペース内のオブジェクトごとにビジネス名と物理名が維持されます。ビジネス名とは、説明的なビジネス名です。物理名は、Warehouse Builderでコード生成時に使用される名前です。
一方のネーミング・モードで作業中にオブジェクト名を指定すると、Warehouse Builderでは他方のモード用にデフォルト名が作成されます。したがって、ビジネス名モードで作業中に、大/小文字の両方、特殊文字および空白を含むマッピング名を割り当てると、Warehouse Builderではデフォルトの物理名が作成されます。たとえば、マッピングをMy Mapping (refer to doc#12345)というビジネス名で保存すると、デフォルトの物理名はMY_MAPPING_REFER_TO_DOC#12345となります。
マッピング・エディタでオブジェクトに名前を付けたり、名前を変更したりするときは、次のネーミング規則に従います。
マッピングのネーミングと説明
物理ネーミング・モードでは、マッピング名は1文字から30文字までの英数字で、空白は使用できません。ビジネス・ネーミング・モードでは、2,000文字以内という制限があり、空白と特殊文字を使用できます。両方のネーミング・モードにおいて、名前はプロジェクト全体で一意にする必要があります。
マッピングのスケジューリングに関する注意: マッピングの実行をスケジューリングする場合は、付加的な考慮事項があります。スケジューリングするETLオブジェクトの物理名は25文字以内、ビジネス名は1995文字以内に制限されます。この付加的な制限に従うと、Warehouse Builderでは、接尾辞_jobと配布および実行に必要な他の内部文字をマッピング名に追加できます。
マッピング定義の作成後、マッピング・プロパティ・シートで物理名とビジネス名を確認できます。デザイン・センターからマッピングを右クリックし、「プロパティ」を選択して「一般」タブで名前を表示します。
必要に応じてマッピングの説明を編集します。説明は2文字から2,000文字の英数字を使用でき、空白を含めることができます。
属性およびグループのネーミング規則
ソースに依存しないグループおよび属性は名前を変更できます。属性名とグループ名は論理名です。通常、オブジェクトの属性名はバインド先演算子の属性名と同じですが、そのプロパティは相互に独立した状態で維持されます。これにより、属性を演算子内で操作した場合に、属性の表現または使用が損われるのを防ぐことができます。
演算子のネーミング規則
演算子のビジネス名は、次の要件を満たす必要があります。
使用できる文字数は200文字以内です。
属性グループ内、属性内、および親に対する表示セット・レベル内で一意である必要があります。
物理名は次の要件を満たす必要があります。
演算子以外のすべてのオブジェクトには30文字まで含めることができます。ただし、Warehouse BuilderではOMBスクリプト言語を介したナビゲート用に2文字が予約されているため、演算子の上限は28文字です。
演算子名は、グループ内、属性内、および親に対する表示セット・レベル内で一意である必要があります。
演算子名は、Oracle Database SQL言語リファレンスで定義されている基本要素の構文規則に準拠している必要があります。
一部の演算子には、物理名とビジネス名の他にバウンド名もあります。ワークスペース・オブジェクトに関連付けられている各演算子には、バウンド名があります。コード生成時、Warehouse Builderではバウンド名を使用し、演算子をそのワークスペース・オブジェクトに対して参照します。バウンド名には、次のような特性があります:
バウンド名は一意である必要はありません。
バウンド名は、一般的なWarehouse Builderの物理ネーミング規則に準拠している必要があります。
通常、バウンド名を直接変更するのではなく、演算子をワークスペースに対して同期化することで間接的に変更します。
演算子または属性のビジネス名を変更する場合、Warehouse Builderにより、同期化するときに新しいビジネス名がバウンド名として伝播されます。ただし、ビジネス名には200文字まで使用できますが、バウンド名は30文字に制限されています。そのため、Warehouse Builderではビジネス名の最初の30文字がバウンド名用に使用されます。
表示セットは、属性のサブセットのグラフィック表現です。表示セットを使用して、演算子に表示される属性の数を制限し、複合マッピングの表示を単純化します。
デフォルトで、演算子には「すべて」、「マップ済」および「アンマップ」という3つの事前定義済表示セットが含まれています。表16-1で、デフォルトの表示セットについて説明します。
表16-1 デフォルトのセット
表示セット | 説明 |
---|---|
すべて |
演算子にすべての属性が含まれています。 |
MAPPED |
別の演算子に接続されている演算子の属性のみが含まれています。 |
UNMAPPED |
他の属性に接続されていない属性のみが含まれています。 |
マッピング内の任意の演算子に対して、表示セットを定義できます。
表示セットを定義する手順は、次のとおりです。
演算子を右クリックして「表示セット」を選択します。
図16-4のような「表示セット」ダイアログ・ボックスが表示されます。
「UNMAPPED」の下の行をクリックし、新規表示セットの名前と説明を入力します。
「選択された表示セットの属性」に、演算子に使用できるすべての属性が表示されます。「タイプ」列は自動的にユーザー定義に設定されます。
定義済の属性セットは編集および削除できません。
「挿入」列で、表示セットに含める属性を選択します。
すべての属性を指定するには「すべて選択」を、すべての属性を除外するには「すべて選択解除」をクリックします。
「OK」をクリックします。
演算子のグループには、表示用に選択した属性セットに含まれる属性のみがリストされます。
マッピング・ソース演算子、データを変換する演算子およびターゲット演算子を選択した後は、これらの演算子を接続できます。データ・フローの接続により、ソースから演算子を通過してターゲットに至るデータ・フローの様子が視覚的に表されます。
演算子は、次のいずれかの方法で接続できます。
属性の接続: 一度に個々の演算子属性を相互に接続します。
グループの接続: 2つのグループ間ですべての属性を接続するための条件を定義します。
演算子ウィザードの使用: ピボット演算子、Name and Address演算子などの演算子は、ウィザードを使用してデータ・フロー接続を定義できます。
一方の演算子の単一の出力属性から、他方の演算子の単一の入力属性に線を引きます。
属性を接続する手順は、次のとおりです。
マウス・ボタンをクリックしたまま、ポインタを出力属性の上に置きます。
出力属性からデータのフロー先となる入力属性にマウスをドラッグします。
マウスをドラッグするとき、接続を示す行がマッピング・エディタ・キャンバスに表示されます。
入力属性の上でマウス・ボタンを放します。
ステップ1から3を繰り返し、必要なデータ・フロー接続をすべて作成します。
図16-5は、属性が接続されたマッピングを示しています。
属性を接続するときは、次のルールに留意します。
同じ入力属性には2度接続できません。
同じ演算子内の属性には接続できません。
入力専用の属性から接続することも、出力専用の属性に接続することもできません。
確立されているカーディナリティに矛盾する方法では演算子を接続できません。かわりに、ジョイナ演算子を使用します。
グループを接続すると、属性が自動的にコピーされるか、詳細情報を入力するように指示されます(「演算子を接続するダイアログ・ボックスの使用」を参照)。
既存の属性を持たないターゲット・グループに接続すると、属性が自動的にコピーされ、各属性が接続されます。これは、「例: マッピング・エディタによるステージング領域表の作成」に示すようなマッピングを設計する場合に便利です。
マッピング・エディタでバインドされていない表演算子を使用すると、ステージング領域表をすばやく作成できます。
次の手順は、既存のソース表に基づいてステージング表を作成する方法を示しています。この手順は、ビュー、マテリアライズド・ビュー、フラット・ファイルおよび変換の作成にも使用できます。
ソース表をステージング表にマップする手順は、次のとおりです。
マッピング・エディタで、ソース表を追加します。
メニュー・バーから「マッピング」、「追加」、「データ・ソース/ターゲット」の順に選択します。「データ・ソース/ターゲット」メニューで、「表演算子」を選択します。
「表演算子の追加」ダイアログ・ボックスを使用して、マッピング内のソース表の演算子を選択およびバインドします。「表演算子の追加」ダイアログ・ボックスから、「バインドされていない演算子を属性なしで作成」を選択します。
このマッピングは、図16-6のソース表と属性を持たないステージング領域表に類似しています。
ソース演算子のグループにマウス・ポインタを置き、マウス・ボタンを押したままにします。
ステージング領域表グループまでマウスをドラッグします。
ソース属性がステージング領域表にコピーされ、2つの演算子が接続されます。
マッピング・エディタでは、マッピングに追加したバインドされていない表を選択します。右クリックして「作成とバインド」を選択します。
Warehouse Builderにより、「作成とバインド」ダイアログ・ボックスが表示されます。
「作成場所」フィールドに、表を作成するターゲット・モジュールを指定します。
指定したターゲット・モジュールに新しい表が作成されます。
ある演算子を、既存の属性を持つターゲット演算子に接続する場合、マッピング・エディタにより「演算子の接続」ダイアログ・ボックスが表示されます。
次の基準のいずれかを選択して、属性をコピーおよび接続します。
3つのオプションのいずれかを選択してから、「実行」を選択します。「演算子の接続」ダイアログ・ボックスに接続済属性のリストが表示されます。
図16-7に、「接続属性」セクションを示します。
属性の選択を解除するには、「マップ」チェック・ボックスの選択を解除します。「コメント」に選択の結果が表示されます。
「OK」を選択すると、Warehouse Builderにより、ソース属性はターゲット・グループにコピーされ、属性に接続します。
このオプションは、属性がすでに設定されているターゲット・グループにソース属性をコピーする場合に使用します。「演算子の接続」ダイアログ・ボックスでの選択内容に基づいて、ソース属性から新しいターゲット属性に演算子が接続されます。この操作は、ディメンション・ターゲット演算子やキューブ・ターゲット演算子など、新しい入力属性を受け入れないターゲット・グループには実行されません。
このオプションは、各グループ内の属性の位置に基づいて、既存の属性間を接続する場合に使用します。ターゲットのすべての属性が一致している場合、ソース属性とターゲット属性は同じ順序になります。ソース演算子にターゲットよりも多くの属性が含まれている場合、残りのソース属性はターゲットに接続されません。
このオプションは、名前が一致する属性間を接続する場合に使用します。オプションのリストから選択することで、完全には一致しない双方の名前を接続します。次のオプションを組み合せて使用できます。
大/小文字の違いを無視: 小文字と大文字が同じ文字とみなされます。たとえば、属性FIRST_NAMEとFirst_Nameは一致と判断されます。
特殊文字を無視: 一致を処理する際に無視する文字を指定します。たとえば、ハイフンとアンダースコアを指定すると、属性FIRST_NAME、FIRST-NAME、FIRSTNAMEはすべて一致と判断されます。
ソースの接頭辞を無視、ソースの接尾辞を無視、ターゲットの接頭辞を無視、ターゲットの接尾辞を無視: 一致を処理する際に無視する接頭辞と接尾辞を指定します。たとえば、「ソースの接頭辞を無視」を選択してテキスト・フィールドにUSER_を入力すると、ソース属性USER_FIRST_NAMEとターゲット属性FIRST_NAMEは一致と判断されます。
一致条件を設定した後、「実行」をクリックします。
属性間に考えられる接続が「表示マッピング」フィールドに表示されます。この接続は、実装する前に確認して、選択を解除できます。
マッピングのデータ・フローを再使用するには、再使用するデータ・フローの一部の周囲にプラッガブル・マッピングを作成します。プラッガブル・マッピングは、単一の演算子として機能するマッピング演算子の再使用可能なグループです。プラッガブル・マッピングは、プログラミング言語におけるファンクションの概念と似ており、ファンクションをグラフィカルに定義するための手段です。
注意: プラッガブル・マッピングを使用するには、Oracle Databaseライセンス情報で説明されているOracle Warehouse BuilderのEnterprise ETLオプションが必要です。 |
プラッガブル・マッピングは、定義した後、マッピング内でネストした単一のマッピング演算子として表示されます。プラッガブル・マッピングは、同じマッピング内またはその他のマッピング内で複数回再使用できます。プラッガブル・マッピングはその他のプラッガブル・マッピング内に含めることができます。
その他の演算子と同様、プラッガブル・マッピングには、様々なマッピング内のその他の演算子に接続するための入出力属性で構成されるシグネチャがあります。シグネチャは、プログラミング言語におけるファンクションの入出力要件と類似しています。
プラッガブル・マッピングは、再使用することや、埋め込むことができます。
プラッガブル・マッピングの再使用: プラッガブル・マッピングが参照するメタデータが該当するマッピングの外部に存在できる場合、プラッガブル・マッピングは再使用可能です。再使用可能なプラッガブル・マッピングは、プライベート使用のスタンドアロンのプラッガブル・マッピングとして格納するか、フォルダ(ライブラリ)に格納できます。これらのフォルダにアクセス権を持つユーザーは、プラッガブル・マッピングを作業用のテンプレートとして使用できます。
埋め込まれたプラッガブル・マッピング: プラッガブル・マッピングが参照するメタデータが該当するマッピングまたはプラッガブル・マッピングによって所有されている場合にのみ、プラッガブル・マッピングは埋め込まれます。埋め込まれたプラッガブル・マッピングは、スタンドアロン・マッピングとして、またはグローバル・エクスプローラのライブラリとして格納されることはありません。埋め込まれたプラッガブル・マッピングは、埋め込まれたプラッガブル・マッピングを所有しているマッピングまたはプラッガブル・マッピング内にのみ格納されます。埋め込まれたプラッガブル・マッピングには、マッピングを所有しているオブジェクトの編集によってのみアクセスできます。埋め込まれたプラッガブル・マッピングのコードを検証または生成するには、マッピングを所有しているオブジェクトのコードを検証または生成する必要があります。
プラッガブル・マッピングは、通常、必要に応じて事前に定義して使用されます。プラッガブル・マッピングは、マッピング・エディタを使用してマッピング内から、またはウィザードを使用してナビゲーション・ツリーから作成できます。ウィザードにはデフォルトが用意されている選択肢もあり、少ない選択肢でユーザーをガイドするため、プラッガブル・マッピングを速やかに作成できます。後でプラッガブル・マッピングのエディタから選択を追加できます。エディタには、すべての設定が一連のタブで表示されます。
ナビゲーション・ツリーの「プラッガブル・マッピング」ノードには、「スタンドアロン」と「プラッガブル・マッピング・フォルダ」の2つのノードがあります。これらのいずれかのノードでプラッガブル・マッピングを作成できます。
スタンドアロンのプラッガブル・マッピングを作成する手順は、次のとおりです。
プロジェクト・エクスプローラで「プラッガブル・マッピング」ノードを開きます。
「スタンドアロン」ノードを右クリックして「新規」を選択します。
プラッガブル・マッピングの作成ウィザードが開き、新規プラッガブル・マッピングの作成プロセスが順に示されます。ウィザードの各ページで入力する値の詳細は、「ヘルプ」をクリックしてください。
新規プラッガブル・マッピングを作成すると、プラッガブル・マッピングのエディタが開き、プラッガブル・マッピングの名前がタイトル・バーに表示されます。プラッガブル・マッピングのエディタはマッピング・エディタと似ており、必要な演算子をパレットから追加してマッピングを作成できます。
Warehouse Builderでは、プラッガブル・マッピングは演算子とみなされます。プラッガブル・マッピングは任意のマッピングに挿入できます。マッピング・エディタで、プラッガブル・マッピングをパレットからキャンバスにドラッグ・アンド・ドロップします。これにより、「プラッガブル・マッピングの追加」ダイアログ・ボックスが開きます。必要なプラッガブル・マッピングを選択して、マッピングに追加できます。
フォルダとは、プラッガブル・マッピングをグループ化するためのメカニズムです。プラッガブル・マッピングは非公開のままにしておくことも、フォルダ(ライブラリ)に配置して他のユーザーが設計作業時にアクセスできるように公開することもできます。プラッガブル・マッピングを格納する新規フォルダを作成する手順は、次のとおりです。
プロジェクト・エクスプローラで「プラッガブル・マッピング」ノードを開きます。
「プラッガブル・マッピング・フォルダ」を右クリックして「新規」を選択します。「プラッガブル・マッピング・フォルダの作成」ダイアログ・ボックスが開きます。
フォルダの名前を入力し、説明(オプション)を指定します。
「OK」をクリックしてフォルダを保存し、ウィザードを終了します。
プロジェクト・エクスプローラにフォルダが表示されます。「プラッガブル・マッピング・フォルダ」ノードを使用すると、フォルダ作成時とフォルダ作成後のどちらでもプラッガブル・マッピングを作成できます。プラッガブル・マッピングをツリー上の任意のフォルダに移動することもできます。
プラッガブル・マッピング・フォルダの作成時に、「プラッガブル・マッピング・ウィザードへ進む」オプションを選択すると、プラッガブル・マッピングの作成ウィザードが開くので、新規プラッガブル・マッピングを作成できます。
オプションを選択しないと、プラッガブル・マッピング・フォルダのみが作成されます。このフォルダの下にプラッガブル・マッピングを作成する手順は、次のとおりです。
「プラッガブル・マッピング・フォルダ」ノードの下で、このフォルダを右クリックし、「新規」を選択します。
プラッガブル・マッピングの作成ウィザードが開き、新規プラッガブル・マッピングの作成プロセスが順に示されます。
シグネチャは、プラッガブル・マッピングの入出力属性の組合せです。シグネチャ・グループは、入出力属性をグループ化するためのメカニズムです。
プラッガブル・マッピングには、少なくとも1つの入力または出力シグネチャ・グループが必要です。ほとんどのプラッガブル・マッピングは、論理フローの途中で使用され、入出力グループがあります。
追加のシグネチャ・グループを作成するには、「追加」をクリックします。グループに割り当てられているデフォルト名を上書きするには、「グループ」列でその名前を上書きします。「方向」列には、入力または出力グループとして方向を入力します。「説明」列には、グループの説明(オプション)を入力します。
シグネチャ・グループを削除するには、削除するグループを選択して「削除」をクリックします。
「次へ」をクリックしてウィザードを続行します。
入力シグネチャとは、プラッガブル・マッピングにフローする入力属性の組合せのことです。作成した入力シグネチャ・グループごとの入力属性を定義します。
複数の入力シグネチャ・グループを定義した場合は、属性を追加するグループを「グループ」リスト・ボックスから選択します。次に、「追加」をクリックして属性を追加します。各属性に指定されているデフォルト名を上書きするには、「属性」列でその名前を上書きします。各属性のデータ型を変更するには、属性のデフォルトのデータ型をクリックし、その結果表示されるドロップ・リストから新規のデータ型を選択します。長さ、精度、スケールおよび秒精度を割り当てるには、対応するフィールドをクリックし、上矢印と下矢印を使用するか、数値を入力します。これらのフィールドの一部は、指定したデータ型によっては無効になることに注意してください。
属性を削除するには、属性を選択して「削除」をクリックします。
「次へ」をクリックしてウィザードを続行します。
出力シグネチャとは、プラッガブル・マッピングからフローする出力属性の組合せのことです。作成した出力シグネチャ・グループごとの出力属性を定義します。
複数の出力シグネチャ・グループを定義した場合は、属性を追加するグループを「グループ」リスト・ボックスから選択します。次に、「追加」をクリックして属性を追加します。各属性に指定されているデフォルト名を上書きするには、「属性」列でその名前を上書きします。各属性のデータ型を変更するには、属性のデフォルトのデータ型をクリックし、その結果表示されるドロップ・リストから新規のデータ型を選択します。長さ、精度およびスケールを割り当てるには、対応するフィールドをクリックし、上矢印と下矢印を使用するか、数値を入力します。これらのフィールドの一部は、指定したデータ型によっては無効になることに注意してください。
属性を削除するには、属性を選択して「削除」をクリックします。
「次へ」をクリックしてウィザードを続行します。
プラッガブル・マッピング・エディタのパレットから「入力シグネチャ」または「出力シグネチャ」を追加することもできます。プラッガブル・マッピングは1つの「入力シグネチャ」および「出力シグネチャ」しか所持できません。また、プラッガブル・マッピングの「入力シグネチャ」および「出力シグネチャ」はプラッガブル・マッピング内でのみ追加できます。通常のマッピングには追加できません。
マッピング・キャンバスで空白を選択すると、エディタの左側にある「プロパティ・インスペクタ」にマッピング・プロパティが表示されます。マッピングについて次のプロパティを設定できます。
マッピングに1つのターゲットのみが含まれている場合、あるいはマッピングがSQL*LoaderまたはABAPマッピングの場合は、ターゲット・ロード順序が適用されません。デフォルトの設定を受け入れてマッピングの設計を続行してください。
複数のターゲットがあるPL/SQLマッピングを設計すると、Warehouse Builderにより、ターゲットをロードするデフォルトの順序が計算されます。ターゲット間に外部キー関連を定義すると、親の次に子をロードするデフォルトの順序が作成されます。外部キー関係を作成しない場合、またはターゲット表に再帰的な関連がある場合は、無作為な順序がデフォルトとして割り当てられます。
デフォルトのロード順序は、「ターゲット・ロード順序」プロパティを設定することで上書きできます。ターゲットの順序を変更する際に間違った変更を実行した場合は、「デフォルトにリセット」オプションを選択することで、デフォルトの順序に戻ります。
複数のターゲットのロード順序を指定する手順は、次のとおりです。
マッピング・キャンバスの空白をクリックすると、「マッピングのプロパティ」パネルの左上隅にマッピング・プロパティが表示されます。
マップ・ターゲットのロード順序プロパティに進み、このプロパティの右側にある省略記号ボタンをクリックします。
「ターゲット・ロード順序」ダイアログ・ボックスに、TARGET2ロードがTARGET1の前に表示されます。
図16-8に、「ターゲット・ロード順序」ダイアログ・ボックスを示します。
ロード順序を変更するには、ターゲットを選択し、右側のシャトル・ボタンを使用してリスト内でターゲットを上または下に移動します。
「デフォルトにリセット」ボタンは、ターゲット・ロード順序を再計算する場合に使用します。ターゲットの順序変更でエラーが発生した場合、または順序を割り当てた後に当初の順序が無効になるようなマッピングの設計変更があった場合は、再計算が必要になります。
キャンバスでオブジェクトを選択すると、エディタの左側にある「プロパティ」パネルに、関連するプロパティが表示されます。
次のタイプのプロパティを表示および設定できます。
演算子のプロパティ: これは演算子全体に影響を与えるプロパティです。設定できるプロパティは、演算子のタイプによって異なります。たとえば、Oracleソースおよびターゲット演算子の使用手順は、フラット・ファイルのソースおよびターゲット演算子の使用手順とは異なります。
グループのプロパティ: これは属性のグループに影響を与えるプロパティです。ほとんどの演算子には、グループのプロパティが設定されていません。グループ・プロパティが設定される演算子の例としては、スプリッタ演算子やデュプリケータ解除演算子があります。
属性のプロパティ: これはソース演算子とターゲット演算子の属性に関するプロパティです。属性のプロパティの例としては、データ型、精度、スケールがあります。
マッピングに使用する多くの演算子に対応する定義は、Warehouse Builderワークスペースにあります。これは、表およびビューの演算子などの、ソース演算子とターゲット演算子に該当します。また、順序および変換の演算子など、定義が複数のマッピングにまたがって使用される他の演算子にも該当します。これらの演算子を変更するときは、変更内容をワークスペース・オブジェクトに伝播させます。
変更の伝播方向は、次の選択肢から決定できます。
ワークスペース・オブジェクトから演算子への同期化: 本番環境でマッピングの使用を開始した後、ETL設計に影響するソースまたはターゲットが変更される場合があります。通常、このような変更を管理する最善の方法は、Oracle Warehouse Builderインストレーションおよび管理ガイドのメタデータ依存性の管理に関する項で説明するように、Warehouse Builderの依存性マネージャを使用することです。依存性マネージャを使用すると、変更による影響が自動的に評価され、影響を受けるすべてのマッピングがまとめて同期化されます。また、「ワークスペース・オブジェクトから演算子への同期化」の説明に従って、マッピング・エディタで、オブジェクトを手動で同期化することもできます。
演算子からワークスペース・オブジェクトへの同期化: マッピングの演算子を変更する場合は、変更内容を対応するワークスペース定義に伝播させます。たとえば、インポートしてマッピングに使用したソースの場合、属性に複合物理名が付いている場合があります。
次の方法で同期化できます。
演算子の同期化: 演算子を1つ選択し、指定したワークスペース・オブジェクトの定義と同期化できます。
同期化がリフレッシュとは異なることに注意してください。リフレッシュ・コマンドでは、マルチユーザー環境で他のユーザーが行った変更にあわせて、確実に最新の状態が保たれます。同期化では、対応するワークスペース・オブジェクトと演算子が照合されます。
演算子を同期化する手順は、次のとおりです。
マッピング・エディタのキャンバスで演算子を選択します。
「編集」メニューから、「同期化」を選択するか、演算子のヘッダーを右クリックして「同期化」を選択します。
「演算子の同期化」ダイアログ・ボックスが表示されます。
デフォルトでは、Warehouse Builderにより、選択した演算子とワークスペース内の関連するオブジェクトを同期化するためのオプションが選択されます。デフォルトを受け入れるか、リスト・ボックスから別のワークスペース・オブジェクトを選択します。
この手順で、インバウンド同期化またはアウトバウンド同期化を実行するかどうかも指定します。インバウンド同期化では、データ・オブジェクトがマッピング演算子と同期化されます。アウトバウンド同期化では、マッピング演算子がデータ・オブジェクトと同期化されます。
オプションで、「一致方針」および同期化方針を設定します。
「OK」をクリックします。
マッピング・エディタでは、次のような理由により、ワークスペース・オブジェクトから演算子への同期化を実行できます。
手動による変更の伝播: ワークスペース・オブジェクトの変更を、関連する演算子に伝播します。ワークスペース・オブジェクトの変更には、構造的な変更、属性名の変更、属性のデータ型の変更などがあります。ワークスペース・オブジェクトの変更を複数のマッピングに自動的に伝播する方法は、Oracle Warehouse Builderインストレーションおよび管理ガイドのメタデータ依存性の管理に関する項を参照してください。
演算子と新規ワークスペース・オブジェクトの同期化: たとえば、マッピングをデータ・ウェアハウスの特定のバージョンから新しいバージョンに移行し、各バージョンの別のオブジェクト定義を維持する場合、演算子と新規のワークスペース・オブジェクトを関連付けることができます。
表によるマッピングのプロトタイプ作成: 設計環境で作業している場合は、表を使用したETLロジックの設計を選択できます。ただし、本番環境では、他のワークスペース・オブジェクト・タイプ(ビュー、マテリアライズド・ビュー、キューブなど)に基づいたマッピングが可能です。
表16-2に、同期化できる演算子およびワークスペース・オブジェクトのタイプを示します。
表16-2 ワークスペース・オブジェクトと同期化される演算子
同期対象: 演算子 | 同期基準: ワークスペース・オブジェクトのタイプ |
---|---|
キューブ演算子 |
表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ |
ディメンション演算子 |
表、外部表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ |
外部表演算子 |
表、外部表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ |
フラット・ファイル演算子 |
表、外部表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ |
キー参照演算子 |
表のみ |
マテリアライズド・ビュー演算子 |
表、外部表、ビュー、マテリアライズド・ビュー、ファイル、ディメンションおよびキューブ |
マッピング後プロセス演算子 |
変換のみ |
マッピング前プロセス演算子 |
変換のみ |
順序演算子 |
順序のみ |
表演算子 |
表、外部表、ビュー、マテリアライズド・ビュー、フラット・ファイル、ディメンションおよびキューブ |
変換演算子 |
変換のみ |
ビュー演算子 |
表、外部表、ビュー、マテリアライズド・ビュー、ファイル、ディメンションおよびキューブ |
外部表演算子から同期化する場合は、ワークスペースの外部表のみに基づいて(関連するフラット・ファイルに基づくのではなく)演算子が更新されます。関連するフラット・ファイルに基づく外部表などの演算子を更新する方法は、外部表の定義とファイル内のレコードとの同期化を参照してください。
マッピングの演算子を変更した場合は、それらの変更をワークスペース・オブジェクトに伝播する必要があります。同期化によって、表、ビュー、マテリアライズド・ビュー、変換およびフラット・ファイルの各演算子の変更を伝播できます。
次のような理由により、演算子からワークスペース・オブジェクトへの同期化を実行します。
変更の伝播: 演算子の変更を関連するワークスペース・オブジェクトに伝播します。演算子または属性のビジネス名を変更すると、そのビジネス名の最初の30文字がバウンド名として伝播されます。
ワークスペース・オブジェクトの置換: 同期化により、既存のワークスペース・オブジェクトを置換します。
演算子からの同期化は、他の演算子とワークスペース・オブジェクトとの依存関係には影響を与えません。表16-3に、同期化に使用できる演算子をリストします。
表16-3 アウトバウンド同期化演算子
マッピング・オブジェクト | ワークスペース・オブジェクトの作成 | 変更の伝播 | ワークスペース・オブジェクトの置換 | 注意 |
---|---|---|---|---|
外部表 |
はい |
はい |
はい |
ワークスペースの外部表のみが更新され、その外部表に関連付けられているフラット・ファイルは更新されません。外部表の定義とファイル内のレコードとの同期化を参照してください。 |
フラット・ファイル |
はい |
はい |
いいえ |
シングル・レコード・タイプのフラット・ファイルに対してのみ、カンマ区切りの新しいフラット・ファイルが作成されます。既存のファイルは置換できません。 |
マッピング入力パラメータ |
はい |
はい |
はい |
入力属性とデータ型が入力パラメータとしてコピーされます。 |
マッピング出力パラメータ |
はい |
はい |
はい |
出力属性とデータ型がファンクションの戻り指定としてコピーされます。 |
マテリアライズド・ビュー |
はい |
はい |
はい |
属性とデータ型が列としてコピーされます。 |
表 |
はい |
はい |
はい |
属性とデータ型が列としてコピーされます。制約プロパティはコピーされません。 |
変換 |
はい |
はい |
はい |
該当なし |
ビュー |
はい |
はい |
はい |
属性とデータ型が列としてコピーされます。 |
「同期化プラン」ダイアログ・ボックスを使用して、選択したオブジェクトがWarehouse Builderによってどのように同期化されるかの詳細を表示および編集します。「一致方針」から選択した後、「リフレッシュ・プラン」をクリックして、Warehouse Builderで実行されるアクションを表示します。
同期化のコンテキスト内では、ソースは差分を継承するオブジェクトを指し、ターゲットは、変更されるオブジェクトを指します。
たとえば、図16-9では、フラット・ファイルPAYROLL_WEST
がソースで、フラット・ファイル演算子PAYROLL
がターゲットです。このため、Warehouse Builderでは、フラット・ファイルPAYROLL_WEST
のフィールドに対応するPAYROLL
演算子の新しい属性が作成されます。
演算子とワークスペース・オブジェクトの比較方法を決定するには、一致方針を設定します。同期化によって変更(演算子の属性の追加、削除など)が適用されると、マッピング・エディタがリフレッシュされます。同期化によって演算子の属性が削除される場合は、属性とのデータ・フロー接続も削除されます。同期化によって演算子の属性が追加される場合は、マッピング・エディタの演算子の末尾に新しい属性が表示されます。一致する属性間のデータ・フロー接続は保持されます。ソース・オブジェクトの属性の名前を変更すると、当初の属性が削除されて新しい属性が追加されたように解釈されます。
マッピングのオブジェクトを調整するには、次の方針を指定できます。
この方針では、演算子属性の一意のオブジェクト識別子をワークスペース・オブジェクトの識別子と比較します。オブジェクト識別子による一致は、ビュー演算子とワークスペース表など、演算子をタイプの異なるワークスペース・オブジェクトと同期化する場合には使用できません。
この方針は、ターゲット・オブジェクトをソース・オブジェクトへの変更と一致させる場合や、ターゲット・オブジェクト内での物理名の変更とは関係なく個別のビジネス名を維持する場合に使用します。
Warehouse Builderにより、ターゲット・オブジェクトの属性に対応しない属性はソース・オブジェクトから削除されます。これは、ソースに属性が追加された場合や、変更を適切に同期化せずにワークスペース・オブジェクトから属性が削除された場合に実施されます。
この方針では、演算子属性のバウンド名をワークスペース・オブジェクト属性の物理名と一致させます。一致では大文字/小文字が区別されます。
この方針は、バウンド名をワークスペース・オブジェクトの物理名と一致させる場合に使用します。演算子の構造が変化する変更がワークスペース・オブジェクトに生じた場合は、別のワークスペース・オブジェクトでこの方針を使用することもできます。
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
解決策
Warehouse Builderを使用してETLロジックを設計し、トランザクションがソースに格納された時間的な順序に正確に従ってデータをロードできます。このためには、ターゲット表にデータをロードする前に、データの順序付けおよび条件付きの分割を行うマッピングを設計します。次に、行ベースのオペレーティング・モードでコードを生成するためのマッピングを構成します。次の例に示すように、行ベースのオペレーティング・モードでは、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;
これにより、確実に、一連のアクションは連続する順序で実装され、トランザクションが記録された順序に従ってデータがロードされます。
事例
この事例では、Warehouse Builderを使用して特定の順序でトランザクション・データをロードするためのETLロジックを作成する方法を示します。
手順1: ソース・フラット・ファイルrecord.csvのインポートおよびサンプリング
この例では、フラット・ファイルrecord.csv
にすべてのトランザクション・レコードおよびタイムスタンプが格納されます。Warehouse Builderのインポート・メタデータ・ウィザードを使用して、ソース・システムからこのフラット・ファイルをインポートします。次に、フラット・ファイル・サンプル・ウィザードを使用して、Warehouse Builder内のフラット・ファイルのメタデータを定義します。
注意: システムが表から取得されている場合は、このフラット・ファイルと通常の表を置き換えることができます。この場合は、手順3に進みます。 |
手順2: 外部表の作成
マッピング内のサンプリングされたフラット・ファイルの使用を単純化するには、手順1でインポートおよびサンプリングされたフラット・ファイルに基づき、外部表の作成ウィザードを使用して外部表(JOURNAL_EXT
)を作成します。
フラット・ファイルのかわりに外部表を使用する利点は、外部表によりフラット・ファイル内のデータに直接アクセスするSQLが提供される点です。したがって、データをステージングする必要はありません。
ステップ3: マッピングの設計
このマッピングでは、トランザクション・データを外部ソースから移動し、データを並べ替える演算子、続いて条件によりデータを分割する演算子を介してターゲット表にデータをロードします。図16-10は、ソースの並替えおよび分割方法を示しています。
ソーター演算子により、データの順序付けが可能になり、またソースで記録された順序に正確に従ってトランザクションを処理できます。スプリッタ演算子により、生成済コード内でif-then-else制約として機能する分割条件を定義することで、ソース・データ内に記録されたすべての挿入、更新および削除を条件付きで処理できます。データは条件付きで分割され、ターゲット表にロードされます。このマッピングでは、条件付きロードを説明するために、同じターゲット表を3回使用します。マッピング表TARGET 1、TARGET 2およびTARGET 3は、すべて同じワークスペース表TARGET
にバインドされます。すべてのデータは、単一のターゲット表に挿入されます。
次の手順は、このマッピングを作成する方法を示します。
手順4: マッピングの作成
「マッピングの作成」ダイアログ・ボックスを使用してLOAD_JOURNAL_EXT
というマッピングを作成します。Warehouse Builderによりマッピング・エディタが開かれ、そこでマッピングを作成できます。
手順5: 外部表演算子の追加
マッピング外部表演算子をマッピング・エディタ上にドラッグ・アンド・ドロップし、外部表JOURNAL_EXT
にマッピング外部表演算子をバインドします。
手順6: データの順序付け
ソーター演算子を追加して、ターゲットにロードされる必要のあるトランザクション・データの順序を指定するorder-by句を定義します。図16-11は、昇順のトランザクション・データのタイムスタンプに基づいて表を順序付ける方法を示しています。
手順7: 分割条件の定義
スプリッタ演算子を追加して、トランザクション・データに格納された挿入、更新および削除を条件付きで分割します。この分割条件は、生成済コード内でif-then-else制約として機能します。図16-12は、SOURCE演算子と、SPLITTER演算子にリンクするORDERBY演算子とを結合する方法を示しています。
トランザクションの各タイプに対する分割条件を定義します。OutgroupのINSERT_DATAには、INGRP1.ACTION = 'I'
という分割条件を定義します。UPDATE_DATAには、INGRP1.ACTION = 'U'
という分割条件を定義します。Warehouse Builderは、スプリッタ演算子にREMAINING_ROWSと呼ばれるデフォルトのグループがあり、そのグループによりすべての削除(「D」)レコードが自動的に処理されます。
手順8: ターゲット表の定義
トランザクションの各タイプ(INSERT_DATA、UPDATE_DATAおよびREMAINING_ROWS)に対し、同じワークスペース・ターゲット表をそれぞれに使用します。
手順9: マッピングLOAD_JOURNAL_EXTの構成
マッピングを定義した後、コードを生成するためにマッピングを構成する必要があります。この例の目的は、格納された順序に正確に従ってデータを処理することであるため、デフォルトのオペレーティング・モードとして行ベースを選択する必要があります。このモードでは、行ごとにデータが処理され、ターゲット表での挿入、更新および削除アクションは、ソースでトランザクションが記録された順序に正確に従って発生します。
Warehouse Builderでは、すべての挿入トランザクションに対して1つの文が作成され、すべての更新トランザクションおよびすべての削除操作に対してもそれぞれ1つの文が作成されるので、セット・ベース・モードは選択しません。コードによりこれらのプロシージャが次々にコールされ、1つのアクションが完了してから次のアクションを行います。たとえば、最初にすべての挿入が処理され、次にすべての更新が処理され、続いてすべての削除が処理されます。
トランザクション・データをロードするためのマッピングを構成する手順は、次のとおりです。
プロジェクト・エクスプローラで、LOAD_JOURNAL_EXT
マッピングを右クリックして「構成」を選択します。
「ランタイム・パラメータ」ノードを開き、「デフォルト・オペレーティング・モード」パラメータを「行ベース」に設定します。
この例では、他のすべてのパラメータに対して、デフォルト値を使用します。コードを生成する前にマッピングを検証します。
手順10: コードの生成
マッピングを生成した後、Warehouse Builderでは、生成結果ウィンドウに結果が表示されます。
コードを調べると、Warehouse Builderではすべての一連のアクションが行ベース・モードで実装されていることがわかります。これはデータが行ごとに処理されることを示し、また、図16-10に示すように、Warehouse Builderによりif-then-else構造を使用して発生順にすべての条件が評価されることを示します。このため、結果のターゲット表ではソースで記録されたトランザクションの連続的な整合性が保持されます。
マッピング・エディタを使用して、マッピングで設計した複雑なデータ・フローをデバッグできます。デバッグ・セッションを開始して、有効なターゲット・スキーマに接続すると、マッピング・エディタのツールバーおよびメイン・メニューの「デバッグ」の下に、デバッグ機能が表示されます。定義済の一連のテスト・データを使用して、デバッグ・セッションを実行し、データが抽出、変換およびロードされるフローに従って、設計したデータ・フローが期待どおりに動作するかどうかを確認できます。問題が検出された場合は、それらを修正してからデバッグ・セッションを再開し、配布する前に問題が修正されたことを確認できます。
前提作業
コントロール・センターに接続されており、コントロール・センターが機能していることを確認してください。
デバッグ・セッションを開始するには、マッピング・エディタから「デバッグ」、「開始」の順に選択するか、ツールバーから「デバッグの開始」をクリックします。マッピング・エディタがデバッグ・モードに切り替わり、エディタの下部にデバッグ・パネルが表示されます。デバッガはプロジェクトに適したコントロール・センターに接続されます。デバッグで生成されるコードは、デバッグ対象のマップが格納されているモジュールの位置に基づいて、指定されたターゲット・スキーマに配布されます。
注意: 接続できない場合は、エラー・メッセージが表示されます。接続情報を編集して再試行するオプションがあります。 |
接続が確立された場合は、テスト・データを定義できることを示すメッセージが表示されます。テスト・データがすでに定義されている場合は、初期化を続行するかどうかを尋ねるメッセージが表示されます。
マッピングをデバッグするには、それぞれのソース演算子とターゲット演算子がデータベース・オブジェクトにバインドされ、データベース・オブジェクトに対するテスト・データが定義されている必要があります。デフォルトでは、デバッグ以外のマップの配布に対して現在定義されているソース・データとターゲット・データが使用されます。
マッピング・エディタがデバッグ・モードで起動している場合は、新しいパネル(「デバッグ情報」パネルと「デバッグ・データ」パネル)が表示されます。
マッピング・エディタがデバッグ・モードのときは、左中央に「デバッグ情報」パネルが表示されます。このパネルには次のタブがあります。
メッセージ: すべてのデバッガ操作メッセージが表示されます。これらのメッセージにより、デバッグ・セッションのステータスを確認できます。これには、デバッグ・モードでマッピングを実行する間に発生したエラー・メッセージが含まれます。
ブレークポイント: マッピングに設定した全ブレークポイントのリストが表示されます。チェック・ボックスを使用して、ブレークポイントをアクティブ化したり非アクティブ化したりできます。詳細は、「ブレークポイントの設定」を参照してください。
テスト・データ: マッピングに使用されている全データ・オブジェクトのリストが表示されます。このリストは、どのデータ・オブジェクトにテスト・データが定義されているかも示します。
マッピング・エディタがデバッグ・モードのときには、「デバッグ・データ」パネルが右下に表示されます。「デバッグ・データ」パネルには、デバッグ対象の演算子に関する入出力情報を含んだ「ステップのデータ」タブとウォッチ・ポイント・タブがあります。「ステップのデータ」タブには、デバッグ・セッションの現行ステップに関する情報が表示されます。他のタブは、設定するウォッチごとに追加できます。これらのウォッチ・タブでは、デバッグ・セッションで現在アクティブな演算子に関係なく、演算子を渡したデータまたは演算子を渡すデータを追跡して表示できます。複数の入力グループまたは複数の出力グループを持つ演算子の場合は、追加のリストが表示され、特定のグループを選択できます。
演算子が複数の入力グループまたは出力グループを持つ場合は、デバッガの右上隅の入力グループまたは出力グループの上にリストが表示されます。このリストを使用して、関心のあるグループを選択します。これは、ステップ・データとウォッチの両方に適用されます。
マッピング内のソース演算子またはターゲット演算子はすべて、左下部のパネルの「テスト・データ」タブにリストされます。オブジェクト・タイプ、ソース、およびデータベース・オブジェクトがすでにソース演算子またはターゲット演算子にバインドされていることを示すチェック・マークが表示されます。
タブにリストされるオブジェクト・タイプは、選択したデータ・ソース(表など)の列名がマッピング演算子の列と一致するかどうかで決まります。次の2つのタイプがあります。
ダイレクト・アクセス。完全に一致する場合は、タイプにダイレクト・アクセスと表示されます。
ビューとして配布。マッピング演算子の列と一致しない列が含まれるデータ・ソースを選択する場合は、列のマッピング方法を選択できます。この場合、オブジェクトはマッピングの実行時にビューとして配布され、タイプにはビューとして配布と表示されます。
バインド済データベース・オブジェクトで、テスト・データのみでなく、演算子のバインドを追加または変更するには、「編集」をクリックします。デバッグ・モードでマッピングを実行するには、その前にリストされている各ソース演算子またはターゲット演算子がバインドされ、チェック・マークが付けられている必要があります。バインド済データベース・オブジェクトにテスト・データを定義して有効にする必要があるかどうかは、デバッグ・セッションを実行する際に、データ・フローのどの部分に焦点を置くかによって決まります。一般に、すべてのソース演算子には、テスト・データが必要です。ターゲット演算子のテスト・データは、通常、更新またはターゲットの制約を伴うロード例をデバッグする場合に必要です。
テスト・データを定義または編集する手順は、次のとおりです。
マッピング・エディタの「テスト・データ」タブで、リストから演算子を選択して「編集」をクリックします。テスト・データの定義ダイアログ・ボックスが表示されます。
テスト・データの定義ダイアログ・ボックスで、デバッグ時にWarehouse Builderが使用するテスト・データの特性を指定します。数多くの特性を指定できます。たとえば、テスト・データが新規データベース・オブジェクトか既存のデータベース・オブジェクト、あるいはテスト・データを手動で編集できるかどうかを指定できます。詳細は、テスト・データの定義ダイアログ・ボックスの「ヘルプ」をクリックしてください。
テスト・データの定義ダイアログ・ボックスを使用して新しい表を作成すると、その表には接頭辞DBG_
が付いたデータ演算子名が付きます(この名前がすでにターゲットに存在する場合は、一意のオブジェクト名が生成されるように、名前の接尾辞として連番が追加されます)。デバッグを開始すると、指定したターゲット・スキーマに表が作成されます。デバッガによって表が自動的に削除されることはないため、他のセッションにも同じ表を再利用できます。制約は新しい表には継承されません。
ユーザーが新しい表を作成すると、その表は、接続されているランタイム・スキーマに作成されます。新しい表には名前が自動的に生成され、新しい表名を反映するようにデバッグ・バインド名の値が変更されます。新しい表には、マッピングのソース属性またはターゲット属性の名前とデータ型が完全に一致する属性に対して列が定義されます。また、表の作成時にグリッドに表示されるデータは、新しく作成された表にコピーされます。
特定の演算子についてデータ処理の様子を確認する場合は、デバッグ・セッションを中断させるブレークポイントをその演算子に設定できます。これにより、データ・フロー内のすべての演算子を順番に処理しなくても、目的の演算子まで速やかに進行できます。デバッグ・セッションがブレークポイントに到達した後、目的の演算子で順を追ってデータを実行し、期待どおりに機能するかどうかを確認します。ブレークポイントの設定は、マッピングの終了時に保存されません。
ブレークポイントを設定または削除する手順は、次のとおりです。
マッピング・エディタで、演算子をクリックして「デバッグ」、「ブレーク・ポイントの設定」の順に選択します。または、ツールバーの「ブレークポイント」ボタンをクリックして、現在選択されている演算子のブレークポイントのオン/オフを切り替えることもできます。
ブレークポイントを設定すると、ブレークポイントとして設定された演算子の名前が、左下部のパネルの「ブレークポイント」タブにリストされます。ブレークポイントを削除すると、その演算子の名前も削除されます。ブレークポイントを削除するには、「ブレークポイント」タブの「クリア」ボタンを使用します。
ブレークポイントの有効/無効を切り替えるには、「ブレークポイント」タブのブレークポイントを選択または選択を解除します。
右下部のパネルにある「ステップのデータ」タブには、常に現在の演算子のデータが表示されます。アクティブな演算子に関係なく、他の演算子を通過したデータを追跡する場合は、ウォッチを設定します。
ウォッチを使用して、演算子を通過したデータや、バインド済データベース・オブジェクトに現在存在しているデータ(ソースまたはターゲットの場合)を追跡します。デバッグが目的の演算子ですでに実行された後にウォッチ・ポイントを演算子に設定しても、データ・フローをさかのぼって、データがその演算子によってどのように処理されたかを確認できます。
ウォッチを設定する手順は、次のとおりです。
マッピング・エディタで、演算子をクリックして「デバッグ」、「ウォッチの設定」の順に選択します。または、ツールバーの「ウォッチの設定」ボタンをクリックして、ウォッチのオン/オフを切り替えることもできます。右下のパネルの下部に演算子の名前が新しいタブとして構成され、その演算子の入出力グループが表示されます。
ウォッチを削除する手順は、次のとおりです。
ウォッチを削除するには、演算子を再度選択してツールバーのウォッチ・ボタンを使用するか、「デバッグ」メニューの「ウォッチの設定」を使用します。あるいは、マウスを右クリックして表示されるメニューの「デバッグ・ウォッチの切替え」を使用します。
各データ演算子についてテスト・データの接続を設定した後は、「デバッグ」メニューから「再初期化」を選択して初期デバッグ・コードを生成できます。Warehouse Builderにより、デバッグ・コードが生成され、指定したターゲット・スキーマにパッケージが配布されます。
デバッグ・セッションは、次のいずれかのモードで実行されるように選択できます。
ツールバーの「再開」ボタンまたは対応するメニュー項目を使用して、次のブレークポイントまで、あるいはデバッグの実行が終了するまで処理を続行します。
ツールバーの「ステップ」ボタンまたは対応するメニュー項目を使用して、1行ずつ処理します。
ツールバーの「スキップ」ボタンまたは対応するメニュー項目を使用して、現在の演算子について残りの行をすべて処理します。
「リセット」ボタンまたは「デバッグ」メニューの対応する項目を使用して、デバッグの実行をリセットし、最初に戻ります。
マッピングには、複数のソースと複数のデバッグ・パスが含まれることがあります。
マッピングに複数のソースがあると、Warehouse Builderでは始点となるソースの指定が要求されます。たとえば、2つの表が1つのジョイナにマップされている場合は、デバッグ時に使用する最初のソース表を選択する必要があります。
パスの場合も、デバッガが1つのパスを終了した後で通過できる複数のパスが存在することがあります。たとえば、スプリッタを使用する場合などです。このような場合は、1つのパスが終了すると、他のパスも処理するかどうかを尋ねるメッセージが表示されます。
マッピングは、すべてのターゲット演算子が処理されるか、または発生したエラー数がそのマッピングに設定されている最大数に達すると終了します。デバッグ接続とテスト・データの定義は、Warehouse Builderワークスペースに変更をコミットする際に保存されます。ブレーク・ポイントとウォッチの構成は保存されないため、マッピングを開くたびに再設定する必要があります。
デバッガの実行に伴って、適宜デバッグ・メッセージが表示されます。演算子を介するデータ・フローに従うことができます。アクティブな演算子は、赤の破線で囲まれて示されます。
マッピングの「相関コミット」パラメータの設定(ONまたはOFF)によって、マッピングのデバッグ方法が変わります。
「相関コミット」パラメータがONに設定されているマッピングのデバッグ・セッションを開始すると、マッピングのデバッグにはパスが使用されません。かわりに、選択したパスに関係なく、マッピングの最初のステップですべてのパスが実行され、ターゲットもすべてロードされます。また、いずれかのターゲットにステップの制約違反がある場合、そのステップではどのターゲットもロードされません。
「相関コミット」パラメータが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つです。
プラッガブル・マップは、その他のマップ・タイプと同様にステップ実行できます。プラッガブル演算子にターゲットが含まれている場合は、最上位マップに対するロードと同様に、ターゲットがロードされます。最後の実行可能演算子の実行が終了し、次回、「ステップ」をクリックすると、コンテキストは最上位マップに戻り、前回実行したプラッガブルの後方の次に実行可能な演算子に対して実行が開始されます。プラッガブルに出力接続がなく、そのプラッガブルが最上位マップ内の最後の実行可能演算子である場合は、ステップ実行が終了します。
プラッガブル・サブマップ内の演算子には、ブレークポイントおよびウォッチ・ポイントを設定できます。また、通常の編集時に「子グラフの表示」および「親グラフに戻る」をクリックすることで、通常の編集と同様に、コンテキスト図を変更できます。
マッピングを変更したり、ソース演算子またはターゲット演算子を別のデータベース・オブジェクトにバインドした場合は、新しい変更内容でマッピングのデバッグを続行するために、デバッグ・セッションを再初期化する必要があります。再初期化するには、ツールバーの「再初期化」ボタンをクリックするか、「デバッグ」メニューの「再初期化」メニュー項目を選択します。再初期化では、デバッグ・コードが再度生成されて配布されます。マッピングのデバッグ・セッションは、再初期化の後、先頭から開始されます。
マッピングをデバッグする際は、渡されるデータ量と「ステップのデータ」パネルに表示される列数の両方にスケーラビリティが適用されます。テスト・データの定義ダイアログ・ボックスには、行を制限するオプションがあり、マッピング全体のデータ量を制限できます。また、独自の表を作成してレコードを手動で操作することで、独自のデータ・セットを定義できます。
ステップのデータ・ウィンドウやウォッチ・タブに表示される列数を制限するには、表示セットを使用できます。デフォルトでは、すべての演算子に表示セット「すべて」が設定されています。マッピングされている属性のみを表示するには、表示セットMAPPEDを使用します。マッピング・エディタを直接使用することで、表示セットをソースに手動で追加できます。表示セットを選択するには、入出力グループでマウスを右クリックし、「表示セットの使用」オプションを選択します。