如何解决KQL 性能 - 总结所有或使用任何
我的事件记录具有唯一的会话 ID、设备名称以及有关设备如何发送事件的更多详细信息。
我想计算会话中的事件。并获取每个计数的设备信息。
选项 1:将所有设备列添加到 GroupExpression
Events | summerize count() by sessionId,deviceName,deviceMac,...
选项 2:由于 sessionId 对于所有设备都是唯一的,我可以从 sessionId 组中获取任何设备名称。
Events | summerize count(),deviceName=any(deviceName),deviceMac=any(deviceMac),... by sessionId
这两个选项之间有性能差异吗?
我已经在我的数据集(~1M 记录)上尝试过这个,我没有发现执行时间有任何重大差异。 谢谢
解决方法
首选第二个选项,因为聚合键较小,并且聚合键的大小会影响内存消耗并可能影响 CPU。
作为旁注,您的查询不计算每个设备的事件,而是按会话 ID,如果您希望按设备计算,则该设备应该是“by”子句的一部分,而会话 ID 不应该是聚合。
如果您想按设备查找不同的会话数,请使用以下命令:
Events
| summarize dcount(sessionId) by deviceName
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。