tente_criar_carimbo_de_data_hora
Tente criar um registro de data e hora a partir dos campos de anos, meses, dias, horas, minutos, segundos e (opcionalmente) fuso horário. Como alternativa, tente criar um registro de data e hora a partir dos campos de data, hora e (opcionalmente) fuso horário. O tipo de dados do resultado é consistente com o valor da configuração spark.sql.timestampType. A função retorna NULL para entradas inválidas.
Sintaxe
import pyspark.sql.functions as sf
# From individual components
sf.try_make_timestamp(years=<years>, months=<months>, days=<days>, hours=<hours>, mins=<mins>, secs=<secs>)
# With timezone
sf.try_make_timestamp(years=<years>, months=<months>, days=<days>, hours=<hours>, mins=<mins>, secs=<secs>, timezone=<timezone>)
# From date and time
sf.try_make_timestamp(date=<date>, time=<time>)
# From date and time with timezone
sf.try_make_timestamp(date=<date>, time=<time>, timezone=<timezone>)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| O ano a ser representado, de 1 a 9999. Necessário ao criar registros de data e hora a partir de componentes individuais. Deve ser usado com meses, dias, horas, minutos e segundos. |
|
| O mês do ano a ser representado, de 1 (janeiro) a 12 (dezembro). Necessário ao criar registros de data e hora a partir de componentes individuais. Deve ser usado com anos, dias, horas, minutos e segundos. |
|
| O dia do mês a ser representado, de 1 a 31. Necessário ao criar registros de data e hora a partir de componentes individuais. Deve ser usado com anos, meses, horas, minutos e segundos. |
|
| A hora do dia a ser representada, de 0 a 23. Necessário ao criar registros de data e hora a partir de componentes individuais. Deve ser usado com anos, meses, dias, minutos e segundos. |
|
| O minuto da hora a ser representado, de 0 a 59. Necessário ao criar registros de data e hora a partir de componentes individuais. Deve ser usado com anos, meses, dias, horas e segundos. |
|
| O segundo de minuto e sua microfração representam, de 0 a 60. O valor pode ser um número inteiro, como 13, ou uma fração, como 13,123. Se o argumento "sec" for igual a 60, o campo de segundos será definido como 0 e 1 minuto será adicionado ao carimbo de data/hora final. Necessário ao criar registros de data e hora a partir de componentes individuais. Deve ser usado com anos, meses, dias, horas e minutos. |
|
| Opcional. O identificador de fuso horário. Por exemplo, CET, UTC, etc. |
|
| A data a ser representada, em formato DATE válido. Necessário ao criar registros de data e hora a partir de componentes de data e hora. Deve ser usado apenas com parâmetro de tempo. |
|
| O horário a ser representado, em formato de HORA válido. Necessário ao criar registros de data e hora a partir de componentes de data e hora. Deve ser usado apenas com parâmetro de data. |
Devoluções
pyspark.sql.ColumnUma nova coluna que contém um registro de data e hora ou NULL em caso de erro.
Exemplos
Exemplo 1 : Criar um registro de data e hora a partir de anos, meses, dias, horas, minutos, segundos e fuso horário.
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.try_make_timestamp(df.year, df.month, df.day, 'hour', df.min, df.sec, 'tz')
).show(truncate=False)
+----------------------------------------------------+
|try_make_timestamp(year, month, day, hour, min, sec)|
+----------------------------------------------------+
|2014-12-27 21:30:45.887 |
+----------------------------------------------------+
Exemplo 2 : Criar um registro de data e hora a partir de anos, meses, dias, horas, minutos e segundos (sem fuso horário).
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.try_make_timestamp('year', 'month', df.day, df.hour, df.min, df.sec)
).show(truncate=False)
+------------------------------------------------------+
|try_make_timestamp(year, month, day, hour, min, sec) |
+------------------------------------------------------+
|2014-12-28 06:30:45.887 |
+------------------------------------------------------+
Exemplo 3 : Criar um registro de data e hora a partir da data e hora, incluindo o fuso horário.
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.try_make_timestamp(date=df.date, time=df.time, timezone=df.tz)).show(truncate=False)
+----------------------------------------+
|try_make_timestamp(date, time, timezone)|
+----------------------------------------+
|2014-12-27 21:30:45.887 |
+----------------------------------------+
Exemplo 4 : Criar um registro de data e hora a partir da data e hora (sem fuso horário).
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.try_make_timestamp(date=df.date, time=df.time)).show(truncate=False)
+------------------------------+
|try_make_timestamp(date, time)|
+------------------------------+
|2014-12-28 06:30:45.887 |
+------------------------------+
Exemplo 5 : Retorna NULL para entradas inválidas.
import pyspark.sql.functions as sf
df = spark.createDataFrame([[2014, 13, 28, 6, 30, 45.887]],
['year', 'month', 'day', 'hour', 'min', 'sec'])
df.select(
sf.try_make_timestamp('year', 'month', df.day, df.hour, df.min, df.sec)
).show(truncate=False)
+------------------------------------------------------+
|try_make_timestamp(year, month, day, hour, min, sec) |
+------------------------------------------------------+
|NULL |
+------------------------------------------------------+