여러가지 툴이 그러하듯 Talend 역시 자체적으로 유용한 내장함수를 가지고 있다. 이는 ETL 프로세스 중 T에 해당하는 data transformation 과정에서 매우 유용하게 사용될 수 있다. Talend의 내장함수는 매우 직관적이고 함수 별 간단한 설명이 나타나기 때문에 사용에 큰 어려움은 없을 것이다. 여러가지 내장함수 중 실무에서 유용하게 사용한 몇가지를 중점으로 소개하고자 한다.
1. IF-ELSE와 NULL HANDLING
Data Transformation은 Talend의 컴포넌트 중 소스와 타겟 테이블을 매핑하는 tMap 컴포넌트에서 적용할 수 있다. 위와 같이 소스와 타겟 테이블을 칼럼별로 매핑하고 있는 상황이다. 이때, 소스의 salary 칼럼은 nullable인 반면 타겟의 salary 칼럼은 not null이라고 가정해보자. (실무의 데이터를 생각했을 때 salary데이터에 null값이 포함될 경우는 많지 않지만 지금은 예시를 들기위해 그렇게 가정하였다) 타겟 테이블은 null 값을 허용하지 않기 때문에 소스의 데이터를 타겟에 이관할 때 null 값을 처리하는 로직이 포함되어야 한다.
out1의 salary 칼럼을 클릭하면 해당 칼럼의 우측에 네모 버튼이 보여진다. 이 버튼을 클릭하면 row1으로부터 받은 데이터를 조작할 수 있는 expression 창이 뜬다. 우리는 이 창에서 Talend의 내장함수를 사용해볼 수 있다. 우선 카테고리의 Relational을 선택하면 ISNULL이라는 함수가 있다. Help 창에서 알 수 있듯이 이 함수는 값이 null 인지 확인해주는 함수이다. 이 함수와 3항연산자를 사용하여 null 값을 처리해보자. 이 창에서 If-else 키워드를 통한 로직 처리는 불가능하고 3항연산자를 통해 가능하다. 나는 이 예시에서 row1.salary의 값이 null인 경우 임시 값인 0이 입력되어 타겟 테이블에 이관되도록 하는 로직을 추가하였다. 이 예시는 매우 간단하지만 비슷한 방식으로 다양한 케이스에 응용이 가능하니 알아두면 도움이 될 것이다.
2. Formate Date
Talend의 내장함수 중 실무에서 두번째로 많이 사용하는 함수는 단연 date 관련 함수이다. 위와 같이 TalendDate 카테고리를 선택하면 Talend에서 많은 date 관련 함수들을 제공하는 것을 알 수 있다. 이 중에서 몇가지를 소개하겠다.
1) getCurrentDate()
getCurrentDate() 함수는 현재 시각을 리턴하는 함수이다. Expression 창의 왼쪽 상단의 Test 버튼을 클릭하여 함수를 실행해보며 작업이 가능하다. Data Migration 작업을 진행 할 때, 작업 시각을 표시해야 하는 경우 이 함수를 사용하면 편리하다.
2) formatDate()
formatDate 함수는 첫번째 인자로 전달하는 pattern에 맞게 date 데이터를 파싱해준다. 여러 소스에 나뉘어진 데이터를 하나의 타겟에 이관할 때 date 형식을 맞추는 작업이 까다롭게 느껴질 때가 있다. 그런 상황에서 이 함수를 유용하게 사용할 수 있다.
3) parseDate()
parseDate의 경우는 formatDate와 반대로 String 타입으로 입력한 날짜 데이터를 첫번째 인자로 전달하는 pattern에 맞게 파싱한다. 위의 예시에서는 현재 시각을 String 타입의 데이터로 리턴하는 getDate() 함수를 사용하여 parseDate 함수를 호출하고 있다.
경험 상 실무에서 위 세 개의 함수를 가장 많이 사용하였다. 그 외에서 diffDate, compareDate, addDate 등의 다양한 date 함수가 있으니 필요 시에 Help 영역을 살펴본 후 몇 번 사용해보면 금방 익힐 수 있을 것이다.
3. Test Data Generator
마지막으로 살펴볼 유용한 함수는 Talend 내장함수 중 호출 시 마다 테스트 데이터를 리턴해주는 함수이다. lastName, firstName, city, state 등 테스트 성 데이터를 리턴하는 함수는 Talend 기능을 익히거나 만들어 놓은 Job의 성능을 테스트 할 때 매우 유용하게 사용하였다. 이러한 함수도 응용 가능하니 알아두면 많은 도움이 될 것 이다.
위 예시에서는 getLastName() 함수와 getFirstName() 함수를 호출함에 따라 이름과 성 데이터를 리턴해주는 것을 볼 수 있다. 데이터는 Test 버튼을 클릭할 때 마다 변경된다.
이렇게 Talend의 내장함수 중 유용한 몇가지를 살펴보았다.
'TALEND' 카테고리의 다른 글
[TALEND] 대용량 테이블 성능 개선 (0) | 2021.04.08 |
---|---|
[TALEND] data migration 작업 유형 (0) | 2021.04.08 |
[TALEND] 서로 다른 소스 데이터 집계하기 (0) | 2021.04.07 |
[TALEND] 동적 쿼리 만들기 (0) | 2021.04.07 |
Data Migration 업무를 수행하고 (0) | 2021.04.06 |