On Wed, Oct 17, 2018 at 11:59 PM Tishan Dahanayakage <tis...@wso2.com> wrote:
> 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. > > +1 #3 can also be a join with window.length(1) of each stream, just to join and compare . 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. > -- *S. Suhothayan* | Director | WSO2 Inc. <https://wso2.com/> (m) (+94) 779 756 757 | (e) s...@wso2.com | (t) @suhothayan <https://twitter.com/suhothayan> GET INTEGRATION AGILE Integration Agility for Digitally Driven Business
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev