Добавьте НЕИЗВЕСТНЫЕ потоки событий в CEP Engine и получите список всех свойств (полезной нагрузки) этого события.

Я хочу иметь возможность добавлять потоки событий, когда я заранее не знаю, какими свойствами обладают события. Поэтому я раньше не знал, есть ли целочисленный идентификатор, есть ли отметка даты и времени и какая полезная нагрузка может быть там. Как только я добавлю такое неизвестное событие, Эспер должен изучить поток и вернуть мне содержащиеся в нем свойства потока.


person n.muc.ruh    schedule 01.12.2020    source источник


Ответы (2)


Большое спасибо. Это на самом деле мне очень помогает. Но функции, которая возвращает все имена свойств напрямую, не существует, не так ли? Поэтому мне пришлось бы использовать динамические параметры (проб и ошибок), пока я не узнаю, какие из них существуют в потоке событий.

Спасибо за помощь :)

person n.muc.ruh    schedule 01.12.2020
comment
см. отредактированный ответ - person user3613754; 02.12.2020

См. аналогично Добавить Sensorevents в CEP Engine. и получить список всех свойств

В случае, если у вас нет некоторых или всех свойств, вы можете добавить поток без каких-либо свойств или с теми свойствами, которые, как вы знаете, есть у событий. Вот как добавить поток, свойства которого заранее неизвестны:

@public @buseventtype create schema MyStream()

Теперь вы можете использовать EPEventServive#sendEvent для отправки событий.

Вы можете использовать этот поток по-разному. Вы можете просто выбрать событие.

select * from MyStream

Или вы можете использовать динамические имена свойств, те, которые имеют '?' к ним добавлен вопросительный знак. Это может относиться к свойствам, которые могут существовать или не существовать.

select id? as id from MyStream

Идентификатор? возвращает значение типа объекта. Вы можете использовать cast, чтобы сделать его, например, значением двойного типа для суммирования.

select id? as id, sum(cast(someNumericProperty?, double)) as total from MyStream where 

Когда свойство не существует, ? выражение возвращает ноль. Существует функция exists, которая возвращает true, когда параметр, являющийся динамическим свойством, существует.

Я не думаю, что среда выполнения Esper действительно знает о каком-либо динамическом свойстве, пока EPL не попытается использовать это динамическое свойство. Среда выполнения не проверяет какие-либо события на наличие фактических свойств.

Вы можете добавить свою собственную определяемую пользователем функцию, которая определяет, какие имена свойств могут быть для вашего конкретного базового события. Поэтому, когда в основе лежит java.util.Map, определяемая пользователем функция может возвращать event.keySet().

person user3613754    schedule 01.12.2020