azure-application-insights - 使用历史数据查找高峰时间
问题描述
平均而言,我试图找出一天中哪些时间在应用程序上拥有最活跃的用户。数据包括时间戳和 ID。我将时间戳转换为日期 (M/d/yy) 列和小时 (HH:mm) 列,以便我可以按小时找到平均用户。
例如,如果 2019 年 2 月 17 日 15:00 有 6 个用户,2019 年 2 月 18 日 15:00 有 5 个用户,2019 年 2 月 19 日 15:00 有 4 个用户,则15:00 的平均用户数为 5。我想通过 15 分钟的 bin 查询每次从 0:00 到 23:45 的表,其中包含每次平均用户数。这是我到目前为止所尝试的,但是当我手动计算时,查询没有显示正确的结果:
Table
| where timestamp > datetime(2018-5-23)
| extend hourNum= format_datetime(bin(timestamp, time(15m)),"HH:mm")
| extend Date= format_datetime(timestamp, "M/d/yy")
| project timestamp, ID , Date, hourNum
| summarize avgUsers= (dcount(ID)*1.0)/dcount(Date) by hourNum
将不胜感激任何帮助,谢谢!
解决方案
这可能是由于根据此文档dcount
是实际不同计数的近似值:
句法
summarize dcount(Expr [, Accuracy])
论据
Expr:将用于聚合计算的表达式。
精度,如果指定,控制速度和精度之间的平衡(见注)。
- 0 = 最不准确和最快的计算。1.6% 错误
- 1 = 默认值,平衡精度和计算时间;大约 0.8% 的误差。
- 2 = 准确而缓慢的计算;大约 0.4% 的误差。
- 3 = 额外的准确和缓慢的计算;大约 0.28% 的误差。
- 4 = 超精确和最慢的计算;大约 0.2% 的误差。
您可以尝试使用 4 级准确度,这应该会使事情更接近手动计算。
或者,您可以尝试利用 double summarize
(甚至更慢但尽可能精确):
| summarize by ID, hourNum
| summarize count() by hourNum
然后,您可以加入 ID 计数和 DateCounthourNum
并进行划分。
总的来说,为了简单和足够好的精度,我建议使用更准确的 dcount。
推荐阅读
- python - 为日期范围内的每个值创建一个包含数组数据的 DataFrame
- python-3.x - 为什么诅咒中的窗口不更新?
- mysql - 如何获取不同的记录,但仅基于 MySQL 中的前 2 位数字
- python - 导入文件时出错:OSError: [WinError 126] The specified module could not be found
- javascript - 当事件侦听器中的计数器达到 0 时播放声音
- list - 使用 SwiftUI 和 macOS 创建带有标题的列表
- nlp - PyTorch - 稀疏张量没有步幅
- authorization - Identity Server 4 令牌过期 API 与 ClientApp
- python - 为什么要删除您更改数字的行中的第 8 个位置?
- android - React Native 导航和状态管理