Using prev() https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/prevfunction函数我可以单独访问前几行。
mytable
| sort by Time asc
| extend mx = max_of(prev(Value, 1), prev(Value, 2), prev(Value, 3))
如何定义一个窗口以更通用的方式聚合?假设我之前的行中最多需要 100 个值。如何编写不需要重复的查询prev()
100次?
可以通过组合来实现scan https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/scan-operator and 系列统计动态() https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/series-stats-dynamicfunction.
scan
用于创建每个记录的最后 x 值的数组。
series_stats_dynamic()
用于获取每个数组的最大值。
// Data sample generation. Not part of the solution
let mytable = materialize(range i from 1 to 15 step 1 | extend Time = ago(1d*rand()), Value = toint(rand(100)));
// Solution starts here
let window_size = 3; // >1
mytable
| order by Time asc
| scan declare (last_x_vals:dynamic)
with
(
step s1 : true => last_x_vals = array_concat(array_slice(s1.last_x_vals, -window_size + 1, -1), pack_array(Value));
)
| extend toint(series_stats_dynamic(last_x_vals).max)
i |
Time |
Value |
last_x_vals |
max |
5 |
2022-06-10T11:25:49.9321294Z |
45 |
[45] |
45 |
14 |
2022-06-10T11:54:13.3729674Z |
82 |
[45,82] |
82 |
2 |
2022-06-10T13:25:40.9832745Z |
44 |
[45,82,44] |
82 |
1 |
2022-06-10T17:38:28.3230397Z |
24 |
[82,44,24] |
82 |
7 |
2022-06-10T18:29:33.926463Z |
17 |
[44,24,17] |
44 |
15 |
2022-06-10T19:54:33.8253844Z |
9 |
[24,17,9] |
24 |
3 |
2022-06-10T20:17:46.1347592Z |
43 |
[17,9,43] |
43 |
12 |
2022-06-11T00:02:55.5315197Z |
94 |
[9,43,94] |
94 |
9 |
2022-06-11T00:11:18.5924511Z |
61 |
[43,94,61] |
94 |
11 |
2022-06-11T00:39:40.6858444Z |
38 |
[94,61,38] |
94 |
4 |
2022-06-11T03:54:59.418534Z |
84 |
[61,38,84] |
84 |
10 |
2022-06-11T05:55:38.2904242Z |
6 |
[38,84,6] |
84 |
6 |
2022-06-11T07:25:43.3977923Z |
36 |
[84,6,36] |
84 |
13 |
2022-06-11T09:36:08.7904844Z |
28 |
[6,36,28] |
36 |
8 |
2022-06-11T09:51:45.2225391Z |
73 |
[36,28,73] |
73 |
Fiddle https://dataexplorer.azure.com/clusters/help/databases/Samples?query=H4sIAAAAAAAAA01Ry07DMBC8R8o/zNGG0tRCXFrRE2cuIK7RNllaC8eO7C1tUD8e53GoL/Y+ZndmXFV4IyEk6nrHOLLnSGKDX+M9CHqKgvANOTFScOexUhaOBd0gdMiIV3QkHC05+8cqkj8yLL5j6GAgAeYFSbjPwQ18FfYtPm034ugYlGkfMqRVWq+AL3LnsSDBelFT3mw2WutdWVQVPpb9eV5mlXDiyDOXi/VtuNQpM8jw5x1y996UxcKxLG4AQmw54jDM6yk1czo15NFy4ygylKMk9bX+JZe27eCps41GWeS+vEROy1PN13gmbclgC4kj+T3uRowiY6ShboJvSNQcJGcbVsms7zpXeLoX8QiTMyab0lPzU084NdkzmTEu1jP9xdLZspT/gVOd/ZFUL/TvJel1R1f9Dzc2c5zzAQAA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)