尝试从年、月、天、小时、分钟、秒和(可选)时区字段创建时间戳。 或者,尝试从日期、时间和(可选)时区字段创建时间戳。 结果数据类型与配置 spark.sql.timestampType值一致。 该函数在无效输入时返回 NULL。
Syntax
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>)
参数
| 参数 | 类型 | Description |
|---|---|---|
years |
pyspark.sql.Column 或 str |
表示年份,从 1 到 9999。 从各个组件创建时间戳时是必需的。 必须与月份、天、小时、分钟和秒一起使用。 |
months |
pyspark.sql.Column 或 str |
代表的年月,从1月1日(1月)到12日(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 等分数。 如果 sec 参数等于 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:包含时间戳或 NULL 的新列(如果出现错误)。
例子
示例 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.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 |
+----------------------------------------------------+
示例 2:从年、月、天、小时、分钟和秒(不含时区)生成时间戳。
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 |
+------------------------------------------------------+
示例 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.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 |
+----------------------------------------+
示例 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.try_make_timestamp(date=df.date, time=df.time)).show(truncate=False)
+------------------------------+
|try_make_timestamp(date, time)|
+------------------------------+
|2014-12-28 06:30:45.887 |
+------------------------------+
示例 5:在无效输入时返回 NULL。
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 |
+------------------------------------------------------+