我想计算设备的停止时间。
如果DateTime
中的Class(Alarm=TRUE)=Class(Working=FALSE)
是同一设备的
然后Stopped Time=Working(TRUE)-Working(FALSE)
购买该设备。
答案 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)
答案 1 :(得分:0)
好吧,我认为当您说设备停止时间时,是指停机时间,即设备不工作或处于空闲状态的时间。
深思熟虑
准确测量此时间段取决于几个因素,
由于某种原因,设备每次启动和停止时都会报告/存储时间戳。如果不是,那么就很难跟踪,例如,如果设备报告启动时间并且只是在两者之间挂起或停电,将会发生什么情况,似乎设备正在工作,但实际上却没有。
现在假设设备报告了开始和停止时间,并且还可以定期发送设备数据,例如,每1分钟您可以在计算停机时间时执行以下操作。
如果设备处于启动状态,则
当前时间-开始时间=总时间
样本总数(每1分钟收到一次)=设备工作的总分钟数
总时间-数据采样数=空闲时间。
希望是有帮助的。