extract(field FROM source)
Описание
Функция extract()
извлекает указанную часть (поле) из даты, времени или временной метки.
Параметры
field
: строка - поле для извлечения (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, etc.)source
: Column - столбец с датой, временем или временной меткой
Возвращаемое значение
Column - извлеченное значение указанного поля
Пример использования
from pyspark.sql.functions import extract, to_timestamp, lit
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("extract_example").getOrCreate()
# Создаем DataFrame с временными метками
data = [
("2023-01-15 14:30:45",),
("2023-02-28 23:59:59",),
("2023-12-31 00:00:00",)
]
df = spark.createDataFrame(data, ["timestamp_str"])
# Преобразуем строки в временные метки и извлекаем компоненты
df = df.withColumn("timestamp", to_timestamp("timestamp_str")) \
.withColumn("year", extract("YEAR", "timestamp")) \
.withColumn("month", extract("MONTH", "timestamp")) \
.withColumn("day", extract("DAY", "timestamp")) \
.withColumn("hour", extract("HOUR", "timestamp"))
df.show(truncate=False)
# Результат:
# +-------------------+-------------------+----+-----+---+----+
# |timestamp_str |timestamp |year|month|day|hour|
# +-------------------+-------------------+----+-----+---+----+
# |2023-01-15 14:30:45|2023-01-15 14:30:45|2023|1 |15 |14 |
# |2023-02-28 23:59:59|2023-02-28 23:59:59|2023|2 |28 |23 |
# |2023-12-31 00:00:00|2023-12-31 00:00:00|2023|12 |31 |0 |
# +-------------------+-------------------+----+-----+---+----+
Примечания
- Возвращает NULL, если входное значение NULL
- Поддерживаемые поля:
- YEAR, MONTH, DAY
- HOUR, MINUTE, SECOND
- DAYOFWEEK, DAYOFYEAR
- QUARTER, WEEK
- Эквивалентна использованию отдельных функций:
year()
,month()
,day()
hour()
,minute()
,second()
- Полезно для:
- Извлечения нескольких компонентов даты/времени
- Гибкой работы с различными частями временной метки
- Совместимости с SQL-стандартом