スキーマ変更処理
一部のデータオブジェクトタイプのスキーマに加えた変更をデータ統合が処理する方法を選択できます。
デフォルトでは、スキーマに変更を加えた場合、データ統合がその変更を自動的に取得することはありません。マッピングタスクが実行されるたびにデータ統合でデータオブジェクトスキーマが更新されるようにするには、動的スキーマ処理を有効にします。
スキーマの変更には、データオブジェクトに対する次の1つ以上の変更が含まれます。
- •フィールドの追加。
- •フィールドの削除。
- •フィールドの名前の変更。
- •フィールドのデータ型、精度、または位取りの更新。
データ統合は、タスクが実行されるたびにリレーショナルオブジェクトのスキーマを自動的に更新します。他のオブジェクトタイプのスキーマが動的に更新されるようにする場合は、タスクの設定時に、[ランタイムオプション]ページの[詳細オプション]領域で動的スキーマ変更処理を有効にします。
次の表に、スキーマ変更処理のオプションを示します。
オプション | 説明 |
---|
非同期 | デフォルト。データ統合は、マッピングまたはマッピングタスクが編集された場合、およびInformatica Intelligent Cloud Servicesがアップグレードされた場合にスキーマを更新します。 |
動的 | データ統合は、タスクが実行されるたびにスキーマを更新します。 特定のコネクタタイプのソース、ターゲット、およびルックアップオブジェクトに適用されます。一部のコネクタタイプについては、データ統合は、データオブジェクトがフラットファイルである場合にのみスキーマを更新します。 このオプションを選択する場合は、ファイルオブジェクトの形式を区切る必要があります。 階層データには適用されません。 コネクタが動的スキーマ変更処理をサポートしているかどうかを確認するには、該当するコネクタのヘルプを参照してください。 |
ソースオブジェクトのフィールドを更新し、動的スキーマ処理を有効にする場合は、必ずターゲットトランスフォーメーションフィールドマッピングを更新してください。名前が変更または削除されたソースフィールドにマッピングされていたターゲットフィールドに対しては、データ統合によってNULLが書き込まれます。実行時に作成されたターゲットを使用する場合は、ターゲットオブジェクト名を更新して、タスクの実行時にデータ統合で新しいターゲットが作成されるようにします。データ統合が以前のタスク実行で作成されたターゲットを変更しようとした場合、タスクは失敗します。
動的スキーマ処理オプション
動的スキーマ変更処理を有効にすると、データ統合がアップストリームトランスフォーメーションからターゲットオブジェクトにスキーマ変更を適用する方法を選択できます。マッピングに複数のターゲットが含まれている場合は、各ターゲットにスキーマ変更処理を選択します。
ターゲットスキーマオプションを選択するには、ターゲットフィールドのマッピングが自動である必要があります。
実行時に作成されるオブジェクトのターゲットスキーマオプションを設定すると、データ統合では、タスクを初めて実行したときにターゲットが作成されます。その後、別のタスクを実行すると、データ統合では、選択したスキーマ変更オプションに基づいてターゲットが更新されます。
使用可能なスキーマ変更処理オプションは、ターゲット接続に基づいています。コネクタが動的スキーマ変更処理をサポートしているかどうかを確認するには、該当するコネクタのヘルプを参照してください。
次の表に、各ターゲットタイプに対して選択可能なスキーマ処理のオプションを示します。
スキーマ処理オプション | ターゲットタイプ | 説明 |
---|
既存のファイル形式を保持する | ファイル | データ統合は、実行時に最新のターゲットスキーマを取得し、アップストリームスキーマの変更はターゲットファイルに適用されません。 |
現在を削除して再作成する | データベースとファイル | データベースターゲットの場合、データ統合は既存のターゲットテーブルを削除し、実行されるたびにアップストリームトランスフォーメーションからのスキーマを使用して新しいターゲットテーブルを作成します。 ファイルターゲットの場合、データ統合は、タスクの実行ごとに受信スキーマと一致するようにターゲットスキーマを更新します。 |
変更して適用する変更内容 | データベース | データ統合は、アップストリームトランスフォーメーションのスキーマと一致するように追加の変更でターゲットスキーマを更新します。ターゲットからカラムは削除しません。 |
DDLの変更を適用しない | データベース | データ統合は実行時にターゲットスキーマを取得し、アップストリームスキーマの変更はターゲットテーブルに適用されません。 |
データ統合は、フィールド制約をターゲットに渡しません。例えば、ソースに、NOT NULL制約が設定されたフィールドS1とS2が含まれているとします。ターゲットには、NOT NULL制約が設定されたフィールドT1とT2が含まれています。[変更して変更を適用する]スキーマ処理オプションを選択します。タスクを実行すると、フィールドS1とS2が制約なしでターゲットに書き込まれます。
動的スキーマ変更処理のルールとガイドライン
マッピングタスクが実行されるたびにデータ統合でデータオブジェクトスキーマが更新されるように、動的スキーマ変更処理を有効にします。
動的スキーマ変更処理を有効にする場合は、次のルールとガイドラインを考慮してください。
- •オブジェクトスキーマへの変更は、マッピング内のフィールドメタデータへの変更よりも優先されます。例えば、ソースオブジェクトにフィールドを追加してから、マッピング内の既存のフィールドのメタデータを編集するようにします。実行時に、データ統合は、新しいフィールドを追加し、既存のフィールドは編集されません。
- •データ統合は、オブジェクトスキーマを取得する前にパラメータを解決します。
- •データ統合は、名前が変更されたフィールドを削除および追加されたカラムとして扱います。フィールドの名前を変更した場合は、名前が変更されたフィールドを参照するトランスフォーメーションを更新する必要がある場合があります。例えば、ルックアップ条件で使用されるフィールドの名前を変更すると、ルックアップは新しいフィールドを見つけることができずにタスクは失敗します。
- •フィールドの名前を変更、追加、または削除する場合、フィールドマッピングの更新が必要となる場合があります。例えば、ターゲットオブジェクトで以前マッピングされたすべてのフィールドを削除した場合、少なくとも1つのフィールドを再マッピングする必要があり、再マッピングしない場合はタスクが失敗します。
- •データ統合は、次のような状況では、ターゲットフィールドにNULL値を書き込みます。
- - 自動フィールドマッピングを使用してターゲットフィールドの名前を変更したが、フィールド名がソースフィールドと一致しない場合。
- - 手動フィールドマッピングを使用してソースフィールドの名前を変更したが、フィールドをターゲットに再マッピングしていない場合。
- •ソースまたはルックアップオブジェクトからフィールドを削除して、ダウンストリームトランスフォーメーションがそのフィールドを参照している場合、タスクは失敗します。
- •ソースまたはルックアップフィールドタイプを変更した場合、新しいフィールドタイプでダウンストリームのエラーが発生すると、タスクが失敗する可能性があります。例えば、算術式の整数フィールドを文字列フィールドに変更すると、式は無効になり、タスクは失敗します。
- •ターゲットフィールドタイプを変更した場合、データ統合では、受信フィールドからのデータが新しいターゲットフィールドタイプに変換されます。変換の際にエラーが発生した場合、データ統合ではその行が削除されます。例えば、文字列タイプを、文字列に日付が含まれない日付タイプに変更した場合、データ統合ではその行が削除されます。