영어로 읽기

다음을 통해 공유


오류 처리

Excel 및 DAX 언어 IFERROR 의 함수와 마찬가지로 파워 쿼리에는 오류를 테스트하고 catch하는 고유한 구문이 있습니다.

파워 쿼리의 오류 처리에 대한 문서에 멘션 따라 단계 또는 셀 수준에서 오류가 나타날 수 있습니다. 이 문서에서는 고유한 특정 논리에 따라 오류를 catch하고 관리하는 방법에 중점을 둡니다.

참고

이 개념을 설명하기 위해 이 문서에서는 Excel 통합 문서를 데이터 원본으로 사용합니다. 여기에 소개된 개념은 Excel 통합 문서에서 가져온 값뿐만 아니라 파워 쿼리의 모든 값에 적용됩니다.

이 데모의 샘플 데이터 원본은 다음 표가 있는 Excel 통합 문서입니다.

세 가지 오류가 포함된 Excel 통합 문서의 샘플 데이터 스크린샷

Excel 통합 문서의 이 표에는 표준 속도 열에 #NULL!, #REF!, #DIV/0! 등의 Excel 오류가 있습니다. 이 테이블을 파워 쿼리 편집기로 가져올 때 다음 이미지는 모양을 보여줍니다.

파워 쿼리에 로드된 샘플 테이블의 스크린샷

Excel 통합 문서의 오류가 각 셀의 값과 함께 [Error] 표시되는 방식을 확인합니다.

이 문서에서는 오류를 다른 값으로 바꾸는 방법을 알아봅니다. 또한 오류를 catch하고 고유한 특정 논리에 사용하는 방법도 알아봅니다.

오류를 찾을 때 대체 값 제공

이 경우 표준 속도 열의 값을 사용하는 샘플 데이터 원본에 새 최종 속도 열을 만드는 것이 목표입니다. 오류가 있는 경우 해당 특수 속도 열의 값을 사용합니다.

새 사용자 지정 열을 만들려면 열 추가 메뉴로 이동하여 사용자 지정 열을 선택합니다. 사용자 지정 열 창에서 수식을 try [Standard Rate] otherwise [Special Rate]입력합니다. 이 새 열 의 최종 속도 이름을 지정합니다.

사용자 지정 열 대화 상자가 열리고 사용자 지정 열에 수식이 입력된 스크린샷

이 수식은 표준 속도 열을 평가하려고 시도하고 오류가 없는 경우 해당 값을 출력합니다. 표준 속도 열에서 오류가 발견되면 출력은 문 다음에 otherwise 정의된 값이며, 이 경우 특수 속도 열입니다.

테이블의 모든 열에 올바른 데이터 형식을 추가한 후 다음 이미지는 최종 테이블의 모양을 보여 줍니다.

표준 속도 오류가 최종 속도 열의 특수 비율로 대체된 테이블의 스크린샷.

참고

다른 방법으로 이전 수식과 동일하지만 매개 변수가 필요하지 않은 함수와 함께 catch 키워드(keyword) 사용하여 수식을 try [Standard Rate] catch ()=> [Special Rate]입력할 수도 있습니다.

catch 키워드(keyword) 2022년 5월에 파워 쿼리에 도입되었습니다.

사용자 고유의 조건부 오류 논리 제공

이전 섹션과 동일한 샘플 데이터 원본을 사용하여 최종 속도에 대한 새 열을 만드는 것이 새로운 목표입니다. 표준 속도의 값이 있는 경우 해당 값이 사용됩니다. 그렇지 않으면 오류가 있는 행을 제외하고 특수 속도 열의 값이 #REF! 사용됩니다.

참고

오류를 제외하는 #REF! 유일한 목적은 데모용입니다. 이 문서에 소개된 개념을 사용하여 오류 레코드에서 선택한 모든 필드를 대상으로 지정할 수 있습니다.

오류 값 옆에 있는 공백을 선택하면 화면 아래쪽에 세부 정보 창이 표시됩니다. 세부 정보 창에는 오류 이유 DataFormat.Error와 오류 메시지가 Invalid cell value '#REF!'모두 포함됩니다.

대화 상자 아래쪽에 오류 메시지가 있는 선택한 오류의 스크린샷

한 번에 하나의 셀만 선택할 수 있으므로 한 번에 하나의 오류 값의 오류 구성 요소만 효과적으로 검사할 수 있습니다. 이 시점에서 새 사용자 지정 열을 만들고 식을 사용합니다 try .

사용자 지정 논리와 함께 사용 try

새 사용자 지정 열을 만들려면 열 추가 메뉴로 이동하여 사용자 지정 열을 선택합니다. 사용자 지정 열 창에서 수식을 try [Standard Rate]입력합니다. 이 새 열 의 이름을 모든 오류로 지정합니다.

사용자 지정 열 대화 상자가 열리고 사용자 지정 열에 입력된 try 수식이 있는 스크린샷

식은 try 값과 오류를 식이 오류를 처리했는지 여부 try 와 적절한 값 또는 오류 레코드를 나타내는 레코드 값으로 변환합니다.

모든 오류 열이 추가되고 오류가 레코드로 표시된 테이블의 스크린샷

새로 만든 이 열을 레코드 값으로 확장하고 열 머리글 옆에 있는 아이콘을 선택하여 확장할 사용 가능한 필드를 확인할 수 있습니다.

확장 아이콘이 강조 표시되고 HasError, 값 및 오류 상자가 선택된 모든 오류 열의 스크린샷

이 작업은 세 개의 새 필드를 노출합니다.

  • 모든 Errors.HasError - 표준 속도 열의 값에 오류가 있는지 여부를 표시합니다.
  • 모든 Errors.Value - 표준 속도 열의 값에 오류가 없으면 이 열에 표준 속도 열의 값이 표시됩니다. 오류가 있는 값의 경우 이 필드를 사용할 수 없으며 확장 작업 중에는 이 열에 값이 있습니다 null .
  • 모든 Errors.Error - 표준 속도 열의 값에 오류가 있는 경우 이 열은 표준 속도 열의 값에 대한 오류 레코드를 표시합니다. 오류가 없는 값의 경우 이 필드를 사용할 수 없으며 확장 작업 중에는 이 열에 값이 있습니다 null .

하나의 All.Errors.Error 값이 선택되어 있고 테이블 아래에 오류 메시지가 표시된 열에 새 필드가 있는 테이블의 스크린샷

추가 조사를 위해 All Errors.Error 열을 확장하여 오류 레코드의 세 가지 구성 요소를 가져올 수 있습니다.

  • 오류 원인
  • 오류 메시지
  • 오류 세부 정보

확장 작업을 수행한 후 모든 Errors.Error.Message 필드에는 각 셀에 있는 Excel 오류를 정확히 알려주는 특정 오류 메시지가 표시됩니다. 오류 메시지는 오류 레코드의 오류 메시지 필드에서 파생됩니다.

특정 오류 메시지가 표시된 스크린샷.

이제 새 열에 각 오류 메시지가 표시되면 최종 속도라는 이름과 다음 절을 사용하여 새 조건부 열을 만들 수 있습니다.

  • All Errors.Errors.Message 열의 값이 같null으면 출력은 표준 속도 열의 값입니다.
  • 그렇지 않은 경우 모든 Errors.Errors.Message 열의 값이 같지 Invalid cell value '#REF!'.않으면 출력은 특수 속도 열의 값입니다.
  • 그렇지 않으면 null입니다.

새 열에 대해 설정된 모든 오류 조건이 있는 조건부 열 추가 대화 상자의 스크린샷

계정, 표준 속도, 특별 속도최종 속도 열만 유지하고 각 열에 대해 올바른 데이터 형식을 추가한 후 다음 이미지는 최종 테이블의 모양을 보여 줍니다.

적절한 데이터 형식의 재기본 열이 있는 최종 테이블의 스크린샷

사용자 지정 논리 사용 trycatch 사용

또는 키워드(keyword) 사용하여 try catch 새 사용자 지정 열을 만들 수도 있습니다.

try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null

try 및 catch 구문 접근 방식을 보여주는 새 수식이 있는 사용자 지정 열 대화 상자입니다.

추가 리소스