2017-12-28 40 views
0

다음 SQL 문을 SparkAPI java로 다시 작성하고 싶습니다. 어떻게이 일을 성취 할 수 있습니까?case 문 SQL을 sparkAPI로 다시 작성

CASE 
WHEN column1='abc' 
    AND 
    id='0' 
    AND 
    colNumber='31' THEN 
    'Group A' 
WHEN column1='def' 
    AND 
    id='0' 
    AND 
    colNumber='31' THEN 
    'Group B' 
WHEN column1='ghe' 
    AND 
    id='0' 
    AND 
    colNumber='31' THEN 
    'Group C' 
ELSE 
    description 
END AS CustomGroup 

답변

-1

당신이 복잡한 논리가있는 경우 사용자가 만들 수있는 당신이

dataframe.withColumn("customGroup", customGroup(col("column1"), col("id"), col("colNumber"))) 

편집 아래와 같이 dataframe와 UDF를 사용할 수 있습니다 udf (User Defined Function) 이제

val customGroup = udf((column1: String, id: String, colNumber: Int) => { 
    if (id.equals("0") && colNumber == 31){ 
     if (column1.equals("abc")) "GroupA" 
     else if (column1.equals("def")) "Group B" 
     else if (column1.equals("abc")) "Group C" 
     else "description" 
    } 
    else "description" 
    }) 

아래로 : 하는 경우 *description*은 다른 열에서 온 것이므로 udf에 전달하고이를 호출하는 동안 추가해야합니다.

희망이 도움이됩니다.

+0

저는 'description'이 리터럴 대신 OP 테이블의 다른 열이라고 생각합니다. – philantrovert

+0

제안 해 주셔서 감사합니다. @philantrovert 추가하겠습니다. –

+0

이것을 시도하고 알려 드리겠습니다. –