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

IoT Platform:関数

最終更新日:Mar 27, 2025

IoT Platform は、パーサースクリプトでデータ処理に使用できるさまざまな関数を備えています。これらの関数を使用すると、データ型の変換、宛先へのデータの転送、特定のデータ型のペイロードの処理を行うことができます。このトピックでは、IoT Platform で提供される関数について説明します。

Data Forwarding v1.0 でサポートされている関数は、Data Forwarding v2.0 のパーサースクリプトで使用できます。詳細については、「関数」をご参照ください。

データ型の変換

関数

説明

toBoolean(Object)

Object パラメーターをブール値に変換します。パラメーターは、次のデータ型をサポートしています。

  • ブール値: 関数はパラメーターと同じ値を返します。

  • 数値: パラメーターが 0 に設定されている場合、関数は false を返します。それ以外の場合、関数は true を返します。

  • 文字列: パラメーターが "true" に設定されている場合、関数は true を返します。それ以外の場合、関数は false を返します。

  • パラメーターが NULL に設定されている場合、関数は false を返します。

toNumber(Object)

Object パラメーターの値を数値に変換します。パラメーターは、次のデータ型をサポートしています。

  • ブール値: パラメーターが true に設定されている場合、関数は 1 を返します。パラメーターが false に設定されている場合、関数は 0 を返します。

  • 数値: 関数はパラメーターと同じ値を返します。

  • 文字列: 関数は文字列を数値に解析します。

  • パラメーターが NULL に設定されている場合、関数は 0 を返します。

toString(Object)

Object パラメーターの値を文字列に変換します。

パラメーターが NULL 以外の値に設定されている場合、関数は値を文字列として返します。パラメーターが NULL に設定されている場合、関数は空の文字列を返します。

パラメーターがバイナリ型の場合、関数は UTF-8 デコードされた値を返します。

toMap(Object)

Object パラメーターの値をマップに変換します。パラメーターは、次のデータ型をサポートしています。

  • マップ: 関数はパラメーターと同じ値を返します。

  • 文字列: 関数は文字列を JSON 形式のマップに解析します。

  • パラメーターが NULL に設定されている場合、関数は空のマップを返します。

toArray(Object)

Object パラメーターの値を配列に変換します。パラメーターは、次のデータ型をサポートしています。

  • 配列: 関数はパラメーターと同じ値を返します。

  • 文字列: 関数は文字列を JSON 形式の配列に解析します。

  • パラメーターが NULL に設定されている場合、関数は空の配列を返します。

toBinary(Object)

Object パラメーターの値をバイナリ値に変換します。パラメーターは、次のデータ型をサポートしています。

  • バイナリ: 関数はパラメーターと同じ値を返します。

  • 文字列: 関数は UTF-8 エンコードされた値を返します。

  • パラメーターが NULL に設定されている場合、関数は空のバイナリ値を返します。

時間形式の変換

関数

説明

format_date(timestamp, patten, timeZone)

ミリ秒単位のタイムスタンプを、指定された形式の時間値に変換します。文字列が返されます。

  • timestamp: ミリ秒単位のタイムスタンプ。

  • patten: 必要な時間形式。例: yyyy-MM-dd HH:mm:ss

  • timeZone: タイムゾーン。例: GMT、UTC、CST。タイムゾーンを指定することをお勧めします。timeZone パラメーターを設定しない場合、関数は GMT+8 の時間値を返します。

to_timestamp(dateString, patten, timeZone)

指定された形式の時間値を、ミリ秒単位のタイムスタンプに変換します。数値が返されます。

  • dateString: 時間文字列。

  • patten: 時間形式。例: yyyy-MM-dd HH:mm:ss

  • timeZone: タイムゾーン。例: GMT、UTC、CST。タイムゾーンを指定することをお勧めします。timeZone パラメーターを設定しない場合、関数は GMT+8 のタイムスタンプを返します。

宛先へのデータの転送

以下の関数では、destinationId パラメーターはデータ宛先の ID を指定し、payload パラメーターはメッセージの内容を指定します。

関数

説明

writeAmqp(destinationId, payload, tag)

Advanced Message Queuing Protocol ( AMQP ) コンシューマーグループにデータを転送します。

tag: このパラメーターはオプションです。タグを指定すると、そのタグは AMQP コンシューマーグループに転送されるすべてのメッセージに追加されます。

タグの長さは 1 ~ 128 文字である必要があります。タグには定数または変数を指定できます。

  • 定数には、文字と数字を含めることができます。

  • 変数は、スクリプトを使用してペイロードから解析された JSON データのキーの値を指定します。値が使用できない場合、タグはメッセージに追加されません。

詳細については、「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 文字である必要があります。タグには定数または変数を指定できます。

  • 定数には、文字と数字を含めることができます。

  • 変数は、スクリプトを使用してペイロードから解析された JSON データのキーの値を指定します。値が使用できない場合、タグはメッセージに追加されません。

詳細については、「ApsaraMQ for RocketMQ にデータを転送する」をご参照ください。

writeTableStore(destinationId, data, flowType)

Wide Column モデルの Tablestore ( OTS ) インスタンスにデータを転送します。

  • data: OTS に書き込むデータ。マップデータ型のみがサポートされています。キーはテーブルの列名を指定し、値は列の値を指定します。

    データ パラメーターには OTS のプライマリキーが含まれている必要があります。

  • flowType: このパラメーターはオプションです。このパラメーターは、プライマリキーではないフィールドのデータ型を指定します。

    • 値が フロータイプ parameter が true の場合、システムは主キー以外のフィールドの値を文字列に変換し、OTS に転送します。

    • flowType パラメーターを false に設定するか、flowType パラメーターを設定しない場合、システムは非プライマリキーフィールドの値を OTS に転送しますが、データ型は変換しません。

詳細については、「Wide Column モデルの OTS インスタンスにデータを転送する」をご参照ください。

writeTableStoreTs(destinationId, timeInUs, metricName, tags, fields, dataSource)

TimeSeries モデルの OTS インスタンスにデータを転送します。

  • timeInUs: データが送信されたタイムスタンプ。単位:マイクロ秒。データ型:整数。

  • metricName: 時系列データの物理量またはメトリックの名前です。データ型:string。

  • タグ: 時系列データのタグ。データ型: マップ。タグのキーと値は文字列です。

  • フィールド: 時系列データ。データ型: マップ。時系列の特定の時点に複数のデータ値を指定できます。各値は、時系列テーブルの列(列名と列値を含む)に対応します。

    列名は文字列で、列の値はブール値、整数、浮動小数点数、文字列、バイナリデータ型のいずれかになります。

  • dataSource: 時系列の生成に使用するデータソースの ID です。データ型:string。このパラメーターのみを空にすることができます。

この関数を使用して、OTS の 1 行にデータを書き込むことができます。一度に複数行にデータを書き込むには、次の関数を使用します。

writeTableStoreTs(destinationId, [
    {
        "timeInUs": timestamp() * 1000, // タイムスタンプをミリ秒からマイクロ秒に変換
        "metricName": "name1",
        "tags":{},
        "fields":{},
        "dataSource": ""
    },
    {
        "timeInUs": timestamp() * 1000, // タイムスタンプをミリ秒からマイクロ秒に変換
        "metricName": "name2",
        "tags":{},
        "fields":{},
        "dataSource": ""
    }
]);

パラメーターの詳細については、「TimeSeries モデル」をご参照ください。

詳細については、「Wide Column モデルの OTS インスタンスにデータを転送する」をご参照ください。

writeRds(destinationId, data)

ApsaraDB RDS テーブルにデータを書き込みます。

data: ApsaraDB RDS に書き込むデータ。マップデータ型のみがサポートされています。キーはテーブルの列名を指定し、値は列の値を指定します。

詳細については、「ApsaraDB RDS にデータを転送する」をご参照ください。

updateRds(destinationId, data, condition, limit)

ApsaraDB RDS テーブルに書き込まれたデータを更新します。

  • データ: ApsaraDB RDS テーブルで更新するデータ。マップ データ型のみがサポートされています。キーはテーブルの列名を指定し、値は列の値を指定します。

  • 条件: データの更新のために構成する条件。このパラメーターは必須です。文字列型のみがサポートされています。条件は、SQL 文の WHERE 句に指定します。例: a = 3 and b = 3

  • 制限: 関数が返すことができる行数。 デフォルト値: 1。 最大値: 50。

例:

  • 複数のデータ行が 条件制限制限 パラメーターで指定された条件を満たす場合、関数は SQL 結果の最初の行からデータを自動的に更新します。 パラメーターを 1 に設定すると、関数は最初の行のデータを更新します。 パラメーターを 10 に設定すると、関数は最初の行から 10 行目のデータまでを更新します。

  • condition パラメーターで指定された条件に一致するデータ行が 1 行のみの場合、関数はその行のみを更新します。

writeTsdb(destinationId, timestamp, metricName, value, tag)

時系列データベースにデータを転送します。

  • タイムスタンプ: タイムスタンプです。

  • metricName: 時系列データベースのメトリック名です。

  • : 時系列データベースのデータポイントの値。文字列型とマップ型がサポートされています。

  • タグ: キーと値のペアで構成されるタグ。データ型はマップです。

詳細については、「時系列データベースにデータを転送する」をご参照ください。

writeIotTopic(destinationId, topic, payload)

別のトピックにデータを転送します。

トピック: データの転送先となるトピック。以下のトピックがサポートされています。

  • カスタムトピック: デバイスがトピックをサブスクライブして、トピックから転送されたメッセージを取得できるように、カスタムトピックの権限をサブスクライブに設定する必要があります。

  • ダウンストリーム TSL データの送信先となるトピック: /sys/${productKey}/${deviceName}/thing/service/property/set。IoT Platform は、このトピックにメッセージを転送します。メッセージには、デバイスのプロパティを設定するためのコマンドが含まれています。デバイスは、トピックから転送されたメッセージを受信し、メッセージのペイロードに基づいてデバイスのプロパティを設定します。転送されたデータに基づいて転送先トピックのデバイスのプロパティを設定する場合、Topic パラメーターをこの値に設定できます。

${productKey} 変数の値は、destinationId パラメーターで指定したプロダクトの ProductKey と同じである必要があります。関数にはトピックを指定する必要があります。トピック名にワイルドカード文字を含めることはできません。

詳細については、「データ宛先を作成する」をご参照ください。

重要

たとえば、MQTT.fx を使用してデバイス A を IoT Platform に接続する場合、デバイス A はデバイス Topic に自動的にサブスクライブできません。デバイス B が thing/service/property/set Topic にデータを転送し、デバイス A がその Topic にサブスクライブしていない場合、デバイス A はデバイス 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 の例:

"items": {
    "Humidity": {
        "value": 25,
        "time": 1626948134319
    }
}

例:

  • getOrNull(data, "items"): items フィールドの値 "Humidity": {"value": 25,"time": 1626948134319} を返します。

  • getOrNull(data, "items", "Humidity", "value"): value フィールドの値 25 を返します。

  • getOrNull(data, "items", "Temperature"): Temperature フィールドが存在しない場合、値 null を返します。

payload(textEncoding)

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

  • パラメーターを設定しない場合、メッセージペイロードは UTF-8 エンコードされた文字列に変換されます。payload()payload('utf-8') と同等です。

  • パラメーターを 'json' に設定すると、メッセージペイロードはマップに変換されます。ペイロードが JSON 形式でない場合、エラーが発生します。

  • パラメーターを 'binary' に設定すると、メッセージペイロードはパススルーバイナリデータに変換されます。

parseNumber(numberString, radix)

numberString パラメーターで指定された文字列を、radix パラメーターで指定された記数法に基づいて数値に変換します。

radix パラメーターはオプションです。有効な値:

  • 10 ( デフォルト ): 文字列を 10 進数に変換します。

  • 2: 文字列を 2 進数に変換します。

  • 16: 文字列を 16 進数に変換します。

例:

// デバイスがデータを送信します。
var content = '0xFF';
// 関数は、変換される文字列 FF を取得します。
var x = content.substring(2);
// 関数は、文字列 FF を 16 進数に変換します。
var value = parseNumber(x, 16);

参照

宛先にデータを転送する場合、サポートされている構文を使用してスクリプトを記述し、特定の関数を呼び出すことができます。詳細については、「スクリプト構文」をご参照ください。