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计算,如果您希望按设备计算,则该设备应该是"会话id"的一部分;通过";子句和会话id不应是聚合的一部分。

如果您想按设备查找不同的会话计数,请使用以下方法:

Events
| summarize dcount(sessionId) by deviceName 

相关内容

最新更新