You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kusto中按时间统计重复ID含指定URL的情况?

Kusto查询实现:筛选非唯一ID并统计特定URL请求次数

需求说明

  1. 从给定的URL请求数据集中,筛选出存在多行记录的非唯一Id
  2. 基于这些非唯一Id,按指定时间单位统计其中URL为internal-url-predefined的请求次数

完整实现查询

// 第一步:筛选非唯一Id并保存为临时表,供后续复用
let non_unique_ids = datatable(Id:string, Datetime:datetime, URL:string, country:string)
[
    '1', datetime(2018-10-16 00:00), 'URL1', '',
    '1', datetime(2018-10-16 00:01), 'internal-url-predefined', '',
    '2', datetime(2018-10-16 00:02), 'URL2', '',
    '3', datetime(2018-10-16 00:03), 'URL3', '',
    '4', datetime(2018-10-16 00:03), 'URL4', '',
    '4', datetime(2018-10-16 00:03), 'internal-url-predefined', '',
]
| summarize row_count = count() by Id
| where row_count > 1
| project Id;

// 第二步:复用临时表数据,按时间单位统计目标URL请求次数
datatable(Id:string, Datetime:datetime, URL:string, country:string)
[
    '1', datetime(2018-10-16 00:00), 'URL1', '',
    '1', datetime(2018-10-16 00:01), 'internal-url-predefined', '',
    '2', datetime(2018-10-16 00:02), 'URL2', '',
    '3', datetime(2018-10-16 00:03), 'URL3', '',
    '4', datetime(2018-10-16 00:03), 'URL4', '',
    '4', datetime(2018-10-16 00:03), 'internal-url-predefined', '',
]
| where Id in (non_unique_ids)
| where URL == 'internal-url-predefined'
| summarize request_count = count() by bin(Datetime, 1m) // 可替换为1h、1d等调整时间粒度

结果复用方式

通过Kusto的let语句将第一步筛选出的非唯一Id集合保存为临时表non_unique_ids,后续查询直接使用where Id in (non_unique_ids)引用该集合,避免重复执行筛选逻辑,提升查询效率。

用到的Kusto特性

  • let语句:定义临时表/变量,实现查询逻辑的模块化复用,简化代码结构。
  • summarize运算符:按指定维度分组聚合数据,分别用于统计每个Id的行数、按时间粒度统计请求次数。
  • bin()函数:将datetime类型数据按指定时间粒度(分钟/小时/天等)分组,满足按时间单位统计的需求。
  • in运算符:关联临时表数据,快速筛选出属于非唯一Id的记录。

内容的提问来源于stack exchange,提问作者shadyabhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 01:45:35