我正在使用 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,但无济于事。目标如下:
- 数据进来
- 你在多边形中吗?
- 是的?你在多边形里多久了?我在这里知道我需要了解它何时首次出现在多边形中。但是,正如您从上面的数据中看到的那样,数据可能在 24 小时前就在多边形中,现在它又在那里了。我只是不知道如何构造一个查询来找出我何时在多边形中以及多长时间。有人可以帮忙吗?