Поделиться через


Выровнять

Создает один массив из массива массивов. Если структура вложенных массивов глубже двух уровней, удаляется только один уровень вложения.

Синтаксис

from pyspark.sql import functions as sf

sf.flatten(col)

Параметры

Параметр Тип Description
col pyspark.sql.Column или str Имя столбца или выражения, которые должны быть проложены.

Возвраты

pyspark.sql.Column: новый столбец, содержащий плоский массив.

Примеры

Пример 1. Выравнивание простого вложенного массива

from pyspark.sql import functions as sf
df = spark.createDataFrame([([[1, 2, 3], [4, 5], [6]],)], ['data'])
df.select(sf.flatten(df.data)).show()
+------------------+
|     flatten(data)|
+------------------+
|[1, 2, 3, 4, 5, 6]|
+------------------+

Пример 2. Выравнивание массива со значениями NULL

from pyspark.sql import functions as sf
df = spark.createDataFrame([([None, [4, 5]],)], ['data'])
df.select(sf.flatten(df.data)).show()
+-------------+
|flatten(data)|
+-------------+
|         NULL|
+-------------+

Пример 3. Выравнивание массива с более чем двумя уровнями вложения

from pyspark.sql import functions as sf
df = spark.createDataFrame([([[[1, 2], [3, 4]], [[5, 6], [7, 8]]],)], ['data'])
df.select(sf.flatten(df.data)).show(truncate=False)
+--------------------------------+
|flatten(data)                   |
+--------------------------------+
|[[1, 2], [3, 4], [5, 6], [7, 8]]|
+--------------------------------+

Пример 4. Выравнивание массива с смешанными типами

from pyspark.sql import functions as sf
df = spark.createDataFrame([([['a', 'b', 'c'], [1, 2, 3]],)], ['data'])
df.select(sf.flatten(df.data)).show()
+------------------+
|     flatten(data)|
+------------------+
|[a, b, c, 1, 2, 3]|
+------------------+