Complex types
UNNEST function
The new UNNEST function expands one or more array columns. UNNEST is similar to EXPLODE, with two key differences:
-
UNNEST returns element values but not positions.
-
UNNEST automatically expands all arrays that are passed to it.
EXPLODE performance optimization
The EXPLODE function translates a single row of input into multiple rows of output, one per collection element. There is, therefore, usually no benefit to partitioning the input. Previously, a query using EXPLODE required an OVER clause and Vertica partitioned the input before calling EXPLODE. Now, you can skip this partitioning step by using the skip_partitioning
function parameter and omitting the OVER clause.
CROSS JOIN EXPLODE
You can use the output of EXPLODE as if it were a relation by using CROSS JOIN EXPLODE in a query, as in the following example:
=> ALTER SESSION SET UDPARAMETER FOR ComplexTypesLib skip_partitioning = true;
=> SELECT student, score FROM tests
CROSS JOIN EXPLODE(scores) AS t (pos, score)
ORDER BY score DESC;
student | score
---------+-------
Sam | 98
Sam | 97
Bob | 92
Tom | 91
Sam | 85
Tom | 82
Bob | 79
Bob | 78
Tom | 75
Tom | 68
(10 rows)
For details, see Joining on Results.