2017-12-14 7 views
1

날짜 필드가 "MM/dd/yyyy" 인 데이터 프레임을 문자열로 가지고 있으며 새 필드에서 스칼라에서 요일 값을 추출하고 싶습니다.날짜 필드 추출

나는 다음과 같은 출력을 얻을 수행 할
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...) 

내가 발견하지 않았다 예를 들어, 나는 dataframe df이 요일을 추출하는 함수 - 어떻게해야합니까?

또 다른 질문, 성능을위한 기능 dayofmonth, month, year 최고의 옵션을 사용하거나 더 나은 방법이있다?

답변

1

date_format을 사용하고 형식을 "EEEE"으로 지정하여 요일을 가져올 수 있습니다. 이렇게하면 전체 이름이 주어지며 월요일을 월요일 대신 월로 단축하면 "E"을 사용하면됩니다.

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

성능 측면에서 나는 걱정할 필요가 없다고 생각합니다. 위의 기능을 포함하여 사용중인 기능이 모두 빠르고 복잡하지는 않습니다. 또 다른 관점을 사용하면, 다른 방법이 더 빠르다면,이 함수들은 아마도 그런 식으로 사용할 것입니다.