Share via


값 대신 SELECTEDVALUE 사용

데이터 모델러로서 열이 특정 값으로 필터링되는지 여부를 테스트하는 DAX 식을 작성해야 하는 경우가 있습니다.

이전 버전의 DAX에서는 세 가지 DAX 함수가 포함된 패턴을 사용하여 이 요구 사항을 안전하게 달성했습니다. IF, HASONEVALUEVALUES. 다음 측정값 정의는 예제를 제공합니다. 그것은 판매세 금액을 계산하지만, 호주 고객에게 만든 판매에 대해서만.

Australian Sales Tax =
IF(
    HASONEVALUE(Customer[Country-Region]),
    IF(
        VALUES(Customer[Country-Region]) = "Australia",
        [Sales] * 0.10
    )
)

이 예제에서 HASONEVALUE 함수는 현재 필터 컨텍스트에서 Country-Region 열의 단일 값이 표시되는 경우에만 TRUE를 반환합니다. TRUE이면 VALUES 함수가 리터럴 텍스트 "Australia"에 비교됩니다. VALUES 함수가 TRUE 를 반환하면 Sales 측정값에 0.10(10%)을 곱합니다. 두 개 이상의 값이 열을 필터링하기 때문에 HASONEVALUE 함수가 FALSE를 반환하는 경우 첫 번째 IF 함수는 BLANK를 반환합니다.

HASONEVALUE의 사용은 방어 기술입니다. 여러 값이 국가-지역 열을 필터링할 수 있기 때문에 필요합니다. 이 경우 VALUES 함수는 여러 행의 테이블을 반환합니다. 여러 행의 테이블을 스칼라 값과 비교하면 오류가 발생합니다.

추천

SELECTEDVALUE 함수를 사용하는 것이 좋습니다. 이 문서에서 설명하는 패턴과 동일한 결과를 얻을 수 있지만 더 효율적이고 우아하게 수행됩니다.

SELECTEDVALUE 함수를 사용하여 이제 측정값 정의 예제를 다시 작성합니다.

Australian Sales Tax =
IF(
    SELECTEDVALUE(Customer[Country-Region]) = "Australia",
    [Sales] * 0.10
)

SELECTEDVALUE 함수에 대체 결과 값을 전달할 수 있습니다. 필터 또는 여러 필터가 열에 적용되지 않을 때 대체 결과 값이 반환됩니다.