오류 처리
Excel 및 DAX 언어 IFERROR
의 함수와 마찬가지로 파워 쿼리에는 오류를 테스트하고 catch하는 고유한 구문이 있습니다.
파워 쿼리의 오류 처리에 대한 문서에 멘션 따라 단계 또는 셀 수준에서 오류가 나타날 수 있습니다. 이 문서에서는 고유한 특정 논리에 따라 오류를 catch하고 관리하는 방법에 중점을 둡니다.
참고
이 개념을 설명하기 위해 이 문서에서는 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 [Standard Rate]
입력합니다. 이 새 열 의 이름을 모든 오류로 지정합니다.
식은 try
값과 오류를 식이 오류를 처리했는지 여부 try
와 적절한 값 또는 오류 레코드를 나타내는 레코드 값으로 변환합니다.
새로 만든 이 열을 레코드 값으로 확장하고 열 머리글 옆에 있는 아이콘을 선택하여 확장할 사용 가능한 필드를 확인할 수 있습니다.
이 작업은 세 개의 새 필드를 노출합니다.
- 모든 Errors.HasError - 표준 속도 열의 값에 오류가 있는지 여부를 표시합니다.
- 모든 Errors.Value - 표준 속도 열의 값에 오류가 없으면 이 열에 표준 속도 열의 값이 표시됩니다. 오류가 있는 값의 경우 이 필드를 사용할 수 없으며 확장 작업 중에는 이 열에 값이 있습니다
null
. - 모든 Errors.Error - 표준 속도 열의 값에 오류가 있는 경우 이 열은 표준 속도 열의 값에 대한 오류 레코드를 표시합니다. 오류가 없는 값의 경우 이 필드를 사용할 수 없으며 확장 작업 중에는 이 열에 값이 있습니다
null
.
추가 조사를 위해 All Errors.Error 열을 확장하여 오류 레코드의 세 가지 구성 요소를 가져올 수 있습니다.
- 오류 원인
- 오류 메시지
- 오류 세부 정보
확장 작업을 수행한 후 모든 Errors.Error.Message 필드에는 각 셀에 있는 Excel 오류를 정확히 알려주는 특정 오류 메시지가 표시됩니다. 오류 메시지는 오류 레코드의 오류 메시지 필드에서 파생됩니다.
이제 새 열에 각 오류 메시지가 표시되면 최종 속도라는 이름과 다음 절을 사용하여 새 조건부 열을 만들 수 있습니다.
- All Errors.Errors.Message 열의 값이 같
null
으면 출력은 표준 속도 열의 값입니다. - 그렇지 않은 경우 모든 Errors.Errors.Message 열의 값이 같지
Invalid cell value '#REF!'.
않으면 출력은 특수 속도 열의 값입니다. - 그렇지 않으면 null입니다.
계정, 표준 속도, 특별 속도 및 최종 속도 열만 유지하고 각 열에 대해 올바른 데이터 형식을 추가한 후 다음 이미지는 최종 테이블의 모양을 보여 줍니다.
또는 키워드(keyword) 사용하여 try
catch
새 사용자 지정 열을 만들 수도 있습니다.
try [Standard Rate] catch (r)=> if r[Message] <> "Invalid cell value '#REF!'." then [Special Rate] else null