ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework システム構築・運用ガイド

[目次][索引][前へ][次へ]

11.5.2 レコードの抽出のデータ処理の流れ

レコードの抽出では,レコードを抽出して,抽出したレコードを結合して新たなレコードを生成するまでに,抽出対象条件の判定,抽出条件の判定,および抽出レコード生成の処理を実施します。レコードの抽出のデータ処理の流れを次の図に示します。

図11-14 レコードの抽出のデータ処理の流れ

[図データ]

図中の1.〜3.の処理の詳細について,以降で説明します。なお,説明に出てくるアダプター構成定義ファイルのレコード抽出定義のタグや属性の詳細については,「9.11.4 レコード抽出定義」を参照してください。

<この項の構成>
(1) 抽出対象条件の判定
(2) 抽出条件の判定
(3) 抽出レコード生成

(1) 抽出対象条件の判定

入力されたレコードに対して,抽出対象条件の判定をします。

抽出対象条件とは,抽出対象のレコードを取捨選択するための条件の一つです。抽出対象条件は,レコード抽出定義のtargetrecordタグで指定します。

抽出対象条件には,レコード条件とフィールド条件を指定します。

例えば,レコード名がR1,フィールド名がF1,フィールド値がTAROという条件を指定したい場合には,レコード条件のレコード名には「source="R1"」,フィールド条件には「source="F1" condition="eq" value="TARO"」と指定します。

抽出対象条件の判定では,レコード抽出定義で定義した抽出対象条件に従って,レコード条件の判定,およびフィールド条件の判定が行われます。抽出対象条件の判定の流れを次に示します。

  1. レコード条件の判定
    入力されたレコードのレコード名が,レコード条件に指定したレコード名と一致するかどうかを判定します。
    • レコード条件に一致したレコード
      フィールド条件の判定の処理へ進みます。
    • レコード条件に一致しなかったレコード
      一致しなかったレコードは,そのまま出力されて,次のコールバックに渡されます。
  2. フィールド条件の判定
    レコード条件に一致したレコードのフィールド値が,フィールド条件に指定したフィールド値と一致するかどうかを判定します。
    • フィールド条件に一致したレコード
      抽出対象条件が成立して,抽出条件の判定の処理へ進みます。抽出条件の判定の処理については,「(2) 抽出条件の判定」を参照してください。
    • フィールド条件に一致しなかったレコード
      一致しなかったレコードは,そこで破棄されます。

(2) 抽出条件の判定

抽出対象条件が成立したレコードに対して,抽出条件の判定をします。

抽出条件とは,抽出対象のレコードを取捨選択するための条件の一つです。抽出条件は,レコード抽出定義のextractionタグで指定します。

抽出条件には,レコードバッファーに保持するレコードの上限値や,レコード間条件を指定します。レコード間条件には,レコードの入力順序と,レコード間でフィールド値を比較するためのフィールド値を指定します。レコード間条件は,targetsタグで指定します。

抽出条件の判定では,レコード抽出定義で定義した抽出条件に従って,レコード間条件の判定が行われます。レコード間条件に一致したレコードは,抽出条件が成立するまでレコードバッファーに保持されます。抽出条件の判定の流れを次に示します。

  1. レコード間条件の判定
    抽出対象条件が成立したレコードに対して,レコード間条件で指定した次の内容と一致するかどうかを判定します。
    • レコードの入力順序が一致するかどうか。
    • レコード間のフィールド値が一致するかどうか。
    注※
    レコード内の時刻情報が同一である複数のレコードが入力された場合,抽出条件はレコードの入力順序で判定します。
    これらの条件に一致したレコードはレコードバッファーに保持され,一致しなかったレコードはそこで破棄されます。
  2. レコードバッファーに保持
    レコード間条件に一致したレコードは,レコードバッファーに保持され,レコード間条件で指定したすべてのレコードがそろって抽出条件が成立すると,抽出レコード生成の処理へ進みます。抽出レコード生成の処理については,「(3) 抽出レコード生成」を参照してください。

レコードの入力順序を指定している場合のレコード保持と破棄の流れの例を次の図に示します。

図11-15 レコードの入力順序を指定している場合のレコード保持と破棄の流れの例

[図データ]

この例では,レコードの入力順序をレコードA→レコードB→レコードCと指定しています。このため,入力されたレコードは次のように保持,または破棄されます。

レコードを破棄した場合,破棄したレコード数は,アダプタートレースに出力されます。アダプタートレースについては,「6.3.3 アダプタートレースの詳細」を参照してください。

抽出条件の判定では,レコード内の時刻情報が逆転した場合や,レコードバッファーに保持しているレコードがタイムアウトした場合などにもレコードを破棄します。それぞれの内容について,次に説明します。

(3) 抽出レコード生成

抽出レコード生成では,抽出条件が成立したレコードを結合して,抽出レコードを生成します。抽出レコード生成の流れを次に示します。

  1. 結合するレコードの選択
    抽出条件が成立したレコードの中から,抽出レコードとして結合するレコードを選択します。結合するレコードは,selectタグのsource属性で指定します。
  2. 抽出レコードの生成
    手順1.で選択したレコードを結合して,抽出レコードを生成します。

生成される抽出レコードには,extractionタグのname属性で指定した抽出条件名が入力されたフィールドが追加されます。

抽出レコードの例を次の図に示します。

図11-18 抽出レコードの例

[図データ]

この例では,レコードAとレコードCを結合して,抽出レコードとして,新たなレコードEが生成されます。