Skip to content

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()