【问题标题】:KQL performance - summarize all or use anyKQL 性能 - 总结所有或使用任何
【发布时间】:2021-05-11 19:27:22
【问题描述】:

我有两种查询数据的选项,从性能角度来看,哪一种更受欢迎?

我的事件记录具有唯一的会话 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 记录)上尝试过这个,我没有发现执行时间有任何重大差异。 谢谢

【问题讨论】:

    标签: azure azure-data-explorer kql


    【解决方案1】:

    首选第二个选项,因为聚合键较小,而且聚合键的大小会影响内存消耗,并可能影响 CPU。

    附带说明,您的查询不计算每个设备的事件,而是按会话 ID,如果您希望按设备计算,则设备应该是“by”子句的一部分,会话 ID 不应该是聚合。

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

     Events
     | summarize dcount(sessionId) by deviceName 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      相关资源
      最近更新 更多