Hi Sajith, The use case is when retrieving data from aggregations,
from StockStream as S join TradeAggregation as T on S.symbol == T.symbol within "2014-02-15 00:00:00 +05:30", "2014-03-16 00:00:00 +05:30" per "days" select S.symbol, T.total, T.avgPrice insert into AggregateStockStream; Here, On condition equals should support a regex match, for instance, S.symbol == "WSO2(.*)". As of now the equal operator only supports object match[1]. [1] https://github.com/wso2/siddhi/blob/master/modules/siddhi-core/src/main/java/org/wso2/siddhi/core/executor/condition/compare/equal/EqualCompareConditionExpressionExecutorStringString.java#L34 Best Regards, *Niveathika Rajendran,* *Software Engineer.* *Mobile : +94 077 903 7536* On Thu, Aug 9, 2018 at 11:04 AM Thisaru Guruge <this...@wso2.com> wrote: > Here's my Siddhi Code: > > @App:name("IsAnalytics_Authentication_Aggregations") > @App:description("Handle Event from IS and save data in a table for > Overall Authentication") > > @source(type='inMemory', > topic='IsAnalytics.Authentication.Common.OutputSinkFromProcessedAuthenticationDataStream', > @map(type='passThrough')) > define stream ProcessedAuthenticationDataStream ( > meta_tenantId int, > eventId string, > username string, > localUsername string, > userStoreDomain string, > tenantDomain string, > remoteIp string, > region string, > inboundAuthType string, > serviceProvider string, > rememberMeEnabled bool, > forceAuthEnabled bool, > passiveAuthEnabled bool, > rolesCommaSeparated string, > authenticationStep string, > identityProvider string, > authStepSuccess bool, > stepAuthenticator string, > isFirstLogin bool, > successValue int, > failureValue int, > stepSuccessValue int, > firstLoginValue int, > identityProviderType string, > timestamp long > ); > > define stream PerUserRolesDuplicateEventStream ( > meta_tenantId int, > eventId string, > username string, > localUsername string, > userStoreDomain string, > tenantDomain string, > remoteIp string, > region string, > inboundAuthType string, > serviceProvider string, > rememberMeEnabled bool, > forceAuthEnabled bool, > passiveAuthEnabled bool, > rolesCommaSeparated string, > authenticationStep string, > identityProvider string, > authStepSuccess bool, > stepAuthenticator string, > isFirstLogin bool, > successValue int, > failureValue int, > stepSuccessValue int, > firstLoginValue int, > identityProviderType string, > timestamp long, > token string > ); > > @store(type='rdbms', datasource='IS_ANALYTICS_DB') > define aggregation RoleAggregation > from PerUserRolesDuplicateEventStream > select > meta_tenantId, > username, > serviceProvider, > identityProvider, > token as role, > remoteIp, > region, > userStoreDomain, > sum(successValue) as authSuccessCount, > sum(failureValue) as authFailureCount, > sum(stepSuccessValue) as authStepSuccessCount, > identityProviderType, > timestamp > group by > meta_tenantId, > username, > serviceProvider, > token > aggregate by timestamp every second ... year; > > @store(type='rdbms', datasource='IS_ANALYTICS_DB') > define aggregation AuthenticationStatAggregation > from ProcessedAuthenticationDataStream > select > meta_tenantId, > username, > localUsername, > rolesCommaSeparated, > serviceProvider, > identityProvider, > remoteIp, > region, > userStoreDomain, > sum(successValue) as authSuccessCount, > sum(failureValue) as authFailureCount, > sum(stepSuccessValue) as authStepSuccessCount, > sum(firstLoginValue) as authFirstSuccessCount, > identityProviderType, > timestamp > group by > meta_tenantId, > username, > localUsername, > remoteIp, > rolesCommaSeparated > aggregate by timestamp every second ... year; > > from ProcessedAuthenticationDataStream#str:tokenize(rolesCommaSeparated, > ',') > insert into PerUserRolesDuplicateEventStream; > > I have two aggregations, AuthenticationStatAggregation and the > RoleAggregation. I need to retrieve aggregated data from the > AuthenticationStatAggregation, based on the role. > > Issue with the "IN" operator is that if we have user roles like "Admin", > "SystemAdmin", "LocalAdmin", etc., query will match "Admin" for all these > entries. One way to overcome this is by storing them with a leading comma, > and search for ",admin,". > > On Wed, Aug 8, 2018 at 5:26 PM Sajith Ariyarathna <sajit...@wso2.com> > wrote: > >> Can you share your Siddhi code block here? >> >> I feel like what you have request here is similar to the functionality of >> SQL IN operator, rather than a regex. >> >> Also, have you tried to use the regexp function [1]? >> >> [1] >> https://wso2-extensions.github.io/siddhi-execution-string/api/4.0.19/#regexp-function >> >> Thanks. >> >> On Wed, Aug 8, 2018 at 5:16 PM Thisaru Guruge <this...@wso2.com> wrote: >> >>> Hi all, >>> >>> I have a use case where I need to retrieve data from an aggregation >>> using regex. >>> >>> The exact scenario is that I have a comma separated string, where I need >>> to retrieve data if one of the comma separated value is matching a string. >>> >>> I used String tokenizer to tokenize the comma separated values, but then >>> it will create duplicate events, hence aggregate values can be misleading. >>> If we can match regex this can be avoided. >>> >>> I had a discussion with @Niveathika Rajendran <niveath...@wso2.com> about >>> the matter, and what I learnt is that the "on" clause in siddhi matches the >>> strings using "equals" function in Java, hence regex might not work. >>> >>> Can we enhance it to match regex ? Or is there any workaround for this ? >>> >>> As per my understanding, it will be a huge load in the front end, if we >>> process this in the front-end side. Is it okay to process it in the front >>> end? >>> >>> Please comment. >>> >>> -- >>> Thanks and Best Regards, >>> Thisaru Guruge >>> Software Engineer >>> Mobile: +94 71 720 9720 >>> >>> >>> WSO2 Inc.: http://www.wso2.com >>> >>> >>> >> >> -- >> Sajith Janaprasad Ariyarathna >> Senior Software Engineer; WSO2, Inc.; http://wso2.com/ >> <https://wso2.com/signature> >> > > > -- > Thanks and Best Regards, > Thisaru Guruge > Software Engineer > Mobile: +94 71 720 9720 > > > WSO2 Inc.: http://www.wso2.com > > >
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev