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