設備時序數據(例如傳感器采集數據、設備監控數據和設備軌跡數據)具有極少更新、數據規模大等特點,需要使用時序模型存儲,并且支持高并發寫入、低成本海量數據存儲以及靈活的查詢分析能力。表格存儲(Tablestore)的時序引擎針對時間序列數據的特點進行設計,提供高壓縮比存儲,可用于設備時序數據的存儲與分析。本文以物模型數據上報Topic為例,介紹使用云產品流轉功能將設備數據轉發到表格存儲(Tablestore)時序模型中的完整流程。
工作原理
云產品流轉將設備的Topic消息轉發到表格存儲實例中的數據表中存儲,使用表格存儲的寬表引擎服務。
在上圖中:
數據源:支持的Topic類型消息,請參見數據格式(非云網關產品和設備)、自定義Topic(MQTT云網關)、消息轉發Topic(GB/T 32960云網關)、消息轉發Topic(JT/T 808云網關)、消息轉發Topic(SL 651云網關)。
數據目的:創建的表格存儲實例中的數據表,用于接收設備數據。
解析器腳本:配置通過數據流轉函數
writeTableStoreTs(destinationId, timeInUs, metricName, tags, fields, dataSource)
將Topic數據轉發到表格存儲的數據表。data
僅支持Map類型數據,其中鍵(Key)值對應數據庫表列名,值(Value)對應列值。函數詳細說明,請參見函數列表。
使用限制
前提條件
已添加待轉發的設備Topic數據源。例如:創建數據源DataSource,添加指定設備的物模型數據上報Topic。具體步驟,請參見添加待流轉的數據源。
已創建表格存儲實例和用于接收數據的數據表。表格存儲使用方法,請參見表格存儲時序模型文檔。
重要企業版實例中,表格存儲實例所在地域必須與企業版實例所在地域一致。
背景信息
表格存儲時序模型:針對時間序列數據的特點進行設計的模型,可應用于物聯網設備監控、設備采集數據、機器監控數據等場景,支持自動構建時序元數據索引、豐富的時序查詢能力等功能。更多信息,請參見時序模型。
將物聯網平臺設備上報數據轉發到表格存儲中的詳細說明,請參見物聯網存儲介紹。
本文示例中,寫入時序表的數據如下:
fields:使用JSONPath方法,獲取設備上報的物模型屬性Temperature和Humidity的值,寫入溫度、濕度的時序數據。
timeInUs:使用函數
timestamp()
獲取設備上報數據的當前時間戳(單位為毫秒)。timeInUs的時間單位為微秒,寫入時間值為timestamp()*1000
。tags:寫入標簽
{"region": "cn-shanghai"}
。metricName:寫入時間線度量名稱
property
。dataSource:使用函數
deviceName()
獲取設備名稱,寫入數據源標識。
創建數據目的
登錄物聯網平臺控制臺。
在實例概覽頁面,找到對應的實例,單擊實例進入實例詳情頁面。
在左側導航欄,選擇 。
在云產品流轉頁面,單擊右上角體驗新版,進入新版功能頁面。
說明如果您已執行過此操作,再次進入云產品流轉頁面,會直接進入新版功能頁面。
單擊數據目的頁簽,然后單擊創建數據目的。
在創建數據目的對話框,輸入數據目的名稱,例如DataPurpose,按照以下參數說明,完成配置,然后單擊確定。
配置并啟動解析器
創建解析器,例如DataParser。具體操作,請參見步驟一:創建解析器。
在解析器詳情頁面,關聯數據源。
在配置向導的數據源下,單擊關聯數據源。
在彈出的對話框中,單擊數據源下拉列表,選擇已創建的數據源DataSource,單擊確定。
在解析器詳情頁面,關聯數據目的。
單擊配置向導的數據目的,然后單擊數據目的列表右上方的關聯數據目的。
在彈出的對話框中,單擊數據目的下拉列表,選擇已創建的數據目的DataPurpose,單擊確定。
在數據目的列表,查看并保存數據目的ID,例如為1000。
后續解析腳本中,需使用此處的數據目的ID。
在解析器詳情頁面,單擊解析器。
在腳本輸入框,輸入解析腳本。
解析腳本類似JavaScript語言,編輯腳本的語法參考JavaScript語法,詳細編輯方法,請參見腳本語法。
函數參數說明,請參見函數列表。
//通過payload函數,獲取設備上報的消息內容,并按照JSON格式轉換。 var data = payload("json"); //獲取上報的屬性值。 var h = data.items.Humidity.value; var t = data.items.Temperature.value; var datasource = deviceName(); var fields = {"temperature":t, "humidity":h}; var tags = {}; tags.put("region", "cn-shanghai"); var metricName = "property"; var timeInUs = timestamp()*1000; // 在writeTableStoreTS方法中,按時間線,將溫濕度值寫入對應的列。 writeTableStoreTs(1000, timeInUs, metricName, tags, fields, datasource);
您也可設置溫度、濕度分別為度量名稱,寫入溫濕度數據,函數表達式如下:
writeTableStoreTs(1000, [ { "timeInUs": timestamp() * 1000, "metricName": "溫度", "tags":tags, "fields":{"temperature": t}, "dataSource": deviceName() }, { "timeInUs": timestamp() * 1000, "metricName": "濕度", "tags":tags, "fields":{"humidity": h}, "dataSource": deviceName() }, ]);
單擊調試,根據頁面提示,選擇產品和設備,輸入Topic和Payload數據,驗證腳本可執行。
參數示例如下:
運行結果如下,表示腳本執行成功。
單擊發布。
回到云產品流轉頁面的解析器頁簽,單擊解析器DataParser對應的啟動按鈕,啟動解析器。
后續操作
數據推送成功后,在表格存儲接收數據的數據表的數據管理頁簽,查看是否成功接收到指定數據,請參見查詢時序數據。
您可通過SQL查詢功能,對表格存儲中數據進行復雜的查詢和高效的分析。具體操作,請參見使用SQL查詢時序數據。
操作樣例
相關文檔
設備接入物聯網平臺上報數據的操作指導,請參見設備接入引導。
您可在實例詳情頁面,查看消息轉發TPS可用資源,確保設備消息能正常轉發到表格存儲中。具體操作,請參見查看實例信息和運行數據。如果可用資源不足,可進行升配。具體內容,請參見升配。
使用表格存儲的注意事項和常見問題,請參見表格存儲的一般性問題。