컨텍스트 전환 수행

완료됨

행 컨텍스트 내에서 측정값 또는 측정값 표현식이 평가되면 무슨 일이 일어날까요? 이 시나리오는 계산된 열 수식에서 발생할 수도 있고 반복자 함수의 식이 평가될 때도 발생할 수 있습니다.

다음 예에서는 Customer 테이블에 계산된 열을 추가하여 고객을 충성도 등급으로 분류합니다. 시나리오는 간단합니다. 고객이 창출한 수익이 $2500보다 적으면 해당 고객은 낮음으로 분류됩니다. 그렇지 않으면 높음으로 분류됩니다.

Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

보고서의 4페이지에 고객 세그먼트 열을 파이 차트의 범례로 추가합니다.

단 하나의 고객 세그먼트 값만 존재한다는 점에 유의하세요. 그 이유는 계산된 열 수식이 잘못된 결과를 생성하기 때문입니다. 각 고객에게 High 값이 할당되는 이유는 표현식이 필터 컨텍스트에서 평가되지 않기 때문입니다. SUM(Sales[Sales Amount]) 따라서 각 고객은 판매표의 판매 금액 열 값의 합계에 따라 평가됩니다.

각 고객에 대한 SUM(Sales[Sales Amount]) 표현식 평가를 강제로 실행하려면 행 컨텍스트 열 값을 필터 컨텍스트에 적용하는 컨텍스트 전환이 이루어져야 합니다. 필터 표현식을 전달하지 않고도 CALCULATE 함수를 사용하여 이러한 전환을 달성할 수 있습니다.

계산된 열 정의를 수정하여 올바른 결과가 생성되도록 합니다.

Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

원형 차트 시각화에서 새로 계산된 열을 범례에 추가하고 이제 두 개의 원형 세그먼트가 표시되는지 확인합니다.

이 경우, CALCULATE 함수는 컨텍스트 전환이라고 하는 필터로 행 컨텍스트 값을 적용합니다. 정확하게 말해서, 테이블에 고유한 열이 있는 경우에는 그 과정이 그렇게 작동하지 않습니다. 테이블에 고유한 열이 있는 경우 해당 열에 필터만 적용하면 전환이 이루어집니다. 이 경우, Power BI 행 컨텍스트의 값에 대한 CustomerKey 열에 필터를 적용합니다.

행 컨텍스트에서 평가되는 표현식에서 측정값을 참조하는 경우 컨텍스트 전환은 자동으로 이루어집니다. 따라서 CALCULATE 함수에 측정 참조를 전달할 필요가 없습니다.

수익 측정값을 참조하는 계산된 열 정의를 수정하면 계속해서 올바른 결과가 생성되는 것을 확인할 수 있습니다.

Customer Segment = 
VAR CustomerRevenue = [Revenue]
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

이제 판매 수수료 측정 공식을 완성할 수 있습니다. 합계를 산출하려면 반복자 함수를 사용하여 필터 컨텍스트 내의 모든 지역을 반복해야 합니다. 반복자 함수 표현식은 CALCULATE 함수를 사용하여 행 컨텍스트를 필터 컨텍스트로 전환해야 합니다. 단일 국가로 필터링하는 것으로 알려져 있기 때문에(필터 컨텍스트에서 지역을 반복하고 있으며 지역이 한 국가에만 속하기 때문에) 더 이상 판매 지역 테이블의 단일 국가 열 값이 필터 컨텍스트에 있는지 테스트할 필요가 없습니다.

보고서의 페이지 3 으로 전환한 다음 판매 수수료 측정값 정의를 수정하여 SUMX 반복자 함수를 사용합니다.

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

이제 표 시각적 요소에 모든 지역의 판매 수수료 총액이 표시됩니다.