Azure中运行的流分析查询中的语法问题:无效列名:';有效载荷';

Azure中运行的流分析查询中的语法问题:无效列名:';有效载荷';,azure,iot,azure-stream-analytics,stream-analytics,bigdata,Azure,Iot,Azure Stream Analytics,Stream Analytics,Bigdata,我的stream analytics查询存在语法问题。以下是我的Stream Analytics查询,我试图从事件中获取以下字段: 车辆Id 以前和当前燃油油位的差值(每个 车辆) 当前和先前里程表值的差值(每个 车辆) 非工作查询 SELECT input.vehicleId, FUEL_DIFF = LAG(input.Payload.FuelLevel) OVER (PARTITION BY vehicleId LIMIT DURATION(minute, 1)) - input.Pa

我的stream analytics查询存在语法问题。以下是我的Stream Analytics查询,我试图从事件中获取以下字段:

  • 车辆Id
  • 以前和当前燃油油位的差值(每个 车辆)
  • 当前和先前里程表值的差值(每个 车辆)
非工作查询

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
SELECT input.vehicleId,
FUEL_DIFF = LAG(input.Payload.FuelLevel) OVER (PARTITION BY vehicleId LIMIT DURATION(second, 1)) - input.Payload.FuelLevel
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(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
SELECT input.vehicleId,
FUEL_DIFF = LAG(input.Payload.FuelLevel) OVER (PARTITION BY vehicleId LIMIT DURATION(second, 1)) - input.Payload.FuelLevel
from input
工作查询和非工作查询之间的唯一区别是使用的延迟构造的数量。非工作查询有两个滞后结构,而工作查询只有一个滞后结构

我提到了流分析查询语言,它们只有基本的例子。还尝试查看多个博客。此外,我还尝试使用了GetRecordPropertyValue()函数,但没有成功。请建议


提前谢谢你

这看起来确实像一个语法错误。感谢您的报道-我们将在即将发布的更新中修复它

请考虑使用此查询作为解决方案:

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

这看起来确实是一个语法错误。感谢您的报道-我们将在即将发布的更新中修复它

请考虑使用此查询作为解决方案:

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