从日期中提取字段

亚历山大女王

我有一个数据框,其中的日期字段"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...)

我没有找到提取dayofweek的功能-我应该怎么做?

另一个问题,是使用功能dayofmonthmonthyear为表现最好的选择还是有更好的办法?

ido堂

您可以使用date_format并指定格式"EEEE"以获取星期几。这将为您提供全名,"E"如果您希望将其缩短,则只需使用它,即星期一而不是星期一。

df.withColumn("dayofweek", date_format(to_date($"date", "MM/dd/yyyy"), "EEEE"))

从性能角度来看,我认为您不必担心。您正在使用的功能(包括上述功能)都是快速的,并且不是很复杂。从另一个角度来看,如果另一种方法会更快,那么这些功能很可能会以这种方式使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章