本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
时间函数
您可以使用时态函数根据数据点的时间戳返回值。
在指标中使用时态函数
仅在指标中,您可以使用以下函数根据数据点的时间戳返回值。
时态函数参数必须是来自本地资产模型或嵌套表达式的属性。这意味着您不能在时态函数中使用子资产模型的属性。
可以在时态函数中使用嵌套表达式。当您使用嵌套表达式时,以下规则适用:
-
每个参数只能有一个变量。
例如
latest( t*9/5 + 32 )
,支持。 -
参数不能是聚合函数。
例如,
first( sum(x) )
不支持。
函数 | 描述 |
---|---|
|
返回给定变量在当前时间间隔内具有最早时间戳的值。 |
|
返回给定变量在当前时间间隔内具有最晚时间戳的值。 |
|
返回给定变量的值,该值具有当前时间间隔之前的最早时间戳。 如果输入属性在其历史记录中具有至少一个数据点,则此函数将计算每个时间间隔的数据点。 |
|
返回当前时间间隔结束前带有最新时间戳的给定变量的值。 如果输入属性在其历史记录中具有至少一个数据点,则此函数将计算每个时间间隔的数据点。 |
|
返回给定变量在当前时间间隔内为正值的时间(以秒为单位)。您可以使用比较函数创建变换属性供 例如,如果 此函数不支持将指标属性作为输入变量。 如果输入属性在其历史记录中具有至少一个数据点,则此函数将计算每个时间间隔的数据点。 |
下图显示 Amazon IoT SiteWise 如何计算相对于当前时间间隔的时间函数 first
、 last
、earliest
和 latest
。

例 statetime 使用情景示例
考虑这样一个使用情景示例,您有一个具有以下属性的资产:
-
Idle
— 测量值为0
或1
。当该值为时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,机器处于活动状态(
Idle
为0
)。 -
在 2:00:30 PM,机器处于空闲状态(
Idle
为1
)。 -
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
下表显示了x
y
、和z
从上午 9:00 到上午 9:15 的值。
-
此示例假设测量值按时间顺序到达。例如,上午 9:00 的
x
值在上午 9:05x
的值之前到达。 -
如果上午 9:05 的数据点在上午 9:00 的数据点之前到达,则
z
不计算在上午 9:05。 -
如果上午 9:05
x
的值早于上午 9:00x
的值到达,并且的值按时间顺序y
到达,则z
等于上22 = 20 + 1 + 1
午 9:05。
09:00 | 04:055 AM | 04:10 | 04:15 | |
---|---|---|---|---|
|
10 |
20 |
30 |
|
|
1 |
2 |
3 |
|
|
|
23 = 20 + 2 + 1
|
25 = 20 + 3 + 2
|
36 = 30 + 3 + 3
|