Excel - 파워 쿼리

파워 쿼리 병합(5) - 왼쪽 앤티, 오른쪽 앤티 조인의 합집합

별동산 2023. 6. 30. 08:54
반응형

아래 글을 보면 SQL에는 왼쪽 앤티 조인과 오른쪽 앤티 조인의 합집합이 있는데,
https://lsw3210.tistory.com/entry/%ED%8C%8C%EC%9B%8C-%EC%BF%BC%EB%A6%AC-%EB%B3%91%ED%95%A91-%EC%99%BC%EC%AA%BD-%EC%99%B8%EB%B6%80-%EC%A1%B0%EC%9D%B8
 

 
파워 쿼리에는 없습니다.

 
그래서 구현해 보겠습니다.
 
파워 쿼리 병합(4) - 왼쪽, 오른쪽 앤티 조인의 결과물인 아래 파일을 가지고 해 보겠습니다.

파워쿼리병합-왼쪽,오른쪽앤티조인(완성).xlsx
0.02MB

 

 1. 방법 1 : 완전 외부 조인 이용

 
합집합이므로 완전외부조인을 이용하면 됩니다.
 
위 파일을 연 다음 데이터 탭에서 '쿼리 및 연결' 명령을 눌러

 
쿼리 및 연결 창을 표시합니다.

 
왼쪽 앤티 조인과 오른쪽 앤티 조인을 결합할 것이므로
병합1을 마우스로 더블 클릭해서 파워 쿼리 편집기를 엽니다.
그러면 병합1 쿼리가 선택되어 있으므로, 쿼리 병합 아래 '쿼리를 새 항목으로 병합'을 누릅니다.

병합 창이 열리고 병합1 쿼리가 선택되어 있으므로, 아래에서 병합2 쿼리를 선택하고, 둘 다 지점명을 클릭한 다음, 조인의 종류로 완전 외부 조인을 선택하고 확인 버튼을 누릅니다.

 
그러면, 병합3 쿼리가 생기면서 병합1 쿼리의 내용은 표시되는데, 병합2는 Table로 표시되어 있으므로 병합2 오른쪽의 확장 버튼을 누릅니다.

 
열은 모두 선택해야 하므로 그대로 두고, '원래 열 이름을 접두사로 사용'의 체크만 해제하고 확인 버튼을 누릅니다.

 
그러면 아래와 같이 지점명이 중복되어 표시되는데, 

 
조건 열을 추가해서 2개 지점명을 하나로 합칩니다. 열 추가 탭의 조건 열을 클릭합니다.

 
그리고, 쿼리 병합(3) - 완전 외부 조인에서 했던 것처럼 지점명이 null일 때는 지점명.1을 가져오고, 아니면 지점명 값을 가져오도록 합니다.

 
 
출력 아래 아이콘이 ABC123이라면 지점명.1을 선택할 수 없으므로, ABC123을 눌러 열 선택으로 바꾼 다음 지점명.1을 선택해야 합니다. 기타도 같습니다.

 
그러면 기존 지점명, 지점명.1이외에 사용자 지정 열이 생기는데, 지점명과 지점명.1 필요 없으므로 

 
Ctrl키를 누른 상태에서 두 열을 선택한 다음 마우스 오른쪽 버튼을 누르고, 열 제거 메뉴를 누릅니다.

 
이제 열 이름 사용자 지정을 지점명으로 수정하고, 지점장 왼쪽으로 끌어서 배치합니다.

 
쿼리 이름이 모두 병합이라 구분이 안되므로

 
병합1 등 쿼리 이름을 더블 클릭해서

병합1은 왼쪽 앤티 조인, 병합2는 오른쪽 앤티 조인, 병합3은 왼쪽, 오른쪽 앤티 합집합으로 수정합니다. 그런데, 쿼리 이름이 좁아서 다 보이지 않는다면 쿼리 오른쪽 경계선을 끌어서 원하는 너비로 만들면 됩니다.

 
그리고, 닫기 및 로드 윗부분을 눌러 쿼리를 표로 만듭니다.
그러면 시트 이름이 기존 시트는 병합1과 병합2로 표시되지만 쿼리명을 바꾼 다음 표로 변환하면 쿼리 이름으로 시트명이 만들어집니다.

 
 

2. 방법 2 : 쿼리 추가 > 쿼리를 새 항목으로 추가

왼쪽 앤티 조인과 오른쪽 앤티 조인은 일치되는 값이 없으므로
같은 열을 기준으로 쿼리를 추가해서 합집합을 만들 수 있습니다.
 
쿼리 및 연결 창에서 왼쪽 앤티 조인을 더블 클릭해서 파워 쿼리 편집기로 들어갑니다.
 
그리고, 쿼리 추가 아래 '쿼리를 새 항목으로 추가'를 클릭하고,

 
그러면 병합이 아니라 추가 창이 열리면서 "2개의 테이블을 단일 테이블에 연결합니다"라는 설명이 있고, 그 아래 2개와 3개 이상의 테이블이 있는데, 2개이므로 아래 두 번째 테이블에서 오른쪽 앤티 조인을 선택합니다. 

 
그리고, 확인 버튼을 누르면
쿼리 창에 추가1이 생기고, 오른쪽 테이블 표시창에는 지점명이 결합돼서 표시됩니다.
그런데, 열 순서가 일자, 지점명, 매출액, 지점장이므로

 
지점명을 매출액 오른쪽으로 끌어 원하는 순서로 만듭니다.

 
추가1을 더블 클릭해서 '왼쪽앤티에 오른쪽 앤티 추가'로 이름을 바꿉니다.

 
항상 길은 여러 갈래가 있습니다.
각자 맞는 길을 찾으면 됩니다.
 
닫기 및 로드 윗부분을 눌러 표로 삽입하면 시트명도 '왼쪽앤티에 오른쪽 앤티 추가'입니다.

 
방법1로 한 것과 방법2로 한 것은 레코드 순서가 다른데, 방법1은 지점명이 null일 때 값을 지점명.1로 지정해서 지점명.1인 오른쪽 앤티 조인이 먼저 표시됐고, 방법2는 왼쪽 앤티 조인에 오른쪽 앤티 조인을 추가하다 보니 왼쪽 앤티 조인이 먼저 표시됐습니다.

파워쿼리-왼쪽,오른쪽앤티조인 합집합(완성).xlsx
0.03MB
반응형