如何在Spotfire或MySql中计算设备停止时间

时间:2018-08-04 15:09:34

标签: mysql calculated-columns spotfire

我想计算设备的停止时间。
如果DateTime中的Class(Alarm=TRUE)=Class(Working=FALSE)是同一设备的
然后Stopped Time=Working(TRUE)-Working(FALSE)购买该设备。

image

2 个答案:

答案 0 :(得分:1)

以下解决方案取决于您描述数据的方式的一致性。对此的任何偏离都可能导致您找到(非常)不同的解决方案。

首先使用“ OVER”语句查找下一个“日期和时间”值:

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

注意:我使用“第一”作为汇总,但没关系,因为只返回一个值。

接下来,找出时间差:

[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)

Example Table

答案 1 :(得分:0)

好吧,我认为当您说设备停止时间时,是指停机时间,即设备不工作或处于空闲状态的时间。

深思熟虑

准确测量此时间段取决于几个因素,

由于某种原因,设备每次启动和停止时都会报告/存储时间戳。如果不是,那么就很难跟踪,例如,如果设备报告启动时间并且只是在两者之间挂起或停电,将会发生什么情况,似乎设备正在工作,但实际上却没有。

现在假设设备报告了开始和停止时间,并且还可以定期发送设备数据,例如,每1分钟您可以在计算停机时间时执行以下操作。

如果设备处于启动状态,则

当前时间-开始时间=总时间

样本总数(每1分钟收到一次)=设备工作的总分钟数

总时间-数据采样数=空闲时间。

希望是有帮助的。