Процессор WSO2 Stream: приложение Siddhi для расчета суммы - PullRequest
0 голосов
/ 26 сентября 2019

Я работаю на потоковом процессоре 4.3.0.Я столкнулся с одним сценарием, в котором я помещаю некоторые потоки данных в таблицу rdbms, используя siddhiapp.Используя siddiapp, я ввожу данные в таблицу RDBMS, как показано ниже:

enter image description here

Теперь я использую другой SiddhiApp для получения данных, но мне хотелось быпопытаться извлечь данные таким образом, как показано ниже:

enter image description here

Поскольку общие столбцы сжимаются, чтобы попасть в одну строку и столбец, имеющий количествотеперь суммируются, чтобы получить окончательную сумму по всем подсчетам.

Может кто-нибудь, пожалуйста, подскажите мне, как действовать здесь.

Заранее спасибо

вот приложение, чтобы получитьобщая сумма

    @App:name("IncomingStream3")
    @App:description("Description of the plan")

    -- Please refer to https://docs.wso2.com/display/SP400/Quick+Start+Guide on getting started with SP editor. 

    --@store(type = 'rdbms', datasource = 'APIM_ANALYTICS_DB')
    --@purge(enable='false', interval='60 min', @retentionPeriod(sec='1 day', min='72 hours', hours='90 days', days='1 year', months='2 years', years='3 years'))

    define stream  TempStatsStream (AGG_TIMESTAMP long, AGG_EVENT_TIMESTAMP long, apiName string, apiVersion string, apiResourcePath string,apiCreator string,username string, applicationConsumerKey string, AGG_LAST_EVENT_TIMESTAMP long, applicationName string, dateTime string, AGG_COUNT int);

    define aggregation StatsToCal

    from TempStatsStream
    select apiName, apiVersion, apiResourcePath, apiCreator, username, applicationName, 
    applicationConsumerKey, SUM (AGG_COUNT) as totalRequestCount, dateTime

    group by apiName, apiVersion, apiResourcePath, username, applicationConsumerKey
    aggregate by dateTime every days;

Единственное изменение, которое я сделал здесь, - вместо того, чтобы извлекать значение из таблицы БД, я рассматриваю его как поток (так как агрегирование может быть сделано только для потока, я полагаю).

1 Ответ

0 голосов
/ 26 сентября 2019

Похоже, вам нужно группировать по API, Name1, Name2 и ID?Вы можете использовать group by аналогично группе SQL

from TriggerStream join APITable
select APIName, Name1, Name2, ID, sum(Count) as totalCount
group by API, Name1, Name2, ID
insert into OutputStream;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...