在 Azure 中运行的流分析查询中的语法问题:列名无效:“有效负载”
Posted
技术标签:
【中文标题】在 Azure 中运行的流分析查询中的语法问题:列名无效:“有效负载”【英文标题】:Syntax issue in Stream Analytics Query running in Azure: Invalid column name: 'payload' 【发布时间】:2017-01-24 02:34:08 【问题描述】:我的流分析查询存在语法问题。以下是我的流分析查询,我试图从事件中获取以下字段:
车辆编号 先前和当前燃料水平的差异(对于每个 车辆), 当前和以前的里程表值的差异(对于每个 车辆)。非工作查询
SELECT input.vehicleId,
FUEL_DIFF = LAG(input.Payload.FuelLevel) OVER (PARTITION BY vehicleId LIMIT DURATION(minute, 1)) - input.Payload.FuelLevel,
ODO_DIFF = input.Payload.OdometerValue - LAG(input.Payload.OdometerValue) OVER (PARTITION BY input.vehicleId LIMIT DURATION(minute, 1))
from input
以下是在一系列事件上运行上述查询/作业的一个示例输入事件:
"IoTDeviceId":"DeviceId_1",
"MessageId":"03494607-3aaa-4a82-8e2e-149f1261ebbb",
"Payload":
"TimeStamp":"2017-01-23T11:16:02.2019077-08:00",
"FuelLevel":19.9,
"OdometerValue":10002
,
"Priority":1,
"Time":"2017-01-23T11:16:02.2019077-08:00",
"VehicleId":"MyCar_1"
运行流分析作业时引发以下语法错误:
列名无效:“有效负载”。具有该名称的列不存在。
具有讽刺意味的是,以下查询工作正常:
工作查询
SELECT input.vehicleId,
FUEL_DIFF = LAG(input.Payload.FuelLevel) OVER (PARTITION BY vehicleId LIMIT DURATION(second, 1)) - input.Payload.FuelLevel
from input
WORKING QUERY 和 NON-WORKING QUERY 之间的唯一区别是使用的 LAG 结构的数量。 NON-WORKING QUERY 有两个 LAG 结构,而 WORKING QUERY 只有一个 LAG 结构。
我提到了流分析查询语言,他们只有基本的例子。还尝试查看多个博客。另外,我尝试过使用 GetRecordPropertyValue() 函数,但没有运气。请提出建议。
提前谢谢你!
【问题讨论】:
【参考方案1】:这看起来确实是一个语法错误。感谢您的报告 - 我们将在接下来的更新中修复它。
请考虑使用此查询作为解决方法:
WITH Step1 AS
(
SELECT vehicleId, Payload.FuelLevel, Payload.OdometerValue
FROM input
)
SELECT vehicleId,
FUEL_DIFF = LAG(FuelLevel) OVER (PARTITION BY vehicleId LIMIT DURATION(minute, 1)) - FuelLevel,
ODO_DIFF = OdometerValue - LAG(OdometerValue) OVER (PARTITION BY vehicleId LIMIT DURATION(minute, 1))
from Step1
【讨论】:
以上是关于在 Azure 中运行的流分析查询中的语法问题:列名无效:“有效负载”的主要内容,如果未能解决你的问题,请参考以下文章