本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
轉換資料 (轉換)
轉換是數學表達式,可將資產屬性的資料點從一種形式映射到另一種形式。轉換表達式由資產屬性變數、常值、運算子和函數組成。轉換後的資料點會與輸入資料點保持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
- 如果部分不符合標準,則會增加一個整數。
製造商也會建立等於 Quality_Monitor
的轉換 if(eq(Part_Number, "BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal")
。
此轉換會監控針對特定零件類型產生的不良零件百分比。如果零件編號為 BLT123 且不良零件的百分比超過 10% (0"Caution"
.1),則轉換會傳回 。否則,轉換會傳回 "Normal"
。
注意
-
如果 在其他測量之前
Part_Number
收到新的資料點,Quality_Monitor
轉換會使用新的Part_Number
值和最新的Good_Count
和Bad_Count
值。若要避免錯誤,請在下一次製造執行Bad_Count
之前重設Good_Count
和 。 -
如果您想要只在所有變數都收到新的資料點之後才評估表達式,請使用 指標。
定義轉換 (主控台)
當您在 AWS IoT SiteWise 主控台中定義資產模型的轉換時,您可以指定下列參數:
-
名稱 – 屬性的名稱。
-
單位 – (選用) 屬性的科學單位,例如 mm 或 Celsius。
-
資料類型 – 轉換的資料類型,可以是雙字串。
-
外部 ID – (選用) 這是使用者定義的 ID。如需詳細資訊,請參閱《AWS IoT SiteWise 使用者指南》中的 具有外部 IDs參考物件。
-
公式 – 轉換表達式。轉換表達式無法使用彙總函數或時間函數。若要開啟自動完成功能,請開始輸入或按下向下箭頭鍵。如需詳細資訊,請參閱使用公式表達式。
重要
轉換可以輸入整數、雙數、布林值或字串類型的屬性。布林值轉換為
0
(假) 和1
(真)。轉換必須輸入一或多個非屬性和任意數量屬性屬性的屬性。 會在每次非 屬性的輸入屬性收到新的資料點時 AWS IoT SiteWise 計算新的轉換資料點。新的屬性值不會啟動轉換更新。資產屬性資料 API 操作的相同請求率適用於轉換運算結果。
公式表達式只能輸出雙數或字串值。巢狀運算式可以輸出其他資料類型,例如字串,但整體公式必須評估為數字或字串。您可以使用 jp 函數將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊,請參閱未定義、無限和溢出值。
如需詳細資訊,請參閱建立資產模型 (主控台)。
定義轉換 (AWS CLI)
當您使用 AWS IoT SiteWise API 定義資產模型的轉換時,您可以指定下列參數:
-
name
– 屬性的名稱。 -
unit
– (選用) 屬性的科學單位,例如 mm 或 Celsius。 -
dataType
– 轉換的資料類型,必須是DOUBLE
或STRING
。 -
externalId
– (選用) 這是使用者定義的 ID。如需詳細資訊,請參閱《AWS IoT SiteWise 使用者指南》中的 具有外部 IDs參考物件。 -
expression
– 轉換表達式。轉換表達式無法使用彙總函數或時間函數。如需詳細資訊,請參閱使用公式表達式。 -
variables
– 變數清單,定義要在表達式中使用的資產其他屬性。每個變數結構都包含可在表達式中使用的簡單名稱,以及一個value
結構,用來識別要連結到該變數的屬性。value
結構包含以下資訊:-
propertyId
– 要輸入值之屬性的 ID。您可以使用屬性的名稱而非其 ID。
重要
轉換可以輸入整數、雙數、布林值或字串類型的屬性。布林值轉換為
0
(假) 和1
(真)。轉換必須輸入一或多個非屬性和任意數量屬性屬性的屬性。 會在每次非 屬性的輸入屬性收到新的資料點時 AWS IoT SiteWise 計算新的轉換資料點。新的屬性值不會啟動轉換更新。資產屬性資料 API 操作的相同請求率適用於轉換運算結果。
公式表達式只能輸出雙數或字串值。巢狀運算式可以輸出其他資料類型,例如字串,但整體公式必須評估為數字或字串。您可以使用 jp 函數將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊,請參閱未定義、無限和溢出值。
-
範例 轉換定義
下列範例示範一種轉換屬性,可將資產的溫度衡量值從攝氏轉換為華氏。此物件是包含轉換的 AssetModelProperty 範例。您可以將此物件指定為 CreateAssetModel 請求承載的一部分,以建立轉換屬性。如需詳細資訊,請參閱建立資產模型 (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"
)。否則,它會傳回資訊訊息 ("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" } } ] } } }...
}