本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
转换数据(转换)
转换是将资产属性的数据点从一种形式映射到另一个形式的数学表达式。转换表达式由资产属性变量、文字、运算符和函数组成。转换后的数据点与输入数据点保持 one-to-one 关系。 Amazon IoT SiteWise每当任何输入属性收到新的数据点时,都会计算一个新的变换数据点。
例如,如果您的资产具有以摄氏度为单位的名为 Temperature_C
的温度测量流,您可以使用公式 Temperature_F = 9/5 * Temperature_C + 32
将每个数据点转换为华氏度。每次在Temperature_C
测量流中Amazon IoT SiteWise接收到数据点时,相应的Temperature_F
值都会在几秒钟内计算出来,并可作为Temperature_F
属性使用。
如果您的转换包含多个变量,则较早到达的数据点会立即启动计算。举一个例子,零件制造商使用变换来监控产品质量。制造商使用基于零件类型的不同标准,使用以下测量值来表示工艺:
-
Part_Number
-标识零件类型的字符串。 -
Good_Count
-一个整数,如果零件符合标准,则增加一。 -
Bad_Count
-一个整数,如果零件不符合标准,则增加一的整数。
制造商还创建了等于的转换 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_Count
和最新Bad_Count
值。为避免错误,请在下一次生产运行Bad_Count
之前重置Good_Count
。 -
如果您只想在所有变量都收到新数据点后才对表达式求值,请使用指标。
定义转换(控制台)
在 Amazon IoT SiteWise 控制台中为资产模型定义转换时,请指定以下参数:
-
名称-属性的名称。
-
公式-转换表达式。转换表达式不能使用聚合函数或时态函数。开始键入或按向下箭头键打开自动完成功能。有关更多信息,请参阅使用公式表达式:
重要 变换可以输入整数、双精度、布尔值或字符串类型的属性。布尔值转换为
0
(假)和1
(真)。变换必须输入一个或多个不是属性的属性以及任意数量的属性属性。 Amazon IoT SiteWise每当不是属性的输入属性收到新的数据点时,都会计算一个新的变换数据点。新属性值不会触发转换更新。资产属性数据 API 操作的相同请求率适用于转换计算结果。
公式表达式只能输出双精度值或字符串值。嵌套表达式可以输出其他数据类型,例如字符串,但整个公式的计算结果必须为数字或字符串。您可以使用 jp 函数将字符串转换为数字。布尔值必须为 1(真)或 0(假)。有关更多信息,请参阅未定义值、无限值和溢出值:
-
单位-(可选)属性的科学单位,例如 mm 或摄氏度。
-
数据类型-转换的数据类型,可以是双精度或字符串。
有关更多信息,请参阅创建资产模型(控制台):
例 转换
以下示例演示了将资产的温度测量数据从摄氏度转换为华氏度的转换属性。

例 包含三个变量的转换定义
以下示例演示了一个变换属性,如果超过 10% 的 BLT123 部件不符合标准,则该属性会返回警告消息 ("Caution"
)。否则,它会返回一条信息消息 ("Normal"
)。

定义转换 (CLI)
使用 Amazon IoT SiteWise API 为资产模型定义转换时,请指定以下参数:
-
name
— 物业的名称。 -
dataType
— 转换的数据类型,必须为DOUBLE
或STRING
。 -
expression
— 转换表达式。转换表达式不能使用聚合函数或时态函数。有关更多信息,请参阅使用公式表达式: -
variables
— 定义要在表达式中使用的资产其他属性的变量列表。每个变量结构包含一个在表达式中使用的简单名称,以及一个指定哪个属性与该变量关联的value
结构。value
结构包含以下信息:-
propertyId
— 用于输入值的属性的 ID。您可以使用属性的名称而不是其 ID。
重要 变换可以输入整数、双精度、布尔值或字符串类型的属性。布尔值转换为
0
(假)和1
(真)。变换必须输入一个或多个不是属性的属性以及任意数量的属性属性。 Amazon IoT SiteWise每当不是属性的输入属性收到新的数据点时,都会计算一个新的变换数据点。新属性值不会触发转换更新。资产属性数据 API 操作的相同请求率适用于转换计算结果。
公式表达式只能输出双精度值或字符串值。嵌套表达式可以输出其他数据类型,例如字符串,但整个公式的计算结果必须为数字或字符串。您可以使用 jp 函数将字符串转换为数字。布尔值必须为 1(真)或 0(假)。有关更多信息,请参阅未定义值、无限值和溢出值:
-
-
unit
—(可选)属性的科学单位,例如 mm 或摄氏度。
例 转换
以下示例演示了将资产的温度测量数据从摄氏度转换为华氏度的转换属性。此对象是包含变换AssetModelProperty的示例。您可以将此对象指定为 CreateAssetModel 请求负载的一部分,以创建转换属性。有关更多信息,请参阅创建资产模型 (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" } } ] } } }...
}