WSO2CEP SiddhiQL — как вставить атрибуты из одного потока в другой поток

Я использую WSO2 CEP и создал следующий план выполнения:

  define stream sensor1Stream (timestamp string, id string, latitude double, longitude double, altitude double);

  define stream sensor2Stream (timestamp string, id string, latitude double, longitude double, altitude double);

  define stream alertStream (alert_id bool, alert_level string, accuracy_level string, s1_timestamp string, s1_id string, s1_latitude double, s1_longitude double, s1_altitude double, s2_timestamp string, s2_id string, s2_latitude double, s2_longitude double, s2_altitude double);

    from sensor1Stream
    select timestamp as s1_timestamp, id as s1_id, latitude as s1_latitude, longitude as s1_longitude, altitude as s1_altitude
    insert into alertStream(s1_timestamp, s1_id, s1_latitude, s1_longitude, s1_altitude);

    from sensor2Stream
    select timestamp as s2_timestamp, id as s2_id, latitude as s2_latitude, longitude as s2_longitude, altitude as s2_altitude
    insert into alertStream(s2_timestamp, s2_id, s2_latitude, s2_longitude, s2_altitude);

Я хочу вставить атрибуты из sensor1Stream и sensor2Stream в alertStream. Я пробовал вышеуказанный способ, но не работает из-за ошибки:

"У вас ошибка в SiddhiQL в строке 39:23, посторонний ввод '('ожидание {, ';'}"

Ошибка находится между alertStream и скобками в последней строке плана выполнения.

Я не знаю, что я делаю неправильно. Буду очень признателен, если кто-нибудь поможет мне в этом вопросе.

Спасибо!


person fay    schedule 30.05.2017    source источник


Ответы (1)


Пожалуйста, найдите пример плана выполнения Сиддхи ниже:

@Plan:name('ExecutionPlan')

@Import('org.wso2.event.sensor.stream:1.0.0')
define stream sensor_stream (meta_timestamp long, meta_isPowerSaverEnabled bool, meta_sensorId int, meta_sensorName string, correlation_longitude double, correlation_latitude double, humidity float, sensorValue double);

@Export('org.wso2.sensor.value.projected.stream:1.0.0')
define stream sensor_value_projected_stream (meta_sensorId int, correlation_longitude double, correlation_latitude double, humidity float, value double);

from sensor_stream
select meta_sensorId, correlation_longitude, correlation_latitude, humidity, sensorValue as value
insert into sensor_value_projected_stream;

Этот пример взят из примера Siddhi 'сквозного/проекционного запроса в плане выполнения. '.

Вы можете найти дополнительные примеры Siddhi здесь на странице документации WSO2 CEP. . Это руководство Siddhi QL содержит полную справку по языку Siddhi.

person Dilini    schedule 30.05.2017
comment
Привет! Большое спасибо за Ваш ответ! Я основываясь на вашем примере, удалил атрибуты в скобках из вставки в alertStream. Но теперь возникает новая ошибка. Я разместил сообщение об ошибке в следующих двух комментариях. Не могли бы вы помочь мне решить эту проблему? Спасибо! - person fay; 31.05.2017
comment
Другое определение совпадает с определением выходного потока: StreamDefinition{id='alertStream', attributeList=[Attribute{id='s1_timestamp', type=STRING}, Attribute{id='s1_id', type=STRING}, Attribute{id=' s1_latitude', type=DOUBLE}, Attribute{id='s1_longitude', type=DOUBLE}, Attribute{id='s1_altitude', type=DOUBLE}], annotations=[]} уже существуют как:StreamDefinition{id='alertStream ', attributeList=[Attribute{id='alert_id', type=BOOL}, Attribute{id='alert_level', type=STRING}, Attribute{id='accuracy_level', type=STRING}, Attribute{id='s1_timestamp ', тип = STRING}, атрибут {id = 's1_id', тип = STRING}, - person fay; 31.05.2017
comment
Атрибут{id='s1_latitude', тип=DOUBLE}, Атрибут{id='s1_longitude', тип=DOUBLE}, Атрибут{id='s1_altitude', тип=DOUBLE}, Атрибут{id='s2_timestamp', тип=STRING }, Атрибут{id='s2_id', тип=STRING}, Атрибут{id='s2_latitude', тип=DOUBLE}, Атрибут{id='s2_longitude', тип=DOUBLE}, Атрибут{id='s2_altitude', тип =DOUBLE}], аннотации=[]} в плане выполнения - person fay; 31.05.2017
comment
Привет, это связано с тем, что оператор select должен содержать значения для всех атрибутов alertStream. Поскольку у alertStream есть 13 атрибутов, оператор select должен иметь 13 значений; в настоящее время у вас есть только 5 значений. - person Dilini; 31.05.2017