Collection Functions in Confluent Cloud for Apache Flink¶
Confluent Cloud for Apache Flink® provides these built-in collection functions to use in Flink SQL queries:
ARRAY¶
- Syntax
ARRAY ‘[’ value1 [, value2 ]* ‘]’
- Description
Creates an array from the specified list of values,
(value1, value2, ...)
.Use the bracket syntax,
array_name[INT]
, to return the element at position INT in the array.The index starts at 1.
- Example
-- returns Java SELECT ARRAY['Java', 'SQL'][1];
ARRAY_AGG¶
- Syntax
ARRAY_AGG([ ALL | DISTINCT ] expression [ RESPECT NULLS | IGNORE NULLS ])
- Description
Concatenates the input rows and returns an array, or NULL if there are no input rows.
Use the DISTINCT keyword to specify one unique instance of each value. The ALL keyword concatenates all rows. The default is ALL.
By default, NULL values are respected. You can use IGNORE NULLS to skip NULL values.
Currently, the ORDER BY clause is not supported.
- Example
-- returns: -- product_name quantities -- Apple [3, 7] -- Orange [2] -- Banana [5, 4] WITH sales_data (id, product_name, quantity_sold) AS ( VALUES (1, 'Apple', 3), (2, 'Banana', 5), (3, 'Apple', 7), (4, 'Orange', 2), (5, 'Banana', 4) ) SELECT product_name, ARRAY_AGG(quantity_sold) AS quantities FROM sales_data GROUP BY product_name;
ARRAY_APPEND¶
- Syntax
ARRAY_APPEND(array, element)
- Description
Appends an element to the end of the array and returns the result.
If
array
is NULL, the function returns NULL.If
element
is NULL, the NULL element is added to the end of the array.- Example
-- returns [SQL,Java,C#] SELECT ARRAY_APPEND(ARRAY['SQL', 'Java'], 'C#');
ARRAY_CONCAT¶
- Syntax
ARRAY_CONCAT(array1, array2, …)
- Description
Returns an array that is the result of concatenating at least one array.
The returned array contains all of the elements in the first array, followed by all of the elements in the second array, and so forth, up to the Nth array.
If any input array is NULL, the function returns NULL.
- Example
-- returns [SQL,Java,Python,Python,Rust,Haskell,C#] SELECT ARRAY_CONCAT(ARRAY['SQL', 'Java'], ARRAY['Python'], ARRAY['Python', 'Rust', 'Haskell', 'C#']);
ARRAY_CONTAINS¶
- Syntax
ARRAY_CONTAINS(array, element)
- Description
Returns a value indicating whether the
element
exists inarray
.Checking for NULL elements in the array is supported.
If
array
is NULL, theARRAY_CONTAINS
function returns NULL.The specified element is cast implicitly to the array’s element type, if necessary.
- Example
-- returns TRUE SELECT ARRAY_CONTAINS(ARRAY['Java', 'SQL'], 'SQL');
ARRAY_DISTINCT¶
- Syntax
ARRAY_DISTINCT(array)
- Description
Returns an array with unique elements.
If
array
is NULL, theARRAY_DISTINCT
function returns NULL.The order of elements in the source array is preserved in the returned array.
- Example
-- returns [SQL,Java,Python] SELECT ARRAY_DISTINCT(ARRAY['SQL', 'Java', 'SQL', 'Python', 'SQL']);
ARRAY_EXCEPT¶
- Syntax
ARRAY_EXCEPT(array1, array2)
- Description
Returns an array that contains the elements from
array1
that are not inarray2
, without duplicates.The order of the elements from
array1
is retained.If no elements remain after excluding the elements in
array2
fromarray1
, the function returns an empty array.If one or both arguments are NULL, the function returns NULL.
- Example
-- returns [Java, SQL] SELECT ARRAY_EXCEPT(ARRAY['SQL', 'Java', 'Python', 'Rust',], ARRAY['Python', 'Rust', 'Haskell', 'C#']);
ARRAY_INTERSECT¶
- Syntax
ARRAY_INTERSECT(array1, array2)
- Description
Returns an array that contains the elements from
array1
that are also inarray2
, without duplicates.The order of the elements from
array1
is retained.If there are no common elements in
array1
andarray2
, the function returns an empty array.If either array is NULL, the function returns NULL.
- Example
-- returns [Python, Rust] SELECT ARRAY_INTERSECT(ARRAY['SQL', 'Java', 'Python', 'Rust',], ARRAY['Python', 'Rust', 'Haskell', 'C#']);
ARRAY_JOIN¶
- Syntax
ARRAY_JOIN(array, delimiter [, nullReplacement])
- Description
Returns a string that represents the concatenation of the elements in
array
. Elements are cast to their string representation.The
delimiter
is a string that separates each pair of consecutive elements of the array.The optional
nullReplacement
is a string that replaces null elements in the array. IfnullReplacement
is not specified, null elements in the array are omitted from the resulting string.Returns NULL if any of the inputs is NULL.
- Example
-- returns "Java, SQL, Python, not specified" SELECT ARRAY_JOIN(ARRAY['Java', 'SQL', 'Python', NULL], ', ', 'not specified');
ARRAY_MAX¶
- Syntax
ARRAY_MAX(array)
- Description
- Returns the maximum value from
array
, or NULL ifarray
is NULL. - Example
-- returns 4 SELECT ARRAY_MAX(ARRAY[1, 2, 3, 4]);
ARRAY_MIN¶
- Syntax
ARRAY_MIN(array)
- Description
- Returns the minimum value from
array
, or NULL ifarray
is NULL. - Example
-- returns 1 SELECT ARRAY_MIN(ARRAY[1, 2, 3, 4]);
ARRAY_POSITION¶
- Syntax
ARRAY_POSITION(array, element)
- Description
Returns the position of the first occurrence of
element
inarray
as an integer. The index is 1-based, so the first element in the array has index 1.Returns 0 if
element
is not found inarray
.Returns NULL if either of the arguments is NULL.
- Example
-- returns 2 SELECT ARRAY_POSITION(ARRAY['Java', 'SQL', 'Python'], 'SQL');
ARRAY_PREPEND¶
- Syntax
ARRAY_PREPEND(array, element)
- Description
Prepends an element to the beginning of the array and returns the result.
If
array
is NULL, the function returns NULL.If
element
is NULL, the NULL element is prepended to the beginning of the array.- Example
-- returns [SQL,Java,Python] SELECT ARRAY_PREPEND(ARRAY['Java', 'Python'], 'SQL');
ARRAY_REMOVE¶
- Syntax
ARRAY_REMOVE(array, element)
- Description
Removes from
array
all elements that are equal toelement
. Order of elements is retained.If
array
is NULL, the function returns NULL.- Example
-- returns [Java,Python] SELECT ARRAY_REMOVE(ARRAY['Java', 'SQL', 'Python'], 'SQL');
ARRAY_REVERSE¶
- Syntax
ARRAY_REVERSE(array)
- Description
Returns an array that has elements in the reverse order of the elements in
array
.If
array
is NULL, the function returns NULL.- Example
-- returns [Python,SQL,Java] SELECT ARRAY_REVERSE(ARRAY['Java', 'SQL', 'Python']);
ARRAY_SLICE¶
- Syntax
ARRAY_SLICE(array, start_offset [, end_offset])
- Description
Returns a subarray of the input array between
start_offset
andend_offset
, inclusive. The offsets are 1-based, but 0 is also treated as the beginning of the array.Elements of the subarray are returned in the order they appear in
array
.Positive values are counted from the beginning of the array. Negative values are counted from the end.
If
end_offset
is omitted, this offset is treated as the length of the array.If
start_offset
is afterend_offset
, or both are out of array bounds, an empty array is returned.Returns NULL if any input value is NULL.
- Example
-- returns [SQL,Python,C#,JavaScript] SELECT ARRAY_SLICE(ARRAY['Java', 'SQL', 'Python', 'C#', 'JavaScript', 'Go'], 2, 5);
ARRAY_SORT¶
- Syntax
ARRAY_SORT(array [, ascending_order [, null_first]])
- Description
Returns an array that has the elements of
array
in sorted order.When only
array
is specified, the function defaults to ascending order with NULLs at the start.Specifying
ascending_order
asTRUE
orders the array in ascending order, with NULLs first. Settingascending_order
toFALSE
orders the array in descending order, with NULLs last.Independently, specifying
null_first
as TRUE moves NULLs to the beginning. specifyingnull_first
as FALSE moves NULLs to the end, irrespective of the sorting order.The function returns NULL if any input is NULL.
- Example
-- returns [1,2,3,4,5] SELECT ARRAY_SORT(ARRAY[5,4,3,2,1]); -- returns [NULL,SQL,Python,Java,Go,C#] SELECT ARRAY_SORT(ARRAY['Java', 'SQL', 'Python', NULL, 'Go', 'C#'], FALSE, TRUE);
ARRAY_UNION¶
- Syntax
ARRAY_UNION(array1, array2)
- Description
Returns an array that has the elements from the union of
array1
andarray2
. Duplicate elements are removed.If
array1
orarray2
is NULL, the function returns NULL.- Example
-- returns [Java,SQL,Python,C#,Go] SELECT ARRAY_UNION(ARRAY['Java', 'SQL', 'Python'], ARRAY['C#', 'SQL', 'Go']);
CARDINALITY(array)¶
- Syntax
CARDINALITY(array)
- Description
- Returns the number of elements in the specified array.
- Example
-- returns 5 SELECT CARDINALITY(ARRAY['Java', 'SQL', 'Python', 'Rust', 'C++']);
CARDINALITY(map)¶
- Syntax
CARDINALITY(map)
- Description
- Returns the number of entries in the specified map.
- Example
-- returns 3 SELECT CARDINALITY(MAP['Java', 5, 'SQL', 4, 'Python', 3]);
ELEMENT¶
- Syntax
ELEMENT(array)
- Description
Returns the sole element of the specified array. The cardinality of
array
must be 1.Returns NULL if
array
is empty.Throws an exception if
array
has more than one element.- Example
-- returns Java SELECT ELEMENT(ARRAY['Java']);
GROUP_ID¶
- Syntax
GROUP_ID()
- Description
- Returns an integer that uniquely identifies the combination of grouping keys.
GROUPING¶
- Syntax
GROUPING(expression1 [, expression2]* ) GROUPING_ID(expression1 [, expression2]* )
- Description
- Returns a bit vector of the specified grouping expressions.
Implicit row constructor¶
- Syntax
(value1 [, value2]*)
- Description
Returns a row created from a list of values,
(value1, value2,...)
.The implicit row constructor supports arbitrary expressions as fields and requires at least two fields.
The explicit row constructor can deal with an arbitrary number of fields but doesn’t support all kinds of field expressions.
- Example
-- returns (1, SQL) SELECT (1, 'SQL');
MAP¶
- Syntax
MAP [ key1, value1 [, key2, value2 ], ... ]
- Description
Returns a map created from the specified list of key-value pairs,
((key1, value1), (key2, value2), ...)
.Use the bracket syntax,
map_name[key]
, to return the value that corresponds with the specified key.- Example
-- returns 4 SELECT MAP['Java', 5, 'SQL', 4, 'Python', 3]['SQL'];
MAP_ENTRIES¶
- Syntax
MAP_ENTRIES(map)
- Description
- Returns an array with all elements in
map
. Order of elements in the returned array is not guaranteed. - Example
-- returns [Java,5,SQL,4,Python,3] SELECT MAP_ENTRIES(MAP['Java', 5, 'SQL', 4, 'Python', 3]);
MAP_FROM_ARRAYS¶
- Syntax
MAP_FROM_ARRAYS(array_of_keys, array_of_values)
- Description
- Returns a map created from an array of keys and an array of and values.
The lengths of
array_of_keys
andarray_of_values
must be the same. - Example
-- returns {key1=Python, key2=SQL, key3=Java} SELECT MAP_FROM_ARRAYS(ARRAY['key1', 'key2', 'key3'], ARRAY['Python', 'SQL', 'Java']);
MAP_KEYS¶
- Syntax
MAP_KEYS(map)
- Description
- Returns the keys of
map
as an array. Order of elements in the returned array is not guaranteed. - Example
-- returns [Java,Python,SQL] SELECT MAP_KEYS(MAP['Java', 5, 'SQL', 4, 'Python', 3]);
MAP_UNION¶
- Syntax
MAP_UNION(map1, …)
- Description
Returns a map created by merging at least one map. The maps must have a common map type.
If there are overlapping keys, the value from
map2
overwrites the value frommap1
, the value frommap3
overwrites the value frommap2
, the value frommapn
overwrites the value frommap(n-1)
.If any of the maps is NULL, the function returns NULL.
- Example
-- returns ['Java', 5, 'SQL', 4, 'Python', 3, 'C#', 2, 'Rust', 1] SELECT MAP_UNION(MAP['Java', 5, 'SQL', 4, 'Python', 3], MAP['C#', 2, 'Rust', 1]);
MAP_VALUES¶
- Syntax
MAP_VALUES(map)
- Description
- Returns the values of
map
as an array. Order of elements in the returned array is not guaranteed. - Example
-- returns [3,5,4] SELECT MAP_VALUES(MAP['Java', 5, 'SQL', 4, 'Python', 3]);