talend는 기본이 java base라서 java를 많이 알면 좋기는 한데, java놓은지도 오래되고 기억도 안나서 형변환 하는데 에로사항이 많긴 하다. 그래도 다른etl보다는 어떻게 보면 더 자유로울 수 있기도 한거고.
그래서 몇개 자주쓰는것만 나열해봄.
문자열을 숫자로 변환
Long : Long.valueOf(문자열변수).longValue()
Float : Float.valueOf(문자열변수).floatValue()
Null비교
DB와는 다르게 Java에서는
if 변수 == null
와 같이 사용하는데 coalesce와 같은 함수가 없어서 Talend에 UserRoutine에서 하나 만듬.
별거는 없고 내용은 아래와 같고 Map같은데서 활용해서 null처리 해주면 되겠습니다.
Object를 String으로 바꾸는건
Object명.toString
그래서 map에서 left outer join할때 다음과 같이 활용합니다.
Float.valueOf(UserRoutines.coalesce(row17.charge_info,UserRoutines.coalesce(row18.charge_info,UserRoutines.coalesce(row21.commission,0))).toString()).floatValue()
-------------------- user routine ------------------------
/**
* coalesce: check null and replace
*
*
* {talendTypes} Object
*
* {Category} User Defined
*
* {param} Object() input: The Object is needed
*
* {param} Object() input2: The Object to be replaced
*
* {example} coalesce(object1,object2) # 1.
*/
public static Object coalesce(Object v1, Object v2) {
if (v1 == null) {
return v2;
} else {
return v1;
}
}
/**
* coalesce: check Date null and replace
*
*
* {talendTypes} Date
*
* {Category} User Defined
*
* {param} Date() input: The Object is needed
*
* {param} Date() input2: The Object to be replaced
*
* {example} coalesce(object1,object2) # 1.
*/
public static Date coalesce(Date v1, Date v2) {
if ((Object) v1 == null) {
return v2;
} else {
return v1;
}
}