埋め込まれたデータフローで繰り返しを使用

繰り返し設定を使って、埋め込まれたデータフローが入力レコードを処理する方法を指定できます。デフォルトで、埋め込まれたデータフローは、データフローで他のステージがそうするように各レコードを個別に処理します。しかし、繰り返しを使うと、複数のレコードを一括して処理できます。この機能は、入力データ全体ではなくレコードのグループに基づいて比較や演算を実行する場合などに便利です。また、繰り返しを使って、各レコードのデータに基づくステージ オプションを設定できます。

繰り返しには、レコード単位の繰り返しとグループ単位の繰り返しの 2 つがあります。レコード単位の繰り返しでは、埋め込まれたデータフローで一度に 1 つのレコードが処理され、その結果が、埋め込まれたデータフローの次にあるステージに送られます。レコード単位の繰り返しが便利なのは、レコードごとにフィールド値を使ってステージ オプションを設定したい場合です。

グループ単位の繰り返しでは、レコードがキー フィールドでグループ化され、埋め込まれたデータフローが各グループを処理します。グループ内のすべてのレコードが 1 回の繰り返しで処理され、埋め込まれたサブフローの次にあるステージにグループが書き込まれます。グループ単位の繰り返しを使って、関連性があるレコードのグループに処理を実行できるほか、レコードのグループの処理中にステージ オプションも設定できます。例えば、顧客 ID でレコードをグループ化すれば、顧客別にレコードを分析できます。特定の顧客が最もひいきにする店舗などがわかるでしょう。

繰り返しを使う際は、パフォーマンスへの影響を考慮してください。繰り返しが新たに開始されるたびに、埋め込まれたデータフローを初期化する処理によってオーバーヘッドが生じます。埋め込まれたデータフローが、他の埋め込まれたデータフローに含まれている場合には、このオーバーヘッドが特に大きくなります。例えば、埋め込まれたデータフローが 1,000 回繰り返され、そこに含まれる埋め込まれたデータフローが 1,000 回繰り返されるとしたら、繰り返しの回数は合計で 100 万回に達します。レコード単位の繰り返しではレコードごとに新しい繰り返しが発生するので、パフォーマンスへの影響はさらに大きくなります。

  1. 埋め込まれたデータフローにステージを追加し、その中で繰り返しを使ってください。
    注: 繰り返しを使用する埋め込まれたデータフローに追加できるものには、以下の制限があります。
    • Stream Combiner ステージは、繰り返しを使用する埋め込まれたデータフローの最初のステージとして使うことができません。
    • 埋め込まれたデータフローには、クライアント側にあるファイルへ書き込みを行うシンクを追加できません。埋め込まれたデータフロー内のシンクは、Spectrum™ Technology Platform サーバーまたはファイル サーバー上のファイルに書き込む必要があります。
  2. 埋め込まれたデータフローのアイコンをダブルクリックします。
  3. [繰り返しを有効にする] チェック ボックスをオンにします。
  4. 1 つ以上の入力チャネルが埋め込まれたデータフローに接続されている場合、[ポート] フィールドを使って、レコードを繰り返しの実行に使うポートを選択します。

    例えば、2 つの入力ポート、A と B があり、キー フィールドが変化するたびに繰り返しを選択するとします。ポート B を繰り返しに使うために選択した場合、埋め込まれたデータフローは、ポート B からのレコードでキー フィールドが変化するたびに繰り返しを新たに開始します。もう一方のポート A からのすべてのレコードは、埋め込まれたデータフローに読み込まれ、キャッシュされ、繰り返しのたびに使用されます。

  5. 実行する繰り返しのタイプを選択します。
    キー フィールドが変化するたびに繰り返し
    このタイプの繰り返しでは、埋め込まれたデータフローは、1 つ以上のフィールドに同じ値を持つレコードのグループを処理します。埋め込まれたデータフローがレコードのグループの処理を終えると、埋め込まれたデータフローはリセットされ、別のレコードのグループが処理されます。このタイプの繰り返しを使って作成する埋め込まれたデータフローでは、レコードのグループを処理した後でレコード グループごとに個別に出力します。
    ヒント: このタイプの繰り返しを選択する場合は、埋め込まれたデータフローの直前に Sorter ステージを配置し、キー フィールドを基準にレコードをソートしておくとパフォーマンスが向上します。
    レコードごとに繰り返し
    このタイプの繰り返しでは、埋め込まれたデータフローは、一度に 1 つのレコードを処理します。1 つのレコードについて、埋め込まれたデータフローの処理が完了すると、結果が出力に送られ、次のレコードが処理されます。レコードごとに繰り返す埋め込まれたデータフローは、各レコードを新規のデータフロー実行として扱います。
  6. [キー フィールドが変化するたびに繰り返し] を選択した場合は、[値を比較するとき大文字と小文字を区別しない] チェック ボックスをオンにすると、レコードのグループを決定するキー値の評価時の大文字と小文字の区別を無くすことができます。
  7. 1 つ以上のキー フィールドを指定します。
    1. [追加] をクリックします。
    2. キー フィールドとして使うフィールドを選択します。
    3. 埋め込まれたデータフローでフィールドの値をステージ オプションの設定に使う場合は、設定するオプションの名前を指定します。
    4. [OK] をクリックします。
    5. 必要に応じて、さらにキー フィールドを追加します。

      キー フィールドが複数あり、[キー フィールドが変化するたびに繰り返し] オプションを選択した場合は、すべてのキー フィールドの値が同じレコードがグループ化されます。