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

Syntax issue in Stream Analytics Query running in Azure: Invalid column name: 'payload'

我的流分析查询存在语法问题。以下是我的流分析查询,我试图从事件中获取以下字段:

非工作查询[=​​47=]

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

以下是一个示例输入事件,其中上述 query/job 是 运行 一系列事件:

   {
      "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"
   }

流分析作业为 运行 时抛出以下语法错误:

Invalid column name: 'payload'. Column with such name does not exist.

具有讽刺意味的是,以下查询工作得很好:

工作查询[=​​47=]

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() 函数,但没有成功。求推荐。

提前致谢!

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

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

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