/ / Запит контролю заторів для автомобілів на дорозі з використанням мови запитів Esper - java, cep, esper

Запит на керування заторів в автомобілях на дорогах за допомогою мови Esper Query Language - java, cep, esper

Я отримую дані з моделювання внаступний формат: Як бачимо, наразі є дві машини, які їдуть з вулиці 7 на вулицю 11 (оскільки вони перетинають численні зони, де розміщені датчики для контролю руху).

Тепер я хочу зупинити сигнал, коли останній часрізниця між автомобілем №1 та автомобілем №2 становить лише 3 секунди або менше. Як я можу це зробити мовою запитів esper. Мені потрібно написати запит на обробку складної події, який дозволить мені згенерувати подію, як тільки буде виконана вищевказана умова. З даних видно, що спочатку час в'їзду автомобіля №1 на вулицю №7 становить 42500, тоді як коли автомобіль №2 в'їжджає на вулицю №7, час становить 42508, що робить різницю в часі 8 секунд.

    { time: 42500,
location: { Zone: "Z3", Street: "Street#7" },
carID: "car#1" }
---------------------------------------
{ time: 42502,
location: { Zone: "Z5", Street: "Street#7" },
carID: "car#1" }
---------------------------------------
{ time: 42502,
location: { Zone: "Z1", Street: "Street#8" },
carID: "car#1" }
---------------------------------------
{ time: 42504,
location: { Zone: "Z4", Street: "Street#8" },
carID: "car#1" }
---------------------------------------
{ time: 42505,
location: { Zone: "Z5", Street: "Street#8" },
carID: "car#1" }
---------------------------------------
{ time: 42505,
location: { Zone: "Z1", Street: "Street#9" },
carID: "car#1" }
---------------------------------------
{ time: 42507,
location: { Zone: "Z4", Street: "Street#9" },
carID: "car#1" }
---------------------------------------
{ time: 42508,
location: { Zone: "Z3", Street: "Street#7" },
carID: "car#2" }
---------------------------------------
{ time: 42508,
location: { Zone: "Z5", Street: "Street#9" },
carID: "car#1" }
---------------------------------------
{ time: 42508,
location: { Zone: "Z1", Street: "Street#10" },
carID: "car#1" }
---------------------------------------
{ time: 42509,
location: { Zone: "Z4", Street: "Street#10" },
carID: "car#1" }
---------------------------------------
{ time: 42509,
location: { Zone: "Z5", Street: "Street#7" },
carID: "car#2" }
---------------------------------------
{ time: 42509,
location: { Zone: "Z1", Street: "Street#8" },
carID: "car#2" }
---------------------------------------
{ time: 42511,
location: { Zone: "Z5", Street: "Street#10" },
carID: "car#1" }
---------------------------------------
{ time: 42511,
location: { Zone: "Z1", Street: "Street#11" },
carID: "car#1" }
---------------------------------------
{ time: 42511,
location: { Zone: "Z4", Street: "Street#8" },
carID: "car#2" }
---------------------------------------
{ time: 42512,
location: { Zone: "Z4", Street: "Street#11" },
carID: "car#1" }
---------------------------------------
{ time: 42512,
location: { Zone: "Z5", Street: "Street#8" },
carID: "car#2" }
---------------------------------------
{ time: 42512,
location: { Zone: "Z1", Street: "Street#9" },
carID: "car#2" }
---------------------------------------
{ time: 42513,
location: { Zone: "Z5", Street: "Street#11" },
carID: "car#1" }
---------------------------------------
{ time: 42513,
location: { Zone: "Z1", Street: "Street#12" },
carID: "car#1" }
---------------------------------------

Відповіді:

0 для відповіді № 1

Це звучить трохи як поєднання подій для автомобіля 1з подіями автомобіля 2. Питання полягає в тому, до якого підмножини подій приєднатися. Випадок використання, схоже, вимагає збереження історії вулиць, які відвідував кожен автомобіль. Для цього ми могли б використовувати довжину вікна або унікальне вікно або об’єднання цих вікон. Дозвольте використовувати вікно довжини, яке враховує останні 10 вулиць чи подій. Наприклад, такий запит:

select * from Event(carID="car#1").win:length(20) as car1, Event(carID="car#2").win:length(20) as car2 where Math.abs(car1.time-car2.time) > 3 and car1.Location.Street = car2.Location.Street