公式表达式教程 - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

公式表达式教程

您可以按照这些教程在 Amazon IoT SiteWise 中使用公式表达式。

在公式中使用字符串

您可以对公式表达式中的字符串进行操作。您也可以从引用属性和测量属性的变量中输入字符串。

重要

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

Amazon IoT SiteWise 提供了可用于对字符串进行操作的以下公式表达式功能:

筛选数据点

您可以使用 if 函数筛选出不符合条件的数据点。if 函数计算条件并返回 truefalse 结果的不同值。您可以使用 无 常量if 函数的一个案例的输出,以丢弃该案例的数据点。

筛选出与条件匹配的数据点
  • 创建一个转换,该转换使用 if 函数定义一个条件,该条件检查条件是否满足,并以 result_if_trueresult_if_false 值的形式返回 none

例 示例:过滤掉水未沸腾的数据点

考虑您在其中有一个测量值的场景 temp_c,它提供水在机器中的温度(以摄氏度为单位)。您可以定义以下转换来过滤掉水未沸腾的数据点:

  • 转换:boiling_temps = if(gte(temp_c, 100), temp_c, none) – 如果温度大于或等于 100 摄氏度,则返回温度,否则不返回任何数据点。

对符合条件的数据点进行计数

您可以使用比较函数求和 来计算条件为真的数据点的数量。

计算与条件匹配的数据点
  1. 创建一个使用比较函数在另一个属性上定义筛选条件的转换。

  2. 创建一个汇总满足该条件的数据点的指标。

例 示例:计算水沸腾的数据点数量

考虑您在其中有一个测量值的场景 temp_c,它提供水在机器中的温度(以摄氏度为单位)。您可以定义以下转换和指标属性来计算水沸腾的数据点数量:

  • 转换:is_boiling = gte(temp_c, 100) – 如果温度大于或等于 100 摄氏度,则计算结果为返回 1,否则计算结果为返回 0

  • 指标:boiling_count = sum(is_boiling) – 返回水沸腾的数据点数量。

公式中的最新数据

Amazon IoT SiteWise 支持最长 7 天的延迟数据摄取。当 Amazon IoT SiteWise 收到延迟数据时,它重新计算在过去的时段中输入延迟数据的任何指标的现有值。这些重新计算会产生数据处理费用。

注意

在 Amazon IoT SiteWise 计算输入后期数据的属性时,它使用每个属性的当前公式表达式。

Amazon IoT SiteWise 为指标重新计算过去的时段后,它将替换该时段的前一个值。如果您为该指标启用了通知,Amazon IoT SiteWise 还会发出属性值通知。这意味着,您可以对您以前收到了通知的相同属性和时间戳收到新属性值更新通知。如果应用程序或数据湖使用属性值通知,则必须使用新值更新上一个值,以便其数据准确无误。

公式中的数据质量

在 Amazon IoT SiteWise 中,每个数据点都有一个质量代码,该代码可以是下列代码之一:

  • GOOD – 数据不受任何问题的影响。

  • BAD – 数据受传感器故障等问题的影响。

  • UNCERTAIN – 数据受传感器不准确等问题的影响。

Amazon IoT SiteWise 在计算转换和指标时仅使用 GOOD 质量数据。Amazon IoT SiteWise 仅输出 GOOD 质量数据以便成功进行计算。如果计算不成功,则 Amazon IoT SiteWise 不会为该计算输出数据点。如果计算生成未定义值、无限值或溢出值,则会发生这种情况。

有关如何查询数据和按数据质量筛选的更多信息,请参阅查询来自的数据 Amazon IoT SiteWise

未定义值、无限值和溢出值

某些公式表达式(如 x / 0sqrt(-1)log(0))计算在实数系统中未定义的值、无限值或超出 Amazon IoT SiteWise 支持的范围的值。当资产属性的表达式计算未定义、无限或溢出值时,Amazon IoT SiteWise 不会为该计算输出数据点。

如果将非数值作为公式表达式的结果进行计算,Amazon IoT SiteWise 也不会输出数据点。这意味着,如果您定义了一个计算字符串、数组或 无 常量的公式,则 Amazon IoT SiteWise 不会为该计算输出数据点。

例 示例

下面每个公式表达式都会产生一个 Amazon IoT SiteWise 无法用数字表示的值。Amazon IoT SiteWise 在计算这些公式表达式时不输出数据点。

  • x / 0 未定义。

  • log(0) 未定义。

  • sqrt(-1) 在实数系统中未定义。

  • "hello" + " world" 是一个字符串。

  • jp('{"values":[3,6,7]}', '$.values') 是一个数组。

  • temp 小于 300 时,if(gte(temp, 300), temp, none) 等于 none