我有一个带有 "MM/dd/yyyy"
格式的日期字段的数据框,作为字符串,我想在新领域中提取Scala中一周中的一天的值。例如,我有DataFrame 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...)
我没有找到提取Dayofweek的功能 - 我应该如何做?
另一个问题是,使用功能dayofmonth
,month
,year
最佳性能选择还是有更好的方法?
您可以使用date_format
并将格式指定为"EEEE"
以获取一周的一周。这将为您提供全名,只需使用"E"
,如果您希望它缩短,即星期一而不是星期一。
df.withColumn("dayofweek", date_format(to_date($"date", "MM/dd/yyyy"), "EEEE"))
从性能的角度来看,我不相信您需要担心。您正在使用的功能,包括上面的功能,都是快速而不是很复杂的。使用另一个角度,如果另一种方式会更快,那么这些功能很可能会使用这种方式。