Skip to content

Array Functions ​

NOTE

Verification Status: Tested and Verified against rekuiper engine with live telemetry stream load on 2026-10-14 20:45:00 UTC.
Scorecard: 32 / 32 Array Functions Fully Verified with Live Data (100% Parity):
cardinality, array_position, array_positions, element_at, array_contains, array_create, array_remove, array_last_position, array_contains_any, array_intersect, array_union, array_max, array_avg, array_min, array_except, repeat, sequence, array_cardinality, array_flatten, array_distinct, array_map, array_join, array_shuffle, array_concat, array_sort, kvpair_array_to_obj, array_length, array_slice, deduplicate, tojson, parsejson, json_parse.

Array functions manipulate arrays or return metadata about array elements.

CARDINALITY ​

text
cardinality(array)

Returns the number of elements in the array. Returns 0 if the argument is null.

ARRAY_POSITION ​

text
array_position(array, value)

Returns the zero-based index of the first occurrence of value in the array. Returns -1 if the value is not present or if array is nil.

ARRAY_POSITIONS ​

text
array_positions(array, value)

Returns an array of zero-based indexes for all occurrences of value in array. Returns an empty array [] when value is not present or when array is nil.

Example ​

sql
array_positions(["a", "b", "a", "c"], "a")

Result:

json
[0, 2]

ELEMENT_AT ​

text
element_at(array, index)

Returns the element at the specified zero-based index. If index is negative, the function counts backward from the end of the array. Returns nil if array is nil.

ARRAY_CONTAINS ​

text
array_contains(array, value)

Returns true if the array contains the specified element. Returns nil if array is nil.

NOTE

Compatibility & Safety Note: Heterogeneous Type Handling In legacy eKuiper, array_contains panicked via Go reflection when scanning arrays containing heterogeneous types (e.g. mixed strings and integers). rekuiper compares JSON values with dynamic type checking without panicking.

Why we chose this difference: IoT payloads often arrive with loosely-typed or mixed-type JSON arrays. Panic-free evaluation ensures that heterogeneous arrays do not terminate stream execution.

ARRAY_CREATE ​

text
array_create(value1, ......)

Creates a new array from the specified literal values or expressions.

ARRAY_REMOVE ​

text
array_remove(array, value)

Returns a new array with all occurrences of value removed. Returns nil if array is nil.

ARRAY_LAST_POSITION ​

text
array_last_position(array, val)

Returns the zero-based index of the last occurrence of val in the array. Returns -1 if the value is not present or if array is nil.

ARRAY_CONTAINS_ANY ​

text
array_contains_any(array1, array2)

Returns true if array1 and array2 share at least one common element. Returns false if array1 is nil.

ARRAY_INTERSECT ​

text
array_intersect(array1, array2)

Returns an array containing the distinct intersection of elements present in both arrays. Returns nil if either array is nil.

ARRAY_UNION ​

text
array_union(array1, array2)

Returns an array containing all distinct elements from both input arrays, with duplicates removed.

ARRAY_MAX ​

text
array_max(array)

Returns the maximum element from the array. The function ignores null elements. Returns nil if array is nil or empty.

ARRAY_AVG ​

text
array_avg(array)

Returns the average of numeric elements in the array as a floating-point value. The function ignores null elements. Returns nil if array is nil or contains no valid numeric elements.

ARRAY_MIN ​

text
array_min(array)

Returns the minimum element from the array. The function ignores null elements. Returns nil if array is nil or empty.

ARRAY_EXCEPT ​

text
array_except(array1, array2)

Returns an array of distinct elements that exist in array1 but not in array2. Returns nil if array1 is nil.

REPEAT ​

text
repeat(string, count)

Creates an array containing the specified value repeated count times.

SEQUENCE ​

text
sequence(start, stop, step)

Returns an array of integers starting from start up to stop, incremented by step.

ARRAY_CARDINALITY ​

text
array_cardinality(array)

Returns the number of elements in the array. The function ignores null values. Returns 0 if array is nil.

ARRAY_FLATTEN ​

text
array_flatten(array)

Flattens nested array elements into a single-level array.

For example, input [[1, 4], [2, 3]] returns [1, 4, 2, 3]. Returns nil if array is nil.

ARRAY_DISTINCT ​

text
array_distinct(array)

Returns a new array containing unique elements with all duplicate values removed. Returns nil if array is nil.

ARRAY_MAP ​

text
array_map(function_name, array)

Returns a new array produced by applying the specified scalar function to each element. Returns nil if array is nil.

ARRAY_JOIN ​

text
array_join(array, delimiter, null_replacement)

Returns a string created by concatenating array elements with the specified delimiter. Use the optional null_replacement parameter to substitute null elements.

For example, input [1, 2, 3] with delimiter "," returns "1,2,3". Returns nil if array is nil.

ARRAY_SHUFFLE ​

text
array_shuffle(array)

Returns a new array with elements randomly rearranged. Returns nil if array is nil.

ARRAY_CONCAT ​

text
array_concat(array1, array2, ...)

Returns a new array created by concatenating the input arrays. This function does not modify input arrays. The function treats nil arguments as empty arrays.

ARRAY_SORT ​

text
array_sort(array)

Returns a sorted copy of the input array. Returns nil if array is nil.

sql
array_sort([3, 2, "b", "a"])

Result:

sql
[2, 3, "a", "b"]

KVPAIR_ARRAY_TO_OBJ ​

text
kvpair_array_to_obj(array)

Converts an array of key-value pair objects into a single JSON object.

sql
kvpair_array_to_obj([{"key":"key1", "value":1},{"key":"key2", "value":2}])

Result:

sql
{"key1":1, "key2":2}

ARRAY_LENGTH ​

text
array_length(array)

Returns the number of elements in the target array. Standard alias for cardinality.

Parameters:

  • array: An array expression or column.

Return Type:

  • int representing element count. Returns 0 if array is null or empty.

Verified Example:

sql
SELECT array_length(arr) AS v FROM telemetry;
-- Input: {"arr": [10, 20, 30, 40]}
-- Output: 4

ARRAY_SLICE ​

text
array_slice(array, start_pos, end_pos)

Extracts a contiguous subarray from array between 1-based index positions start_pos and end_pos (inclusive).

Parameters:

  • array: Source array.
  • start_pos: 1-based start index (integer $\ge 1$).
  • end_pos: 1-based end index (integer $\ge start_pos$).

Return Type:

  • A new array containing the sliced elements.

Verified Example:

sql
SELECT array_slice(arr, 2, 3) AS v FROM telemetry;
-- Input: {"arr": [10, 20, 30, 40]}
-- Output: [20, 30]

DEDUPLICATE ​

text
deduplicate(array)

Filters out duplicate elements from an array while preserving their original first-occurrence ordering.

Parameters:

  • array: An array containing scalar elements.

Return Type:

  • An array containing distinct elements in order of arrival.

Verified Example:

sql
SELECT deduplicate(items) AS v FROM telemetry;
-- Input: {"items": [1, 2, 2, 3, 1, 4]}
-- Output: [1, 2, 3, 4]

TOJSON / TO_JSON ​

text
tojson(value)
to_json(value)

Serializes a complex structured value (object, map, or array) into its valid JSON string representation.

Parameters:

  • value: Any object, map, or array expression.

Return Type:

  • string containing the compact JSON text.

Verified Example:

sql
SELECT tojson(metric) AS v FROM telemetry;
-- Input: {"metric": {"temp": 22.5, "unit": "celsius"}}
-- Output: "{\"temp\":22.5,\"unit\":\"celsius\"}"

PARSEJSON / PARSE_JSON / JSON_PARSE ​

text
parsejson(json_string)
parse_json(json_string)
json_parse(json_string)

Parses a valid JSON string into a structured JSON object or array.

Parameters:

  • json_string: A string column or expression containing formatted JSON.

Return Type:

  • An object, array, or scalar corresponding to the parsed JSON. Returns null if the string cannot be parsed.

Verified Example:

sql
SELECT parsejson(payload) AS v FROM telemetry;
-- Input: {"payload": "{\"device\":\"sens_01\",\"val\":99}"}
-- Output: {"device": "sens_01", "val": 99}

rekuiper is open source (Apache-2.0 / MIT) · For an all-in-one MQTT broker with embedded rekuiper rules, see IndraMQTT.