2017-03-08 12 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 2

ためCarId 1と0の訪問のために2回の訪問ですか?

答えて

1

サンプルデータでは、CarId & CarNumの組み合わせが繰り返されているようです。 T-SQLのサブセットであるStream Analyticsクエリ言語に基づいて、必要なクエリはほとんど実装されません。

私の経験上、あなたと同様のシナリオのサンプルクエリがあります。

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

ありがとうございましたピーターパン、クエリは私の要件としてではありませんが、それは私をたくさん助けます。 – user3913566

関連する問題