我不完全确定您是否总是想从特定页面进行跟踪,但如果您正在寻找平均值,则无需担心单个页面的时间安排。
如果您正在寻找整个站点的平均页面时间,那么您只需要会话处于活动状态的最早时间、上次时间以及在该时间段内访问的页面数。将时间差除以页数得出平均值。然后,您可以再次调用summarize
以获取总体平均值。
注意 - 我从页数中减去 1,因为我没有打开最后一页和它们离开之间的时间。
代码:
let userTiming = requests | summarize PageViews=count()-1, StartTime=min(timestamp), EndTime=max(timestamp) by session_Id;
userTiming
| extend AverageTime=datetime_diff('millisecond', EndTime, StartTime)/PageViews
//| summarize avg(AverageTime)
如果您正在根据用户的下一次浏览量来查找在特定页面上花费的时间,那么您最初将表连接到自身的想法还不错,但我们可以稍微不同地执行它以避免 < 连接。
- 获取仅包含给定页面视图的表。
- 仅根据会话 ID 将其加入请求表中。
- 将其过滤掉,以便我们只有在特定页面之后的请求。
- 使用 summarise 仅获取我们第一次浏览量之后的最小时间戳。
- 按会话 ID 获取平均差异
- 和以前一样,将
avg
函数与 . summarize
可以给你整体平均水平。
代码:
let startTime = requests | where name == "Function2" | project session_Id, startingTimestamp=timestamp;
let userTiming = requests
| join kind=inner (startTime) on $left.session_Id == $right.session_Id
| where timestamp > startingTimestamp
| summarize nextTimestamp=min(timestamp) by startingTimestamp, session_Id;
userTiming
| summarize AverageTime=avg(datetime_diff('millisecond', nextTimestamp, startingTimestamp)) by session_Id
//| summarize avg(AverageTime)