使用 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
我是 运行 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