파워 쿼리에서 오류 처리
파워 쿼리에서 다음 두 가지 유형의 오류가 발생할 수 있습니다.
- 단계 수준 오류
- 셀 수준 오류
이 문서에서는 각 수준에서 찾을 수 있는 가장 일반적인 오류를 수정하는 방법에 대한 제안 사항을 제공하고 각 수준에 대한 오류 이유, 오류 메시지 및 오류 세부 정보를 설명합니다.
단계 수준 오류
단계 수준 오류는 쿼리가 로드되지 않도록 하고 오류 구성 요소를 노란색 창에 표시합니다.
- 오류 이유: 콜론 앞의 첫 번째 섹션입니다. 위의 예제에서 오류 이유는 Expression.Error입니다.
- 오류 메시지: 이유 바로 뒤의 섹션입니다. 위의 예제에서 오류 메시지는 테이블의 열 'Column'을 찾을 수 없다는 것입니다.
- 오류 세부 정보: 세부 정보: 문자열 바로 뒤의 섹션입니다. 위의 예제에서 오류 세부 정보는 열입니다.
일반적인 단계 수준 오류
모든 경우에 오류 원인, 오류 메시지 및 오류 세부 정보를 자세히 살펴보고 오류의 원인을 파악하는 것이 좋습니다. 사용 가능한 경우 오류로 이동 단추를 선택하여 오류가 발생한 첫 번째 단계를 볼 수 있습니다.
원본을 찾을 수 없습니다. - DataSource.Error
이 오류는 일반적으로 사용자가 데이터 원본에 액세스할 수 없거나 사용자에게 데이터 원본에 액세스할 수 있는 올바른 자격 증명이 없거나 원본이 다른 위치로 이동된 경우에 발생합니다.
예: D 드라이브에 있고 사용자 A가 만든 텍스트 타일의 쿼리가 있습니다. 사용자 A는 D 드라이브에 대한 액세스 권한이 없는 사용자 B와 쿼리를 공유합니다. 이 사용자가 쿼리 를 실행하려고 하면 환경에 D 드라이브가 없기 때문에 DataSource.Error 가 발생합니다.
가능한 해결 방법: 텍스트 파일의 파일 경로를 두 사용자가 액세스할 수 있는 경로로 변경할 수 있습니다. 사용자 B는 파일 경로를 동일한 텍스트 파일의 로컬 복사본으로 변경할 수 있습니다. 오류 창에서 설정 편집 단추를 사용할 수 있는 경우 해당 단추를 선택하고 파일 경로를 변경할 수 있습니다.
테이블의 열을 찾을 수 없습니다.
이 오류는 일반적으로 단계가 쿼리에 존재하지 않는 열 이름을 직접 참조할 때 트리거됩니다.
예: 열 이름 중 하나가 Column인 텍스트 파일의 쿼리가 있습니다. 쿼리에서 해당 열의 이름을 Date로 바꾸는 단계가 있습니다. 그러나 원래 텍스트 파일에 변경 내용이 있었고 열 이름이 날짜로 수동으로 변경되었기 때문에 열 이름이 더 이상 없습니다. 파워 쿼리에서 열이라는 열 머리글을 찾을 수 없으므로 열 이름을 바꿀 수 없습니다. 다음 이미지에 표시된 오류를 표시합니다.
가능한 해결 방법: 이 경우 여러 솔루션이 있지만 모두 원하는 작업에 따라 달라집니다. 이 예제에서는 올바른 날짜 열 머리글이 이미 텍스트 파일에서 제공되므로 열 이름을 바꾸는 단계를 제거할 수 있습니다. 이렇게 하면 이 오류 없이 쿼리를 실행할 수 있습니다.
기타 일반적인 단계 수준 오류
여러 데이터 원본 간에 데이터를 결합하거나 병합할 때 다음 이미지에 표시된 것과 같은 Formula.Firewall 오류가 발생할 수 있습니다.
이 오류는 데이터 원본 간의 데이터 개인 정보 수준 또는 이러한 데이터 원본이 결합되거나 병합되는 방식과 같은 여러 가지 이유로 인해 발생할 수 있습니다. 이 문제를 진단하는 방법에 대한 자세한 내용은 데이터 개인 정보 보호 방화벽으로 이동하세요.
셀 수준 오류
셀 수준 오류는 쿼리가 로드되는 것을 방지하지 않지만 오류 값을 셀에 오류로 표시합니다. 셀에서 공백을 선택하면 데이터 미리 보기 아래에 오류 창이 표시됩니다.
참고 항목
데이터 프로파일링 도구를 사용하면 열 품질 기능으로 셀 수준 오류를 보다 쉽게 식별할 수 있습니다. 추가 정보: 데이터 프로파일링 도구
셀 수준에서 오류 처리
셀 수준 오류가 발생하는 경우 파워 쿼리는 오류를 제거, 바꾸기 또는 유지하여 이를 처리하는 함수 집합을 제공합니다.
다음 섹션의 경우 제공된 예제는 시작 지점과 동일한 샘플 쿼리를 사용합니다. 이 쿼리에는 변환 오류로 인해 오류가 발생한 셀이 하나 있는 Sales 열이 있습니다. 해당 셀 내의 값은 NA이지만 해당 열을 정수 파워 쿼리로 변환할 때 NA를 숫자로 변환할 수 없으므로 다음 오류가 표시됩니다.
오류 제거
파워 쿼리에서 오류가 있는 행을 제거하려면 먼저 오류가 포함된 열을 선택합니다. 홈 탭의 행 줄임표 그룹에서 행 제거를 선택합니다. 드롭다운 메뉴에서 오류 제거를 선택합니다.
이 작업의 결과로 찾고 있는 테이블이 표시됩니다.
오류 바꾸기
오류가 있는 행을 제거하는 대신 오류를 고정 값으로 바꾸려면 이 작업을 수행할 수도 있습니다. 오류가 있는 행을 바꾸려면 먼저 오류가 포함된 열을 선택합니다. 변환 탭의 [모든 열] 그룹에서 [값 바꾸기]를 선택합니다. 드롭다운 메뉴에서 오류 바꾸기를 선택합니다.
모든 오류를 값 10으로 바꾸려면 오류 바꾸기 대화 상자에서 값 10을 입력합니다.
이 작업의 결과로 찾고 있는 테이블이 표시됩니다.
오류 유지
파워 쿼리는 오류를 수정하지 않더라도 오류가 있는 행을 식별하는 좋은 감사 도구 역할을 할 수 있습니다. 여기서 오류 유지가 도움이 될 수 있습니다. 오류가 있는 행을 유지하려면 먼저 오류가 포함된 열을 선택합니다. 홈 탭의 행 줄임 그룹에서 행 유지를 선택합니다. 드롭다운 메뉴에서 오류 유지를 선택합니다.
이 작업의 결과로 찾고 있는 테이블이 표시됩니다.
일반적인 셀 수준 오류
단계 수준 오류와 마찬가지로 오류 원인, 오류 메시지 및 셀 수준에서 제공된 오류 세부 정보를 자세히 살펴보고 오류의 원인을 파악하는 것이 좋습니다. 다음 섹션에서는 파워 쿼리에서 가장 빈번한 셀 수준 오류 중 일부에 대해 설명합니다.
데이터 형식 변환 오류
테이블에서 열의 데이터 형식을 변경할 때 일반적으로 트리거됩니다. 열에 있는 일부 값을 원하는 데이터 형식으로 변환할 수 없습니다.
예: Sales라는 열을 포함하는 쿼리가 있습니다. 해당 열의 한 셀에는 NA가 셀 값으로, 나머지 셀에는 정수가 값으로 있습니다. 열의 데이터 형식을 텍스트에서 정수로 변환하기로 결정했지만 NA 값이 있는 셀에 오류가 발생합니다.
가능한 해결 방법: 오류로 행을 식별한 후 데이터 원본을 수정하여 NA가 아닌 올바른 값을 반영하거나 오류 바꾸기 작업을 적용하여 오류를 발생시키는 NA 값에 대한 값을 제공할 수 있습니다.
작업 오류
텍스트 값을 숫자 값으로 곱하는 등 지원되지 않는 작업을 적용하려고 하면 오류가 발생합니다.
예: Sales 열의 값과 연결된 "Total Sales: " 구가 포함된 텍스트 문자열을 만들어 쿼리에 대한 사용자 지정 열을 만들려고 합니다. 연결 작업은 숫자 열이 아닌 텍스트 열만 지원하므로 오류가 발생합니다.
가능한 해결 방법: 이 사용자 지정 열을 만들기 전에 Sales 열의 데이터 형식을 텍스트로 변경합니다.
오류로 표시된 중첩 값
중첩된 구조화된 값(예: 테이블, 목록 또는 레코드)이 포함된 데이터를 사용하는 경우 다음과 같은 오류가 발생할 수 있습니다.
Expression.Error: We cannot return a value of type {value} in this context
Details: In the past we would have returned a text value of {value}, but we now return this error. Please see https://go.microsoft.com/fwlink/?linkid=2099726 for more information.
이러한 오류는 일반적으로 다음 두 가지 이유로 발생합니다.
- 데이터 개인 정보 방화벽이 데이터 원본을 버퍼링하면 중첩된 비 스칼라 값이 자동으로 오류로 변환됩니다.
- 데이터 형식으로
Any
정의된 열에 스칼라가 아닌 값이 포함된 경우 이러한 값은 로드 중에 오류로 보고됩니다(예: Excel의 통합 문서 또는 Power BI Desktop의 데이터 모델).
가능한 솔루션:
- 오류가 포함된 열을 제거하거나 이러한 열에 대해 데이터 형식이 아닌
Any
형식을 설정합니다. - 관련된 데이터 원본의 개인 정보 수준을 버퍼링하지 않고 결합할 수 있는 데이터 원본으로 변경합니다.
- 병합을 수행하기 전에 테이블을 평면화하여 중첩된 구조화된 값(예: 테이블, 레코드 또는 목록)이 포함된 열을 제거합니다.