转换数据(变换) - AWS IoT SiteWise

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

转换数据(变换)

转换是将资产属性的数据点从一种形式映射到另一种形式的数学表达式。转换表达式由资产属性变量、文字、运算符和函数组成。变换后的数据点与输入数据点有关 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。

制造商还创建了一个等于 if(eq(Part_Number, "BLT123") and (Bad_Count / (Good_Count + Bad_Count) > 0.1), "Caution", "Normal") 的转换 Quality_Monitor

此转换可监控为特定零件类型生产的不良零件的百分比。如果部件号为,BLT123且不良部件的百分比超过 10% (0.1),则转换将返回"Caution"。否则,转换将返回 "Normal"

注意
  • 如果 Part_Number 在其他测量之前收到新的数据点,则 Quality_Monitor 转换将使用新 Part_Number 值和最新的 Good_CountBad_Count 值。为避免错误,请在下次制造运行之前重置 Good_CountBad_Count

  • 如果您只想在所有变量都收到新的数据点后才计算表达式,请使用指标

定义变换(控制台)

在 AWS IoT SiteWise 控制台中为资产模型定义转换时,需要指定以下参数:

  • 名称 – 属性的名称。

  • 单位 – (可选)属性的科学单位,例如毫米或摄氏度。

  • 数据类型 - 转换的数据类型,可以是精度或 字符串

  • 外部 ID-(可选)这是用户定义的 ID。有关更多信息,请参阅《AWS IoT SiteWise 用户指南》中的 使用外部引用对象 IDs

  • 公式 – 转换表达式。转换表达式不能使用聚合函数或时间函数。要打开 auto complete 功能,请开始键入或按向下箭头键。有关更多信息,请参阅 使用公式表达式

    重要

    转换可以输入整型、双精度、布尔或字符串类型的属性。布尔值转换为 0(假)和 1(真)。

    转换必须输入一个或多个非特性属性。每次输入非特性属性接收新数据点时, AWS IoT SiteWise 都会计算一个新的转换数据点。新的属性值不会启动变换更新。资产属性数据API操作的请求速率也适用于转换计算结果。

    公式表达式只能输出双精度值或字符串值。嵌套表达式可以输出其他数据类型,例如字符串,但整个公式的计算结果必须为数字或字符串。您可以使用 jp 函数将字符串转换为数字。布尔值必须为 1(真)或 0(假)。有关更多信息,请参阅 未定义值、无限值和溢出值

有关更多信息,请参阅 创建资产模型(控制台)

定义变换 ()AWS CLI

使用为资产模型定义变换时 AWS IoT SiteWise API,需要指定以下参数:

  • name – 属性的名称。

  • unit – (可选)属性的科学单位,例如毫米或摄氏度。

  • dataType – 转换的数据类型,必须为 DOUBLESTRING

  • externalId—(可选)这是用户定义的 ID。有关更多信息,请参阅《AWS IoT SiteWise 用户指南》中的 使用外部引用对象 IDs

  • expression – 转换表达式。转换表达式不能使用聚合函数或时间函数。有关更多信息,请参阅 使用公式表达式

  • variables – 定义要在表达式中使用的资产的其他属性的变量列表。每个变量结构包含一个在表达式中使用的简单名称,以及一个指定哪个属性与该变量关联的 value 结构。value 结构包含以下信息:

    • propertyId – 要从中输入值的属性的 ID。您可以使用属性的名称而不是其 ID。

    重要

    转换可以输入整型、双精度、布尔或字符串类型的属性。布尔值转换为 0(假)和 1(真)。

    转换必须输入一个或多个非特性属性。每次输入非特性属性接收新数据点时, AWS IoT SiteWise 都会计算一个新的转换数据点。新的属性值不会启动变换更新。资产属性数据API操作的请求速率也适用于转换计算结果。

    公式表达式只能输出双精度值或字符串值。嵌套表达式可以输出其他数据类型,例如字符串,但整个公式的计算结果必须为数字或字符串。您可以使用 jp 函数将字符串转换为数字。布尔值必须为 1(真)或 0(假)。有关更多信息,请参阅 未定义值、无限值和溢出值

例 转换定义

以下示例演示了将资产的温度测量数据从摄氏度转换为华氏度的转换属性。此对象是包含变换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" } } ] } } } ... }