

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

# 定義資料屬性
<a name="asset-properties"></a>

*資產屬性*是每個資產中包含資產資料的結構。資產屬性可以是下列任一類型：
+ **屬性** – 資產的一般靜態屬性，例如裝置製造商或地理區域。如需詳細資訊，請參閱[定義靜態資料 （屬性）](attributes.md)。
+ **測量** – 資產的原始裝置感應器資料串流，例如時間戳記輪換速度值或時間戳記溫度值，以攝氏為單位。衡量值由資料串流別名定義。如需詳細資訊，請參閱[從設備定義資料串流 （度量）](measurements.md)。
+ **轉換** – 資產的轉換時間序列值，例如 Fahrenheit 中的時間戳記溫度值。轉換由表達式和變數定義，以使用該表達式。如需詳細資訊，請參閱[轉換資料 （轉換）](transforms.md)。
+ **指標** – 在指定時間間隔內彙總的資產資料，例如每小時平均溫度。指標由時間間隔、表達式以及與該表示式搭配使用的變數所定義。指標表達式可以輸入相關聯資產的指標屬性，讓您可以計算代表操作或操作子集的指標。如需詳細資訊，請參閱[從屬性和其他資產彙總資料 （指標）](metrics.md)。

如需詳細資訊，請參閱[在 中建立資產模型 AWS IoT SiteWise](create-asset-models.md)。

如需如何使用衡量值、轉換和指標來計算「整體設備效率」(OEE) 的範例，請參閱 [在 中計算 OEE AWS IoT SiteWise](calculate-oee.md)。

**Topics**
+ [定義靜態資料 （屬性）](attributes.md)
+ [從設備定義資料串流 （度量）](measurements.md)
+ [轉換資料 （轉換）](transforms.md)
+ [從屬性和其他資產彙總資料 （指標）](metrics.md)
+ [使用公式表達式](formula-expressions.md)

# 定義靜態資料 （屬性）
<a name="attributes"></a>

*資產屬性*代表通常為靜態的資訊，例如裝置製造商或地理位置。您從資產模型建立的每個資產，皆會包含該模型的屬性。

**Topics**
+ [定義屬性 （主控台）](#define-attributes-console)
+ [定義屬性 (AWS CLI)](#define-attributes-cli)

## 定義屬性 （主控台）
<a name="define-attributes-console"></a>

當您在 AWS IoT SiteWise 主控台中定義資產模型的屬性時，您可以指定下列參數：
+ <a name="asset-property-name-console"></a>**名稱** – 屬性的名稱。
+ **預設值** – （選用） 此屬性的預設值。從模型建立的資產具有 屬性的此值。對於從模型建立的資產，如需如何覆寫預設值的詳細資訊，請參閱 [更新屬性值](update-attribute-values.md)。
+ <a name="asset-property-data-type-console"></a>**資料類型** – 屬性的資料類型，其為下列其中一項：
  + **字串** – 最多 1024 個位元組的字串。
  + **整數** – 範圍為 【-2，147，483，648，2，147，483，647】 的帶正負號 32 位元整數。
  + **Double** – 範圍為 【-10^100、10^100】 和 IEEE 754 雙精度的浮點數。
  + **布林值** – `true`或 `false`。
+ **外部 ID** – （選用） 這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。

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

## 定義屬性 (AWS CLI)
<a name="define-attributes-cli"></a>

當您使用 AWS IoT SiteWise API 定義資產模型的屬性時，您可以指定下列參數：
+ <a name="asset-property-name-cli"></a>`name` – 屬性的名稱。
+ `defaultValue` – （選用） 此屬性的預設值。從模型建立的資產具有 屬性的此值。對於從模型建立的資產，如需如何覆寫預設值的詳細資訊，請參閱 [更新屬性值](update-attribute-values.md)。
+ <a name="asset-property-data-type-cli"></a>`dataType` – 屬性的資料類型，其為下列其中一項：
  + `STRING` – 最多 1024 個位元組的字串。
  + `INTEGER` – 範圍為 【-2，147，483，648， 2，147，483，647】 的帶正負號 32 位元整數。
  + `DOUBLE` – 範圍為 【-10^100、10^100】 和 IEEE 754 雙精度的浮點數。
  + `BOOLEAN` – `true`或 `false`。
+ `externalId` – （選用） 這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。

**Example 範例屬性定義**  
下列範例示範會將資產的模型編號以預設值呈現的屬性。此物件是包含 [屬性](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Attribute.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": "Model number",
  "dataType": "STRING",
  "type": {
    "attribute": {
      "defaultValue": "BLT123"
    }
  }
}
],
...
}
```

# 從設備定義資料串流 （度量）
<a name="measurements"></a>

*測量*代表裝置的原始感應器資料串流，例如時間戳記溫度值或每分鐘時間戳記輪換 (RPM) 值。

**Topics**
+ [定義測量 （主控台）](#define-measurements-console)
+ [定義測量 (AWS CLI)](#define-measurements-cli)

## 定義測量 （主控台）
<a name="define-measurements-console"></a>

當您在 AWS IoT SiteWise 主控台中定義資產模型的測量時，您可以指定下列參數：
+ <a name="asset-property-name-console"></a>**名稱** – 屬性的名稱。
+ <a name="asset-property-unit-console"></a>**單位** – （選用） 屬性的科學單位，例如 mm 或 Celsius。
+ <a name="asset-property-data-type-console"></a>**資料類型** – 屬性的資料類型，其為下列其中一項：
  + **字串** – 最多 1024 個位元組的字串。
  + **整數** – 範圍為 【-2，147，483，648，2，147，483，647】 的帶正負號 32 位元整數。
  + **Double** – 範圍為 【-10^100、10^100】 和 IEEE 754 雙精度的浮點數。
  + **布林值** – `true`或 `false`。
+ **外部 ID** – （選用） 這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。

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

## 定義測量 (AWS CLI)
<a name="define-measurements-cli"></a>

當您使用 AWS IoT SiteWise API 定義資產模型的測量時，您可以指定下列參數：
+ <a name="asset-property-name-cli"></a>`name` – 屬性的名稱。
+ <a name="asset-property-data-type-cli"></a>`dataType` – 屬性的資料類型，其為下列其中一項：
  + `STRING` – 最多 1024 個位元組的字串。
  + `INTEGER` – 範圍為 【-2，147，483，648， 2，147，483，647】 的帶正負號 32 位元整數。
  + `DOUBLE` – 範圍為 【-10^100、10^100】 和 IEEE 754 雙精度的浮點數。
  + `BOOLEAN` – `true`或 `false`。
+ <a name="asset-property-unit-cli"></a>`unit` – （選用） 屬性的科學單位，例如 mm 或 Celsius。
+ `externalId` – （選用） 這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。

**Example 範例衡量值定義**  
下列範例示範代表資產溫度感測器讀數的衡量值。此物件是包含[測量](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.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)。  
當您定義資產模型時，[測量](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Measurement.html)結構是空的結構，因為您稍後將每個資產設定為使用唯一的裝置資料串流。如需如何將資產的測量屬性連接至裝置感應器資料串流的詳細資訊，請參閱 [管理 的資料串流 AWS IoT SiteWise](manage-data-streams.md)。  

```
{
      ...
      "assetModelProperties": [
      {
          "name": "Temperature C",
          "dataType": "DOUBLE",
          "type": {
              "measurement": {}
          },
          "unit": "Celsius"
      }
  ],
      ...
}
```

# 轉換資料 （轉換）
<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"
                }
            }
        ]
    }
}
}
...
}
```

# 從屬性和其他資產彙總資料 （指標）
<a name="metrics"></a>

指標是數學表達式，使用彙總函數來處理所有輸入資料點，並在每個指定的時間間隔輸出單一資料點。例如，指標可以從溫度資料串流計算每小時平均溫度。

指標可以從關聯資產的指標輸入資料，因此您可以計算統計資料，以提供您的操作或操作子集的深入解析。例如，指標可以計算風力發電場中所有風力發電機的平均每小時溫度。如需如何定義資產之間關聯的詳細資訊，請參閱 [定義資產模型階層](define-asset-hierarchies.md)。

指標也可以從其他屬性輸入資料，而無需在每個時間間隔內彙總資料。如果您在公式中指定[屬性](attributes.md)， AWS IoT SiteWise 會在計算公式時使用該屬性[的最新](expression-temporal-functions.md#latest-definition)值。如果您在公式中指定指標， 會針對計算公式的時間間隔 AWS IoT SiteWise 使用[最後一個](expression-temporal-functions.md#last-definition)值。這表示您可以定義 等指標`OEE = Availability * Quality * Performance`，其中 `Availability`、 `Quality`和 `Performance`是相同資產模型上的所有其他指標。

AWS IoT SiteWise 也會自動運算所有資產屬性的一組基本彙總指標。若要降低運算成本，您可以使用這些彙總，而不要為基本運算定義自訂指標。如需詳細資訊，請參閱[在 中查詢資產屬性彙總 AWS IoT SiteWise](aggregates.md)。

**Topics**
+ [定義指標 （主控台）](#define-metrics-console)
+ [定義指標 (AWS CLI)](#define-metrics-cli)

## 定義指標 （主控台）
<a name="define-metrics-console"></a>

當您在 AWS IoT SiteWise 主控台中定義資產模型的指標時，您可以指定下列參數：
+ <a name="asset-property-name-console"></a>**名稱** – 屬性的名稱。
+ **資料類型** – 轉換的資料類型，可以是 **Double** 或 **String**。
+ **外部 ID** – （選用） 這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。
+ **公式** – 指標表達式。指標表達[式可以使用彙總函數](expression-aggregation-functions.md)，從屬性輸入階層中所有相關聯資產的資料。開始輸入或按向下鍵開啟自動完成功能。如需詳細資訊，請參閱[使用公式表達式](formula-expressions.md)。
**重要**  <a name="metric-input-rules"></a>
指標只能是整數、雙數、布林值或字串類型的屬性。布林值轉換為 `0`(false) 和 `1`(true)。  
如果您在指標表達式中定義任何指標輸入變數，則這些輸入必須和輸出指標有相同的時間間隔。  
<a name="formula-output-rules"></a>公式表達式只能輸出雙值或字串值。巢狀運算式可以輸出其他資料類型，例如字串，但整體公式必須評估為數字或字串。您可以使用 [jp 函數](expression-string-functions.md#jp-definition)將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊，請參閱[未定義、無限和溢出值](expression-tutorials.md#undefined-values)。
+ **時間間隔** – 指標時間間隔。 <a name="metric-window-info"></a>AWS IoT SiteWise 支援下列輪轉時段時間間隔，其中每個間隔會在前一個時間間隔結束時開始：
  + **1 分鐘** – <a name="metric-window-1m"></a>1 分鐘，在每分鐘結束時 （上午 12：00：00、上午 12：01：00、上午 12：02：00 等） 計算。
  + **5 分鐘** – <a name="metric-window-5m"></a>5 分鐘，從小時開始每 5 分鐘計算一次 （上午 12：00：00、上午 12：05：00、上午 12：10：00 等）。
  + **15 分鐘** – <a name="metric-window-15m"></a>15 分鐘，從小時開始每 15 分鐘的結尾開始計算 （上午 12：00：00、上午 12：15：00、上午 12：30：00 等）。
  + **1 小時** – <a name="metric-window-1h"></a>1 小時 (60 分鐘），每小時結束時以 UTC 計算 （上午 12：00：00、上午 01：00：00、上午 02：00：00 等）。
  + **1 天** – <a name="metric-window-1d"></a>1 天 (24 小時），在每天結束時以 UTC 計算 （星期一上午 12：00：00、星期二上午 12：00：00 等）。
  + **1 週** – <a name="metric-window-1w"></a>1 週 (7 天），在 UTC 的每個星期日結束時計算 （星期一上午 12：00：00)。
  + **自訂間隔** – 您可以輸入一分鐘到一週之間的任何時間間隔。
+ **位移日期** – （選用） 要彙總資料的參考日期。
+ **位移時間** – （選用） 要彙總資料的參考時間。偏移時間必須介於 00：00：00 和 23：59：59 之間。
+ **位移時區** – （選用） 位移的時區。如果未指定，則預設位移時區為國際標準時間 (UTC)。請參閱下列支援的時區。

### 支援的時區
<a name="supported-time-zones"></a>
+ (UTC\$100：00) 國際標準時間
+ (UTC\$101：00) 歐洲中部時間
+ (UTC\$102：00) 東歐
+ (UTC03\$1：00) 東非時間
+ (UTC\$104：00) 接近東部時間
+ (UTC\$105：00) 巴基斯坦拉合爾時間
+ (UTC\$105：30) 印度標準時間
+ (UTC\$106：00) 孟加拉標準時間
+ (UTC\$107：00) 越南標準時間
+ (UTC\$108：00) 中國台北時間
+ (UTC\$109：00) 日本標準時間
+ (UTC\$109：30) 澳洲中部時間
+ (UTC\$110：00) 澳洲東部時間
+ (UTC\$111：00) 索羅門標準時間
+ (UTC\$112：00) 紐西蘭標準時間
+ (UTC-11：00) 中途群島時間
+ (UTC-10：00) 夏威夷標準時間
+ (UTC-09：00) 阿拉斯加標準時間
+ (UTC-08：00) 太平洋標準時間
+ (UTC-07：00) 鳳凰城標準時間
+ (UTC-06：00) 中部標準時間
+ (UTC-05：00) 東部標準時間
+ (UTC-04：00) 波多黎各和美屬維京群島時間
+ (UTC-03：00) 阿根廷標準時間
+ (UTC-02：00) 南喬治亞時間
+ (UTC-01：00) 中非時間

**Example 具有位移的自訂時間間隔 （主控台）**  
下列範例說明如何在 2021 年 2 月 20 日下午 6：30：30 (PST) 以偏移量定義 12 小時的時間間隔。  

**定義具有位移的自訂間隔**

1. 針對**時間間隔**，選擇**自訂間隔**。

1. 針對**時間間隔**，執行下列其中一項操作：
   + 輸入 **12**，然後選擇**小時**。
   + 輸入 **720**，然後選擇**分鐘**。
   + 輸入 **43200**，然後選擇**秒**。
**重要**  
無論單位為何，**時間間隔**都必須是整數。

1. 針對**位移日期**，選擇 **2021/02/20**。

1. 針對**位移時間**，輸入 **18:30:30**。

1. 針對**位移時區**，選擇 **(UTC-08：00) 太平洋標準時間**。
如果您在 2021 年 7 月 1 日下午 06：30：30 (PST) 之前或當天建立指標，您會在 2021 年 7 月 1 日下午 06：30：30 (PST) 取得第一個彙總結果。第二個彙總結果是 2021 年 7 月 2 日上午 06：30：30 (PST)，以此類推。

## 定義指標 (AWS CLI)
<a name="define-metrics-cli"></a>

當您使用 AWS IoT SiteWise API 定義資產模型的指標時，您可以指定下列參數：
+ <a name="asset-property-name-cli"></a>`name` – 屬性的名稱。
+ `dataType` – 指標的資料類型，可以是 `DOUBLE`或 `STRING`。
+ `externalId` – （選用） 這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。
+ `expression` – 指標表達式。指標表達[式可以使用彙總函數](expression-aggregation-functions.md)，從屬性輸入階層中所有相關聯資產的資料。如需詳細資訊，請參閱[使用公式表達式](formula-expressions.md)。
+ `window` – 指標輪轉時段的時間間隔和位移，其中每個間隔會在前一個間隔結束時開始：
  + `interval` – 輪轉時段的時間間隔。時間間隔必須介於一分鐘和一週之間。
  + `offsets` – 輪轉時段的位移。

  如需詳細資訊，請參閱 *AWS IoT SiteWise API 參考*中的 [TumblingWindow](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TumblingWindow.html)。  
**Example 具有位移的自訂時間間隔 (AWS CLI)**  

  下列範例說明如何在 2021 年 2 月 20 日下午 6：30：30 (PST) 定義偏移量的 12 小時時間間隔。

  ```
  {
      "window": {
          "tumbling": {
              "interval": "12h",
              "offset": " 2021-07-23T18:30:30-08"
          }
      }
  }
  ```

  如果您在 2021 年 7 月 1 日下午 06：30：30 (PST) 之前或當天建立指標，您會在 2021 年 7 月 1 日下午 06：30：30 (PST) 取得第一個彙總結果。第二個彙總結果是 2021 年 7 月 2 日上午 06：30：30 (PST)，以此類推。
+ `variables` – 變數清單，定義要在表達式中使用的資產或子資產的其他屬性。每個變數結構都包含可在表達式中使用的簡單名稱，以及一個 `value` 結構，用來識別要連結到該變數的屬性。`value` 結構包含以下資訊：
  + `propertyId` – 要從中提取值的屬性 ID。如果屬性已在目前的模型中定義 (而非在階層中的模型內定義)，您可以使用屬性的名稱而非其 ID。
  + `hierarchyId` – （選用） 從中查詢屬性子資產的階層 ID。您可以使用階層定義的名稱，而非其 ID。如果您省略此值， 會在目前模型中 AWS IoT SiteWise 尋找 屬性。
**重要**  <a name="metric-input-rules"></a>
指標只能是整數、雙數、布林值或字串類型的屬性。布林值轉換為 `0`(false) 和 `1`(true)。  
如果您在指標表達式中定義任何指標輸入變數，則這些輸入必須和輸出指標有相同的時間間隔。  
<a name="formula-output-rules"></a>公式表達式只能輸出雙值或字串值。巢狀運算式可以輸出其他資料類型，例如字串，但整體公式必須評估為數字或字串。您可以使用 [jp 函數](expression-string-functions.md#jp-definition)將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊，請參閱[未定義、無限和溢出值](expression-tutorials.md#undefined-values)。
+ <a name="asset-property-unit-cli"></a>`unit` – （選用） 屬性的科學單位，例如 mm 或 Celsius。

**Example 指標定義範例**  
下列範例示範彙總資產溫度衡量值的指標屬性，以計算每小時華氏溫度上限。此物件是包含[指標](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.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": "Max temperature",
        "dataType": "DOUBLE",
        "type": {
          "metric": {
            "expression": "max(temp_f)",
            "variables": [
              {
                "name": "temp_f",
                "value": {
                  "propertyId": "Temperature F"
                }
              }
            ],
            "window": {
              "tumbling": {
                "interval": "1h"
              }
            }
          }
        },
        "unit": "Fahrenheit"
      }
    ],
    ...
}
```

**Example 從相關聯資產輸入資料的範例指標定義**  
下列範例示範的指標屬性會彙總多個風力發電機的平均功率資料，以計算風力發電廠的總平均功率。此物件是包含[指標](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.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) 請求承載的一部分，以建立指標屬性。  

```
{
      ...
      "assetModelProperties": [
      ...
      {
          "name": "Total Average Power",
          "dataType": "DOUBLE",
          "type": {
            "metric": {
              "expression": "avg(power)",
              "variables": [
                {
                  "name": "power",
                  "value": {
                    "propertyId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
                    "hierarchyId": "Turbine Asset Model"
                  }
                }
              ],
              "window": {
                "tumbling": {
                  "interval": "5m"
                }
              }
            }
        },
        "unit": "kWh"
      }
    ],
    ...
}
```

# 使用公式表達式
<a name="formula-expressions"></a>

使用公式表達式，您可以定義數學函數來轉換和彙整您的原始產業資料，以取得您操作的詳情。公式表達式結合常值、運算子、函數和變數來處理資料。如需如何定義使用公式表達式之資產屬性的詳細資訊，請參閱 [轉換資料 （轉換）](transforms.md)和 [從屬性和其他資產彙總資料 （指標）](metrics.md)。轉換和指標是公式屬性。

**Topics**
+ [在公式表達式中使用變數](expression-variables.md)
+ [在公式表達式中使用常值](expression-literals.md)
+ [在公式表達式中使用運算子](expression-operators.md)
+ [在公式表達式中使用常數](expression-constants.md)
+ [在公式表達式中使用函數](expression-functions.md)
+ [公式表達式教學課程](expression-tutorials.md)

# 在公式表達式中使用變數
<a name="expression-variables"></a>

變數代表公式表達式中的 AWS IoT SiteWise 資產屬性。使用變數來輸入表達式中其他資產屬性的值，以便處理來自常數屬性 ([屬性](attributes.md))、原始資料串流 ([度量](measurements.md)) 和其他公式屬性的資料。

變數可以代表來自相同資產模型或相關聯子資產模型的資產屬性。只有指標公式可以從子資產模型輸入變數。

您可以透過主控台和 API 中的不同名稱來識別變數。
+ **AWS IoT SiteWise 主控台** – 在表達式中使用資產屬性名稱做為變數。
+ **AWS IoT SiteWise API (AWS CLI， AWS SDKs)** – 使用 [ExpressionVariable](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExpressionVariable.html) 結構定義變數，這需要變數名稱和資產屬性的參考。變數名稱可以包含小寫字母、數字和底線。然後，使用變數名稱來參考表達式中的資產屬性。

變數名稱區分大小寫。

如需詳細資訊，請參閱[定義轉換](transforms.md)和[定義指標](metrics.md)。

## 使用變數來參考屬性
<a name="variable-values"></a>

變數*的值*會定義其參考的屬性。 AWS IoT SiteWise 提供不同的方法來執行此操作。
+ **依屬性 ID：**您可以指定屬性的唯一 ID (UUID) 來識別它。
+ **依名稱：**如果 屬性位於相同的資產模型上，您可以在屬性 ID 欄位中指定其名稱。
+ **依路徑：**變數值可以依其*路徑參考屬性。*如需詳細資訊，請參閱[使用路徑來參考自訂複合模型屬性](custom-composite-models.md#property-paths)。

**注意**  
 AWS IoT SiteWise 主控台不支援變數。 AWS IoT SiteWise API 會使用它們，包括 AWS Command Line Interface AWS CLI) 和 AWS SDKs。

 您在 的回應中收到的變數 AWS IoT SiteWise 包含該值的完整資訊，包括 ID 和路徑。

 不過，當您將變數傳遞至 AWS IoT SiteWise （例如，在「建立」或「更新」呼叫中） 時，您只需要指定其中一個。例如，如果您指定路徑，則不需要提供 ID。

# 在公式表達式中使用常值
<a name="expression-literals"></a>

AWS IoT SiteWise 支援在表達式和公式中使用常值。文字是代表特定資料類型的固定值。在 中 AWS IoT SiteWise，您可以在公式表達式中定義數字和字串常值。文字可用於各種內容，包括資料轉換、警示條件和視覺化計算。


+ <a name="number-literal-definition"></a>**數字**

  使用數字和科學記號來定義整數和雙數。您可以使用 [E 表示法](https://en.wikipedia.org/wiki/Scientific_notation#E_notation)來表達具有科學表示法的數字。

  範例：`1`、`2.0`、`.9`、`-23.1`、`7.89e3`、 `3.4E-5`
+ <a name="string-literal-definition"></a>**字串**

  使用 `'`（引號） 和 `"`（雙引號） 字元來定義字串。開始和結束的引號類型必須相符。若要逸出與您用來宣告字串的引號相符的引號，請包含該引號字元兩次。這是 AWS IoT SiteWise 字串中唯一的逸出字元。

  範例：`'active'`、`"inactive"`、`'{"temp": 52}'`、`"{""temp"": ""high""}"`

# 在公式表達式中使用運算子
<a name="expression-operators"></a>

您可以在公式表達式中使用下列常見運算子。


| 運算子 | Description | 
| --- | --- | 
|  `+`  |  如果兩個運算元都是數字，則此運算子會新增左側和右側運算元。 如果其中一個運算元是字串，此運算子會將左側和右側運算元串連為字串。例如，表達式會`1 + 2 + " is three"`評估為 `"3 is three"`。串連字串最多可有 1024 個字元。如果字串超過 1024 個字元，則 AWS IoT SiteWise 不會輸出該運算的資料點。  | 
|  `-`  |  從左運算元中減去右運算元。 <a name="operator-numbers-only"></a>您只能將此運算子與數值運算元搭配使用。  | 
|  `/`  |  將左運算元除以右運算元。 <a name="operator-numbers-only"></a>您只能將此運算子與數值運算元搭配使用。  | 
|  `*`  |  將左側和右側的運算元相乘。 <a name="operator-numbers-only"></a>您只能將此運算子與數值運算元搭配使用。  | 
|  `^`  |  將左側的運算元乘上右側運算元的次方數 (指數)。 <a name="operator-numbers-only"></a>您只能將此運算子與數值運算元搭配使用。  | 
|  `%`  |  傳回左運算元除以右運算元的餘數。結果與左側運算元具有相同的符號。此行為與模數操作不同。 <a name="operator-numbers-only"></a>您只能將此運算子與數值運算元搭配使用。  | 
|  `x < y`  |  `1` 如果 小於 `x`，則傳回 `y`，否則傳回 `0`。  | 
|  `x > y`  |  `1` 如果 `x` 大於 ，則傳回 `y`，否則傳回 `0`。  | 
|  `x <= y`  |  `1` 如果 小於或等於 `x`，則傳回 `y`，否則傳回 `0`。  | 
|  `x >= y`  |  `1` 如果 `x`大於或等於 ，則傳回 `y`，否則傳回 `0`。  | 
|  `x == y`  |  `1` 如果 `x` 等於 ，則傳回 `y`，否則傳回 `0`。  | 
|  `x != y`  |  `1` 如果 `x` 不等於 ，則傳回 `y`，否則傳回 `0`。  | 
|  `!x`  |  `1` 如果評估`x`為 `0`(false)，則傳回 ，否則傳回 `0`。 `x` 評估為 false，如果： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x and y`  |  `0` 如果評估`x`為 `0`(false)，則傳回 。否則， 會傳回 的評估結果`y`。 `x` 或 `y` 評估為 false，如果： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `x or y`  |  `1` 如果評估`x`為 `1`(true)，則傳回 。否則， 會傳回 的評估結果`y`。 `x` 或 `y` 評估為 false，如果： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-operators.html)  | 
|  `not x`  |  `1` 如果評估`x`為 `0`(false)，則傳回 ，否則傳回 `0`。 `x` 評估為 false，如果： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-operators.html)  | 
|   `[]` `s[index]`  |  傳回字串 索引`index`的字元`s`。這相當於 Python 中的索引語法。 

**Example 範例**  
+ `"Hello!"[1]` 傳回：`e`
+ `"Hello!"[-2]` 傳回：`o`  | 
|   `[]` `s[start:end:step]`  |  傳回字串 的配量`s`。這相當於 Python 中的配量語法。此運算子具有下列引數： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-operators.html) 您可以省略引`step`數以使用其預設值。例如，`s[1:4:1]` 等同於 `s[1:4]`。 引數必須是整數或[無](expression-constants.md#none-definition)常數。如果您指定 `none`， AWS IoT SiteWise 會使用該引數的預設值。 

**Example 範例**  
+ `"Hello!"[1:4]` 傳回：`"ell"`
+ `"Hello!"[:2]` 傳回：`"He"`
+ `"Hello!"[3:]` 傳回：`"lo!"`
+ `"Hello!"[:-4]` 傳回：`"He"`
+ `"Hello!"[::2]` 傳回：`"Hlo"`
+ `"Hello!"[::-1]` 傳回：`"!olleH"`  | 

# 在公式表達式中使用常數
<a name="expression-constants"></a>

在 中 AWS IoT SiteWise，您可以在表達式和公式中使用常數來表示固定值或預先定義的參數。常數可用於各種內容，例如資料轉換、警示條件或視覺化計算。透過使用常數，您可以簡化表達式，使它們更易於讀取和維護。

您可以在您的表達式中使用下列常見的數學常數。所有常數不區分大小寫。

**注意**  
如果您使用與常數相同的名稱定義變數，則變數會覆寫常數。


| 常數 | Description | 
| --- | --- | 
|  `pi`  |  數字 pi (`π`)： `3.141592653589793`  | 
|  `e`  |  數字 e： `2.718281828459045`  | 
|  `true`  |  相當於數字 1。在 中 AWS IoT SiteWise，布林值會轉換為其數量對等項目。  | 
|  `false`  |  相當於數字 0。在 中 AWS IoT SiteWise，布林值會轉換為其數量對等項目。  | 
|   `none`  |  等同於無值。您可以使用此常數來輸出條件[表達式](expression-conditional-functions.md)的結果。  | 

# 在公式表達式中使用函數
<a name="expression-functions"></a>

您可以使用下列函數來操作公式表達式中的資料。

轉換和指標支援不同的 函數。下表指出哪些類型的函數與每種類型的公式屬性相容。

**注意**  
您可以在公式表達式中包含最多 10 個函數。


| 函數類型 | 轉換 | 指標 | 
| --- | --- | --- | 
|  [在公式表達式中使用常見函數](expression-common-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  | 
|  [在公式表達式中使用比較函數](expression-comparison-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  | 
|  [在公式表達式中使用條件式函數](expression-conditional-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  | 
|  [在公式表達式中使用字串函數](expression-string-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  | 
|  [在公式表達式中使用彙總函數](expression-aggregation-functions.md)  |  <a name="polaris-no-para"></a>![\[A red circle with the letter x for no.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-no.png) 否  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  | 
|  [在公式表達式中使用暫時函數](expression-temporal-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  | 
|  [在公式表達式中使用日期和時間函數](expression-date-and-time-functions.md)  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  |  <a name="polaris-yes-para"></a>![\[A green circle with a checkmark for yes.\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/icon-yes.png) 是  | 

## 函數語法
<a name="expression-function-syntax"></a>

您可以使用下列語法來建立函數：

一般語法  
使用一般語法時，函數名稱後面接著具有零或多個引數的括號。  
`function_name(argument1, argument2, argument3, ...)`。 例如，具有一般語法的函數可能看起來像 `log(x)`和 `contains(s, substring)`。

統一函數呼叫語法 (UFCS)  
UFCS 可讓您在物件導向程式設計中使用 方法呼叫的語法來呼叫函數。使用 UFCS，第一個引數後面接著點 (`.`)，然後是函數名稱和括號內剩餘的引數 （如果有的話）。  
`argument1.function_name(argument2, argument3, ...)`。 例如，搭配 UFCS 的函數可能看起來像 `x.log()`和 `s.contains(substring)`。  
您也可以使用 UFCS 鏈結後續函數。 AWS IoT SiteWise 會使用目前函數的評估結果做為下一個函數的第一個引數。  
例如，您可以使用 `message.jp('$.status').lower().contains('fail')`而非 `contains(lower(jp(message, '$.status')),'fail')`。  
如需詳細資訊，請造訪 [D 程式設計語言](https://tour.dlang.org/tour/en/gems/uniform-function-call-syntax-ufcs)網站。

**注意**  
您可以對所有 AWS IoT SiteWise 函數使用 UFCS。  
AWS IoT SiteWise 函數不區分大小寫。例如，您可以`Lower(s)`交替使用 `lower(s)`和 。

# 在公式表達式中使用常見函數
<a name="expression-common-functions"></a>

在[轉換](transforms.md)和[指標](metrics.md)中，您可以使用下列函數來計算轉換和指標中的常見數學函數。


| 函式 | Description | 
| --- | --- | 
|  `abs(x)`  |  傳回 `x` 的絕對值。  | 
|  `acos(x)`  |  傳回 `x` 的反餘弦。  | 
|  `asin(x)`  |  傳回 `x` 的反正弦。  | 
|  `atan(x)`  |  傳回 `x` 的反正切。  | 
|  `cbrt(x)`  |  傳回 `x` 的立方根。  | 
|  `ceil(x)`  |  傳回大於 `x` 的最接近整數。  | 
|  `cos(x)`  |  傳回 `x` 的餘弦。  | 
|  `cosh(x)`  |  傳回 `x` 的雙曲餘弦。  | 
|  `cot(x)`  |  傳回 的餘切`x`。  | 
|  `exp(x)`  |  傳回乘以 `x` 次方的 `e`。  | 
|  `expm1(x)`  |  傳回 `exp(x) - 1`。使用此函數可更準確地`exp(x) - 1`計算 的小值`x`。  | 
|  `floor(x)`  |  傳回小於 `x` 的最接近整數。  | 
|  `log(x)`  |  傳回 `x` 的 `loge` (基底 `e`)。  | 
|  `log10(x)`  |  傳回 `x` 的 `log10` (基底 `10`)。  | 
|  `log1p(x)`  |  傳回 `log(1 + x)`。使用此函數可更準確地`log(1 + x)`計算 的小值`x`。  | 
|  `log2(x)`  |  傳回 `x` 的 `log2` (基底 `2`)。  | 
|  `pow(x, y)`  |  傳回乘以 `y` 次方的 `x`。這相當於 `x ^ y`。  | 
|  `signum(x)`  |  傳回 `x` 的正負號 (輸入負值為 `-1`，輸入零為 `0`，輸入正值則為 `+1`)。  | 
|  `sin(x)`  |  傳回 `x` 的正弦。  | 
|  `sinh(x)`  |  傳回 `x` 的雙曲正弦。  | 
|  `sqrt(x)`  |  傳回 `x` 的平方根。  | 
|  `tan(x)`  |  傳回 `x` 的正切。  | 
|  `tanh(x)`  |  傳回 `x` 的雙曲正切。  | 

# 在公式表達式中使用比較函數
<a name="expression-comparison-functions"></a>

在[轉換](transforms.md)和[指標](metrics.md)中，您可以使用下列比較函數來比較兩個值和輸出 `1`(true) 或 `0`(false. AWS IoT SiteWise compares strings by [lexicographic order](https://en.wikipedia.org/wiki/Lexicographic_order)。


| 函式 | Description | 
| --- | --- | 
|  `gt(x, y)`  |  如果 `x` 大於 `y`，則傳回 `1`，否則傳回 `0` (`x > y`)。 <a name="comparison-function-incompatible-types"></a>如果 `x`和 `y` 是不相容的類型，例如數字和字串，則此函數不會傳回值。  | 
|  `gte(x, y)`  |  如果 `x` 大於或等於 `y`，則傳回 `1`，否則傳回 `0` (`x ≥ y`)。 <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise 如果引數在 的相對公差內，則 會將引數視為相等`1E-9`。這的行為類似於 Python 中的 [isclose](https://docs.python.org/3/library/math.html#math.isclose) 函數。 <a name="comparison-function-incompatible-types"></a>如果 `x`和 `y` 是不相容的類型，例如數字和字串，則此函數不會傳回值。  | 
|  `eq(x, y)`  |  如果 `x` 等於 `y`，則傳回 `1`，否則傳回 `0` (`x == y`)。 <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise 如果引數在 的相對公差內，則 會將引數視為相等`1E-9`。這的行為類似於 Python 中的 [isclose](https://docs.python.org/3/library/math.html#math.isclose) 函數。 <a name="comparison-function-incompatible-types"></a>如果 `x`和 `y` 是不相容的類型，例如數字和字串，則此函數不會傳回值。  | 
|  `lt(x, y)`  |  如果 `x` 小於 `y`，則傳回 `1`，否則傳回 `0` (`x < y`)。 <a name="comparison-function-incompatible-types"></a>如果 `x`和 `y` 是不相容的類型，例如數字和字串，則此函數不會傳回值。  | 
|  `lte(x, y)`  |  如果 `x` 小於或等於 `y`，則傳回 `1`，否則傳回 `0` (`x ≤ y`)。 <a name="comparison-function-relative-tolerance"></a>AWS IoT SiteWise 如果引數在 的相對公差內，則 會將引數視為相等`1E-9`。這的行為類似於 Python 中的 [isclose](https://docs.python.org/3/library/math.html#math.isclose) 函數。 <a name="comparison-function-incompatible-types"></a>如果 `x`和 `y` 是不相容的類型，例如數字和字串，則此函數不會傳回值。  | 
|  `isnan(x)`  |  `1` 如果 `x` 等於 ，則傳回 `NaN`，否則傳回 `0`。 如果 `x` 是字串，則此函數不會傳回值。  | 

# 在公式表達式中使用條件式函數
<a name="expression-conditional-functions"></a>

在[轉換](transforms.md)和[指標](metrics.md)中，您可以使用下列函數來檢查條件並傳回不同的結果，無論條件評估為 true 還是 false。


| 函式 | Description | 
| --- | --- | 
|   `if(condition, result_if_true, result_if_false)`  |  `result_if_true` 如果條件評估為 true 或`result_if_false`條件評估為 ，則評估 `condition`並傳回 `false`。 `condition` 必須是數字。此函數會將 `0`和空字串視為 `false`，並將其他所有項目 （包括 `NaN`) 視為 `true`。布林值轉換為 `0`(false) 和 `1`(true)。 您可以從此函數傳回[無常](expression-constants.md#none-definition)數，以捨棄特定條件的輸出。這表示您可以篩選出不符合條件的資料點。如需詳細資訊，請參閱[篩選資料點](expression-tutorials.md#filter-data)。 

**Example 範例**  
+ `if(0, x, y)` 傳回變數 `y`。
+ `if(5, x, y)` 傳回變數 `x`。
+ `if(gt(temp, 300), x, y)` `x` 如果變數`temp`大於 ，則 會傳回變數`300`。
+ `if(gt(temp, 300), temp, none)` `temp` 如果變數大於或等於 ，則傳回變數`300`；如果 小於 `temp`，則傳回 `none`（無值）`300`。 建議您將 UFCS 用於巢狀條件函數，其中一或多個引數是條件函數。您可以使用 `if(condition, result_if_true)` 來評估條件`elif(condition, result_if_true, result_if_false)`，以及評估其他條件。 例如，您可以使用 `if(condition1, result1_if_true).elif(condition2, result2_if_true, result2_if_false)`而非 `if(condition1, result1_if_true, if(condition2, result2_if_true, result2_if_false))`。 您也可以鏈結其他中繼條件函數。例如，您可以使用 `if(condition1, result1_if_true).elif(condition2, result2_if_true).elif(condition3, result3_if_true, result3_if_false)`，而不是將多個`if`陳述式巢狀化，例如 `if(condition1, result1_if_true, if(condition2, result2_if_true, if(condition3, result3_if_true result3_if_false)))`。  您必須`elif(condition, result_if_true, result_if_false)`搭配 UFCS 使用 。   | 

# 在公式表達式中使用字串函數
<a name="expression-string-functions"></a>

在[轉換](transforms.md)和[指標](metrics.md)中，您可以使用下列函數在字串上操作。如需詳細資訊，請參閱[在公式中使用字串](expression-tutorials.md#use-strings-in-formulas)。

**重要**  
<a name="formula-output-rules"></a>公式表達式只能輸出雙值或字串值。巢狀運算式可以輸出其他資料類型，例如字串，但整體公式必須評估為數字或字串。您可以使用 [jp 函數](#jp-definition)將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊，請參閱[未定義、無限和溢出值](expression-tutorials.md#undefined-values)。


| 函數 | Description | 
| --- | --- | 
|  `len(s)`  |  傳回字串 的長度`s`。  | 
|  `find(s, substring)`  |  傳回字串 `substring`中字串的索引`s`。  | 
|  `contains(s, substring)`  |  `1` 如果字串`s`包含字串 ，則傳回 `substring`，否則傳回 `0`。  | 
|  `upper(s)`  |  以`s`大寫形式傳回字串。  | 
|  `lower(s)`  |  以`s`小寫形式傳回字串。  | 
|   `jp(s, json_path)`  |  `s` 使用 [JsonPath](https://github.com/json-path/JsonPath) 運算式評估字串`json_path`並傳回結果。 使用此函數執行下列動作： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-string-functions.html) 若要從 JSON 結構擷取字串值並將其傳回為數字，您必須使用多個巢狀`jp`函數。外部`jp`函數會從 JSON 結構擷取字串，而內部`jp`函數會將字串轉換為數字。 字串`json_path`必須包含字串常值。這表示 `json_path` 不能是評估為字串的表達式。 

**Example 範例**  
+ `jp('{"status":"active","value":15}', '$.value')` 傳回：`15`
+ `jp('{"measurement":{"reading":25,"confidence":0.95}}', '$.measurement.reading')` 傳回：`25`
+ `jp('[2,8,23]', '$[2]')` 傳回：`23`
+ `jp('{"values":[3,6,7]}', '$.values[1]')` 傳回：`6`
+ `jp('111', '$')` 傳回：`111`
+ `jp(jp('{"measurement":{"reading":25,"confidence":"0.95"}}', '$.measurement.confidence'), '$')` 傳回：`0.95`  | 
|  `join(s0, s1, s2, s3, ...)`  |  傳回具有分隔符號的串連字串。此函數使用第一個輸入字串做為分隔符號，並將剩餘的輸入字串聯結在一起。這的行為類似於 Java 中的 [join(CharSequence delimiter、CharSequence... 元素）](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence...-) 函數。 

**Example 範例**  
+ `join("-", "aa", "bb", "cc")` 傳回 `aa-bb-cc`  | 
|  `format(expression: "format")` 或 `format("format", expression)`  |  傳回指定格式的字串。此函數會評估`expression`為 值，然後以指定的格式傳回該值。這的行為類似於 Java 中的 [format（字串格式、物件... args) ](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#format-java.lang.String-java.lang.Object...-)函數。如需支援格式的詳細資訊，請參閱 *Java 平台 Standard Edition 7 API 規格*中的[類別格式化器](https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)下的轉換。 

**Example 範例**  
+ `format(100+1: "d")` 傳回字串 `101`。
+ `format("The result is %d", 100+1)` 傳回字串 `The result is 101`。  | 
|  `f'expression'`  |  傳回串連字串。使用此格式化函數，您可以使用簡單的表達式來串連和格式化字串。這些函數可能包含巢狀運算式。您可以使用 `{}`（大括號） 插入運算式。這的行為類似於 Python 中的[格式化字串常值](https://docs.python.org/3/reference/lexical_analysis.html#f-strings)。 

**Example 範例**  
+ `f'abc{1+2: "f"}d'` 傳回：`abc3.000000d`若要評估此範例表達式，請執行下列動作：

  1. `format(1+2: "f")` 傳回浮點數 `3.000000`。

  1. `join('', "abc", 1+2, 'd')` 傳回字串 `abc3.000000d`。

  您也可以使用下列方式撰寫表達式：`join('', "abc", format(1+2: "f"), 'd')`。  | 

# 在公式表達式中使用彙總函數
<a name="expression-aggregation-functions"></a>

僅在[指標](metrics.md)中，您可以使用下列函數來彙總每個時間間隔的輸入值，並計算單一輸出值。彙總函數可以彙總來自關聯資產的資料。

彙總函數引數可以是[變數](expression-variables.md)、[數字常值](expression-literals.md#number-literal-definition)、[時間函數](expression-temporal-functions.md)、巢狀運算式或彙總函數。公式`max(latest(x), latest(y), latest(z))`使用彙總函數做為引數，並傳回 `x`、 `y`和 `z` 屬性的最大目前值。

您可以在彙總函數中使用巢狀運算式。當您使用巢狀運算式時，適用下列規則：
+ 每個引數只能有一個變數。  
**Example**  

  例如，支援 `sum(x/2 )/avg(y^2 )` `avg(x*(x-1))`和 。

  例如，`min(x/y)`不支援 。
+ 每個引數都可以有多層巢狀運算式。  
**Example**  

  例如，支援 `sum(avg(x^2 )/2)` 。
+ 不同的引數可以有不同的變數。  
**Example**  

  例如，支援 `sum(x/2, y*2)` 。

**注意**  
如果您的表達式包含測量， AWS IoT SiteWise 會使用目前時間間隔內的最後一個值來計算彙總。
如果您的表達式包含屬性， AWS IoT SiteWise 會使用屬性的最新值來計算彙總。


| 函式 | Description | 
| --- | --- | 
|  `avg(x0, ..., xn)`  |  傳回目前時間間隔指定變數值的平均數。 <a name="aggregation-function-no-output"></a>只有在指定的變數在目前時間間隔內至少有一個資料點時，此函數才會輸出資料點。  | 
|   `sum(x0, ..., xn)`  |  傳回目前時間間隔指定變數值的總和。 <a name="aggregation-function-no-output"></a>只有在指定的變數在目前時間間隔內至少有一個資料點時，此函數才會輸出資料點。  | 
|  `min(x0, ..., xn)`  |  傳回目前時間間隔指定變數值的最小值。 <a name="aggregation-function-no-output"></a>只有在指定的變數在目前時間間隔內至少有一個資料點時，此函數才會輸出資料點。  | 
|  `max(x0, ..., xn)`  |  傳回目前時間間隔指定變數值的最大值。 <a name="aggregation-function-no-output"></a>只有在指定的變數在目前時間間隔內至少有一個資料點時，此函數才會輸出資料點。  | 
|  `count(x0, ..., xn)`  |  傳回目前時間間隔內給定變數的資料點總數。若要取得有關如何計算符合條件之資料點數目的更多資訊，請參閱 [計數符合條件的資料點](expression-tutorials.md#count-filtered-data)。 <a name="aggregation-function-always-output"></a>此函數會計算每個時間間隔的資料點。  | 
| `stdev(x0, ..., xn)` | 傳回指定變數值在目前時間間隔內的標準差。 只有在指定的變數在目前時間間隔內至少有一個資料點時，此函數才會輸出資料點。  | 

# 在公式表達式中使用暫時函數
<a name="expression-temporal-functions"></a>

使用暫時函數，根據資料點的時間戳記傳回值。

## 在指標中使用暫時函數
<a name="temporal-functions-in-metrics"></a>

僅在 [指標](metrics.md)中，您可以使用下列函數，根據資料點的時間戳記傳回值。

暫時函數引數必須是來自本機資產模型或巢狀運算式的屬性。這表示您無法在暫時函數中使用子資產模型的屬性。

您可以在時間函數中使用巢狀運算式。當您使用巢狀運算式時，適用下列規則：
+ 每個引數只能有一個變數。

  例如，支援 `latest( t*9/5 + 32 )` 。
+ 引數不能是彙總函數。

  例如，`first( sum(x) )`不支援 。


| 函式 | Description | 
| --- | --- | 
|  `first(x)`  |  傳回目前時間間隔指定變數值中時間戳記最早的值。  | 
|   `last(x)` |  傳回目前時間間隔指定變數值中時間戳記最晚的值。  | 
|  `earliest(x)`  |  傳回指定變數在目前時間間隔開始前的最後一個值。 如果輸入屬性在其歷史記錄中至少有一個資料點，此函數會計算每個時間間隔的資料點。如需詳細資訊，請參閱 [time-range-defintion](#time-range-def)。  | 
|   `latest(x)` |  傳回指定變數的最後一個值，並在目前時間間隔結束前加上最新的時間戳記。 如果輸入屬性在其歷史記錄中至少有一個資料點，此函數會計算每個時間間隔的資料點。如需詳細資訊，請參閱 [time-range-defintion](#time-range-def)。  | 
|   `statetime(x)`  |  傳回目前時間間隔中指定變數為正 (positive) 的秒數。您可以使用[比較函數](expression-comparison-functions.md)來建立轉換屬性，以供`statetime`函數使用。 例如，如果您有一個為 `0` 或 `1` 的 `Idle` 屬性，您可以使用此表達式來計算每個時間間隔的閒置時間：`IdleTime = statetime(Idle)`。如需詳細資訊，請參閱 [example statetime scenario](#statetime-example) (狀態時間案例範例)。 此函數不支援使用指標屬性做為輸入變數。 如果輸入屬性在其歷史記錄中至少有一個資料點，此函數會計算每個時間間隔的資料點。  | 
|   `TimeWeightedAvg(x, [interpolation])`  | 傳回以點之間的時間間隔加權的輸入資料平均值。如需運算和間隔詳細資訊，請參閱[時間加權函數參數](#timeweighted-parameter)。選用引數`interpolaton`必須是字串常數：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-temporal-functions.html) | 
|   `TimeWeightedStDev(x, [algo])`  |  傳回以點之間的時間間隔加權的輸入資料標準差。 如需運算和間隔詳細資訊，請參閱[時間加權函數參數](#timeweighted-parameter)。  計算會針對資料點之間的間隔使用最後觀察的轉移運算演算法。在此方法中，資料點會計算為最後一個觀察值，直到下一個輸入資料點時間戳記為止。權重的計算方式為資料點或視窗邊界之間的時間間隔，以秒為單位。 選用引數`algo`必須是字串常數： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-temporal-functions.html) 下列公式用於運算，其中： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-temporal-functions.html) 母群體標準差的方程式： ![\[母群體標準差的方程式。\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/timeweightedstdev1.png) 頻率標準差的方程式： ![\[頻率標準差的方程式。\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/timeweighted-frequency-stdev.png)  | 

下圖顯示 如何計算 AWS IoT SiteWise 相對於目前時間間隔的時間函數 `latest`、、 `first` `last``earliest`和 。

![\[AWS IoT SiteWise 暫時函數會根據其時間戳記傳回資料點。\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/sitewise-temporal-functions.png)
<a name="time-range-def"></a>

**注意**  
`first(x)`的時間範圍`last(x)`為 （目前時段開始、目前時段結束】。
的時間範圍`latest(x)`是 （時間開始，目前時段結束】。
的時間範圍`earliest(x)`是 （時間開始，上一個時段結束】。

**時間加權函數參數**

針對彙總時段計算的時間加權函數會考量下列事項：
+ 視窗內的資料點
+ 資料點之間的時間間隔
+ 視窗之前的最後一個資料點
+ 視窗後的第一個資料點 （適用於某些演算法）

**術語：**
+ **資料點錯誤** – 任何品質不佳或非數值的資料點。這不會在視窗結果運算中考慮。
+ **錯誤的間隔** – 資料點錯誤後的間隔。第一個已知資料點之前的間隔也會被視為錯誤的間隔。
+ **良好的資料點** – 具有良好品質和數值的任何資料點。

**注意**  
AWS IoT SiteWise 只會在運算轉換和指標時耗用`GOOD`品質資料。它會忽略 `UNCERTAIN`和 `BAD` 資料點。
第一個已知資料點之前的間隔會被視為**錯誤的間隔**。如需詳細資訊，請參閱[公式表達式教學課程](expression-tutorials.md)。

最後一個已知資料點之後的間隔會無限期持續，影響下列所有時段。當新的資料點到達時，函數會重新計算間隔。

遵循上述規則，會計算彙總視窗結果，並限於視窗邊界。根據預設，如果整個視窗的**間隔良好**，則函數只會傳送視窗結果。

如果視窗**良好間隔**小於視窗長度，則函數不會傳送視窗。

當影響視窗結果的資料點變更時，即使資料點位於視窗之外，函數也會重新計算視窗。

如果輸入屬性在其歷史記錄中至少有一個資料點，且已啟動運算，則函數會計算每個時間間隔的時間加權彙總函數。

**Example 狀態時間案例範例**  
假設您具有以下屬性的資產：  
+ `Idle` – 為 `0`或 的測量`1`。值為 `1` 時，機器處於閒置狀態。
+ `Idle Time` – 使用公式`statetime(Idle)`計算機器閒置時間的指標，以秒為單位，每隔 1 分鐘間隔。
該 `Idle` 屬性具有以下資料點。  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Timestamp | 2:00:00 PM | 2:00:30 PM | 2:01:15 PM | 2:02:45 PM | 2:04:00 PM | 
| Idle | 0 | 1 | 1 | 0 | 0 | 
AWS IoT SiteWise 每分鐘會從 的值計算 `Idle Time` 屬性`Idle`。此計算完成之後，`Idle Time` 屬性會具有下列資料點。  


|  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |
| Timestamp | 2:00:00 PM | 2:01:00 PM | 2:02:00 PM | 2:03:00 PM | 2:04:00 PM | 
| Idle Time | N/A | 30 | 60 | 45 | 0 | 
AWS IoT SiteWise 會在每分鐘`Idle Time`結束時對 執行下列計算。  
+ 下午 2:00 (下午 1:59 至下午 2:00)
  + 下午 2:00 之前 `Idle` 沒有資料，因此不會計算任何資料點。
+ 下午 2:01 (下午 2:00 至下午 2:01)
  + 下午 2:00:00，機器處於作用中狀態 (`Idle` 為 `0`)。
  + 下午 2:00:30，機器處於閒置狀態 (`Idle` 為 `1`)。
  + 在下午 2:01:00 的間隔結束之前 `Idle` 不會再次改變，所以 `Idle Time` 是 30 秒。
+ 下午 2:02 (下午 2:01 至下午 2:02)
  + 下午 2:01:00，機器處於閒置狀態 (即最後一個資料點位於下午 2:00:30)。
  + 下午 2:01:15，機器仍處於閒置狀態。
  + 在下午 2:02:00 的間隔結束之前 `Idle` 不會再次改變，所以 `Idle Time` 是 60 秒。
+ 下午 2:03 (下午 2:02至下午 2:03)
  + 下午 2:02:00，機器處於閒置狀態 (即最後一個資料點位於下午 2:01:15)。
  + 下午 2:02:45，機器處於作用中狀態。
  + 在下午 2:03:00 的間隔結束之前 `Idle` 不會再次改變，所以 `Idle Time` 是 45 秒。
+ 下午 2:04 (下午 2:03 至下午 2:04 )
  + 下午 2:03:00，機器處於作用中狀態 (即最後一個資料點位於下午 2:02:45)。
  + 在下午 2:04:00 的間隔結束之前 `Idle` 不會再次改變，所以 `Idle Time` 是 0 秒。

**Example TimeWeightedAvg 和 TimeWeightedStDev 案例範例**  
下表提供這些一分鐘時段指標的範例輸入和輸出：`Avg(x), TimeWeightedAvg(x), TimeWeightedAvg(x, "linear"), stDev(x), timeWeightedStDev(x), timeWeightedStDev(x, 'p')`。  
一分鐘彙總時段的範例輸入：  
這些資料點都具有`GOOD`品質。


|  |  | 
| --- |--- |
| 03：00：00 | 4.0 | 
| 03：01：00 | 2.0 | 
| 03：01：10 | 8.0 | 
| 03：01：50 | 20.0 | 
| 03：02：00 | 14.0 | 
| 03：02：05 | 10.0 | 
| 03：02：10 | 3.0 | 
| 03：02：30 | 20.0 | 
| 03：03：30 | 0.0 | 
彙總結果輸出：  
無 – 未為此時段產生結果。


| 時間 | `Avg(x)` | `TimeWeightedAvg(x)` | `TimeWeightedAvg(X, "linear")` | `stDev(X)` | `timeWeightedStDev(x)` | `timeWeightedStDev(x, 'p')` | 
| --- | --- | --- | --- | --- | --- | --- | 
| 3：00：00 | 4 | 無 | 無 | 0 | 無 | 無 | 
| 3：01：00 | 2 | 4 | 3 | 0 | 0 | 0 | 
| 3：02：00 | 14 | 9 | 13 | 6 | 5.430610041581775 | 5.385164807134504 | 
| 3：03：00 | 11 | 13 | 12.875 | 8.54400374531753 | 7.724054437220943 | 7.659416862050705 | 
| 3：04：00 | 0 | 10 | 2.5 | 0 | 10.084389681792215 | 10 | 
| 3：05：00 | 無 | 0 | 0 | 無 | 0 | 0 | 

## 在轉換中使用暫時函數
<a name="temporal-functions-in-transforms"></a>

僅在[轉換](transforms.md)中，您可以使用 `pretrigger()`函數，在啟動目前轉換計算的屬性更新之前擷取變數`GOOD`的品質值。

請考慮製造商用來 AWS IoT SiteWise 監控機器狀態的範例。製造商使用下列測量和轉換來代表程序：
+ 測量 `current_state`，可以是 0 或 1。
  + 如果機器處於清除狀態，則 `current_state`等於 1。
  + 如果機器處於製造狀態，則 `current_state`等於 0。
+ 等於 `cleaning_state_duration`的轉換 `if(pretrigger(current_state) == 1, timestamp(current_state) - timestamp(pretrigger(current_state)), none)`。此轉換會以秒為單位傳回機器處於清除狀態的時間，格式為 Unix epoch。如需詳細資訊，請參閱 [在公式表達式中使用條件式函數](expression-conditional-functions.md)和 [timestamp()](expression-date-and-time-functions.md) 函數。

如果機器停留在清除狀態的時間超過預期，製造商可能會調查機器。

您也可以在多變量轉換中使用 `pretrigger()`函數。例如，您有兩個名為 `x`和 `z`的測量`y`，以及一個等於 的轉換 `x + y + pretrigger(y)`。下表顯示 `x`、 `y`和 的值`z`，從上午 9：00 到上午 9：15。

**注意**  
此範例假設測量的值依時間順序到達。例如，上午 09：00 `x`的 值會在上午 09：05 `x`的 值之前到達。
如果上午 9：05 的資料點在上午 9：00 的資料點到達，`z`則不會在上午 9：05 計算。
如果上午 9：05 `x`的 值在上午 09：00 `x`的 值之前到達，且依時間順序`y`抵達 的值，則 `z`等於上午 `22 = 20 + 1 + 1` 9：05。


|  | 上午 09：00 | 上午 09：05 | 上午 09：10 | 上午 09：15 | 
| --- | --- | --- | --- | --- | 
|  `x`  |  10  |  20  |    |  30  | 
|  `y`  |  1  |  2  |  3  |    | 
|  `z = x + y + pretrigger(y)`  |  `y` 在上午 09：00 之前不會收到任何資料點。因此， `z` 不會在上午 09：00 計算。  |  23 = 20 \$1 2 \$1 1 `pretrigger(y)` 等於 1。  |  25 = 20 \$1 3 \$1 2 `x` 不會收到新的資料點。 `pretrigger(y)`等於 2。  |  36 = 30 \$1 3 \$1 3 `y` 不會收到新的資料點。因此， `pretrigger(y)`等於上午 09：15 的 3。  | 

# 在公式表達式中使用日期和時間函數
<a name="expression-date-and-time-functions"></a>

在[轉換](transforms.md)和[指標](metrics.md)中，您可以透過下列方式使用日期和時間函數：
+ 擷取 UTC 或本機時區中資料點的目前時間戳記。
+ 使用引數建構時間戳記，例如 `year`、 `month`和 `day_of_month`。
+ 使用 `unix_time`引數擷取期間，例如年份或月份。


| 函式 | Description | 
| --- | --- | 
|  `now()`  |  以秒為單位，以 Unix epoch 格式傳回目前的日期和時間。  | 
|  `timestamp()`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `mktime(time_zone, year, month, day_of_month, hour, minute, second)`  |  以秒為單位，以 Unix epoch 格式傳回輸入時間。 下列需求適用於使用此函數： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) 下列限制適用於使用此函數： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) 範例： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `localtime(unix_time, time_zone)`  |  傳回從 Unix 時間起算，指定時區中的年份、日期、星期幾、星期幾、小時、分鐘或秒。 下列需求適用於使用此函數： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-date-and-time-functions.html) 回應範例： `2007-12-03T10:15:30+01:00[Europe/Paris]` `localtime(unix_time, time_zone)` 不是獨立的 函數。`year()`、`mon()`、`mday`、`wday()`、`yday()`、`hour()`、 `minute()`和 `sec()`函數採用 `localtime(unix_time, time_zone)`作為引數。 範例： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/expression-date-and-time-functions.html)  | 
|  `year(localtime(unix_time, time_zone)`  |  從 傳回年份`localtime(unix_time, time_zone)`。  | 
|  `mon(localtime(unix_time, time_zone))`  |  從 傳回月份`localtime(unix_time, time_zone)`。  | 
|  `mday(localtime(unix_time, time_zone))`  |  從 傳回當月的日期`localtime(unix_time, time_zone)`。  | 
|  `wday(localtime(unix_time, time_zone))`  |  從 傳回星期幾`localtime(unix_time, time_zone)`。  | 
|  `yday(localtime(unix_time, time_zone))`  |  從 傳回一年中的日期`localtime(unix_time, time_zone)`。  | 
|  `hour(localtime(unix_time, time_zone))`  |  從 傳回小時`localtime(unix_time, time_zone)`。  | 
|  `minute(localtime(unix_time, time_zone))`  |  從 傳回分鐘`localtime(unix_time, time_zone)`。  | 
|  `sec(localtime(unix_time, time_zone))`  |  從 傳回第二個 `localtime(unix_time, time_zone)`。  | 

## 支援的時區格式
<a name="time-zone-expressions"></a>

您可以透過下列方式指定時區引數：
+ 時區位移 - `'Z'`指定 UTC 或位移 (`'+2'` 或 `'-5'`)。
+ 位移 IDs - 結合時區縮寫和位移。例如，`'GMT+2'` 和 `'UTC-01:00'`。時區縮寫只能包含三個字母。
+ 區域型 IDs - 例如 `'Etc/GMT+12'`和 `'Pacific/Pago_Pago'`。

### 支援的時區縮寫
<a name="spported-time-zones"></a>

日期和時間函數支援下列三個字母的時區縮寫：
+ EST - -05：00
+ HST - -10：00
+ MST - -07：00
+ ACT - 澳洲/達爾文
+ AET - 澳洲/雪梨
+ AGT - 美洲/阿根廷/布宜諾斯\$1Aires
+ ART - 非洲/開羅
+ AST - 美洲/安克拉治
+ BET - 美洲/聖保羅
+ BST - 亞洲/達卡
+ CAT - 非洲/哈拉雷
+ CET - 歐洲/巴黎
+ CNT - 美洲/聖約翰
+ CST - 美洲/芝加哥
+ CTT - 亞洲/上海 
+ EAT - 非洲/Addis\$1Ababa
+ IET - America/Indiana/Indianapolis
+ IST - 亞洲/加爾各答
+ JST - 亞洲/東京
+ MIT - 太平洋/非洲
+ NET - 亞洲/葉文
+ NST - 太平洋/奧克蘭
+ PLT - 亞洲/喀拉蚩
+ PRT - 美洲/波多黎各
+ PST - 美洲/Los\$1Angeles
+ SST - 太平洋/瓜達爾加納爾
+ VST - 亞洲/Ho\$1Chi\$1Minh

### 支援的區域型 IDs
<a name="supported-region-based-ids"></a>

日期和時間函數支援下列區域型 IDs，依其與 UTC\$100：00 的關係進行組織：
+ Etc/GMT\$112 (UTC-12：00)
+ Pacific/Pago\$1Pago (UTC-11：00)
+ Pacific/Samoa (UTC-11：00)
+ Pacific/Niue (UTC-11：00)
+ 美國/薩摩亞 (UTC-11：00)
+ Etc/GMT\$111 (UTC-11：00)
+ Pacific/Midway (UTC-11：00)
+ Pacific/Honolulu (UTC-10：00)
+ 太平洋/羅克頓加 (UTC-10：00)
+ 太平洋/大溪地 (UTC-10：00)
+ Pacific/Johnston (UTC-10：00)
+ 美國/夏威夷 (UTC-10：00)
+ SystemV/HST10 (UTC-10：00)
+ Etc/GMT\$110 (UTC-10：00)
+ Pacific/Marquesas (UTC-09：30)
+ Etc/GMT\$19 (UTC-09：00)
+ Pacific/Gambier (UTC-09：00)
+ America/Atka (UTC-09：00)
+ SystemV/YST9 (UTC-09：00)
+ America/Adak (UTC-09：00)
+ 美國/阿留申文 (UTC-09：00)
+ Etc/GMT\$18 (UTC-08：00)
+ 美國/阿拉斯加 (UTC-08：00)
+ America/Juneau (UTC-08：00)
+ America/Metlakatla (UTC-08：00)
+ America/Yakutat (UTC-08：00)
+ Pacific/Pitcairn (UTC-08：00)
+ America/Sitka (UTC-08：00)
+ 美洲/安克拉治 (UTC-08：00)
+ SystemV/PST8 (UTC-08：00)
+ 美洲/北美洲 (UTC-08：00)
+ SystemV/YST9YDT (UTC-08：00)
+ 加拿大/伊克隆 (UTC-07：00)
+ 美國/太平洋-新 (UTC-07：00)
+ Etc/GMT\$17 (UTC-07：00)
+ 美國/亞利桑那州 (UTC-07：00)
+ America/Dawson\$1Creek (UTC-07：00)
+ 加拿大/太平洋 (UTC-07：00)
+ PST8PDT (UTC-07：00)
+ SystemV/MST7 (UTC-07：00)
+ America/Dawson (UTC-07：00)
+ 墨西哥/BajaNorte (UTC-07：00)
+ 美洲/提華納 (UTC-07：00)
+ 美洲/克里頓 (UTC-07：00)
+ America/Hermosillo (UTC-07：00)
+ America/Santa\$1Isabel (UTC-07：00)
+ America/Vancouver (UTC-07：00)
+ America/Ensenada (UTC-07：00)
+ 美洲/鳳凰城 (UTC-07：00)
+ 美洲/白馬 (UTC-07：00)
+ America/Fort\$1Nelson (UTC-07：00)
+ SystemV/PST8PDT (UTC-07：00)
+ America/Los\$1Angeles (UTC-07：00)
+ 美國/太平洋 (UTC-07：00)
+ America/El\$1Salvador (UTC-06：00)
+ 美洲/瓜地馬拉 (UTC-06：00)
+ 美洲/貝里斯 (UTC-06：00)
+ 美洲/馬拿瓜 (UTC-06：00)
+ 美洲/德古西加巴 (UTC-06：00)
+ Etc/GMT\$16 (UTC-06：00)
+ Pacific/Easter (UTC-06：00)
+ 墨西哥/BajaSur (UTC-06：00)
+ 美洲/區域 (UTC-06：00)
+ 美洲/丹佛 (UTC-06：00)
+ Pacific/Galapagos (UTC-06：00)
+ America/Yellowknife (UTC-06：00)
+ America/Swift\$1Current (UTC-06：00)
+ America/Inuvik (UTC-06：00)
+ 美洲/馬薩特蘭 (UTC-06：00)
+ America/Boise (UTC-06：00)
+ America/Costa\$1Rica (UTC-06：00)
+ MST7MDT (UTC-06：00)
+ SystemV/CST6 (UTC-06：00)
+ 美洲/吉瓦瓦 (UTC-06：00)
+ America/Ojinaga (UTC-06：00)
+ 智利/EasterIsland (UTC-06：00)
+ US/Mountain (UTC-06：00)
+ America/Edmonton (UTC-06：00)
+ 加拿大/山區 (UTC-06：00)
+ America/Cambridge\$1Bay (UTC-06：00)
+ Navajo (UTC-06：00)
+ SystemV/MST7MDT (UTC-06：00)
+ 加拿大/薩克其萬文 (UTC-06：00)
+ 美洲/船舶 (UTC-06：00)
+ 美洲/巴拿馬 (UTC-05：00)
+ 美洲/芝加哥 (UTC-05：00)
+ America/Eirunepe (UTC-05：00)
+ Etc/GMT\$15 (UTC-05：00)
+ 墨西哥/一般 (UTC-05：00)
+ America/Porto\$1Acre (UTC-05：00)
+ 美洲/蓋亞基爾 (UTC-05：00)
+ America/Rankin\$1Inlet (UTC-05：00)
+ 美國/中部 (UTC-05：00)
+ America/Rainy\$1River (UTC-05：00)
+ America/Indiana/Knox (UTC-05：00)
+ America/North\$1Dakota/Beulah (UTC-05：00)
+ America/Monterrey (UTC-05：00)
+ 美洲/牙買加 (UTC-05：00)
+ America/Atikokan (UTC-05：00)
+ America/Coral\$1Harbour (UTC-05：00)
+ America/North\$1Dakota/Center (UTC-05：00)
+ 美洲/開曼島 (UTC-05：00)
+ America/Indiana/Tell\$1City (UTC-05：00)
+ America/Mexico\$1City (UTC-05：00)
+ America/Matamoros (UTC-05：00)
+ CST6CDT (UTC-05：00)
+ America/Knox\$1IN (UTC-05：00)
+ 美洲/波哥大 (UTC-05：00)
+ America/Menominee (UTC-05：00)
+ America/Resolute (UTC-05：00)
+ SystemV/EST5 (UTC-05：00)
+ 加拿大/中部 (UTC-05：00)
+ 巴西/希臘 (UTC-05：00)
+ America/Cancun (UTC-05：00)
+ 美洲/利馬 (UTC-05：00)
+ America/Bahia\$1Banderas (UTC-05：00)
+ US/Indiana-Starke (UTC-05：00)
+ America/Rio\$1Branco (UTC-05：00)
+ SystemV/CST6CDT (UTC-05：00)
+ 牙買加 (UTC-05：00)
+ 美洲/米蘭 (UTC-05：00)
+ America/North\$1Dakota/New\$1Salem (UTC-05：00)
+ America/Winnipeg (UTC-05：00)
+ America/Cuiaba (UTC-04：00)
+ America/Marigot (UTC-04：00)
+ America/Indiana/Petersburg (UTC-04：00)
+ 智利/洲 (UTC-04：00)
+ America/Grand\$1Turk (UTC-04：00)
+ 古巴 (UTC-04：00)
+ Etc/GMT\$14 (UTC-04：00)
+ 美洲/馬納斯 (UTC-04：00)
+ America/Fort\$1Wayne (UTC-04：00)
+ America/St\$1Thomas (UTC-04：00)
+ 美洲/安圭拉 (UTC-04：00)
+ 美洲/哈瓦那 (UTC-04：00)
+ 美國/密西根州 (UTC-04：00)
+ 美洲/巴貝多 (UTC-04：00)
+ 美洲/路易斯維爾 (UTC-04：00)
+ 美洲/庫拉索 (UTC-04：00)
+ 美洲/蓋亞那 (UTC-04：00)
+ America/Martinique (UTC-04：00)
+ America/Puerto\$1Rico (UTC-04：00)
+ America/Port\$1of\$1Spain (UTC-04：00)
+ SystemV/AST4 (UTC-04：00)
+ America/Indiana/Vevay (UTC-04：00)
+ America/Indiana/Vincennes(UTC-04：00)
+ America/Kralendijk (UTC-04：00)
+ 美洲/安提瓜 (UTC-04：00)
+ 美洲/印地安那波利斯 (UTC-04：00)
+ America/Iqaluit (UTC-04：00)
+ America/St\$1Vincent (UTC-04：00)
+ America/Kentucky/Louisville (UTC-04：00)
+ 美洲/多明尼加 (UTC-04：00)
+ America/Asuncion (UTC-04：00)
+ EST5EDT (UTC-04：00)
+ 美洲/拿索 (UTC-04：00)
+ America/Kentucky/Monticello (UTC-04：00)
+ 巴西/西部 (UTC-04：00)
+ 美洲/阿魯巴 (UTC-04：00)
+ America/Indiana/Indianapolis(UTC-04：00)
+ 美洲/聖地牙哥 (UTC-04：00)
+ America/La\$1Paz (UTC-04：00)
+ America/Thunder\$1Bay (UTC-04：00)
+ America/Indiana/Marengo (UTC-04：00)
+ America/Blanc-Sablon (UTC-04：00)
+ America/Santo\$1Domingo (UTC-04：00)
+ 美國/東部 (UTC-04：00)
+ 加拿大/東部 (UTC-04：00)
+ 美洲/Port-au-Prince(UTC-04：00)
+ America/St\$1Barthelemy (UTC-04：00)
+ America/Nipigon (UTC-04：00)
+ 美國/印度東部 (UTC-04：00)
+ America/St\$1Lucia (UTC-04：00)
+ 美洲/蒙特塞拉特 (UTC-04：00)
+ America/Lower\$1Princes (UTC-04：00)
+ America/Detroit (UTC-04：00)
+ America/Tortola (UTC-04：00)
+ America/Porto\$1Velho (UTC-04：00)
+ America/Campo\$1Grande (UTC-04：00)
+ 美洲/維吉尼亞 (UTC-04：00)
+ America/Pangnirtung (UTC-04：00)
+ 美洲/蒙特婁 (UTC-04：00)
+ America/Indiana/Winamac (UTC-04：00)
+ America/Boa\$1Vista (UTC-04：00)
+ 美洲/格瑞那達 (UTC-04：00)
+ America/New\$1York (UTC-04：00)
+ America/St\$1Kitts (UTC-04：00)
+ 美洲/卡拉卡斯 (UTC-04：00)
+ 美洲/瓜德洛普 (UTC-04：00)
+ 美洲/多倫多 (UTC-04：00)
+ SystemV/EST5EDT (UTC-04：00)
+ America/Argentina/Catamarca (UTC-03：00)
+ 加拿大/大西洋 (UTC-03：00)
+ America/Argentina/Cordoba (UTC-03：00)
+ 美洲/阿拉圭 (UTC-03：00)
+ America/Argentina/Salta (UTC-03：00)
+ Etc/GMT\$13 (UTC-03：00)
+ America/Montevideo (UTC-03：00)
+ 巴西/東部 (UTC-03：00)
+ America/Argentina/Mendoza (UTC-03：00)
+ America/Argentina/Rio\$1Gallegos (UTC-03：00)
+ America/Catamarca (UTC-03：00)
+ America/Cordoba (UTC-03：00)
+ America/Sao\$1Paulo (UTC-03：00)
+ America/Argentina/Jujuy (UTC-03：00)
+ America/Cayenne (UTC-03：00)
+ America/Recife (UTC-03：00)
+ America/Buenos\$1Aires (UTC-03：00)
+ America/Paramaribo (UTC-03：00)
+ America/Moncton (UTC-03：00)
+ 美洲/門多薩 (UTC-03：00)
+ America/Santarem (UTC-03：00)
+ Atlantic/Bermuda (UTC-03：00)
+ America/Maceio (UTC-03：00)
+ 大西洋/斯坦利 (UTC-03：00)
+ America/Halifax (UTC-03：00)
+ 南極/盧比 (UTC-03：00)
+ America/Argentina/San\$1Luis (UTC-03：00)
+ America/Argentina/Ushuaia(UTC-03：00)
+ Antarctica/Palmer (UTC-03：00)
+ America/Punta\$1Arenas (UTC-03：00)
+ America/Glace\$1Bay (UTC-03：00)
+ America/Fortaleza (UTC-03：00)
+ 美洲/泰國 (UTC-03：00)
+ America/Argentina/La\$1Rioja (UTC-03：00)
+ America/Belem (UTC-03：00)
+ America/Jujuy (UTC-03：00)
+ 美洲/巴亞 (UTC-03：00)
+ America/Goose\$1Bay (UTC-03：00)
+ America/Argentina/San\$1Juan (UTC-03：00)
+ America/Argentina/ComodRivadavia (UTC-03：00)
+ America/Argentina/Tucuman (UTC-03：00)
+ America/Rosario (UTC-03：00)
+ SystemV/AST4ADT (UTC-03：00)
+ America/Argentina/Buenos\$1Aires (UTC-03：00)
+ America/St\$1Johns (UTC-02：30)
+ 加拿大/紐芬蘭 (UTC-02：30)
+ America/Miquelon (UTC-02：00)
+ Etc/GMT\$12 (UTC-02：00)
+ America/Godthab (UTC-02：00)
+ America/Noronha (UTC-02：00)
+ 巴西/DeNoronha (UTC-02：00)
+ 大西洋/南部\$1喬治亞 (UTC-02：00)
+ Etc/GMT\$11 (UTC-01：00)
+ Atlantic/Cape\$1Verde (UTC-01：00)
+ Pacific/Kiritimati (UTC\$114：00)
+ Etc/GMT-14 (UTC\$114：00)
+ Pacific/Fakaofo (UTC\$113：00)
+ Pacific/Enderbury (UTC\$113：00)
+ Pacific/Apia (UTC\$113：00)
+ Pacific/Tongatapu (UTC\$113：00)
+ Etc/GMT-13 (UTC\$113：00)
+ NZ-CHAT (UTC\$112：45)
+ Pacific/Chatham (UTC\$112：45)
+ Pacific/Kwajalein (UTC\$112：00)
+ 南極/McMurdo (UTC\$112：00)
+ Pacific/Wallis (UTC\$112：00)
+ Pacific/Fiji (UTC\$112：00)
+ Pacific/Funafuti (UTC\$112：00)
+ Pacific/Nauru (UTC\$112：00)
+ Kwajalein (UTC\$112：00)
+ NZ (UTC\$112：00)
+ Pacific/Wake (UTC\$112：00)
+ 南極/南極 (UTC\$112：00)
+ Pacific/Tarawa (UTC\$112：00)
+ 太平洋/奧克蘭 (UTC\$112：00)
+ Asia/Kamchatka (UTC\$112：00)
+ Etc/GMT-12 (UTC\$112：00)
+ 亞洲/安多爾 (UTC\$112：00)
+ Pacific/Majuro (UTC\$112：00)
+ Pacific/Ponape (UTC\$111：00)
+ Pacific/Bougainville (UTC\$111：00)
+ 南極/Macquarie (UTC\$111：00)
+ Pacific/Pohnpei (UTC\$111：00)
+ Pacific/Efate (UTC\$111：00)
+ Pacific/Norfolk (UTC\$111：00)
+ 亞洲/馬加達文 (UTC\$111：00)
+ Pacific/Kosrae (UTC\$111：00)
+ Asia/Sakhalin (UTC\$111：00)
+ Pacific/Noumea (UTC\$111：00)
+ Etc/GMT-11 (UTC\$111：00)
+ Asia/Srednekolymsk (UTC\$111：00)
+ Pacific/Guadalcanal (UTC\$111：00)
+ Australia/Lord\$1Howe (UTC\$110：30)
+ 澳洲/LHI (UTC\$110：30)
+ 澳洲/哈巴特 (UTC\$110：00)
+ Pacific/Yap (UTC\$110：00)
+ 澳洲/塔斯馬尼亞 (UTC\$110：00)
+ Pacific/Port\$1Moresby (UTC\$110：00)
+ 澳洲/ACT (UTC\$110：00)
+ 澳洲/維吉尼亞 (UTC\$110：00)
+ Pacific/Chuuk (UTC\$110：00)
+ 澳洲/芬蘭 (UTC\$110：00)
+ 澳洲/坎培拉 (UTC\$110：00)
+ 澳洲/馬里 (UTC\$110：00)
+ 太平洋/關島 (UTC\$110：00)
+ Pacific/Truk (UTC\$110：00)
+ 澳洲/NSW (UTC\$110：00)
+ Asia/Vladivostok (UTC\$110：00)
+ 太平洋/塞班 (UTC\$110：00)
+ 南極/DumontDUrville (UTC\$110：00)
+ 澳洲/雪梨 (UTC\$110：00)
+ 澳洲/布里斯班 (UTC\$110：00)
+ Etc/GMT-10 (UTC\$110：00)
+ Asia/Ust-Nera (UTC\$110：00)
+ 澳洲/墨爾本 (UTC\$110：00)
+ 澳洲/林德曼 (UTC\$110：00)
+ 澳洲/北部 (UTC\$109：30)
+ 澳洲/雅科文納 (UTC\$109：30)
+ 澳洲/阿德雷德 (UTC\$109：30)
+ Australia/Broken\$1Hill (UTC\$109：30)
+ 澳洲/南部 (UTC\$109：30)
+ 澳洲/達爾文 (UTC\$109：30)
+ Etc/GMT-9 (UTC\$109：00)
+ Pacific/Palau (UTC\$109：00)
+ 亞洲/中國 (UTC\$109：00)
+ Asia/Dili (UTC\$109：00)
+ 亞洲/日本 (UTC\$109：00)
+ 亞洲/雅各斯克 (UTC\$109：00)
+ Asia/Pyongyang (UTC\$109：00)
+ ROK (UTC\$109：00)
+ 亞洲/首爾 (UTC\$109：00)
+ Asia/Khandyga (UTC\$109：00)
+ 日本 (UTC\$109：00)
+ 亞洲/東京 (UTC\$109：00)
+ Australia/Eucla (UTC\$108：45)
+ Asia/Kuching (UTC\$108：00)
+ 亞洲/北京 (UTC\$108：00)
+ Etc/GMT-8 (UTC\$108：00)
+ 澳洲/伯斯 (UTC\$108：00)
+ 亞洲/澳門 (UTC\$108：00)
+ 亞洲/澳門 (UTC\$108：00)
+ Asia/Choibalsan (UTC\$108：00)
+ 亞洲/上海 (UTC\$108：00)
+ 南極/凱西 (UTC\$108：00)
+ Asia/Ulan\$1Bator (UTC\$108：00)
+ 亞洲/重慶 (UTC\$108：00)
+ 亞洲/阿拉伯聯合大公國 (UTC\$108：00)
+ 亞洲/台北 (UTC\$108：00)
+ 亞洲/曼尼拉 (UTC\$108：00)
+ PRC (UTC\$108：00)
+ Asia/Ujung\$1Pandang (UTC\$108：00)
+ 亞洲/哈爾賓 (UTC\$108：00)
+ 新加坡 (UTC\$108：00)
+ 亞洲/布魯伊 (UTC\$108：00)
+ 澳洲/西部 (UTC\$108：00)
+ 亞洲/香港\$1香港 (UTC\$108：00)
+ 亞洲/馬卡薩爾 (UTC\$108：00)
+ 香港 (UTC\$108：00)
+ Asia/Kuala\$1Lumpur (UTC\$108：00)
+ 亞洲/伊爾庫次克 (UTC\$108：00)
+ 亞洲/新加坡 (UTC\$108：00)
+ Asia/Pontianak (UTC\$107：00)
+ Etc/GMT-7 (UTC\$107：00)
+ Asia/Phnom\$1Penh (UTC\$107：00)
+ 亞洲/Novosibirsk (UTC\$107：00)
+ 南極/達維斯 (UTC\$107：00)
+ 亞洲/東京 (UTC\$107：00)
+ 亞洲/雅加達 (UTC\$107：00)
+ 亞洲/巴納爾 (UTC\$107：00)
+ 印度/聖誕 (UTC\$107：00)
+ 亞洲/Ho\$1Chi\$1Minh (UTC\$107：00)
+ Asia/Hovd (UTC\$107：00)
+ 亞洲/曼谷 (UTC\$107：00)
+ Asia/Vientiane (UTC\$107：00)
+ 亞洲/Novokuznetsk (UTC\$107：00)
+ 亞洲/克拉斯諾亞爾斯克 (UTC\$107：00)
+ Asia/Saigon (UTC\$107：00)
+ 亞洲/仰光 (UTC\$106：30)
+ Asia/Rangoon (UTC\$106：30)
+ 印度/可哥斯 (UTC\$106：30)
+ 亞洲/喀什加爾 (UTC\$106：00)
+ Etc/GMT-6 (UTC\$106：00)
+ Asia/Almaty (UTC\$106：00)
+ 亞洲/達卡 (UTC\$106：00)
+ 亞洲/大阪 (UTC\$106：00)
+ 亞洲/達卡 (UTC\$106：00)
+ 印度/芝加哥 (UTC\$106：00)
+ Asia/Qyzylorda (UTC\$106：00)
+ 亞洲/比什克文 (UTC\$106：00)
+ 南極/維斯托克 (UTC\$106：00)
+ 亞洲/烏魯木齊 (UTC\$106：00)
+ Asia/Thimbu (UTC\$106：00)
+ 亞洲/明湖 (UTC\$106：00)
+ 亞洲/加德滿都 (UTC\$105：45)
+ 亞洲/加德滿都 (UTC\$105：45)
+ 亞洲/加爾各答 (UTC\$105：30)
+ 亞洲/可倫坡 (UTC\$105：30)
+ 亞洲/卡庫塔 (UTC\$105：30)
+ Asia/Aqtau (UTC\$105：00)
+ Etc/GMT-5 (UTC\$105：00)
+ Asia/Samarkand (UTC\$105：00)
+ 亞洲/喀拉蚩 (UTC\$105：00)
+ 亞洲/葉卡特琳堡 (UTC\$105：00)
+ Asia/Dushanbe (UTC\$105：00)
+ 印度/馬爾地夫 (UTC\$105：00)
+ 亞洲/歐羅 (UTC\$105：00)
+ 亞洲/塔什干 (UTC\$105：00)
+ 南極/馬遜 (UTC\$105：00)
+ Asia/Aqtobe (UTC\$105：00)
+ Asia/Ashkhabad (UTC\$105：00)
+ Asia/Ashgabat (UTC\$105：00)
+ Asia/Atyrau (UTC\$105：00)
+ 印度/開加勒文 (UTC\$105：00)
+ 伊朗 (UTC\$104：30)
+ 亞洲/德黑蘭 (UTC\$104：30)
+ 亞洲/喀布爾 (UTC\$104：30)
+ 亞洲/葉文 (UTC\$104：00)
+ Etc/GMT-4 (UTC\$104：00)
+ Etc/GMT-4 (UTC\$104：00)
+ 亞洲/杜拜 (UTC\$104：00)
+ 印度/留尼旺 (UTC\$104：00)
+ 歐洲/薩拉托夫 (UTC\$104：00)
+ 歐洲/薩馬拉 (UTC\$104：00)
+ 印度/馬來西亞 (UTC\$104：00)
+ 亞洲/巴庫 (UTC\$104：00)
+ 亞洲/馬斯卡特 (UTC\$104：00)
+ 歐洲/Volgograd (UTC\$104：00)
+ 歐洲/阿斯特拉坎 (UTC\$104：00)
+ 亞洲/提比利斯 (UTC\$104：00)
+ 歐洲/阿拉伯聯合大公國斯克 (UTC\$104：00)
+ Asia/Aden (UTC\$103：00)
+ 非洲/奈洛比 (UTC\$103：00)
+ 歐洲/伊斯坦堡 (UTC\$103：00)
+ Etc/GMT-3 (UTC\$103：00)
+ 歐洲/Zaporozhye (UTC\$103：00)
+ 以色列 (UTC\$103：00)
+ Indian/Comoro (UTC\$103：00)
+ 南極/雪瓦 (UTC\$103：00)
+ 非洲/摩加迪休 (UTC\$103：00)
+ 歐洲/布加勒斯特 (UTC\$103：00)
+ 非洲/亞洲 (UTC\$103：00)
+ 歐洲/馬里漢文 (UTC\$103：00)
+ 亞洲/伊斯坦堡 (UTC\$103：00)
+ 歐洲/特拉索波爾 (UTC\$103：00)
+ 歐洲/莫斯科 (UTC\$103：00)
+ 歐洲/中國 (UTC\$103：00)
+ 歐洲/赫爾辛基 (UTC\$103：00)
+ 亞洲/貝魯特 (UTC\$103：00)
+ 亞洲/特拉維夫 (UTC\$103：00)
+ 非洲/吉布地 (UTC\$103：00)
+ 歐洲/塞維多爾 (UTC\$103：00)
+ 歐洲/索菲亞 (UTC\$103：00)
+ 亞洲/加薩 (UTC\$103：00)
+ 非洲/阿斯馬拉 (UTC\$103：00)
+ 歐洲/里加 (UTC\$103：00)
+ 亞洲/巴加達 (UTC\$103：00)
+ 亞洲/大馬士革 (UTC\$103：00)
+ Africa/Dar\$1es\$1Salaam (UTC\$103：00)
+ Africa/Addis\$1Ababa (UTC\$103：00)
+ 歐洲/烏茲哥羅德 (UTC\$103：00)
+ 亞洲/耶路撒冷 (UTC\$103：00)
+ 亞洲/利雅得 (UTC\$103：00)
+ 亞洲/科威特 (UTC\$103：00)
+ 歐洲/基羅夫 (UTC\$103：00)
+ 非洲/坎帕拉 (UTC\$103：00)
+ 歐洲/明斯克 (UTC\$103：00)
+ 亞洲/卡達 (UTC\$103：00)
+ 歐洲/基輔 (UTC\$103：00)
+ 亞洲/巴林 (UTC\$103：00)
+ 歐洲/維爾紐斯 (UTC\$103：00)
+ Indian/Antananarivo (UTC\$103：00)
+ 印度/ Mayotte (UTC\$103：00)
+ 歐洲/塔林 (UTC\$103：00)
+ 土耳其 (UTC\$103：00)
+ 非洲/古巴 (UTC\$103：00)
+ 亞洲/尼科西亞 (UTC\$103：00)
+ 亞洲/法蘭克福 (UTC\$103：00)
+ W-SU (UTC\$103：00)
+ EET (UTC\$103：00)
+ Asia/Hebron (UTC\$103：00)
+ 亞洲/安曼 (UTC\$103：00)
+ 歐洲/尼科西亞 (UTC\$103：00)
+ 歐洲/雅典 (UTC\$103：00)
+ 非洲/開羅 (UTC\$102：00)
+ 非洲/馬巴巴尼 (UTC\$102：00)
+ 歐洲/巴西 (UTC\$102：00)
+ 歐洲/華沙 (UTC\$102：00)
+ CET (UTC\$102：00)
+ 歐洲/盧森堡 (UTC\$102：00)
+ Etc/GMT-2 (UTC\$102：00)
+ 利比亞 (UTC\$102：00)
+ 非洲/基加利 (UTC\$102：00)
+ 非洲/Tripoli (UTC\$102：00)
+ 歐洲/卡寧格勒 (UTC\$102：00)
+ 非洲/溫荷克 (UTC\$102：00)
+ 歐洲/馬爾他 (UTC\$102：00)
+ 歐洲/北京 (UTC\$102：00)
+ 
+ 歐洲/斯科普耶 (UTC\$102：00)
+ 歐洲/薩拉傑沃 (UTC\$102：00)
+ 歐洲/羅馬 (UTC\$102：00)
+ 歐洲/蘇黎世 (UTC\$102：00)
+ 歐洲/加布羅陀 (UTC\$102：00)
+ 非洲/盧森堡 (UTC\$102：00)
+ 歐洲/維度 (UTC\$102：00)
+ 歐洲/盧比安那 (UTC\$102：00)
+ 歐洲/柏林 (UTC\$102：00)
+ 歐洲/斯德哥爾摩 (UTC\$102：00)
+ 歐洲/布達佩斯 (UTC\$102：00)
+ 歐洲/札格瑞布 (UTC\$102：00)
+ 歐洲/巴黎 (UTC\$102：00)
+ Africa/Ceuta (UTC\$102：00)
+ 歐洲/布拉格 (UTC\$102：00)
+ Antarctica/Troll (UTC\$102：00)
+ 非洲/加布隆 (UTC\$102：00)
+ 歐洲/哥本哈根 (UTC\$102：00)
+ 歐洲/維也納 (UTC\$102：00)
+ 歐洲/土耳其 (UTC\$102：00)
+ MET (UTC\$102：00)
+ 歐洲/阿姆斯特丹 (UTC\$102：00)
+ 非洲/馬普索 (UTC\$102：00)
+ 歐洲/桑\$1馬利諾 (UTC\$102：00)
+ 波蘭 (UTC\$102：00)
+ 歐洲/安道爾 (UTC\$102：00)
+ 歐洲/奧斯陸 (UTC\$102：00)
+ 歐洲/Podgorica (UTC\$102：00)
+ 非洲/布漢布拉 (UTC\$102：00)
+ Atlantic/Jan\$1Mayen (UTC\$102：00)
+ 非洲/馬斯魯 (UTC\$102：00)
+ 歐洲/馬德里 (UTC\$102：00)
+ 非洲/布林特爾 (UTC\$102：00)
+ 非洲/俄羅斯 (UTC\$102：00)
+ 非洲/哈拉雷 (UTC\$102：00)
+ 非洲/喀土木 (UTC\$102：00)
+ 非洲/約翰尼斯堡 (UTC\$102：00)
+ 歐洲/貝爾格勒 (UTC\$102：00)
+ 歐洲/布拉迪斯拉瓦 (UTC\$102：00)
+ 北極/長年比 (UTC\$102：00)
+ 埃及 (UTC\$102：00)
+ 歐洲/梵蒂岡 (UTC\$102：00)
+ 歐洲/摩納哥 (UTC\$102：00)
+ 歐洲/倫敦 (UTC\$101：00)
+ Etc/GMT-1 (UTC\$101：00)
+ 歐洲/澤西 (UTC\$101：00)
+ 歐洲/格恩西島 (UTC\$101：00)
+ 歐洲/Isle\$1of\$1Man (UTC\$101：00)
+ 非洲/突尼斯 (UTC\$101：00)
+ 非洲/馬拉波 (UTC\$101：00)
+ GB-Eire (UTC\$101：00)
+ 非洲/拉哥斯 (UTC\$101：00)
+ 非洲/阿爾及爾 (UTC\$101：00)
+ GB (UTC\$101：00)
+ 葡萄牙 (UTC\$101：00)
+ Africa/Sao\$1Tome (UTC\$101：00)
+ 非洲/Ndjamena (UTC\$101：00)
+ 大西洋/法蘭克福 (UTC\$101：00)
+ 愛爾蘭 (UTC\$101：00)
+ 大西洋/法羅 (UTC\$101：00)
+ 歐洲/都柏林 (UTC\$101：00)
+ 非洲/利伯維爾 (UTC\$101：00)
+ Africa/El\$1Aaiun (UTC\$101：00)
+ Africa/El\$1Aaiun (UTC\$101：00)
+ 非洲/多拉 (UTC\$101：00)
+ 非洲/布拉薩維爾 (UTC\$101：00)
+ 非洲/波多-諾哥 (UTC\$101：00)
+ 大西洋/馬德拉 (UTC\$101：00)
+ 歐洲/里斯本 (UTC\$101：00)
+ 大西洋/加那利 (UTC\$101：00)
+ 非洲/卡薩布蘭卡 (UTC\$101：00)
+ 歐洲/貝爾法斯特 (UTC\$101：00)
+ 非洲/盧安達 (UTC\$101：00)
+ 非洲/金夏沙 (UTC\$101：00)
+ 非洲/孟買 (UTC\$101：00)
+ WET (UTC\$101：00)
+ 非洲/尼亞米 (UTC\$101：00)
+ GMT (UTC\$100：00)
+ Etc/GMT-0 (UTC\$100：00)
+ Atlantic/St\$1Helena (UTC\$100：00)
+ Etc/GMT\$10 (UTC\$100：00)
+ 非洲/班加爾 (UTC\$100：00)
+ Etc/GMT (UTC\$100：00)
+ 非洲/自由城 (UTC\$100：00)
+ 非洲/巴馬科 (UTC\$100：00)
+ 非洲/庫克里 (UTC\$100：00)
+ 通用 (UTC\$100：00)
+ 非洲/Nouakchott (UTC\$100：00)
+ UTC (UTC\$100：00)
+ Etc/Universal (UTC\$100：00)
+ Atlantic/Azores (UTC\$100：00)
+ 非洲/Abidjan (UTC\$100：00)
+ 非洲/阿克拉 (UTC\$100：00)
+ Etc/UCT (UTC\$100：00)
+ GMT0 (UTC\$100：00)
+ Zulu (UTC\$100：00)Zulu (UTC\$100：00)
+ 非洲/大阪 (UTC\$100：00)
+ 大西洋/雷克雅維克 (UTC\$100：00)
+ Etc/Zulu (UTC\$100：00)
+ 冰島 (UTC\$100：00)
+ 非洲/羅馬 (UTC\$100：00)
+ 格林威治文 (UTC\$100：00)
+ Etc/GMT0 (UTC\$100：00)
+ 美洲/丹麥夏文 (UTC\$100：00)
+ 非洲/達卡 (UTC\$100：00)
+ 非洲/比索 (UTC\$100：00)
+ Etc/Greenwich (UTC\$100：00)
+ 非洲/Timbuktu (UTC\$100：00)
+ UCT (UTC\$100：00)
+ 非洲/蒙羅維亞 (UTC\$100：00)
+ Etc/UTC (UTC\$100：00)

# 公式表達式教學課程
<a name="expression-tutorials"></a>

您可以依照這些教學課程來使用 中的公式表達式 AWS IoT SiteWise。

**Topics**
+ [在公式中使用字串](#use-strings-in-formulas)
+ [篩選資料點](#filter-data)
+ [計數符合條件的資料點](#count-filtered-data)
+ [公式中的延遲資料](#late-data)
+ [公式中的資料品質](#data-quality)
+ [未定義、無限和溢出值](#undefined-values)

## 在公式中使用字串
<a name="use-strings-in-formulas"></a>

您可以在公式表達式中的字串上操作 。您也可以從參考屬性和測量屬性的變數輸入字串。

**重要**  
<a name="formula-output-rules"></a>公式表達式只能輸出雙值或字串值。巢狀運算式可以輸出其他資料類型，例如字串，但整體公式必須評估為數字或字串。您可以使用 [jp 函數](expression-string-functions.md#jp-definition)將字串轉換為數字。布林值必須為 1 (true) 或 0 (false)。如需詳細資訊，請參閱[未定義、無限和溢出值](#undefined-values)。

AWS IoT SiteWise 提供下列公式表達式功能，可用於在字串上操作：
+ [字串常值](expression-literals.md#string-literal-definition)
+ [索引運算子](expression-operators.md#index-operator-definition) (`s[index]`)
+ [配量運算子](expression-operators.md#slice-operator-definition) (`s[start:end:step]`)
+ [比較函數](expression-comparison-functions.md)，您可以使用依[語彙順序](https://en.wikipedia.org/wiki/Lexicographic_order)比較字串
+ [字串函數](expression-string-functions.md)，其中包含可剖析序列化 JSON 物件並將字串轉換為數字的`jp`函數

## 篩選資料點
<a name="filter-data"></a>

您可以使用 [if 函數](expression-conditional-functions.md#if-definition)來篩選不符合條件的資料點。`if` 函數會評估條件，並傳回 `true` 和 `false`結果的不同值。您可以使用[無常](expression-constants.md#none-definition)數作為一個`if`函數案例的輸出，以捨棄該案例的資料點。

**篩選出符合條件的資料點**
+ 建立使用 `if`函數的轉換來定義條件，以檢查是否符合條件，並傳回 `none` `result_if_true`或 `result_if_false`值。

**Example 範例：篩選出水未沸騰的資料點**  
假設您有提供機器中水溫 `temp_c`（攝氏） 的測量 。您可以定義下列轉換，以篩選出水未沸騰的資料點：  
+ 轉換： `boiling_temps = if(gte(temp_c, 100), temp_c, none)` – 如果溫度大於或等於攝氏 100 度，則傳回溫度，否則不會傳回任何資料點。

## 計數符合條件的資料點
<a name="count-filtered-data"></a>

您可以使用[比較函數](expression-comparison-functions.md)和 [sum()](expression-aggregation-functions.md#sum-definition) 來計算條件為 true 的資料點數目。

**計算符合條件的資料點**

1. 建立使用比較函數在另一個屬性上定義篩選條件的轉換。

1. 建立可加總符合該條件之資料點的指標。

**Example 範例：計算水沸騰的資料點數量**  
假設您有提供機器中水溫 `temp_c`（攝氏） 的測量 。您可以定義下列轉換和指標屬性，以計算水沸騰的資料點數量：  
+ 轉換： `is_boiling = gte(temp_c, 100)` – `1` 如果溫度大於或等於攝氏 100 度，則傳回 ，否則傳回 `0`。
+ 指標： `boiling_count = sum(is_boiling)` – 傳回水沸騰的資料點數目。

## 公式中的延遲資料
<a name="late-data"></a>

AWS IoT SiteWise 支援延遲擷取長達 7 天的資料。當 AWS IoT SiteWise 收到延遲資料時，它會重新計算過去時段內輸入延遲資料的任何指標的現有值。這些重新計算會產生資料處理費用。

**注意**  
當 AWS IoT SiteWise 運算輸入延遲資料的屬性時，它會使用每個屬性目前的公式表達式。

在 AWS IoT SiteWise 重新計算指標的過去時段之後，它會取代該時段的先前值。如果您啟用該指標的通知， AWS IoT SiteWise 也會發出屬性值通知。這表示您可以針對先前收到通知的相同屬性和時間戳記，接收新的屬性值更新通知。如果您的應用程式或資料湖使用屬性值通知，您必須使用新的值來更新之前的值，使其資料正確無誤。

## 公式中的資料品質
<a name="data-quality"></a>

在 中 AWS IoT SiteWise，每個資料點都有一個品質碼，可以是下列其中一項：
+ `GOOD` – 資料不會受到任何問題的影響。
+ `BAD` – 資料會受到感應器故障等問題的影響。
+ `UNCERTAIN` – 資料受到感應器不準確等問題的影響。

AWS IoT SiteWise 只會在運算轉換和指標時耗用`GOOD`品質資料。 AWS IoT SiteWise 輸出只會輸出`GOOD`品質資料以成功運算。如果運算不成功，則 AWS IoT SiteWise 不會輸出該運算的資料點。如果計算導致未定義、無限或溢出值，則可能會發生這種情況。

如需如何查詢資料及依資料品質篩選的詳細資訊，請參閱 [從 查詢資料 AWS IoT SiteWise](query-industrial-data.md)。

## 未定義、無限和溢出值
<a name="undefined-values"></a>

某些公式表達式 （例如 `x / 0`、 `sqrt(-1)`或 `log(0)`) 會計算在實數系統中未定義、無限或超出 支援範圍的值 AWS IoT SiteWise。當資產屬性的表達式運算未定義、無限或溢位值時， AWS IoT SiteWise 不會輸出該運算的資料點。

AWS IoT SiteWise 如果資料點運算非數值作為公式表達式的結果，也不會輸出資料點。這表示如果您定義計算字串、陣列或[無常](expression-constants.md#none-definition)數的公式，則 AWS IoT SiteWise 不會輸出該運算的資料點。

**Example 範例**  
下列每個公式表達式都會產生 AWS IoT SiteWise 無法表示為 number 的值。當計算這些公式表達式時， AWS IoT SiteWise 不會輸出資料點。  
+ `x / 0` 未定義。
+ `log(0)` 未定義。
+ `sqrt(-1)` 在實數系統中未定義。
+ `"hello" + " world"` 是字串。
+ `jp('{"values":[3,6,7]}', '$.values')` 是陣列。
+ `if(gte(temp, 300), temp, none)` 當 小於 `none`時`temp`， 為 `300`。