本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
轉換資料 (轉換)
轉換是將資產屬性的資料點從一種形式對應到另一種形式的數學運算式。轉換運算式由資產屬性變數、常值、運算子和函數組成。轉換後的資料點與輸入資料點保持 one-to-one 關係。 AWS IoT SiteWise 每當任何輸入性質接收新資料點時,都會計算新的轉換資料點。
注意
對於具有相同時間戳記的屬性更新,輸出值可能會被其他傳入屬性的更新覆寫。
例如,如果您的資產具有名為 Temperature_C
、以攝氏單位為單位的溫度衡量值串流,您可以使用公式 Temperature_F = 9/5 * Temperature_C + 32
將每個資料點轉換為華氏。每次在Temperature_C
測量流中 AWS IoT SiteWise 接收一個資料點,相應的Temperature_F
值都會在幾秒鐘內計算出來,並可作為Temperature_F
屬性使用。
如果您的轉換包含多個變數,較早到達的資料點會立即啟動計算。請考慮部件制造商使用轉換來監控產品質量的實例。根據零件類型使用不同的標準,製造商會使用下列測量來表示流程:
-
Part_Number
‐識別零件類型的字串。 -
Good_Count
‐一個整數,如果零件符合標準,則增加 1。 -
Bad_Count
‐一個整數,如果零件不符合標準,則會增加 1。
製造商還創建了一個轉換Quality_Monitor
,即等於 if(eq(Part_Number, "BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1),
"Caution", "Normal")
。
此轉換會監視針對特定零件類型所產生之損壞零件的百分比。如果零件編號為,BLT123且損壞零件的百分比超過 10% (0.1),則會傳回轉換"Caution"
。否則,轉換就會傳回"Normal"
。
注意
-
如果在其他量測之前
Part_Number
接收到新的資料點,則Quality_Monitor
轉換會使用新Part_Number
值以及最新Bad_Count
值Good_Count
和值。若要避免錯誤,請重設Good_Count
並Bad_Count
在下一次製造執行之前執行。 -
如果您只想在所有變數接收到新資料點之後評估運算式,請使用量度。
定義轉換(控制台)
在 AWS IoT SiteWise 主控台中定義資產模型的轉換時,請指定下列參數:
-
名稱 — 屬性的名稱。
-
單位 — (可選) 性質的科學單位,例如 mm 或攝氏度。
-
資料類型 — 轉換的資料類型,可以是「雙精度」或「字串」。
-
外部 ID — (選用) 這是使用者定義的 ID。如需詳細資訊,請參閱《AWS IoT SiteWise 使用者指南》中的 使用外部參考物件 IDs。
-
公式 — 轉換運算式。轉換表達式不能使用聚合函數或臨時函數。若要開啟 auto 完成功能,請開始輸入或按向下鍵。如需詳細資訊,請參閱使用公式運算式。
重要
轉換可以輸入整數、雙精度、布林值或字串類型的屬性。布爾值轉換為
0
(假)和1
(真)。轉換必須輸入一或多個不屬於屬性的屬性以及任何數量的屬性內容。 AWS IoT SiteWise 每次非屬性的輸入性質接收新資料點時,都會計算新的轉換資料點。新的屬性值不會啟動轉換更新。資產屬性資料API作業的要求率同樣適用於轉換計算結果。
公式運算式只能輸出雙精度值或字串值。巢狀運算式可以輸出其他資料類型 (例如字串),但整體公式必須評估為數字或字串。您可以使用 jp 函數將字串轉換為數字。布林值必須是 1 (真) 或 0 (假)。如需詳細資訊,請參閱未定義、無限和溢出值。
如需詳細資訊,請參閱建立資產模型 (主控台)。
定義轉換 (AWS CLI)
當您使用定義資產模型的轉換時 AWS IoT SiteWise API,您可以指定下列參數:
-
name
— 屬性的名稱。 -
unit
— (選擇性) 性質的科學單位,例如 mm 或攝氏度。 -
dataType
— 轉換的資料類型,必須是DOUBLE
或STRING
。 -
externalId
— (選用) 這是使用者定義的 ID。如需詳細資訊,請參閱《AWS IoT SiteWise 使用者指南》中的 使用外部參考物件 IDs。 -
expression
— 轉換運算式。轉換表達式不能使用聚合函數或臨時函數。如需詳細資訊,請參閱使用公式運算式。 -
variables
— 定義要在運算式中使用之資產的其他屬性的變數清單。每個變數結構都包含可在表達式中使用的簡單名稱,以及一個value
結構,用來識別要連結到該變數的屬性。value
結構包含以下資訊:-
propertyId
— 要從中輸入值的屬性 ID。您可以使用屬性的名稱而非其 ID。
重要
轉換可以輸入整數、雙精度、布林值或字串類型的屬性。布爾值轉換為
0
(假)和1
(真)。轉換必須輸入一或多個不屬於屬性的屬性以及任何數量的屬性內容。 AWS IoT SiteWise 每次非屬性的輸入性質接收新資料點時,都會計算新的轉換資料點。新的屬性值不會啟動轉換更新。資產屬性資料API作業的要求率同樣適用於轉換計算結果。
公式運算式只能輸出雙精度值或字串值。巢狀運算式可以輸出其他資料類型 (例如字串),但整體公式必須評估為數字或字串。您可以使用 jp 函數將字串轉換為數字。布林值必須是 1 (真) 或 0 (假)。如需詳細資訊,請參閱未定義、無限和溢出值。
-
範例 轉換定義
下列範例示範一種轉換屬性,可將資產的溫度衡量值從攝氏轉換為華氏。此物件是包含轉換的範例。AssetModelProperty您可以將此物件指定為CreateAssetModel要求裝載的一部分,以建立 transform 屬性。如需詳細資訊,請參閱建立資產模型 (AWS CLI)。
{
...
"assetModelProperties": [...
{ "name": "Temperature F", "dataType": "DOUBLE", "type": { "transform": { "expression": "9/5 * temp_c + 32", "variables": [ { "name": "temp_c", "value": { "propertyId": "Temperature C" } } ] } }, "unit": "Fahrenheit" } ],...
}
範例 包含三個變數的轉換定義
下列範例會示範如果超過 10% 的BLT123零件不符合標準,會傳回警告訊息 ("Caution"
) 的 transform 屬性。否則,它返回一個信息消息("Normal"
)。
{
...
"assetModelProperties": [...
{ "name": "Quality_Monitor", "dataType": "STRING", "type": { "transform": { "expression": "if(eq(Part_Number,"BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")", "variables": [ { "name": "Part_Number", "value": { "propertyId": "Part Number" } }, { "name": "Good_Count", "value": { "propertyId": "Good Count" } }, { "name": "Bad_Count", "value": { "propertyId": "Bad Count" } } ] } } }...
}