2016-02-04 1 views
1

Я пытаюсь реализовать образец проекта в Сиддхи. Существует поток событий ввода с одним атрибутом height. Я хочу написать запрос sequence, который дает обратный вызов, когда есть три последовательных события с одинаковой высотой. Я упомянул this и this блог, но я не могу получить синтаксис справа. При попытке выполнить запрос последовательности я получаю SiddhiParserException.Написание запроса последовательности в Сиддхи

это соответствующий запрос шаблона, который отлично работает.

executionPlan = "" + 
       "define stream cseEventStream (height int); " + 
       "" + 
       "@info(name = 'query1') " + 
       "from every e1 = cseEventStream " + 
       "-> e2 = cseEventStream[e1.height == e2.height]" + 
       "-> e3 = cseEventStream[e2.height == e3.height] "+ 
       "select e1.height as height1, e2.height as height2, e3.height as height3 " + 
       "insert into outputStream ;"; 

Ниже, как я пишу запрос последовательности, чтобы получить два последовательных равных высот, но я не могу получить это право.

executionPlan = "" + 
       "define stream cseEventStream (height int); " + 
       "" + 
       "@info(name = 'query1') " + 
       "from every e1 = cseEventStream, e2 = cseEventStream[e1.height == height]" + 
       "select e1.height as height1, e2.height as height2" + 
       "insert into outputStream ;"; 

Добавление журналы ошибок:

java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: org.wso2.siddhi.query.compiler.exception.SiddhiParserException: You have an error in your SiddhiQL at line 1:195, extraneous input 'into' expecting {',', GROUP, HAVING, INSERT, DELETE, UPDATE, RETURN, OUTPUT} 
at org.wso2.siddhi.query.compiler.internal.SiddhiErrorListener.syntaxError(SiddhiErrorListener.java:36) 
at org.antlr.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:65) 
at org.antlr.v4.runtime.Parser.notifyErrorListeners(Parser.java:566) 
at org.antlr.v4.runtime.DefaultErrorStrategy.reportUnwantedToken(DefaultErrorStrategy.java:375) 
at org.antlr.v4.runtime.DefaultErrorStrategy.sync(DefaultErrorStrategy.java:273) 
at org.wso2.siddhi.query.compiler.SiddhiQLParser.query_section(SiddhiQLParser.java:3702) 
at org.wso2.siddhi.query.compiler.SiddhiQLParser.query(SiddhiQLParser.java:1903) 
at org.wso2.siddhi.query.compiler.SiddhiQLParser.execution_element(SiddhiQLParser.java:619) 
at org.wso2.siddhi.query.compiler.SiddhiQLParser.execution_plan(SiddhiQLParser.java:550) 
at org.wso2.siddhi.query.compiler.SiddhiQLParser.parse(SiddhiQLParser.java:152) 
at org.wso2.siddhi.query.compiler.SiddhiCompiler.parse(SiddhiCompiler.java:63) 
at org.wso2.siddhi.core.SiddhiManager.createExecutionPlanRuntime(SiddhiManager.java:61) 
at mainpkg.DriverClass.initiateExecutionPlan(DriverClass.java:54) 
at mainpkg.DriverClass.main(DriverClass.java:37) 

Любая помощь приветствуется.

+0

Можете ли вы опубликовать полную трассировку стека. Этот запрос выглядит нормально. –

+0

@SajithEshan Пожалуйста, проверьте отредактированный вопрос. Да, запрос шаблона отлично работает для меня. Это запрос последовательности, который я не умею правильно писать. – shshnk

ответ

1

Мне удалось решить проблему. Это было недостающее место в конце сегментов строки. Обратите внимание на место в конце 5-й и 6-й строк после «]» и «height2»

executionPlan = "" + 
       "define stream cseEventStream (height int); " + 
       "" + 
       "@info(name = 'query1') " + 
       "from every e1 = cseEventStream, e2 = cseEventStream[e1.height == height] " + 
       "select e1.height as height1, e2.height as height2 " + 
       "insert into outputStream ;";