如何计算spotfire或mysql中的设备停止时间

piwo6bdm  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(621)

我要计算设备的停止时间。
如果 DateTimeClass(Alarm=TRUE)=Class(Working=FALSE) 对于相同的设备
那么 Stopped Time=Working(TRUE)-Working(FALSE) 为了那个设备。

qzlgjiam

qzlgjiam1#

我想当你说设备停止时间时,你指的是停机时间,即设备不工作或闲置的时间。
值得深思
准确测量这段时间取决于几个因素,
设备是否会在每次因任何原因启动和停止时报告/存储时间戳。如果没有,那么就很难跟踪,例如,如果设备报告启动时间,并且只是挂在中间或电源故障,那么会发生什么情况,看起来设备在工作,但实际上不是。
现在假设设备报告了启动和停止时间,并且可能还会定期发送设备数据,例如,每1分钟您可以在计算停机时间时执行以下操作。
如果设备处于启动状态,则
当前时间-开始时间=总时间
样本总数(每1分钟接收一次)=设备工作的总分钟数
所以总时间-数据样本数=空闲时间。
希望这是有意义的,是有帮助的。

lpwwtiir

lpwwtiir2#

下面的解决方案取决于您所描述的数据的一致性。任何偏离这一点的情况都可能会导致(非常)不同的解决方案。
首先使用“over”语句查找下一个日期和时间值:

[Next DateTime] = First([DateTime]) OVER (Next([DateTime],1))

注意:我使用'first'作为聚合,但是任何东西都可以,因为只返回一个值。
接下来,找出时间上的差异:

[Time Difference] = DateDiff("minute",[DateTime],[Next DateTime])

接下来,找到满足条件的行:

[Check Conditions] = (Concatenate([Class] & [Value]) OVER ([DateTime])="WorkingFalse, AlarmTrue") and ([Class]="Alarm")

最后,显示正确行的停止时间:

[Stopped Time] = If([Check Conditions],[Time Difference],NULL)

示例表

相关问题