필터 컨텍스트 검사

완료됨

VALUES DAX 함수를 사용하면 수식이 필터 컨텍스트에 어떤 값이 있는지 확인할 수 있습니다.

VALUES 함수 구문은 다음과 같습니다.

VALUES(<TableNameOrColumnName>)

이 함수에는 테이블 참조 또는 열 참조를 전달해야 합니다. 테이블 참조를 전달하면 이 함수는 필터 컨텍스트에 있는 항목에 대한 행을 포함하는 동일한 열로 구성된 테이블 개체를 반환합니다. 열 참조를 전달하면 이 함수는 필터 컨텍스트에 있는 고유한 값의 단일 열 테이블을 반환합니다.

이 함수는 항상 테이블 개체를 반환하며 테이블에 여러 행이 포함될 수 있습니다. 따라서 특정 값이 필터 컨텍스트에 있는지 테스트하려면 먼저 수식이 VALUES 함수가 단일 행을 반환하는지 테스트해야 합니다. 이 작업을 수행하는 데 도움이 될 수 있는 두 가지 함수는 HASONEVALUESELECTEDVALUE DAX 함수입니다.

HASONEVALUE 함수는 지정된 열 참조가 단일 값으로 필터링되면 TRUE를 반환합니다.

SELECTEDVALUE 함수는 단일 값일 수 있는 항목을 결정하는 작업을 단순화합니다. 열 참조를 전달하면 이 함수는 단일 값을 반환하거나, 필터 컨텍스트에 두 개 이상의 값이 있는 경우 BLANK(또는 함수에 전달하는 대체 값)를 반환합니다.

다음 예제에서는 HASONEVALUE 함수를 사용합니다. 판매 커미션을 계산하는 다음 측정값을 Sales 테이블에 추가합니다. Adventure Works에서 커미션 비율은 미국 이외의 모든 국가/지역에서 수익의 10%입니다. 미국에서는 영업 사원이 15%의 커미션을 받습니다. 측정값을 소수점 이하 두 자리 통화로 서식을 지정한 다음 보고서의 Page 3에 있는 테이블에 추가합니다.

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

이미지는 다음 세 개의 열이 있는 테이블 시각적 개체를 보여 줍니다. Region, Revenue 및 Sales Commission. 10개 지역 행과 합계가 표시되어 있습니다. 총 Sales Commission은 BLANK입니다.

Sales Commission 결과는 BLANK입니다. 그 이유는 Sales Territory 테이블의 Country 열에 대한 필터 컨텍스트에 여러 값이 있기 때문입니다. 이 경우 HASONEVALUE 함수는 FALSE를 반환합니다. 그러면 Revenue 측정값에 BLANK를 곱하게 됩니다(BLANK를 곱한 값은 BLANK). 합계를 생성하려면 이 모듈의 뒷부분에서 설명하는 반복기 함수를 사용해야 합니다.

필터 상태를 테스트하는 데 사용할 수 있는 세 가지 함수는 다음과 같습니다.

  • ISFILTERED - 전달된 열 참조가 직접적으로 필터링되는 경우 TRUE를 반환합니다.
  • ISCROSSFILTERED - 전달된 열 참조가 간접적으로 필터링되는 경우 TRUE를 반환합니다. 같은 테이블 또는 관련 테이블의 다른 열에 적용된 필터가 필터링을 통해 참조 열에 영향을 주는 경우에는 열이 교차 필터링되는 것입니다.
  • ISINSCOPE - 전달된 열 참조가 계층 구조의 수준이면 TRUE를 반환합니다.

보고서의 Page 2로 돌아간 다음, Revenue % Total Country 측정값 정의를 수정하여 Sales Territory 테이블의 Region 열이 범위 내에 있는지 테스트합니다. 범위에 없는 경우 측정 결과는 BLANK여야 합니다.

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    IF(
        ISINSCOPE('Sales Territory'[Region]),
        DIVIDE(
            CurrentRegionRevenue,
            TotalCountryRevenue
        )
    )

이미지는 행에 Group, Country 및 Region 열이 그룹화되고 Revenue, Revenue % Total Region, Revenue % Total Country 및 Revenue % Total Group 요약이 있는 Reseller Revenue라는 행렬 시각적 개체를 보여 줍니다. Revenue % Total Country 요약에 BLANK 값이 있습니다.

행렬 시각적 개체에서 지역이 범위 내에 있는 경우에만 Revenue % Total Country 값이 표시됩니다.