使用 KQL(Kusto 查询语言),如何将日期时间分组为数周(或 7 天的块)?

Using KQL (Kusto query language), how to group datetimes into weeks (or 7-day chunks)?

我是 运行 KQL(Kusto 查询语言)针对 Azure Application Insights 的查询。我有一些我想每周汇总的测量值。我想弄清楚如何将我的数据分成几周。

为了说明我所寻求的,这里有一个查询计算 daily duration 列的平均值。

requests 
| where timestamp > ago(7d)
| summarize 
    avg(duration)
    by 
        Date = format_datetime(timestamp, "yyyy-MM-dd")

这会产生类似这样的结果:

在上面我已经将日期时间转换为字符串,因此有效地将它们“向下舍入”到一天的精度。这可能很难看,但这是我能想到的将某一天的所有结果分组的最简单方法。使用相同的技术四舍五入到几个月或几年是微不足道的。

但是如果我想按周对日期时间进行分组怎么办?有什么好的方法吗?

我不在乎我的“周”是从星期一开始还是星期日开始,还是从 1 月 1 日开始还是其他什么。我只想将一组 KQL 日期时间分组为 7 天的块。我该怎么做?

提前致谢!

您似乎在寻找“bin()”函数:

requests 
| where timestamp > ago(7d)
| summarize 
    avg(duration)
    by 
        bin(timestamp, 1d) // one day, for 7 days change it to 7d

我发现我可以使用 week_of_year 函数按周数拆分日期时间:

requests 
| where timestamp > ago(30d)
| summarize 
    avg(duration)
    by 
        Week = week_of_year(timestamp)
| sort by Week