2017-01-24 12 views
1

스트림 분석 쿼리에 구문 문제가 있습니다. (각 차량) 이전 및 현재의 연료 수준의스트림 분석의 구문 문제 Azure에서 실행중인 쿼리 : 잘못된 열 이름 : 'payload'

  • 차량 아이디
  • DIFF, 현재의
  • DIFF : 내가 이벤트에서 다음 필드를 얻기 위해 노력하고 있어요 내 스트림 웹 로그 분석 쿼리는되고 다음 이전 주행 거리 값 (각 차량의 경우).

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

    구문 오류 다음은 NON-WORKING QUERY

    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 
    

    다음

는 위의 질의/작업이 일련의 사건에서 실행되는 하나의 샘플 입력 이벤트 스트림 애널리틱스 작업을 실행하면 throw됩니다.

잘못된 열 이름 : 'payload'. 같은 이름의 열이 없습니다.

아이러니하게도, 다음 쿼리는 잘 작동합니다 :

WORKING QUERY

SELECT input.vehicleId, 
FUEL_DIFF = LAG(input.Payload.FuelLevel) OVER (PARTITION BY vehicleId LIMIT DURATION(second, 1)) - input.Payload.FuelLevel 
from input 

WORKING 쿼리 및 NON-WORKING QUERY의 유일한 디퍼 런스 세라마이드 사용 LAG 구조의 수입니다. NON-WORKING QUERY에는 LAG 구조가 2 개 있으며 WORKING QUERY에는 LAG 구조가 하나만 있습니다.

저는 스트림 애널리틱스 쿼리 언어를 참조했으며 기본 예제 만 가지고 있습니다. 또한 여러 블로그를 살펴 보았습니다. 또한, GetRecordPropertyValue() 함수를 사용해 보았지만 행운은 없습니다. 좋습니다.

감사합니다.

답변

0

실제로 이것은 구문 버그와 같습니다. 신고 해 주셔서 감사 드리며 곧 업데이트 될 예정입니다.

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 
:

해결 방법으로이 쿼리를 사용하는 것을 고려하십시오