azure-data-explorer - 使用按 Z 排序的 top N 对 X 和 Y 进行汇总
问题描述
Kusto 允许我根据某些规则排序的表的行的顶部创建在某些列上切片的汇总统计信息。例如,如果我想使用最后 100 行计算每个位置的平均分数,我可以写
T | top 100 by Time | summarize avg(Score) by Location
但我希望顶部适用于汇总的每个箱。例如,我想计算每个位置可用的最后 10 个分数的平均值。我不明白我怎么能做到这一点。起初我以为我可以使用 top-nested 因为它只返回前 n 个位置;我想返回所有位置的记录,并使用每个位置的前 n 来计算聚合。我愿意通过有效地为每个位置重复查询的方法来做到这一点,但我需要将最终结果放在一个包含 Location 和 AvgOfLast10Scores 列的表中。
解决方案
这是一个选项(在此示例中,它将进行最后两次测量):
datatable(Time:datetime, Location: string, Score:int)[datetime(2021-01-10), "a", 6,
datetime(2021-01-10 01:00), "a", 7,
datetime(2021-01-10 02:00), "a", 8,
datetime(2021-01-10 03:00), "a", 10,
datetime(2021-01-10), "b", 10,
datetime(2021-01-10 01:00), "b", 20,
datetime(2021-01-10 02:00), "b", 30,
datetime(2021-01-10 03:00), "b", 40]
| order by Location asc, Time desc
| extend rowNumber = row_number(0, Location != prev(Location))
| where rowNumber <= 1
| summarize avg(Score) by Location
推荐阅读
- python - python stopable sched 在单独的线程中
- r - 在 R 中,Cut 在 1 到 9 和 0.1 到 0.9 的范围内产生不等的间隔
- amazon-ses - 如何将 MailAttachment 转换为 MimeKit 附件
- linux - Bash 脚本 - 无法解决代码“帮助”错误
- server - NVIDIA-SMI 失败,因为它无法与 NVIDIA 驱动程序通信。确保已安装并运行最新的 NVIDIA 驱动程序
- azure - 获取从 Visual Studio 作为 zip 发布的函数应用的 API 定义
- javascript - 未捕获的 RangeError:超过最大调用堆栈大小..禁用并检查不工作
- python - 如何在 django.test.TestCase 类设置函数中使用 pytest `request.config`
- reactjs - 反应最终形式。如何从组件状态设置字段值
- java - Java 后缀运算符优先级