필터 컨텍스트 수정

완료됨

CALCULATE DAX 함수를 사용하여 수식의 필터 컨텍스트를 수정할 수 있습니다. CALCULATE 함수에 대한 구문은 다음과 같습니다.

CALCULATE(<expression>, [[<filter1>], <filter2>]…)

이 함수에는 스칼라 값을 반환하는 식과 필터를 필요한 만큼 전달해야 합니다. 식은 측정값(명명된 식)이거나 필터 컨텍스트에서 평가할 수 있는 식일 수 있습니다.

필터는 부울 식 또는 테이블 식일 수 있습니다. 또한 필터 컨텍스트를 수정할 때 추가 제어를 제공하는 필터 수정 함수를 전달할 수 있습니다.

필터가 여러 개 있는 경우 AND 논리 연산자를 사용하여 평가됩니다. 즉, 모든 조건이 동시에 TRUE여야 합니다.

참고

CALCULATETABLE DAX 함수는 테이블 개체를 반환하는 식에 적용되는 필터 컨텍스트를 수정한다는 점을 제외하고 CALCULATE 함수와 정확히 동일한 기능을 수행합니다. 이 모듈에서는 설명 및 예제에서 CALCULATE 함수를 사용하지만 이러한 시나리오는 CALCULATETABLE 함수에도 적용될 수 있습니다.

부울 식 필터 적용

부울 식 필터는 TRUE 또는 FALSE로 평가되는 식입니다. 부울 필터는 다음 규칙을 준수해야 합니다.

  • 단일 열만 참조할 수 있습니다.
  • 측정값을 참조할 수 없습니다.
  • SUM과 같은 집계 함수를 포함하는 테이블을 검색하거나 반환하는 함수를 사용할 수 없습니다.

이 예제에서는 측정값을 만듭니다. 먼저 Adventure Works DW 2020 M06.pbix 파일을 다운로드하여 엽니다. 그리고 다음 측정값을 레드 제품에 부울 식 필터를 사용하여 Revenue 측정값을 필터링하는 Sales 테이블에 추가합니다.

Revenue Red = CALCULATE([Revenue], 'Product'[Color] = "Red")

보고서의 Page 1에 있는 테이블 시각적 개체에 Revenue Red 측정값을 추가합니다.

이미지는 다음의 세 개의 열이 있는 테이블을 보여 줍니다. Region, Revenue 및 Revenue Red. 테이블에 10개의 행과 합계가 표시되어 있습니다.

다음 예제에서 다음 측정값은 여러 컬러를 기준으로 Revenue를 필터링합니다. IN 연산자 다음에 컬러 값 목록이 사용되고 있습니다.

Revenue Red or Blue = CALCULATE([Revenue], 'Product'[Color] IN {"Red", "Blue"})

다음 측정값은 고가 제품을 기준으로 Revenue를 필터링합니다. 고가 제품은 USD 1000보다 높은 가격의 제품입니다.

Revenue Expensive Products = CALCULATE([Revenue], 'Product'[List Price] > 1000)

테이블 식 필터 적용

테이블 식 필터는 테이블 개체를 필터로 적용합니다. 이 필터는 모델 테이블에 대한 참조일 수도 있지만, 이는 테이블 개체를 반환하는 DAX 함수일 가능성이 있습니다.

일반적으로 FILTER DAX 함수를 사용하여 부울 필터 식으로 정의할 수 없는 필터 조건을 포함하여 복잡한 필터 조건을 적용합니다. FILTER 함수는 반복기 함수로 분류되므로, 테이블 또는 테이블 식 그리고 해당 테이블의 각 행에 대해 평가될 식을 전달합니다.

FILTER 함수는 테이블이 전달한 것과 정확히 동일한 구조를 사용하여 테이블 개체를 반환합니다. 해당 행은 전달된 행의 하위 집합입니다. 즉, 식이 TRUE로 평가되는 행입니다.

다음 예제에서는 FILTER 함수를 사용하는 테이블 필터 식을 보여 줍니다.

Revenue High Margin Products =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[List Price] > 'Product'[Standard Cost] * 2
    )
)

이 예제에서 FILTER 함수는 필터 컨텍스트에 있는 Product 테이블의 모든 행을 필터링합니다. 제품 정가가 표준 원가의 두 배를 초과하는 제품의 각 행이 필터링된 테이블의 행으로 표시됩니다. 따라서 Revenue 측정값은 FILTER 함수에서 반환되는 모든 제품에 대해 평가됩니다.

CALCULATE 함수에 전달되는 모든 필터 식은 테이블 필터 식입니다. 부울 필터 식은 쓰기 및 읽기 환경을 향상시키기 위한 약식 표기법입니다. 내부적으로 Microsoft Power BI는 부울 필터 식을 테이블 필터 식으로 변환합니다. 이는 Revenue Red 측정값 정의를 변환하는 방식입니다.

Revenue Red =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[Color] = "Red"
    )
)

필터 동작

CALCULATE 함수에 필터 식을 추가하면 다음과 같은 두 가지 표준 결과가 나타날 수 있습니다.

  • 열(또는 테이블)이 필터 컨텍스트에 없으면 CALCULATE 식을 평가하기 위해 새 필터가 필터 컨텍스트에 추가됩니다.
  • 열(또는 테이블)이 이미 필터 컨텍스트에 있는 경우 새 필터를 기존 필터에 덮어쓰고 CALCULATE 식을 평가합니다.

다음 예제에서는 CALCULATE 함수에 필터 식을 추가하는 방법을 보여 줍니다.

참고

각 예제에서 테이블 시각적 개체에 필터가 적용되지 않습니다.

이전 활동에서와 같이 Revenue Red 측정값이 지역별로 그룹화되고 수익을 표시하는 테이블 시각적 개체에 추가되었습니다.

이미지는 다음의 세 개의 열이 있는 테이블을 보여 줍니다. Region, Revenue 및 Revenue Red. 테이블에 10개의 행과 합계가 표시되어 있습니다.

Product 테이블의 Color 열에 필터가 적용되지 않기 때문에 측정값을 평가할 때 새 필터가 필터 컨텍스트에 추가됩니다. 첫 번째 행에서 값 $2,681,324.79는 오스트레일리아 지역에서 판매된 레드 제품에 대한 값입니다.

테이블 시각적 개체의 첫 번째 열을 Region에서 Color로 전환하면 다른 결과가 생성됩니다. 이제 Product 테이블의 Color 열이 필터 컨텍스트에 있기 때문입니다.

이미지는 다음의 세 개의 열이 있는 테이블을 보여 줍니다. Color, Revenue 및 Revenue Red. 테이블에 10개의 행과 합계가 표시되어 있습니다. Revenue Red 값은 각 행이 동일합니다.

Revenue Red 측정값 수식은 Product 테이블에서 Color 열에 대한 필터(레드)를 추가하여 Revenue 측정값을 평가합니다. 따라서 컬러를 기준으로 그룹화되는 이 시각적 개체에서 측정값 수식은 새 필터를 필터 컨텍스트에 덮어씁니다.

이 결과는 원하는 대로 표시될 수도 있고 그렇지 않을 수도 있습니다. 다음 단원에서는 필터를 덮어쓰는 것이 아니라 필터를 유지하는 데 사용할 수 있는 필터 수정 함수인 KEEPFILTERS DAX 함수를 소개합니다.