concat_ws(sep, *cols)
Описание
Функция concat_ws()
объединяет несколько строковых столбцов в один строковый столбец, используя указанный разделитель. Если какой-либо из столбцов содержит NULL, он пропускается.
Параметры
sep
: string - разделитель, который будет использоваться между строками*cols
: string или Column - один или несколько столбцов для объединения
Возвращаемое значение
String - объединенная строка с разделителями
Пример использования
from pyspark.sql.functions import concat_ws
# Создаем DataFrame
df = spark.createDataFrame([
("John", "Doe", None),
("Jane", None, "Smith"),
("Bob", "Builder", "Construction"),
(None, "Alone", "Person")
], ["first_name", "middle_name", "last_name"])
# Объединяем имена с пробелом в качестве разделителя
df.select(
concat_ws(" ", "first_name", "middle_name", "last_name").alias("full_name")
).show(truncate=False)
# Результат:
# +-------------------+
# |full_name |
# +-------------------+
# |John Doe | # NULL пропущен
# |Jane Smith | # NULL пропущен
# |Bob Builder Construction|
# |Alone Person | # NULL пропущен
# +-------------------+
# Объединяем с другим разделителем
df.select(
concat_ws("-", "first_name", "middle_name", "last_name").alias("full_name")
).show(truncate=False)
# Результат:
# +-------------------+
# |full_name |
# +-------------------+
# |John-Doe |
# |Jane-Smith |
# |Bob-Builder-Construction|
# |Alone-Person |
# +-------------------+
Примечания
- NULL значения пропускаются в результате
- Разделитель добавляется только между не-NULL значениями
- Если все значения NULL, возвращается пустая строка
- Функция полезна для создания полных имен, адресов и других составных строк
- Для простого объединения без разделителя используйте
concat()