ルールエンジンは、SQL スクリプトを記述するときにデータを処理できる関数を提供します。

関数呼び出し

SQL 文では、データの取得や処理に関数を使用できます。

たとえば、次のコードでは、deviceName()、abs(number)、および topic(number) の関数を使用しています。

SELECT case flag when 1 then 'Light On' when 2 then 'Light Off' else '' end flag,deviceName(),abs(temperature) tmr FROM "/topic/#" WHERE temperature>10 and topic(2)='123'
関数を使用するときは、定数をアポストロフィ (') で囲むよう注意してください。 変数は引用符で囲まないか、二重引用符 (") で囲みます。 たとえば、select “a” a1, ‘a’ a2, a a3 では、a1a3 と同等であり、a2 は定数 a を表します。
関数名 説明
abs(number) 数値の絶対値を返します。
asin(number) 数値の逆正弦を返します。
attribute(key) キーに対応するデバイスタグを返します。 指定されたキーを持つタグが見つからない場合、戻り値は NULL です。 SQL 文をデバッグするときは、実際のデバイスやタグがないため、戻り値は NULL になります。
concat(string1, string2)

文字列です。

例: concat(field,’a’)

cos(number) 数値の余弦を返します。
cosh(number) 数値の双曲線余弦を返します。
crypto(field,String)

フィールドの値を暗号化します。

String パラメーターはアルゴリズムを表します。 使用可能なアルゴリズムには、MD2、MD5、SHA1、SHA-256、SHA-384、および SHA-512 があります。

deviceName() 現在のデバイスの名前を返します。 SQL 文をデバッグするときは、実際のデバイスがないため、戻り値は NULL になります。
endswith(input, suffix) 入力値が接尾辞文字列で終わるかどうかを検証します。
exp(number) 数値の累乗された値を返します。
floor(number) 指定した倍数のうち、最も近い値に数値を切り下げて返します。
log(n, m)

指定した基数に基づく、数値の対数を返します。

m を指定しない場合、自然対数 log(n) が返されます。

lower(string) 小文字の文字列を返します。
mod(n, m) 除数で除算した後の余りを返します。
nanvl(value, default)

プロパティの値を返します。

プロパティの値が NULL の場合、関数はデフォルトを返します。

newuuid() ランダムな UUID を返します。
payload(textEncoding)

デバイスから送信されたメッセージペイロードをエンコードして生成された文字列を返します。

デフォルトのエンコーディングは UTF-8 です。つまり、payload() と payload('utf-8') は同じ結果を返します。

power(n,m) 数値 n の m 乗を返します。
rand() 0 以上 1 未満のランダムな数値を返します。
replace(source, substring, replacement)

指定された列を置き換えます。

例: replace(field, ’a’, ’1’)

sin(n) n の正弦返します。
sinh(n) n の双曲線正弦を返します。
tan(n) n の正接を返します。
tanh(n) n の双曲線正接を返します。
timestamp(format)

現在のシステム時刻のフォーマットされたタイムスタンプを返します。

format の値は省略できます。 format を指定しない場合、現在のシステム時刻の 13 桁のタイムスタンプが返されます。 例: timestamp() = 1543373798943, timestamp('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'') = 2018-11-28T10:56:38Z.

timestamp_utc(format) 現在のシステム時刻のフォーマットされた UTC タイムスタンプを返します。

format の値は省略できます。 format を指定しない場合、現在のシステム時刻の 13 桁のタイムスタンプが返されます。 例: timestamp_utc() = 1543373798943,timestamp_utc('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'') = 2018-11-28T02:56:38Z

topic(number)

トピックのセグメントを返します。

たとえば、/abcdef/ghi というトピックに対し、 関数 topic() を使用した場合、“ /abcdef/ghi” が返されます。つまり、関数 topic(1) を使用した場合 “ abcdef” が、関数 topic(2) を使用した場合 “ghi” が返されます。

upper(string) 大文字の文字列を返します。
to_base64(*) 元のペイロードデータがバイナリデータの場合は、この関数を呼び出して、バイナリデータを base64 文字列に変換できます。