Skip to content

overlay(src, replace, pos[, len])

Описание

Функция overlay() заменяет часть строки src, начиная с позиции pos и длиной len, на строку replace. Если параметр len не указан, заменяется вся оставшаяся часть строки.

Параметры

  • src: string или Column - исходная строка
  • replace: string или Column - строка для вставки
  • pos: integer - позиция, с которой начинается замена (начиная с 1)
  • len: integer (опционально) - количество символов для замены

Возвращаемое значение

String - строка с замененной частью

Пример использования

from pyspark.sql.functions import overlay

# Создаем DataFrame
df = spark.createDataFrame([
    ("Hello World", "Python", 7),
    ("Hello World", "Java", 1),
    ("Hello World", "SQL", 6),
    ("Hello World", "C++", 3),
    ("Hello World", None, 1),
    (None, "Python", 1)
], ["text", "replacement", "position"])

# Заменяем части строк
df.select(
    "text",
    "replacement",
    "position",
    overlay("text", "replacement", "position").alias("overlay_all"),
    overlay("text", "replacement", "position", 3).alias("overlay_3")
).show(truncate=False)

# Результат:
# +-----------+-----------+--------+------------+----------+
# |text       |replacement|position|overlay_all |overlay_3 |
# +-----------+-----------+--------+------------+----------+
# |Hello World|Python     |7       |Hello Python|Hello Pytld|  # Замена с позиции 7
# |Hello World|Java       |1       |Java World  |Javlo World|  # Замена с позиции 1
# |Hello World|SQL        |6       |Hello SQL   |Hello SQLd |  # Замена с позиции 6
# |Hello World|C++        |3       |HeC++ World |HeC++ World|  # Замена с позиции 3
# |Hello World|null       |1       |null        |null      |  # NULL в замене
# |null       |Python     |1       |null        |null      |  # NULL в исходной строке
# +-----------+-----------+--------+------------+----------+

Примечания

  • Позиции нумеруются с 1
  • Если позиция выходит за пределы строки, замена происходит в конце
  • Если длина замены больше доступного места, строка обрезается
  • Для NULL значений возвращается NULL
  • Функция полезна для модификации строк
  • Для вставки без замены используйте insert()
  • Для замены всех вхождений подстроки используйте regexp_replace()