この章では、マッピングのソースおよびターゲットとしての演算子の使用方法について説明します。内容は次のとおりです。
この項では、ソースおよびターゲット演算子のプロパティの設定方法、および各演算子の使用方法の詳細を説明します。
マッピングの定義には次の一般的な手順が含まれます。
Oracleソースおよびターゲット演算子は、Warehouse BuilderリポジトリのOracleデータ・オブジェクトにバインドされている演算子を参照します。これらの演算子をマッピングで使用して、Oracleデータ・オブジェクトへのデータのロードまたはOracleデータ・オブジェクトからのデータのソーシングを実行します。
マッピング・エディタの「プロパティ」パネルに、選択した演算子のプロパティが表示されます。エディタの左側にある「プロパティ」パネルに、関連するプロパティが表示されます。これにはソースおよびターゲット演算子のパラメータの次のカテゴリが含まれます。
演算子名: 演算子名に、「プライマリ・ソース」、「ターゲット・ロード順序」および「ロード・タイプ」 を設定できます。「Oracleターゲット演算子のロード・タイプ」および「フラット・ファイルのロード・タイプ」で説明しているとおり、「ロード・タイプ」にはターゲットのタイプに応じて様々な値を設定できます。
条件付きロード: 「更新用ターゲット・フィルタ」、「削除用ターゲット・フィルタ」および「制約による一致」を設定できます。
キー(読取り専用): 「キー名」、「キー・タイプ」および「参照キー」を参照できます。演算子がソースとして機能する場合は、キー設定は結合演算子とともに使用されます。演算子がターゲットとして機能する場合は、キー設定は「制約による一致」パラメータとともに使用されます。
ファイル・プロパティ: ファイル・プロパティでは、「バウンド名」を参照できます。
エラー表: 「エラー表名」、「ロールアップ・エラー」および「この演算子からのエラーのみを選択」を設定できます。このプロパティのセクションは、表、ビュー、マテリアライズド・ビュー、外部表およびディメンションのマッピング演算子にのみ表示されます。
Oracle Application Embedded Data Warehouse(EDW)ユーザーは、EDWのドキュメントを参照してください。その他のユーザーは、このパラメータは無視してください。
ロード・タイプのプロパティを使用して各ターゲット演算子のロード・タイプを選択します。
ディメンションおよびキューブ演算子を除き、すべてのOracleターゲット演算子について、次のオプションを1つ選択します。
CHECK/INSERT: Warehouse Builderでは、既存の行に対するターゲットをチェックします。既存の行がない場合は、受信行がターゲットに挿入されます。
DELETE: Warehouse Builderでは、受信行セットを使用して、削除するターゲットの行を判別します。
DELETE/INSERT: Warehouse Builderでは、ターゲットの行をすべて削除し、新規行を挿入します。
INSERT: Warehouse Builderでは、受信行セットをターゲットに挿入します。同じプライマリ・キーまたは一意のキーの行がすでに存在する場合は、挿入に失敗します。
INSERT/UPDATE: Warehouse Builderでは、それぞれの受信行について最初に挿入演算を実行します。挿入に失敗した場合、更新演算が行われます。更新する一致レコードがない場合は、挿入が実行されます。「INSERT/UPDATE」を選択しており、「デフォルト・オペレーティング・モード」が行ベースの場合、ターゲットに一意の制約を設定する必要があります。オペレーティング・モードがセット・ベースの場合は、MERGE文が生成されます。
なし: Warehouse Builderでは、ターゲットに対して何も実行しません。この設定はテストに便利です。抽出と変換は実行されますが、ターゲットには何も影響しません。
TRUNCATE/INSERT: Warehouse Builderでは、ターゲットが切り捨てられ、受信行セットが挿入されます。このオプションを選択すると、マッピングの実行に失敗した場合でも、操作をロールバックできません。切捨てでは、ターゲットからデータを完全に削除します。
UPDATE: Warehouse Builderでは、受信行セットを使用してターゲットの既存の行を更新します。指定の一致条件に合致する行がない場合は、何も変更されません。
ターゲット・モジュールの構成プロパティ「PL/SQL生成モード」をOracle 10gまたはOracle 10gリリース2に設定すると、Warehouse Builderにより、ターゲットがセット・ベース・モードで更新されます。生成されるコードには、挿入句なしでMERGE文が含まれます。PL/SQLコードの9iおよびそれ以前のバージョンを生成するよう構成されたモジュールについては、ターゲットは行ベース・モードで更新されます。
UPDATE/INSERT: Warehouse Builderでは、それぞれの受信行について最初に更新が実行されます。「UPDATE/INSERT」を選択しており、ターゲットの「デフォルト・オペレーティング・モード」がセット・ベースの場合、MERGE文が生成されます。
ディメンションとキューブについては、ロード・タイプのプロパティに「ロード」と「削除」のオプションがあります。ディメンションまたはキューブにデータをロードする場合は「ロード」を使用し、データを削除する場合は「削除」を使用します。
「SQL*Loaderパラメータ」を構成し、マッピング用に「SQL*Loader」のオプションを定義します。構成中に選択した値は、生成されたSQL*Loaderと実行時の制御ファイルに直接影響します。SQL*Loaderでは、データをロードする2つの方法があります。
従来型パスによるロード: SQL INSERT文を実行し、Oracleデータベースに表を移入します。
ダイレクト・パス・ロード: Oracleデータ・ブロックをフォーマットし、データベース・ファイルに直接データ・ブロックを書き込むことによってOracleデータベースのオーバーヘッドを大幅に削減します。直接ロードでは他のユーザーとのデータベース・リソースの競合がないため、常にディスク・スピードに近い速度でデータをロードできます。
制限、セキュリティおよびバックアップ関連の特定の考慮事項は、データベース・ファイルへのそれぞれのアクセス方法に継承されます。詳細は、Oracle9i 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 |
ターゲット表が空であるとみなされます。 |
このプロパティでは、同じマッピング内の複数のターゲットのロード順序を指定できます。Warehouse Builderは、デフォルトのロード順序を外部キー関係に基づいて決定しますが、このデフォルト順序は棄却できます。
条件でTRUEと評価された場合は、その行が更新ロード操作に含まれます。
条件でTRUEと評価された場合は、その行が削除ロード操作に含まれます。
ターゲット演算子をUPDATE条件またはDELETE条件付きでロードする場合は、一致条件を指定できます。一致条件とロード条件は手動で設定することも、組込みのオプションから選択することもできます。「制約による一致」では、ターゲットの一意キーまたは主キーの情報を使用して、属性に手動で設定されている一致条件とロード条件を上書きするかどうかを指定します。「制約による一致」プロパティをクリックすると、図25-1に示すように、その演算子で定義されている制約と組込みのロード・オプションがドロップダウン・リストに表示されます。
「すべての制約」を選択すると、手動で設定した属性のロード設定がすべて無効になり、表25-2に示されているようにターゲット属性のロードおよび一致プロパティが設定されているものとしてデータがロードされます。
表25-2 「すべての制約」を選択した場合のターゲットのロード設定
ロード設定 | キー属性 | その他すべての属性 |
---|---|---|
行の更新中に列をロードする |
いいえ |
はい |
行の更新中に列を一致させる |
はい |
いいえ |
行の削除中に列を一致させる |
はい |
いいえ |
「制約なし」を選択すると、手動で設定したすべてのロード設定が優先され、データはその設定に従ってロードされます。
演算子にすでに定義されている制約を選択すると、手動で設定した属性のロード設定がすべて無効になり、表25-4に示されているようにターゲットのロードおよび一致プロパティが設定されているものとしてデータがロードされます。
属性レベルで変更を行った後で、すべての設定をデフォルト設定に戻す場合は、「拡張」をクリックします。図25-2に示すように、Warehouse Builderにより、ドロップダウン・ボックス・リストにロード・オプションが表示されます。Warehouse Builderでは、選択する制約タイプに基づいて、設定がデフォルト設定されます。
たとえば、すべてのキー属性の一致プロパティをリセットする場合は、「拡張」をクリックしてから「制約なし」を選択し、「OK」をクリックします。Warehouse Builderにより、手動で設定したロード設定が上書きされ、表25-4に示されている設定に基づいてデータがロードされます。
表25-4 「拡張」と「制約なし」を選択した場合のデフォルトのロード設定
ロード設定 | すべてのキー属性 | その他すべての属性 |
---|---|---|
行の更新中に列をロードする |
はい |
はい |
行の更新中に列を一致させる |
いいえ |
いいえ |
行の削除中に列を一致させる |
いいえ |
いいえ |
また、「拡張」をクリックしてから「すべての制約」を選択すると、Warehouse Builderにより、手動で設定したロード設定が上書きされ、表25-5に示されている設定に基づいてデータがロードされます。
コード・ジェネレータで使用する名前です。演算子が現在バインドおよび同期化されている場合、このプロパティは読取り専用になります。演算子がまだバインドされていない場合は、リポジトリ・オブジェクトに対して同期化する前に、マッピング・エディタでバウンド名を編集できます。
主キー、外部キーまたは一意キーの名前です。
主キー、外部キーまたは一意キーのキー・タイプです。
演算子に外部キーがある場合は、「参照キー」に参照オブジェクトの主キーまたは一意キーが表示されます。
ロード操作中の無効なレコードを格納する、エラー表の名前です。
「はい」を選択して、エラー表からエラー名で選択したレコードをロールアップします。これにより、特定の入力レコードで生成されたエラーはすべて、エラー名属性で連結されたエラー名を持つ単一のレコードにロールアップされます。
エラー表から選択された行には、このマップ実行でこの演算子によって作成されたエラーのみが含まれます。
ソースおよびターゲット演算子のそれぞれの属性に対して、パラメータは次のタイプに分類されます。
属性のプロパティ: 「属性のプロパティ」では、「バウンド名」プロパティを参照できます。
ロード・プロパティ: 表演算子、ディメンション演算子、キューブ演算子、ビュー演算子およびマテリアライズド・ビュー演算子には、「ロード・プロパティ」カテゴリがあります。このカテゴリには、「行の挿入中に列をロードする」、「行の更新中に列をロードする」、「行の更新中に列を一致させる」、「更新: 演算」および「行の削除中に列を一致させる」の設定が含まれます。
データ型情報: データ型のプロパティは、すべての演算子に適用可能です。これには「データ型」、「精度」、「スケール」、「長さ」および「小数秒精度」があります。
このアイテムを識別するためにコード・ジェネレータで使用される名前です。デフォルトでは、アイテムと同じ名前です。これは演算子がバインドされている場合は、読取り専用の設定になります。
属性のデータ型です。
データ型が数値型または浮動小数点型の場合、この属性の最大桁数になります。これは読取り専用の設定です。
小数点の右の桁数です。数値属性にのみ適用されます。
CHAR、VARCHARまたはVARCHAR2属性の最大長です。
日時フィールドの小数部の桁数です。0から9までの数値を入力できます。このプロパティは、TIMESTAMPデータ型に対してのみ使用されます。
この設定により、マッピングに関係なく、データのターゲットへの移動を回避できます。「はい」(デフォルト)を選択した場合、データがマッピングのターゲットに到達します。
この設定では、マッピングに関係なく、選択した属性データのターゲットへの移動を回避できます。「はい」(デフォルト)を選択した場合、データがマッピングのターゲット属性に到達します。一意キーのすべての列がマップされていない場合は、一意キーは一致条件の構成に使用されません。一意キーの列がマップされていない場合は、エラーが表示されます。キー列以外の列がマップされていない場合は、その列はロードには使用されません。
この設定では、ソース属性とマップ先のターゲット属性の間で一致するものがあった場合のみ、データ・ターゲット行が更新されます。一致する場合は、行の更新が実行されます。このプロパティを「はい」(デフォルト)に設定すると、属性は一致属性として使用されます。この設定を使用する場合は、すべてのキー列をマップする必要があります。ターゲット・エンティティに定義されている一意キーが1つのみの場合は、制約を使用してこの設定を上書きします。
Warehouse Builderで一致する行が検出され、ターゲットが更新される場合、更新演算を実行するように指定できます。更新演算はソース属性のデータを使用してターゲット属性に対して実行されます。表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 = TARGET ││ SOURCE |
TARGET = 105(10は5で切捨て) |
=││ |
TARGET = SOURCE ││ TARGET |
TARGET = 510(5は10で切捨て) |
ソース属性とマップ先のターゲット属性が一致する場合のみ、データ・ターゲット行を削除します。一致する場合は、行の削除が実行されます。このプロパティを「はい」(デフォルト)に設定すると、属性は一致属性として使用されます。制約はこの設定よりも優先される場合があります。
定数演算子により、定数値を定義できます。定数はPL/SQLまたはABAPマッピングのどの箇所でも使用できます。
注意: SQL*Loaderマッピングについては、かわりにデータ・ジェネレータ演算子を使用してください。
定数演算子は、1つ以上の定数属性を含む単一の出力グループを作成します。Warehouse Builderでは、マッピング実行の最初に定数を初期化します。
たとえば、現在のシステム日付の値を表演算子にロードするには、定数演算子を使用します。式ビルダーで、事前定義済の変換のリストから、パブリック変換SYSDATE
を選択します。パブリック変換の詳細は、第9章「Oracle Warehouse Builderの変換の使用方法」を参照してください。
PL/SQLまたはABAPマッピングで定数演算子を定義する手順は次のとおりです。
マッピング・エディタのキャンバスに定数演算子をドロップします。
定数演算子を右クリックして「エディタを開く」を選択します。
「定数エディタ」ダイアログが表示されます。
「出力」タブで「追加」ボタンをクリックして出力属性を追加します。
属性の名前とデータ型を変更できます。
「OK」をクリックして、「定数エディタ」ダイアログを閉じます。
マッピング・エディタで定数演算子の出力属性を選択します。
マッピング・エディタの「プロパティ」パネルに出力属性のプロパティが表示されます。
「式」フィールドの右側の省略記号のボタンをクリックします。
「式ビルダー」ダイアログが表示されます。このダイアログを使用して定数の式を記述します。
出力属性に割り当てられた長さ、精度およびスケール・プロパティは、マッピングで定義した式によって戻される値と一致する必要があります。VARCHAR、CHARまたはVARCHAR2のいずれかのデータ型については、定数文字列のリテラルを'my_string'
のように一重引用符で囲みます。
オブジェクトの構成演算子では、それを構成する個々の属性を使用して、SQLオブジェクトのデータ型(オブジェクト・タイプおよびコレクション・タイプ)、PL/SQLオブジェクト・タイプおよびマッピングのカーソルを作成できます。
たとえば、データ型がオブジェクト・タイプの列を含む表へのデータのロードに使用する、SQLオブジェクト・タイプを作成する場合に、オブジェクトの構成演算子を使用できます。また、この演算子を使用して、アドバンスト・キューにデータをロードするペイロードを作成できます。この演算子では、SYS.REFCURSORオブジェクトも構成できます。
オブジェクトの構成演算子には、入力グループと出力グループが1つずつあります。入力グループはオブジェクト・タイプを構成する個々の属性を表します。オブジェクトの構成演算子の出力は、個々の属性を使用して作成したオブジェクト・タイプです。マッピングでは、オブジェクトの構成演算子の出力属性のデータ型が、マップ先のターゲット属性と一致している必要があります。
図25-3に、オブジェクトの構成演算子を使用したマッピングを示します。ソース表CUST_SRC
では、個別の属性を使用して、顧客アドレスの各コンポーネントを格納します。ただし、ターゲット表CUSTOMERS
では顧客アドレスの格納にオブジェクト・タイプを使用します。CUST_SRC
表からCUSTOMERS
表にデータをロードするには、顧客アドレスのシグネチャがCUSTOMERS
の顧客アドレスのシグネチャと一致するオブジェクト・タイプであることが必要です。オブジェクトの構成演算子は、顧客アドレスを入力として格納するCUSTOMERS_SRC
から個々の属性を取得し、オブジェクト・タイプを構成します。オブジェクトの構成演算子は、Warehouse Builderリポジトリに格納されている、ユーザー定義のデータ型CUST_ADDR
にバインドされています。
マッピングでオブジェクトの構成演算子を定義する手順は次のとおりです。
オブジェクトの構成演算子をマッピング・エディタにドラッグ・アンド・ドロップします。
「オブジェクトの構成の追加」ダイアログを使用して、オブジェクトを作成または選択します。これらのオプションの詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
オブジェクトの構成に使用する個々のソース属性を、オブジェクトの構成演算子の入力グループにマップします。
オブジェクトの構成演算子の出力属性をターゲット属性にマップします。ターゲット属性のデータ型はオブジェクト・タイプになります。
オブジェクトの構成演算子の出力属性のシグネチャとターゲット属性のシグネチャは、同じである必要があります。
キューブ演算子を使用して、キューブからのデータのソーシングやキューブへのデータのロードを行います。
キューブ演算子には、キューブと同じ名前のグループが含まれます。このグループには、各キューブ・メジャーの属性があります。キューブが参照する各ディメンション・レベルのサロゲート識別子やビジネス識別子の属性も含まれます。また、キューブ演算子では、キューブが参照する各ディメンションに対してグループが1つ表示されます。
キューブ演算子は、現在のプロジェクトの任意のOracleモジュールに定義されているキューブにバインドできます。また、キューブ演算子を同期化して、バインドされているキューブに対する変更内容で更新もできます。キューブ演算子を同期化するには、マッピング・エディタのキャンバスでキューブ演算子を右クリックして、「同期化」を選択します。
キューブ演算子を含むマッピングを作成する手順は次のとおりです。
キューブ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
Warehouse Builderにより、「キューブの追加」ダイアログが表示されます。
「キューブの追加」ダイアログを使用して、キューブを作成または選択します。これらのオプションの詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
また、手順1と2はまとめて実行もできます。マッピング・エディタで「エクスプローラ」ウィンドウの「選択ツリー」タブにナビゲートします。キューブを選択してこれをマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
キューブ演算子からターゲットへ属性をマップ、またはソース演算子からキューブ演算子へ属性をマップします。
キューブをロードする場合、ソースのデータ・フローを参照レベルのビジネス識別子を表す属性にマップします。Warehouse Builderでは、検索を実行して該当するサロゲートIDをキューブ表に格納します。たとえば、属性をディメンション演算子からキューブ演算子にマップする場合は、ディメンションのサロゲート識別子の検索に必要であれば、キー参照演算子が作成されます。
参照条件で複数の行が戻される可能性がある場合は、戻された行から1行のみ選択するようにしてください。これは、デュプリケータ解除演算子またはフィルタ演算子を使用して実行できます。
図25-4に、キューブ演算子をターゲットとして使用するマッピングを示します。3つのソース表からのデータは、ジョイナ演算子を使用して結合されます。結合データと他のソース表からのデータの集計には、アグリゲータ演算子が使用されます。アグリゲータ演算子の出力は、キューブ演算子にマップされます。
キューブ演算子には、キューブのロードに使用できる次のプロパティがあります。
ターゲット・ロード順序: このプロパティでは、同じマッピング内の複数のターゲットのロード順序を指定します。Warehouse Builderは、デフォルト順序を外部キー関係に基づいて決定します。このプロパティを使用すると、このデフォルト順序を棄却できます。
キューブの解決: このプロパティに「はい」 を設定すると、キューブのロード中にキューブ・データが集計されます。これによりロード時間は長くなりますが、問合せ時間は短縮されます。データは最初にロードされ、次に集計されます。
増分集計: このオプションを選択すると、増分ロードを実行できます。これは、以前にキューブが解決されている場合は、後続のロードでは新規データのみが集計されることを意味します。
AWステージ済ロード: TRUEの場合、セット・ベースのAWロード・データは、AWにロードされる前に一時表にステージされます。
AWロード前に切捨て: キューブのロード開始前に既存の全キューブの値を切り捨てる必要があるかどうかを示します。このプロパティを「はい」に設定すると、既存のキューブ・データが切り捨てられます。
単一のデータ・ジェネレータ演算子を使用して、定数または順序をSQL*Loaderマッピングに取り込みます。各SQL*Loaderマッピングに含められるデータ・ジェネレータ演算子は1つのみです。
フラット・ファイルのソースおよびターゲットのマッピングでは、データ・ジェネレータ演算子によってマッピングがSQL*Loaderに接続され、データベース・レコードに格納されるデータが生成されます。
次のファンクションを使用できます。
RECNUM
SYSDATE
SEQUENCE
Warehouse Builderでは、フィールド指定として順序、レコード番号、システム日付および定数を指定するのみでデータを生成できます。SQL*Loaderでは、LOADキーワードで指定されたのと同じ数のレコードが挿入されます。
データ・ジェネレータ演算子には、レコード番号、システム日付および一般的な順序に対応した事前定義済の複数の属性がある1つの出力グループがあります。属性は新たに作成できますが、事前定義済の属性は変更できません。
図25-5に、データ・ジェネレータ演算子を使用して現行システム日付を取得するマッピングを示します。フラット・ファイルCUSTOMERS_TXT
のデータはステージング表CUST_STAGE
にロードされます。ステージング表には、データがロードされた日付の追加属性が含まれます。データ・ジェネレータ演算子のSYSDATE属性は、ステージング表CUST_STAGE
のDATE_LOADED
属性にマップされます。
SQL*Loaderマッピングでデータ・ジェネレータを定義する手順は次のとおりです。
マッピング・エディタのキャンバスにデータ・ジェネレータ演算子をドロップします。
演算子を右クリックして「詳細をオープン」を選択します。
DATA_GENERATORエディタが表示されます。
DATA_GENERATORエディタの「出力属性」タブを選択します。
Warehouse Builderにより、事前定義済の出力属性RECNUM、SYSDATE1およびSEQUENCEが表示されます。
「出力属性」タブで、事前定義済の出力属性のプロパティを定義し、オプションで説明を入力します。
「OK」をクリックしてDATA_GENERATORエディタを閉じます。
マッピング・キャンバスの演算子上で、RECNUM属性を選択します。
Warehouse Builderにより、マッピング・エディタの「プロパティ」パネルにこの属性のプロパティが表示されます。
「式」フィールドで省略記号のボタンをクリックして「式ビルダー」を開き、式を定義します。
SEQUENCE属性について手順6と7を繰り返します。
レコードのロード元であるレコード番号に属性を設定するには、RECNUMキーワードを使用します。レコードは最初のデータ・ファイルの先頭、レコード1から順にカウントされます。RECNUMは、1つの論理レコードがまとめられるごとに増分されます。これは廃棄、スキップ、拒否、またはロードされたレコードについて増分されます。たとえば、オプションSKIP=10を使用すると、最初にロードされたレコードのRECNUMは11になります。
SYSDATEで指定した列は、SQL言語のSYSDATEファンクションで定義した形式で現行システム日付を取得します。
ターゲット列のデータ型はCHARまたはDATEである必要があります。列のデータ型がCHARの場合、日付はdd-mon-yyの書式でロードされます。システム日付がDATE列にロードされると、この列には時間書式と日付書式でアクセスできます。新規システム日付や時間は、従来型パスのロードで挿入されたレコードの各配列、およびダイレクト・パス・ロード中にロードされたレコードの各ブロックに使用されます。
SEQUENCEキーワードは列の一意の値を保証します。SEQUENCEは、ロードまたは拒否される各レコードを増分します。廃棄またはスキップしたレコードは増分しません。
列名とSEQUENCEファンクションの組合せにより、列の指定が完全になります。表25-7に、順序値に使用可能なオプションを示します。
表25-7 順序値のオプション
値 | 説明 |
---|---|
column_name |
順序が割り当てられるデータベースの列の名前です。 |
SEQUENCE |
列の値を指定します。 |
integer |
開始順序番号を指定します。 |
COUNT |
順序は表にあるレコードと増分を加算した番号から始まります。 |
MAX |
順序は列に増分を加算した現在の最大値から始まります。 |
incr |
レコードのロード後または拒否後に順序番号が増分する値です。 |
ロード中にレコードが拒否されると、Warehouse Builderにより、データ・エラーに関係なく、挿入順序が保存されます。たとえば、ある列で4行が順序番号10、12、14および16に割り当てられ、12の行が拒否されると、Warehouse Builderでは割当て番号10、12、14ではなく、10、14および16で有効な行を挿入します。拒否済のデータを修正し、それを再挿入する場合は、列が順序と一致するように手動で設定できます。
ディメンション演算子を使用して、ディメンション、および緩やかに変化するディメンションからのデータのソーシングやディメンションへのデータのロードを行います。
ディメンション演算子には、ディメンションの各レベルにグループが1つあります。グループにはディメンション・レベルと同じ名前を使用します。各レベルのレベル属性は、レベルを表すグループに示されています。
データ・フローはサロゲート識別子属性や任意のディメンション・レベルの親サロゲート識別子の参照属性にはマップできません。Warehouse Builderでは、ディメンションのロード時にこのような列が自動的に入力されます。
リポジトリに格納されているディメンションとディメンション演算子をバインドし、同期化できます。生成済コードのエラーを回避するには、ディメンション演算子を含むマッピングを配布する前に、リポジトリ・ディメンションの配布が完了していることを確認します。ディメンション演算子をリポジトリ・ディメンションと同期化するには、マッピング・エディタのキャンバスのディメンションを右クリックして、「同期化」を選択します。
マッピングでディメンション演算子を使用する手順は次のとおりです。
ディメンション演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
Warehouse Builderにより、「ディメンションの追加」ダイアログが表示されます。
「ディメンションの追加」ダイアログでディメンションを選択します。
また、手順1と2はまとめて実行もできます。マッピング・エディタで「エクスプローラ」ウィンドウの「選択ツリー」タブにナビゲートします。ディメンションを選択してこれをマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
ディメンション演算子からターゲットへ属性をマップ、またはソースからディメンション演算子へ属性をマップします。
マッピング・エディタの「プロパティ」パネルを使用して、ディメンションまたは緩やかに変化するディメンションからのデータのロードまたは削除に関する追加の詳細を定義するオプションを設定します。
演算子、ディメンション内の各レベルを表すグループおよびレベル属性という3つのレベルでプロパティを設定できます。
ディメンション演算子には、次のプロパティがあります。
ロード・タイプ ディメンションについて実行される操作のタイプを表します。選択できるオプションは、次のとおりです。
LOAD: ディメンションまたは緩やかに変化するディメンションにデータをロードするには、この値を設定します。
REMOVE: ディメンションまたは緩やかに変化するディメンションからデータを削除するには、この値を設定します。
データをロードまたは削除する際に、Warehouse Builderはソース・レコードがディメンション内に存在するかどうかを判別するため検索を実行します。照合は自然キー識別子によって実行されます。レコードが存在する場合、REMOVE操作により既存のデータが削除されます。LOAD操作では既存のデータが更新され、その後新規データがロードされます。
親レコードを削除すると、子レコードは存在しない親を参照する点に注意してください。
ターゲット・ロード順序 同じマッピング内の複数ターゲットのロード順序を指定します。Warehouse Builderは、外部キー関連に基づいてデフォルトの順序を決定します。デフォルトの順序を棄却するには、このプロパティを使用します。
デフォルトのオープン・レコード有効時間 このプロパティは、タイプ2のSCDにのみ適用可能です。オープン・レコードの有効時間に対して設定されたデフォルトの値を表します。データが毎日、タイプ2のSCDにロードされる場合、このプロパティを「SYSDATE」に設定できます。
デフォルトのオープン・レコード終了時間 このプロパティは、タイプ2のSCDにのみ適用可能です。これは、ディメンション内のすべてのレベルについて、新規に作成したオープン・レコードの終了時間として使用される日付値を表します。デフォルト値は「NULL」です。
このプロパティの値を設定しても、Warehouse Builderはこの設定を無視するので注意してください。「タイプ2緩やかに変化するディメンション」のレベルごとに「デフォルトのオープン・レコード終了時間」 を設定する必要があります。このプロパティは将来のリリースで実装されます。
タイプ2 現行のみ抽出/削除 このプロパティは、タイプ2のSCDにのみ適用可能です。抽出または削除するレコードを指定するには、このプロパティを使用します。このプロパティには次の値を設定できます。
YES: タイプ2のSCDからデータを抽出する場合、現行レコードのみが抽出されます。タイプ2のSCDからデータを削除する場合、現行レコードのみがクローズされます(有効期限は「SYSDATE」または「デフォルトのオープン・レコード終了時間」プロパティで定義された日付のいずれかに設定されます)。
スノーフレーク実装を使用するタイプ2のSCDの場合、タイプ2トリガーを持つ子レコードが含まれるレコードは削除できないので注意してください。
NO: タイプ2のSCDからデータを抽出する場合、自然識別子と一致する、履歴レコードを含むすべてのレコードがディメンションから抽出されます。
タイプ2のSCDからデータを削除する場合、自然識別子と一致する、履歴レコードを含むすべてのレコードがクローズされます。ただし、レコードはディメンションから削除されません。クローズしたレコードの子レコードはすべて、クローズした親にリンクしたままとなります。
AWロード前に切捨て このプロパティはMOLAPディメンションにのみ適用可能です。これは、新規データをロードする前に既存のすべてのディメンション・データを切り捨てるかどうかを示します。新規データをロードする前に既存のすべてのディメンション・データを切り捨てるには、このプロパティをYESに設定します。
AWステージ済ロード このプロパティはMOLAPディメンションにのみ適用可能です。アナリティック・ワークスペースへのロード前にセット・ベースのロード・データを一時表にステージするには、このオプションを選択します。
ディメンション演算子内の各グループはディメンション・レベルを表します。ディメンション・レベルごとに次のプロパティを設定できます。
抽出タイプ: ディメンションがソースとして使用される場合に実行される抽出操作を表します。タイプ2のSCDからのみ現行レコードを抽出するには、「現行のみ抽出(タイプ2のみ)」を選択します。このプロパティはタイプ2のSCDにのみ有効です。ディメンションまたはSCDからすべてのレコードを抽出するには、「すべて抽出」を選択します。
デフォルトのオープン・レコード終了時間: このプロパティは、タイプ2のSCDにのみ適用可能です。これは、新規に作成したオープン・レコードの終了時間として使用される日付値を表します。デフォルト値は「NULL」です。
マッピングのディメンション演算子を使用すると、リポジトリ・ディメンションまたはSCDに格納されているデータをソーシングできます。
ディメンションからのデータのソーシング ディメンションに格納されているデータをソーシングするには、ディメンション演算子が含まれるマッピングを作成します。このディメンション演算子が、ソース・データを含むリポジトリ・ディメンションにバインドされていることを確認する必要があります。次に、属性をディメンション・レベルからターゲット演算子にマップします。ディメンションからデータをソーシングするマッピングの例は、図25-4を参照してください。
タイプ2緩やかに変化するディメンションからのデータのソーシング・ディメンション演算子を使用すると、タイプ2のSCDに格納されているデータをソーシングできます。タイプ2のSCDにはシングル・レコードの複数のバージョンが格納されているため、使用するレコードのバージョンを指定する必要があります。
各ディメンション・レベルを示すグループの「抽出タイプ」プロパティを使用して、データのソーシング元となるレベル・レコードのバージョンを指定します。特定のレベル・レコードのすべてのバージョンをロードするには、「すべて抽出」を選択します。レベル・レコードの最新バージョンのみを取得するには、「抽出タイプ」プロパティを「現行のみ抽出(タイプ2のみ)」に設定します。
ディメンション・レベルのプロパティを設定するには、ディメンション演算子のレベルを示すグループを選択します。「グループのプロパティ」パネルに、レベルのプロパティが表示されます。
タイプ3緩やかに変化するディメンションからのデータのソーシング タイプ3のSCDからデータをソーシングするには、ディメンション演算子が含まれるマッピングを作成します。データのソーシング元となるリポジトリにあるタイプ3のSCDに、このディメンション演算子をバインドします。タイプ3のSCDでは、個別の属性を使用して、バージョニング対象属性の履歴値を格納します。このため、履歴データをソーシングするには、バージョニング対象属性の前の値を示す属性をターゲットにマップします。現在のデータをソーシングするには、レベル属性を格納する属性をターゲットにマップします。
図25-6に、タイプ3のディメンションPRODUCTS
から履歴データ・レコードをソーシングするマッピングを示します。この例では、履歴データをソーシングするために、PREV_DESCRIPTION
、PREV_PACKAGE_TYPE
またはPREV_PACKAGE_SIZE
属性を使用しています。現在のデータをソーシングするには、DESCRIPTION
、PACKAGE_TYPE
またはPACKAGE_SIZE
を使用します。
マッピングでディメンション演算子をターゲットとして使用し、ディメンションおよびSCDにデータをロードします。ソース・オブジェクトを表す演算子からディメンションまたはSCDへのデータ・フローを定義します。
Warehouse Builderは、ディメンションの最上位から順にデータをロードします。
注意: レベルのサロゲート識別子または親サロゲート識別子参照にはデータ・フローをマップできません。 |
ディメンションにデータをロード ディメンションにレコードをロードする前に、Warehouse Builderはロード中のレコードと同じビジネス識別子を持つレコードがディメンション内に存在するかどうかをチェックします。類似したレコードが存在しない場合、ソースのレコードがディメンションに追加されます。類似したレコードが存在する場合、Warehouse Builderは現行レコードを更新して新規属性値を反映させます。
図25-7では、PRODUCTS
ディメンションにデータをロードするマッピングを演算子PRODUCTS_OUT
で表しています。ソース・データはCATEGORIES
およびPRODUCTS
という2つの表に格納されています。CATEGORIES
表には、カテゴリおよびサブカテゴリ情報の両方が格納されています。そのため、この表のデータは2つのフィルタ演算子CATS
およびSUBCATS
を使用してフィルタされます。フィルタされたデータはこの後CATEGORIES
レベルおよびSUBCATEGORIES
ディメンション・レベルにマップされます。ディメンションのTOTAL
レベルは定数演算子を使用してロードされます。PRODUCTS
表のデータはディメンション内のPRODUCTS
レベルに直接マップされます。
ディメンションをロードするためのデータ・フローを定義する場合、Warehouse Builderはデータを実際にディメンションにロードするインライン・プラッガブル・マッピングを作成します。このプラッガブル・マッピングを表示するには、マッピング・エディタキャンバスで「ディメンション」演算子を選択し、グラフィカル・ツールバーの「子グラフの表示」アイコンをクリックします。
タイプ2のSCDにデータをロード タイプ2のSCDにレコードをロードする前に、Warehouse Builderは、同じビジネス識別子を持つレコードがタイプ2のSCDに存在するかどうかを最初にチェックします。レコードが存在しない場合、タイプ2のSCDに追加されます。レコードがすでに存在する場合、Warehouse Builderは次の手順を実行します。
プロパティ「デフォルトのオープン・レコード終了時間」で指定した値を設定し、既存のレコードをクローズ済としてマークします。
変更された属性値を使用して新規レコードを作成します。そのレベルの有効日入力がマップされていない場合、演算子のデフォルトの現行レコード有効時間およびデフォルトの現行レコード終了時間プロパティを使用して、有効時間および終了時間が設定されます。そのレベルの有効日入力がマップされている場合は、新規レコードの有効時間が、有効日入力データ・フローから取得された値に設定されます。有効日入力(接続されている場合)は、各新規レコードの実際の有効日を表します。
旧レコードの有効期限は、入力接続に関係なく、デフォルトの現行レコード終了時間プロパティを使用して設定されます。
緩やかに変化するディメンションにデータをロードするには、タイプ2のSCD内の属性にソース属性をマップします。図25-8に、タイプ2 SCDのPRODUCTSレベルにデータをロードするマッピングを示します。
このマッピングでは、レコードの有効時間がソースからロードされます。デフォルトの現行レコード有効時間プロパティを使用して、「SYSDATE」などのデフォルト値に設定するよう選択することもできます。
これに加えて、履歴レコードのクローズ日を格納する必要があります。図25-8に示すマッピングでは、終了時間属性がソースからロードされません。デフォルトの現行レコード終了時間プロパティを使用してデフォルト値に設定されます。
レベル・レコードの終了時間または有効時間のデフォルト値を設定する手順は、次のとおりです。
「ディメンション」演算子で、有効時間および終了時間属性のデフォルト値を設定する必要があるレベルを表すグループを選択します。たとえば、図25-8に示すマッピングでは、「ディメンション」演算子上の「PRODUCTS」グループを選択します。
「グループのプロパティ」パネルに、選択したレベルのプロパティが表示されます。
デフォルトの現行レコード有効時間を使用して、ロード中のレコードの有効時間として格納する値を指定します。
デフォルトの現行レコード終了時間を使用し、ロード中のレコードの終了時間として格納する値を指定します。
タイプ3のSCDにデータをロード タイプ3のSCDにデータをロードする前に、Warehouse Builderは、同じビジネス識別子を持つレコードがタイプ3のSCDに存在するかどうかをチェックします。レコードが存在しない場合は、追加されます。レコードがすでに存在する場合、Warehouse Builderは次の手順を実行します。
バージョン属性の値を、バージョン属性の以前の値を格納する属性に移動します。
ソース・レコードの値でレコードを更新します。
図25-9に、タイプ3 SCDのPRODUCTSレベルにデータをロードするマッピングを示します。このマッピングでは、現行レコードの有効時間がソースからロードされます。デフォルトの現行レコード有効時間プロパティを使用して、レベル・レコードの有効時間のデフォルト値を設定することもできます。
バージョン属性の以前の値を表す属性にはデータ・フローをマップできません。たとえば、図25-9に示すマッピングでは、PRODUCTS
レベルのPREV_PACK_SIZE
およびPREV_DESCRIPTION
属性に属性をマップできません。
外部表演算子を使用して、Warehouse Builderリポジトリの外部表に格納されているデータをソーシングできます。これにより、この外部表データを別のリポジトリ・オブジェクトにロードしたり、データの変換を実行することが可能です。たとえば、外部表に格納されているデータをソーシングし、マッピング演算子を使用してこのデータを変換してから、ディメンションまたはキューブにロードできます。
図25-10に、外部表演算子を使用するマッピングを示します。外部表演算子EXPENSE_CATEGORY_EXT
は、リポジトリにある同じ名前の外部表にバインドされています。この外部表に格納されているデータを使用して、ディメンションEXPENSE_CATEGORIES
をロードします。
外部表演算子を含むマッピングを作成する手順は、次のとおりです。
外部表演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「外部表の追加」ダイアログが表示されます。
「外部表の追加」ダイアログを使用して、外部表を作成または選択します。これらのオプションの詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
外部表演算子の出力グループの属性をターゲット演算子または中間変換演算子にマップします。
オブジェクトの拡張演算子を使用して、オブジェクト・タイプを拡張し、オブジェクト・タイプを構成する個々の属性を取得できます。
オブジェクトの拡張演算子を、リポジトリ・オブジェクト・タイプにバインドおよび同期化できます。マッピングの生成エラーを回避するため、リポジトリ・オブジェクト・タイプを配布してからマッピングを配布する必要があります。
オブジェクトの拡張演算子には、入力グループと出力グループが1つずつあります。入力グループは、個々の属性を取得するために拡張するオブジェクト・タイプを示します。オブジェクトの拡張演算子をリポジトリ・オブジェクトにバインドする場合、演算子の出力グループには、オブジェクト・タイプを構成する個々の属性が含まれます。
オブジェクトの拡張演算子を含むマッピングを正常に配布するには、次の条件が満たされていることを確認します。
ソース表を含むスキーマがウェアハウス・スキーマと同じインスタンス上にあること。
ソース表に対するSELECT権限がウェアハウス・スキーマに付与されていること。
オブジェクトの拡張演算子で使用されるすべてのオブジェクト・タイプおよびネストされた表に対するEXECUTE権限がウェアハウス・スキーマに付与されていること。
図25-11に、オブジェクトの拡張演算子を使用するマッピングを示します。ソース表CUSTOMERS
には、SQLオブジェクト・タイプであるデータ型ADDR_TYPE
のCUSTOMER_ADDRESS
列が含まれています。しかし、ターゲット表CUST
には、Oracle組込みデータ型の4つの異なる列が含まれ、これらには顧客アドレスの各コンポーネントが格納されています。CUSTOMER_ADDRESS
列の個々の属性を取得するには、オブジェクト・タイプADDR_TYPE
にバインドされるオブジェクトの拡張演算子を作成します。次に、CUSTOMER_ADDRESS
列をオブジェクトの拡張演算子の入力グループにマップします。オブジェクトの拡張演算子の出力グループには、CUSTOMER_ADDRESS
列の個々の属性が含まれています。これらの出力属性をターゲット演算子にマップします。
マッピングのオブジェクトの拡張演算子を定義する手順は、次のとおりです。
オブジェクトの拡張演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「オブジェクトの拡張の追加」ダイアログを使用して、オブジェクトを作成または選択します。これらのオプションの詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
拡張が必要なソース属性をオブジェクトの拡張演算子の入力グループにマップします。
入力オブジェクト・タイプのシグネチャは、オブジェクトの拡張演算子のシグネチャと同じである必要があります。
オブジェクトの拡張演算子の出力属性をターゲット属性にマップします。
マッピング入力パラメータを使用して、Warehouse Builderの外部情報をマッピングへの入力として取り込むことができます。
たとえば、マッピング入力パラメータ演算子を使用して、データをステージング領域にロードするマッピングにSYSDATEを渡すことができます。このマッピング入力パラメータを使用して、データをターゲットにロードする別のマッピングにタイムスタンプを渡すこともできます。
マッピングを生成すると、PL/SQLパッケージが作成されます。マッピング入力パラメータは、このパッケージのメイン・プロシージャのシグネチャの一部になります。
マッピング入力パラメータのカーディナリティは1です。この場合、次の演算子への入力として別の行セットと組み合せることができる1つの行セットが作成されます。
入力属性の名前は、マッピング出力パラメータの名前になります。マッピング・エディタ内でマッピング入力パラメータ演算子の属性を接続することにより、これらのパラメータを使用できるようになります。1つのマッピングで使用できるマッピング入力パラメータは1つのみです。
マッピング入力パラメータを定義する場合、データ型とオプションのデフォルト値を指定します。
マッピングのマッピング入力パラメータ演算子を定義する手順は、次のとおりです。
マッピング入力パラメータ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
マッピング入力パラメータ演算子を右クリックし、「詳細をオープン」を選択します。
INPUT_PARAMETERエディタが表示されます。
「出力」タブを選択し、「追加」をクリックして出力属性を追加します。
属性の名前を変更し、データ型やその他の属性のプロパティを定義できます。
「OK」をクリックし、INPUT_PARAMETERエディタを閉じます。
図25-12に示すように、マッピング入力パラメータ演算子の出力属性をターゲット演算子の属性に接続します。
単一のマッピング出力パラメータ演算子を使用して、PL/SQLマッピングの値をWarehouse Builderの外部アプリケーションに送信します。
マッピング出力パラメータ演算子は、SQL*Loaderマッピングでは無効です。マッピングを生成すると、PL/SQLパッケージが作成されます。マッピング出力パラメータは、このパッケージのメイン・プロシージャのシグネチャの一部になります。
マッピング出力パラメータ演算子にあるのは1つの入力グループのみであり、出力グループはありません。1つのマッピングで使用できるのは、1つのマッピング出力パラメータ演算子のみです。マッピング出力パラメータ演算子にマップできるのは、行セットに関連付けられていない属性のみです。たとえば、定数、入力パラメータ、マッピング前プロセスからの出力、またはマッピング後プロセスからの出力にはすべて、行セットに関連付けられていない属性を含めることができます。
マッピングのマッピング出力パラメータ演算子を定義する手順は、次のとおりです。
マッピング出力パラメータ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
マッピング出力パラメータ演算子を右クリックし、「編集」を選択します。
「入力属性」タブを選択し、「追加」をクリックして入力属性を追加します。
属性の名前を変更し、データ型やその他の属性のプロパティを定義できます。
図25-13に、マッピングで使用されるマッピング出力パラメータ演算子の例を示します。
マテリアライズド・ビュー演算子を使用して、Warehouse Builderリポジトリに格納されているマテリアライズド・ビューからのデータのソーシングやマテリアライズド・ビューへのデータのロードが可能です。
たとえば、マテリアライズド・ビューに格納されているデータを使用してキューブをロードできます。マテリアライズド・ビュー演算子には、INOUTGRP1と呼ばれる入力/出力グループが1つあります。この演算子にはグループを追加できませんが、既存の入力/出力グループには属性を追加できます。
マテリアライズド・ビュー演算子は、リポジトリ表にバインドおよび同期化できます。生成されたコード・パッケージでのエラーを回避するため、リポジトリ・マテリアライズド・ビューを配布してから、マテリアライズド・ビュー演算子を含むマッピングを実行する必要があります。
図25-14に、マテリアライズド・ビュー演算子を使用するマッピングを示します。2つのソース表PRODUCTS
とALL_SALES
は、ジョイナ演算子を使用して結合されます。次に、このデータはアグリゲータ演算子を使用して集計されます。集計されたデータを使用してマテリアライズド・ビューSALES_MV
がロードされます。
マテリアライズド・ビュー演算子を含むマッピングを作成する手順は、次のとおりです。
マテリアライズド・ビュー演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「マテリアライズド・ビューの追加」ダイアログが表示されます。
「マテリアライズド・ビューの追加」ダイアログを使用して、マテリアライズド・ビューを作成または選択します。これらのオプションの詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
マテリアライズド・ビュー演算子の属性をマップします。
マテリアライズド・ビュー演算子をターゲットとして使用している場合、ソース属性をマテリアライズド・ビュー演算子の属性に接続します。マテリアライズド・ビュー演算子をソースとして使用している場合、マテリアライズド・ビュー演算子の属性をターゲットに接続します。
順序演算子は、行ごとに増分する順序番号を生成します。
たとえば、順序演算子を使用すると、データをディメンション表にロードするときにサロゲート・キーを作成できます。順序は、ターゲット演算子の入力または他のタイプの演算子の入力に接続できます。順序の出力は、他の演算子からの出力と組み合せることができます。
順序番号は表とは関係なく生成されるため、同じ順序を複数の表に対して使用できます。同じ順序が複数のセッションによって使用される場合があるため、順序番号は連続していない場合があります。
この演算子には、次の出力属性のある出力グループが含まれます。
CURRVAL: 現在の値から生成されます。
NEXTVAL: 次の値から始まり、連続して増分する番号の行セットを生成します。
順序は、1つのモジュールのリポジトリ順序にバインドおよび同期化できます。生成されたコード・パッケージでのエラーを回避するため、リポジトリ順序を生成および配布してから、順序を含むマッピングを配布する必要があります。詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
順序を含むマッピングは、行ベース・モードを使用して生成してください。行が選択されていなくても順序は増分されます。最後の番号から順序を開始する場合、セット・ベースまたはフェイルオーバー・オペレーティング・モードのセット・ベースでSQLパッケージを実行しないでください。モード設定の構成の詳細は、「ランタイム・パラメータ」を参照してください。
図25-15に、順序演算子を使用して表の主キーを自動的に生成するマッピングを示します。順序演算子のNEXTVAL属性は、ターゲットの入力属性にマップされます。ソース表の他の入力属性は、ターゲットに直接マップされます。
マッピングの順序のマッピング演算子を定義する手順は次のとおりです。
順序演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「順序の追加」ダイアログが表示されます。
「順序の追加」ダイアログを使用して、順序を作成または選択します。これらのオプションの詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
必要な出力属性を順序演算子からターゲット属性に接続します。
表演算子を使用して、Warehouse Builderリポジトリに格納されている表からのデータのソーシングや表へのデータのロードが可能です。
表演算子は、リポジトリ表にバインドおよび同期化できます。生成されたコード・パッケージでのエラーを回避するため、リポジトリ表を配布してから、表演算子を含むマッピングを生成する必要があります。
図25-15に、表演算子をソースとターゲットの両方として使用するマッピングを示します。図25-5に、表演算子をターゲットとして使用するマッピングを示します。
マッピングの表演算子を定義する手順は次のとおりです。
表演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「表の追加」ダイアログが表示されます。
「表の追加」ダイアログを使用して、表を作成または選択します。これらのオプションの詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
表演算子の属性をマップします。
表をターゲットとして使用している場合、ソース属性を表演算子の属性に接続します。表をソースとして使用している場合、表演算子の属性をターゲットに接続します。
ネストした表または可変長配列タイプのオブジェクトがある場合、可変長配列イテレータ演算子を使用して、この表タイプの値を反復できます。
この演算子は、表タイプ属性をソースとして受け入れ、ネストした表に定義されているベース要素タイプまたは可変長配列タイプの値を生成します。演算子がバインドされている場合、演算子に対して調整演算が実行されます。バインドされていない可変長配列イテレータ演算子については、調整演算はサポートされていません。
可変長配列イテレータ演算子は、バインドされている演算子またはバインドされていない演算子として作成できます。バインドされていない可変長配列イテレータ演算子は同期化または検証できません。この演算子の入力グループと出力グループは1つずつのみです。他のデータ型の属性を持つ入力グループも使用できます。ただし、少なくとも1つの表タイプ属性が必要です。
出力グループの属性は、入力グループの属性のコピーです。唯一異なるのは、出力グループは、演算子がバインドされている表タイプ(入力グループ属性の1つ)のかわりに、入力グループのベース要素タイプと同じ属性を持つという点です。入力グループは編集できますが、出力グループは編集できません。
マッピングの可変長配列イテレータ演算子を定義する手順は次のとおりです。
可変長配列イテレータ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「可変長配列イテレータの追加」ダイアログが表示されます。
「可変長配列イテレータの追加」ダイアログで、バインドされていない演算子またはバインドされている演算子を選択します。
バインドされていない演算子を選択した場合、属性のない可変長配列イテレータ演算子が作成されます。これらの属性は手動で作成する必要があります。
バインドされている演算子を選択した場合、ツリーに表示されていて使用可能なネストした表または可変長配列タイプの1つを選択する必要があります。出力属性はベース要素と同じです。
「OK」をクリックします。
可変長配列イテレータ演算子の属性をマップします。
バインドされていない演算子の場合、マッピング・エディタのキャンバスでバインドされていない可変長配列イテレータ演算子を右クリックし、「詳細をオープン」を選択します。これにより、「可変長配列イテレータ」エディタ・ダイアログが開きます。入力グループに属性を追加するには、「追加」ボタンを使用します。変更できるのは、出力グループの属性のデータ型のみです。
ビュー演算子を使用して、Warehouse Builderリポジトリに格納されているビューからのデータのソーシングやビューへのデータのロードが可能です。
ビュー演算子は、リポジトリ・ビューにバインドおよび同期化できます。生成されたコード・パッケージでのエラーを回避するため、リポジトリ・ビューを配布してから、ビュー演算子が含まれるマッピングを生成する必要があります。
マッピングのビュー演算子を定義する手順は次のとおりです。
ビュー演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「ビューの追加」ダイアログが表示されます。
「ビューの追加」ダイアログを使用して、ビューを作成または選択します。これらのオプションの詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
ビュー演算子の属性をマップします。
ビューをターゲットとして使用している場合、ソース属性をビュー演算子の属性に接続します。ビューをソースとして使用している場合、ビュー演算子の属性をターゲットに接続します。
マッピングのターゲット演算子は、Oracleのリモート・ロケーションまたはOracle以外のデータベース・ロケーション(SQL ServerやDB2など)にバインドできます。このような演算子は、Oracle以外のターゲットと呼ばれます。これらのターゲットにアクセスするには、データベース・リンクを使用します。データベース・リンクは、ロケーションを使用して作成されます。Warehouse BuilderではSAPを移入するためのABAPが生成されないため、SAPターゲットはサポートされていません。
マッピングでリモート・ターゲットやOracle以外のターゲットを使用する場合、特定の制限が課されます。詳細は、次の各項を参照してください。
マッピングでリモート・ターゲットまたはOracle以外のターゲットを使用する場合、次の制限が適用されます。
ターゲット演算子のロード・タイプのプロパティは「TRUNCATE/INSERT」に設定できません。
このため、マッピングを検証すると、検証エラーが発生します。
Oracle以外のターゲットの場合、ターゲット演算子のロード・タイプのプロパティを「INSERT/UPDATE」に設定すると、ロード・タイプを「INSERT」に設定した場合と同じ結果になります。
DML文でRETURNING句はサポートされません。
RETURNING句を使用すると、行ベース・モードを使用してターゲットにロードされた行のROWIDを取得できます。これらのROWIDは、ランタイム監査システムによって記録されます。ただし、リモート・ターゲットまたはOracle以外のターゲットの場合、RETURNING句は生成されず、ROWIDフィールドについてNULLがランタイム監査システムに渡されます。
セット・ベース・モードの場合、Oracleデータベースのデータはリモート・ターゲットまたはOracle以外のターゲットにはロードできません。セット・ベースのフェイルオーバーを含め、他のすべてのモードはサポートされます。
ターゲット演算子のオペレーティング・モードのプロパティをセット・ベースに設定すると、ランタイム・エラーが発生します。
マッピングでリモート・ターゲットまたはOracle以外のターゲットを使用する場合、特定の制限があるアクティビティに対してはデフォルトの対応策が使用されます。これらの対応策は、情報用としてのみリストされています。これらの対応策を有効にするために、なんらかの作業を明示的に実行する必要はありません。
リモート・ターゲットまたはOracle以外のターゲット用として使用されるデフォルトの対応策は、次のとおりです。
ターゲットのロード・タイプを「INSERT/UPDATE」または「UPDATE/INSERT」(Oracle9iの場合)、および「UPDATE」(Oracle10gの場合)に設定すると、このマッピングをセット・ベース・モードで実装するためにMERGEが生成されます。ただし、MERGE文はリモート・ターゲットまたはOracle以外のターゲットに対しては実行できません。このため、マッピングでリモート・ターゲットまたはOracle以外のターゲットを使用する場合、MERGE文なしでコードが生成されます。生成されるコードは、PL/SQL生成モードをOracle8iに設定したときに生成されるものと同じです。
リモート・ターゲットまたはOracle以外のターゲットにロードされるデータベース順序を参照するセット・ベースのDML文の場合、GLOBAL_NAMESパラメータをTRUEに設定する必要があります。マッピング用のコードの生成時にマッピングにリモート・ターゲットまたはOracle以外のターゲットが含まれる場合、このパラメータはTRUEに設定されます。
リモート・ターゲットまたはOracle以外のターゲットに対する複数表挿入の場合、Warehouse Builderのコード・ジェネレータにより、複数表挿入文のかわりに表ごとに挿入文が生成されます。
リモート・ターゲットまたはOracleデータベース以外のターゲットに対してバルク挿入を実行する場合、バルク処理コードは生成されません。かわりに、1回に1行ずつ処理するコードが生成されます。つまり、演算子のバルク生成プロパティは無視されます。
注意: リモート・ターゲットまたはOracle以外のターゲットで使用されるロード・タイプは、他のOracleターゲット演算子で使用されるものと同じです。ロード・タイプのプロパティの詳細は、「Oracleターゲット演算子のロード・タイプ」を参照してください。 |
フラット・ファイル演算子を使用すると、フラット・ファイルをマッピングのソースまたはターゲットとして使用できます。
フラット・ファイル演算子のプロパティは、ソースとターゲットのいずれかとして設定できます。フラット・ファイルのロード・タイプおよび1行目のフィールド名を設定できます。他のすべての設定は読取り専用であり、フラット・ファイルをインポートした方法によって異なります。図25-17に示すような演算子のプロパティ・ウィンドウが表示されます。
ドロップダウン・リストからロード・タイプを選択します。
挿入: 新しいターゲット・ファイルを作成します。ターゲット・ファイルがすでに存在する場合、新しく作成されたファイルで既存 のファイルが置換されます。
更新: ターゲット・ファイルが存在しない場合、新しいターゲット・ファイルを作成します。ターゲット・ファイルがすでに存在する場合は、そのファイルが追加されます。
なし: ターゲット・ファイル内のデータに対する操作は実行されません。この設定は、テスト用として役立ちます。すべての変換および抽出がターゲットへの影響なしに実行されます。
演算子の1行目のフィールド名を書き込む場合、このプロパティをTRUEに設定します。それ以外の場合は、Falseに設定します。
フラット・ファイル演算子は、ソースまたはターゲットとして使用できます。
ただし、同じマッピング内ではソースとターゲットは相互排他的です。フラット・ファイルのソースとターゲットでは、コード生成言語が異なります。このため、マッピングでは、制限付きでフラット・ファイル、リレーショナル・オブジェクトおよび変換が混在する場合があります。この項で詳述します。
フラット・ファイル演算子には、次のオプションがあります。
前にインポートしたフラット・ファイルの使用
マッピングへの新規フラット・ファイルのインポートおよびバインド
マッピングでの新規フラット・ファイルのソースまたはターゲットとしての定義
フラット・ファイルのデータは、フラット・ファイル演算子または外部表演算子を使用してマッピングに取り込むことができます。大量のデータをロードする場合、フラット・ファイルにロードすることにより、DIRECT PATH SQL*Loaderオプションを使用できるようになり、パフォーマンスが向上します。
大量のデータをロードしない場合、外部表機能で使用可能な多くのリレーショナル変換を利用できます。詳細は、「外部表演算子とフラット・ファイル演算子」を参照してください。
ソースとして使用する場合、フラット・ファイル演算子は、SQL*Loaderユーティリティを使用してフラット・ファイルからデータを読み取る行セット・ジェネレータとして機能します。フラット・ファイル・ソース演算子は、フラット・ファイル・ターゲットまたは外部表へのマップ用としては使用しないでください。フラット・ファイル・ソース演算子を使用してマッピングを設計する場合、次の演算子を使用できます。
外部表演算子を除くその他のリレーショナル・ターゲット・オブジェクト
注意: 順序、式または変換演算子を使用する場合、SQL*Loaderの直接ロード設定は構成パラメータとして使用できません。 |
マッピングでフラット・ファイルをソースとして使用する場合、マッピングを正常に配布するために、フラット・ファイル・ソースからリレーショナル・ターゲットへのコネクタを必ず作成してください。
フラット・ファイル・ターゲットを使用したマッピングでは、データを表の行にロードするのではなく、データをフラット・ファイルにロードするPL/SQLパッケージが生成されます。
注意: 1つのマッピングは、1回に最大50のフラット・ファイル・ターゲット演算子を含むことができます。 |
既存のフラット・ファイルは、レコード・タイプが単一でも複数でも使用できます。複数のレコード・タイプのフラット・ファイルをターゲットとして使用する場合、1つのレコード・タイプに対してのみマップできます。同じソースのフラット・ファイルのすべてのレコード・タイプをロードする場合、同じフラット・ファイルをターゲットとしてマッピングに再ドロップし、別のレコード・タイプにマップできます。この例は、「SQL*Loaderマッピングにおける参照整合性の保証へのダイレクト・パス・ロードの使用」を参照してください。または、ロードするレコード・タイプごとに異なるマッピングを作成してください。
新規フラット・ファイル・ターゲットを作成する方法は、「新規フラット・ファイル・ターゲットの作成」を参照してください。