目次

Search

  1. はじめに
  2. トランスフォーメーションに関する作業
  3. アグリゲータトランスフォーメーション
  4. カスタムトランスフォーメーション
  5. カスタムトランスフォーメーション関数
  6. データマスキングトランスフォーメーション
  7. データマスキングの例
  8. 式トランスフォーメーション
  9. エクスターナルプロシージャトランスフォーメーション
  10. フィルタトランスフォーメーション
  11. HTTPトランスフォーメーション
  12. ID解決トランスフォーメーション
  13. Javaトランスフォーメーション
  14. JavaトランスフォーメーションAPIのリファレンス
  15. Java式
  16. Javaトランスフォーメーションの例
  17. ジョイナトランスフォーメーション
  18. ルックアップトランスフォーメーション
  19. ルックアップキャッシュ
  20. 動的ルックアップキャッシュ
  21. ノーマライザトランスフォーメーション
  22. ランクトランスフォーメーション
  23. ルータトランスフォーメーション
  24. シーケンスジェネレータトランスフォーメーション
  25. ソータトランスフォーメーション
  26. ソース修飾子トランスフォーメーション
  27. SQLトランスフォーメーション
  28. マッピングにおけるSQLトランスフォーメーションの使用
  29. ストアドプロシージャトランスフォーメーション
  30. トランザクション制御トランスフォーメーション
  31. 共有体トランスフォーメーション
  32. 構造化されていないデータのトランスフォーメーション
  33. アップデートストラテジトランスフォーメーション
  34. XMLトランスフォーメーション

トランスフォーメーションガイド

トランスフォーメーションガイド

ストアドプロシージャの実行タイミングの指定

ストアドプロシージャの実行タイミングの指定

ストアードプロシージャトランスフォーメーションのモードの指定に加え、ストアードプロシージャトランスフォーメーションをいつ実行するかを指定します。上記のコネクトされていないストアドプロシージャの場合、式トランスフォーメーションがこのストアドプロシージャを参照しています。これは、式トランスフォーメーションを行が通過するごとにストアドプロシージャが実行されることを意味します。ただし、ストアードプロシージャトランスフォーメーションを参照しているトランスフォーメーションがない場合は、セッションの前か後にストアドプロシージャを1回だけ実行するように指定できます。
ストアドプロシージャトランスフォーメーションの実行用オプションには次のものがあります。
  • ノーマル。
    ストアドプロシージャは、マッピング内のトランスフォーメーションが存在する位置で行ごとに実行されます。 このオプションは、入力ポートに対して計算を実行する場合など、マッピングを通過するそれぞれのデータ行に対してストアドプロシージャを呼び出す場合に便利です。接続されたストアードプロシージャは、このモードでのみ実行されます。
  • ソースのロード前。
    ストアードプロシージャは、セッションがソースからデータを取得する前に実行されます。 このオプションは、テーブルの存在を検査したり、一時テーブル内でデータの結合を実行したりする場合に役立ちます。
  • ソースのロード後。
    ストアドプロシージャは、セッションがソースからデータを取得した後に実行されます。 このオプションは、一時テーブルを削除するのに役立ちます。
  • ターゲットのロード前。
    ストアドプロシージャは、セッションがターゲットにデータを渡す前に実行されます。 このオプションは、ターゲットテーブルやターゲットシステム上のディスク領域を検査するのに役立ちます。
  • ターゲットのロード後。
    ストアドプロシージャは、セッションがターゲットにデータを渡した後に実行されます。 このオプションは、データベースのインデックスを再作成するのに便利です。
複数のストアードプロシージャトランスフォーメーションを、同じマッピング内で異なるモードで実行することができます。たとえばSource Pre Loadストアドプロシージャでテーブルの整合性をチェックし、ノーマルストアドプロシージャでテーブルに値を格納し、Post Loadストアドプロシージャでデータベースのインデックスを再構築する、といった処理を行えます。ただし、1つのストアードプロシージャトランスフォーメーションの同じインスタンスを1つのマッピング内で接続されたモードとコネクトされていないモードの両方で実行することはできません。その場合は、トランスフォーメーションのインスタンスを別個に作成する必要があります。
マッピングがマッピング内の複数のソースまたはターゲットのロード前またはロード後のストアドプロシージャを呼び出すと、Integration Serviceはマッピングで指定された実行順でストアドプロシージャを実行します。
Integration Serviceは、トランスフォーメーションプロパティに指定されたデータベース接続を使用して、各ストアドプロシージャを実行します。 Integration Serviceは、最初のストアドプロシージャに遭遇したときにデータベース接続を開きます。 データベース接続は、Integration Serviceがその接続に対するストアドプロシージャをすべて処理し終えるまで開いたままの状態です。 Integration Serviceは、別のデータベース接続を使用するストアドプロシージャに遭遇すると、データベース接続を閉じて新しい接続を開きます。
同じデータベース接続を使用する複数のストアドプロシージャを実行する場合、それらが連続して実行されるように設定します。連続して実行されるように設定しなかった場合、ターゲットに予期しない結果が現れる場合があります。たとえば、2つのストアドプロシージャ(ストアードプロシージャAとストアードプロシージャB)があるとします。ストアードプロシージャAはトランザクションを開始し、ストアードプロシージャBはトランザクションをコミットします。ストアドプロシージャBの前に別のデータベース接続を使用してストアドプロシージャCを実行すると、Integration ServiceはストアドプロシージャCを実行するときにデータベース接続を閉じるため、ストアドプロシージャBはトランザクションをコミットできません。
データベース接続内で複数のストアドプロシージャを実行する際は、下記のガイドラインに従ってください。
  • ストアドプロシージャのプロパティで定義されたのと同じデータベース接続文字列を使用する。
  • ストアドプロシージャが連続した順序で実行されるように設定する。
  • ストアドプロシージャタイプが同じである。
    • Source Pre Load
    • Source Post Load
    • Target Pre Load
    • Target Post Load