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