日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

函數列表

配置云產品流轉過程中,您可以在編寫解析器腳本時使用數據類型轉換函數、時間類型轉換函數、基礎數據類型函數和流轉數據到數據目的函數等方法,實現數據多樣化處理。本文介紹相關函數的表達式及其使用說明。

除本文支持的函數表達式外,云產品流轉新版的解析器腳本中還支持舊版的函數。詳細內容,請參見數據流轉支持的函數。

數據類型轉換函數

表達式

說明

toBoolean(Object)

Object值轉換為Boolean值。參數支持以下類型的取值:

  • Boolean:返回對應的布爾值。

  • Number:參數為0,返回false。否則,返回true。

  • String:參數為"true",返回true。否則,返回false。

  • 參數值為null:返回false。

toNumber(Object)

Object值轉換為Number值。參數支持以下類型的取值:

  • Boolean:參數為true,返回1,參數為false,返回0。

  • Number:返回對應的數值。

  • String:按照數值類型解析。

  • 參數值為null:返回0。

toString(Object)

Object值轉換為String值。

參數值類型不限,返回對應String類型值。參數值為null,返回空字符。

當參數為二進制類型時,按照UTF-8編碼返回對應值。

toMap(Object)

Object值轉換為Map值。參數支持以下類型的取值:

  • Map:返回對應的值。

  • String:按照JSON格式解析為Map。

  • 參數值為null:返回空Map。

toArray(Object)

Object值轉換為Array值。參數支持以下類型的取值:

  • Array:返回對應的值。

  • String:按照JSON格式解析為Array。

  • 參數值為null:返回空Array。

toBinary(Object)

Object值轉換為二進制值。參數支持以下類型的取值:

  • Binary:返回對應的值。

  • String:按照UTF-8編碼返回值。

  • 參數值為null:返回空Binary。

時間類型轉換函數

函數表達式

說明

format_date(timestamp, patten, timeZone)

將時間戳毫秒值轉換為指定格式的時間。返回String類型的時間。

  • timestamp:時間戳毫秒值。

  • patten:待轉換的時間格式。例如yyyy-MM-dd HH:mm:ss

  • timeZone:時區。例如GMT、UTC、CST等。建議主動設置時區,若未設置,默認為北京時間(GMT+8)。

to_timestamp(dateString, patten, timeZone)

將指定格式的時間轉換為時間戳毫秒值。返回數值類型的時間戳。

  • dateString:時間字符串。

  • patten:指定的時間格式。例如yyyy-MM-dd HH:mm:ss。

  • timeZone:時區。例如GMT、UTC、CST等。建議主動設置時區,若未設置,默認為北京時間(GMT+8)。

流轉數據到數據目的函數

以下函數表達式中的入參destinationId是數據目的ID,payload是消息內容。

函數表達式

說明

示例

writeAmqp(destinationId, payload, tag)

流轉數據到AMQP消費組。

tag:可選參數。設置tag后,所有通過該操作流轉到AMQP服務端訂閱消費組里的消息都會攜帶該tag。

tag長度不超過128個字符,可以輸入常量或變量。

  • 常量支持輸入中文漢字、英文字母、數字。

  • 變量代表解析腳本處理后的JSON數據中key對應的value值。如果取不到value值,則消息不攜帶tag。

數據轉發到AMQP服務端訂閱消費組消費

writeDatahub(destinationId, data)

流轉數據到DataHub。

data:寫入DataHub的數據。僅支持Map和Binary類型數據。

數據轉發到DataHub

writeFc(destinationId, data)

流轉數據到函數計算(FC)。

data:流轉到FC的數據。

數據轉發到函數計算(FC)

writeKafka(destinationId, payload, key)

流轉數據到消息對列Kafka。

key:可選參數,流轉到Kafka Topic消息中攜帶的key。

您可以在Kafka消息消費端,通過標簽進行消息路由。

數據轉發到消息隊列Kafka

writeMns(destinationId, payload)

流轉數據到輕量消息隊列(原 MNS) SMQ(Simple Message Queue (formerly MNS))

數據轉發到消息服務(MNS)

writeMq(destinationId, payload, tag)

流轉數據到消息隊列(RocketMQ)。

tag:可選參數。設置標簽后,所有通過該操作流轉到RocketMQ對應Topic里的消息都會攜帶該標簽。您可以在RocketMQ消息消費端,通過標簽進行消息過濾。

tag長度不超過128個字符,可以輸入常量或變量。

  • 常量支持輸入中文漢字、英文字母、數字。

  • 變量代表解析腳本處理后的JSON數據中key對應的value值。如果取不到value值,則消息不攜帶tag。

數據轉發到消息隊列RocketMQ

writeTableStore(destinationId, data,flowType)

流轉數據到表格存儲(Tablestore)寬表模型。

  • data:寫入表格存儲的數據。僅支持Map類型數據,其中鍵(Key)值對應表格列名,值(Value)對應列值。

    data中必須包含Tablestore的主鍵。

  • flowType:可選參數。設置非主鍵字段的數據類型。

    • flowType為true時,非主鍵字段都按照String數據類型流轉到Tablestore中。

    • flowType為false或不傳入時,非主鍵字段按照對應值的數據類型流轉到Tablestore中。

數據轉發到表格存儲(Tablestore)寬表模型

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

流轉數據到表格存儲(Tablestore)時序模型。

  • timeInUs:時間戳,表示該數據記錄對應的生成時間。單位為微秒。整型數據。

  • metricName:時間線數據所度量的物理量或者監控指標的名稱。字符串類型數據。

  • tags:時間線的標簽信息。Map類型數據。標簽的key和value為字符串類型數據。

  • fields:時間線數據。Map類型數據。在一個時間點上可以設置多個數據值。每個值對應數據庫中的一列,包括列名和列值。

    列名為字符串類型數據;列值可為布爾型、整型、浮點型、字符串類型和二進制類型的數據。

  • dataSource:產生時間線的數據源標識,字符串類型數據。僅該參數可以為空。

該函數表達式是單行寫入數據至Tablestore,您可使用下面表達式,寫入多行數據:

writeTableStoreTs(destinationId, [
    {
        "timeInUs": timestamp() * 1000,
        "metricName": "name1",
        "tags":{},
        "fields":{},
        "dataSource": ""
    },
    {
        "timeInUs": timestamp() * 1000,
        "metricName": "name2",
        "tags":{},
        "fields":{},
        "dataSource": ""
    }
]);

參數的更多說明,請參見時序模型介紹。

數據轉發到表格存儲(Tablestore)時序模型

writeRds(destinationId, data)

流轉數據到云數據庫RDS,新增數據到云數據庫表。

data:寫入云數據庫表的數據。僅支持Map類型數據,其中鍵(Key)值對應數據庫表列名,值(Value)對應列值。

數據轉發到云數據庫RDS

updateRds(destinationId, data, condition, limit)

流轉數據到云數據庫RDS,更新已寫入云數據庫表中的數據。

  • data:更新寫入云數據庫表的數據。僅支持Map類型數據,其中鍵(Key)值對應數據庫表列名,值(Value)對應列值。

  • condition:更新數據的條件,不可空。僅支持String類型,作為SQL語句的WHERE條件。例如:a = 3 and b = 3。

  • limit:更新數據的限制行數,可為空。默認為1行,最大值為50。

例如:

  • 如果滿足condition的有多行數據,默認從SQL返回結果的第一行數據開始更新。limit為1,更新第一行數據。limit為10,更新第一行至第10行數據。

  • 如果滿足condition的僅一行數據,則僅更新一行數據。

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

流轉數據到時序數據庫(TSDB)中。

  • timestamp:時間戳。

  • metricName:TSDB中存儲的指標名稱。

  • value:TSDB中存儲的數據點值。支持String和Map類型數據。

  • tag:設置標記數據的標簽鍵值對,Map類型數據。

數據轉發到時序數據庫(TSDB)

writeIotTopic(destinationId, topic, payload, deviceName)

流轉數據到另一個Topic。

  • Topic:數據轉發目的地Topic,支持以下Topic。

    • 自定義Topic:該自定義Topic的設備操作權限需為訂閱,即所屬設備可訂閱這個Topic,獲取轉發的消息。

    • 物模型數據下發Topic:/sys/${productKey}/${deviceName}/thing/service/property/set。該Topic為設備接收設置屬性值指令的Topic,設備從該Topic接收轉發數據,并根據數據內容,設置屬性值。用于目的地Topic所屬設備根據轉發的數據更改屬性值的場景。

    Topic中${productKey}必須與destinationId對應數據目的中設置的產品相同。函數中Topic必須指定具體Topic,不支持使用通配符。

    更多信息,請參見步驟一:創建數據目的。

    重要

    目的地Topic所屬設備若未訂閱該Topic,則收不到轉發的消息。

    例如使用MQTT.fx工具接入物聯網平臺的設備A,不會自動訂閱設備Topic,若設備B向設備A的Topic:thing/service/property/set轉發數據,而設備A未手動訂閱該Topic,則設備A收不到設備B轉發的消息。

    設備Topic自動訂閱的詳細說明,請參見自動訂閱Topic說明。

  • deviceName:對于開源MQTT托管形態下產品和設備,及MQTT云網關產品和設備,流轉數據到另一個Topic時,需傳入該參數。其他業務場景不可以傳入該參數。

    數據格式為Map類型,Key為"deviceName",Value為deviceName(),表示發送該Topic消息的設備名稱。

    更多說明,請參見消息通信說明。

重要

MQTT云網關產品和設備下,流轉的數據目的Topic僅支持自定義Topic,且不支持跨產品流轉,即僅支持流轉到當前產品下的自定義Topic。

MQTT型實例下,僅支持創建一個產品,默認不支持跨產品流轉。

數據轉發到其他Topic

writeLindorm(destinationId, timestamp, tags, fields)

流轉數據到時序數據庫(Lindorm)。

  • timestamp:時間戳,表示該數據記錄對應的生成時間。

  • tags:標簽,表示指標項針對的具體對象屬性。一個標簽由一個標簽鍵(Key)和一個標簽值(Value)組成。Map類型數據。

  • fields:數據記錄,一條數據記錄可以有多個字段值,表示指標項的不同對象。支持Object數據類型。

數據轉發到云原生多模數據庫Lindorm

writePolarDB(destinationId, data)

流轉數據到云原生數據庫PolarDB MySQL版。

data:寫入云數據庫表的數據。僅支持Map類型數據,其中鍵(Key)值對應數據庫表列名,值(Value)對應列值。

數據轉發到云原生數據庫PolarDB MySQL版

基本數據類型支持的函數

  • Map類型。

    表達式

    說明

    [Object]

    獲取指定鍵(Key)對應的Value。

    size()

    獲取Map數據中鍵值對的數量。

    containsKey(String)

    判斷Map數據中是否包含指定的鍵。

    keySet()

    獲取Map數據中鍵的集合,返回類型為Array。

    remove(Object)

    移除Map數據中指定鍵對應的鍵值對。

    put(Object, Object)

    在Map數據中添加鍵值對。

    putAll(map)

    在Map數據中批量添加一組Map數據。

  • Array類型。

    函數

    說明

    [int]

    獲取指定索引位置的值。數組首位的索引值為0。

    contains(Object)

    判斷數組中是否包含指定元素。

    remove(Object)

    移除數組中指定的元素。

    removeAt(int)

    移除數組中指定索引位置的元素。

    add(Object)

    在數組末尾中添加元素。

    add(index, Object)

    在對應index索引位置添加元素。

    addAll(array)

    在數組中添加另一個數組。

    size()

    獲取數組中元素個數。

  • String類型。

    函數

    說明

    substring(start, end)

    截取從start位置到end-1位置的字符串。end不傳時,截取到字符串末尾。

    length()

    獲取字符串長度。

    split(String)

    按照分割字符,分割字符串。

    startsWith(String)

    查看字符串是否以指定的字符串開頭。

    endsWith(String)

    查看字符串是否以指定的子字符串結尾。

    indexOf(String, index)

    從指定index索引位置開始,指定字符串在字符串中首次出現的位置。

    index不傳入,默認為0。

其他函數

表達式

說明

endWith(input, suffix)

判斷字符串input中是否以字符串suffix結尾。

返回結果類型為布爾型。

productKey()

返回當前產品的ProductKey值。

getDeviceTag(key)

返回key所對應的設備標簽。如果設備沒有該key對應的標簽,則返回值為空。

getOrNull(data, "items", ......)

返回JSON格式數據data中指定字段的值。

該函數中傳入的字段個數沒有限制,但必須逐級傳入。函數返回最后一個字段的值,若最后一個字段不存在或值為空,則函數返回值為null。

例如data中數據:

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

函數示例如下:

  • getOrNull(data, "items")返回字段items"Humidity": {"value": 25,"time": 1626948134319}

  • getOrNull(data, "items", "Humidity", "value")返回字段value25。

  • getOrNull(data, "items", "Temperature"),字段Temperature不存在,返回值null。

payload(textEncoding)

返回設備發布消息payload的轉義數據。textEncoding表示payload的轉義字符編碼,取值如下:

  • 不傳入參數:默認按照UTF-8編碼轉換為字符串,即payload()等價于payload('utf-8')

  • 'json':將payload數據轉換成Map格式變量。如果payload不是JSON格式,則返回異常。

  • 'binary':將payload數據轉換成二進制變量進行透傳。

parseNumber(numberString, radix)

將字符串numberString按指定的進制radix轉換為數字。

radix為可選參數,取值如下:

  • 10(默認):將字符串轉換為十進制數字。

  • 2:將字符串轉換為二進制數字。

  • 16:將字符串轉換為十六進制數字。

例如:

// 設備上報數據。
var content = '0xFF';
// 獲取待轉換字符串FF.
var x = content.substring(2);
// 將FF轉換為16進制數字。
var value = parseNumber(x, 16);

相關文檔

  • 您可結合支持的腳本語法,調用函數將數據流轉到數據目的地。腳本的使用說明,請參見腳本語法。

  • 您可在配置數據轉發到云產品的解析器腳本中使用以上函數,實現數據處理和轉發。具體操作,請參見配置解析器