trunc(date, format)
Описание
Функция trunc()
обрезает дату до указанной единицы времени (год, квартал, месяц, неделя).
Параметры
date
: Column - столбец с датамиformat
: String - единица времени для обрезки ('year', 'quarter', 'month', 'week')
Возвращаемое значение
Date - обрезанная дата
Пример использования
from pyspark.sql.functions import trunc
from pyspark.sql import SparkSession
from datetime import datetime
# Создаем SparkSession
spark = SparkSession.builder.appName("trunc_example").getOrCreate()
# Создаем DataFrame с датами
data = [
(datetime(2023, 1, 15),), # 15 января
(datetime(2023, 4, 15),), # 15 апреля
(datetime(2023, 7, 15),), # 15 июля
(datetime(2023, 10, 15),) # 15 октября
]
df = spark.createDataFrame(data, ["date"])
# Обрезаем даты до разных единиц времени
result = df.select(
"date",
trunc("date", "year").alias("year"),
trunc("date", "quarter").alias("quarter"),
trunc("date", "month").alias("month"),
trunc("date", "week").alias("week")
).show(truncate=False)
# Результат:
# +-------------------+----------+------------+----------+----------+
# |date |year |quarter |month |week |
# +-------------------+----------+------------+----------+----------+
# |2023-01-15 00:00:00|2023-01-01|2023-01-01 |2023-01-01|2023-01-09|
# |2023-04-15 00:00:00|2023-01-01|2023-04-01 |2023-04-01|2023-04-10|
# |2023-07-15 00:00:00|2023-01-01|2023-07-01 |2023-07-01|2023-07-10|
# |2023-10-15 00:00:00|2023-01-01|2023-10-01 |2023-10-01|2023-10-09|
# +-------------------+----------+------------+----------+----------+
Примечания
- NULL значения возвращают NULL
- Доступные форматы:
- 'year' - обрезает до начала года
- 'quarter' - обрезает до начала квартала
- 'month' - обрезает до начала месяца
- 'week' - обрезает до начала недели (понедельник)
- Для работы с датами также используйте:
date_trunc()
для обрезки временных метокyear()
для извлечения годаmonth()
для извлечения месяцаquarter()
для извлечения кварталаdayofweek()
для извлечения дня недели