我目前正在评估Azure Application Insights中的一个用例,但我愿意使用任何其他最适合的基础架构框架。
所以基本上我有一个桌面应用程序记录一些事件或痕迹(我不确切知道它应该是哪一个)。事件(或跟踪?)示例
| timestamp | state | user |
------------------------------------------
| yyyy-mm-dd 12:00 | is_at_home | John |
| yyyy-mm-dd 15:00 | is_at_work | John |
| yyyy-mm-dd 18:00 | is_outside | John |
在新事件到来之前,用户被认为处于接收到的最后一个状态。
我需要提取数据来回答这样的问题:
- 我想看看John在家的总时间是在增加还是在减少。
- 我想知道用户在哪些状态下度过的时间最多。
- 我想要状态"is_at_work"的平均持续时间。随着时间的推移,它是下降还是上升。
那么,应用程序洞察力可以输出这种分析吗?如果不是,我应该使用哪个架构/平台?我是否使用了正确的关键词来描述我想要的?
谢谢
人工智能/日志分析查询语言(kql)支持所有类似的事情。诀窍是让你的查询完全正确,在这里你必须弄清楚你需要做什么,这样你才能计算行之间的时间为&;state&;变化。
这是我的第一次尝试:
let fakeevents = datatable (timestamp: datetime, state: string, user: string ) [
datetime(2021-08-02 12:00), "is_at_home" , "John" ,
datetime(2021-08-02 15:00), "is_at_work" , "John",
datetime(2021-08-02 18:00), "is_outside" , "John",
datetime(2021-08-02 11:00), "is_at_home" , "Jim" ,
datetime(2021-08-02 12:00), "is_at_work" , "Jim",
datetime(2021-08-02 13:00), "is_outside" , "Jim",
];
fakeevents | partition by user (
order by user, timestamp desc |
extend duration = prev(timestamp, 1, now()) - timestamp
)
让我:
<表类>时间戳 状态用户时间 tbody><<tr>2021 - 08 - 02 t18:00:00z is_outside 约翰 06:20:23.1748874 2021 - 08 - 02 t15:00:00z is_at_work 约翰 03:00:00 2021 - 08 - 02 t12:00:00z is_at_home 约翰 03:00:00 2021 - 08 - 02 t13:00:00z is_outside 吉姆 11:25:14.6912472 2021 - 08 - 02 t12:00:00z is_at_work 吉姆 01:00:00 2021 - 08 - 02 t11:00:00z is_at_home 吉姆 01:00:00 表类>