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