- posexplode(t.names) as (`arr_pos`, `arr_value`)
- posexplode(t.names) as (arr_pos, arr_value)
spark.sql(
"""
|with t_emp as(
|select t.deptno,
| collect_list(t.ename) as names
| from emp t
| group by t.deptno
| )
|select t.deptno, t.names, posexplode(t.names) as (`arr_pos`, `arr_value`)
| from t_emp t
|""".stripMargin)
.show(false)
+------+-------------------------------------------+-------+---------+
|deptno|names |arr_pos|arr_value|
+------+-------------------------------------------+-------+---------+
|10 |[CLARK, KING, MILLER, MILLER] |0 |CLARK |
|10 |[CLARK, KING, MILLER, MILLER] |1 |KING |
|10 |[CLARK, KING, MILLER, MILLER] |2 |MILLER |
|10 |[CLARK, KING, MILLER, MILLER] |3 |MILLER |
|30 |[ALLEN, WARD, MARTIN, BLAKE, TURNER, JAMES]|0 |ALLEN |
|30 |[ALLEN, WARD, MARTIN, BLAKE, TURNER, JAMES]|1 |WARD |
|30 |[ALLEN, WARD, MARTIN, BLAKE, TURNER, JAMES]|2 |MARTIN |
|30 |[ALLEN, WARD, MARTIN, BLAKE, TURNER, JAMES]|3 |BLAKE |
|30 |[ALLEN, WARD, MARTIN, BLAKE, TURNER, JAMES]|4 |TURNER |
|30 |[ALLEN, WARD, MARTIN, BLAKE, TURNER, JAMES]|5 |JAMES |
|20 |[SMITH, JONES, SCOTT, ADAMS, FORD] |0 |SMITH |
|20 |[SMITH, JONES, SCOTT, ADAMS, FORD] |1 |JonES |
|20 |[SMITH, JONES, SCOTT, ADAMS, FORD] |2 |SCOTT |
|20 |[SMITH, JONES, SCOTT, ADAMS, FORD] |3 |ADAMS |
|20 |[SMITH, JONES, SCOTT, ADAMS, FORD] |4 |FORD |
+------+-------------------------------------------+-------+---------+