Hi, This was solved by using unique Window and then filtered the stream by using past data which stored in a DB.
from IntermediateOutputStream_user#window.unique(book_id) select * insert into UniqueIntermediateOutputStream_user; from UniqueIntermediateOutputStream_user [not((book_id == userboughtbooksTable.book_id and user_id==userboughtbooksTable.user_id ) in userboughtbooksTable)] select * insert into RecommendationsOutputDataStream; Thanks and Best Regards, Saneth Dharmakeerthi Senior Software Engineer WSO2, Inc. Mobile: +94772325511 On Tue, Oct 21, 2014 at 11:19 AM, Seshika Fernando <[email protected]> wrote: > Hi Saneth, > > Were you able to do this? If so what is the query you used. > > seshika > > > > On Thu, Oct 16, 2014 at 5:30 PM, Aiyadurai Rajeevan <[email protected]> > wrote: > >> Hi Saneth, >> >> If i'm not mistaken we can achieve this using a custom transform. Since >> you have a separate table which holds all the books, You simply check using >> some java code and send the result as an output stream. >> >> Then your query would something like below, >> >> from userboughtbooks#window.time(10 min) >> >> select userboughtbooks.book_id as boughtBooks >> >> insert into IntermediateOutputStream >> >> >> from IntermediateOutputStream#transform.custom:AvailableBook(boughtBooks) >> >> select availableBook >> >> insert into RecommendationsOutputDataStream >> >> >> where AvailableBook would be your custom transform written in Java. >> >> >> >> Thanks & Regards, >> S.A.Rajeevan >> Software Engineer WSO2 Inc >> E-Mail: [email protected] | Mobile : +94776411636 >> >> On Thu, Oct 16, 2014 at 12:52 PM, Seshika Fernando <[email protected]> >> wrote: >> >>> Hi Saneth, >>> >>> The reason for this is because, when you put a != , the join happens as >>> follows. >>> [image: Inline image 2] >>> >>> >>> This is why you get book1 and book2 once and book3, and book4 twice, in >>> your RecommendationsOutputStream. You may have to use a count operator from >>> the RecommendationsOutputStream to determine which books have not been >>> bought. >>> >>> Seshika >>> >>> >>> >>> On Thu, Oct 16, 2014 at 12:29 PM, Rajeev Sampath <[email protected]> >>> wrote: >>> >>>> Hi, >>>> >>>> On Thu, Oct 16, 2014 at 12:07 PM, Saneth Dharmakeerthi < >>>> [email protected]> wrote: >>>> >>>>> Hi, >>>>> >>>>> I am writing a Siddhi query to get the un-purchased books from an >>>>> event table that has all the books and a stream that contains the >>>>> already bought books. >>>>> >>>>> my quarry is like this; >>>>> >>>>> *userboughtbooks: *Stream that contains the already bought books >>>>> *bookGroupTable: *Table that has all the books >>>>> *RecommendationsOutputDataStream: *Out put stream that contains all >>>>> un-purchased books. >>>>> >>>>> from userboughtbooks#window.time(10 min) join bookGroupTable >>>>> on bookGroupTable.book_id != userboughtbooks.book_id >>>>> select bookGroupTable.book_id >>>>> insert into RecommendationsOutputDataStream >>>>> >>>>> 1. when userboughtbooks has one element it gives the correct result. >>>>> >>>>> userboughtbooks: book1 >>>>> bookGroupTable: book1, book2, book3, book4 >>>>> RecommendationsOutputDataStream: book2, book3, book4 >>>>> >>>>> 2. but userboughtbooks has more than one element gives the out put >>>>> like follows >>>>> >>>>> userboughtbooks: book1, book2 >>>>> bookGroupTable: book1, book2, book3, book4 >>>>> RecommendationsOutputDataStream: book1,book2,book3,book3,book4,book4 >>>>> >>>>> I think behaviour of [2] , because of joining with more than one >>>>> element. >>>>> >>>>> Is there a recommended way to accomplish this task? >>>>> >>>>> >>>>> >>>> As a workaround to solve this, you can add another query to check >>>> whether each output of recommendations stream exists in the table and then >>>> output only the non existing ones. >>>> >>>> eg: >>>> >>>> from RecommendationsOutputDataStream [not ((book_id == >>>> bookGroupTable.book_id ) in bookGroupTable)] >>>> select * >>>> insert into filteredRecommendationsStream; >>>> >>>> >>>> Thanks >>>> Rajeev >>>> >>>> >>>> >>>>> >>>>> Thanks and Best Regards, >>>>> >>>>> Saneth Dharmakeerthi >>>>> Senior Software Engineer >>>>> WSO2, Inc. >>>>> Mobile: +94772325511 >>>>> >>>>> _______________________________________________ >>>>> Dev mailing list >>>>> [email protected] >>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>> >>>>> >>>> >>>> >>>> -- >>>> Rajeev Sampath >>>> Senior Software Engineer >>>> WSO2, Inc.; http://www.wso2.com. >>>> >>>> Mobile: >>>> * +94716265766 <%2B94716265766>* >>>> >>>> _______________________________________________ >>>> Dev mailing list >>>> [email protected] >>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>> >>>> >>> >>> _______________________________________________ >>> Dev mailing list >>> [email protected] >>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>> >>> >> > > _______________________________________________ > Dev mailing list > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > >
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
