9.11.2 マッピング定義

マッピング定義(MappingDefinitionタグ)は,「9.9.3 編集用CB定義」で説明した編集用CB定義(DataEditCBDefinitionタグ)の子要素として定義します。

なお,マッピングの処理については,「11.2.2(4) マッピング」,または「11.6.2(3) マッピング」を参照してください。

<この項の構成>
(1) 記述形式
(2) 定義の詳細
(3) 記述例

(1) 記述形式

<MappingDefinition ioType="{INPUT|OUTPUT}">
 <source>
   <streams>
     <stream name="<ストリーム名>"
      querygroup="<クエリグループ名>">
       <column name="<列名>"
        type="{INT|SHORT|BYTE|LONG|BIG_DECIMAL|FLOAT|DOUBLE|STRING |DATE|TIME|TIMESTAMP}"/>
     </stream>
   </streams>
 </source>
 <target>
   <streams>
     <stream name="<ストリーム名>"
      querygroup="<クエリグループ名>">
       <column name="<列名>"
        type="{INT|SHORT|BYTE|LONG|BIG_DECIMAL|FLOAT|DOUBLE|STRING |DATE|TIME|TIMESTAMP}"/>
     </stream>
   </streams>
   <records>
     <record name="<レコード名>">
       <field name="<フィールド名>" type="{INT|SHORT|BYTE|LONG|BIG_DECIMAL|FLOAT|DOUBLE|STRING |DATE|TIME|TIMESTAMP}"/>
   </records>
 </target>
 <intermediate>
   <mappings source="<変換元名>"
    querygroup="<クエリグループ名>"
    target="<変換先名>">
     <map source="<変換元パス式>"
      function="<組み込み関数名>" argument1="<第1引数>"
      argument2="<第2引数>" target="<変換先パス式>"/>
   </mappings>
 </intermediate>
</MappingDefinition>

(2) 定義の詳細

MappingDefinitionタグ(全体情報の定義)
マッピング変換定義の全体情報を定義します。この定義は必ず1個だけ記述します。
ioType="{INPUT|OUTPUT}"
この定義で指定する標準提供アダプターの種類を指定します。この属性は省略できません。
指定できる値を次に示します。
  • INPUT
    入力アダプターでマッピングを定義する場合に指定します。
  • OUTPUT
    出力アダプターでマッピングを定義する場合に指定します。
sourceタグ(マッピング変換元定義)
マッピングの変換元のストリームの情報を定義します。
このタグに指定する内容は,次の表に示すように,MappingDefinitionタグのioType属性の指定値とマッピングの対象によって異なります。
ioType属性の指定値マッピングの対象sourceタグに指定する内容
INPUTレコードとストリーム間のマッピング空要素タグを指定します。
レコード間のマッピング
OUTPUTレコードとストリーム間のマッピングstreamsタグを指定します。
レコード間のマッピング空要素タグを指定します。
targetタグ(マッピング変換先定義)
マッピングの変換先のストリーム,またはレコードの情報を定義します。
このタグに指定する内容は,次の表に示すように,MappingDefinitionタグのioType属性の指定値とマッピングの対象によって異なります。
ioType属性の指定値マッピングの対象targetタグに指定する内容
INPUTレコードとストリーム間のマッピングstreamsタグを指定します。
レコード間のマッピングrecordsタグを指定します。
OUTPUTレコードとストリーム間のマッピング空要素タグを指定します。
レコード間のマッピングrecordsタグを指定します。
streamsタグ(ストリーム群定義)
レコードとストリームとの間のマッピングの場合に,sourceタグまたはtargetタグ下で,変換元または変換先のストリーム群の情報を定義します。
この定義を記述する場合は,必ず1個だけ記述します。
streamタグ(ストリーム定義)
変換元または変換先のストリームの情報を定義します。
この定義は1,024個まで記述できます。この定義は省略できません。
name="<ストリーム名>"
ストリーム名を1~100文字の半角英数字,およびアンダーライン(_)で指定します。名前の先頭は半角英字だけ指定できます。また,ストリーム名とクエリグループ名の組は,streamsタグ内で一意となるように指定してください。この属性は省略できません。
querygroup="<クエリグループ名>"
クエリグループ名を1~64文字の半角英数字,およびアンダーライン(_)で指定します。名前の先頭は半角英字だけ指定できます。また,ストリーム名とクエリグループ名の組は,streamsタグ内で一意となるように指定してください。この属性は省略できません。
columnタグ(列定義)
変換元または変換先のストリームの列の情報を定義します。
この定義は3,000個まで記述できます。この定義は省略できません。
name="<列名>"
列名を1~100文字の半角英数字,およびアンダーライン(_)で指定します。名前の先頭は半角英字だけ指定できます。また,列名は,streamsタグ内の列定義の中で一意となるように指定してください。この属性は省略できません。
type="{INT|SHORT|BYTE|LONG|BIG_DECIMAL|FLOAT|DOUBLE|STRING|DATE|TIME|TIMESTAMP}"
CQLのデータ型に対応するデータ型種別を指定します。
この属性に指定する値と,対応するCQLのデータ型については,「9.11.1(6) type属性の指定値と,対応するJavaのデータ型およびCQLのデータ型」を参照してください。
recordsタグ(レコード群定義)
レコード間のマッピングの場合に,targetタグ下で,変換先のレコード群の情報を定義します。
この定義を記述する場合は,必ず1個だけ記述します。
recordタグ(レコード定義)
変換先のレコードの情報を定義します。この定義は1,024個まで記述できます。この定義は省略できません。
name="<レコード名>"
レコード名を1~100文字の半角英数字,およびアンダーライン(_)で指定します。先頭の文字に指定できるのは,半角英字だけです。
この属性は1個だけ記述できます。この属性は省略できません。レコード名は,該当の標準提供アダプター内で一意となるように指定してください。
fieldタグ(フィールド定義)
変換先のレコードのフィールド情報を定義します。この定義は3,000個まで記述できます。この定義は省略できません。
name="<フィールド名>"
フィールド名を1~100文字の半角英数字,およびアンダーライン(_)で指定します。先頭の文字に指定できるのは,半角英字だけです。この属性は1個だけ記述できます。この属性は省略できません。フィールド名は,該当のレコード内で一意となるように指定してください。
type="{INT|SHORT|BYTE|LONG|BIG_DECIMAL|FLOAT|DOUBLE|STRING|DATE|TIME|TIMESTAMP}"
フィールドのJavaのデータ型に対応するデータ型を指定します。この属性は省略できません。
この属性に指定する値と,対応するCQLのデータ型については,「9.11.1(6) type属性の指定値と,対応するJavaのデータ型およびCQLのデータ型」を参照してください。
intermediateタグ(マッピング中間定義)
マッピング変換元からマッピング変換先へのマッピング情報を定義します。
この定義は必ず1個だけ記述します。
mappingsタグ(マッピング群定義)
マッピング情報を定義します。
この定義は1,024個まで記述できます。この定義は省略できません。
source="<変換元名>"
変換元のストリーム名,またはレコード名を1~100文字の半角英数字,およびアンダーライン(_)で指定します。この属性は省略できません。
この属性に指定する内容は,次の表に示すように,MappingDefinitionタグのioType属性の指定値とマッピングの対象によって異なります。
ioType属性の指定値マッピングの対象source属性に指定する内容
INPUTレコードとストリーム間のマッピング変換元のレコード名を指定します。
レコード間のマッピング
OUTPUTレコードとストリーム間のマッピングstreamタグのname属性に指定したストリーム名を指定します。
レコード間のマッピング変換元のレコード名を指定します。
querygroup="<クエリグループ名>"
レコードとストリームとの間のマッピングの場合に,変換元または変換先のストリームが属するクエリグループ名を1~64文字の半角英数字,およびアンダーライン(_)で指定します。名前の先頭は半角英字だけ指定できます。また,クエリグループ名と変換元名の組,またはクエリグループ名と変換先名の組は,mappingsタグ内で一意となるように指定してください。
この属性に指定する内容は,次の表に示すように,MappingDefinitionタグのioType属性の指定値とマッピングの対象によって異なります。
ioType属性の指定値マッピングの対象querygroup属性に指定する内容
INPUTレコードとストリーム間のマッピングtargetタグ下のstreamsタグ内のクエリグループ名を指定します。
レコード間のマッピング指定しません。
OUTPUTレコードとストリーム間のマッピングsourceタグ下のstreamsタグ内のクエリグループ名を指定します。
レコード間のマッピング指定しません。
target="<変換先名>"
変換先のストリーム名,またはレコード名を1~100文字で指定します。変換先名はmappingsタグ内で一意となるように指定してください。この属性は省略できません。
この属性に指定する内容は,次の表に示すように,MappingDefinitionタグのioType属性の指定値とマッピングの対象によって異なります。
ioType属性の指定値マッピングの対象target属性に指定する内容
INPUTレコードとストリーム間のマッピングstreamタグのname属性に指定したストリーム名を指定します。
レコード間のマッピングrecordタグのname属性に指定したレコード名を指定します。
OUTPUTレコードとストリーム間のマッピング変換先のレコード名を指定します。
レコード間のマッピングrecordタグのname属性に指定したレコード名を指定します。
mapタグ(マッピング情報定義)
マッピング情報を定義します。このタグの指定順は,変換先となるストリーム,またはレコードの構成の順番と一致させる必要があります。この定義は,3,000個まで記述できます。この定義は省略できません。
source="<変換元パス式>"
変換元パス式として,変換元のフィールド名を1~1,024文字で指定します。この属性は省略できません。
この属性に指定する内容は,次の表に示すように,MappingDefinitionタグのioType属性の指定値とマッピングの対象によって異なります。
ioType属性の指定値マッピングの対象source属性に指定する内容
INPUTレコードとストリーム間のマッピングmappingsタグのsource属性に指定したレコード名に属するフィールド名を指定します。
レコード間のマッピング
OUTPUTレコードとストリーム間のマッピングmappingsタグのsource属性に指定したストリーム名に属するフィールド名を指定します。
レコード間のマッピングmappingsタグのsource属性に指定したレコード名に属するフィールド名を指定します。
function="<組み込み関数名>"
レコード間のマッピングを行う場合は,mapタグのfunction属性で組み込み関数を使用して,マッピングの変換元の共通形式レコードから文字列や時刻を取得し,取得した文字列や時刻をマッピングの変換先の共通形式レコードに反映できます。
この属性では,組み込み関数を使用して文字列や時刻を取得する場合に,組み込み関数名を指定します。なお,レコードとストリーム間のマッピング(入力ストリーム用の共通形式レコードへのマッピング,または出力ストリーム用の共通形式レコードからのマッピング)では,この属性は指定できません。
この属性に指定できる文字列を次に示します。
  • regexsubstring
    入力文字列から,正規表現の部分文字列を取得する場合に指定します。戻り値は,String型の文字列です。
    regexsubstringを指定する場合,argument1属性,およびargument2属性で引数を指定してください。
  • getTupleTime
    この値は,出力アダプターの場合だけ指定できます。出力アダプターで出力ストリームから出力されたタプルの時刻を取得する場合に指定します。戻り値は,TIMESTAMP型の時刻(単位:ミリ秒)です。
    getTupleTimeを指定する場合,argument1属性,およびargument2を指定する必要はありません。
    なお,MappingDefinitionタグのioType属性の指定値がINPUTの場合には,getTupleTimeは指定できません。
  • subTime
    二つのフィールドの時刻の差分を算出する場合に指定します。二つの時刻のうち,大きい値から小さい値を引いて,時刻の差分を算出します。戻り値は,LONG型の時刻(単位:ミリ秒)です。
    subTimeを指定する場合,argument1属性,およびargument2属性で引数を指定してください。
argument1="<第1引数>"
function属性で指定した組み込み関数の第1引数を指定します。
  • function属性でregexsubstringを指定した場合
    入力文字列が格納されているString型のフィールドのフィールド名を1~100文字の半角英数字,およびアンダーライン(_)で指定します。
  • function属性でsubTimeを指定した場合
    時刻が格納されているTIMESTAMP型のフィールドのフィールド名を1~100文字の半角英数字,およびアンダーライン(_)で指定します。
argument2="<第2引数>"
function属性で指定した組み込み関数の第2引数を指定します。
  • function属性でregexsubstringを指定した場合
    部分文字列の抽出条件を2~1,024文字の次に示す形式で指定します。
    [正規表現] "("[正規表現]")"[正規表現]
    正規表現の解析には,java.util.regex.Patternクラスを使用します。正規表現は,java.util.regex.Patternクラスがサポートする正規表現の範囲で記述してください。
    第1引数で指定したフィールドの入力文字列が,第2引数で指定した正規表現の文字列に一致する場合には,「(」と「)」で囲まれた部分に相当する文字列(String型)が戻り値となります。一致しない場合には,空文字が戻り値となります。
  • function属性でsubTimeを指定した場合
    時刻が格納されているTIMESTAMP型のフィールドのフィールド名を1~100文字の半角英数字,およびアンダーライン(_)で指定します。
target="<変換先パス式>"
変換先パス式として,変換先のフィールド名を1~100文字の半角英数字,およびアンダーライン(_)で指定します。フィールド名はmappingsタグ内で一意となるように指定してください。この属性は省略できません。
次に示すとおり,この属性の指定内容は,MappingDefinitionタグのioType属性に指定した内容によって異なります。
  • ioType属性にINPUTを指定した場合
    変換先のストリーム名またはレコード名に属するフィールド名を指定します。
  • ioType属性にOUTPUTを指定した場合
    変換先のレコード名に属するフィールド名を指定します。

(3) 記述例