Wisdom Filter filters events from a stream based on a given predicate. In Wisdom query, a filter can be used anywhere in between from and insert into or update statements.

In Java API, the filter method accepts any java.util.function.Predicate<Event> as the argument. For user's convenient, Wisdom offers the following built-in predicates:

Java API Query Operator Description
Operator.EQUALS == Checks if left operand is equal to right operand
Operator.GREATER_THAN > Checks if left operand is greater than right operand
Operator.GREATER_THAN_OR_EQUAL >= Checks if left operand is greater than or equal to right operand
Operator.LESS_THAN < Checks if left operand is less than right operand
Operator.LESS_THAN_OR_EQUAL <= Checks if left operand is less than or equal to right operand
Operator.IN in Checks if left operand is in right operand. Here the right operand can be a string or array
Operator.MATCHES matches Checks if left regex matches in the right string

Java API:

Filter events having symbol equal to AMAZON.

app.defineQuery("query1")
    .from("StockStream")
    .filter(event -> "UWO".equals(event.get("symbol")))
    .insertInto("OutputStream");

Above code can be written using built-in Operator.EQUALS predicate as shown below:

app.defineQuery("query1")
    .from("StockStream")
    .filter(Operator.EQUALS(Attribute.of("symbol"), "AMAZON"))
    .insertInto("OutputStream");

Wisdom Query:

Filter events having symbol equal to AMAZON.

from StockStream
filter symbol == 'AMAZON'
insert into OutputStream;

Wisdom Query supports the following logical operators: ==, >, >=, <, <=, in and matches