pyspark.sql.functions.explode: возвращает ноль, если столбец является пустым массивом

Набор данных выглядит следующим образом:

%pyspark
df3 = df2.select(df2.event.address.alias("address"), df2.event.artists.alias("artists"))
df3.show()

+--------------------+--------------------+
|             address|             artists|
+--------------------+--------------------+
|379 Victoria Ave,...|[[0],WrappedArray()]|
|13 Ray Small Driv...|[[0],WrappedArray()]|
+--------------------+--------------------+

Схема выглядит следующим образом:

root
 |-- address: string (nullable = true)
 |-- artists: struct (nullable = true)
 |    |-- @attributes: struct (nullable = true)
 |    |    |-- count: long (nullable = true)
 |    |-- artists: array (nullable = true)
 |    |    |-- element: string (containsNull = true)

Дело в том address не пусто Тем не менее artists является пустым WrappedArray.

df4 = df3.select(df3.address, explode(df3.artists.artists).alias("artist"))
df4.show(100)

+-------+------+
|address|artist|
+-------+------+
+-------+------+

Кажется address столбец присоединился к пустому artists элемент массива, а затем вернуть 0 так как something присоединился null становиться null, Но то, что я ожидаю, даже artist является нулем, должен добавить null в новый столбец.

У любого есть идеи, как зарезервировать новые строки с null столбец в фрейме данных Pyspark?

0 ответов

Другие вопросы по тегам