从日期提取字段



我有一个带有 "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的功能 - 我应该如何做?

另一个问题是,使用功能dayofmonthmonthyear最佳性能选择还是有更好的方法?

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

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

从性能的角度来看,我不相信您需要担心。您正在使用的功能,包括上面的功能,都是快速而不是很复杂的。使用另一个角度,如果另一种方式会更快,那么这些功能很可能会使用这种方式。

相关内容

  • 没有找到相关文章

最新更新