kusto 查询 - 如何按日期分组以及按名称分组

mas*_*san 6 kql azure-data-explorer

在下面的查询中,我查看了在给定日期范围内调用的第 80 个百分位中的一个 API (foo/bar1) 持续时间,以便我可以查看是否存在任何峰值或降级。(下图)

let dataset = requests 
| where name == "GET foo/bar1"
and timestamp between(datetime("2020-10-15") .. datetime('2020-10-28'));
dataset
| summarize loadTime = round(percentile(duration, 80)) by format_datetime(timestamp, 'yyyy-MM-dd')
| order by timestamp desc
Run Code Online (Sandbox Code Playgroud)

foo/bar1 的第一次查询 API 持续时间的结果

我面临的挑战是可能有多个 API(我的环境中大约有 150 个),我也希望获得这些 API 的第 80 个百分位数,但很难做到这一点,甚至很难做到。

mas*_*san 10

我可能会弄清楚这一点..通过从数据集中删除“名称”,然后将“名称”添加到汇总行末尾的分组部分。

let dataset = requests 
    |
    where timestamp between(datetime("2020-10-25") .. datetime('2020-10-28'));
    dataset
    | summarize loadTime = round(percentile(duration, 80)) by format_datetime(timestamp, 'yyyy-MM-dd'), name
    | order by timestamp desc 
Run Code Online (Sandbox Code Playgroud)

  • 按 `bin(timestamp, 1d)` 分组比 `format_datetime(timestamp, 'yyyy-MM-dd')` 分组更有效,并且会给出相同的结果(除了日期的格式会有点不同) ,但您可以使用“extend”运算符在下一行中更改其重新格式化)。 (14认同)