파워 쿼리 병합 후 행이 늘거나 null이 생길 때 키와 펼치기 확인

주문표에 상품명 한 열만 붙였는데 행 수와 금액 합계가 늘었다면, 병합한 오른쪽 표에 같은 키가 여러 개 있는지 먼저 확인하세요. 한 주문에 두 상품 정보가 일치하면 펼친 결과에도 그 주문이 두 번 나타날 수 있어요. 이때 주문표에서 중복 제거를 누르면 정상 주문까지 지울 수 있으므로 두 표의 관계를 먼저 고쳐야 해요.

이 글은 파일 여러 개를 세로로 모으는 ‘추가’나 폴더 결합이 아니라, 두 표의 일치하는 키를 찾아 정보를 붙이는 ‘병합’을 다뤄요. 아래 숫자는 원리를 검산할 수 있게 만든 가상 주문 예제이며, 실제 매출이나 Excel에서 측정한 실행 결과가 아니에요.

병합 전 기준값을 기록하세요

설명용 주문표는 세 행이에요. 주문 O1은 상품 P01, 금액 10,000원이고 O2는 P02, 20,000원, O3은 P03, 30,000원이에요. 원본 주문은 3건, 금액 합계는 60,000원이에요. 이 두 값을 기준으로 삼으면 병합 결과가 달라졌을 때 어느 변환부터 확인할지 판단하기 쉬워요.

상품 기준표에는 P01 ‘머그’ 한 행과 P02 ‘노트’·‘노트 구형’ 두 행을 넣었고 P03은 넣지 않았어요. 여기서 P02의 두 행은 서로 다른 주문이 아니라 같은 상품코드에 연결된 두 기준 정보예요. 주문표의 O2가 한 번만 있어도 오른쪽 기준표와 일치하는 항목은 두 개가 되는 구조예요.

가상 주문 O1부터 O3의 세 행과 P02 두 행 및 P03 미등록 상품 기준표

주문 3건과 상품 기준표의 관계 예시 · 실제 앱 화면 아님

실제 파일에서는 작업 사본을 만들고 병합 직전 쿼리의 주문 식별자 수, 전체 행 수, 금액 합계를 따로 남겨 두세요. 한 주문이 여러 품목 행으로 나뉘는 표라면 주문 수와 행 수는 원래부터 다를 수 있어요. 주문번호만으로 유일성을 판단하지 말고 주문번호와 품목번호처럼 업무에서 한 행을 식별하는 기준을 정하세요.

키와 데이터 형식을 맞추세요

병합 대화상자 위쪽 표가 왼쪽, 아래쪽 표가 오른쪽이에요. 주문표를 왼쪽에 두고 상품 기준표를 오른쪽에 두는 예제라면 왼쪽 상품코드 열과 오른쪽 코드 열을 선택해요. 두 열의 제목은 달라도 되지만 대응하는 키의 데이터 형식은 맞아야 해요. 제목이 같다고 실제 값까지 일치하는 것은 아니에요.

숫자 1과 문자 ‘1’을 섞었거나, 한쪽 상품코드에는 앞자리 0이 있는데 다른 쪽에서 숫자로 바뀌었다면 가져오는 단계부터 확인하세요. 코드 ‘001’과 ‘1’이 같은 상품인지 다른 상품인지 업무 규칙을 먼저 정해야 해요. 모양을 맞추려고 숫자로 일괄 변환하면 구분에 필요한 앞자리 0이 사라질 수 있어요.

키가 두 개라면 선택 순서도 맞추세요. 왼쪽에서 ‘지점 → 상품코드’ 순으로 골랐다면 오른쪽도 같은 의미의 순서로 선택해야 해요. Power Query는 선택 순서를 표시하므로 양쪽의 작은 순번을 대조하세요. ‘상품코드 → 지점’처럼 뒤바뀐 조합은 두 열을 모두 골랐어도 다른 조건을 비교하게 돼요.

이 단계에서 미리보기의 일치 건수만 보고 끝내지 마세요. 표시된 수는 어떤 왼쪽 행에 대응 항목이 있는지 살피는 데 도움이 되지만, 오른쪽의 같은 키가 업무상 유일한지까지 대신 판정하지 않아요. 실제 대응 행을 몇 개 열어 코드·날짜·지점 값을 함께 읽어 보세요.

조인별로 남는 주문 확인

왼쪽 외부 조인은 왼쪽 주문을 남기면서 오른쪽의 일치 정보를 붙이는 방식이에요. 상품명이 없는 주문도 점검해야 한다면 이 선택이 목적에 맞을 수 있어요. 예제의 P03 주문은 오른쪽에 일치 상품이 없으므로 펼친 상품명에 null이 나타나는 대상이에요.

내부 조인은 양쪽에서 일치하는 행만 남겨요. 예제에서 P03 주문은 빠지고 P01·P02 주문만 남는 구조예요. 따라서 상품명이 없는 행을 보기 싫다는 이유로 내부 조인을 선택하면, 주문 누락을 가려 버릴 수 있어요. 원하는 것이 ‘모든 주문과 미등록 상품 점검’인지 ‘등록 상품 주문만 분석’인지부터 정하세요.

병합을 마치면 오른쪽 표의 정보가 중첩된 새 열로 생겨요. 이 열을 펼칠 때 가져올 항목을 골라요. 상품명만 필요하면 불필요한 오른쪽 열을 전부 펼치지 않는 편이 결과를 읽기 쉬워요. 다만 열을 적게 고른다고 같은 키에 대응하는 여러 행 자체가 한 행으로 합쳐지는 것은 아니에요.

펼치기 전후의 행 수 비교

예제의 왼쪽 외부 병합 결과를 펼치면 O1은 한 행, O2는 두 행, O3은 상품명이 null인 한 행으로 설명할 수 있어요. 결과는 4행이 되고 금액 열을 그대로 합산하면 10,000 + 20,000 + 20,000 + 30,000 = 80,000원이에요. 주문이 새로 들어온 것이 아니라 O2의 금액이 두 대응 행에 반복된 것이에요.

O2 금액이 두 행에 반복되어 가상 원본 3행 6만원이 펼친 예제 4행 8만원으로 보이는 표

같은 주문 금액이 두 대응 행에 반복되는 예시 · 계산용 가상 자료

이 숫자는 중첩 표를 여러 행으로 펼치는 공식 동작에 따라 계산한 예제예요. 실제 결과는 두 표의 값과 조인 종류에 따라 달라지므로 ‘병합하면 항상 한 행이 늘어난다’고 받아들이면 안 돼요. 중첩 열을 펼치기 전 단계와 펼친 뒤 단계를 차례로 선택해 어느 주문 식별자가 반복됐는지 대조하세요.

오른쪽 기준표에 같은 상품코드가 여러 번 있다면 이유를 구분하세요. 잘못 복사된 동일 행일 수도 있지만 지점별 이름, 적용 기간별 가격, 판매 버전처럼 의미가 다른 행일 수도 있어요. 의미가 다른 자료를 임의로 한 행만 남기면 어떤 이름이나 가격을 붙였는지 설명할 수 없게 돼요.

현재 상품명만 붙이는 업무라면 기준표에서 ‘현재 유효’ 조건으로 한 행을 선택하거나, 지점 등 빠진 키를 병합 조건에 추가하는 방식이 필요한지 검토하세요. 어느 행을 남길지는 자료 담당자의 업무 규칙으로 정해야 해요. 주문표를 삭제해 결과 행 수만 맞추는 방식은 원인 수정이 아니에요.

null의 두 원인 구분

펼친 상품명이 null일 때는 오른쪽 표에 해당 키가 없는 경우와, 오른쪽에는 일치하는 행이 있지만 상품명 값이 비어 있는 경우를 구분하세요. 둘 다 결과의 상품명 칸만 보면 비어 보일 수 있어요. 오른쪽 키 열도 함께 펼친 사본을 보면 일치 행이 있었는지 판단하는 데 도움이 돼요.

예제 P03은 기준표에 코드 자체가 없는 경우예요. 반면 P01의 기준표 상품명을 비워 두면 코드가 맞더라도 상품명 정보가 부족한 상태예요. 전자는 미등록 코드 확인, 후자는 기준표 내용 보완이라는 서로 다른 조치로 연결돼요. 모든 null을 같은 빈 문자열로 바꾸면 이 차이가 사라져요.

왼쪽 반대 조인으로 별도의 검수 쿼리를 만들면 오른쪽에 대응하지 않는 왼쪽 주문만 모아 볼 수 있어요. 본 집계 쿼리를 바로 바꾸기보다 사본에서 미등록 목록을 확인하세요. 예제에서는 P03 주문이 이 목록에 해당하고, P02처럼 대응 행이 두 개 있는 문제는 이 목록만으로 찾을 수 없어요.

P02의 두 대응 행과 P03 미등록 코드를 각각 오른쪽 키 검수와 왼쪽 반대 조인으로 나눠 확인하는 분기

행 증가와 미등록을 다른 검수로 나누는 구조도 · 자체 설명 도해

새로고침 뒤 기준값 재검사

검수표에는 ‘원본 주문번호 → 왼쪽 코드 → 오른쪽 대응 수 → 가져온 상품명’을 한 줄로 기록해 보세요. 예제 O1은 P01에 한 행, O2는 P02에 두 행, O3은 P03에 대응 없음으로 나뉘어요. 주문번호를 따라 결과를 읽으면 두 행이 된 주문과 정보가 없는 주문을 서로 바꾸어 처리할 위험을 줄일 수 있어요.

금액 열을 병합 결과에서 바로 더하는 대신 원본 주문별 금액을 별도로 보관하면 어떤 주문에서 합계가 변했는지 설명할 수 있어요. 여러 기준 행이 업무상 정상인 경우에는 ‘주문 금액을 각 기준 행에 반복 표시할 것인지’와 ‘기준별로 나눠 집계할 것인지’부터 정해야 해요. 조인 기능은 이 집계 정책을 자동으로 결정하지 않아요.

수정 전 기준표와 수정 후 기준표를 함께 보관하고 어느 코드의 유효 조건을 바꿨는지 남기세요. 오른쪽 키가 겹친다는 이유로 기준표에서 일괄 삭제하는 것도 피해야 해요. 다른 보고서가 같은 기준표의 과거 이력을 사용한다면, 현재 보고서용 필터나 별도의 기준 쿼리로 범위를 정하는 편이 설명하기 쉬워요.

기준표를 수정한 뒤에는 동일한 원본 사본으로 다시 새로고침하고 주문 식별자, 행 수, 합계, 미등록 목록을 함께 비교하세요. 예제에서 P02의 유효 상품 정보를 하나로 정하고 P03을 올바르게 등록했다면, 한 주문에 한 상품 정보를 붙이는 목적에 맞는 결과인지 확인할 수 있어요. 합계만 같아졌다고 모든 주문의 이름까지 맞는 것은 아니에요.

새 달의 파일에서는 기존에 없던 상품코드가 생기거나 기준표에 적용 기간 행이 추가될 수 있어요. 병합 설정을 한 번 저장했다고 오른쪽 키의 유일성이 계속 유지되는 것은 아니에요. ‘상품코드당 유효 행은 하나’ 같은 기준과 예외 목록을 자료 담당자가 볼 수 있게 남겨 두세요.

실무에서 먼저 확인할 순서는 병합 전 기준값, 양쪽 키와 형식, 복합키 순서, 조인 종류, 오른쪽 키의 대응 수, 펼치기 뒤 반복 행이에요. 행 증가와 null이 동시에 보이더라도 한 원인으로 묶지 말고 각각의 주문을 따라가면 불필요한 삭제 없이 문제를 좁힐 수 있어요.

왼쪽 키도 반복될 때의 비교

왼쪽 주문표에도 같은 상품코드가 반복될 수 있어요. 상품코드가 같다는 이유만으로 주문 두 건을 중복으로 판정하지 마세요. 예를 들어 P02 주문 O2가 20,000원, 별도 주문 O4가 5,000원이고 오른쪽 P02 정보가 두 행이면, 각 주문이 두 대응 정보를 만나 펼친 결과는 네 행으로 설명돼요. 같은 코드라는 사실과 같은 주문이라는 사실은 달라요.

이 별도 가상 예제의 원본 두 주문 합계는 25,000원이지만 대응 정보마다 주문 금액을 반복한 네 행의 합계는 50,000원이에요. 오른쪽 대응 수가 두 개라는 조건에서 계산한 값이며 실제 Excel 결과는 아니에요. 결과에 주문 식별자를 남기면 O2가 두 번, O4가 두 번 나타나는지를 각각 대조할 수 있어요.

오른쪽 대응 행이 여러 개인 것이 정상이라면 보고서가 주문별 표인지 상품 정보별 표인지 다시 정하세요. 주문별 총액을 지켜야 하는 보고서와 각 버전을 나열하는 보고서는 같은 펼친 표를 같은 방식으로 합산할 수 없어요. 먼저 보고서 한 행의 의미와 금액을 집계할 단위를 문장으로 적어 담당자와 확인해요.

자료가 갱신된 날에는 쿼리가 오류 없이 끝났는지와 기준표의 관계가 유지됐는지를 따로 확인하세요. 중첩 열이 생겼다는 표시나 새로고침 완료만으로 모든 주문의 대응 수가 하나라고 볼 수 없어요. 예외 주문의 식별자와 기준표의 해당 행을 함께 남겨 다음 달에도 같은 유형을 비교할 수 있게 해요.

관심 주제의 주간 소식

새 글과 수정 소식은 주 1회 이하. 이메일 확인 후 구독 시작, 메일의 링크에서 구독 해제.

관심 주제 · 최대 3개

이메일은 구독 확인과 소식 전송에만 사용. 미확인 주소는 24시간 후 정리. 구독 해제 시 새 발송 중단과 이메일 삭제. 이미 전송 중인 메일은 취소 불가. 개인정보 안내