gpt4 book ai didi

Azure 流分析 - 沿流查询

转载 作者:行者123 更新时间:2023-12-01 09:28:11 26 4
gpt4 key购买 nike

我正在使用 Azure 流分析。我有数据进入事件中心。传入的数据如下所示:

[
{
"id": "a2b8bcd8-ff79-4bb7-a86f-615556104c1f",
"mechanism": "geo",
"datetimereporting": "2017-07-23 11:08:00",
"geometry": {
"type": "Point",
"coordinates": [-85.78378, 38.68679]
}
},
{
"id": "a2b8bcd8-ff79-4bb7-a86f-615556104c1f",
"mechanism": "geo",
"datetimereporting": "2017-07-23 11:09:00",
"geometry": {
"type": "Point",
"coordinates": [-85.79378, 38.68679]
}
},
{
"id": "a2b8bcd8-ff79-4bb7-a86f-615556104c1f",
"mechanism": "geo",
"datetimereporting": "2017-07-24 14:08:00",
"geometry": {
"type": "Point",
"coordinates": [-85.78378, 38.68679]
}
},
{
"id": "a2b8bcd8-ff79-4bb7-a86f-615556104c1f",
"mechanism": "geo",
"datetimereporting": "2017-07-24 14:09:00",
"geometry": {
"type": "Point",
"coordinates": [-85.79378, 38.68679]
}
},
{
"id": "a2b8bcd8-ff79-4bb7-a86f-615556104c1f",
"mechanism": "geo",
"datetimereporting": "2017-07-24 14:10:00",
"geometry": {
"type": "Point",
"coordinates": [-85.80378, 38.68679]
}
},
{
"id": "8bb76874-5b91-400d-b0cb-04c8e6c48d26",
"mechanism": "geo",
"datetimereporting": "2017-07-24 14:09:00",
"geometry": {
"type": "Point",
"coordinates": [-115.17281, 36.11464]
}
},
{
"id": "31453016-067f-4664-ade9-244a1d7b769c",
"mechanism": "geo",
"datetimereporting": "2017-07-24 14:10:00",
"geometry": {
"type": "Point",
"coordinates": [-85.76477, 38.32873]
}
}
]

流分析任务是查看数据并查明传入的坐标是否位于特定多边形中。我已经让 ST_WITHIN 查询正常工作。我有一个引用 Blob ,其中包含我想要的所有多边形。麻烦就在于此。我需要检测坐标何时位于多边形中以及它在多边形中存在多长时间。

数据大约每分钟传输一次。我每分钟都会得到一个新坐标。我知道如何检测它最初位于多边形中的时间。我的难题是如何知道它在多边形中已经存在了多长时间?我尝试过LAST、LAG、ISFIRST,但没有成功。目标如下:

  1. 数据传入
  2. 您在多边形中吗?
  3. 是吗?你在多边形里呆了多久了?我知道这里我需要了解它何时第一次进入多边形。然而,从上面的数据可以看出,数据可能在 24 小时前就在多边形中,现在又在多边形中了。我只是不知道如何构造一个查询来找出我何时在多边形中以及在多边形中停留了多长时间。有人可以帮忙吗?

最佳答案

I just don't know how to structure a query to find out when I'm in the polygon and for how long. Can anyone assist?

您需要的是从一组分散的数据中获得线性结果。我建议您按日期时间降序查询该人是否在最近一段时间的多边形中。数据可能如下。

| id                          | Is in polygon | date time           | 
|-----------------------------|---------------|-------------------- |
| a2b8bcd8-ff79-4bb7-a86f-xxx | true | 2017-07-23 11:08:00 |
| a2b8bcd8-ff79-4bb7-a86f-xxx | true | 2017-07-23 11:07:00 |
| a2b8bcd8-ff79-4bb7-a86f-xxx | false | 2017-07-23 11:06:00 |

获取数据后,您可以将其存储在任何地方(Azure Redis 或 Blob 存储)。最后,您可以使用 Azure Function 处理临时数据。以下示例代码供您引用。

var totalMinutes = 0;
foreach (var data in collection)
{
if (data.IsInPolygon)
{
totalMinutes++;
}
else
{
break;
}
}

如何将数据输出到Azure Function,以下链接供您引用。

How to store data from Azure Stream Analytics in an Azure Redis Cache using Azure Functions

关于Azure 流分析 - 沿流查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45334885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com