본문 바로가기

ETL Tools

[ETL] 개발시 정의되어야 하는, 또는, 알고있어야 하는 부분

* 나만의 생각임을 명심하도록!!



1. 요구 사항
 이건 당연한거다. 고객이 원하는 것을 알아야 나도 만들수 있다. 데이터를 만드는 것을 목적으로 SQL 만 만들면 된다는 생각은 작업을 두 세번하게되는 안좋은 습관이다. 모든 개발자들이 고객이 원하는 사항을 숙지하여 개발을 한다면, 의심스러운 부분이 발생했을 경우, 빠른 해결 방안 도출이 가능하다. 

2. 업무의 흐름
 같은 데이터를 대충 뽑아오면 된다는 생각으로 작업을 진행한다면, 물론 실수도 있겠지만, 더욱 중요한 것은 항상 그것 밖에 못한다는 것이다. SQL를 잘만들면 뭐하나 남이 시키는것밖에 못하면.. 그렇기 때문에 항상 업무 자체를 이해하려고 하고, 흐름을 파악해 보는것이 중요하다. 업무 관련 회의 시에는 반드시 참여하고 기록하여 현재의 내가 닥친 일만 보기 보다는 전체적으로 우리가 하려는 것이 무엇인지, 어떤 방식으로 나오는지를 파악하자. 

3. 매핑 정의
 ETL에서 가장 중요한 부분이기도 하지만, 당연한 부분이다. 원하는 데이터를 만드는 로직을 구성한다. 

4. NULL 및 범위 외 데이터 처리 방안
 예외 데이터 처리가 항상 작업을 두세번하게끔 만든다. 작업을 하기전에 먼저 데이터를 훓어보며, 예외처리를 해야할 데이터들은 없는지 살펴 보자. (예 NULL 미매핑 처리, 잘못된 데이터가 들어간 경우 ( 예: 일자 ) 처리 방법)

5. 데이터 적재 방법
 데이터를 어떤 로직을 사용하여 적재할지를 결정하여야 한다. 크게 보면 선행 후행 작업으로 걸려 있는 JOB들이 있는지 여부와 그렇다면 어떤 방식으로 데이터를 옮겨 갈지 적재일시 컬럼으로 두어서 작업을 진행할지 아니면, 다른 방법이 있는지 여부같은게 될 수 있고, 작게 보면 APPEND모드로 INSERT 만 진행하면 되는지 아니면 MERGE 방식으로 UPSERT 방식으로 진행해야 하는지 등등을 결정하여야 한다. 

6. 데이터 적재 범위 및 배치 주기
 데이터를 적재하기 위한 배치 주기는 어떻게 할 것이며, 그럼 그때 데이터를 추출하는 로직은 무엇이 될것인지, 또 여러 테이블이 조인하여 데이터를 생성할 경우는 데이터 추출의 기준이 되는 테이블이 무엇이며, 추출 기준 테이블이 하나가 아닌 두개 이상일 경우 빠지는 데이터가 있는지, 있다면 처리 방법을 고려하여야 한다. 

[2012.03.26]