

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 轉換資料 （轉換）
<a name="transforms"></a>

*轉換*是數學表達式，會將資產屬性的資料點從一種形式對應到另一種形式。轉換表達式由資產屬性變數、常值、運算子和函數組成。轉換後的資料點會與輸入資料點保持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`值和最新的 `Good_Count`和 `Bad_Count`值。若要避免錯誤，請在下一次製造執行`Bad_Count`之前重設 `Good_Count`和 。
如果您只想在所有變數接收到新的資料點之後評估表達式，請使用 [指標](metrics.md)。

**Topics**
+ [定義轉換 （主控台）](#define-transforms-console)
+ [定義轉換 (AWS CLI)](#define-transform-cli)

## 定義轉換 （主控台）
<a name="define-transforms-console"></a>

當您在 AWS IoT SiteWise 主控台中定義資產模型的轉換時，您可以指定下列參數：
+ <a name="asset-property-name-console"></a>**名稱** – 屬性的名稱。
+ <a name="asset-property-unit-console"></a>**單位** – （選用） 屬性的科學單位，例如 mm 或 Celsius。
+ **資料類型** – 轉換的資料類型，可以是 **Double** 或 **String**。
+ **外部 ID** – （選用） 這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。
+ **公式** – 轉換表達式。轉換表達式無法使用彙總函數或暫時函數。若要開啟自動完成功能，請開始輸入或按向下箭頭鍵。如需詳細資訊，請參閱[使用公式表達式](formula-expressions.md)。
**重要**  <a name="transform-input-rules"></a>
轉換可以輸入整數、雙數、布林值或字串類型的屬性。布林值轉換為 `0`(false) 和 `1`(true)。  
轉換必須輸入一或多個非屬性和任意數量屬性屬性的屬性。每次非 屬性的輸入屬性收到新的資料點時， 都會 AWS IoT SiteWise 計算新的轉換資料點。新的屬性值不會啟動轉換更新。資產屬性資料 API 操作的相同請求率適用於轉換運算結果。  
<a name="formula-output-rules"></a>公式表達式只能輸出雙值或字串值。巢狀運算式可以輸出其他資料類型，例如字串，但整體公式必須評估為數字或字串。您可以使用 [jp 函數](expression-string-functions.md#jp-definition)將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊，請參閱[未定義、無限和溢出值](expression-tutorials.md#undefined-values)。

如需詳細資訊，請參閱[建立資產模型 （主控台）](create-asset-models.md#create-asset-model-console)。

## 定義轉換 (AWS CLI)
<a name="define-transform-cli"></a>

當您使用 AWS IoT SiteWise API 定義資產模型的轉換時，您可以指定下列參數：
+ <a name="asset-property-name-cli"></a>`name` – 屬性的名稱。
+ <a name="asset-property-unit-cli"></a>`unit` – （選用） 屬性的科學單位，例如 mm 或 Celsius。
+ `dataType` – 轉換的資料類型，必須是 `DOUBLE`或 `STRING`。
+ `externalId` – （選用） 這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。
+ `expression` – 轉換表達式。轉換表達式無法使用彙總函數或暫時函數。如需詳細資訊，請參閱[使用公式表達式](formula-expressions.md)。
+ `variables` – 變數清單，定義要在表達式中使用的資產其他屬性。每個變數結構都包含可在表達式中使用的簡單名稱，以及一個 `value` 結構，用來識別要連結到該變數的屬性。`value` 結構包含以下資訊：
  + `propertyId` – 要輸入值之屬性的 ID。您可以使用屬性的名稱而非其 ID。
**重要**  <a name="transform-input-rules"></a>
轉換可以輸入整數、雙數、布林值或字串類型的屬性。布林值轉換為 `0`(false) 和 `1`(true)。  
轉換必須輸入一或多個非屬性的屬性，以及任意數量的屬性屬性。每次非 屬性的輸入屬性收到新的資料點時， 都會 AWS IoT SiteWise 計算新的轉換資料點。新的屬性值不會啟動轉換更新。資產屬性資料 API 操作的相同請求率適用於轉換運算結果。  
<a name="formula-output-rules"></a>公式表達式只能輸出雙值或字串值。巢狀運算式可以輸出其他資料類型，例如字串，但整體公式必須評估為數字或字串。您可以使用 [jp 函數](expression-string-functions.md#jp-definition)將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊，請參閱[未定義、無限和溢出值](expression-tutorials.md#undefined-values)。

**Example 轉換定義**  
下列範例示範一種轉換屬性，可將資產的溫度衡量值從攝氏轉換為華氏。此物件是包含[轉換](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Transform.html)的 [AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html) 範例。您可以將此物件指定為 [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) 請求承載的一部分，以建立轉換屬性。如需詳細資訊，請參閱[建立資產模型 (AWS CLI)](create-asset-models.md#create-asset-model-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"
}
],
{{...}}
}
```

**Example 包含三個變數的轉換定義**  
下列範例示範轉換屬性，如果超過 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"
                }
            }
        ]
    }
}
}
{{...}}
}
```