다음을 통해 공유


오류 함수의 적절한 사용

데이터 모델러로서 평가 시간 오류를 발생시키는 DAX 식을 작성할 때 두 가지 유용한 DAX 함수를 사용하는 것이 좋습니다.

  • 단일 식을 사용하고 해당 식에서 오류가 발생하는 경우 ISERROR 반환하는 TRUE 함수입니다.
  • 두 식을 사용하는 IFERROR 함수입니다. 첫 번째 식에서 오류가 발생하면 두 번째 식의 값이 반환됩니다. 실제로 ISERROR 함수 내에 IF 함수를 중첩하는 보다 최적화된 구현입니다.

그러나 이러한 함수는 유용할 수 있으며 이해하기 쉬운 식을 작성하는 데 기여할 수 있지만 계산 성능을 크게 저하시킬 수도 있습니다. 이러한 함수는 필요한 스토리지 엔진 검색 수를 늘리기 때문에 발생할 수 있습니다.

대부분의 평가 시간 오류는 예기치 않은 BLANK 또는 0 값 또는 잘못된 데이터 형식 변환으로 인해 발생합니다.

권장 사항

ISERROR 및 IFERROR 함수를 사용하지 않는 것이 좋습니다. 대신 모델을 개발하고 식을 작성할 때 방어 전략을 적용합니다. 전략에는 다음이 포함될 수 있습니다.

  • 품질 데이터가 모델에 로드되었는지 확인: 파워 쿼리 변환을 사용하여 유효하지 않거나 누락된 값을 제거하거나 대체하고 올바른 데이터 형식을 설정합니다. 파워 쿼리 변환을 사용하여 잘못된 데이터 변환과 같은 오류가 발생할 때 행을 필터링할 수도 있습니다.

    모델 열 Is Nullable 속성을 비허용으로 설정하여 데이터 품질을 제어할 수도 있습니다. 그러면 공백이 발생할 경우 데이터 새로 고침이 실패하게 됩니다. 이 오류가 발생하면 성공적인 새로 고침의 결과로 로드된 데이터가 테이블에 유지됩니다.

  • IF 함수 사용:IF 함수 논리 테스트 식은 오류 결과가 발생할지 여부를 결정할 수 있습니다. ISERROR 및 IFERROR 함수와 마찬가지로 이 함수는 추가 스토리지 엔진 검색을 발생시킬 수 있지만 오류가 발생하지 않을 경우 보다 성능이 향상될 수 있습니다.

  • 오류 내성 함수 사용: 일부 DAX 함수는 오류 조건을 테스트하고 보정합니다. 이러한 함수를 사용하면 대신 반환될 대체 결과를 입력할 수 있습니다. DIVIDE 함수는 이러한 예제 중 하나입니다. 이 함수에 대한 추가 지침은 DAX: DIVIDE 함수 및 나누기 연산자(/) 문서를 참조하세요.

본보기

다음 수식은 오류가 발생하는지 여부를 테스트합니다. 이 경우에는 BLANK를 반환합니다(거짓일 경우의 값을 IF 함수에 제공하지 않는 경우).

Profit Margin
= IF(ISERROR([Profit] / [Sales]))

이 측정값 식의 다음 버전은 IFERROR 및 IF 함수 대신 ISERROR 함수를 사용하여 개선되었습니다.

Profit Margin
= IFERROR([Profit] / [Sales], BLANK())

그러나 이 측정값 식의 최종 버전은 동일한 결과를 달성하지만 더 효율적이고 우아하게 수행됩니다.

Profit Margin
= DIVIDE([Profit], [Sales])