Skip to content

date_part(field, source)

Описание

Функция date_part() извлекает указанную часть (поле) из даты, времени или временной метки.

Параметры

  • field: строка - поле для извлечения (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, etc.)
  • source: Column - столбец с датой, временем или временной меткой

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

Column - извлеченное значение указанного поля

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

from pyspark.sql.functions import date_part, to_timestamp, lit
from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder.appName("date_part_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", date_part("YEAR", "timestamp")) \
       .withColumn("month", date_part("MONTH", "timestamp")) \
       .withColumn("day", date_part("DAY", "timestamp")) \
       .withColumn("hour", date_part("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
  • Эквивалентна функции extract()
  • Для извлечения отдельных компонентов можно использовать:
  • year()
  • month()
  • day()
  • hour()
  • Полезно для:
  • Извлечения нескольких компонентов даты/времени
  • Гибкой работы с различными частями временной метки
  • Совместимости с PostgreSQL