IoT Platform は、パーサースクリプトでデータ処理に使用できるさまざまな関数を備えています。これらの関数を使用すると、データ型の変換、宛先へのデータの転送、特定のデータ型のペイロードの処理を行うことができます。このトピックでは、IoT Platform で提供される関数について説明します。
Data Forwarding v1.0 でサポートされている関数は、Data Forwarding v2.0 のパーサースクリプトで使用できます。詳細については、「関数」をご参照ください。
データ型の変換
関数 | 説明 |
toBoolean(Object) | Object パラメーターをブール値に変換します。パラメーターは、次のデータ型をサポートしています。
|
toNumber(Object) | Object パラメーターの値を数値に変換します。パラメーターは、次のデータ型をサポートしています。
|
toString(Object) | Object パラメーターの値を文字列に変換します。 パラメーターが NULL 以外の値に設定されている場合、関数は値を文字列として返します。パラメーターが NULL に設定されている場合、関数は空の文字列を返します。 パラメーターがバイナリ型の場合、関数は UTF-8 デコードされた値を返します。 |
toMap(Object) | Object パラメーターの値をマップに変換します。パラメーターは、次のデータ型をサポートしています。
|
toArray(Object) | Object パラメーターの値を配列に変換します。パラメーターは、次のデータ型をサポートしています。
|
toBinary(Object) | Object パラメーターの値をバイナリ値に変換します。パラメーターは、次のデータ型をサポートしています。
|
時間形式の変換
関数 | 説明 |
format_date(timestamp, patten, timeZone) | ミリ秒単位のタイムスタンプを、指定された形式の時間値に変換します。文字列が返されます。
|
to_timestamp(dateString, patten, timeZone) | 指定された形式の時間値を、ミリ秒単位のタイムスタンプに変換します。数値が返されます。
|
宛先へのデータの転送
以下の関数では、destinationId パラメーターはデータ宛先の ID を指定し、payload パラメーターはメッセージの内容を指定します。
関数 | 説明 | 例 |
writeAmqp(destinationId, payload, tag) | Advanced Message Queuing Protocol ( AMQP ) コンシューマーグループにデータを転送します。 tag: このパラメーターはオプションです。タグを指定すると、そのタグは AMQP コンシューマーグループに転送されるすべてのメッセージに追加されます。 タグの長さは 1 ~ 128 文字である必要があります。タグには定数または変数を指定できます。
| 詳細については、「AMQP コンシューマーグループにデータを転送する」をご参照ください。 |
writeDatahub(destinationId, data) | DataHub にデータを転送します。 data: DataHub に書き込むデータ。マップとバイナリデータ型のみがサポートされています。 | 詳細については、「DataHub にデータを転送する」をご参照ください。 |
writeFc(destinationId, data) | Function Compute にデータを転送します。 data: Function Compute に転送するデータ。 | 詳細については、「Function Compute にデータを転送する」をご参照ください。 |
writeKafka(destinationId, payload, key) | ApsaraMQ for Kafka にデータを転送します。 key: ApsaraMQ for Kafka に転送されるメッセージで指定するキー。このパラメーターはオプションです。 コンシューマークライアントのタグに基づいてメッセージをルーティングできます。 | |
writeMns(destinationId, payload) | Simple Message Queue (formerly MNS) (SMQ) にデータを転送します。 | 詳細については、「Message Service ( MNS ) にデータを転送する」をご参照ください。 |
writeMq(destinationId, payload, tag) | ApsaraMQ for RocketMQ にデータを転送します。 tag: このパラメーターはオプションです。タグを指定すると、そのタグは ApsaraMQ for RocketMQ に転送されるすべてのメッセージに追加されます。コンシューマークライアントのタグに基づいてメッセージをフィルタリングできます。 タグの長さは 1 ~ 128 文字である必要があります。タグには定数または変数を指定できます。
| 詳細については、「ApsaraMQ for RocketMQ にデータを転送する」をご参照ください。 |
writeTableStore(destinationId, data, flowType) | Wide Column モデルの Tablestore ( OTS ) インスタンスにデータを転送します。
| 詳細については、「Wide Column モデルの OTS インスタンスにデータを転送する」をご参照ください。 |
writeTableStoreTs(destinationId, timeInUs, metricName, tags, fields, dataSource) | TimeSeries モデルの OTS インスタンスにデータを転送します。
この関数を使用して、OTS の 1 行にデータを書き込むことができます。一度に複数行にデータを書き込むには、次の関数を使用します。 パラメーターの詳細については、「TimeSeries モデル」をご参照ください。 | 詳細については、「Wide Column モデルの OTS インスタンスにデータを転送する」をご参照ください。 |
writeRds(destinationId, data) | ApsaraDB RDS テーブルにデータを書き込みます。 data: ApsaraDB RDS に書き込むデータ。マップデータ型のみがサポートされています。キーはテーブルの列名を指定し、値は列の値を指定します。 | 詳細については、「ApsaraDB RDS にデータを転送する」をご参照ください。 |
updateRds(destinationId, data, condition, limit) | ApsaraDB RDS テーブルに書き込まれたデータを更新します。
例:
| |
writeTsdb(destinationId, timestamp, metricName, value, tag) | 時系列データベースにデータを転送します。
| 詳細については、「時系列データベースにデータを転送する」をご参照ください。 |
writeIotTopic(destinationId, topic, payload) | 別のトピックにデータを転送します。 トピック: データの転送先となるトピック。以下のトピックがサポートされています。
詳細については、「データ宛先を作成する」をご参照ください。 重要 たとえば、MQTT.fx を使用してデバイス A を IoT Platform に接続する場合、デバイス A はデバイス Topic に自動的にサブスクライブできません。デバイス B が 詳細については、「トピックの自動サブスクリプション」をご参照ください。 | 詳細については、「別のトピックにデータを転送する」をご参照ください。 |
writeLindorm(destinationId, timestamp, tags, fields) | Lindorm にデータを転送します。
| 詳細については、「Lindorm にデータを転送する」をご参照ください。 |
各基本データ型でサポートされている関数
マップ
関数
説明
[Object]
指定されたキーの値を取得します。
size()
マップ内のキーと値のペアの数を取得します。
containsKey(String)
マップに指定されたキーが含まれているかどうかを確認します。
keySet()
マップ内のキーを取得します。配列が返されます。
remove(Object)
指定されたキーに基づいて、マップからキーと値のペアを削除します。
put(Object, Object)
マップにキーと値のペアを追加します。
putAll(map)
既存のマップに別のマップを追加します。
配列
関数
説明
[int]
指定されたインデックスの値を取得します。配列の最初の要素のインデックスは 0 です。
contains(Object)
配列に指定された要素が含まれているかどうかを確認します。
remove(Object)
配列から指定された要素を削除します。
removeAt(int)
配列内の指定されたインデックスにある要素を削除します。
add(Object)
配列の末尾に要素を追加します。
add(index, Object)
指定されたインデックスに要素を追加します。
addAll(array)
配列に別の配列を追加します。
size()
配列内の要素の数を取得します。
文字列
関数
説明
substring(start, end)
startの位置からend-1の位置まで文字列を抽出します。パラメーターを設定しない場合、抽出プロセスは文字列の末尾まで続行されます。length()
文字列の長さをクエリします。
split(String)
指定された区切り文字を使用して文字列を分割します。
startsWith(String)
文字列が指定された部分文字列で始まるかどうかを確認します。
endsWith(String)
文字列が指定された部分文字列で終わるかどうかを確認します。
indexOf(String, index)
文字列の指定されたインデックスから、部分文字列が最初に出現する位置をクエリします。
index パラメーターのデフォルト値は 0 です。
その他の関数
関数 | 説明 |
endWith(input, suffix) | input 文字列が、指定された suffix で終わるかどうかを確認します。 ブール値が返されます。 |
productKey() | 現在のプロダクトの ProductKey を返します。 |
getDeviceTag(key) | タグキーのデバイスタグ値を返します。指定された key を含むタグがデバイスにアタッチされていない場合、タグ値は返されません。 |
getOrNull(data, "items", ......) | JSON 形式の data パラメーターで指定されたフィールドの値を返します。 関数には、1 つ以上のフィールドを設定できます。複数のフィールドは、レベルに基づいて設定する必要があります。関数は、最後のフィールドの値を返します。最後のフィールドが存在しないか、フィールドが空の場合、関数は null を返します。 data の例: 例:
|
payload(textEncoding) | デバイスから送信されたメッセージペイロードをエンコードします。textEncoding パラメーターは、エンコーディングスキームを指定します。
|
parseNumber(numberString, radix) | numberString パラメーターで指定された文字列を、radix パラメーターで指定された記数法に基づいて数値に変換します。 radix パラメーターはオプションです。有効な値:
例: |
参照
宛先にデータを転送する場合、サポートされている構文を使用してスクリプトを記述し、特定の関数を呼び出すことができます。詳細については、「スクリプト構文」をご参照ください。