4. 완전 외부 조인(Full Outer Join)
완전 외부 조인은 왼쪽과 오른쪽 테이블을 모두 표시해 주는 합집합입니다.
왼쪽과 오른쪽의 표를 보면 지점명이 공통적으로 있는데,
왼쪽 표를 보면 오른쪽에는 없는 D지점이 있고, 오른쪽 표에는 왼쪽에 없는 E지점이 있습니다.
왼쪽 외부 조인에서 자세히 설명했기 때문에 일부는 화면 캡처 없이 글로만 설명하겠습니다.
https://lsw3210.tistory.com/entry/%ED%8C%8C%EC%9B%8C-%EC%BF%BC%EB%A6%AC-%EB%B3%91%ED%95%A9-%EC%A1%B0%EC%9D%B8%EC%9D%98-%EC%A2%85%EB%A5%981-%EC%99%BC%EC%AA%BD-%EC%99%B8%EB%B6%80-%EC%A1%B0%EC%9D%B8
① 왼쪽 표에 마우스 커서를 놓고 데이터 탭 > '테이블/범위에서'를 눌러 표1 쿼리를 만든 다음, '닫기 및 로드' 아래 '닫기 및 다음으로 로드'를 누른 후 '연결만 만들기'를 선택하고 확인 버튼을 누릅니다.
그러면 표1 쿼리가 쿼리 및 연결 창에 표시됩니다.
② 오른쪽 표에 마우스 커서를 놓고 데이터 탭 > '테이블/범위에서'를 눌러 표2 쿼리를 만듭니다. 이번에는 닫기 및 다음으로 로드를 누르지 않고 쿼리 병합을 합니다.
다시 말해 표1을 선택한 다음 '쿼리 병합' 아래 '쿼리를 새 항목으로 병합으로를 클릭합니다.
③ 아래에서 표2를 선택하고, 공통되는 열인 표1의 지점명과 표2의 지점명을 클릭해서 선택하고, 조인 종류로 완전 외부 조인을 선택한 다음 확인 버튼을 누릅니다.
④ 그러면 아래와 같이 병합1 쿼리가 생기면서 표2가 테이블로 연결되는데, 표2 오른쪽의 확장 버튼을 누른 후
지점명, 지점장을 선택된 상태 그대로 두고, '열 이름을 접두사로 사용'의 체크만 해제한 다음 확인 버튼을 누릅니다.
⑤ 그러면 지점장이 왼쪽에도 있고, 오른쪽에도 있으므로 2개를 합쳐서 하나로 표시해야 합니다.
⑥ 열 추가 탭의 조건 열을 클릭합니다.
⑦ 그러면 아래와 같이 조건 열 추가 창이 나오는데,
새 열 이름을 지점명으로 하면 중복돼서 에러가 표시되므로 그대로 두고,
그 아래 '사용자 지정 열 수식' 부분에서
열 이름은 아래 콤보 상자를 눌러 지점명을 선택하고, 연산자는 같음 그대로 두고, 값에 null(데이터가 없음)으로 그대로 둡니다. 다시 말해 "왼쪽 지점명이 비어 있다면"이란 If 조건문이 됩니다.
그리고, 오른쪽 출력 부분에서 열 이름을 지점명.1로 선택해야 하는데, 형식이 ABC123(문자 또는 숫자)가 되어 있어 콤보 상자가 아니므로, ABC123 부분을 클릭한 후 열 선택을 클릭합니다.
그러면 출력이 콤보 상자로 변경됩니다, 콤보 상자를 누른 후 지점명.1을 선택합니다.
그리고, 그 아래를 보면 기타가 보이는데, 이것은 조건문에서 Else에 해당하는 것입니다.
기타의 오른쪽도 콤보 상자가 아니므로 ABC123을 누른 후 열 선택을 선택해서 콤보 상자로 만든 후 지점명을 선택합니다.
if 조건문으로 표시하면 If [지점명] = null then [사용자 지정] = [지점명.1] Else [사용자 지정] = [지점명] End If 가 됩니다. |
⑦-1 열 추가에서 '조건 열'이 아니라 '사용자 지정 열'을 추가하면
= if [지점명]=null then [지점명.1]
else [지점명] 이라고 쓰고,
[사용자 지정] = [지점명.1] 또는 [사용자 지정] = [지점명]으로 표현하지 않습니다.
이제 확인 버튼을 누르면 오른쪽에 '사용자 지정'이란 열이 추가되고, 지점명과 지점명.1을 결합해서 표시됩니다.
⑧ 이제 지점명과 지점명.1은 필요 없으므로, Ctrl키를 누른 상태에서 2개 열을 선택한 후 마우스 오른쪽 버튼을 누르고, 열 제거 메뉴를 눌러 열을 제거합니다.
그러면 지점명과 지점명.1 열이 제거 됐으므로 사용자 지정을 더블 클릭해서 지점명으로 수정합니다.
⑨ 지점명으로 수정됐는데, 지점장이 지점명의 왼쪽에 있으므로,
지점명의 열 부분을 끌어서 지점장 왼쪽에 놓습니다.
그러면 완성됐습니다.
오른쪽의 쿼리 설정 창을 보면
위에서 작업한 내용이 '적용된 단계'에 표시되고 있으며,
쿼리 위에 작업한 내용이 단계마다 수식으로 적혀있는 것을 알 수 있습니다.
마지막 '다시 정렬한 열 수'의 수식은
= Table.ReorderColumns(#"이름을 바꾼 열 수",{"일자", "매출액", "지점명", "지점장"}) 이라고 되어 있는데,
Table.ReorderColumns는 테이블(표)에서 열의 순서를 재배치(정렬)하라는 의미이고,
{"일자", "매출액", "지점명", "지점장"} 은 재배치하는 열의 순서입니다.
그리고, #"이름을 바꾼 열 수"는 적용된 단계의 이전 단계명입니다.
왼쪽 외부 조인이나 오른쪽 조인과 비교할 때 완전 외부 조인은 자동으로 완성되는 것이 아니라 다시 한번 더 작업을 해야 하는 불편함이 있습니다.
⑩ 닫기 및 로드 아래의 닫기 및 다음으로 로드를 누른 후 연결만 만들기를 누릅니다.
연결만 만들기를 굳이 하는 이유는 표2는 연결만 만들기를 안 했기 때문에 표2가 추가되는 번거로움이 있고,
병합1도 나중에 표 또는 피벗 테이블 등으로 쉽게 바꾸기 위해서 그런 것입니다.
⑪ 쿼리 및 연결 차에서 마우스 커서를 병합1에 놓은 다음 마우스 오른쪽 버튼을 누른 후 '다음으로 로드' 메뉴를 누릅니다.
⑫ 데이터 가져오기에서 표를 선택한 후 기존 워크시트의 H1셀을 클릭합니다.
그러면 원하는 결과가 만들어졌습니다.
'Excel - 파워 쿼리' 카테고리의 다른 글
파워 쿼리 병합(5) - 왼쪽 앤티, 오른쪽 앤티 조인의 합집합 (0) | 2023.06.30 |
---|---|
파워 쿼리 병합(4) - 왼쪽, 오른쪽 앤티 조인 (0) | 2023.06.29 |
파워 쿼리 병합(2) - 오른쪽 외부 조인 (0) | 2023.06.27 |
파워 쿼리 병합(1) - 왼쪽 외부 조인 (0) | 2023.06.26 |
파워 쿼리와 Vlookup, Index+Match 함수 비교(3) (0) | 2023.06.22 |