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

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

时间函数

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

在指标中使用时态函数

仅在指标中,您可以使用以下函数根据数据点的时间戳返回值。

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

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

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

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

  • 参数不能是聚合函数。

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

函数 描述

first(x)

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

last(x)

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

earliest(x)

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

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

latest(x)

返回当前时间间隔结束前带有最新时间戳的给定变量的值。

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

statetime(x)

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

例如,如果 Idle 属性为 01,您可以使用以下表达式计算每个时间间隔的闲置时间:IdleTime = statetime(Idle)。有关更多信息,请参阅 statetime 使用情景示例

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

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

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


                  Amazon IoT SiteWise时态函数根据其时间戳返回数据点。
statetime 使用情景示例

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

  • Idle— 测量值为01。当该值为时 1,机器处于空闲状态。

  • Idle Time— 一种指标,它使用公式statetime(Idle)来计算每隔 1 分钟机器空闲的时间(以秒为单位)。

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 秒。

在变换中使用时态函数

仅在变换中,在启动当前变换计算的属性更新之前,您可以使用该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 () 函数。

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

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

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

  • 如果上午 9:05 的数据点在上午 9:00 的数据点之前到达,则z不计算在上午 9:05。

  • 如果上午 9:05x 的值早于上午 9:00x 的值到达,并且的值按时间顺序y到达,则z等于上22 = 20 + 1 + 1午 9:05。

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

x

10

20

30

y

1

2

3

z = x + y + pretrigger(y)

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

23 = 20 + 2 + 1

pretrigger(y)等于 1。

25 = 20 + 3 + 2

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

36 = 30 + 3 + 3

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