データベースのターゲット
データベースターゲットには、Oracle、MySQL、およびMicrosoft SQL Serverなどのリレーショナルソースが含まれています。
データベースターゲットのターゲットトランスフォーメーションを設定する場合は、データを単一のターゲットテーブルに書き込むことができます。既存のテーブルを選択するか、実行時にテーブルを作成することができます。
テーブル名とカラム名は74文字を超えないようにしてください。
データベースターゲットのプロパティ
[プロパティ]パネルの[ターゲット]タブでデータベースターゲットのプロパティを設定します。
次の表にデータベースターゲットプロパティを示します。
プロパティ | 説明 |
---|
接続 | ターゲット接続の名前。 または、パラメータを定義してから、マッピングタスクで接続を指定することもできます。 |
ターゲットタイプ | ターゲットの種類(単一のオブジェクトまたはパラメータ)。 |
オブジェクト | ターゲットオブジェクトの名前。 1つのオブジェクトを選択した場合は、データをプレビューすることもできます。 |
操作 | ターゲット操作(挿入、更新、更新/挿入、削除、またはデータドリブンのいずれか)。 |
ターゲットの切り詰め | 新しい行を挿入する前にターゲットオブジェクトを切り詰めます。 挿入操作およびデータドリブン操作に適用されます。 |
ターゲットの一括ロードの有効化 | データベースの一括APIを使用して、挿入操作を実行します。 一括APIを使用して、最小限の数のAPI呼び出しでデータベースに大量のデータを書き込みます。[Bulk]モードでロードすると、パフォーマンスを向上させることができますが、データベースロギングが発生しないので、リカバリを実行する機能が制限されます。 挿入操作に適用されます。 |
更新カラム | ターゲットデータの更新、更新/挿入、または削除を行うときに一時プライマリキーカラムとして使用するフィールド。複数の更新カラムを選択した場合、マッピングタスクは各更新カラムとAND演算子を使用して、一致する行を特定します。 更新、更新/挿入、削除、およびデータドリブン操作に適用されます。 |
データ依存条件 | 行に挿入、更新、削除、または拒否操作のフラグを設定する式を定義できます。 例えば、次のIIFステートメントは、IDフィールドがnullの場合に、行に拒否のフラグを設定します。そうでない場合は行に更新のフラグを設定します。 IIF (ISNULL(ID), DD_REJECT, DD_UPDATE ) データドリブン操作に適用されます。 |
拒否された行の転送 | マッピングタスクを実行すると、拒否された行が拒否ファイルに転送されるようにします。 拒否された行を転送しない場合、マッピングタスクは拒否された行を削除してセッションログに書き込みます。 行エラー処理を有効にした場合、マッピングタスクは拒否ファイルを生成する代わりに、拒否された行と削除された行を行エラーのログに書き込みます。削除された行を、行エラーログだけでなくセッションログにも書き出したい場合は、Verbose Dataトレースを有効にします。 |
Pre SQL | データをソースから読み取る前にターゲットに対して実行するSQLコマンド。 5000文字までのコマンドを入力できます。 |
Post SQL | データをターゲットに書き込んだ後にターゲットに対して実行するSQLコマンド。 5000文字までのコマンドを入力できます。 |
更新オーバーライド | ターゲットのデフォルトのUPDATE文をオーバーライドします。 UPDATE文を入力します。または、[設定]をクリックしてデフォルトのUPDATE文を生成し、デフォルトの文を変更します。 入力したUPDATE文により、データ統合がキーカラムに基づいてターゲットを更新するために使用するデフォルトのUPDATE文がオーバーライドされます。UPDATE文のオーバーライドを定義すると、キー以外のカラムに基づいてターゲットテーブルを更新できます。 |
拒否ファイルディレクトリ | 拒否ファイルを書き込むディレクトリパス。デフォルトでは、マッピングタスクはすべての拒否ファイルを次のサービスプロセス変数ディレクトリに書き込みます: $PMBadFileDir/<federated task ID> [拒否ファイル名]フィールドでディレクトリとファイル名の両方を指定する場合は、このフィールドをクリアします。マッピングタスクはタスクの実行時に、このフィールドと[拒否ファイル名]フィールドを連結します。 |
拒否ファイル名 | 拒否ファイルのファイル名、またはファイル名とパス。デフォルトでは、マッピングタスクはターゲットオブジェクト名に従って、「<ターゲット名>.bad」のように拒否ファイルに名前を付けます。 マッピングタスクはタスクの実行時に、このフィールドと[拒否ファイルディレクトリ]フィールドを連結します。例えば、[拒否ファイルディレクトリ]フィールドに「C:\reject_file\」を指定し、[拒否ファイル名]フィールドに「filename.bad」と入力した場合、マッピングタスクにより「C:\reject_file\filename.bad」に拒否された行が書き込まれます。 |
データベースターゲットのプロパティの詳細については、目的のコネクタのヘルプを参照してください。
ベクトルデータベースターゲットのプロパティ
詳細モードでは、Pineconeなどのベクトルデータベースにベクトルを書き込むことができます。ターゲットプロパティ、詳細プロパティ、およびターゲットフィールドを設定できます。
ターゲットプロパティ
次の表に、ベクトルデータベースターゲットプロパティを示します。
プロパティ | 説明 |
---|
接続 | ターゲット接続の名前。 または、パラメータを定義してから、マッピングタスクで接続を指定することもできます。 |
ターゲットタイプ | ターゲットの種類(単一のオブジェクトまたはパラメータ)。 |
オブジェクト | ターゲットオブジェクトの名前。 |
操作 | ターゲット操作。upsertのみを使用できます。 |
更新カラム | ターゲットデータの更新/挿入を行うときに一時プライマリキーカラムとして使用するフィールド。複数の更新カラムを選択した場合、マッピングタスクは各更新カラムとAND演算子を使用して、一致する行を特定します。 マッピング内でIDを生成する場合、そのIDは動的であり、ベクトルデータベース内の既存のIDと一致しない可能性があります。生成されたIDがベクトルデータベース内の既存のIDと一致する場合、ターゲットトランスフォーメーションはベクトルデータベース内の行を置き換えますが、そのベクトルが同じデータに対応していない可能性があります。 |
ターゲットプロパティの詳細については、目的のコネクタのヘルプを参照してください。
詳細プロパティ
以下の表に詳細プロパティを示します。
プロパティ | 説明 |
---|
バッチサイズ | ベクトルデータベースが同時に処理する操作の数。 |
名前空間 | ベクトルを格納するベクトルデータベース内の名前空間。 |
ターゲットフィールド
次の表では、ターゲットトランスフォーメーションがベクトルデータベースに書き込む可能性のあるターゲットフィールドについて説明します。
プロパティ | 説明 |
---|
ベクトルID | ベクトルデータベースに格納するベクトルID。このIDは、ベクトル表現にすばやくアクセスして、保存、インデックス作成、および取得操作を効率的に行うのに役立ちます。 ベクトルIDを作成するには、式トランスフォーメーションでUUID_STRING関数を引数を指定せずに使用するか、またはベクトルデータベース内の同じインデックスにデータをロードするすべてのマッピングで共有シーケンスを使用するシーケンスジェネレータトランスフォーメーションを使用できます。 |
ベクトル | ベクトル埋め込みを表すdouble型の配列。 ベクトル埋め込みトランスフォーメーションを使用して、ベクトル埋め込みを作成できます。 |
メタデータ | ベクトルデータベースに構造体として書き込むメタデータ。ベクトルフィールドとベクトルIDフィールドを除くすべての受信フィールドが含まれます。メタデータフィールドには、JSON形式のキーと値のペアのリストが含まれています。 |
ターゲットフィールドは、ベクトルデータベースによって異なる場合があります。ターゲットフィールドの詳細については、該当するコネクタのヘルプを参照してください。
実行時に作成されるデータベースターゲット
マッピングにデータベースターゲットが含まれる場合は、既存のターゲットテーブルを選択するか、実行時にターゲットテーブルを作成することができます。実行時にデータベースターゲットを作成すると、データ統合では、データ型、精度、およびスケールのターゲットオブジェクトメタデータがデータソースに基づいて自動的に検出されます。
ターゲットオブジェクトメタデータを編集する必要がある場合は、ソーストランスフォーメーションで編集できます。
ターゲットフィールドはアップストリームトランスフォーメーションにリンクできません。ターゲットの使用されていないフィールド数を削減する場合は、ターゲットトランスフォーメーションまたはアップストリームトランスフォーメーションのフィールドルールを設定します。
実行時にデータベースターゲットを作成すると、マッピングタスクは、マッピングの初回実行時にアップストリームトランスフォーメーションのフィールドに基づいてデータベーステーブルを作成します。
後続の実行では、マッピングタスクは初回実行時に作成されたターゲットテーブルのデータを置き換えます。このため、最初の実行の後にマッピングを変更した場合、ターゲットフィールド数やそのメタデータへの変更が後続の実行でターゲットに反映されません。変更を確認するには、マッピングを実行する前に既存のターゲットを削除するか、ターゲットの名前を変更します。
実行時にリレーショナルターゲットを作成する場合、ターゲット操作は常に挿入です。ターゲットの切り捨てを選択できます。
注: 2020年9月春リリースの前に作成されたマッピングでは、パラメータ化されたソースのBigintデータは、データ統合によって、ランタイム時に作成されたデータベースターゲット内でintデータに変換されます。Bigintデータを変換せずにターゲットに書き込むには、Mapping Designerでマッピングを編集し、マッピング詳細プロパティでオプションを有効にします。
2020年9月春リリース以降に作成されたマッピングでは、データ統合によってBigintデータは変換されません。
実行時におけるデータベースターゲットの作成
実行時にデータベースターゲットを作成するには、[ターゲットオブジェクト]ダイアログボックスで[実行時に新規作成]を選択し、ターゲットテーブル名を入力します。
1ターゲットトランスフォーメーションの[ターゲット]タブで、データベース接続を選択します。
2ターゲットタイプを[単一オブジェクト]に設定します。
3[選択]をクリックして、ターゲットオブジェクトを選択します。
4[ターゲットオブジェクト]ダイアログボックスで、[実行時に新規作成]を選択します。
5 ターゲットテーブル名を入力します。
6[OK]をクリックします。
リレーショナルターゲットの更新カラム
1つ以上のフィールドをリレーショナルターゲットの更新カラムとして設定できます。更新カラムは、ターゲットテーブル内の行を一意に識別するカラムです。マッピングタスクはそれらのフィールドを使用して、ターゲット内のデータを更新、更新/挿入、または削除します。
ターゲットテーブルにプライマリキーが含まれておらず、マッピングで更新、更新/挿入、または削除の操作が使用されている場合は、更新カラムを設定します。複数の更新カラムを選択した場合、マッピングは各更新カラムとAND演算子を使用して、一致する行を特定します。
マッピングを実行すると、フィールドマッピングを使用して、アップストリームトランスフォーメーションの行がターゲットテーブルに照合されます。マッピングタスクが1つの受信行を複数のターゲット行と照合した場合、一致したすべてのターゲット行に対して特定のタスク操作が実行されます。
ターゲット接続またはターゲットオブジェクトのパラメータを使用して、マッピングタスクの更新カラムを設定できます。
更新カラムの設定
更新またはupsert操作を使用してリレーショナルターゲットのデータを更新する場合、更新カラムを設定できます。
1[プロパティ]パネルで、[ターゲット]タブをクリックします。
2リレーショナル接続を選択します。
リレーショナルデータベース接続タイプの場合は、接続パラメータを使用することもできます。
3使用するターゲットタイプを選択します。
4ターゲットオブジェクトを選択します。
5更新またはupsert操作を選択します。
6更新カラムを選択するには、[追加]をクリックします。
[更新カラム]ウィンドウにすべてのターゲットカラムが表示されます。
7使用するフィールドを[ターゲットカラム]リストから[更新カラム]リストに移動します。
8[OK]をクリックします。
ターゲット更新のオーバーライド
デフォルトでは、データ統合により、キー値に基づいてターゲットテーブルが更新されます。しかしながら、マッピングの各ターゲットについて、デフォルトのUPDATE文を上書きすることができます。これによって、キー以外のカラムに基づいてターゲットの更新を行うことができます。
リレーショナル接続とODBC接続に対してターゲット更新のオーバーライドを入力できます。デフォルトのターゲットUPDATE文をオーバーライドする具体的な手順については、該当するコネクタのヘルプを参照してください。
ターゲットトランスフォーメーションの詳細プロパティでUPDATE文をオーバーライドします。[更新オーバーライド]フィールドにターゲットUPDATE文を入力します。一部のリレーショナル接続では、デフォルトのUPDATE文を生成することができます。[設定]をクリックしてデフォルトのUPDATE文を生成してから、その文を変更します。
ターゲットフィールドはターゲットカラム名に一致する必要があるため、更新文にはターゲットトランスフォーメーションのフィールドを指定するための「:TU」というキーワードが含まれます。この文のUPDATE部分を変更する場合は、TUを使用してフィールドを指定する必要があります。
デフォルトのUPDATE文をオーバーライドする場合は、データベースで有効なSQL文を入力する必要があります。データ統合では構文は検証されません。
例
あるマッピングが各販売員の総販売実績をT_SALESテーブルに送るとします。
データ統合は、ターゲットT_SALESに対して次のデフォルトUPDATE文を生成します。
UPDATE
T_SALES
SET
EMP_NAME = :TU.EMP_NAME,
DATE_SHIPPED = :TU.DATE_SHIPPED,
TOTAL_SALES = :TU.TOTAL_SALES
WHERE
EMP_ID = :TU.EMP_ID
WHERE句をオーバーライドして、Mike Smithという名前の従業員のレコードのみを更新するとします。これを行うには、WHERE句を以下のように編集します。
UPDATE
T_SALES
SET
DATE_SHIPPED = :TU.DATE_SHIPPED,
TOTAL_SALES = :TU.TOTAL_SALES
WHERE
:TU.EMP_NAME = EMP_NAME AND EMP_NAME = 'MIKE SMITH'
ターゲット更新のオーバーライドの設定に関するガイドライン
ターゲット更新クエリを入力する場合には、以下のガイドラインに従ってください。
- •ターゲット更新のオーバーライドを使う場合は、手作業ですべての予約語を引用符で囲む必要があります。
- •ターゲットカラム名に次の文字のどれかが含まれている場合、デフォルトのUPDATE文はオーバーライドできません。
' , ( ) < > = + - * / \ t \ n \ 0 <空白文字>
- •ターゲットテーブルの個々の行について複数回更新を行った場合には、データベースには最後の更新データが入ります。マッピングに結果データの順序が定義されていない場合、同一の入力データに対して異なるマッピングを実行すると、ターゲットテーブルのデータが異なる場合があります。
- • カラム参照を含まないWHERE句は、ターゲットテーブルの行すべてを更新する場合もあれば、まったく更新しない場合もあります。これは、WHERE句の内容とマッピングからのデータによって決まります。例えば、以下のクエリでは、トランスフォーメーションのいずれかの行にEMP_ID > 100がある場合、ターゲットテーブルのすべての行についてEMP_NAMEを「MIKE SMITH」に設定します。
UPDATE T_SALES SET EMP_NAME = 'MIKE SMITH' WHERE :TU.EMP_ID > 100
- • WHERE句にフィールド参照が含まれていない場合には、マッピングの各行について同じ一連の行が更新されます。例えば、以下のクエリではEMP_ID > 100のすべての従業員が更新され、マッピングの最後の行からEMP_NAMEを取得します。
UPDATE T_SALES SET EMP_NAME = :TU.EMP_NAME WHERE EMP_ID > 100
- •ターゲット操作を更新または更新/挿入に設定する場合は、詳細セッションプロパティでソース行を更新として処理するようにマッピングタスクを設定します。