Hi Ramindu,

Each time a join happens s.amount is populated as 100 and it is a current
event. When that current event reach the sum attribute aggregator it will
keep on adding. In other words sum(s.amount) represent the sum of amounts
that joined with consumptions stream not sum of amount came within last
hour.

If we are to accurately achieve this requirement we should take below
approach.
1) Window query to calculate running sum of last hour of supply stream
2)  Window query to calculate running sum of last hour of consumption stream
3) Pattern query to compare each supply with proceeding consumptions which
fulfills the conditions.

Thanks,
/Tishan

On Wed, Oct 17, 2018 at 10:46 PM Ramindu De Silva <ramin...@wso2.com> wrote:

> Hi all,
>
> In tutorial[1] which we are using for our labkit as well has the siddhi
> app as follows.
>
> @App:name('MaterialThresholdAlertApp')
>
> @source(type = 'http', @map(type = 'json'))
> define stream MaterialConsumptionStream(name string, user string, amount 
> double);
>
> @source(type = 'http', @map(type = 'json'))
> define stream MaterialSupplyStream(name string, supplier string, amount 
> double);
>
> @sink(type='log', prefix='Materials that go beyond sustainability threshold:')
> define stream MaterialThresholdAlertStream(name string, supplyAmount double, 
> consumptionAmount double, user string, supplier string);
>
> from MaterialConsumptionStream#window.time(1 hour) as c
>       join MaterialSupplyStream#window.time(1 hour) as s
>       on c.name == s.name
> select s.name, s.amount as supplyAmount, c.amount as consumptionAmount, user, 
> supplier
> group by s.name
> having s.amount * 0.95 < c.amount
> insert into MaterialThresholdAlertStream;
>
>
> But in-order to check the total consumed amount is greater than 95% of
> supplied amount, we should have the query as follows.
>
> select s.name, sum(s.amount) as supplyAmount, sum(c.amount) as 
> consumptionAmount, user, supplier
>
>
> But the results gets printed as follows when we simulate using the
> following steps,
>
>    1. Simulate "*MaterialSupplyStream*" with "sugar, yyy, 100"
>    2. Simulate "*MaterialConsumptionStream*" with "sugar, xxx, 97"
>       1. Materials that go beyond sustainability threshold: :
>       Event{timestamp=1539794935863, data=[sugar, *100.0*, 97.0, yyy,
>       xxx], isExpired=false}
>       3. Simulate "*MaterialConsumptionStream*" with "sugar, xxx, 97"
>       1. Materials that go beyond sustainability threshold: :
>       Event{timestamp=1539794936733, data=[sugar, *200.0*, 194.0, yyy,
>       xxx], isExpired=false}
>       4. Simulate "*MaterialConsumptionStream*" with "sugar, xxx, 97"
>       1. Materials that go beyond sustainability threshold: :
>       Event{timestamp=1539794937643, data=[sugar, *300.0*, 291.0, yyy,
>       xxx], isExpired=false}
>
> Even though we dont send event to the *MaterialSupplyStream,* the
> summation adds 100 each at each join. It should be resulted with the
> initial 100 that we sent. Is it? Please correct me if I'm wrong.
>
> Best Regards,
> Ramindu.
>
> 1. https://docs.wso2.com/display/SP430/Correlating+Simple+Events
>
>
> --
> *Ramindu De Silva*
> Senior Software Engineer
> WSO2 Inc.: http://wso2.com
> lean.enterprise.middleware
>
> email: ramin...@wso2.com <sanj...@wso2.com>
> mob: +94 719678895
>


-- 
*Tishan Dahanayakage* | Associate Technical Lead | WSO2 Inc.
(m) +94716481328 | (w) +94112145345 | (e) tis...@wso2.com
GET INTEGRATION AGILE
Integration Agility for Digitally Driven Business

Disclaimer: This communication may contain privileged or other confidential
information and is intended exclusively for the addressee/s. If you are not
the intended recipient/s, or believe that you may have received this
communication in error, please reply to the sender indicating that fact and
delete the copy you received and in addition, you should not print, copy,
re-transmit, disseminate, or otherwise use the information contained in
this communication. Internet communications cannot be guaranteed to be
timely, secure, error or virus-free. The sender does not accept liability
for any errors or omissions.
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to