检查为定义的时间窗口的阈值限制之间的值-KQL查询

发布于 2025-01-23 22:18:20 字数 2303 浏览 4 评论 0原文

我想在kusto中​​写一个查询,该查询检查汽车的速度是否始终介于一定速度限制之间(例如B/W 100和150 km/h)的窗口为5分钟。任何潜在客户均应高度赞赏。

以下数据集可以用作示例:

时间戳速度温度
2022-01-01 00:01:00.0000000142.525.5
2022-01-01-01 00:02:00.0000000133.225.4
20222-01-01-01-01-01-01-01-01-01 00:0.00.00000000000124.8
25.6 2022222222222 -01-01 00:04:00.0000000115.325.5
2022-01-01 00:05:00.000000098.425.4
2022-01-01 00:06:00.0000000106.326.3
2022-01-01 00:07:00.0000000119.626.5
2022-01 -01 00:08:00.0000000134.725.4
2022-01-01 00:09:00.0000000128.226.6
2022-01-01-01-01-01 00:10:00.0000000137.525.5 25.5
11:00.00.00.00.00.00.00.00.00 000 139.99.927.9 27.42222222222222222222222222222222222222222222222222222022-022-01-01-01-01-01-01-01-01
: 00:12:00.0000000140.126.3
2022-01-01 00:13:00.0000000145.425.7
2022-01-01 00:14:00.0000000158.724.4
2022-01-01 00:15:00.0000000155.825.6

The desired result would be as follows :

时间戳速度温度
2022-01-01 00:06:00.0000000106.326.3
2022-01-01-01 00:07:00.0000000119.626.5
2022-01-01-01-01-01 00:08:08:00.00.00.00.00.00.00000 134.725.4
2022-22-2-22-01-01-09:0.0.0.00.0.0.0.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.b00 00.00.b00 00:00.00.li128.226.6
2022-01-01 00:10:00.0000000137.525.5

数据的第一个和最后5分钟被滤除,因为在那5分钟的窗口中,发现速度超出了100-150 km/h的范围。

I want to write a query in Kusto which checks if the speed of a car is ALWAYS between a certain speed limit (e.g. b/w 100 and 150 km/h) for a window of 5 mins. Any leads shall be highly appreciated.

The following dataset can be used as an example:

TimestampSpeedTemperature
2022-01-01 00:01:00.0000000142.525.5
2022-01-01 00:02:00.0000000133.225.4
2022-01-01 00:03:00.0000000124.825.6
2022-01-01 00:04:00.0000000115.325.5
2022-01-01 00:05:00.000000098.425.4
2022-01-01 00:06:00.0000000106.326.3
2022-01-01 00:07:00.0000000119.626.5
2022-01-01 00:08:00.0000000134.725.4
2022-01-01 00:09:00.0000000128.226.6
2022-01-01 00:10:00.0000000137.525.5
2022-01-01 00:11:00.0000000139.927.4
2022-01-01 00:12:00.0000000140.126.3
2022-01-01 00:13:00.0000000145.425.7
2022-01-01 00:14:00.0000000158.724.4
2022-01-01 00:15:00.0000000155.825.6

The desired result would be as follows:

TimestampSpeedTemperature
2022-01-01 00:06:00.0000000106.326.3
2022-01-01 00:07:00.0000000119.626.5
2022-01-01 00:08:00.0000000134.725.4
2022-01-01 00:09:00.0000000128.226.6
2022-01-01 00:10:00.0000000137.525.5

The first and last 5 mins of the data are filtered out because in those 5 min windows the speed was found to be out of the 100 - 150 km/h range.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

负佳期 2025-01-30 22:18:20
let t = datatable (Timestamp:datetime ,Speed:real ,Temperature:real)
[
     '2022-01-01 00:01:00.0000000' ,142.5 ,25.5
    ,'2022-01-01 00:02:00.0000000' ,133.2 ,25.4
    ,'2022-01-01 00:03:00.0000000' ,124.8 ,25.6
    ,'2022-01-01 00:04:00.0000000' ,115.3 ,25.5
    ,'2022-01-01 00:05:00.0000000' ,98.4  ,25.4
    ,'2022-01-01 00:06:00.0000000' ,106.3 ,26.3
    ,'2022-01-01 00:07:00.0000000' ,119.6 ,26.5
    ,'2022-01-01 00:08:00.0000000' ,134.7 ,25.4
    ,'2022-01-01 00:09:00.0000000' ,128.2 ,26.6
    ,'2022-01-01 00:10:00.0000000' ,137.5 ,25.5
    ,'2022-01-01 00:11:00.0000000' ,139.9 ,27.4
    ,'2022-01-01 00:12:00.0000000' ,140.1 ,26.3
    ,'2022-01-01 00:13:00.0000000' ,145.4 ,25.7
    ,'2022-01-01 00:14:00.0000000' ,158.7 ,24.4
    ,'2022-01-01 00:15:00.0000000' ,155.8 ,25.6
];
let min_Timestamp = toscalar(t | summarize min(Timestamp));
t
| summarize make_list(Timestamp), make_list(Speed), make_list(Temperature) by bin_at(Timestamp, 5m, min_Timestamp)
| extend list_Speed_stat = series_stats_dynamic(list_Speed)  
| where list_Speed_stat["min"] >= 100 and list_Speed_stat["max"] <= 150
| mv-expand Timestamp = list_Timestamp, Speed = list_Speed, Temperature  = list_Temperature  
| project todatetime(Timestamp), toreal(Speed), toreal(Temperature)
时间戳速度温度
2022-01-01T00:06:00Z106.326.3
2022-01-01T00:07:00Z119.626.6 26.5
2022-01-01-01-01-01T00:08:00Z134.725.4
2022-01-01-01-01-01-01-01-09:09:09 :09:09:00Z208.6128.6.6 208.6 208.6 208.6 208.6 208.6 208.6 208.6 208.6 208.6 208.6 208.6 6.6 6.6 208.6 6.6
6.6 208.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6 6.6 6; -01T00:10:00Z137.525.5
let t = datatable (Timestamp:datetime ,Speed:real ,Temperature:real)
[
     '2022-01-01 00:01:00.0000000' ,142.5 ,25.5
    ,'2022-01-01 00:02:00.0000000' ,133.2 ,25.4
    ,'2022-01-01 00:03:00.0000000' ,124.8 ,25.6
    ,'2022-01-01 00:04:00.0000000' ,115.3 ,25.5
    ,'2022-01-01 00:05:00.0000000' ,98.4  ,25.4
    ,'2022-01-01 00:06:00.0000000' ,106.3 ,26.3
    ,'2022-01-01 00:07:00.0000000' ,119.6 ,26.5
    ,'2022-01-01 00:08:00.0000000' ,134.7 ,25.4
    ,'2022-01-01 00:09:00.0000000' ,128.2 ,26.6
    ,'2022-01-01 00:10:00.0000000' ,137.5 ,25.5
    ,'2022-01-01 00:11:00.0000000' ,139.9 ,27.4
    ,'2022-01-01 00:12:00.0000000' ,140.1 ,26.3
    ,'2022-01-01 00:13:00.0000000' ,145.4 ,25.7
    ,'2022-01-01 00:14:00.0000000' ,158.7 ,24.4
    ,'2022-01-01 00:15:00.0000000' ,155.8 ,25.6
];
let min_Timestamp = toscalar(t | summarize min(Timestamp));
t
| summarize make_list(Timestamp), make_list(Speed), make_list(Temperature) by bin_at(Timestamp, 5m, min_Timestamp)
| extend list_Speed_stat = series_stats_dynamic(list_Speed)  
| where list_Speed_stat["min"] >= 100 and list_Speed_stat["max"] <= 150
| mv-expand Timestamp = list_Timestamp, Speed = list_Speed, Temperature  = list_Temperature  
| project todatetime(Timestamp), toreal(Speed), toreal(Temperature)
TimestampSpeedTemperature
2022-01-01T00:06:00Z106.326.3
2022-01-01T00:07:00Z119.626.5
2022-01-01T00:08:00Z134.725.4
2022-01-01T00:09:00Z128.226.6
2022-01-01T00:10:00Z137.525.5

Fiddle

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文