# Page History

## Key

• This line was removed.
• Formatting was changed.

# Available Functions

Odysseus provides a wide range of functions and operators to be used for data transformation and filtering in a Map, Select, or Join operator.

## Mathematical Functions

### Cos(X)

Returns the trigonometric cosine of an angle

### ACos(X)

Returns the arc cosine of a value

### Cosh(X)

Returns the hyperbolic cosine of a double value

### Sin(X)

Returns the trigonometric sine of an angle

### ASin(X)

Returns the arc sine of a value

### Sinh(X)

Returns the hyperbolic sine of a double value

### Tan(X)

Returns the trigonometric tangent of an angle

### ATan(X)

Returns the arc tangent of a value

### ATan2(Y,X)

Returns the angle theta from the conversion of rectangular coordinates (x, y) to polar coordinates (r, theta)

### Tanh(X)

Returns the hyperbolic tangent of a double value

### Abs(X)

Returns the absolute value of a value

### Sqrt(X)

Returns the square root of a value

### Ceil(X)

Returns the smallest value that is greater than or equal to the argument and is equal to a mathematical integer.

### Floor(X)

Returns the largest value that is less than or equal to the argument and is equal to a mathematical integer.

### Round(X)

Returns the closest number to the argument, with ties rounding up

### Log(X)

Returns the natural logarithm (base e) of a double value

### Exp(X)

Returns Euler's number e raised to the power of a double value

### PI()

Returns the double value that is closer than any other to pi.

### E()

Returns the double value that is closer than any other to e

Converts an angle measured in degrees to an equivalent angle measured in radians.

### ToDegrees(X)

Converts an angle measured in radians to an equivalent angle measured in degrees.

## String Functions

### Concat(String, String)

Returns a new string that is a concatenating the arguments.

### SubString(String, Begin, End)

Returns a new string that is a substring of the value with given begin and end index

### Length(String)

Returns the length of a string.

### Upper(String)

Returns the string converted to uppercase.

### Lower(String)

Returns the string converted to lowercase.

## Date Functions

### Year(Date)

Extracts the year part of the date

### Month(Date)

Extracts the month part of the date

### Week(Date)

Returns the week number of the date

### Day(Date)

Extracts the day part of the date

### Hour(Date)

Returns the hour of the date

### Minute(Date)

Returns the minute of the date

### Second(Date)

Returns the second of the date

### CurDate()

Return the current system time specific date

### Now()

Returns the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC

### NanoTime()

Returns the current value of the time source, in nanoseconds.

## Datatype Functions

### DoubleToShort(Double)

Converts the given double value to a short value

### DoubleToByte(Double)

Converts the given double value to a byte value

### DoubleToInteger(Double)

Converts the given double value to a integer value

### DoubleToFloat(Double)

Converts the given double value to a float value

### DoubleToLong(Double)

Converts the given double value to a long value

### ToShort(X)

Converts the given value to a short value. This function converts any value to a short value, thus it is more time consuming than the DoubleToShort function for double values.

### ToByte(X)

Converts the given value to a byte value. This function converts any value to a byte value, thus it is more time consuming than the DoubleToByte function for double values.

### ToInteger(X)

Converts the given value to a integer value. This function converts any value to a integer value, thus it is more time consuming than the DoubleToInteger function for double values.

### ToFloat(X)

Converts the given value to a float value. This function converts any value to a float value, thus it is more time consuming than the DoubleToFloat function for double values.

### ToDouble(X)

Converts the given value to a double value.

### ToLong(X)

Converts the given value to a long value. This function converts any value to a long value, thus it is more time consuming than the DoubleToLong function for double values.

## Encryption Functions

### MD5(String)

Calculates an MD5 checksum for the string.

### SHA1(String)

Calculates an SHA-1 checksum for the string.

### SHA256(String)

Calculates an SHA-265 checksum for the string.

## Miscellaneous Functions

### UUID()

Returns a Universal Unique Identifier (UUID).

### Eval(String)

Evaluates arbitrary expressions.

### Sleep(Integer)

Causes the currently executing operator to sleep for the specified number of milliseconds.

# Optional Functions

The following MEP functions are not part of the Odysseus Core and may be restricted.

## Matrix Functions (Matrix Feature)

The matrix feature provides arbitrary functions to work with matrices in a data stream. Further this feature provides algebraic operator (+, *, -, ^) to perform matrix addition, subtraction, multiplication, and exponentiation.

Code Block
language javascript Example
```SELECT [1.0,2.0,3.0;4.0,5.0,6.0]+[1.0,2.0,3.0;4.0,5.0,6.0] FROM stream
SELECT [1.0,2.0,3.0;4.0,5.0,6.0]-[1.0,2.0,3.0;4.0,5.0,6.0] FROM stream
SELECT [1.0,2.0,3.0;4.0,5.0,6.0]*[1.0,2.0,3.0;4.0,5.0,6.0] FROM stream
SELECT [1.0,2.0,3.0;4.0,5.0,6.0]^3 FROM stream```

### Tr(Matrix)

Computes the trace of the matrix

### Det(Matrix)

Computes the determinant of the given matrix

### Inv(Matrix)

Computes the inverse of the given matrix

### Trans(Matrix)

Computes the transpose of the given matrix

### Identity(dimension)

Creates a dimension x dimension identity matrix

### sMin(Matrix|Vector)

Return the minimum element in the given matrix.

### sMax(Matrix|Vector)

Returns the maximum element in the given matrix.

### sCount(Matrix|Vector)

Counts all elements in the given matrix.

### sSum(Matrix|Vector)

Computes the sum of all elements of the given matrix.

### sAVG(Matrix|Vector)

Compute the average of all elements of the given matrix.

## Interval Functions (Interval Feature)

The interval feature provides arbitrary functions to work with intervals in a data stream. Further this feature provides algebraic operator (+, *, -, /, ^) to perform interval addition, subtraction, multiplication, division, and exponentiation.

### Union(Interval, Interval)

Computes the union of the two intervals

### Difference(Interval, Interval)

Computes the difference of the two intervals

### Intersection(Interval, Interval)

Computes the intersection of the two intervals

## Text Functions (Text Feature)

### Soundex(String)

Computes the Soundex value of the string.

### ColognePhonetic(String)

Computes the Cologne Phonetic value of the string.

### Metaphone(String)

Computes the Metaphone value of the string.

### Levenstein(String, String)

Computes the Levenstein Distance of two strings.

## Probabilistic Functions (Probabilistic Feature)

The probabilistic feature provides arbitrary functions to work with discrete and continuous probabilistic values in a data stream. Further this feature provides algebraic operator (+, *, -, /, ^) to perform probabilistic addition, subtraction, multiplication, division, and exponentiation.

### SQRT(Probabilistic Value)

Computes the probabilistic square root of the given probabilistic value.

### ToProbabilisticDouble(Matrix)

Constructs a discrete probabilistic value using the first column of the given matrix for the values and the second column of the matrix for the probabilities for each value.

### DoubleToShort(Probabilistic Value)

Converts the given probabilistic double value to a probabilistic short value

### DoubleToByte(Probabilistic Value)

Converts the given probabilistic double value to a probabilistic byte value

### DoubleToInteger(Probabilistic Value)

Converts the given probabilistic double value to a probabilistic integer value

### DoubleToFloat(Probabilistic Value)

Converts the given probabilistic double value to a probabilistic float value

### DoubleToLong(Probabilistic Value)

Converts the given probabilistic double value to a probabilistic long value

### Int(Distribution, Lower Limit, Upper Limit)

Estimates the multivariate normal distribution probability with lower and upper integration limit.

### as2DVector(Object, Object)

Converts the two object into a 2D vector.

### as3DVector(Object, Object, Object)

Similar to the as2DVector function, this function creates a 3D vector with the given objects.

### Similarity(Distribution, Distribution)

Calculates the Bhattacharyya distance between two distributions.

Code Block
language javascript Example
```SELECT similarity(as2DVector(x1,y1), as2DVector(x2,y2)) FROM stream
```

### Distance(Distribution, Value)

Calculates the Mahalanobis distance between the distribution and the value. The value can be a scalar value or a vector.

Code Block
language javascript Example
`SELECT distance(as3DVector(x, y, z), [1.0;2.0;3.0]) FROM stream`

## Spatial Functions (Spatial Feature)

The spatial functions are based upon the JTS Topology Suite (http://www.vividsolutions.com/jts/JTSHome.htm).

Notice, that JTS only considers x and y coordinate and ignores the z coordinate (although z can be definied)!

### AsCartesianCoordinates(SpatialPolarCoordinate[])

Transform the list of spatial polar coordinates into a list of Cartesian coordinates

### GetCentroid(Geometry)

Returns the centroid of the given geometry

### SpatialBuffer(Geometry, Double)

Creates a buffer of the given size around the given geometry

### SpatialContains(Geometry, Geometry)

Checks whether the first geometry contains the second geometry.

### SpatialConvexHull(Geometry)

Computes the smallest convex spatial p`olygon` that contains all the points in the `geometry`

### ToCartesianCoordinate(SpatialPolarCoordinate)

Transforms the given spatial polar coordinate into a spatial Cartesian coordinate.

### ToPolarCoordinate(SpatialCoordinate)

Transforms the given spatial Cartesian coordinate into a polar coordinate

Most function descriptions on this page are copied from the openjdk documentation.

toc

your query statements. In Odysseus-Studio there is a view MEP Functions View, that lists all current available operators and functions.

Attentation: For most numeric operators the result is a floating value. This will be fixed in future versions.

## Basic Operators

Mathematical Operators; +,-,/,*, % (modulo), ^ (power)

Logical Operators: && (and), || (or), !(not), xor

Compare Operators: !=, = or ==, <=, >=

## Functions and operators in CQL

If you prefer CQL you can use these functions and operators in your Select clause for data transformation or in the Where clause for filtering:

Code Block
language sql Example
`SELECT tan(x) FROM stream WHERE sqrt(y)>3`

## Functions and operators in PQL

If you prefer PQL you can use these functions and operators in the MAP, JOIN, and SELECT operator. In addition, functions and operators can be used in other operators that are not part of the set of relational operators.

Code Block
language js Example
`output = MAP({expressions = ['tan(x)']}, SELECT({predicate = RelationalPredicate('sqrt(y)>3')}, stream))`

Some of the functions and operators are part of the Odysseus Core and some are available in additional features. On the following child pages you find all currently available functions and operators with their description and examples.

Children Display