ルールエンジンは、SQL ステートメントで呼び出してデータを処理するための関数を提供します。
データ転送機能でサポートされる関数
関数 | 説明 |
abs(number) | 数値の絶対値を返します。 |
asin(number) | 数値の逆正弦を返します。 |
attribute(key) | タグキーのデバイスタグ値を返します。指定したキーのタグがデバイスに付与されていない場合、タグ値は返されません。SQL ステートメントをデバッグする場合、実際のデバイスまたはタグが存在しないため、空の文字列が返されます。 |
concat(string1, string2) | 文字列を連結し、連結した文字列を返します。 例: |
cos(number) | 数値の余弦を返します。 |
cosh(number) | 数値の双曲線余弦を返します。 |
crypto(field, String) |
|
deviceName() | 現在のデバイス名を返します。SQL ステートメントをデバッグする場合、実際のデバイスが存在しないため、空の文字列が返されます。 |
endswith(input, suffix) |
|
exp(number) | 数学定数 e を、指定した数値で累乗した値を返します。 |
floor(number) | 数値以下の最大の整数を返します。 |
log(n, m) | 底 m を指定しない場合、デフォルトの底 10 が使用されます。この場合、 |
lower(string) | 指定した文字列内のすべての文字を小文字に変換し、小文字の文字列を返します。 |
mod(n, m) | 数値 |
nanvl(value, default) | プロパティの値を返します。
|
newuuid() | ランダムな UUID (Universally Unique Identifier) を返します。 |
payload(textEncoding) | デバイスから送信されたメッセージペイロードを返します。ペイロードは、 デフォルトのエンコーディング方式は UTF-8 です。これは、 |
power(n, m) | 数値 |
rand() | 0 以上 1 未満の乱数を返します。 |
replace(source, substring, replacement) |
例: |
sin(n) | 数値 |
sinh(n) | 数値 |
tan(n) | 数値 |
tanh(n) | 数値 |
thingPropertyFlatMap(property) | Thing Specification Language (TSL) モデル内のプロパティ値を返します。プロパティに複数の値がある場合は、アンダースコア (_) で値を区切ります。TSL モデルに 50 個を超えるプロパティが含まれている場合、データ転送機能では TSL モデル全体を転送できません。この関数を呼び出して、TSL モデルからプロパティデータを抽出できます。これにより、TSL モデルのすべてのプロパティを他の Alibaba Cloud サービスに転送できます。 この関数の たとえば、関数 |
timestamp(format) | GMT+8 の現在のシステム時刻のタイムスタンプを返します。
|
timestamp_utc(format) | 指定した形式で、現在のシステム時刻の UTC タイムスタンプを返します。 format パラメーターは省略可能です。 format パラメーターを設定しない場合、現在のシステム時刻の 13 桁のタイムスタンプが返されます。 たとえば、timestamp_utc() 関数は |
topic(number) | 指定したレベルのトピック情報を返します。 例えば、トピック名が |
upper(string) | 指定した文字列内のすべての文字を大文字に変換し、大文字の文字列を返します。 たとえば、upper(alibaba) 関数は |
to_base64(*) | メッセージペイロードをバイナリデータから Base64 でエンコードされた文字列に変換し、変換後のメッセージペイロードを返します。元のメッセージペイロードがバイナリデータ型の場合、この関数を呼び出すことができます。 |
messageId() | IoT Platform によって生成されたメッセージ ID を返します。 |
substring(target, start, end) | 指定した文字列の一部を返します。 パラメーターの説明
説明
例:
|
to_hex(*) | メッセージペイロードをバイナリデータから 16 進数文字列に変換し、変換後のメッセージペイロードを返します。元のメッセージペイロードがバイナリデータ型の場合、この関数を呼び出すことができます。 |
user_property() | デバイスが MQTT 5.0 を使用する場合、UserProperty パラメーターの値を取得します。
たとえば、デバイスによって報告される UserProperty パラメーターの値は
|
things_function_type() | 報告された TSL データの種類をクエリします。この関数は、TSL イベントおよび TSL サービスにのみ適用されます。この関数の戻り値は、クエリ対象の TSL 機能の種類によって異なります。
例えば、 |
things_property('${Parameter name}') | TSL のプロパティ、サービス、またはイベントの値をクエリします。この関数は TSL データにのみ適用されます。 たとえば、 |
例
SQL ステートメントの SELECT 句および WHERE 句で関数を呼び出して、データを取得または処理できます。
たとえば、温度センサープロダクトに Temperature プロパティがあるとします。次のスクリプトは、デバイスによって送信された TSL プロパティデータを示します。
{
"deviceType": "Custom",
"iotId": "H5KURkKdibnZvSls****000100",
"productKey": "a1HHrkm****",
"gmtCreate": 1564569974224,
"deviceName": "TestDevice1",
"items": {
"Temperature": {
"value": 23.5,
"time": 1564569974229
}
}
}
この温度センサープロダクトには複数のデバイスが含まれています。報告された温度が 38 を超え、かつデバイスが TestDevice1、TestDevice2、または TestDevice3 の場合にのみ、Temperature プロパティのデータを Function Compute に転送して処理する必要があります。次の SQL ステートメントは、デバイスによって報告されたデータをフィルタリングします。
SQL ステートメント:
SELECT deviceName() as deviceName,things_property('Temperature') as Temperature
FROM "/g5or0***/+thing/event/property/post"
WHERE things_property('Temperature')>38 and deviceName() in ('TestDevice1', 'TestDevice2', 'TestDevice3')
この例では、deviceName() 関数と things_property('Temperature') 関数が呼び出されます。
SELECT 句に関数を設定することで、送信されたデータがフィルター処理され、デバイス名と温度パラメーターの値が取得されます。
これらの関数は、条件を指定するために WHERE 句に設定されます。
>38およびin ('TestDevice1', 'TestDevice2', 'TestDevice3')は、温度が 38 より大きく、かつデバイス名が TestDevice1、TestDevice2、または TestDevice3 である場合にのみ、プロパティデータが転送されることを示します。
SQL ステートメントにおける SELECT 句と WHERE 句の記述方法、およびルールエンジンでサポートされている条件式の詳細については、「SQL ステートメント」をご参照ください。