本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
时间函数
您可以使用时态函数根据数据点的时间戳返回值。
在度量中使用时态函数
In指标仅限使用以下函数,这些函数根据数据点的时间戳返回值。
时态函数参数必须是来自局部资源模型或嵌套表达式的属性。这意味着您不能在时态函数中使用子资产模型中的属性。
可以在时态函数中使用嵌套表达式。使用嵌套表达式,以下规则将适用:
-
每个参数只能有一个变量。
例如,
latest( t*9/5 + 32 )支持。 -
参数不能是聚合函数。
例如,
first( sum(x) )不支持 。
| 函数 | 描述 |
|---|---|
|
|
返回给定变量在当前时间间隔内具有最早时间戳的值。 |
|
|
返回给定变量在当前时间间隔内具有最晚时间戳的值。 |
|
|
返回给定变量在当前时间间隔之前具有最早时间戳的值。 如果输入属性在其历史记录中具有至少一个数据点,则此函数将计算每个时间间隔的数据点。 |
|
|
返回给定变量在当前时间间隔结束之前具有最晚时间戳的值。 如果输入属性在其历史记录中具有至少一个数据点,则此函数将计算每个时间间隔的数据点。 |
|
|
返回给定变量在当前时间间隔内为正值的时间(以秒为单位)。您可以使用比较函数为创建变换属性 例如,如果您有一个 此函数不支持将指标属性作为输入变量。 如果输入属性在其历史记录中具有至少一个数据点,则此函数将计算每个时间间隔的数据点。 |
下图显示 Amazon IoT SiteWise 如何计算相对于当前时间间隔的时间函数 first、 last、earliest 和 latest。
考虑这样一个使用情景示例,您有一个具有以下属性的资产:
-
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,机器处于活动状态(
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 秒。
-
在变换中使用时态函数
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()多变量变换中的函数。例如,您有两个名为x和y,还有一个转换,z,等于x + y +
pretrigger(y). 下表显示了的值x、y, 和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 | |
|---|---|---|---|---|
|
|
10 |
20 |
30 |
|
|
|
1 |
2 |
3 |
|
|
|
|
23 = 20 + 2 + 1
|
25 = 20 + 3 + 2
|
36 = 30 + 3 + 3
|