この付録では、ODI 12.1.2パッチ番号17053768「Oracle Warehouse BuilderからOracle Data Integratorへの移行ユーティリティのパッチ」で提供されている新機能および拡張機能についての情報を提供します。
ODI 12.1.2パッチ番号17053768は、My Oracle Supportで検索およびダウンロードできます。My Oracle Supportにアクセスするには、次のURLをクリックします。
http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info
この付録の構成は、次のとおりです。
この項では、ODI 12.1.2パッチ番号17053768で使用できる新機能についての情報を提供します。この項には次のトピックが含まれます:
ピボット・コンポーネントは、複数の入力行に格納されているデータを単一の出力行に変換するプロジェクタ・コンポーネント(「プロジェクタ・コンポーネント」を参照)です。ピボット・コンポーネントを使用すると、ソースからのデータの抽出後に、ソース・データ内で属性別にグループ化されているソース行セットから1行を生成できます。ピボット・コンポーネントは、マッピングのデータ・フローの任意の場所で使用できます。
SALESに、SALESリレーショナル表のサンプル・データを示します。QUARTER属性がとることのできる文字値は4種類あり、それぞれが各四半期に対応しています。すべての売上データは、SALESという1つの属性に含まれます。
表C-1 SALES
YEAR | QUARTER | SALES |
---|---|---|
2010 |
Q1 |
10.5 |
2010 |
Q2 |
11.4 |
2010 |
Q3 |
9.5 |
2010 |
Q4 |
8.7 |
2011 |
Q1 |
9.5 |
2011 |
Q2 |
10.5 |
2011 |
Q3 |
10.3 |
2011 |
Q4 |
7.6 |
PIVOTED DATAに、表がアンピボットされた後のリレーショナル表SALESのデータを示します。それまでQUARTER属性(Q1、Q2、Q3およびQ4)に格納されていたデータは個別の4つの属性(Q1_Sales、Q2_Sales、Q3_SalesおよびQ4_Sales)に対応します。前にSALES属性に含まれていた売上データは、各四半期を表す4つの属性間に分散されます。
ピボット・コンポーネントを使用すると、行ロケータに基づいて複数の入力行が1行に変換されます。行ロケータは、定義した一連の出力属性に対応するようにソースから選択する必要のある属性です。アンピボット操作を実行するには、行ロケータを指定する必要があります。
この例では、行ロケータはSALES表の属性QUARTERで、ピボットされた出力データの属性Q1_Sales、Q2_Sales、Q3_SalesおよびQ4_Salesに対応します。
マッピングでピボット・コンポーネントを使用するには:
ソース・データストアを論理ダイアグラムにドラッグ・アンド・ドロップします。
コンポーネント・パレットから論理ダイアグラムにピボット・コンポーネントをドラッグ・アンド・ドロップします。
ソース・データストアから適切な属性をピボット・コンポーネントにドラッグ・アンド・ドロップします。この例では、YEAR属性です。
注意: 行ロケータ属性または出力属性に対応するデータ値が含まれる属性をドラッグしないでください。この例では、QUARTERが行ロケータ属性で、SALESがQ1_Sales、Q2_Sales、Q3_SalesおよびQ4_Sales出力属性に対応するデータ値(売上高)が格納される属性です。 |
ピボット・コンポーネントを選択します。アンピボット・コンポーネントのプロパティは、プロパティ・インスペクタに表示されます。
ピボット・コンポーネントの名前および説明を入力します。
式を入力するか式エディタを使用して行ロケータを指定します。この例では、SALES表のQUARTER属性が行ロケータであるため、式はSALES.QUARTERとなります。
「行ロケータ値」の下で「+」記号をクリックして行ロケータ値を追加します。この例では、行ロケータ属性QUARTERに指定可能な値はQ1、Q2、Q3およびQ4です。
「属性」の下で、各入力行に対応する出力属性を追加します。必要に応じて、新規属性を追加したり、リストされている属性の名前を変更できます。
この例では、4つの入力行Q1、Q2、Q3およびQ4にそれぞれ対応する4つの新規属性Q1_Sales、Q2_Sales、Q3_SalesおよびQ4_Salesを追加します。
必要に応じて、ソースから売上高を取得する各属性の式を変更し、各属性に一致する行を選択します。
この例では、各属性に対する式をSALES.SALESに設定し、それぞれ一致する行をQ1、Q2、Q3およびQ4に設定します。
ターゲット・データストアを論理ダイアグラムにドラッグ・アンド・ドロップします。
ピボット・コンポーネントの出力(右)コネクタからターゲット・データストアの入力(左)コネクタへとリンクをドラッグし、ピボット・コンポーネントをターゲット・データストアに接続します。
ピボット・コンポーネントの適切な属性をターゲット・データストアにドラッグ・アンド・ドロップします。この例では、YEAR、Q1_Sales、Q2_Sales、Q3_SalesおよびQ4_Salesです。
必要に応じて、物理ダイアグラムに移動して新しいKMを割り当てます。
マッピングを保存および実行してピボット操作を実行します。
アンピボット・コンポーネントは、属性にまたがって格納されているデータを複数の行に変換するプロジェクタ・コンポーネント(「プロジェクタ・コンポーネント」を参照)です。
アンピボット・コンポーネントは、ピボット・コンポーネントと逆の処理を実行します。ピボット・コンポーネントと同様に、アンピボット・コンポーネントはマッピングのフローの任意の場所で使用できます。
アンピボット・コンポーネントは、フラット・ファイルなど、行ではなく属性にまたがってデータが格納されている非リレーショナル・データ・ソースからデータを抽出する場合に特に役立ちます。
表C-3に示す外部表QUARTERLY_SALES_DATAには、フラット・ファイルのデータが含まれています。1行に各年と、各四半期の売上を示す個別の属性が格納されています。
表C-3 QUARTERLY_SALES_DATA
Year | Q1_Sales | Q2_Sales | Q3_Sales | Q4_Sales |
---|---|---|---|---|
2010 |
10.5 |
11.4 |
9.5 |
8.7 |
2011 |
9.5 |
10.5 |
10.3 |
7.6 |
表C-4は、アンピボット操作が実行された後のデータのサンプルを示しています。それまで複数の属性(Q1_Sales、Q2_Sales、Q3_SalesおよびQ4_Sales)にわたって格納されていたデータが単一の属性(SALES)に格納されています。アンピボット・コンポーネントは単一の属性(Q1_Sales)のデータを2つの属性(QUARTERおよびSALES)に分割します。QUARTERLY_SALES_DATAの1つの行はアンピボット・データの4行(各四半期の売上に対して1行)に対応します。
行ロケータはソースからの反復データ・セットに対応する出力属性です。アンピボット・コンポーネントでは1つの入力属性が複数行に変換され、行ロケータの値が生成されます。ソースからのデータに対応する他の属性は値ロケータとして参照されます。この例では、属性QUARTERが行ロケータで、属性SALESは値ロケータです。
注意: アンピボット・コンポーネントを使用するには、アンピボット・コンポーネントの行ロケータ属性および値ロケータ属性を作成する必要があります。 |
マッピングでアンピボット・コンポーネントを使用するには:
ソース・データストアを論理ダイアグラムにドラッグ・アンド・ドロップします。
コンポーネント・パレットから論理ダイアグラムにアンピボット・コンポーネントをドラッグ・アンド・ドロップします。
ソース・データストアから適切な属性をアンピボット・コンポーネントにドラッグ・アンド・ドロップします。この例では、YEAR属性です。
注意: 値ロケータに対応するデータが格納されている属性をドラッグしないでください。この例では、Q1_Sales、Q2_Sales、Q3_SalesおよびQ4_Salesです。 |
アンピボット・コンポーネントを選択します。アンピボット・コンポーネントのプロパティは、プロパティ・インスペクタに表示されます。
アンピボット・コンポーネントの名前および説明を入力します。
属性エディタを使用して行ロケータ属性および値ロケータ属性を作成します。この例では、QUARTERおよびSALESという名前の2つの属性を作成する必要があります。
注意: 属性に対して適切なデータ・タイプおよび制約(必要な場合)を定義するのを忘れないでください。 |
プロパティ・インスペクタの「UNPIVOT」の下で、「行ロケータ」ドロップダウン・リストから行ロケータ属性を選択します。この例では、QUARTERです。
行ロケータを選択したため、他の属性は値ロケータとして動作できます。この例では、SALESです。
「UNPIVOT TRANSFORMS」の下で、「+」をクリックして各出力属性の変換ルールを追加します。変換ルールのデフォルト値を編集し、適切な式を指定して必要な論理を作成します。
この例では、各四半期に対して1つ、合わせて4つの変換ルールを追加する必要があります。変換ルールでは、行ロケータ属性QUARTERおよび値ロケータ属性SALESに移入される値が定義されます。QUARTER属性には定数値(Q1、Q2、Q3およびQ4)を移入する必要があり、SALES属性にはソース・データストア属性(Q1_Sales、Q2_Sales、Q3_SalesおよびQ4_Sales)からの値を移入する必要があります。
NULLとして定義されている属性に対してデータがない行を生成するには、「INCLUDE NULLS」チェック・ボックスを選択したままにしておきます。
ターゲット・データストアを論理ダイアグラムにドラッグ・アンド・ドロップします。
アンピボット・コンポーネントの出力(右)コネクタからターゲット・データストアの入力(左)コネクタへとリンクをドラッグし、アンピボット・コンポーネントをターゲット・データストアに接続します。
アンピボット・コンポーネントの適切な属性をターゲット・データストアにドラッグ・アンド・ドロップします。この例では、YEAR、QUARTERおよびSALESです。
必要に応じて、物理ダイアグラムに移動して新しいKMを割り当てます。
「保存」をクリックし、それからマッピングを実行してアンピボット操作を実行します。
テーブル・ファンクション・コンポーネントは、マッピングのテーブル・ファンクションを表すプロジェクタ・コンポーネント(「プロジェクタ・コンポーネント」を参照)です。テーブル・ファンクション・コンポーネントを使用すると、入力行セットを操作し、同一または異なるカーディナリティを持つ別の出力行セットを戻すことができます。出力行セットは物理表のように問合せ可能です。テーブル・ファンクション・コンポーネントは、ソース、ターゲットまたはデータ・フロー・コンポーネントとして、マッピングのどこにでも配置できます。
テーブル・ファンクション・コンポーネントには、複数の入力コネクタ・ポイントと、1つの出力コネクタ・ポイントを設定できます。入力コネクタ・ポイント属性はテーブル・ファンクションの入力パラメータとして動作し、出力コネクタ・ポイント属性は戻り値を格納するのに使用されます。
各入力コネクタに対し、入力コネクタ・ポイントに設定される属性タイプに応じてパラメータ・タイプREF_CURSORまたはSCALARを定義できます。
マッピングでテーブル・ファンクション・コンポーネントを使用するには:
データベースにテーブル・ファンクションが存在しない場合は作成します。
「マッピング」ノードを右クリックし、「新規マッピング」を選択します。
ソース・データストアを論理ダイアグラムにドラッグ・アンド・ドロップします。
コンポーネント・パレットから論理ダイアグラムにテーブル・ファンクション・コンポーネントをドラッグ・アンド・ドロップします。入力コネクタ・ポイントがなく、デフォルト出力コネクタ・ポイントが1つ設定されたテーブル・ファンクション・コンポーネントが作成されます。
テーブル・ファンクション・コンポーネントをクリックします。テーブル・ファンクション・コンポーネントのプロパティは、プロパティ・インスペクタに表示されます。
プロパティ・インスペクタで「属性」タブに移動します。
「名前」フィールドにテーブル・ファンクションの名前を入力します。テーブル・ファンクションが別のスキーマにある場合は、ファンクション名をSCHEMA_NAME.FUNCTION_NAMEのように入力します。
「コネクタ・ポイント」タブに移動し、「+」記号をクリックして新しい入力コネクタ・ポイントを追加します。各入力コネクタに対して適切なパラメータ・タイプを設定するのを忘れないでください。
注意: REF_CURSOR属性はそれぞれ、パラメータ・タイプがREF_CURSORに設定された別個の入力コネクタ・ポイントに設定する必要があります。SCALAR属性は、パラメータ・タイプがSCALARに設定された単一の入力コネクタ・ポイントに複数設定できます。 |
「属性」タブに移動し、(前のステップで作成した)入力コネクタ・ポイントおよび出力コネクタ・ポイントに対して属性を追加します。入力コネクタ・ポイント属性はテーブル・ファンクションの入力パラメータとして動作し、出力コネクタ・ポイント属性は戻り値を格納するのに使用されます。
ソース・データストアの必要な属性を、テーブル・ファンクション・コンポーネントの入力コネクタ・ポイントの適切な属性にドラッグ・アンド・ドロップします。ソース・データストアとテーブル・ファンクション・コンポーネント間の接続が作成されます。
ターゲット・データストアを論理ダイアグラムにドラッグ・アンド・ドロップします。
テーブル・ファンクション・コンポーネントの出力属性をターゲット・データストアの属性にドラッグ・アンド・ドロップします。
マッピングの物理ダイアグラムに移動し、テーブル・ファンクション・コンポーネントが正しい実行ユニット内にあることを確認します。そうでない場合は、テーブル・ファンクションを正しい実行ユニットに移動します。
必要な場合は、新しいKMを割り当てます。
マッピングを保存し、実行します。
副問合せフィルタ・コンポーネントは、副問合せの結果に基づいて行をフィルタするプロジェクタ・コンポーネント(「プロジェクタ・コンポーネント」を参照)です。行のフィルタに使用できる条件は、EXISTS、NOT EXISTS、INおよびNOT INです。
たとえば、EMPデータストアに従業員データが格納されており、DEPTデータストアに部門データが格納されているとします。副問合せを使用してDEPTデータストアからレコードのセットをフェッチし、その後、いずれかの副問合せ条件を使用してEMPデータストアの行をフィルタできます。
副問合せフィルタ・コンポーネントには2つの入力コネクタ・ポイントと、1つの出力コネクタ・ポイントがあります。この2つの入力コネクタ・ポイントは、ドライバ入力コネクタ・ポイントと副問合せフィルタ入力コネクタ・ポイントです。ドライバ入力コネクタ・ポイントではメイン・データストアが設定され、これを基に全体問合せが実行されます。副問合せフィルタ入力コネクタ・ポイントでは、副問合せで使用されるデータストアが設定されます。この例では、EMPがドライバ入力コネクタ・ポイントで、DEPTが副問合せフィルタ入力コネクタ・ポイントです。
副問合せフィルタ・フィルタ・コンポーネントを使用して行をフィルタするには:
コンポーネント・パレットから論理ダイアグラムに副問合せフィルタ・コンポーネントをドラッグ・アンド・ドロップします。
副問合せフィルタ・コンポーネントをソース・データストアおよびターゲット・データストアに接続します。
ソース・データストアから入力属性を副問合せフィルタ・コンポーネントにドラッグ・アンド・ドロップします。
副問合せフィルタ・コンポーネントの出力属性をターゲット・データストアにドラッグ・アンド・ドロップします。
「コネクタ・ポイント」タブに移動し、ドライバ入力コネクタ・ポイントおよび副問合せフィルタ入力コネクタ・ポイントの入力データストアを選択します。
副問合せフィルタ・コンポーネントをクリックします。副問合せフィルタ・コンポーネントのプロパティは、プロパティ・インスペクタに表示されます。
「Attributes」タブに移動します。出力コネクタ・ポイント属性がリストされます。ドライバ入力コネクタ・ポイントおよび副問合せフィルタ・コネクタ・ポイントの式を設定します。
注意: 副問合せフィルタ入力ロールが次のいずれかに設定されている場合のみ、副問合せフィルタ入力コネクタ・ポイントの式を設定する必要があります。 IN、NOT IN、=、>、<、>=、<=、!=、<>、^= |
「条件」タブに移動します。
「副問合せフィルタ条件」フィールドに式を入力します。副問合せフィルタ入力ロールが「EXISTS」または「NOT EXISTS」に設定されている場合、副問合せフィルタ条件を指定する必要があります。
副問合せフィルタ入力ロールを「副問合せフィルタ入力ロール」ドロップダウン・リストから選択します。
グループ比較条件を「グループ比較条件」ドロップダウン・リストから選択します。グループ比較条件は、次の副問合せ入力ロールでのみ使用できます。
=、>、<、>=、<=、!=、<>、^=
マッピングを保存し、実行します。
この項では、ODI 12.1.2パッチ番号17053768で拡張された既存の機能についての情報を提供します。この項には次のトピックが含まれます:
この項では、ルックアップ・コンポーネントに対して加えられた拡張について説明します。2つの新しいプロパティ「複数の一致行」および「一致行なし」がルックアップ・プロパティに追加されました。これらのプロパティは、「ルックアップ・プロパティ」ページの「一致行ルール」セクションに表示されます。
「ルックアップ・タイプ」プロパティは「複数の一致行」プロパティに置き換えられました。
「複数の一致行」プロパティは、ルックアップによって複数の結果が戻された場合に、ルックアップ結果のどの行をルックアップ結果として選択するかを定義します。指定されたルックアップ条件が複数のレコードに一致した場合、複数の行が戻されます。
次のオプションのいずれかを選択して、ルックアップ操作によって複数の行が戻された場合に実行するアクションを指定できます。
エラー: 複数行により、マッピングが失敗します。
このオプションは、ルックアップ操作によって複数の行が戻された場合にマッピングの実行が失敗することを示します。
すべての行(結果行の数が入力行の数と異なる可能性があります)
このオプションは、ルックアップ操作によって複数の行が戻された場合に、すべての行がルックアップ結果として戻されることを示します。
任意の単一行を選択する
このオプションは、ルックアップ操作によって複数の行が戻された場合に、戻された行から任意の1行がルックアップ結果として選択されることを示します。
最初の単一行を選択する
このオプションは、ルックアップ操作によって複数の行が戻された場合に、戻された行から最初の1行がルックアップ結果として選択されることを示します。
n番目の単一行を選択する
このオプションは、ルックアップ操作によって複数の行が戻された場合に、結果行からn番目の行がルックアップ結果として選択されることを示します。このオプションを選択すると「n番目の行番号」フィールドが表示され、ここでnの値を指定できます。
「一致行なし」プロパティは、ルックアップ条件を満たす行がない場合に実行されるアクションを示します。次のオプションのいずれかを選択して、ルックアップ操作によって行が戻されなかった場合に実行するアクションを指定できます。
行が戻りません。
このオプションでは、ルックアップ結果にルックアップ条件を満たす行がない場合、行を戻しません。
行を次のデフォルト値とともに戻します
このオプションでは、ルックアップ結果にルックアップ条件を満たす行がない場合に、デフォルト値を含む行を戻します。このオプションの下の「参照属性のデフォルト値および順序基準」表を使用して、各ルックアップ属性のデフォルト値を指定します。
Oracle Data Integratorの順序が、CURRVAL演算子をサポートするように拡張されました。図C-1に示されているように、式エディタで、「ODIオブジェクト」パネルにリストされている各順序に対してNEXTVALおよびCURRVAL演算子が表示されるようになりました。