Generic Functions in QPR ProcessAnalyzer
Generic Properties and Functions are available for all objects.
Aggregation Functions
There are following aggregation functions: Average, Count, Median, Min, Max and Sum. The aggregation operations work for numbers, DateTimes and TimeSpans, except Sum for DateTime is not possible.
Examples:
Sum([3, 2, 4]) Returns: 9 Count([[1, 2], [3, 4, 5]]) Returns: [2, 3] Sum([[1, 2], [3, 4, 5]]) Returns: [3, 12] Sum([]) Returns: null
When aggregating numerical values and there are null values, nulls are treated as zeros. When aggregating DateTimes and TimeSpans, and there are null values, error is given. In the Min and Max functions, nulls are ignored. Null values can be removed before aggregating (the following example shows how).
Average([1, 5, null]) Returns: 2 Average([1, 5, null].Where(!IsNull(_))) Returns: 3
Aggregation operations are performed to the leaf level. i.e. the deepest level in the hierarchy. When aggregating, the leaf level arrays are replaced by the aggregated values, and thus the depth of the hierarchy decreases by one. In addition to the aggregation functions, functions that modify the contents of leaf arrays (OrderBy, Distinct, ...), the operation will be performed separately for every leaf array.
OrderByValue([[4, 3], [2, 1]]) Returns: [[3, 4], [1, 2]]
Mathematical functions
Function | Parameters | Description |
---|---|---|
Ceiling (Integer) |
|
Returns the smallest integer that is greater than or equal to the specified number. Example: Ceiling(1.3) Returns: 2 |
Floor (Integer) |
|
Returns the largest integer that is less than or equal to the specified number. Examples: Floor(1.9) Returns: 1 |
Round (Float) |
|
For numbers, rounds a value to the nearest integer or to the specified number of fractional digits. For DateTimes, rounds given date time by given time span or given number of seconds, Examples: (1.254).Round(1) Returns: 1.3 DateTime(2017, 1, 2, 3, 4, 5).Round(10) Returns: DateTime(2017, 1, 2, 3, 4, 10) DateTime(2017, 1, 2, 3, 4, 5).Round(TimeSpan(1)) Returns: DateTime(2017, 1, 2) |
DateTime and TimeSpan functions
Function | Parameters | Description |
---|---|---|
DateTime |
|
Creates a new DateTime object. Only the first (year) parameter is mandatory. Examples: DateTime(2017) Returns: A datetime for 1st January 2017 at 0:00:00. DateTime(2017, 5) Returns: A datetime for 5th January 2017 at 0:00:00. DateTime(2017, 5, 6, 13, 34, 56, 123) Returns: A date time object for 6th May 2017 at 13:34:56.123. |
DateTimeFromTicks |
|
Creates a new DateTime object from an integer representing ticks. A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond, or 10 million ticks in a second. Examples: DateTimeFromTicks(DateTime(2018, 5, 6, 13, 34, 56, 123).Ticks) Returns: A date time object for 6th May 2018 at 13:34:56.123. |
TimeSpan |
|
Creates a new TimeSpan object. Only the first parameter (number of days) is mandatory. By default, other parameters are assumed to be zero. Examples: TimeSpan(1) Returns: Time span for the duration of 1 day. TimeSpan(12,3,4,5,6) Returns: Time span for the duration of 12 days, 3 hours, 4 minutes, 5 seconds and 6 milliseconds. |
TimeSpanFromTicks |
|
Creates a new TimeSpan object from an integer representing ticks. A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond, or 10 million ticks in a second. Examples: TimeSpanFromTicks(TimeSpan(12,3,4,5,6).Ticks) Returns: A time span object representing 12 days, 3 hours, 4 minutes, 5 seconds and 6 milliseconds. |
Truncate |
String functions
Array functions
Function | Parameters | Description |
---|---|---|
Array |
|
Creates a new array where the provided parameters are items of the array. There can be any number of parameters. Note: arrays can also be created using [] syntax. Examples: Array(1, 2, 3) Returns: An array having three elements which are 1, 2 and 3. Also following syntax can be used: [1, 2, 3] Array() Returns: An empty array. |
Concat (Array) |
|
Concatenate multiple arrays together into one. Returns a single array which contains all the arrays given as parameter concatenated together in the same order they were given. If a parameter is not an array, it will be converted into an array having only the given element. Examples: Concat(1, [DateTime(2017), 3], [4, "foo"], "bar") Returns: [1, DateTime(2017), 3, 4, "foo", "bar"] |
ConcatTop (Hierarchical object) |
|
Concatenate the topmost arrays in a given hierarchical object. Returns a new hierarchical object with the contents of the topmost level concatenated and removed. Examples: ConcatTop([ 0, [1,2], [3], [4,[6,7]] ]) Returns: [1, 2, 3, 4, [6, 7]] ConcatTop([ [1,[2,3]], [4,[6,7]] ]) Returns: [1, [2, 3], 4, [6, 7]] |
CountTop (Integer) |
|
Get the number of elements in the topmost level array of a given array or hierarchical object. If the parameter is not an array, zero is returned. Examples: CountTop([ 0, [1,2], [3], [4,[6,7]] ]) Returns: 4 CountTop([[1,[2,3]],[4,[6,7]]]) Returns: 2 CountTop(0) Returns: 0 |
GetAt (Object) |
|
Returns element at given index from the beginning of the array. The first item has index zero. If given a hierarchical object, returns the element at given index of the root level array. Throws a calculation exception if the given index does not exist in given object or given object is not an array. Examples: GetAt(0, [1,2,3]) Returns: 1 GetAt(1, [[1, 2], [3, 4]]) Returns: [3, 4] GetAt(1, [[[5, 6]], [[1, 2], [3, 4]]]) Returns: [[1, 2], [3, 4]] GetAt(1, GetAt(1, [[[5, 6]], [[1, 2], [3, 4]]])) Returns: [3, 4] |
GetAtReverse (Object) |
|
Same as the GetAt function, except that the index is calculated from the end of the array. |
In (Boolean) |
|
Function checks whether the current context object is in given array, and returns either true or false. Note that the searched object is not given as a parameter, but it's the context object for the function (see the examples). Examples: 1.In([1,2,3]) Returns: true [1].In([[1],2,3]) Returns: false DateTime(2017).In([DateTime(2016), DateTime(2017)]) Returns: true Count(eventLog.Events.TimeStamp.DateTime(_.Year).In([DateTime(2012)]).Where(_==true)) Returns: The number of events there are in the given event log that have time stamp for year 2012. |
IndexOfSubArray (Integer) |
|
Returns the indexes of given sub-array (1. parameter) within the given array (2. parameter). If not given, the array in the current context object is used. Returns starting indexes of all the occurrences of given sub-array within given array. Examples: [[1,2,3,4,1,2,5]].IndexOfSubArray([1,2]) IndexOfSubArray([1,2], [1,2,3,4,1,2,5]) Return: [0, 4] [[1,2,3,4,1,2,5]].IndexOfSubArray([1,2,3,4,5]) Returns: [] [[1,2,3,4,1,2,5],[3,4],[0,1,2,3]]:IndexOfSubArray([1,2]) Returns: [ HierarchicalArray([1,2,3,4,1,2,5], [0,4]), HierarchicalArray([0,1,2,3], [1]) ] |
IsArray (Boolean) |
|
Tests whether given object is an array or hierarchical object. Returns true if it is. Examples: ForEach("item", [1, "a", null, [1,2,3], ["foo":[null,"a"], "bar":[2,null]]], IsArray(item)) Returns: [false, false, false, true, true] |
Suffle (Array) |
Array to be shuffled |
Shuffles the given array into a random order. Returns an array with the same items as in the input array, but in random order. Examples: Shuffle([1, 2]) Returns: Either [1, 2] or [2, 1] both in about 50% of the calls. Shuffle(NumberRange(0, 99))[NumberRange(0, 9)] Returns: An array containing 10 random unique values between 0 and 99 ("Random sample of size 10"). |
StringJoin (String) |
|
Joins the given array of values (converted to strings) by using given separator into a single string. If given a hierarchical object, applies the function as described in at the level that is one level up from the leaf level. The depth of the result is one level less than the object that was given as parameter. Examples: StringJoin(", ", [1,null,"foo",DateTime(2017)]) Returns: 1, , foo, 01/01/2017 00:00:00 StringJoin(", ", [[1,2], [3,4]]) Returns: ["1, 2", "3, 4"] |
Zip (Array) |
|
Combines multiple arrays into a single array. All the input arrays must be of the same length. Returns an array where the number of elements equal to the number of elements in each of the input arrays. All elements in the Nth position of the array are the concatenated values of Nth elements of each of the input arrays. Examples: Zip([1,2,3,4], [5,6,7,8], [9,10,11,12]) Returns: [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] Zip([1,2], [3,4], [5,6]) Returns: [[1, 3, 5], [2, 4, 6]] Zip([1,2,3]) Returns: [[1], [2], [3]] Zip([[1],[2],[3]]) Returns: [[1,2,3]] Zip([]) Returns: [] Zip([1], [4,5], [7,8,9]) Gives an error |
Set functions
Function | Parameters | Description |
---|---|---|
Distinct |
|
Modify given array by filtering out all duplicate values leaving only distinct values in the input array into the result. If given a hierarchical object, applies the function at the level that is one level up from the leaf level. Examples: Distinct([1]) Returns: [1] Distinct([1, 1]) Returns: [1] Distinct([1, 1, 2, 2]) Returns: [1, 2] Distinct([1, 1, 2, 2, "a", DateTime(2017), DateTime(2017), "b", DateTime(2016), "a"]) Returns: [1, 2, "a", DateTime(2017), "b", DateTime(2016)] |
Intersect |
|
Creates an intersection of multiple arrays. Returns a single array which contains an intersection of all the items in all the arrays given as parameter. If a parameter is not an array, it will be converted into an array having only the given element. Examples: Intersect([1, 2, "a", DateTime(2017), 5], ["a", 2, 3, DateTime(2017), 5], [DateTime(2017), "a", 2]) Returns: [2, "a", DateTime(2017)] |
Except |
|
Creates an substract given items from an array. Returns a single array which contains all the elements that were in the first array that were not in any of the subsequent arrays. If a parameter is not an array, it will be converted into an array having only the given element. Examples: Except([1, 2, "a", DateTime(2017), 5, "b", 6], ["a", 2, 3, DateTime(2017), 5], [DateTime(2017), "a", 2, 6]) Returns: [1, "b"] |
Union |
|
Creates an union of multiple arrays. Returns a single array which contains an union of all the items in all the arrays given as parameter. If a parameter is not an array, it will be converted into an array having only the given element. Examples: Union([1, 2, "a", DateTime(2017), 5], ["a", 2, 3, DateTime(2017), 5], [DateTime(2017), "a", 2, "b"]) Returns: [1, 2, "a", DateTime(2017), 5, 3, "b"] |
Ordering functions
Function | Parameters | Description |
---|---|---|
OrderBy (array) |
|
Orders the given array using values from the given order expression. The order expression is evaluated once for each item in the array. The order expression supports all atomic (=not collection) primitive value types. Examples: OrderBy(["a", "x", "b", "z", "n", "l", "a"], _) Return: ["a", "a", "b", "l", "n", "x", "z"] OrderBy([9,8,7,6,5,4,3,2,1], _%3) Returns: [9,6,3,7,4,1,8,5,2] OrderBy([9,8,7,6,5,4,3,2,1], _%3 + _/30) Returns: [3,6,9,1,4,7,2,5,8] |
OrderByDescending (array) |
|
Result is same as in the OrderBy function, except the order is reverse. |
OrderByTop (array) |
|
Orders given top-level array by the value of given expression using ascending order. Supports all value types, including multi-dimensional arrays. Order expression is evaluated in the context of each array item whose value determines the order of that item. Examples: OrderByTop([[1, 2, 3], [2, 2, 2], [3, 2, 1]], _[2]) Returns: [[3, 2, 1], [2, 2, 2], [1, 2, 3]] |
OrderByValue (array) |
|
Orders the given array using the natural order of items, for example numbers it's the increasing order, and for strings it's text ordering. OrderByValue(["a", "x", "b", "z", "n", "l", "a"]) Return: ["a", "a", "b", "l", "n", "x", "z"] |
OrderByValueDescending (array) |
|
Result is same as in the OrderByValue function, except the order is reverse. |
Loop functions
Function | Parameters | Description |
---|---|---|
For |
|
Iterates the given expression until the given condition is met, and returns the results of the iterated expressions for every iteration as an array. Examples: For("i", 0, i < 4, i + 1, i) Returns: [0, 1, 2, 3] For("x", 0, x < 3, x + 1, For("y", 0, y < 3, y + 1, StringJoin(",", [x, y])) Returns: [["0,0", "0,1", "0,2"], ["1,0", "1,1", "1,2"], ["2,0", "2,1", "2,2"]] For("i", 0, i < 4, i + 1, DateTime(2010 + i)) Returns: [DateTime(2010), DateTime(2011), DateTime(2012), DateTime(2013)] For("str", "a", str != "aaaaa", str + "a", str) Returns: ["a", "aa", "aaa", "aaaa"] |
ForEach |
|
Repeats the given expression as many times there are items in the given array. Item in the array is available as the given variable in the expression. Examples: ForEach("i", [1,2,3], "Value is: " + i) Returns: Value is: 1 Value is: 2 Value is: 3 ForEach("item", EventLogById(1).Cases, Let("c" + item.Name, item)) Results: Creates expression variable variables like "c<casename>" for every case in the model. ForEach("myVariable", ["a", "b", "c"], myVariable + myVariable) Returns: aa bb cc |
NumberRange |
|
Creates an array of numbers within given range with the given interval. Interval parameter is optional, and by default it is one. Examples: NumberRange(1, 3) Returns: [1, 2, 3] NumberRange(1, 3, 0.5) Returns: [1, 1.5, 2, 2.5, 3] NumberRange(1, 3, 0.8) Returns: [1, 1.8, 2.6] |
Repeat |
|
Repeats the defined expression the defined number of times. Examples: Repeat(3, "Repeat me!") Returns: "Repeat me!" "Repeat me!" "Repeat me!" Repeat(1, 5) Returns 5 |
TimeRange |
|
Generates a timestamp array starting from the start timestamp with the defined interval, and ending when the end timestamp is reached. Note that this function only creates timestamps with equal durations, so it's not possible to e.g. create timestamps for each month (to do that, you can use the loops). Generate datetimes starting from Monday 2017-01-01 and ending to Monday 2017-12-31 including all Mondays between them: Timerange(Datetime(2018,1,1), Datetime(2018,1,1), Timespan(7)) |
Recursion functions
Function | Parameters | Description |
---|---|---|
Recurse |
|
Evaluates the given expression recursively until given condition or recursion depth is met. The function returns all the traversed objects in a single array. When the stop condition expression evaluates to false, it will stop the current recursion without including the false evaluated object into the result. Default stop condition is !IsNull(_). The default maximum depth is 1000. Examples: (1).Recurse(_ + 1, _ < 5) Returns: [1, 2, 3, 4] event.Recurse(NextInCase) Returns: An array of all the events following given event inside the same case. event.Recurse(NextInCase, Type.Name != "Invoice") Returns: An array of all the events following given event inside the same case until event whose type name is "Invoice", which will itself not be included into the result. event.Recurse(NextInCase, Type.Name != "Invoice", 2) Returns: An array of all the events following given event inside the same case until event whose type name is "Invoice" or until the recursion depth of 2 has been reached, which will itself not be included into the result. |
RecurseWithHierarchy |
|
Evaluates the given expression recursively until given condition or recursion depth is met. The function returns the traversed object hierarchy. When the stop condition expression evaluates to false, it will stop the current recursion without including the false evaluated object into the result. Default stop condition is !IsNull(_). The default maximum depth is 1000. Examples: [1,2].RecurseWithHierarchy([1,2], false, 2) Returns: [1:[1:[1,2],2:[1,2]],2:[1:[1,2], 2:[1,2]]] (1).RecurseWithHierarchy(_ + 1, _ < 5) Returns: 1:[2:[3:[4]]] RemoveLeaves(eventLog.Flows:From.Where(IsNull(_))).To.RecurseWithHierarchy(OutgoingFlows.To, !IsNull(_), 2) Returns: A hierarchy consisting of all the starter events of given event log and recursively all the event types reachable from them via flows until depth of 2 is reached. |
RecursiveFind |
|
Evaluates given expression recursively until given condition or recursion depth is met. The function collects all the traversed objects that match the given find expression along the way. When the find condition expression evaluates to true for the current object, it causes the following:
When the stop condition expression evaluates to false, it will stop the current recursion without including the false evaluated object into the result. Default stop condition is !IsNull(_). The default maximum depth is 1000. Continue after finding tells should the recursion be continued after a match has been found in the current branch. Examples: (1).RecursiveFind(_ + 1, _ == 100) Returns: 100 eventLog.Cases:GetAt(0, Events).RecursiveFind(NextInCase, Organization=="Finance", !IsNull(_)) Returns: For each case, returns the first (by time) event whose organization equals to "Finance". eventLog.Cases:Events.Where(Organization=="Finance") eventLog.Cases:GetAt(0, Events).RecursiveFind(NextInCase, Organization=="Finance", true, true) Returns: Both return for each case all events whose organization equals to "Finance". |
Variable handling functions
Function | Parameters | Description |
---|---|---|
Def |
|
Creates a new user defined function. Parameters starting from the second, are the parameters that user gives when calling the function. The last parameter is the expression to evaluate when the function is called. In that definition expression the named parameters are used. The created function is valid only within the current scope and all its child scopes. Examples: Def("Inc", "a", a + 1); Inc(2); Returns: 3 Def("Add", "a", "b", a + b); [1, 2, 3].Add(_, 2); Returns: [3, 4, 5] Def("AddSelf", "b", _ + b); [1, 2, 3].AddSelf(2); Returns: [3, 4, 5] Def("Fib", "a", If(a < 2, 1, Fib(a - 1) + Fib(a - 2))); Fib(10); Returns: 89 |
Let |
|
Defines one or several user defined variables which can be used in the expression provided as the last parameter. Note that user defined variables cannot override existing properties. Examples: Let("var1", "Orange"); "Value is " + var1; Returns: Value is Orange Let("var1", "Orange", "var2", "Mango"); "Values are " + var1 + " and " + var2); Returns: Values are Orange and Mango |
Set |
|
Sets a value for an existing user defined variable. Can also be used to set several variable values at once. The variable to set must have been created in some visible scope by Let function. There can be any number of variable name and variable value pairs as long as the number of parameters is even number. If the number of parameters was two, the function returns that single set value. If the number of parameters is more than two, the function returns an array of all the set values. |
Variable |
|
Function to get a variable value. The function is needed when there are spaces in a variable name, because that variable cannot be referenced otherwise in the expressions. |
JSON functions
Function | Parameters | Description |
---|---|---|
ParseJson | jsonData (String) |
1. Converts given JSON string into an object. 1.1. Uses https://docs.microsoft.com/en-us/dotnet/api/system.web.script.serialization.javascriptserializer.deserialize?view=netframework-4.7.2 for de-serialization of the object. JSON objects will be represented as StringDictionary objects in the expression language. Examples: ParseJson("{\"a\": 1, \"b\": 2}").Get("b") Returns: 2 Sum(ParseJson("[1, 2, 3, 4]")) Returns: 10 ToJson(ParseJson("{\"a\": 1, \"b\": 2}")) Returns: {"a":1,"b":2} |
ToJson | Object |
Converts given object into JSON. Uses https://docs.microsoft.com/en-us/dotnet/api/system.web.script.serialization.javascriptserializer.serialize?view=netframework-4.7.2 for serialization of the object. It is recommended that hierarchical arrays (#29290#) and objects (#29286#) are first converted to dictionaries (#48320#) before converting to JSON since JSON does not have exactly identical construct and thus converting JSON back to expression object will not result object similar to the original. Examples: ToJson(ParseJson("{\"a\": 1, \"b\": 2}")) Returns: {"a":1,"b":2} ToJson(ToDictionary().Set("a", 1, "b", 2)) Returns: {"a":1,"b":2} ToJson([1,[[2,ToDictionary().Set("a", 1)],4]]) Returns: [1,[[2,{"a":1}],4]] ToJson(null) Returns: null ToJson(_empty) Returns: {} ToJson(["a": 1, "b": 2]) Returns: [{"Root":"a","Array":[1]},{"Root":"b","Array":[2]}] |
Matrix functions
Function | Parameters | Description | |
---|---|---|---|
BalancedKMeans | jsonData (String) |
Performs BalancedKMeans -clustering for given numeric matrix. 1.1. Based on: http://accord-framework.net/docs/html/T_Accord_MachineLearning_BalancedKMeans.htm 2. Parameters and return value structure identical to KMeans function (#48341#) | |
Codify | Matrix to codify |
Use Accord's Codify -functionality to encode all unique column values into unique numeric integer values. Based on: http://accord-framework.net/docs/html/T_Accord_Statistics_Filters_Codification.htm. Returns codified matrix of exactly the same dimensions as the input matrix. Examples: Codify([[1,2], [3,4], [1,4]]) Returns: [[0, 0], [1, 1], [0, 1]] Codify([[123, "foo"], [456, "bar"], [456, "foo"]]) Returns: [[0, 0], [1, 1], [1, 0]] | |
KMeans |
Performs KMeans -clustering for given numeric matrix. Based on: http://accord-framework.net/docs/html/T_Accord_MachineLearning_KMeans.htm 2. Parameters: 2.1. matrix: Matrix to cluster. 2.1.1. Rows (1st dimension) represent data points and columns represent feature values (2nd dimension) 2.2. k: Target number of clusters 2.3. distanceFunction: Distance function to be used in the clustering process (#48347#). 2.4. parameters: Optional key value pair collection as described in #34201#. 2.4.1. Supported keys and values: 2.4.1.1. ComputeCovariance: If true, the result will include covariance matrices. 2.4.1.1.1. Default = false 3. Returns an array having the following elements: 3.1. Element 0: An array of all the cluster labels for all the rows in the input matrix in the same order as they were given in the matrix parameter. 3.2. Element 1: An array of length 2 having the following elements: 3.2.1. Element 0: Computed final error of the clustering. 3.2.2. Element 1: Number of iterations performed in the clustering. 3.3. Element 2: Only returned if computeCovariance is True. Examples: KMeans([[1, 2], [2, 3], [2, 2]], 2) Returns (e.g.): [[0, 1, 0], [0.16667, 2]] KMeans([[1, 2], [2, 3], [2, 2]], 3) Returns (e.g.): [[2, 1, 0], [0, 1]] KMeans([[1, 2], [2, 3], [2, 2]], 2, "manhattan", true) Returns (e.g.): [[0, 1, 0], [0.33333, 2], <covariance matrices (k * columns * columns)>] KMeans(OneHot(Codify([[123, "foo"], [456, "bar"], [456, "foo"]])), 2) Returns (e.g.): [[0, 1, 0], [0.33333, 2]] | ||
KModes |
Performs KModes -clustering for given numeric matrix. Based on: http://accord-framework.net/docs/html/T_Accord_MachineLearning_KModes.htm 2. Parameters: 2.1. matrix: Matrix to cluster. 2.1.1. Rows (1st dimension) represent data points and columns represent feature values (2nd dimension) 2.2. k: Target number of clusters 2.3. distanceFunction: Distance function to be used in the clustering process (#48347#). 3. Returns an array having the following elements: 3.1. Element 0: An array of all the cluster labels for all the rows in the input matrix in the same order as they were given in the matrix parameter. 3.2. Element 1: An array of length 2 having the following elements: 3.2.1. Element 0: Computed final error of the clustering. 3.2.2. Element 1: Number of iterations performed in the clustering. Examples: KModes([[1, 2], [2, 3], [2, 2]], 2) Returns (e.g.): [[0, 1, 0], [0, 2]] KModes([[1, 2], [2, 3], [2, 2]], 3) Returns (e.g.): [[2, 1, 0], [0, 1]] |
||
OneHot |
One-hot encode all matrix columns. Based on: http://accord-framework.net/docs/html/M_Accord_Math_Jagged_OneHot_1.htm 2. Parameters: 2.1. matrix: Numeric matrix to one-hot encode. 3. Returns a matrix consisting of a concatenation of one-hot encoding of each of the input matrix columns. 3.1. The number of columns in the returned matrix is at least the same as in the input matrix. 3.2. For each input column, the corresponding one-hot vector will have all the values of 0, except for one which will be 1. Examples: OneHot([[0], [2], [1], [3]]) Returns: [[1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0, 1]] OneHot(Codify([[123, "foo"], [456, "bar"], [456, "foo"]])) Returns: [[1, 0, 1, 0], [0, 1, 0, 1], [0, 1, 1, 0]] |
Hierachical object functions
Function | Parameters | Description |
---|---|---|
FindRepeats |
|
Searches for repeating patterns in given array. Parameters:
Returns an array of arrays indicating the repeating patterns and their positions in the array formatted as follows:
Examples: FindRepeats([0, 1, 2, 0, 1, 2]) Returns: [ [[0, 1, 2], [0, 3]], [[0, 1], [0, 3]], [[1, 2], [1, 4]], [[0], [0, 3]], [[1], [1, 4]], [[2], [2, 5]] ] FindRepeats([0, 1, 2, 0, 1, 2], 0, true) Returns: [[[0, 1, 2], [0, 3]]] FindRepeats([1, "b", DateTime(2017), 1, "b", DateTime(2017)], 3) Returns: [[1, "b", DateTime(2017)], [0, 3]] |
Flatten |
|
Collects all the actual leaf values from given array, array of arrays or hierarchical object and returns them in a single array. If given a hierarchical object, this function collects actual leaf values instead of leaf level values. Elements in the returned array are in the same order they were found when traversing the input object using depth first search. When context object is included, should context objects in the internal nodes of a hierarchical object be also included into the result. Default is false. Examples: Flatten(1) Returns: 1 Flatten([1, 2]) Returns: [1,2] Flatten([[[1, 2],[3, 4]],[[5, 6]]]) Returns: [1, 2, 3, 4, 5, 6] Flatten([[1, 2], 3]) Returns: [1, 2, 3] Flatten([[1,2,3,4], null, [5], [1, null]]) Returns: [1, 2, 3, 4, null, 5, 1, null] Flatten(["a":1, "b":2]) Flatten(["a":1, "b":2], false) Returns: [1, 2] Flatten(["a":1, "b":2], true) Returns: ["a", 1, "b", 2] |
RemoveLeaves |
|
Remove one level of hierarchy from a hierarchical object replacing all the bottom level hierarchical arrays with the context objects of the hierarchical arrays. Returns the given object with all the bottom level hierarchical arrays with the context objects of the hierarchical arrays. Examples: RemoveLeaves(["foo":1, "bar":2]) Returns: ["foo", "bar"] RemoveLeaves(eventLog.Flows:From.Where(IsNull(_))) Results: All the flows starting the cases in the event log. |
ReplaceLeafValues |
|
Replace all leaf values of given array or hierarchical object at given levels up from the leaf level with results of given expression. Examples: ReplaceLeafValues([1,2, null], "x", If(IsNull(x), null, x+1), 0) Result: [2, 4, null] ReplaceLeafValues([[[1,2],[2,3]],[[3,4],[4,5]]], "x", Flatten(x), 0) Result: [[[[1],[2]],[[2],[3]]],[[[3],[4]],[[4],[5]]]] ReplaceLeafValues([[[1,2],[2,3]],[[3,4],[4,5]]], "x", Flatten(x), 1) Result: [[[1,2],[2,3]],[[3,4],[4,5]]] ReplaceLeafValues([[[1,2],[2,3]],[[3,4],[4,5]]], "x", Flatten(x), 2) Result: [[1,2,2,3],[3,4,4,5]] ReplaceLeafValues([[[1,2],[2,3]],[[3,4],[4,5]]], "x", Flatten(x), 3) Result: [1,2,2,3,3,4,4,5] |
SliceMiddle |
|
Extracts a continuous range of an array or hierarchical object. If given a hierarchical object, applies the function at the level that is specified levels level up from the leaf level. Start index: Negative value means that the index is counting from the end of the array. If array does not have element at this given index, empty array is returned. End index: not included into the extracted range. Negative value means that the index is counting from the end of the array. If array does not have element at this given index, all the elements to the end from the start index will be extracted. Levels up: At which level of the hierarchical object are we operating (number of levels up from the leaf level). Should be at least 1 (since 0 level does not contain arrays). Examples: SliceMiddle(1, 2, 1, [[0, 1, 2, 3], [4, 5, 6, 7]]) Returns: [[1], [5]] SliceMiddle(2, 4, 1, [[0, 1, 2, 3], [4, 5, 6, 7]]) Returns: [[2, 3], [6, 7]] SliceMiddle(0, 1, 2, [[0, 1, 2, 3], [4, 5, 6, 7]]) Returns: [0, 1, 2, 3] SliceMiddle(3, 5, 1, [0, 1, 2, 3, 4, 5, 6, 7]) Returns: [3, 4] SliceMiddle(-3, -1, 1, [0, 1, 2, 3, 4, 5, 6, 7]) Returns: [5, 6] SliceMiddle(3, -1, 1, [0, 1, 2, 3, 4, 5, 6, 7]) Returns: [3, 4, 5, 6] |
Machine Learning Functions
Other functions
Function | Parameters | Description |
---|---|---|
Catch |
|
Calculates the given expression and if any exceptions are thrown during the calculation, catches that exception and returns the given result. Note that this function does not catch any syntactical errors. Examples: Catch(1, 1234) Returns: 1 Catch(undefined, 1234) Returns: 1234 Catch([1,2].undefined, 1234) Returns: 1234 Catch(EventLogById(-1), 1234) Returns: 1234 |
Coalesce |
|
Returns the second parameter if the first parameter evaluates to null or empty. If given a hierarchical object, applies the function at the leaf level. If the the given object is a hierarchical object, all its leaf level values are coalesced separately. Examples: Coalesce(0, 1) Returns: 0 Coalesce(null, 1) Coalesce(_empty, 1) Coalesce(_remove, 1) All return: 1 Coalesce([[null, 1], [null, null]], 3) Returns: [[3, 1], [3, 3]] Coalesce([[null, 1], 2], 3) Returns: [[3, 1], null] Coalesce([1, [null, 2], null], 3) Returns: [1, [null, 2], 3] |
DesignModelFromXml |
|
Creates new (DesignModel object) from BPMN 2.0 XML document provided as a string. (BPMN 2.0 specification: https://www.omg.org/spec/BPMN/). In the BPMN 2.0 XML file, the http://www.omg.org/spec/BPMN/20100524/DI section is not used by the function, and thus it can be omitted to reduce transferred data. Note that the quotation marks need to be escaped if the BPMN 2.0 XML is provided as a literal in the expression. Example: Let("myConformanceModel", DesignModelFromXml(" <?xml version=\"1.0\" encoding=\"UTF-8\"?> <bpmn:definitions xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:bpmn=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\"> <bpmn:process id=\"Process_1\" isExecutable=\"false\"> <bpmn:startEvent id=\"StartEvent_1\" /> <bpmn:task id=\"Task_0y5w837\" name=\"abc\"> <bpmn:outgoing>SequenceFlow_10mpkws</bpmn:outgoing> </bpmn:task> <bpmn:task id=\"Task_0c16r07\" name=\"def\"> <bpmn:incoming>SequenceFlow_10mpkws</bpmn:incoming> </bpmn:task> <bpmn:sequenceFlow id=\"SequenceFlow_10mpkws\" sourceRef=\"Task_0y5w837\" targetRef=\"Task_0c16r07\" /> </bpmn:process> <bpmndi:BPMNDiagram id=\"BPMNDiagram_1\"> ... </bpmndi:BPMNDiagram> </bpmn:definitions> ")) |
EventLogById |
|
Returns EventLog object corresponding to the provided filter Id. |
GetContext |
|
Returns the context of given hierarchical array, i.e. list of keys in the object. If the given object is not an hierarchical array, returns null. Examples: GetContext("a":1) Returns: "a" ["a":1, "b":2, 2:3].GetContext(_) Returns: ["a", "b", 2] ([1,2,3]:(_*2)).GetContext(_) Returns: [1, 2, 3] ["a":1, 2, 3].GetContext(_) Returns: ["a", null, null] |
GetValueOfContext |
|
Returns the value of specified context object in given hierarchical array, i.e. the value behind the key. If the key if found multiple times, the first occurrence is returned. Returns _empty if the given key was not found. Examples: GetValueOfContext("bar", ["foo":1, "bar":2]) Returns: [2] GetValueOfContext("bar", ["foo":1, "bar":2, "bar":"second"]) Returns: [2] GetValueOfContext("test", ["foo":1, "bar":2]) Returns: _empty |
ModelById |
|
Returns Model object corresponding to the provided model Id. |
GroupBy |
|
Groups given array by given expressions. Returns the given array or hierarchical object parameter split into groups in a way that each specified group expression creates one level of hierarchical arrays having the root object the same as the result of the evaluation of the grouping expression. Examples: GroupBy([1,2,2,3,3,4,5,5,4,4,4], _) Returns: [[1:[1], 2:[2, 2], 3:[3, 3], 4:[4, 4, 4, 4], 5:[5,5]] |
GroupByValue | * Array or hierarchical object to group |
Groups all unique values in given array or hierarchical object. Returns the given array or hierarchical object in a format which has all the values in the original array only once as root objects and the root objects in the original array as contents of the arrays inside contexts. In a way, this just switches root objects of hierarchical arrays to be the actual values and actual values to be root objects (without duplicates). For every item in the array, the behavior is as follows:
Examples: GroupByValue([1,2,2,3,3,4,5,5,4,4,4]) Returns: (The same as GroupBy([1,2,2,3,3,4,5,5,4,4,4], _)) [1:[1], 2:[2, 2], 3:[3, 3], 4:[4, 4, 4, 4], 5:[5,5]] GroupByValue([1:["a","b"],2:["b","c"],3:["c"],4:["d","e"],5:["d","d","d"]]) Returns: ["a":[1], "b":[1, 2], "c":[2, 3], "d":[4, 5, 5, 5], "e":[4]] Get count of item "2" in the array: Let(\"groupped\", GroupByValue([1,2,4,1,4,2,3,3,2,4])); Count(GetValueOfContext(2, groupped)) Returns: 3 |
If |
|
Evaluates the condition expression and if it's true, returns the value of the second parameter. Otherwise returns the value of the third parameter. Always evaluates only either the second or the third parameter, but never both. Examples: If(Now.Second % 2 == 0, "Even second", "Odd second") Returns: "Event second" or "Odd second" depending on the time of the evaluation. For("i", 0, i < 10, i + 1, i).If(_ % 2 == 0, _, _remove) Returns: [0, 2, 4, 6, 8] NOTE: Is equivalent to: For("i", 0, i < 10, i + 1, i).Where(_ % 2 == 0) |
IsNull (Boolean) |
|
Tests whether given object is null, _empty or _remove. Returns true if it is any of those. If given a hierarchical object, applies the function as described in at the leaf level. Examples: ForEach("item", [1, "a", null, _empty, _remove], IsNull(item)) Returns: [false, false, true, true, true] IsNull(["foo":[null,"a"], "bar":[2,null]]) Returns: [ HierarchicalArray("foo", [true, false]), HierarchicalArray("bar", [false, true]) ] |
IsNullTop (Boolean) |
|
Tests whether given object is null, _empty or _remove. Returns true if it is any of those. The function does not aggregate values in hierarchical objects. Examples: ForEach("item", [1, "a", null, _empty, _remove], IsNullTop(item)) Returns: [false, false, true, true, true] IsNullTop(["foo":[null,"a"], "bar":[2,null]]) Returns: false |
ToInteger (Integer) |
|
Converts given object to an integer. Internally uses .NET Convert.ToInt64 -function with invariant culture. See https://msdn.microsoft.com/en-us/library/system.convert.toint64(v=vs.110).aspx for more information. If the object can not be converted into an integer, an exception will be thrown. Examples: ToInteger(1.234) Returns: 1 ToInteger(-1.5) Returns: -2 ToInteger(1313.6) Returns: 1314 ToInteger(123456789012345678) Returns: 123456789012345678 ToInteger("5") Returns: 5 ToInteger("-5") Returns: -5 |
ToString (String) |
|
Converts given object to a string object representation optimized for debugging purposes. Internally uses .NET Convert.ToString -function with invariant culture for non-array objects. See https://msdn.microsoft.com/en-us/library/system.convert.tostring(v=vs.110).aspx for more information. Examples: ToString(1) + " < " + ToString(2) Returns: "1 < 2". "Case=\'" + ToString(a) + "\'" Returns: "Case='<string representation of object a>'" ToString(DateTime(2017,1,2,3,4,5,6)) Returns: "2017-01-02T03:04:05" |
Where |
|
Returns the context object if the given expression evaluates to true. Otherwise returns the second parameter. The second parameter is optional and it's by default EMPTY. Examples: [1,2,3,4].Where(_>2) Returns: [3,4] [1,2,3,4].Where(_>2, _+100) Returns: [101, 102, 3,4] [1,2,3].[_,_+1] Returns: [[1, 2], [2, 3], [3, 4]] [1,2,3].[_,_+1].Where(_>=3) Returns: [[], [3], [3, 4]] [1,2,3].[_,_+1].Where(_>=3, _remove) Returns: [[3], [3, 4]] |