

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 聚合来自属性和其他资产（指标）的数据
<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>**名称** – 属性的名称。
+ **数据类型** - 转换的数据类型，可以是**双**精度或 **字符串**。
+ **外部 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`（假）和 `1`（真）。  
如果您在指标表达式中定义任何指标输入变量，这些输入必须与输出指标具有同一个时间间隔。  
<a name="formula-output-rules"></a>公式表达式只能输出双精度值或字符串值。嵌套表达式可以输出其他数据类型，例如字符串，但整个公式的计算结果必须为数字或字符串。您可以使用 [jp 函数](expression-string-functions.md#jp-definition)将字符串转换为数字。布尔值必须为 1（真）或 0（假）。有关更多信息，请参阅 [未定义值、无限值和溢出值](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\$1 00:00) 协调世界时间
+ (UTC\$1 01:00) 欧洲中部时间
+ (UTC\$1 02:00) 东欧
+ (UTC03\$1:00) 东非时间
+ (UTC\$1 04:00) 近东时间
+ (UTC\$1 05:00) 巴基斯坦拉合尔时间
+ (UTC\$1 05:30) 印度标准时间
+ 孟加拉国标准时间
+ (UTC\$1 07:00) 越南标准时间
+ (UTC\$1 08:00) 中国台湾时间
+ (UTC\$1 09:00) 日本标准时间
+ (UTC\$1 09:30) 澳大利亚中部时间
+ (UTC\$1 10:00) 澳大利亚东部时间
+ (UTC\$1 11: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 带偏移量的自定义时间间隔（控制台）**  
以下示例向您展示如何定义 12 小时的时间间隔，偏移时间为 2021 年 2 月 20 日下午 6:30:30（太平洋标准时间）。  

**使用偏移量定义自定义间隔**

1. 对于 **时间间隔**，选择**自定义间隔**。

1. 对于 **时间间隔**，执行以下操作之一：
   + 输入 **12**，然后选择 **小时**。
   + 输入 **720**，然后选择 **分钟**。
   + 输入 **43200**，然后选择 **秒**。
**重要**  
无论单位如何，**时间间隔**都必须为整数。

1. 对于 **偏移日期**，选择 **2021 年 2 月 20 日**。

1. 对于 **偏移时间**，输入 **18:30:30**。

1. 对于 **偏移时区**，选择 **(UTC-08:00**) 太平洋标准时间。
如果您在 2021 年 7 月 1 日下午 06:30:30（太平洋标准时间）或之前创建指标，您将在 2021 年 7 月 1 日下午 06:30:30（太平洋标准时间）获得第一个聚合结果。第二个聚合结果将在 2021 年 7 月 2 日上午 06:30:30（太平洋标准时间）获得，依此类推。

## 定义指标（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` – 滚动窗口的时间间隔。间隔时间必须介于 1 分钟和 1 周之间。
  + `offsets` – 翻滚窗口的偏移。

  有关更多信息，请参阅《AWS IoT SiteWise API Reference》**中的 [TumblingWindow](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_TumblingWindow.html)。  
**Example 带有偏移量 (AWS CLI) 的自定义时间间隔**  

  以下示例向您展示如何定义 12 小时的时间间隔，偏移时间为 2021 年 2 月 20 日下午 06:30:30（太平洋标准时间）。

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

  如果您在 2021 年 7 月 1 日下午 06:30:30（太平洋标准时间）或之前创建指标，您将在 2021 年 7 月 1 日下午 06:30:30（太平洋标准时间）获得第一个聚合结果。第二个聚合结果将在 2021 年 7 月 2 日上午 06:30:30（太平洋标准时间）获得，依此类推。
+ `variables` – 定义要在表达式中使用的资产或子资产的其他属性的变量列表。每个变量结构包含一个在表达式中使用的简单名称，以及一个指定哪个属性与该变量关联的 `value` 结构。`value` 结构包含以下信息：
  + `propertyId` – 从中提取值的属性的 ID。如果属性是在当前模型中定义的（而不是在层次结构的模型中定义的），您可以使用属性的名称而不是其 ID。
  + `hierarchyId` – （可选）从中查询属性的子资产的层次结构的 ID。您可以使用层次结构定义的名称而不是其 ID。如果省略此值，则会在当前模型中 AWS IoT SiteWise 找到该属性。
**重要**  <a name="metric-input-rules"></a>
指标只能输入整型、双精度、布尔或字符串类型的属性。布尔值转换为 `0`（假）和 `1`（真）。  
如果您在指标表达式中定义任何指标输入变量，这些输入必须与输出指标具有同一个时间间隔。  
<a name="formula-output-rules"></a>公式表达式只能输出双精度值或字符串值。嵌套表达式可以输出其他数据类型，例如字符串，但整个公式的计算结果必须为数字或字符串。您可以使用 [jp 函数](expression-string-functions.md#jp-definition)将字符串转换为数字。布尔值必须为 1（真）或 0（假）。有关更多信息，请参阅 [未定义值、无限值和溢出值](expression-tutorials.md#undefined-values)。
+ <a name="asset-property-unit-cli"></a>`unit` – （可选）属性的科学单位，例如毫米或摄氏度。

**Example 指标定义示例**  
以下示例演示一个指标属性，该属性可聚合资产的温度测量值数据，以计算每小时最高温度（以华氏度为单位）。此对象是包含[指标[AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.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 输入关联资产数据的指标定义示例**  
以下示例演示了一个指标属性，该属性汇总了多台风力涡轮机的平均功率数据，以计算风电场的总平均功率。此对象是包含[指标[AssetModelProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelProperty.html)](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_Metric.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"
      }
    ],
    ...
}
```