すべてのプロダクト
Search
ドキュメントセンター

IoT Platform:関数

最終更新日:Jun 21, 2026

ルールエンジンは、SQL ステートメントで呼び出してデータを処理するための関数を提供します。

データ転送機能でサポートされる関数

関数

説明

abs(number)

数値の絶対値を返します。

asin(number)

数値の逆正弦を返します。

attribute(key)

タグキーのデバイスタグ値を返します。指定したキーのタグがデバイスに付与されていない場合、タグ値は返されません。SQL ステートメントをデバッグする場合、実際のデバイスまたはタグが存在しないため、空の文字列が返されます。

concat(string1, string2)

文字列を連結し、連結した文字列を返します。

例: concat(field,'a')

cos(number)

数値の余弦を返します。

cosh(number)

数値の双曲線余弦を返します。

crypto(field, String)

field の値を暗号化します。

String パラメーターは、暗号化アルゴリズムを指定します。次のアルゴリズムがサポートされています: MD5、SHA1、SHA-256、SHA-384、SHA-512。

deviceName()

現在のデバイス名を返します。SQL ステートメントをデバッグする場合、実際のデバイスが存在しないため、空の文字列が返されます。

endswith(input, suffix)

input 文字列が suffix パラメーターで指定した文字列で終わるかどうかを確認します。

exp(number)

数学定数 e を、指定した数値で累乗した値を返します。

floor(number)

数値以下の最大の整数を返します。

log(n, m)

m に対する数値 n の対数を返します。

m を指定しない場合、デフォルトの底 10 が使用されます。この場合、 log(n) が返されます。

lower(string)

指定した文字列内のすべての文字を小文字に変換し、小文字の文字列を返します。

mod(n, m)

数値 n を除数 m で割った余りを返します。

nanvl(value, default)

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

value パラメーターは、プロパティ名を指定します。プロパティ値が null の場合、この関数は default パラメーターの値を返します。

newuuid()

ランダムな UUID (Universally Unique Identifier) を返します。

payload(textEncoding)

デバイスから送信されたメッセージペイロードを返します。ペイロードは、textEncoding パラメーターで指定したエンコーディング方式を使用してエンコードされます。

デフォルトのエンコーディング方式は UTF-8 です。これは、payload() 関数と payload('utf-8') 関数が同じ結果を返すことを示します。

power(n, m)

数値 nm 乗を返します。

rand()

0 以上 1 未満の乱数を返します。

replace(source, substring, replacement)

source 内の substringreplacement 文字列で置換します。

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

sin(n)

数値 n の正弦を返します。

sinh(n)

数値 n の双曲線正弦を返します。

tan(n)

数値 n の正接を返します。

tanh(n)

数値 n の双曲線正接を返します。

thingPropertyFlatMap(property)

Thing Specification Language (TSL) モデル内のプロパティ値を返します。プロパティに複数の値がある場合は、アンダースコア (_) で値を区切ります。TSL モデルに 50 個を超えるプロパティが含まれている場合、データ転送機能では TSL モデル全体を転送できません。この関数を呼び出して、TSL モデルからプロパティデータを抽出できます。これにより、TSL モデルのすべてのプロパティを他の Alibaba Cloud サービスに転送できます。

この関数の property パラメーターには、複数のプロパティを指定できます。プロパティを指定しない場合、プロパティのすべての値が抽出されます。

たとえば、関数 thingPropertyFlatMap('Power', 'Position') は、メッセージ本文に "Power": "On", "Position_latitude": 39.9, "Position_longitude": 116.38 を追加します。

timestamp(format)

GMT+8 の現在のシステム時刻のタイムスタンプを返します。

format パラメーターは省略可能です。format パラメーターを設定しない場合、現在のシステム時刻のタイムスタンプが返されます。たとえば、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)

指定したレベルのトピック情報を返します。

例えば、トピック名が /alDbcLe****/TestDevice/user/set であるとします。topic() 関数は、完全なトピック名 /alDbcLe****/TestDevice/user/set を返します。topic(1) 関数は、第 1 階層の alDbcLe**** を返します。topic(2) 関数は、第 2 階層の TestDevice を返します。

upper(string)

指定した文字列内のすべての文字を大文字に変換し、大文字の文字列を返します。

たとえば、upper(alibaba) 関数は ALIBABA を返します。

to_base64(*)

メッセージペイロードをバイナリデータから Base64 でエンコードされた文字列に変換し、変換後のメッセージペイロードを返します。元のメッセージペイロードがバイナリデータ型の場合、この関数を呼び出すことができます。

messageId()

IoT Platform によって生成されたメッセージ ID を返します。

substring(target, start, end)

指定した文字列の一部を返します。

パラメーターの説明

  • target: 元の文字列。このパラメーターは必須です。

  • start: 返される文字の開始位置。この位置の文字も含まれます。このパラメーターは必須です。

  • end: 返される文字の終了位置。この位置の文字は含まれません。このパラメーターはオプションです。

説明
  • 文字列型と整数型のデータのみがサポートされています。整数は、処理される前に文字列に変換されます。

  • 定数文字列は、一対の単一引用符 ('') で囲みます。二重引用符 ("") で囲まれたデータは整数として解析されます。

  • 入力パラメーターが無効な場合 (例:データ型がサポートされていない場合)、SQL の解析に失敗し、ルールはトリガーされません。

例:

  • substring('012345', 0) = "012345"

  • substring('012345', 2) = "2345"

  • substring('012345', 2.745) = "2345"

  • substring(123, 2) = "3"

  • substring('012345', -1) = "012345"

  • substring(true, 1.2) エラー

  • substring('012345', 1, 3) = "12"

  • substring('012345', -50, 50) = "012345"

  • substring('012345', 3, 1) = ""

to_hex(*)

メッセージペイロードをバイナリデータから 16 進数文字列に変換し、変換後のメッセージペイロードを返します。元のメッセージペイロードがバイナリデータ型の場合、この関数を呼び出すことができます。

user_property()

デバイスが MQTT 5.0 を使用する場合、UserProperty パラメーターの値を取得します。

  • user_property() 関数は、すべてのプロパティデータを取得するために呼び出されます。

  • user_property('${Key}') 関数は、指定されたキーのデータを取得するために呼び出されます。

たとえば、デバイスによって報告される UserProperty パラメーターの値は {"a": "1", "b": "2"} です。

  • user_property() 関数は "{\"a\": \"1\", \"b\": \"2\"}" を返します。

  • user_property('a') 関数は "{\"a\": \"1\"}" を返します。

things_function_type()

報告された TSL データの種類をクエリします。この関数は、TSL イベントおよび TSL サービスにのみ適用されます。この関数の戻り値は、クエリ対象の TSL 機能の種類によって異なります。

  • イベントをクエリする場合、イベントの識別子を返します。

  • サービスをクエリする場合、サービスの識別子を返します。

例えば、/SdfgeW***/device1/thing/event/BrokenInfo/post トピックは、BrokenInfo イベントを転送するために使用されます。 things_function_type() 関数を呼び出してイベントを照会すると、報告されたイベント BrokenInfo の識別子が返されます。

things_property('${Parameter name}')

TSL のプロパティ、サービス、またはイベントの値をクエリします。この関数は TSL データにのみ適用されます。

たとえば、/${productKey}/${deviceName}/thing/event/property/post トピックは、CurrentTemperature プロパティを転送するために使用されます。things_property('CurrentTemperature') 関数は、CurrentTemperature プロパティの報告された値を返します。

SQL ステートメントの SELECT 句および WHERE 句で関数を呼び出して、データを取得または処理できます。

たとえば、温度センサープロダクトに Temperature プロパティがあるとします。次のスクリプトは、デバイスによって送信された TSL プロパティデータを示します。

{
    "deviceType": "Custom",
    "iotId": "H5KURkKdibnZvSls****000100",
    "productKey": "a1HHrkm****",
    "gmtCreate": 1564569974224,
    "deviceName": "TestDevice1",
    "items": {
        "Temperature": {
            "value": 23.5,
            "time": 1564569974229
        }
    }
}

この温度センサープロダクトには複数のデバイスが含まれています。報告された温度が 38 を超え、かつデバイスが TestDevice1TestDevice2、または 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 ステートメント」をご参照ください。