분류

2017년 1월 17일 화요일

2. Pentaho Spoon 사용

2. Pentaho Spoon 사용

이번엔 오픈소스 ETL 도구인 펜타호의 사용법에 대한 내용을 기술해보려 합니다. 
설치에 대한 설명은 지난번에 작성한 
빅데이터 분석 툴 펜타호 설치 가이드 를 참조 하시기 바랍니다. 
 
Pentaho에서 가장 기본적으로 사용할 수 있는 데이터베이스와 파일, 그리고 데이터베이스 간의 연동에 대한 예를 진행해보려 합니다. 데이터베이스에 대한 접근 정보 및 테스트가 완료된 상태에서 실행하는 설명이므로, 설치에 대한 부분은 설치 가이드를 참조 하시면 되겠습니다.
 
Spoon의 기능중 가장 간단하게 시연할 수 있는 데이터 적재 및 이관 프로세스에 대한 간략한 정보를 소개하고자 합니다. 먼저 이관하고자 하는 각 데이터베이스의 정보를 입력합니다. 현재는 local database 하나만을 갖고 하기에 동일 데이터베이스에 대한 접속정보를 2개 등록하는 것으로 대체하겠습니다.
 
먼저 실행된 Pentaho Data Integration (이하 PDI)Transformations를 더블클릭하여 새로운 전송을 만듭니다.



새로 열린 Transformation은 데이터베이스에 대한 정보를 갖고 있지 않기에 새로운 뷰를 선택하여 데이터베이스 연결 항목에서 마우스 우클릭을 통하여 새로 만들기를 선택해 줍니다.


데이터베이스 정보 입력창이 뜨면 접속 대상 데이터베이스를 선택하고, 해당 데이터베이스의 접속정보를 입력하고 테스트를 눌러 정상작동 하는지 여부를 확인하여 줍니다.

데이터베이스에 대한 접속 정보가 생성되었으면 디자인 단계로 넘어갑니다. 이번 보게될 기능은 데이터와 데이터 간의 이관, 그리고 데이터를 파일로 추출, 추출 값을 다른 서버에 적재하는 순으로 진행하도록 하겠습니다.
 
먼저 데이터 Table Input을 드래그 하여 배치한 후 배치된 개체를 더블클릭 하면 테이블 인풋에 대한 상세 설정창이 나타납니다.



 
항의 선택창에서 연결할 데이터베이스를 선택하고 항의 SQL SELECT 문장 가져오기를 선택하면 아래와 같은 데이터베이스 탐색기가 열려, 적재된 이관 대상이 될 테이블을 선택할 수 있습니다.

이관할 테이블을 선택한 후 확인을 누르면 SQL에 필드 이름 포함 여부를 묻는 팝업창이 생성되며, 예를 선택할 경우 SQL문장에 테이블의 컬럼 정보를 나열한 상태로 SELECT 문이 생성됩니다.
 
원본 데이터의 형태를 확인하기 위해서 미리보기를 누를 경우 미리보기 할 데이터의 로우수를 입력하는 팝업이 생성되며 입력하면 현재 적재되어있는 데이터의 상태를 확인할 수 있는 창이 열립니다.


원하는 테이블과 데이터가 맞는지 확인이 되었다면, 미리보기를 닫은 후 확인을 눌러 해당 개체 정보를 저장합니다.
 

다음은 아웃풋을 선택 후 테이블 아웃풋을 선택하여 화면에 배치합니다.

배치된 각 객체간의 이동 관계를 설정하기 위하여 기준이 되는 TABLE INPUTSHIFT CLICK한 상태로 대상이 되는 TABLE OUTPUT에 드래그 하여 관계선을 맺어줍니다.

다음은 대상이 되는 TABLE OUTPUT을 선택하여 INPUT 테이블 설정과 동일한 방법으로 대상이 되는 데이터베이스 서버와 대상 테이블을 선택한 후 데이터베이스 필드 지정을 체크한 후 데이터베이스 필드 선택하여 매핑해줍니다.

기준 테이블과 대상 테이블의 정보 매핑이 끝났으면 바로 이관 프로세스를 실행할 수 있는 상태가 되었습니다. 실행 버튼을 누르면 바로 해당 프로세스에 대한 결과를 확인 하실 수 있습니다.


Pentaho Spoon은 각종 파일에 대한 입출력 기능을 보유하고 있으며, 원격지에 분리되어 있는 서버간의 파일을 통한 데이터 교환 역시 가능합니다. 이어서 데이터를 파일로 출력하는 기능에 대한 설명입니다.
이전 설명과 동일한 방식으로 Transformation을 생성한 후 데이터베이스 설정 후 Table Input Excel Output을 화면에 배치한 후 관계를 맺어주고 기준 테이블에 대한 정보를 설정합니다.

이전 복제된 emp_copy1의 데이터를 excel로 출력할 것이므로 해당 테이블을 선택한 excel을 더블클릭하여 excel output 파일명, 파일이름 내용등의 상세 항목들을 설정합니다.

필드의 명칭은 수동으로 설정 할 수도 있으며, 필드 가져오기 버튼을 누를 경우 인풋에 설정된 정보를 읽어 자동으로 생성됩니다.


위 사항을 저장 후 다시 실행 버튼을 눌러서 결과를 확인합니다.

실행이 완료되면 지정된 경로에 엑셀파일이 생성된 것을 확인 할 수 있습니다.

또한 추출된 데이터 파일을 테이블에 적재하는 프로세스를 추가하여, 성격이 다른 데이터베이스간의 데이터 이관 역시 손쉽게 처리할 수 있습니다.
 
다음은 상기 작업에 Table Output을 추가하여 해당 작업을 진행해보겠습니다.

위처럼 table_output을 추가한 후

연결 및 대상 테이블을 선택한 후 필드값을 자동으로 설정 해준 후 실행을 하면 대상으로 설정한 emp_insert1 테이블에 데이터가 이관된 것을 확인 할 수 있습니다;

 
또한 job 생성을 통한 일련의 작업을 순서대로 혹은 병렬로 실행하게 설정하여 그간 진행했던 작업들에 대한 일괄 실행이 가능하기도 합니다.
메뉴 좌측 상단의 새로만들기 버튼을 눌러 JOB을 생성합니다.

좀전에 저장된 Transformation 들을 순차적으로 처리하기 위해 새로 생성된 jobStart과 두 개의 Transformation을 배치합니다.

Start는 작업의 수행 주기를 한번만 실행할 것인지 혹은 주기적으로 반복할 것 인지에 대한 설정과, 수행 시간 단위를 지정할 수 있습니다.

 
이번은 시연에서 1회 수행하는 것으로 하고 이전에 생성된 각각의 Transformation을 등록하여 수행해보겠습니다. 기존 수행으로 인해 누적된 데이터는 삭제하겠습니다.

기존에 저장된 tranformation을 각 객체에 추가해주고

실행 버튼을 누르면 실행 결과가 아래 창에 표시도되며 각 단계별로 수행이 완료되었음을 알려줍니다.
 

수행이 완료 된 후 해당 테이블을 조회해보면 아래와 같이 데이터가 정상적으로  테이블 모두에 이관되었음을 알 수 있습니다.

펜타호 에는 이밖에도 많은 기능들이 있습니다. 각종 파일 유형의 데이터 아웃풋과, 활용에 따라 단계별로 데이터를 정제 , 통합 할 수 있으며, 1:1, 1:n관계등의 다양한 데이터 아웃을 만들 수 있어 활용에 따라 다양한 프로세스를 손쉽게 관리할 수 있게 될 것입니다. 

차후 시간이 된다면 펜타호의 다양한 활용법에 대해 차차 기술해 보고 싶다는 생각도 들지만, 제가 만든 제품도 아니고, 사용할 제품도 아니기에 이정도에서 펜타호에 대한 설명은 마무리가 될 것 같습니다. 쓸데없이 스크린샷만 많은 글을 봐주셔서 감사합니다. 

댓글 4개:

  1. 많은 도움이 되었습니다. 감사합니다.

    답글삭제
  2. 안녕하세요. 펜타호로 데이터 마이그레이션 작업 해보고 있는데요.
    설명해주신 것처럼 테이블 한두개 정도야 커넥션 설정하는건 금방인데
    엔터프라이즈 환경에서 수십개 수백개 커넥션을 일일히 설정하려고 하니 시간 낭비가 심하더라고요.
    혹시 커넥션을 일괄로 입력/수정할 수 있는 기능을 알고 계신지해서 여쭤봅니다..

    답글삭제
    답글
    1. 저도 그런 부분은 잘 모르겠습니다.

      삭제