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

Reply via email to