ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework システム構築・運用ガイド
<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>
- 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を指定した場合
変換先のレコード名に属するフィールド名を指定します。
- 入力アダプターでレコードとストリーム間のマッピングの場合
入力アダプターで,レコードとストリーム間のマッピングをする場合の記述例を次に示します。
<?xml version="1.0" encoding="UTF-8"?>
<root:AdaptorCompositionDefinition
<!-- 途中略 -->
xmlns:map="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback/MappingDefinition">
<!-- 途中略 -->
<!-- 編集用CB定義 -->
<cb:DataEditCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.dataedit.mapping.InputMappingCBImpl" name="editor1">
<!-- マッピング定義 -->
<map:MappingDefinition ioType="INPUT">
<map:source/>
<map:target>
<map:streams>
<map:stream name="S1" querygroup="QG1">
<map:column name="id" type="INT"/>
<map:column name="time" type="STRING"/>
<map:column name="name" type="STRING"/>
<map:column name="val" type="INT"/>
</map:stream>
</map:streams>
</map:target>
<map:intermediate>
<map:mappings source="R1" querygroup="QG1" target="S1">
<map:map source="F1" target="id"/>
<map:map source="F2" target="time"/>
<map:map source="F3" target="name"/>
<map:map source="F5" target="val"/>
</map:mappings>
</map:intermediate>
</map:MappingDefinition>
</cb:DataEditCBDefinition>
- 入力アダプターでレコード間のマッピングの場合
入力アダプターで,レコード間のマッピングをする場合の記述例を次に示します。この例記述では,function属性で組み込み関数を使用して,正規表現文字列と時刻の差分を取得しています。
<?xml version="1.0" encoding="UTF-8"?>
<root:AdaptorCompositionDefinition
<!-- 途中略 -->
xmlns:map="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback/MappingDefinition">
<!-- 途中略 -->
<!-- 編集用CB定義 -->
<cb:DataEditCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.dataedit.mapping.InputMappingCBImpl" name="editor1">
<!-- マッピング定義 -->
<map:MappingDefinition ioType="INPUT">
<map:source/>
<map:target>
<map:records>
<map:record name="RECORD1">
<map:field name="id" type="INT"/>
<map:field name="F21" type="STRING"/>
<map:field name="F22" type="LONG"/>
</map:record>
</map:records>
</map:target>
<map:intermediate>
<map:mappings source="RECORD0" target="RECORD1">
<map:map source="F1" target="id"/>
<map:map function="regexsubstring" argument1="F11"
argument2=".*Data=([0-9]+).*" target="F21"/>
<map:map function="subTime" argument1="F12" argument2=F13" target="F22"/>
</map:mappings>
</map:intermediate>
</map:MappingDefinition>
</cb:DataEditCBDefinition>
- 出力アダプターでレコードとストリーム間のマッピングの場合
出力アダプターで,レコードとストリーム間のマッピングをする場合の記述例を次に示します。
<?xml version="1.0" encoding="UTF-8"?>
<root:AdaptorCompositionDefinition
<!-- 途中略 -->
xmlns:map="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback/MappingDefinition">
<!-- 途中略 -->
<!-- 編集用CB定義 -->
<cb:DataEditCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.dataedit.mapping.InputMappingCBImpl" name="editor1">
<!-- マッピング定義 -->
<map:MappingDefinition ioType="INPUT">
<map:source>
<map:streams>
<map:stream name="S1" querygroup="QG1">
<map:column name="id" type="INT"/>
<map:column name="time" type="TIMESTAMP"/>
<map:column name="name" type="STRING"/>
</map:stream>
</map:streams>
</map:source>
<map:target/>
<map:intermediate>
<map:mappings source="S1" querygroup="QG1" target="RECORD1">
<map:map source="id" target="F21"/>
<map:map source="time" target="F22"/>
<map:map source="name" target="F23"/>
</map:mappings>
</map:intermediate>
</map:MappingDefinition>
</cb:DataEditCBDefinition>
- 出力アダプターでレコード間のマッピングの場合
出力アダプターで,レコード間のマッピングをする場合の記述例を次に示します。この記述例では,function属性で組み込み関数を使用して,正規表現文字列,タプルの時刻,および時刻の差分を取得しています。
<?xml version="1.0" encoding="UTF-8"?>
<root:AdaptorCompositionDefinition
<!-- 途中略 -->
xmlns:map="http://www.hitachi.co.jp/soft/xml/sdp/adaptor/definition/callback/MappingDefinition">
<!-- 途中略 -->
<!-- 編集用CB定義 -->
<cb:DataEditCBDefinition class="jp.co.Hitachi.soft.sdp.adaptor.callback.dataedit.mapping.InputMappingCBImpl" name="editor1">
<!-- マッピング定義 -->
<map:MappingDefinition ioType="INPUT">
<map:source/>
<map:target>
<map:records>
<map:record name="RECORD1">
<map:field name="F21" type="STRING"/>
<map:field name="F22" type="TIMESTAMP"/>
<map:field name="F23" type="LONG"/>
</map:record>
</map:records>
</map:target>
<map:intermediate>
<map:mappings source="RECORD0" target="RECORD1">
<map:map function="regexsubstring" argument1="F11"
argument2=".*Data=([0-9]+).*" target="F21"/>
<map:map function="getTupleTime" target="F22"/>
<map:map function="subTime" argument1="F12" argument2=F13" target="F23"/>
</map:mappings>
</map:intermediate>
</map:MappingDefinition>
</cb:DataEditCBDefinition>
All Rights Reserved. Copyright (C) 2010, 2014, Hitachi, Ltd.