Поделиться через


make_timestamp

Создайте метку времени из лет, месяцев, дней, часов, минут, с, с и (необязательно) полей часового пояса. Кроме того, создайте метку времени из полей часового пояса даты, времени и (необязательно). Тип данных результата соответствует значению конфигурации spark.sql.timestampType. Если конфигурация spark.sql.ansi.enabled имеет значение false, функция возвращает значение NULL для недопустимых входных данных. В противном случае это приведет к возникновению ошибки.

Для соответствующей функции Databricks SQL смотрите функцию make_timestamp.

Синтаксис

import pyspark.sql.functions as sf

# From individual components
sf.make_timestamp(years=<years>, months=<months>, days=<days>, hours=<hours>, mins=<mins>, secs=<secs>)

# With timezone
sf.make_timestamp(years=<years>, months=<months>, days=<days>, hours=<hours>, mins=<mins>, secs=<secs>, timezone=<timezone>)

# From date and time
sf.make_timestamp(date=<date>, time=<time>)

# From date and time with timezone
sf.make_timestamp(date=<date>, time=<time>, timezone=<timezone>)

Параметры

Параметр Тип Description
years pyspark.sql.Column или str Год для представления с 1 по 9999 год. Требуется при создании меток времени из отдельных компонентов. Необходимо использовать с месяцами, днями, часами, минутами и с.
months pyspark.sql.Column или str Месяц для представления с 1 (январь) по 12 (декабрь). Требуется при создании меток времени из отдельных компонентов. Необходимо использовать с годами, днями, часами, минутами и с.
days pyspark.sql.Column или str День месяца для представления от 1 до 31. Требуется при создании меток времени из отдельных компонентов. Необходимо использовать с годами, месяцами, часами, минутами и с.
hours pyspark.sql.Column или str Час дня для представления от 0 до 23. Требуется при создании меток времени из отдельных компонентов. Необходимо использовать с годами, месяцами, днями, минутами и с.
mins pyspark.sql.Column или str Минутное представление от 0 до 59. Требуется при создании меток времени из отдельных компонентов. Необходимо использовать с годами, месяцами, днями, часами и с.
secs pyspark.sql.Column или str Вторую минуту и ее микро-дробь, чтобы представить, от 0 до 60. Значение может быть целым числом, например 13, или дробной частью, например 13,123. Если аргумент с равен 60, поле секунды равно 0 и 1 минуте добавляется в последнюю метку времени. Требуется при создании меток времени из отдельных компонентов. Необходимо использовать с годами, месяцами, днями, часами и минутами.
timezone pyspark.sql.Column или str Необязательно. Идентификатор часового пояса. Например, CET, UTC и т. д.
date pyspark.sql.Column или str Дата представления в допустимом формате DATE. Требуется при создании меток времени из компонентов даты и времени. Необходимо использовать только с параметром времени.
time pyspark.sql.Column или str Время представления в допустимом формате TIME. Требуется при создании меток времени из компонентов даты и времени. Необходимо использовать только с параметром даты.

Возвраты

pyspark.sql.Column: новый столбец, содержащий метку времени.

Примеры

Пример 1. Создание метки времени от лет, месяцев, дней, часов, минут, с и часового пояса.

import pyspark.sql.functions as sf
df = spark.createDataFrame([[2014, 12, 28, 6, 30, 45.887, 'CET']],
    ['year', 'month', 'day', 'hour', 'min', 'sec', 'tz'])
df.select(
    sf.make_timestamp(df.year, df.month, df.day, 'hour', df.min, df.sec, 'tz')
).show(truncate=False)
+----------------------------------------------------+
|make_timestamp(year, month, day, hour, min, sec, tz)|
+----------------------------------------------------+
|2014-12-27 21:30:45.887                             |
+----------------------------------------------------+

Пример 2. Создание метки времени от лет, месяцев, дней, часов, минут и с (без часового пояса).

import pyspark.sql.functions as sf
df = spark.createDataFrame([[2014, 12, 28, 6, 30, 45.887]],
    ['year', 'month', 'day', 'hour', 'min', 'sec'])
df.select(
    sf.make_timestamp('year', 'month', df.day, df.hour, df.min, df.sec)
).show(truncate=False)
+--------------------------------------------------+
|make_timestamp(year, month, day, hour, min, sec) |
+--------------------------------------------------+
|2014-12-28 06:30:45.887                           |
+--------------------------------------------------+

Пример 3. Создание метки времени с даты и времени с помощью часового пояса.

import pyspark.sql.functions as sf
from datetime import date, time
df = spark.range(1).select(
    sf.lit(date(2014, 12, 28)).alias("date"),
    sf.lit(time(6, 30, 45, 887000)).alias("time"),
    sf.lit("CET").alias("tz")
)
df.select(sf.make_timestamp(date=df.date, time=df.time, timezone=df.tz)).show(truncate=False)
+------------------------------------+
|make_timestamp(date, time, timezone)|
+------------------------------------+
|2014-12-27 21:30:45.887             |
+------------------------------------+

Пример 4. Создание метки времени из даты и времени (без часового пояса).

import pyspark.sql.functions as sf
from datetime import date, time
df = spark.range(1).select(
    sf.lit(date(2014, 12, 28)).alias("date"),
    sf.lit(time(6, 30, 45, 887000)).alias("time")
)
df.select(sf.make_timestamp(date=df.date, time=df.time)).show(truncate=False)
+--------------------------+
|make_timestamp(date, time)|
+--------------------------+
|2014-12-28 06:30:45.887   |
+--------------------------+