2017-03-08 10 views
1

내 요구 사항, 내가 JSON이 같은 (내가 스트림 웹 로그 분석의 입력 작업에이 JSON을 채운)스트림 분석 쿼리

[{ 
    CarId: 1, 
    Time: "2017-03-08T16:20:00.0000000", 
    CarNum: "XYZ" 
},{ 
    CarId: 2, 
    Time: "2017-03-08T16:25:00.0000000", 
    CarNum: "ABC" 
},{ 
    CarId: 1, 
    Time: "2017-03-08T16:27:00.0000000", 
    CarNum: "XYZ" 
},{ 
    CarId: 1, 
    Time: "2017-03-08T16:30:00.0000000", 
    CarNum: "XYZ" 
},{ 
    CarId: 1, 
    Time: "2017-03-08T16:35:00.0000000", 
    CarNum: "XYZ" 
}, 
] 

Now 자동차가 터널에 들어갈 수있는 최소 시간은 1 분이고 최대 시간은 10 분입니다. 입력을 기반으로

는 CarId 1이 명 방문하고 이

사람이 나를 쿼리를 작성하는 데 도움이 수 CarId 2

0 방문인가?

답변

1

샘플 데이터에서 CarId & CarNum의 결합이 반복되는 것처럼 보입니다. T-SQL의 하위 집합 인 Stream Analytics Query Language를 기반으로 원하는 쿼리가 거의 구현되지 않습니다.

내 경험에 비추어 볼 때, 비슷한 시나리오의 샘플 쿼리가 있습니다.

CarId & CarNum의 결합 것을 다음과 같은 JSON 데이터,

[{ 
    CarId: 1, 
    Time: "2017-03-08T16:20:00.0000000", 
    CarNum: "XYZ" 
},{ 
    CarId: 2, 
    Time: "2017-03-08T16:25:00.0000000", 
    CarNum: "ABC" 
},{ 
    CarId: 1, 
    Time: "2017-03-08T16:27:00.0000000", 
    CarNum: "XYZ" 
},{ 
    CarId: 1, 
    Time: "2017-03-08T16:30:00.0000000", 
    CarNum: "DEF" 
},{ 
    CarId: 1, 
    Time: "2017-03-08T16:35:00.0000000", 
    CarNum: "DEF" 
}, 
] 

일정 기간 내에서 고유 경우

, 아래와 같이 스트림 분석에 대한 쿼리.

SELECT 
    CarId, 
    CarNum, 
    LAG(Time, 1) OVER (PARTITION BY CarId, CarNum LIMIT DURATION(MINUTE, 10)) AS startime, 
    Time AS endtime, 
    DATEDIFF(second, LAG(Time, 1) OVER (PARTITION BY CarId, CarNum LIMIT DURATION(MINUTE, 10)), Time) AS time 
FROM 
    [YourInputAlias] 
WHERE LAG(CarId, 1) OVER (PARTITION BY CarId, CarNum limit LIMIT DURATION(MINUTE, 10)) IS NOT NULL 
+0

감사합니다. Peter Pan, 쿼리는 내 요구 사항에 맞지 않지만 많이 도움이됩니다. – user3913566