Siddhi language has a wide verity of extension ranging from string processing to natural language processing. These extensions can be utilized in numerous scenarios to manipulate attributes with ease. When using extensions within Siddhi queries you need to follow the convention of extensionName:functionName to refer to a particular extension. If the extension is of the Function type you can refer to it as shown in the following example in different parts of the query.
FROM inputStream[str:contains(description, "Pi-Value")]SELECT id, math:round(math:pi()) as roundedPiValue
INSERT INTO outputStream;
If the extension is of the Stream Processor type, you can refer to it as follows.
#reorder:kslack(eventTimestamp)
e.g.,
@info(name = 'query1')FROM inputStream#reorder:kslack(eventTimestamp)
SELECT eventTimestamp, price, volume
INSERT INTO outputStream;
The extensions that are currently available for Siddhi are as follows.
math
Math extension provides basic mathematical functions such as calculating absolute value, sin, cos, tan, base conversion, parsing, etc. Following are the functions of the Math extension.
abs
Syntax | <double> abs(<float|double> p1) |
---|
Extension Type | Function |
---|
Description | Returns the absolute value of p1 . This function wraps the java.lang.Math.abs() function. |
---|
Examples | Both the following queries return 3 since the absolute value of both 3 and -3 is 3 . |
---|
acos
Syntax | <double> acos(<float|double> p1) |
---|
Extension Type | Function |
---|
Description | If -1 <= p1 <= 1, this function returns the arc-cosine (inverse cosine) of p1 . If not, it returns NULL. The return value is in radian scale. This function wraps the java.lang.Math.acos() function. |
---|
Example | acos(0.5) returns 1.0471975511965979 . |
---|
asin
Syntax | <double> asin (<float|double> p1) |
---|
Extension Type | Function |
---|
Description | If -1 <= p1 <= 1, this function returns the arc-sin (inverse sine) of p1 . If not, it returns NULL . The return value is in radian scale. This function wraps the java.lang.Math.asin() function. |
---|
Example | asin(0.5) returns 0.5235987755982989 . |
---|
atan
Syntax | <double> atan(<int|long|float|double> p1) |
---|
Extension Type | Function |
---|
Description | Returns the arc-tangent (inverse tangent) of p1 . The return value is in radian scale. This function wraps the java.lang.Math.atan() function. |
---|
Examples | atan(6d) returns 1.4056476493802699 . |
---|
Syntax | <double> atan (<int|long|float|double> p1, <int|long|float|double> p2) |
---|
Extension Type | Function |
---|
Description | Returns the arc-tangent (inverse tangent) of
p1
and
p2
coordinates. The return value is in radian scale. This function wraps the java.lang.Math.atan2() function. |
---|
Examples | atan(12d, 5d) returns 1.1760052070951352 . |
---|
bin
Syntax | <string> bin(<int|long> p1)
|
---|
Extension Type | Function |
---|
Description | Returns a string representation of the integer/long p1 argument as an unsigned integer in base 2 . This function wraps the java.lang.Integer.toBinaryString and java.lang.Long.toBinaryString methods. |
---|
Examples | bin(9) returns "1001" . |
---|
ceil
Syntax | <double> ceil(<float|double> p1) |
---|
Extension Type | Function |
---|
Description | Returns the smallest (closest to negative infinity) double value that is greater than or equal to the p1 argument, and is equal to a mathematical integer. This function wraps the java.lang.Math.ceil() method. |
---|
Example | ceil(423.187d) returns 424.0 . |
---|
conv
Syntax | <string> conv(<string> a, <int> fromBase, <int> toBase) |
---|
Extension Type | Function |
---|
Description | Converts a from the fromBase base to the toBase base. |
---|
Example | conv("7f", 16, 10) returns "127" . |
---|
copySign
Syntax | <double> copySign(<int|long|float|double> magnitude, <int|long|float|double> sign) |
---|
Extension Type | Function |
---|
Description | Returns the magnitude of magnitude with the sign of sign . This function wraps the java.lang.Math.copySign() function. |
---|
Example | copySign(5.6d, -3.0d) returns -5.6 . |
---|
cos
Syntax | <double> cos(<int|long|float|double> p1) |
---|
Extension Type | Function |
---|
Description | Returns the cosine of p1 ( p1 is in radians). This function wraps the java.lang.Math.cos() function. |
---|
Example | cos(6d) returns 0.9601702866503661 . |
---|
cosh
Syntax | <double> cosh(<int|long|float|double> p1) |
---|
Extension Type | Function |
---|
Description | Returns the hyperbolic cosine of p1 ( p1 is in radians). This function wraps the java.lang.Math.cosh() function. |
---|
Example | cosh (6d) returns 201.7156361224559 . |
---|
cbrt
Syntax | <double> cbrt(<int|long|float|double> p1) |
---|
Extension Type | Function |
---|
Description | Returns the cube-root of p1 ( p1 is in radians). This function wraps the java.lang.Math.cbrt() function. |
---|
Example | cbrt(17d) returns 2.5712815906582356 . |
---|
e
Syntax | <double> e() |
---|
Extension Type | Function |
---|
Description | Returns the java.lang.Math.E constant, which is the closest double value to e (which is the base of the natural logarithms). |
---|
Example | e() returns 2.7182818284590452354 . |
---|
exp
Syntax | <double> exp(<int|long|float|double> p1) |
---|
Extension Type | Function |
---|
Description | Returns Euler's number e raised to the power of p1 . This function wraps the java.lang.Math.exp() function. |
---|
Example | exp(10.23) returns 27722.51006805505 . |
---|
floor
Syntax | <double> floor(<int|long|float|double> p1) |
---|
Extension Type | Function |
---|
Description | This function wraps the java.lang.Math.floor() function that returns the largest (closest to positive infinity) value that is less that or equal to p1 , and is equal to a mathematical integer. |
---|
Example | floor(10.23) returns 10.0. |
---|
getExponent
Syntax | <double> getExponent(<int|long|float|double> p1) |
---|
Extension Type | Function |
---|
Description | Returns the unbiased exponent used in the representation of p1 . This function wraps the java.lang.Math.getExponent() function. |
---|
Example | getExponent(60984.1) returns 15 . |
---|
hex
Syntax | <string> hex(<int|long|float|double> p1) |
---|
Extension Type | Function |
---|
Description | This function wraps the java.lang.Double.toHexString() function that returns a hexadecimal string representation of p1 . |
---|
Example | hex(200) returns "c8" . |
---|
isInfinite
Syntax | <boolean> isInfinite(<float|double> p1) |
---|
Extension Type | Function |
---|
Description | This function wraps the java.lang.Float.isInfinite() and java.lang.Double.isInfinite() functions that return true if p1 is infinitely large in magnitude, or return false otherwise. |
---|
Example | isInfinite(java.lang.Double.POSITIVE_INFINITY) returns true . |
---|
isNan
Syntax | < boolean> isNan(<float|double> p1) |
---|
Extension Type | Function |
---|
Description | This function wraps the java.lang.Float.isNaN() and java.lang.Double.isNaN() functions that return true if p1 is a NaN (Not-a-Number) value, or return false otherwise. |
---|
Example | isNan(java.lang.Math.log(-12d) ) returns true . |
---|
ln
Syntax | <double> ln (< int|long|float|double > p1) |
---|
Extension Type | Function |
---|
Description | Returns the natural logarithm (base e) of p1 . |
---|
Example | ln(11.453) returns 2.438251704415579 . |
---|
log2
Syntax | <double> log2 (< int|long|float|double > p1) |
---|
Extension Type | Function |
---|
Description | Returns the base 2 logarithm of p1 . |
---|
Example | log2(91d) returns 6.507794640198696 . |
---|
log10
Syntax | <double> log10 ( < int|long|float|double > p1 ) |
---|
Extension Type | Function |
---|
Description | Returns the base 10 logarithm of p1. |
---|
Example | log10(19.234) returns 1.2840696117100832 . |
---|
log
Syntax | <double> log (< int|long|float|double > number, < int|long|float|double > base ) |
---|
Extension Type | Function |
---|
Description | Returns the logarithm (base=base) of number . |
---|
Example | log(34, 2f) returns 5.08746284125034 . |
---|
max
Syntax | <double> max (< int|long|float|double > p1, <int|long|float|double> p2 ) |
---|
Extension Type | Function |
---|
Description | Returns the greater value out of p1 and p2 . |
---|
Example | max(123.67d, 91) returns 123.67 . |
---|
min
Syntax | <double> min (< int|long|float|double > p1, <int|long|float|double> p2 ) |
---|
Extension Type | Function |
---|
Description | Returns the smaller value out of p1 and p2 . |
---|
Example | min(123.67d, 91) returns 91 . |
---|
oct
Syntax | <string> oct (<int|long> p1) |
---|
Extension Type | Function |
---|
Description | Converts p1 to octal. |
---|
Example | oct(99l) returns "143" . |
---|
parseDouble
Syntax | <double> parseDouble (<string> str) |
---|
Extension Type | Function |
---|
Description | Returns str as a double. |
---|
Example | parseDouble("123") returns 123.0 . |
---|
parseFloat
Syntax | <float> parseFloat (<string> str) |
---|
Extension Type | Function |
---|
Description | Returns str as a float. |
---|
Example | parseFloat("123") returns 123.0 . |
---|
parseInt
Syntax | <int> parseInt (<string> str) |
---|
Extension Type | Function |
---|
Description | Returns str as an int. |
---|
Example | parseInt("123") returns 123 . |
---|
parseLong
Syntax | <long> parseLong (<string> str) |
---|
Extension Type | Function |
---|
Description | Returns str as a long. |
---|
Example | parseLong("123") returns 123 . |
---|
pi
Syntax | <double> pi ( ) |
---|
Extension Type | Function |
---|
Description | Returns the java.lang.Math.PI constant, which is the closest value to pi (i.e. the ratio of the circumference of a circle to its diameter). |
---|
Example | pi() always returns 3.141592653589793 . |
---|
power
Syntax | <double> power ( < int|long|float|double> value, <int|long|float|double> toPower ) |
---|
Extension Type | Function |
---|
Description | Returns value raised to the power of toPower . |
---|
Example | power(5.6d, 3.0d) returns 175.61599999999996 . |
---|
rand
Syntax | <double> rand ( ) |
---|
Extension Type | Function |
---|
Description | A sequence of calls to rand() generates a stream of pseudo-random numbers. This function uses the java.util.Random class internally. |
---|
Example | Two sequential calls to rand() may return 0.8263929447650588 and 0.24425883860361197 respectively. |
---|
Syntax | <double> rand (< int|long > seed) |
---|
Extension Type | Function |
---|
Description | A sequence of calls to rand(seed ) generates a stream of pseudo-random numbers. This function uses the java.util.Random class internally. |
---|
Example | Two sequential calls to rand(12) may return 0.7298928061101974 and 0.2750691655200749 , respectively. |
---|
round
Syntax | <int> round (<float> value )
|
---|
Extension Type | Funcion |
---|
Description | Returns the closest integer value to the argument. |
---|
Example | round(3.35) returns 3 . |
---|
Syntax | <long> round (<double> value ) |
---|
Extension Type | Function |
---|
Description | Returns the closest long value to the argument. |
---|
Example | round(3252.353) returns 3252 . |
---|
signum
Syntax | <int> signum (< int|long|float|double > p1) |
---|
Extension Type | Function |
---|
Description | - If
a is a positive, this returns the sign of p1 as 1.0 . - If
a is a negative, this returns the sign of p1 as -1.0 . - If
a is neither a positive or a negative, this returns the sign of p1 as 0.0 .
This function wraps the java.lang.Math.signum() function. |
---|
Example | signum(-6.32d) returns -1 . |
---|
sin
Syntax | <double> sin (< int|long|float|double > p1) |
---|
Extension Type | Function |
---|
Description | Returns the sine of p1 ( p1 is in radians). This function wraps the java.lang.Math.sin() function. |
---|
Example | sin(6d ) returns -0.27941549819892586. |
---|
sinh
Syntax | <double> sinh (< int|long|float|double > p1) |
---|
Extension Type | Function |
---|
Description | Returns the hyperbolic sine of p1 ( p1 is in radians). This function wraps the java.lang.Math.sinh() function. |
---|
Example | sinh(6d) returns 201.71315737027922 . |
---|
sqrt
Syntax | <double> sqrt (< int|long|float|double > p1) |
---|
Extension Type | Function |
---|
Description | Returns the square-root of p1 . This function wraps the java.lang.Math.sqrt() function. |
---|
Example | sqrt(4d) returns 2 . |
---|
tan
Syntax | <double> tan (< int|long|float|double > p1) |
---|
Extension Type | Function |
---|
Description | Returns the tan of p1 ( p1 is in radians). This function wraps the java.lang.Math.tan() function. |
---|
Example | tan(6d) returns -0.29100619138474915 . |
---|
tanh
Syntax | <double> tanh (<int|long|float|double> p1) |
---|
Extension Type | Function |
---|
Description | Returns the hyperbolic tangent of p1 ( p1 is in radians). This function wraps the java.lang.Math.tanh() function. |
---|
Example | tanh(6d) returns 0.9999877116507956 . |
---|
toDegrees
Syntax | <double> toDegrees (< int|long|float|double > p1) |
---|
Extension Type | Function |
---|
Description | Converts
p1
from radians to degrees. This function wraps the java.lang.Math.toDegrees() function. |
---|
Example | toDegrees(6d) returns 343.77467707849394 . |
---|
toRadians
Syntax | <double> toRadians (< int|long|float|double > p1) |
---|
Extension Type | Function |
---|
Description | Converts p1 from degrees to radians. This function wraps the java.lang.Math.toRadians() function. |
---|
Example | toRadians(6d) returns 0.10471975511965977 . |
---|
str
This extension provides basic string handling capabilities such as con-cat, length, convert to lowercase, replace all, etc. Following are the functions of the String extension.
charAt
Syntax | <string> charAt(<string> str, <int> index) |
---|
Extension Type | Function |
---|
Description | Returns the char value as a string value at the specified index. |
---|
Example | charAt("WSO2", 1) returns 'S' . |
---|
coalesce
Syntax | < int|long|float|double|string|boolean > coalesce (< int|long|float|double|string|boolean > arg1, < int|long|float|double|string|boolean > arg2 ,.., < int|long|float|double|string|boolean > argN ) |
---|
Extension Type | Function |
---|
Description | Returns the value of the first of its input parameters that is not null. |
---|
Parameters | This functions accepts any number of parameters. The parameters can be of different types. |
---|
Return Type | This is the same as the type of the first input parameter that is not null. |
---|
Examples | coalesce("123", null, "789") returns "123" .coalesce(null, "BBB", "CCC") returns "BBB" .coalesce(null, null, null) returns null .
|
---|
concat
Syntax | <string> concat ( <int|long|float|double|string|boolean > arg1, < int|long|float|double|string|boolean > arg2 ,.., < int|long|float|double|string|boolean > argN ) |
---|
Extension Type | Function |
---|
Description | Returns a string that is the result of concatenating the given arguments: arg1 , arg2 , .., argN . |
---|
Examples | concat("D533", "8JU^", "XYZ") returns "D5338JU^XYZ" .concat("AAA", null, "CCC") returns "AAACCC" .
|
---|
hex
Syntax | <string> hex ( < string> str) |
---|
Extension Type | Function |
---|
Description | Returns a hexadecimal string representation of str . |
---|
Example | hex("MySQL") returns "4d7953514c" . |
---|
length
Syntax | <int> length ( < string> str) |
---|
Extension Type | Function |
---|
Description | Returns the length of the string: str . |
---|
Examples | length("Hello World") returns 11 . |
---|
lower
Syntax | <string> lower ( < string> str) |
---|
Extension Type | Function |
---|
Description | Converts the capital letters in the str input string to the equivalent simple letters. |
---|
Example | lower("WSO2 cep ") returns "wso2 cep " . |
---|
regexp
Syntax | <boolean> regexp ( < string> str, <string> regex ) |
---|
Extension Type | Function |
---|
Description | Returns true if the given string (i.e. str ) matches the given regular expression (i.e. regex ). Returns false if the string does not match the regular expression. |
---|
Example | regexp("WSO2 abcdh", "WSO(.*h)") returns true . |
---|
repeat
Syntax | <string> repeat ( < string> str, <int> times) |
---|
Extension Type | Function |
---|
Description | Repeats the specified string (i.e. string ) for the specified number of times (i.e. times ). |
---|
Example | repeat("StRing 1", 3) returns "StRing 1StRing 1StRing 1" . |
---|
replaceAll
Syntax | <string> replaceAll ( < string> str, <string> regex , <string> replacement) |
---|
Extension Type | Function |
---|
Description | Replaces each substring of the given string (i.e. str ) that matches the given regular expression (i.e. regex ) with the string specified as the replacement (i.e. replacement ). |
---|
Example | replaceAll("hello hi hello", 'hello', 'test') returns "test hi test" . |
---|
replaceFirst
Syntax | <string> replaceFirst (< string> str , <string> regex , <string> replacement ) |
---|
Extension Type | Function |
---|
Description | Replaces the first substring that matches the given regular expression (i.e.
regex
) with the string specified as the replacement (i.e.
replacement
) |
---|
Example | replaceFirst("hello WSO2 A hello", 'WSO2(.*)A', 'XXXX') returns "hello XXXX hello" . |
---|
reverse
Syntax | <string> reverse ( < string> str) |
---|
Extension Type | Function |
---|
Description | Returns the reverse ordered string of str . |
---|
Example | reverse("Hello World") returns "dlroW olleH" . |
---|
strcmp
Syntax | <int> strcmp ( < string> str, <string> compareTo) |
---|
Extension Type | Function |
---|
Description | Compares str with compareTo strings lexicographically. |
---|
Examples | strcmp("Hello", 'Hello') returns 0 .strcmp("AbCDefghiJ KLMN", 'Hello') returns -7 .
|
---|
substr
Syntax | <string> substr ( < string> sourceText, <int> beginIndex ) |
---|
Extension Type | Function |
---|
Description | Returns a ne string that is a substring of
sourceText. |
---|
Example | substr("AbCDefghiJ KLMN", 4) returns "efghiJ KLMN" . |
---|
Syntax | <string> substr ( < string> sourceText, <int> beginIndex, <int> length ) |
---|
Extension Type | Function |
---|
Description | Returns a new string that is a substring of sourceText . |
---|
Example | substr("AbCDefghiJ KLMN", 2, 4) returns "CDef" . |
---|
Syntax | <string> substr ( < string> sourceText, <string> regex) |
---|
Extension Type | Function |
---|
Description | Returns a new string that is a substring of sourceText . |
---|
Examples | substr("WSO2D efghiJ KLMN", '^WSO2(.*)') returns "WSO2D efghiJ KLMN" . |
---|
Syntax | <string> substr ( < string> sourceText, <string> regex, <int> groupNumber ) |
---|
Extension Type | Function |
---|
Description | Returns a new string that is a substring of sourceText . |
---|
Example | substr("WSO2 cep WSO2 XX E hi hA WSO2 heAllo", 'WSO2(.*)A(.*)', 2) returns " ello" . |
---|
trim
Syntax | <string> trim ( < string> str) |
---|
Extension Type | Function |
---|
Description | Returns a copy of str , with the leading and/or trailing white-spaces omitted. |
---|
Example | trim(" AbCDefghiJ KLMN ") returns "AbCDefghiJ KLMN" . |
---|
unhex
Syntax | <string> unhex ( < string> str) |
---|
Extension Type | Function |
---|
Description | This is the equivalent of the unhex function in mysql 5.0. unhex(str) interprets each pair of characters in str as a hexadecimal number. Also see hex () string extension. |
---|
Example | unhex("4d7953514c") returns "MySQL" . |
---|
upper
Syntax | <string> upper ( <string> str) |
---|
Extension Type | Function |
---|
Description | Converts the simple letters in the given input string (i.e. str ) to the equivalent capital letters. |
---|
Example | upper("Hello World") returns "HELLO WORLD" . |
---|
contains
Syntax | <bool> contains ( < string> inputSequence, <string> searchingSequence ) |
---|
Extension Type | Function |
---|
Description | This method returns true if inputSequence contains the specified sequence of char values in the searchingSequence . |
---|
Example | contains("21 products are produced by WSO2 currently", "WSO2") returns true . |
---|
geo
This extension provides geo data related functionality such as checking whether a given geo coordinate is within a predefined geo-fence, etc. Following are the functions of the Geo extension.
intersects
Syntax | <bool> intersects (<string> geoJSONGeometry , <string> geoJSONGeometryFence ) |
---|
Extension Type | Function |
---|
Description | Returns true if the geoJSONGeometry incoming event intersects the given string (i.e. geoJSONGeometryFence ). Returns false otherwise. |
---|
Example | intersects( {'type':'Polygon','coordinates':[[[0.5, 0.5],[0.5, 1.5],[1.5, 1.5],[1.5, 0.5],[0.5, 0.5]]]} , {'type':'Polygon','coordinates':[[[0, 0],[0, 1],[1, 1],[1, 0],[0, 0]]]} ), returns true because geoJSONGeometry intersects geoJSONGeometryFence . |
---|
Syntax | <bool> intersects (<double> longitude , <double> latitude , <string> geoJSONGeometryFence ) |
---|
Extension Type | Function |
---|
Description | Returns true if the location specified in terms of longitude and latitude intersects the given geoJSONGeometryFence . Returns false otherwise. |
---|
Example | intersects(0.5. 0.5 , {'type':'Polygon','coordinates':[[[0, 0],[0, 1],[1, 1],[1, 0],[0, 0]]]}), returns true because the location specified in terms of longitude and latitude intersects geoJSONGeometryFence . |
---|
within
Syntax | <bool> within (<double> longitude , <double> latitude, <string> geoJSONGeometryFence ) |
---|
Extension Type | Function |
---|
Description | Returns true if the location specified in terms of longitude and latitude is within the geoJSONGeometryFence . |
---|
Examples | within(0.5, 0.5, {'type':'Polygon','coordinates':[[[0,0],[0,2],[1,2],[1,0],[0,0]]]} ) returns true .within(2, 2, {'type':'Polygon','coordinates':[[[0,0],[0,2],[1,2],[1,0],[0,0]]]} ) returns false .
|
---|
Syntax | <bool> within (<string> geoJSONGeometry , <string> geoJSONGeometryFence ) |
---|
Extension Type | Function |
---|
Description | Returns true if the geoJSONGeometry is within the geoJSONGeometryFence . Returns false otherwise. |
---|
Example | within( {'type': 'Circle', 'radius': 110575, 'coordinates':[1.5, 1.5]} , {'type':'Polygon','coordinates':[[[0,0],[0,4],[3,4],[3,0],[0,0]]]} ) returns true .-
within( {'type': 'Circle', 'radius': 110575, 'coordinates':[0.5, 1.5]} , {'type':'Polygon','coordinates':[[[0,0],[0,4],[3,4],[3,0],[0,0]]]} ) returns false .
|
---|
withindistance
Syntax | <bool> withindistance (<double> longitude , <double> latitude, <string> geoJSONGeometryFence ) |
---|
Extension Type | Function |
---|
Description | Returns true if the location specified in terms of longitude and latitude is within distance of the geoJSONGeometryFence . Returns false otherwise. |
---|
Example | withindistance( 0.5 , 0.5, {'type':'Polygon','coordinates':[[[0, 0],[0, 1],[1, 1],[1, 0],[0, 0]]]}, 110574.61087757687) returns true because the location specified in terms of longitude and latitude is within the distance of the geoJSONGeometryFence . |
---|
Syntax | <bool> withindistance (<string> geoJSONGeometry , <string> geoJSONGeometryFence , <double> distance ) |
---|
Extension Type | Function |
---|
Description | Returns true if the area given by geoJSONGeometry is within distance of the geoJSONGeometryFence . |
---|
Example | withindistance( {'type':'Polygon','coordinates':[[[0.5, 0.5],[0.5, 1.5],[1.5, 1.5],[1.5, 0.5],[0.5, 0.5]]]} , {'type':'Polygon','coordinates':[[[0, 0],[0, 1],[1, 1],[1, 0],[0, 0]]]}, 110574.61087757687) returns true because geoJSONGeometry is within the distance of geoJSONGeometryFence . |
---|
crosses
Syntax | <bool> crosses (<string> id , <double> longitude, <double> latitude , <string> geoJSONGeometryFence ) |
---|
Extension Type | Function |
---|
Description | Returns true when the the specified object of which the location is specified in terms of longitude and latitude crosses the geographic location specified in geoJSONGeometryFence . Returns false when the object crosses out of the location specified in geoJSONGeometryFence . |
---|
Example | crosses(km-4354, -0.5, 0.5, {'type':'Polygon','coordinates':[[[0, 0],[2, 0],[2, 1],[0, 1],[0, 0]]]} ) returns true .km-4354, 1.5, 0.5, {'type':'Polygon','coordinates':[[[0, 0],[2, 0],[2, 1],[0, 1],[0, 0]]]} ) returns true .
|
---|
Syntax | <bool> crosses (<string> id , <string> geoJSONGeometry , <string> geoJSONGeometryFence ) |
---|
Extension Type | StreamProcessor |
---|
Description | Returns true when the object (i.e. geoJSONGeometry ) crosses the specified geographic location (i.e. geoJSONGeometryFence ). Returns false when the object crosses out of geoJSONGeometryFence . |
---|
stationary
Syntax | <bool> stationary (<string> id , <double> longitude, <double> latitude , <string> geoJSONGeometryFence , <double> radius ) |
---|
Extension Type | StreamProcessor |
---|
Description | Returns true when the object (defined in terms of longitude and latitude ) becomes stationary within the specified radius . Returns false when the object moves out of the specified radius. |
---|
Example | stationary(km-4354,0,0, 110574.61087757687) returns true .stationary(km-4354,1,1, 110574.61087757687) returns
true
.
stationary(km-4354,1,1.5, 110574.61087757687) returns true .
|
---|
Syntax | <bool> stationary (<string> id , <string> geoJSONGeometry , <string> geoJSONGeometryFence , <double> radius ) |
---|
Extension Type | StreamProcessor |
---|
Description | Returns true when the object (i.e. geoJSONGeometry ) becomes stationary within the specified radius . Returns false when the objects moves out of the specified radius. |
---|
proximity
Syntax | <bool,string> proximity (<string> id , <double> longitude, <double> latitude , <string> geoJSONGeometryFence , <double> radius ) |
---|
Extension Type | StreamProcessor |
---|
Description | Returns true when two objects (specified in terms of
longitude
and
latitude) are within the specified radius to another object. Returns false when the specified object moves out of the specified radius . The proximityWith optional attribute indicates the ID of the object that the object specified is in close proximity with. proximityID is a unique ID for the two objects in close proximity. |
---|
Example | The following return true with ID3 . proximity(1, 0, 0, 110574.61087757687) proximity(2, 1, 1, 110574.61087757687) proximity(3, 2, 2, 110574.61087757687) proximity(1, 1.5, 1.5, 110574.61087757687)
|
---|
Syntax | <bool> proximity (<string> id , <string> geoJSONGeometry , <string> geoJSONGeometryFence , <double> radius ) |
---|
Extension Type | StreamProcessor |
---|
Description | Returns true when an object (i.e. geoJSONGeometry ) is within the specified radius from another object. Returns false when one or both objects move away from each other and are no longer within the specified
radiu
s of each other. The proximityWith optional attribute indicates the ID of the object that the object specified is in close proximity with. proximityID is a unique ID for the two objects in close proximity. |
---|
geocode
Syntax | <double, double, string> geocode (<string> location
) |
---|
Extension Type | StreamProcessor |
---|
Description | Transforms a location to its geo-coordinates ( longitude and latitude ) and formatted address. |
---|
Example | geocode(duplication rd) returns the following data with adherring latitude, longitude, and formattedAddress attribute names respectively. 6.8995244d, 79.8556202d, "R A De Mel Mawatha, Colombo, Sri Lanka" |
---|
r
This extension allows you to execute R scripts within Siddhi query. Following are the functions of the R extension.
eval
Syntax | [<int|long|float|double|string|boolean> output1 , <int|long|float|double|string|boolean> output2, ... ] eval ( <string > script, <string > outputAttributes, <int|long|float|double|string|boolean > input1 , <int|long|float|double|string|boolean> input2 , ... ) |
---|
Extension Type | StreamProcessor |
---|
Description | This runs the R script for each event and produces aggregated outputs based on the provided input variable parameters and expected output attributes. |
---|
Parameters | script : R script as a string produces aggregated outputs based on the provided input variable parameters and expected output attributes. outputAttributes : A set of output attributes separated by commas as string. Each attribute is denoted as <name><space><type> . e.g., 'output1 string, output2 long' |
---|
Return Parameters | Output parameters are generated based on the outputAttributes provided. |
---|
Example | eval('totalItems <- sum(items); totalTemp <- sum(temp);', 'totalItems int, totalTemp double', items, temp) , where the data type of items is int and that of temp is double returns [ totalItems, totalTemp ] , where the data type of totalItems is int and that of totalTemp is double .
|
---|
evalSource
Syntax | [<int|long|float|double|string|boolean> output1 , <int|long|float|double|string|boolean> output2, ... ] eval ( <string > filePath, <string > outputAttributes,<int|long|float|double|string|boolean> input1 , <int|long|float|double|string|boolean> input2 , ... ) |
---|
Extension Type | Stream Processor |
---|
Description | This runs the R script loaded from a file to each event and produces aggregated outputs based on the provided input variable parameters and expected output attributes. |
---|
Parameters | filePath : The file path of the R script where this script uses the input variable parameters and produces the expected output attributes. outputAttributes : A set of output attributes separated by commas as string. Each attribute is denoted as <name><space><type> . e.g., 'output1 string, output2 long' |
---|
Return | Output parameters are generated based on the outputAttributes provided. |
---|
Example | eval('/home/user/test/script1.R', 'totalItems int, totalTemp double', items, temp) , where the data type of items is int and that of temp is double returns [ totalItems, totalTemp ] where the data type of totalTemp is int and that of totalTemp is double. |
---|
regex
This extension provides basic RegEx execution capabilities to Siddhi. Following are the functions of the RegEx extension.
find
Syntax | <bool> find (<string> regex , <string> inputSequence ) |
---|
Extension Type | Function |
---|
Description | This method attempts to find the next sub-sequence of the inputSequence that matches the regex pattern. It returns true if such a sub sequence exists, or returns false otherwise. |
---|
Examples | find("\d\d(.*)WSO2", "21 products are produced by WSO2 currently") returns true .find("\d\d(.*)WSO2", "21 products are produced currently") returns false .
|
---|
Syntax | <bool> find (<string> regex , <string> inputSequence, <int> startingIndex ) |
---|
Extension Type | Function |
---|
Description | This method attempts to find the next sub-sequence of the inputSequence that matches the regex pattern starting from given index (i.e. startingIndex ). It returns true if such a sub sequence exists, or returns false otherwise. |
---|
Examples | find("\d\d(.*)WSO2", "21 products are produced within 10 years by WSO2 currently by WSO2 employees", 30) returns true .find("\d\d(.*)WSO2", "21 products are produced within 10 years by WSO2 currently by WSO2 employees", 35) returns false .
|
---|
group
Syntax | <string> group (<string> regex , <string> inputSequence , <int> groupId ) |
---|
Extension Type | Function |
---|
Description | Returns the input sub-sequence captured by the given group during the previous match operation. Returns null if no sub-sequence was found during the previous match operation. For more information about the match operation, see matches. |
---|
Example | group("(\d\d)(.*)(WSO2.*)", "21 products are produced within 10 years by WSO2 currently by WSO2 employees", 3) returns "WSO2 employees" . |
---|
lookingAt
Syntax | <string> lookingAt (<string> regex , <string> inputSequence ) |
---|
Extension Type | Function |
---|
Description | This method attempts to match the inputSequence against the regex pattern starting at the beginning. |
---|
Examples | lookingAt("\d\d(.*)WSO2", "21 products are produced by WSO2 currently in Sri Lanka" ) returns true .lookingAt("WSO2(.*)middleware(.*)", "sample test string and WSO2 is situated in trace and its a middleware company") returns false .
|
---|
matches
Syntax | <string> matches (<string> regex , <string> inputSequence ) |
---|
Extension Type | Function |
---|
Description | This method attempts to match the entire inputSequence against the regex pattern. |
---|
Examples | matches("WSO2(.*)middleware(.*)", "WSO2 is situated in trace and its a middleware company") returns true .matches("WSO2(.*)middleware", "WSO2 is situated in trace and its a middleware company") returns false .
|
---|
time
This extension provides time related functionality to Siddhi such as getting current time, current date, manipulating/formatting dates, etc. Following are the functions of the time extension.
currentDate
Syntax | <string> currentDate ( ) |
---|
Extension Type | Function |
---|
Description | Returns the current system date in the yyyy-MM-dd format. |
---|
Example | currentDate() returns 2015-08-20 . |
---|
currentTime
Syntax | <string> currentTime ( ) |
---|
Extension Type | Function |
---|
Description | Returns the current system time in the HH:mm:ss format. |
---|
Example | currentTime() returns 13:15:10 . |
---|
currentTimestamp
Syntax | <string> currentTimestamp ( ) |
---|
Extension Type | Function |
---|
Description | Returns the current system timestamp in the yyyy-MM-dd HH:mm:ss format. |
---|
Example | currentTime() returns 2015-08-20 13:15:10 . |
---|
dateAdd
The common parameters of this function are described below.
-
dateValue
: A value of date. e.g., "2014-11-11 13:23:44.657"
, "2014-11-11"
, "13:23:44.657"
-
expr
: The amount by which the selected part of the date format should be incremented. e.g., 2 ,5 ,10 etc. -
unit
: The part of the date format that needs to be manipulated. e.g., "MINUTE"
, "HOUR"
, "MONTH"
, "YEAR"
, "QUARTER"
, * "WEEK"
, "DAY"
, "SECOND"
-
dateFormat
: The date format of the date value provided. e.g., yyyy-MM-dd HH:mm:ss.SSS
-
timestampInMilliseconds
: The date value in milliseconds (from the epoch). e.g., 1415712224000L
Syntax | <string> dateAdd (<string> dateValue , <long> expr, <string> unit, <string> dateFormat ) |
---|
Extension Type | Function |
---|
Description | Returns the specified date and time with the selected
unit
of the specified
dateValue
incremented by the given amount (i.e. expr ). |
---|
Example | dateAdd("2014-11-11 13:23:44", 2, 'year',"yyyy-MM-dd HH:mm:ss") returns "2016-11-11 13:23:44" . |
---|
Syntax | <string> dateAdd (<string> dateValue , < long > expr, <string> unit ) |
---|
Extension Type | Function |
---|
Description | Returns the specified date and time with the selected
unit
of the specified
dateValue
incremented by the given amount (i.e. expr ). |
---|
Example | dateAdd("2014-11-11 13:23:44", 2, 'year') returns "2016-11-11 13:23:44" . |
---|
Syntax | <string> dateAdd (<long> timestampInMilliseconds, < long > expr, <string> unit ) |
---|
Extension Type | Function |
---|
Description | Returns the specified time stamp with the selected
unit
of the specified
timestampInMilliseconds
incremented by the given amount (i.e. expr ). |
---|
Example | dateAdd(1415692424000L, 2, 'year') returns "2016-11-11 13:23:44" . |
---|
dateSub
The common parameters of this function are described below.
-
dateValue
: A value of date. e.g., "2014-11-11 13:23:44.657"
, "2014-11-11"
, "13:23:44.657"
-
expr
: The amount by which the selected part of the date format should be reduced. e.g., 2 ,5 ,10 etc. -
unit
: The part of the date format that needs to be manipulated. e.g., "MINUTE"
, "HOUR"
, "MONTH"
, "YEAR"
, "QUARTER"
, * "WEEK"
, "DAY"
, "SECOND"
-
dateFormat
: The date format of the date value provided. e.g., yyyy-MM-dd HH:mm:ss.SSS
-
timestampInMilliseconds
: The date value in milliseconds (from the epoch). e.g., 1415712224000L
Syntax | <string> dateSub (<string> dateValue , <long> expr, <string> unit, <string> dateFormat ) |
---|
Extension Type | Function |
---|
Description | Returns the specified date and time with the selected
unit
of the specified
dateValue
reduced by the given amount (i.e. expr ). |
---|
Example | dateSub("2014-11-11 13:23:44", 2, 'year',"yyyy-MM-dd HH:mm:ss") returns "2012-11-11 13:23:44" . |
---|
Syntax | <string> dateSub (<string> dateValue , < long > expr, <string> unit ) |
---|
Extension Type | Function |
---|
Description | Returns the specified date and time stamp with he selected
unit
of the specified
dateValue
reduced by the given amount (i.e. expr ). |
---|
Example | dateSub("2014-11-11 13:23:44", 2, 'year') returns "2012-11-11 13:23:44". |
---|
Syntax | <string> dateSub (<long> timestampInMilliseconds, < long > expr, <string> unit ) |
---|
Extension Type | Function |
---|
Description | Returns the specified time stamp with the selected
unit
of the specified
timestampInMilliseconds
reduced by the given amount (i.e. expr ). |
---|
Example | dateSub(1415692424000L, 2, 'year') returns 1352620424000. |
---|
dateDiff
The common parameters of this function are described below.
-
dateValue1
: A value of date. e.g., "2014-11-11 13:23:44.657"
, "2014-11-11"
, "13:23:44.657"
-
dateValue2
: A value of date. e.g., "2014-11-11 13:23:44.657"
, "2014-11-11"
, "13:23:44.657"
-
dateFormat1
: The date format of dateValue1
. e.g., yyyy-MM-dd HH:mm:ss.SSS
-
dateFormat2
: The date format of dateValue2
. e.g., yyyy-MM-dd HH:mm:ss.SSS
-
timestampInMilliseconds1
: A date value in milliseconds (from the epoch) e.g., 1415712224000L
-
timestampInMilliseconds2
:A date value in milliseconds (from the epoch) e.g., 1415712224000L
Syntax | <int> dateDiff (<string> dateValue1 , < string > dateValue2 , <string> dateFormat1, <string> dateFormat2 ) |
---|
Extension Type | Function |
---|
Description | Returns the number of days between the two dates specified (i.e. dateValue1 and dateValue2 ). |
---|
Example | dateDiff('2014-11-11 13:23:44', '2014-11-9 13:23:44', 'yyyy-MM-dd HH:mm:ss', 'yyyy-MM-dd HH:mm:ss') returns 2 . |
---|
Syntax | <int> dateDiff (<string> dateValue1 , < string > dateValue2 ) |
---|
Extension Type | Function |
---|
Description | Returns the number of days between the two dates specified (i.e. dateValue1 and dateValue2 ). |
---|
Example | dateDiff('2014-11-11 13:23:44.000', '2014-11-9 13:23:44.000' ) returns 2 . |
---|
Syntax | <int> dateDiff (<string> timestampInMilliseconds1 , < string > timestampInMilliseconds2 ) |
---|
Extension Type | Function |
---|
Description | Returns the number of days between the two date and time stamps specified (i.e.
timestampInMilliseconds1
and
timestampInMilliseconds2
). |
---|
Example | dateDiff(1415692424000, 1415519624000) returns 2 . |
---|
The common parameters of this function are described below.
-
dateValue
: -A value of date. e.g., "2014-11-11 13:23:44.657
", "2014-11-11"
, "13:23:44.657"
-
dateTargetFormat
: The date format to which the specified date value
needs to be converted. e.g., yyyy/MM/dd HH:mm:ss
-
dateSourceFormat
: The date format of the date value
provided. e.g., yyyy-MM-dd HH:mm:ss.SSS
-
timestampInMilliseconds
: A date value in milliseconds (from the epoch) e.g., 1415712224000L
Syntax | <string> dateFormat(<string> dateValue,<string> dateTargetFormat,<string> dateSourceFormat) |
---|
Extension Type | Function |
---|
Description | Returns a formatted date string. |
---|
Example | dateFormat('2014-11-11 13:23:55', 'ss', 'yyyy-MM-dd HH:mm:ss') returns 55 . |
---|
Syntax | <string> dateFormat(<string> dateValue,<string> dateTargetFormat) |
---|
Extension Type | Function |
---|
Description | Returns a formatted date string. |
---|
Example | dateFormat('2014-11-11 13:23:55.657', 'ss') returns 55 . |
---|
Syntax | <string> dateFormat (<long> timestampInMilliseconds ,<string> dateTargetFormat) |
---|
Extension Type | Function |
---|
Description | Returns a formatted date string. |
---|
Example | dateFormat(1415692424000, 'yyyy-MM-dd') returns 2014-11-11. |
---|
-
dateValue
: A value of date. e.g., "2014-11-11 13:23:44.657"
, "2014-11-11"
, "13:23:44.657"
-
unit
: The part of the date format that needs to be manipulated. e.g., "MINUTE"
, "HOUR"
, "MONTH"
, "YEAR"
, "QUARTER"
, * "WEEK"
, "DAY"
, "SECOND"
-
dateFormat
: The date format of the date value provided. e.g., yyyy-MM-dd HH:mm:ss.SSS
-
timestampInMilliseconds
: A date value in milliseconds (from the epoch) e.g., 1415712224000L
Syntax | <int> extract (<string> unit ,<string> dateValue, <string> dataFormat) |
---|
Extension Type | Function |
---|
Description | Returns the specified
unit
extracted from the specified dateValue . |
---|
Example | extract('year', '2014-3-11 02:23:44', 'yyyy-MM-dd hh:mm:ss') returns 2014 . |
---|
Syntax | <int> extract (<string> unit ,<string> dateValue) |
---|
Extension Type | Function |
---|
Description | Returns the specified
unit
extracted from the specified dateValue . |
---|
Example | extract('year', '2014-3-11 02:23:44.234') returns 2014 . |
---|
Syntax | <int> extract (<long> timestampInMilliseconds ,<string> unit) |
---|
Extension Type | Function |
---|
Description | Returns the specified
unit
extracted from the specified
timestampInMilliseconds
. |
---|
Example | extract(1394484824000, 'year') returns 2014 . |
---|
date
Syntax | <string> date (<string> dateValue ,<string> dateFormat) |
---|
Extension Type | Function |
---|
Description | Returns the date component of the dateValue . |
---|
Example | extact('2014-11-11 13:23:44', 'yyyy-MM-dd HH:mm:ss') returns 2014-11-11 . |
---|
timestampInMilliseconds
Syntax | <long> timestampInMilliseconds () |
---|
Extension Type | Function |
---|
Description | Returns the current time stamp in milliseconds. |
---|
Example | timestampInMilliseconds() returns 1440160328693 . |
---|
Syntax | <long> timestampInMilliseconds (<string> dateValue) |
---|
Extension Type | Function |
---|
Description | Returns the time stamp of the specified dateValue in milliseconds. In order to use this function, the date format of the specified dateValue should be yyyy-MM-dd HH:mm:ss.SSS . |
---|
Example | timestampInMilliseconds('2007-11-30 10:30:19.000') returns 1196398819000 . |
---|
Syntax | <long> timestampInMilliseconds (<string> dateValue, <string> dateFormat) |
---|
Extension Type | Function |
---|
Description | Returns the time stamp of the specified dateValue in milliseconds. The date format can be specified in the dateForma t parameter. |
---|
Example | timestampInMilliseconds('2007-11-30 10:30:19', 'yyyy-MM-dd HH:mm:ss') returns 1196398819000 . |
---|
utcTimestamp
Syntax | <string> utcTimestamp() |
---|
Extension Type | Function |
---|
Description | Returns the system time in the yyyy-MM-dd HH:mm:ss date format. |
---|
Example | utcTimestamp() returns 2015-08-21 12:16:13 . |
---|
nlp
This extension provides Natural Language Processing capabilities to Siddhi. Functions of the NLP extension are as follows.
findNameEntityType
Syntax | <string> findNameEntityType(<string> entityType, <bool> groupSuccessiveMatch, <string> string-variable ) |
---|
Extension Type | Function |
---|
Description | This function uses the following input parameters.
entityType
: This is a user-specified string constant. e.g., PERSON , LOCATION , ORGANIZATION , MONEY , PERCENT , DATE or TIME -
groupSuccessiveMatch : This is a user-specified boolean constant used to group successive matches of the specified entityType and a text stream.
streamAttribute
: A string or the stream attribute in which text stream is included.
This function returns the entities in the text. If you specify group successive matches as true , the result aggregates successive words of the same entity type. |
---|
Example | findNameEntityType("PERSON",true,text)
In the above example, if the text attribute contains "Bill Gates donates £31million to fight Ebola" , the result is Bill Gates . If the group successive match is set to false , two events are generated as Bill and Gates . |
---|
findNameEntityTypeViaDictionary
Syntax | <string> findNameEntityTypeViaDictionary(<string> entityType, <string> dictionaryFilePath, <string> string-variable ) |
---|
Extension Type | Function |
---|
Description | This function uses the following input parameters.
entityType
: This is a user-specified string constant. e.g., PERSON , LOCATION , ORGANIZATION , MONEY , PERCENT , DATE or TIME
dictionaryFilePath
: The path to the dictionary in which the function searches for the specified entries. The relevant entries for the entity types should be available in the dictionary as shown in the example below.
streamAttribute
: A string or the stream attribute in which text stream is included.
This function returns the entities in the text. If you specify group successive matches as true , the result aggregates successive words of the same entity type. |
---|
Example | findNameEntityTypeViaDictionary("PERSON","dictionary.xml",text)
In the above example, if the text attribute contains "Bill Gates donates £31million to fight Ebola" , and the dictionary consists of the above entries (i.e. entries of the example in the Description), the result is "Bill" . |
---|
findRelationshipByVerb
Syntax | <string > text, <string> subject, < string > object < string > verb findRelationshipByVerb (<string> verb, <string> string-variable ) |
---|
Extension Type | Function |
---|
Description | findRelationshipByVerb takes in a user specified string constant as a verb and a text stream, and returns the whole text, subject, object and the verb based on the specified verb. This information can be extracted only if the verb specified exists in the text stream. However, the tense of the verb does not have to match.
The input parameters used are as follows. -
verb : This is a user specified string constant. -
string-variable : A string or the stream attribute which includes the text stream.
|
---|
Examples |
findRelationshipByVerb("say", "Information just reaching us says another Liberian With Ebola Arrested At Lagos Airport") returns the following.
- The whole text
Information as the subjectLiberian as the object.says as the verb.
|
---|
findRelationshipByRegex
Syntax | <string > text, <string> subject, < string > object < string > verb findRelationshipByRegex (<string> regex, <string> string-variable ) |
---|
Extension Type | Function |
---|
Description | This function returns the whole text, subject, object and verb from the text stream that matches the named nodes of the Semgrex pattern. |
---|
Example | findRelationshpByRegex('{}=verb >/nsubj|agent/ {}=subject >/dobj/ {}=object', "gates foundation donates $50M in support of #Ebola relief") returns the following.
- The whole text
"foundation" as the subject"$" as the object"donates" as the verb
|
---|
findSemgrexPattern
Syntax | <string > text, <string> match, < string > object < string > verb findSemgrexPattern (<string> regex, <string> string-variable ) |
---|
Extension Type | Function |
---|
Description | The
findSemgrexPattern
function returns the whole text, subject, object and verb from the text stream that matches the named nodes of the Semgrex pattern. This function uses the following input parameters. -
regex : A user specified regular expression that matches the Semgrex pattern syntax. -
string-variable : A string or the stream attribute which includes the text stream.
|
---|
Example | findSemgrexPattern('{lemma:die} >/.*subj|num.*/=reln {}=diedsubject', "Sierra Leone doctor dies of Ebola after failed evacuation.")
In this example, the function searches for words with the lemmatization die that are governors on any subject or numeric relation. The dependent is marked as the diedsubject , and the relationship is marked as reln . Thus, the query returns an output stream that has the full match of this expression, i.e. the governing word with lemmatization for die . It also returns the name of the corresponding node for each match it finds. The following is the list of elements in the output stream. - The whole text
dies as the match"nsubj" as reln doctor asdiedsubject
|
---|
findTokensRegexPattern
Syntax | < string > text, <string> match, <string> group_1, etc. findTokensRegexPattern (<string> regex, <string> string-variable ) |
---|
Extension Type | Function |
---|
Description | findTokensRegexPattern returns the whole text, subject, object and verb from the text stream that matches the named nodes of the Semgrex pattern. The return also includes the corresponding node in the Semgrex pattern and the corresponding named relation defined in the regular expression for each word/phrase.
This function uses the following input parameters. -
regex : A user specified regular expression that matches the Semgrex pattern syntax. -
string-variable : A string or the stream attribute which includes the text stream.
|
---|
Example | findTokensRegexPattern('([ner:/PERSON|ORGANIZATION|LOCATION/]+) (?:[]* [lemma:donate]) ([ner:MONEY]+)', text) defines three groups:
- The first group looks for words that are entities of either
PERSON , ORGANIZATON or LOCATION with one or more successive words matching same. - The middle group is defined as the non capturing group.
- Third looks for one or more successive entities of type
MONEY .
This function returns the following. The whole text " Paul Allen donates $ 9million " as the match." Paul Allen" , as group_1."$ 9million" as group_2.
|
---|
pmml
This extension adds PMML based predictive analytic model compliance to Siddhi. It allows you to make predictions based on a predictive analytic model. Supported functions of PMML extension are as follows.
predict
Syntax | < double | float|long|int|string|boolean > predict(<string> pathToPmmlFile) |
---|
Extension Type | Stream Processor |
---|
Description | Processes the input stream attributes according to the defined PMML standard model and outputs the processed results together with the input stream attributes. This function uses the following input parameter. -
pathToPmmlFile : The path to the PMML model file.
The function returns the outputs defined in the output fields. The number of outputs can vary. |
---|
Example | predict('<DAS HOME>/samples/artifacts/0301/decision-tree.pmml')
This model is implemented to detect network intruders. The input event stream is processed by the execution plan that uses the pmml predictive model to detect whether a particular user is an intruder to the network or not. The output stream contains the processed query results that include the predicted responses together with the feature values extracted from the input event stream. |
---|
Syntax | < double | float|long|int|string|boolean > predict(<string> pathToPmmlFile, <double|float|long|int|string|boolean> input ) |
---|
Extension Type | Stream Processor |
---|
Description | Processes the input stream attributes according to the defined PMML standards model and outputs the processed results. This function uses the following input parameters. -
pathToPmmlFile : The path to the PMML model file. -
input : An attribute of the input stream that is sent to the PMML standard model as a value to based on which the prediction is made. The predict function does not accept any constant values as input parameters. You can have multiple input parameters according to the input stream definition.
This function returns the processed outputs defined in the query. The number of outputs can vary depending on the query definition. |
---|
Examples |
predict('<DAS_HOME>/samples/artifacts/0301/
decision-tree.pmml',
root_shell, su_attempted, num_root, num_file_creations, num_shells, num_access_files, num_outbound_cmds, is_host_login, is_guest_login, count, srv_count, serror_rate, srv_serror_rate
)
This model is implemented to detect network intruders. The input event stream is processed by the execution plan that uses the pmml predictive model to detect whether a particular user is an intruder to the network or not. The output stream contains the processed query results that include the predicted responses. |
---|
ml
This extension provides Siddhi the capability to make predictions based on Machine Learning models. Supported functions of the ML extension are as follows.
predict
Syntax | <double|float|long|int|string|boolean> predict(<string> pathToMLModel, <string> dataType) |
---|
Extension Type | Stream Processor |
---|
Description | Returns an output event with the additional attribute that has the response variable name of the model, set with the predicted value, using the feature values extracted from the input event. This function uses the following input parameters. -
pathToMLModel : The file path or the registry path to the location of the ML model. If the model storage location is registry, the value of this parameter should have registry as the prefix. -
dataType : The data type of the predicted value (double , float , long , integer/int , string , boolean /bool ).
|
---|
Example | predict(‘registry:/_system/governance/mlmodels/indian-diabetes-model’) |
---|
Syntax | <double|float|long|int|string|boolean> predict(<string> pathToMLModel, <string> dataType, <double> input) |
---|
Extension Type | Stream Processor |
---|
Description | Returns an output event with the additional attribute that has the response variable name of the model, set with the predicted value, using the feature values extracted from the input event. This function uses the following input parameters. -
pathToMLModel : The file path or the registry path to the location of the ML model. If the model storage location is registry, the value of this parameter should have registry as the prefix. -
dataType : The data type of the predicted value (double , float , long , integer/int , string , boolean /bool ). -
input : An attribute of the input stream that is sent to the ML model as a value to based on which the prediction is made. The predict function does not accept any constant values as input parameters. You can have multiple input parameters.
|
---|
Example | predict(‘registry:/_system/governance/mlmodels/indian-diabetes-model’, NumPregnancies, TSFT, DPF, BMI, DBP, PG2, Age, SI2) |
---|
timeseries
See Time Series Extension.
kf (Kalman Filter)
This extension provides Kalman filtering capabilities to Siddhi. This allows you to detect outliers of input data. Following are the functions of the Kalman Filter extension.
Kalman Filter function
This function uses measurements observed over time containing noise and other inaccuracies, and produces estimated values for the current measurement using Kalman algorithms.
The parameters used in this function are as follows.
-
measuredValue
: The sequential change in the observed measurement. e.g., 40.695881
measuredChangingRate
: The rate at which the measured change is taking place. e.g., The velocity with which the measured value is changed can be 0.003 meters per second.
measurementNoiseSD
: The standard deviation of the noise. e.g., 0.01-
timestamp
: The time stamp of the time at which the measurement was carried out.
Syntax | <double, double> kf:kalmanFilter(<double> measuredValue) |
---|
Extension Type | Function |
---|
Example | - 1st round:
kf:kalmanFilter(-74.178444) returns an estimated value of -74.178444 . - 2nd round:
kf:kalmanFilter(-74.175703) returns an estimated value of -74.1770735006853 . - 3rd round:
kf:kalmanFilter(-74.177872) returns an estimated value of -74.1773396670348 .
|
---|
Syntax | <double, double> kf:
kalmanFilter(<double> measuredValue, <double> measurementNoiseSD) |
---|
Extension Type | Function |
---|
Example | - 1st round:
kf:kalmanFilter(-74.178444, 0.003) returns an estimated value of -74.178444 . - 2nd round:
kf:kalmanFilter(-74.175703, 0.003) returns an estimated value of -74.17707350205573 . - 3rd round:
kf:kalmanFilter(-74.177872, 0.003) returns an estimated value of -74.177339667771 .
|
---|
Syntax | <double, double> kf:
kalmanFilter(<double> measuredValue, <double> measuredChangingRate, <double> measurementNoiseSD, <long> timestamp) |
---|
Extension Type | Function |
---|
Example | - 1st round:
kf:kalmanFilter(-74.178444, 0.003, 0.01, time:timestampInMilliseconds() ) returns an estimated value of -74.1784439700006 . - 2nd round:
kf:kalmanFilter(-74.178444, 0.003, 0.01, time:timestampInMilliseconds() ) returns an estimated value of -74.1784439700006 . - 3rd round:
kf:kalmanFilter(-74.177872, 0.003, 0.01, time:timestampInMilliseconds()) returns an estimated value of -74.17697314316393 .
|
---|
map
This extension provides the capability to send a map object inside Siddhi stream definitions and use it inside queries. The following are the functions of the map
extension.
create
Syntax | <Object> create()
or <Object> create(<Object> key1, <Object> value1,<Object> key2, <Object> value2,...<Object> keyN, <Object> valueN)
|
---|
Extension Type | Function |
---|
Description | Returns the created map object. |
---|
Examples | create() returns an empty map.create(1 , ”one” , 2 , ”two” , 3 , ”three”) returns a map with keys 1, 2, 3 and corresponding values "one", "two", "three" .
|
---|
get
Syntax | <Object> get(<Map> map, <Object> key) |
---|
Extension Type | Function |
---|
Description | Returns the value object from the map that is related to the given key. |
---|
Example | get(company,1) returns the value that is related to the key 1 from the map named company . |
---|
isMap
Syntax | <bool> isMap(<Object> object) |
---|
Extension Type | Function |
---|
Description | Returns true if the object is a map or false otherwise. |
---|
Example | isMap(students) returns true if the students object is a map. It returns false if the students object is not a map. |
---|
put
Syntax | Object> put(<Object> map, <Object> key,<Object> value) |
---|
Extension Type | Function |
---|
Description | Returns the updated map after adding the given key-value pair. |
---|
Example | put(students , 1234 , ”sam”) returns the updated map named students after adding the object "sam" with key 1234 . |
---|
remove
Syntax | <Object> remove(<Object> map, <Object> key) |
---|
Extension Type | Function |
---|
Description | Returns the updated map after removing the element with key. |
---|
Example | remove(students , 1234) returns the updated map students after removing the element with the key 1234 . |
---|
createFromJSON
Syntax | <Object> createFromJSON(<string> JSONstring) |
---|
Extension Type | Function |
---|
Description | Returns the map created with the key values pairs given in the JSONstring . |
---|
Example | createFromJSON(“{‘symbol' : 'IBM' , 'price' : 200, 'volume' : 100}”) returns a map with the keys "symbol" , "price", "volume" , and with the values "IBM" , 200 and 100 respectively. |
---|
createFromXML
Syntax | <Object> createFromXML(<string> XMLstring) |
---|
Extension Type | Function |
---|
Description | Returns the map created with the key values pairs given in the XMLstring. |
---|
Example | createFromXML(“<company> <symbol> wso2 </symbol> <price> <100> </price> <volume> 200 </volume> </company>”) returns a map with the keys "symbol" , "price" , "volume" , and with the values WSO2 , 100 and 200 respectively. |
---|
toJSON
Syntax | <string> toJSON(<Object> map) |
---|
Extension Type | Function |
---|
Description | Converts a map into a JSON object and returns the definition of that JSON object as a string. |
---|
Example | If "company" is a map with key value pairs ("symbol" : wso2) , ("volume" : 100) , and ("price",200) , toJSON(company) returns the string “{“symbol” : “wso2” , “volume” : 100 , “price” : 200}” . |
---|
toXML
Syntax | <string> toXML(<Object> map) |
---|
Extension Type | Function |
---|
Description | Returns the map as an XML string. |
---|
Example | If "company" is a map with key value pairs (“symbol” : wso2) , (“volume” : 100) , and (“price” : 200) , toXML(map) returns the string “<symbol>wso2</symbol><volume><100></volume><price>200</price> . |
---|
reorder
Reorder extension is implemented using the K-Slack
algorithm. The K-Slack
Siddhi extension is used for reordering events from an unordered event stream. The following is an example of a query with the reorder
extension.
@info(name = 'query1')
from inputStream#reorder:kslack(eventTimestamp)
select eventTimestamp, price, volume
insert into outputStream;
There are several important variations of the K-slack API of which the details are described below.
kslack
Syntax | <bool> kslack(<long> timestamp)
|
---|
Extension Type | StreamProcessor |
---|
Description | This is the most basic version. The events are sorted by the
timestamp
parameter. |
---|
Syntax | <bool> kslack(<long> timestamp, <long> timeOut )
|
---|
Extension Type | StreamProcessor |
---|
Description | The second argument shown in the above syntax corresponds to a fixed time-out value set at the beginning of the process. Once the time-out value expires, the extension drains all the events that are buffered within the reorder extension to outside. The time out has been implemented internally using a timer. The events buffered within the extension are released each time the timer ticks. |
---|
Syntax | <bool> kslack(<long> timestamp, <long> timeOut, <long> maxValue ) |
---|
Extension Type | StreamProcessor |
---|
Description | The third argument in the above syntax is the maximum value for K. This is the amount to which the K value of the K-Slack algorithm will be increased. |
---|
Example | kslack(timestamp, -1l, 1000000) In the above example, the algorithm execution starts when K=0 and it gets increased up to 1000000. The value of the K-slack does not increase from that point onwards. Hence, this leads to lower latency compared to the version shown in the first (i.e., single parameter) example of this list. Note that the second argument is set to -1l which effectively disables the timer based draining of the internal buffer.kslack(timestamp, 1000l, 1000000) The above is another variation of the third category. Here, a time-out value is specified for the second argument (i.e. 1000 ms). In this case, the K-slack algorithm buffers events until the 1000ms time period expires. The maximum K value is 1000000. The K-value cannot exceed the specified amount.
|
---|
Syntax | <bool> kslack(<long> timestamp, <long> timeOut, <bool> expireFlag )
|
---|
Extension Type | StreamProcessor |
---|
Description | The fourth argument in the above syntax is a flag that indicates whether the out-of order events that appear after the expiration of the K-slack window should be discarded or not. |
---|
Example | kslack(timestamp, -1l, -1l, true) |
---|