计算跟踪或事件的Azure应用程序洞察中的平均时间跨度



我目前正在评估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:00zis_outside约翰06:20:23.17488742021 - 08 - 02 t15:00:00zis_at_work约翰03:00:002021 - 08 - 02 t12:00:00zis_at_home约翰03:00:002021 - 08 - 02 t13:00:00zis_outside吉姆11:25:14.69124722021 - 08 - 02 t12:00:00zis_at_work吉姆01:00:002021 - 08 - 02 t11:00:00zis_at_home吉姆01:00:00

最新更新