Applies to: ✅ Data 360 SQL ✅ Tableau Hyper API
Expands the elements of one or more arrays into a set of rows.
Syntax
unnest(<array> [, ...])
Arguments
Required
<array>: The array to expand.
Optional
...: Additional arrays to expand in lock-step.
Returns
Returns a set of rows, each containing one element from the array(s). If multiple arrays are provided, they are expanded in lock-step. If the arrays aren’t all the same length, the shorter ones are padded with NULL values.
Examples
Unnest an Array
SELECT * FROM unnest(ARRAY['Mon','Tue','Wed','Thu','Fri']) AS days(day)
Results:
| day |
|---|
| Mon |
| Tue |
| Wed |
| Thu |
| Fri |
Unnest an Array while numbering the rows
The WITH ORDINALITY clause instructs unnest to also number the generated rows.
Thereby, we know which element occured at which position in the original array.
SELECT * FROM unnest(ARRAY['Mon','Tue','Wed','Thu','Fri']) WITH ORDINALITY AS days(day, ordinality)
Results:
| day | ordinality |
|---|---|
| Mon | 1 |
| Tue | 2 |
| Wed | 3 |
| Thu | 4 |
| Fri | 5 |
Unnest Multiple Arrays
You can also call unnest with multiple array parameters.
In this case, the arrays are expanded in lock-step.
If the arrays aren’t all the same length, the shorter ones are padded with NULL values.
SELECT * FROM unnest(
ARRAY['Mon','Tue','Wed','Thu','Fri', 'Sat', 'Sun'],
ARRAY['ramp up','work','work','work','wrap up'],
) AS days(name, task);
Results:
| name | task |
|---|---|
| Mon | ramp up |
| Tue | work |
| Wed | work |
| Thu | work |
| Fri | wrap up |
| Sat | NULL |
| Sun | NULL |