ページの先頭行へ戻る
Interstage Big DataComplex Event Processing Server V1.1.0 開発リファレンス
FUJITSU Software

1.2.13 データタイプのマッピング

複合イベント処理言語でデータベースのデータを扱う場合、SQLのデータタイプのままでは複合イベント処理を記述できません。

JDBCドライバにより、SQLのデータタイプは一旦総称SQL型(java.sql.Types)に変換され、さらに複合イベント処理言語のデータタイプに変換されます。総称SQL型に対応する複合イベント処理言語のデータタイプは次のようになります。

SQLの各データタイプに対応する総称SQL型は、利用するJDBCドライバのマニュアルを参照してください。複合イベント処理言語のデータタイプについては、「1.1.6 データタイプ」を参照してください。

java.sql.Typesで定義されている総称SQL型

複合イベント処理言語のデータタイプ

CHAR

VARCHAR

LONGVARCHAR

string

BOOLEAN

BIT

bool/boolean

SMALLINT

short

INTEGER

int/integer

BIGINT

long

REAL

float

DOUBLE

FLOAT

double

上記の対応表にない総称SQL型の中には、型変換を行うことで利用できる総称SQL型もあります。

java.sql.Typesで定義されている総称SQL型

型変換方法

複合イベント処理言語のデータタイプ

NUMERIC

DECIMAL

bool、short、byte、int、long、float、doubleのいずれかによるキャストを行ってください。

データサイズが変換先のデータタイプよりも大きい場合、データ損失の可能性があります。

キャストで指定した型

DATE

TIME

TIMESTAMP

toString()メソッドを付加してください。

string

その他、記述のないSQL型は、複合イベント処理言語では利用できません。

Symfoware Server(Nativeインタフェース)データタイプ複合イベント処理言語のデータタイプの間のマッピング

Symfoware Server(Nativeインタフェース)のSQLのデータタイプと複合イベント処理言語のデータタイプの間は、次のように変換されます。

Symfoware Server(Nativeインタフェース)のSQLのデータタイプと総称SQL型の間の変換については、Symfoware Server(Nativeインタフェース)のマニュアルを参照してください。

分類

Symfoware ServerのSQLのデータタイプ

複合イベント処理言語のデータタイプ

真数型

SMALLINT

short

INTEGER

int/integer

NUMERIC

bool、short、byte、int、long、float、doubleのいずれかによるキャストを行ってください。
データサイズがキャスト先の型よりも大きい場合はデータ損失の可能性がありますので、データサイズにより、キャストで指定する型を選択してください。

概数型

REAL

float

FLOAT(p) p=1~23

float

FLOAT(p) p=24~52

double

DOUBLE PRECISION

double

日時型

DATE

toString()メソッドを付加してください。

TIME

TIMESTAMP

文字列型

CHARACTER

string

VARCHAR

string

各国語文字列型

NCHAR

string

NCHAR VARYING

string

その他

BLOB

未サポート

ROW_ID

INTERVAL YEAR TO MONTH

INTERVAL YEAR

INTERVAL MONTH

INTERVAL DAY TO HOUR

INTERVAL DAY TO MINUTE

INTERVAL DAY TO SECOND

INTERVAL DAY

INTERVAL HOUR TO SECOND

INTERVAL HOUR

INTERVAL MINUTE TO SECOND

INTERVAL MINUTE

INTERVAL SECOND

記述例

string型の「id」とstring型の「e_date」をプロパティとして持つ入力イベント「E1」が入力され、データベース「MY_DB」中の「M_DATE」の日付が「e_date」よりも新しい場合に、「M_DATE」を出力する複合イベント処理は、以下のようになります。

@Name('EPL1')
select E1.id, db1.M_DATE.toString()  from E1, sql:my_db ['SELECT M_DATE FROM MY_TBL'] as db1
  where db1.M_DATE.toString()>E1.e_date;

string型の「id」とint型の「value」をプロパティとして持つ入力イベント「E2」が入力され、データベース「MY_DB」中の「PRICE」の値が「value」よりも大きい場合に、「PRICE」を出力する複合イベント処理は、以下のようになります。

@Name('EPL2')
select E2.id, cast(db2.PRICE, double) from E2, sql:mydb_db ['SELECT PRICE FROM MY_TBL'] as db2
  where cast(db2.PRICE, double)>E2.value;