【发布时间】:2023-01-30 06:38:07
【问题描述】:
我收到传感器数据容器作为 ASA 的输入。容器看起来像这样。
{
"data": [
{
"sensor_id": 55,
"timestamp": 1663075725000,
"value" : 32.12
},
{
"sensor_id": 55,
"timestamp": 1663075725025,
"value" : 33.23
},
{
"sensor_id": 12,
"timestamp": 16630757255543,
"value" : "on"
},
{
"sensor_id": 458,
"timestamp": 1663075725993,
"value" : 102
},...
}]
数据是从不同的车辆发送的。车辆标识符作为自定义属性发送。
我的目标是检测诸如“超速”(速度 > x km/h 至少 5 秒)或“驾驶时手刹”(速度 > x km/h 且手刹 =“开”至少 2 秒)之类的事情)
我不知道如何实现这一目标。
我的第一个想法是,将容器拆分为单个“行”并添加车辆标识符。我通过以下查询实现了这一点:
WITH Signals AS
(
SELECT
arrayElement.ArrayValue as sig,
GetMetadataPropertyValue(msg, '[User].[Vehicle]') as vehicle,
FROM input as msg
CROSS APPLY GetArrayElements(msg.data) AS arrayElement
)
SELECT
sig.sensor_id, sig."timestamp", sig.value, vehicle
INTO
output
FROM
Signals
这行得通,但不幸的是我在 Azure 门户的预览窗口中看不到车辆价值(但文档中提到了这一点)
但现在我不知道如何走得更远......
我应该将输出发送到新的事件中心并创建一个单独的 ASA 作业并进行其他计算,还是可以在此查询中执行此操作? 查询如何获得诸如“超速”(一辆车的传感器 x > x 持续 y 秒)或“手刹驾驶”(传感器 y =“开”并且一辆车的传感器 x > x 持续 y 秒)之类的查询)?
任何帮助表示赞赏!
更新正如这里提到的 (In Azure Stream Analytics Query I am getting an error when using Timestamp by) 我想,我需要将我的工作分成多个 ASA 工作。第一个执行交叉应用并推送到单独的事件中心,第二个工作可以进行计算。
所以,请帮我查询“手刹驾驶”(sensor_id 12 =“on”和 sensor 55 > 10 持续 3 秒)。
非常感谢!
【问题讨论】:
标签: azure-stream-analytics stream-processing