Я новичок, используя esper
. У меня возникла проблема, которая не знала, как построить EPL.Как получить элемент последнего события (должен фильтровать нулевое значение), что группа с помощью некоторых ключей
Мое событие имеет эти элементы (ключ, индекс, e0, e1, e2 ....), и в каждом случае e1 может существовать или нет, я хочу получить последние "index"'s element:“e1”
(исключая нулевое значение) и сумму (e2) группа «ключ».
Я написал EPL так:
select key, sum(e2), maxby(index).e1 as e1 from Event.win:time_batch(3 sec) group by key
пример вывода, как показано ниже:
send event :{key=0, index=0, e0=5, e1=1}
send event :{**key=3**, index=1, **e1=2**, e2=6}
send event :{**key=3**, index=2, e0=0, e3=2} **//the event e1 is not exist**
send event :{key=1, index=3, e2=8, e3=4}
sliding win output: {key=0, sum(e2)=null, e1=1}
sliding win output: {key=1, sum(e2)=8, e1=null}
sliding win output: {**key=3**, sum(e2)=6, **e1=null**}
вы видите, результат [ключ = 3] s e1 = нуль, но я ожидаю для фильтрации события e1 = null и должен выводиться e1 = 2
"maxby"
не может добавить условие, например "fmax"
.
так как я могу отфильтровать его в EPL?
но ваш EPL фильтр событие, e1 равно нулю: «{** ключ = 3 **, индекс = 2, e0 = 0, e3 = 2} ", e3 = 2 тоже удалит, я не могу удалить этот evnet, если мне нужно заполнить e3. @ user650839 – alphacome
Я думаю, что вы делаете что-то вроде «maxby (случай, когда e1 имеет значение null, а затем конец конца else else)», поскольку «maxby» может принимать любое выражение, включая вызов UDF. – user650839
"maxby (случай, когда e1 имеет значение null, а затем конец else else end)" ---- Он работает, спасибо ~~~~~ @ user650839. вы действительно помогли мне. .. buut, когда я пытаюсь получить ключ группы индексов e1 'minby' как аналогичный выше, это не сработало, я пишу так:' minby (случай, когда e1 имеет значение null, а затем конец конца else else) ' отправить Событие: {key = 0, index = 12, e2 = 6, e3 = 3} отправить событие: {key = 0, index = 13, ** e1 = 4 **} вывод разворота: {key = 0, sum (e2) = 6, ** e1 = null **} Почему он не может работать? как его написать? – alphacome