目次

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トランスフォーメーション

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

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

行に関する作業

行に関する作業

Integration Serviceではカスタムトランスフォーメーションプロシージャに対して1行ずつ渡したり、配列内の行をブロック単位で渡したりすることができます。手続きコードを作成して、手続きが1行ずつ受け取るか、ブロック単位で受け取るかを指定できます。ブロック単位で手続きが行を受け取ると、パフォーマンスが向上します。
  • Integration Serviceやプロシージャが行う関数呼び出しの回数を減らすことができます。Integration Serviceによる入力行通知関数の呼び出し回数が減り、プロシージャによる出力通知関数の呼び出し回数が減ります。
  • データに対するメモリアクセススペースの局所性を高めることができます。
  • 手続きコードを作成し、データの各行ではなく、ブロック単位にアルゴリズムを実行するようにできます。
デフォルトでは、手続きは一度に1行のデータを受け取ります。ブロック単位で行を受け取るようにするには、INFA_CTSetDataAccessMode()関数を使用してデータアクセスモードを配列ベースに変更する必要があります。データアクセスモードが配列ベースの場合、配列ベースのデータ操作関数と行更新方式関数を使用してデータへのアクセスとデータの出力を行う必要があります。データアクセスモードが行ベースの場合、行ベースのデータ操作関数と行更新方式関数を使用してデータへのアクセスとデータの出力を行う必要があります。
すべての配列ベース関数には、接頭語としてINFA_CTAが使用されています。その他のすべての関数では接頭語としてINFA_CTが使用されています。
手続きコードを作成してブロック単位で行にアクセスするには、以下の手順に従ってください。
  1. 手続きの初期化中にINFA_CTSetDataAccessMode()を呼び出して、データアクセスモードを配列ベースに変更します。
  2. パッシブなカスタムトランスフォーメーションを作成する場合は、プロシージャの初期化中にINFA_CTSetPassThruPort()を呼び出し、入出力ポート用のデータを渡すこともできます。
    データブロックがカスタムトランスフォーメーションプロシージャに渡されると、Integration Serviceはp_<プロシージャ名>_inputRowNotification()をデータブロックごとに呼び出します。 この関数内で残りの手順を実行します。
  3. 入力行通知関数の入力グループハンドルを使用してINFA_CTAGetNumRows()を呼び出し、現在のブロック内の行数を確認します。
  4. 入力ポートハンドルを使用してINFA_CTAGetData<データタイプ>()関数を呼び出し、ブロック内の特定の行のデータを取得します。
  5. INFA_CTASetDataを呼び出し、ブロック内の行を出力します。
  6. INFA_CTOutputNotification()を呼び出す前に、INFA_CTASetNumRows()を呼び出し、このプロシージャがブロック内に出力する行数をIntegration Serviceに通知します。
  7. INFA_CTOutputNotification()を呼び出します。