时间函数 - Amazon IoT SiteWise
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

时间函数

您可以使用时态函数根据数据点的时间戳返回值。

在度量中使用时态函数

In指标仅限使用以下函数,这些函数根据数据点的时间戳返回值。

时态函数参数必须是来自局部资源模型或嵌套表达式的属性。这意味着您不能在时态函数中使用子资产模型中的属性。

可以在时态函数中使用嵌套表达式。使用嵌套表达式,以下规则将适用:

  • 每个参数只能有一个变量。

    例如,latest( t*9/5 + 32 )支持。

  • 参数不能是聚合函数。

    例如,first( sum(x) )不支持 。

函数 描述

first(x)

返回给定变量在当前时间间隔内具有最早时间戳的值。

last(x)

返回给定变量在当前时间间隔内具有最晚时间戳的值。

earliest(x)

返回给定变量在当前时间间隔之前具有最早时间戳的值。

如果输入属性在其历史记录中具有至少一个数据点,则此函数将计算每个时间间隔的数据点。

latest(x)

返回给定变量在当前时间间隔结束之前具有最晚时间戳的值。

如果输入属性在其历史记录中具有至少一个数据点,则此函数将计算每个时间间隔的数据点。

statetime(x)

返回给定变量在当前时间间隔内为正值的时间(以秒为单位)。您可以使用比较函数为创建变换属性statetime函数以使用。

例如,如果您有一个Idle那就是财产0要么1,您可以使用以下表达式计算每个时间间隔的闲置时间:IdleTime = statetime(Idle). 有关更多信息,请参阅 。statetime 使用情景示.

此函数不支持将指标属性作为输入变量。

如果输入属性在其历史记录中具有至少一个数据点,则此函数将计算每个时间间隔的数据点。

下图显示 Amazon IoT SiteWise 如何计算相对于当前时间间隔的时间函数 firstlastearliestlatest


                  Amazon IoT SiteWise时间函数根据数据点的时间戳返回数据点。

statetime 使用情景示例

考虑这样一个使用情景示例,您有一个具有以下属性的资产:

  • Idle-一个为指标的0要么1. 当该值为时 1,机器处于空闲状态。

  • Idle Time— 使用公式的量度statetime(Idle),以秒为单位计算计算机器在每分钟内处于空闲状态的时间(以秒为单位)。

Idle 属性具有以下数据点。

时间戳 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

Amazon IoT SiteWise 每分钟从 Idle 的值计算一次 Idle Time 属性的值。此计算完成后,Idle Time 属性将具有以下数据点。

时间戳 2:00:00 PM 2:01:00 PM 2:02:00 PM 2:03:00 PM 2:04:00 PM
Idle Time 不适用 30 60 45 0

Amazon IoT SiteWise 在每分钟结束时执行以下 Idle Time 计算。

  • At 2:00 PM (for 1:59 PM to 2:00 PM)

    • 在 2:00 PM 之前没有 Idle 数据,因此计算不会得出任何数据点。

  • At 2:01 PM (for 2:00 PM to 2:01 PM)

    • 在 2:00:00 PM,机器处于活动状态(Idle0)。

    • 在 2:00:30 PM,机器处于空闲状态(Idle1)。

    • Idle 在 2:01:00 PM 的时间间隔结束之前没有再次变化,因此 Idle Time 是 30 秒。

  • At 2:02 PM (for 2:01 PM to 2:02 PM)

    • 在 2:01:00 PM,机器处于空闲状态(基于 2:00:30 PM 的上一个数据点)。

    • 在 2:01:15 PM,机器仍处于空闲状态。

    • Idle 在 2:02:00 PM 的时间间隔结束之前没有再次变化,因此 Idle Time 是 60 秒。

  • At 2:03 PM (for 2:02 PM to 2:03 PM)

    • 在 2:02:00 PM,机器处于空闲状态(基于 2:01:15 PM 的上一个数据点)。

    • 在 2:02:45 PM,机器处于活动状态。

    • Idle 在 2:03:00 PM 的时间间隔结束之前没有再次变化,因此 Idle Time 是 45 秒。

  • At 2:04 PM (for 2:03 PM to 2:04 PM)

    • 在 2:03:00 PM,机器处于活动状态(基于 2:02:45 PM 的上一个数据点)。

    • Idle 在 2:04:00 PM 的时间间隔结束之前没有再次变化,因此 Idle Time 是 0 秒。

在变换中使用时态函数

In变换只有,你可以使用pretrigger()函数来检索GOOD在触发当前转换计算的属性更新之前变量的质量值。

以制造商使用的例子为例Amazon 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 纪元时间格式返回计算机处于清理状态的时间长度(以秒为单位)。有关更多信息,请参阅 。条件函数timestamp()function.

如果机器处于清洁状态的时间超过预期,制造商可能会对机器进行调查。

您也可以使用pretrigger()多变量变换中的函数。例如,您有两个名为xy,还有一个转换,z,等于x + y + pretrigger(y). 下表显示了的值xy, 和z从上午 9:00 到上午 9:15

注意
  • 此示例假定测量值按时间顺序到达。例如,值x上午 09:00 之前的值到达x上午 9:05

  • 如果上午 9:05 的数据点早于 9:00 AM 的数据点到达,z不是在上午 9:05 计算的

  • 如果x因为早上 9:05 在值之前到达x对于上午 09:00 和的值y按时间顺序到达,z等于22 = 20 + 1 + 1上午 9:05

09:00 AM 09:04AM 09:10 AM 09:15 AM

x

10

20

30

y

1

2

3

z = x + y + pretrigger(y)

y在 09:00 AM 之前没有收到任何数据点。因此,z不是在上午 09:00 计算的

23 = 20 + 2 + 1

pretrigger(y)等于 1。

25 = 20 + 3 + 2

x没有收到新的数据点。pretrigger(y)等于 2。

36 = 30 + 3 + 3

y没有收到新的数据点。因此,pretrigger(y)上午 9:15 等于 3。