I think these 4 steps should help: Use zip Explode Withcolumn (getelement of array) Drop the array column
Thanks On Thu, Feb 16, 2023, 2:18 PM sam smith <qustacksm2123...@gmail.com> wrote: > @Enrico Minack <i...@enrico.minack.dev> I used arrays_zip to merge values > into one row, and then used toJSON() to export the data. > @Bjørn explode_outer didn't yield the expected results. > > Thanks anyway. > > Le jeu. 16 févr. 2023 à 09:06, Enrico Minack <i...@enrico.minack.dev> a > écrit : > >> You have to take each row and zip the lists, each element of the result >> becomes one new row. >> >> So turn write a method that turns >> Row(List("A","B","null"), List("C","D","null"), List("E","null","null")) >> into >> List(List("A","C","E"), List("B","D","null"), >> List("null","null","null")) >> and use flatmap with that method. >> >> In Scala, this would read: >> >> df.flatMap { row => (row.getSeq[String](0), row.getSeq[String](1), >> row.getSeq[String](2)).zipped.toIterable }.show() >> >> Enrico >> >> >> Am 14.02.23 um 22:54 schrieb sam smith: >> >> Hello guys, >> >> I have the following dataframe: >> >> *col1* >> >> *col2* >> >> *col3* >> >> ["A","B","null"] >> >> ["C","D","null"] >> >> ["E","null","null"] >> >> >> I want to explode it to the following dataframe: >> >> *col1* >> >> *col2* >> >> *col3* >> >> "A" >> >> "C" >> >> "E" >> >> "B" >> >> "D" >> >> "null" >> >> "null" >> >> "null" >> >> "null" >> >> How to do that (preferably in Java) using the explode() method ? knowing >> that something like the following won't yield correct output: >> >> for (String colName: dataset.columns()) >> dataset=dataset.withColumn(colName,explode(dataset.col(colName))); >> >> >> >>