[파워쿼리기능소개] 6-1. 쿼리 관리 : 병합과 추가(Join , Union)

2020. 7. 21. 22:45엑셀/파워쿼리기능소개

728x90
반응형

이번 포스팅부터 쿼리를 다루는 기능들에 대해서 소개합니다. 그 첫 번재로 쿼리의 병합(Join)과 추가(Union)에 대해서 알아봅니다. 그 다음으로는 쿼리의 복제와 참조에 대해서 살펴보고 쿼리그룹을 관리하는 법과 쿼리 종속성에 대해서 소개하는 것으로 쿼리 관리에 대한 포스팅을 마무리 하겠습니다. 

  1. 쿼리 병합과 추가
  2. 쿼리 복제와 참조
  3. 쿼리 종속성

1. 쿼리병합(Merge Queries , Table 간 Join)

쿼리 병합은 엑셀에 익숙하신 분들은 엑셀의 Vlookup을 떠올리시면 이해가 조금 편할 수 있겠네요. 그리고 SQL과 DB에 대해서 지식이 있으신분들은 Join 이라고 생각하시면 가장 정확합니다. 

위 데이터를 보면 Table1과 Table2 2라는 id 값을 둘다 가지고 있고 id 값 1와 3은 각각 따로 가지고 있습니다. 당연히 여기서 id 값을 기준으로 병합(조인)을 할 것인데요. 쿼리병합의 옵션에 따라 어떻게 결과가 나오는지 살펴 보면 이해가 쉬울 겁니다. 

우선 병합을 수행하는 옵션 창을 보면 병합할 테이블을 각각 선택하고 해당 테이블에서 조인의 기준값이 되는 필드를 지정하게 됩니다. 

  1. 왼쪽 테이블을 선택하고 조인 기준 필드를 지정 
  2. 오른쪽 테이블을 선택하고 조인 기준 필드를 지정
  3. 조인의 종류를 지정 

조인의 종류는 외부(Outer)와 내부(Inner) 그리고 앤티(Anti)로 구성되어 있으며 외부조인의 경우 기준이 되는 테이블정의에 따라 Left,Right,Full의 3가지로 나누어져 있습니다. Anti(앤티)는 조인의 결과가 반대로 구성되는 것인데요. 일치하지 않는 행을 반환합니다. 설명보다는 직접 각각의 예시를 보는것이 이해가 쉬울 것 같네요. 

첨부된 파일을 열어보면 조인 종류 별로 결과를 구성해 놓았습니다. 내려받아 확인하시면 좋겠네요. 

왼쪽 외부(Left Outer)

왼쪽, 즉 Table1이 기준이 되어 조인이 된 상태입니다. Table2 의 값은 기준이되는 Table1과 값이 일치하는 id 2 만 출력되고 없는 id 1에 대해서는 'null' 값을 갖게 됩니다. 

오른쪽 외부(Right Outer)

오른쪽 외부는 왼쪽 외부와 반대로 구성됩니다. 

완전외부(Full Outer)

완전외부의 경우에는 모든 행이 다 출력됩니다. 

내부(Inner)

내부 조인은 양쪽 테이블에 모두 존재(일치)하는 값만 출력됩니다.

왼쪽 앤티(Left Anti)

왼쪽 앤티의 경우 기준이 되는 Table1에만 존재하는 id 1 값만 출력되고 일치하는 id 2값은 출력되지 않습니다. 

오른쪽 엔티는 왼쪽 앤티와 반대되는 결과를 출력합니다.

 

병합(조인)은 현재의 쿼리에 바로 반영을 할 수도 있고 새로운 쿼리를 생성하면서 병합을 수행할 수도 있습니다. 

최초 병합이 수행되고 나면 왼쪽의 테이블(상단에 먼저 정의되는 테이블)의 필드는 그대로 출력되고 조인이 된 오른쪽(하단에 정의되는 테이블)테이블의 필드는 구조와된 필드로 그림과 같이 표시됩니다. 

꺽인 화살표 2개의 모양을 하고 있는 아이콘을 클릭하면 구조적 열을 확장하거나 집계할 수 있습니다. 

확장을 하게되면 선택된 필드를 값과 함께 테이블에 출력하게 되고 집계를 할 경우에는 

각 필드의 데이터 형식에 맞게 숫자인 경우에는 합계 등이 가능하고 문자인 경우에는 개수를 합산 할 수 있습니다. 

▶ 병합(조인)은 상당히 활용도가 높은 기능입니다. 기준 필드를 조건으로 일치하는 값을 찾아오는 Lookup용도의 전처리 개념으로도 많이 사용되지만 관계를 맺어 분석적인 관점에서 활용하는 경우도 많습니다. 여러모로 많이 사용되므로 자주 사용해서 익혀두는것이 좋습니다. 

 

2. 쿼리추가 (Append Queries, 복수의 쿼리의 데이터를 합치기-Union)

쿼리 추가는 여러 개의 테이블을 하나로 합치는 것입니다. 일치여부를 따지는 것이아니라 여러개의 테이블을 각각의 테이블의 데이터가 끝나는 지점에 다른 테이블을 붙여넣어 한덩이로 합친다고 생각하시면 됩니다.

예제의 두 테이블을 쿼리 추가로 합치면 위와 같은 모양이 됩니다.  SQL의 Union 과 동일한 기능인데 특이한점은 필드의 이름을 기준으로 동일한 값을 같는 경우에는 같은 필드로 합쳐주고 그렇지 않은 경우에는 각각 필드를 다 표시하면서 출력한다는 것입니다. (SQL에서 필드의 수나 형식이 맞지않으면 에러가 납니다)

Table 1 과 Table 3 을 쿼리 추가로 합치게 되면 다음과 같이 출력됩니다. 

필드 이름은 동일하지만 데이터 형식이 다른 경우에는 데이터 형식을 "임의" 로 지정하면서 한 필드에 출력합니다. 

쿼리 추가는 2개 이상의 쿼리를 합치는 것이 가능합니다. 

3개 이상의 테이블을 선택하면 그림과 같이 여러 테이블을 추가 할 수 있도록 옵션 폼이 변경됩니다. 

*쿼리 추가로 합쳐진 데이터에서 중복된 값을 제거하게되면 SQL의 Union all 이 됩니다. 

 

▶ 쿼리 추가는 기존의 데이터를 유지하면서 새로운 추가 데이터를 받아와서 합치는 경우에 활용가능합니다. 예를 들어 시스템에서 실적이 일자별로 각각 다른 파일로 매일 생성되고 이것을 취합해야 한다면 계속 전체 파일을 쿼리하여 받아올 것이 아니라 추가된 그날의 파일만 쿼리로 가져와서 합치는 것으로 구성이 가능합니다. 

쿼리 병합-추가.xlsx
0.03MB

 

728x90
반응형