设备每隔一段时间上报一次状态。把每台设备按时间顺序相邻、状态相同的上报合并成一个状态段。
- 按
device分别处理,组内按ts升序(同一设备的ts不重复;输入行的顺序是乱的)。 - 相邻两条状态相同就属于同一段;状态变了就开始新段。同一状态隔开后再次出现,算新的一段(
ok, err, ok是 3 段)。 status可能为 null,表示“未知”:null 视为一种独立的状态——相邻的多个 null 合并成一段,null 与任何非 null 状态都不同。- 每段输出一行:
start_ts是段内第一条上报的时间,end_ts是段内最后一条上报的时间(只有一条时两者相同)。
输入
status_log(device, ts, status):device、status为 string,ts为 datetime
输出
列为 device, status, start_ts, end_ts,null 段的 status 输出 null。行顺序不限。