반응형


4강 데이터 필터링 구현

 

한대성 (admin@sqlleader.com)

에이디컨설팅 / 책임 컨설턴트

SQLLeader.com / 운영자

 

 

이번 강좌에서는 데이터 로딩 작업 시 불필요한 정보를 필터링하는 작업이나 열 변환 작업 등을 구현해 보도록 하겠습니다.

 

ETL이라 하면 Extract (추출), Transformation (변환), Loading(적재) 작업을 말합니다. 이 중에서 현재까지 구현한 것은 Extract Loading 작업입니다. 텍스트 웹 로그 파일을 읽어와서 테이블에 넣기까지는 구현 하였으며 이제 변환을 구성해야 할 단계입니다.

 

다음과 같은 처리 방법을 생각해 봅시다.

 

             [유형 1] 임시 테이블을 이용한 처리 방법

                          

 

[유형 2] 데이터 로딩 전 직접 처리 방법

               

 

 

[유형 1] DTS 또는 쿼리를 이용하여 처리할 때 주로 사용하는 방식이며, [유형 2] SSIS 및 일반 ETL 솔루션에서 처리하는 방식입니다.

[유형 2]와 같은 경우, 임시 테이블 적재와 같은 스테이징(Staging) 단계가 없기 때문에 디스크 I/O를 감소시킬 수 있으며 DBMS에 의존하지 않고 바로 처리할 수 있다는 점도 큰 장점입니다. 뿐만 아니라, SQL 쿼리로 구현할 수 있는 기능에 국한되지 않고, 여러 다양한 형태의 변환 작업을 쉽게 구현할 수도 있습니다.

 

 

 

3강의 예제를 이용하여 계속해서 진행하도록 하겠습니다.

제어 흐름의 세 작업 중에서 WebLog 데이터 로딩 작업의 데이터 흐름 영역을 엽니다.

 

WebLogFile 원본과 WebLogTable 대상 사이에 조건부 분할파생 열 변환, 정렬 변환을 추가하고 다음과 같이 연결합니다.

 

           

 

조건부 분할은 입력 데이터(Stream) 중 설정된 조건에 따라 여러 경로로 분할시키는 변환이며, 파생 열 변환은 기존의 열 값 똔는 외부 변수를 이용하여 새로운 열을 추가하거나 기존 열을 대체하는 변환입니다. 정렬 변환은 이름 그대로 설정된 열에 따라 데이터를 정렬 시키는 역할을 합니다.

 

조건부 분할은 데이터를 필터링 하는 경우에도 자주 이용됩니다. 조건부 분할 개체를 더블 클릭해서 변환 편집기를 연 다음 다음과 같이 조건식을 설정합니다.

 

 

Uri_Stem 열의 끝 세 자리 또는 두 자리가 gif, jpg, js 등과 같은 확장자인 경우, gif, jpg 등과 같은 이름의 출력 경로로 출력하도록 하고, 그렇지 않은 경우에는 기본 출력 이름인 『필터링된 결과』로 출력하도록 설정한 것입니다.

 

이와 같이 설정한 후, 조건부 분할파생 열 변환 사이의 연결선을 지우고 다시 연결하면 다음과 같은 경로 선택 창이 나타납니다.

 

 

출력(O)에서 필터링된 결과 출력을 선택하고 확인을 누릅니다.

 

 

이제 파생 열 변환을 더블 클릭해서 변환 편집기를 엽니다.

 

식 부분에 다음과 같은 식을 입력하고 DateTime 이라는 이름의 새 열을 설정합니다.

 

 

Date 문자열과 Time 문자열을 결합하여 DateTime이라는 날짜 형식의 새로운 열을 추가한 것입니다.

 

이제, 정렬 변환을 더블 클릭해서 변환 편집기를 연 후 다음과 같이 DateTime 열에 정렬을 설정합니다.

 

 

입력 데이터를 DateTime 순으로 정렬하였습니다.

 

 

, 이제 정렬 설정까지 마쳤는데 아직도 WebLogTable 부분에는 빨간 경고가 나타나 있습니다.

 

 

이것은 이전에 WebLogFile에서 연결한 설정 사항이 아직 남아 있기 때문입니다.

WebLogTable 작업을 더블 클릭하면 다음과 같은 경고 창이 나타납니다.

 

 

, 이전에 WebLogTable에서는 Date라는 18 ID를 가진 입력이 있었는데 없어졌다. 그런데 정렬에서 들어오는 Date라는 이름의 323번 열이 적당할 것 같다.』라는 의미입니다. 이 외의 열 들도 마찬가지입니다. 18, 22, 26, …, 323, 328 등과 같은 숫자는 각 열의 고유한 ID 입니다.

 

이 열 들을 모두 선택한 후, <열 이름을 사용한 매핑>을 선택하고 적용 버튼을 클릭하고 확인을 누릅니다.

 

 

 

이제 빨간 경고 표시가 사라졌습니다. 패키지를 실행해서 입력되는 데이터를 확인해 봅니다.

 

 

10,051개의 입력 데이터 중, 필터링 되어 최종 769개의 데이터만 입력이 되었습니다.

참고로, 위의 경우 조건부 분할정렬의 순서를 변경하여 처리를 해도 됩니다. 하지만 10,051개를 정렬한 후에 필터링 하는 형태가 되기 때문에 성능은 훨씬 저하됩니다.

 

 

이것으로 4강 변환 구현 강좌를 마치겠습니다. 여기에 소개된 기본적인 세 가지 유형의 변환 외에도 다양한 형태의 변환들이 있습니다. 이를 적절히 이용하여 원하는 형태의 데이터로 변환할 수 있습니다.

 

 

반응형

+ Recent posts