从日期中提取字段
Extract fields from date
我有一个数据框,其中日期字段的格式为 "MM/dd/yyyy"
作为字符串,我想在新字段中提取 Scala 中星期几的值。例如,我有数据框 df
:
df.show()
------------
date
-----------
12/14/2017
12/13/2017
我想得到以下输出:
--------------------------------------------
date | day | month | year | DayOfWeek
--------------------------------------------
12/14/2017| 14 | 12 | 2017 | Thursday
12/13/2017| 13 | 12 | 2017 | Wednesday
我目前有这个代码:
df.withColumn("day", dayofmonth(to_date(df("date"),"MM/dd/yyyy")))
.withColumn("month", month(to_date(df("date"),"MM/dd/yyyy")))
.withColumn("year", year(to_date(df("date"),"MM/dd/yyyy")))
.withColumn("dayofweek", something(to_date...)
我没有找到提取星期几的函数 - 我应该怎么做?
另一个问题,使用函数 dayofmonth
、month
、year
是提高性能的最佳选择还是有更好的方法?
您可以使用 date_format
并将格式指定为 "EEEE"
来获取星期几。这将为您提供全名,如果您想要缩短它,只需使用 "E"
,即 Mon 而不是 Monday。
df.withColumn("dayofweek", date_format(to_date($"date", "MM/dd/yyyy"), "EEEE"))
从性能的角度来看,我认为您不必担心。您正在使用的功能,包括上面的功能,都很快而且不是很复杂。换个角度,如果换一种方式会更快,那么这些函数很可能会使用那种方式。
我有一个数据框,其中日期字段的格式为 "MM/dd/yyyy"
作为字符串,我想在新字段中提取 Scala 中星期几的值。例如,我有数据框 df
:
df.show()
------------
date
-----------
12/14/2017
12/13/2017
我想得到以下输出:
--------------------------------------------
date | day | month | year | DayOfWeek
--------------------------------------------
12/14/2017| 14 | 12 | 2017 | Thursday
12/13/2017| 13 | 12 | 2017 | Wednesday
我目前有这个代码:
df.withColumn("day", dayofmonth(to_date(df("date"),"MM/dd/yyyy")))
.withColumn("month", month(to_date(df("date"),"MM/dd/yyyy")))
.withColumn("year", year(to_date(df("date"),"MM/dd/yyyy")))
.withColumn("dayofweek", something(to_date...)
我没有找到提取星期几的函数 - 我应该怎么做?
另一个问题,使用函数 dayofmonth
、month
、year
是提高性能的最佳选择还是有更好的方法?
您可以使用 date_format
并将格式指定为 "EEEE"
来获取星期几。这将为您提供全名,如果您想要缩短它,只需使用 "E"
,即 Mon 而不是 Monday。
df.withColumn("dayofweek", date_format(to_date($"date", "MM/dd/yyyy"), "EEEE"))
从性能的角度来看,我认为您不必担心。您正在使用的功能,包括上面的功能,都很快而且不是很复杂。换个角度,如果换一种方式会更快,那么这些函数很可能会使用那种方式。