[spotfire] 7. 데이터 처리 ④ - 데이터 테이블 간 변환




7. 데이터 처리

7.6. 데이터 테이블 간 변환

데이터 테이블 내 변환이 데이터 테이블 내 요소인 컬럼과 로우에 대한 변환이었다면, 데이터 테이블 간 변환은 데이터 테이블에 대한 변환이라고 볼 수 있습니다. 데이터 테이블 자체의 복사, 다시 로드, 삭제뿐만 아니라 다른 데이터 테이블의 행을 추가하거나 열을 추가할 수도 있습니다.




l  7.6.1. 복사

복사는 Spotfire에 이미 로드한 데이터 테이블을 대상으로 가능합니다. 또한 복사한 데이터 테이블은 원본 데이터 테이블을 참조하고 있습니다. , 원본 데이터 테이블 수정 시 복사한 데이터 테이블 역시 바뀐 다는 것입니다. 사실 Spotfire내의 모든 변환은 참조를 기본으로 하지만, 복사의 경우 외부 프로그램에서는 참조가 아닌 값만 복사하는 경우가 많기 때문에 참조하여 복사한다는 것을 간과하기 쉽니다. 복사의 경우 이 점을 유의해 주시면 됩니다.

 

n 깊은 복사와 얕은 복사

데이터 테이블의 복사를 다루기 전에 깊은 복사(deep copy)와 얕은 복사(shallow copy)의 개념을 알고 있으면 좋습니다. 깊은 복사와 얕은 복사 개념은 코딩과 관련된 개념입니다. 깊은 복사는 복사되는 객체(Object)를 새로운 메모리에 부여하는, 즉 값은 같지만 완전히 별개인 객체를 만드는 복사입니다. 비유하자면 쌍둥이와 같이 모습은 동일하지만 서로 전혀 다른 사람인 것과 같은 개념입니다. 반면, 얕은 복사는 복사되는 객체는 새로운 메모리가 아닌 주소 값만을 참조하는, 즉 값도 동일하며 사실 상 서로 같은 객체를 만드는 복사입니다. 비유하자면 거울에 비친 사람을 보는 것과 같이 모습이 완전히 동일하고 사실 상 동일한 사람인 개념입니다. 얕은 복사에서는 원본을 변경하면 복사본 역시 동일하게 바뀌는 복사라고 생각하면 좋습니다.

 

n 데이터 테이블의 얕은 복사

Spotfire에서 많이 사용하는 복사 기능은 주로 얕은 복사를 의미합니다. 따라서 위에서 기존의 데이터 테이블과 유기적으로 연결되어 있다고 소개 드렸고, 주로 설명 드릴 내용도 얕은 복사에 관한 내용입니다. 본문에서 특별한 언급이 없는 복사는 모두 얕은 복사라고 생각하시면 좋습니다. 얕은 복사를 사용하는 이유는 데이터 구조를 최대한 단순화하기 위함입니다. 깊은 복사를 통해 동일한 내용의 데이터 테이블이 여러 개 존재하는 상태는 데이터 관리, 운영, 보수, 유지 등에 바람직하지 않습니다. 하나의 데이터 테이블을 기준으로, 필요하다면 객체를 참조해서 사용하는 얕은 복사를 사용하는 것이 많은 경우 유리합니다. 데이터 테이블의 얕은 복사는 아래의 위치에서 가능합니다.

위치: 파일 및 데이터 - 기타 - 분석의 데이터 테이블에 연결된 복사본 - 데이터 테이블 선택

 

 

데이터 테이블 복사

 

l  7.6.2. 연결

기존에 있던 데이터 테이블을 다시 연결할 때가 있습니다. 데이터 테이블의 컬럼이나 행이 변경되어 데이터 테이블을 바꿔야하는 경우 또는 데이터 소스의 변경으로 인해 Spotfire의 데이터 테이블이 바뀌는 경우 등이 있습니다. 이 때 사용할 수 있는 것은 기존 연결을 끊고 새로 연결하는 바꾸기(Replace) 또는 기존 연결에서 데이터를 다시 불러오는 다시 로드(Reload)가 있습니다.

 

n 바꾸기(Replace)

바꾸기(Replace)는 기존 데이터 소스와 연결을 끊고 새롭게 재설정하는 것을 의미합니다. 따라서 기존 데이터 소스와 연결을 끊기 때문에 새로운 데이터 소스와 연결됩니다. 따라서 데이터 테이블의 컬럼이나 행이 동일할 필요없이 자유롭게 바뀔 수 있습니다. 하지만 컬럼이 바뀌는 경우는 데이터 로드 이후의 데이터 처리 과정이 있는 경우 문제가 발생할 수 있습니다.

위치: 데이터 캔버스 - 바꾸기

 

n 다시 로드(Reload)

다시 로드(Reload)는 동일한 데이터 소스에서 다시 불러오는 것 입니다. 그렇기 때문에 데이터 테이블의 대부분의 경우 컬럼의 변화는 없이 로우만 업데이트 됩니다.

위치: 데이터 - 연결된 데이터 다시 로드 또는 모든 데이터 다시 로드

 


데이터 테이블 다시 로드



l  7.6.3. 삭제

n 데이터 테이블의 삭제

데이터 테이블의 삭제는 비교적 간단합니다. 데이터 캔버스 또는 데이터 테이블 속성에서 삭제 할 수 있습니다.

위치: 데이터 캔버스 - 데이터 테이블 선택 - 삭제

 


데이터 테이블 바꾸기와 삭제

 

l  7.6.4. 행 추가와 열 추가

데이터 처리 시에 데이터 테이블 내에서 변환도 있겠지만, 여러 데이터 테이블 이 작용하여 만들어지는 데이터 테이블 간의 변환도 있습니다. 데이터 테이블 사이에서 값을 주고 받는 기능은 크게 행 추가(Add columns) 그리고 열 추가(Add rows) 2가지입니다. 2가지 모두 많이 쓰는 기능이기 때문에 세밀히 알고 있으면 좋습니다.

위치: 파일 및 데이터 - 기타 - 붙이는 데이터 테이블 선택 - 다음에 행으로 추가 / 다음에 컬럼으로 추가 - 기준 데이터 테이블 선택 / 데이터 캔버스 - 기준 데이터 테이블 선택 - 행 추가 / 컬럼 추가 - 붙이는 데이터 테이블 선택

 

 

파일 및 데이터를 이용하여 행 추가와 열 추가 실행하기


데이터 캔버스를 이용하여 행 추가와 열 추가 실행하기

 

 

두 가지 방법의 차이점은 파일 및 데이터(files and data)를 이용하는 것과 데이터 캔버스(data canvas)를 이용하는 것의 차이 외에도 다른 중요한 차이점이 있습니다. 바로 기준 테이블(왼쪽 테이블)과 붙이는 테이블(오른쪽 테이블)을 선정하는 순서 입니다. 기준 테이블과 붙이는 테이블은 뒤에서 조인 유형(Join type)을 결정할 때 중요한 역할을 합니다. 파일 및 데이터는 붙이는 테이블을 먼저 선택하는 반면, 데이터 캔버스의 경우 기준 테이블을 먼저 선택합니다. 순서의 차이이지만 경험 상, 기준 테이블을 먼저 선택하는 것이 자연스러운 생각의 흐름이라 편리합니다. 또한 데이터 캔버스는 데이터 처리 과정을 볼 수 있기 때문에 데이터 캔버스를 자주 이용합니다. 행 추가(Add columns)와 열 추가(Add rows)의 실행을 위한 마지막은 ⑥이나 ⓕ에서 변환 종류에 따라 세부적인 설정을 하는 것 입니다. Spotfire에서 자동으로 설정 해주지만, 이것은 꼭 확인하고 지정하는 것이 필요합니다.

 


l  7.6.5. 행 추가

행 추가(Add columns)는 왼쪽 테이블(기준 테이블)에 오른쪽 테이블(붙이는 테이블)의 컬럼을 붙이는 기능입니다. 데이터 테이블을 옆으로 붙인다고 생각하시면 편합니다.

 

 

행 추가의 개념

 

 

행 추가를 하면 컬럼1이 공통된 컬럼이고, 붙이는 테이블에 있던 컬럼3이 따라붙습니다. 붙이는 방법(join type)에 따라 결과가 달라지며, 위 예시는 많이 사용하는 왼쪽 완전 조인(Left outer join)을 적용한 결과 입니다. 행 추가의 자세한 설정은 위에서 언급된 경로를 통해 접근할 수 있습니다. 설정 창은 아래와 같은 모습입니다.


 

행 추가의 설정

 

왼쪽에는 행 추가의 3 가지 항목에 대해 설정하는 부분이고, 오른쪽은 결과 미리보기(Preview of result)를 보여줍니다. 미리보기에서는 색깔로 기준 테이블(하늘색), 붙이는 테이블(진하늘색), 그리고 조인 컬럼(진파랑색)을 구분하여 생성되는 결과의 모습을 빠르게 이해할 수 있습니다. 3가지 항목(settings for added columns)은 아래와 같은 내용입니다.

- 컬럼 일치(Match columns): 더하는 기준이 되는 column들을 선택합니다. 선택한 column들이 동일한 row끼리 매칭합니다.

- 새 데이터의 컬럼(Columns from new data): 더하려는 column 입니다. B table(new data)에 있는 column입니다.

- 조인 설정(Join settings): 조인 유형(Join type)을 선택합니다. 일반적으로는 왼쪽 외부 조인(Left outer join)이나 완전 외부 조인(Full outer join)을 많이 사용합니다.

 

n 조인 유형(Join type)

기준 테이블과 붙이는 테이블의 모든 로우가 동일하면 붙이는 테이블의 컬럼 만 더하면 되겠지만, 안타깝게도 현실에서는 로우가 완전히 동일한 경우는 극히 드뭅니다. 기준 테이블에 있는 로우가 붙이는 테이블에는 없을 수도 있고, 반대로 기준 테이블에 없는 로우가 붙이는 테이블에는 있을 수도 있습니다. 따라서 이런 매치가 되지 않는 로우들에 대한 규칙과 중복에 대한 규칙이 필요하고, 이를 조인 유형(Join type)이라고 합니다.

 

 

조인 유형과 예시


 

l  7.6.6. 열 추가

열 추가(Add rows)는 기준 테이블에 붙이는 테이블의 로우를 붙이는 기능입니다. 데이터 테이블을 위아래로 연결한다고 생각하시면 쉽습니다.

 


열 추가의 개념

 

열 추가의 경우에는 컬럼1이 공통된 컬럼으로 로우들을 연결합니다. 특이사항은 기준 테이블에는 없던 컬럼3도 따라 붙어 결과에 컬럼3이 생성된다는 것입니다. 물론 컬럼3의 생성 여부는 설정으로 선택할 수 있습니다. 설정 창은 아래와 같은 모습입니다.

 


열 추가의 설정

 

행 추가와 유사한 설정 창 모습 입니다. 왼쪽에는 열 추가의 3 가지 항목에 대해 설정하는 부분이고, 오른쪽은 결과 미리보기(Preview of result)를 보여줍니다. 미리보기에서는 색깔로 기준 테이블(하늘색) 그리고 붙이는 테이블(진하늘색)을 구분하여 생성되는 결과의 모습을 빠르게 이해할 수 있습니다. 3가지 항목(settings for added rows)은 아래와 같은 내용입니다.

- 컬럼 일치(Match columns): 로우를 붙일 때 기준 테이블과 붙이는 테이블에 공통으로 있는 컬럼들을 선택합니다. 로우가 동일한 컬럼에 연결됩니다.

- 새 데이터의 추가 컬럼 포함(Include additional columns from new data): 기준 테이블에는 없지만 붙이는 테이블에는 있는 컬럼들을 표시해 줍니다. , 위의 컬럼3 처럼 새로 생성되는 컬럼입니다.

- 행의 원점 식별(Idetify origin of rows): 열 추가를 했다는 것을 기록한 컬럼을 넣을지 넣지 않을지를 결정합니다.

댓글 쓰기

0 댓글