【发布时间】:2021-07-19 18:13:46
【问题描述】:
我有一个这样的单服务器数据集。因此,多个服务器在一个 kusto 表中都有多个这样的记录,例如 Table1.
TimeStamp State Servername Type
7/13/2021 Healthy abcdefgh Server
7/13/2021 Repair abcdefgh Server
7/14/2021 Repair abcdefgh Server
7/15/2021 Repair abcdefgh Server
7/15/2021 Healthy abcdefgh Server
7/15/2021 Healthy abcdefgh Server
7/16/2021 Repair abcdefgh Server
7/17/2021 Repair abcdefgh Server
7/17/2021 Repair abcdefgh Server
7/17/2021 Repair abcdefgh Server
7/18/2021 Repair abcdefgh Server
7/18/2021 Repair abcdefgh Server
7/19/2021 Repair abcdefgh Server
7/19/2021 Repair abcdefgh Server
我需要知道一次停留在修复状态超过 10 天的服务器列表。 (查询不应该添加之前的修复状态时间,因为上面的服务器正在修复并恢复健康)。只需要连续的修复时间。 有人可以帮忙吗? 我进行了以下查询,但这并没有按预期工作。
Table1
| order by TIMESTAMP desc
| extend prevstate = prev(State)
| where prevstate == State
| summarize arg_max(TIMESTAMP,*) by Servername //summarizing the top time//
| extend endtime = TIMESTAMP //assigning the top time//
| join kind= innerunique (Table1) //joining same table to find the startdate//
on Servername
| order by TIMESTAMP desc
| extend prevstate = prev(State)
| where prevstate == State
| summarize arg_min(TIMESTAMP,*) by Servername //summarizing the start time//
| extend starttime= TIMESTAMP
| extend Duration = datetime_diff('day',endtime,starttime)
| project Server, State, Duration
【问题讨论】: