Share via


FILTER를 필터 인수로 사용하지 마세요.

데이터 모델러는 일반적으로 수정된 필터 컨텍스트에서 평가해야 하는 DAX 식을 작성합니다. 예를 들어 측정값 정의를 작성하여 "고마진 제품"의 매출을 계산할 수 있습니다. 이 계산은 이 문서의 뒷부분에서 설명합니다.

참고 항목

이 문서는 가져오기 테이블에 필터를 적용하는 모델 계산과 특히 관련이 있습니다.

CALCULATECALCULATETABLE DAX 함수는 중요하고 유용한 함수입니다. 필터를 제거하거나 추가하는 계산을 작성하거나 관계 경로를 수정할 수 있습니다. 부울 식, 테이블 식 또는 특수 필터 함수인 필터 인수를 전달하여 수행됩니다. 이 문서에서는 부울 및 테이블 식에 대해서만 설명합니다.

테이블 식을 사용하여 빨간색 제품 판매를 계산하는 다음 측정값 정의를 고려합니다. Product 테이블에 적용할 수 있는 모든 필터를 대체합니다.

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

CALCULATE 함수는 PRODUCT 테이블의 각 행대한 필터 식을 평가하는 FILTER DAX 함수에서 반환된 테이블 식을 허용합니다. 올바른 결과( 빨간색 제품에 대한 판매 결과)를 달성합니다. 그러나 부울 식을 사용하여 훨씬 더 효율적으로 달성할 수 있습니다.

다음은 테이블 식 대신 부울 식을 사용하는 향상된 측정값 정의입니다. KEEPFILTERS DAX 함수는 열에 적용된 기존 필터가 덮어쓰여지지 않고 유지되도록 합니다.

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

가능하면 필터 인수를 부울 식으로 전달하는 것이 좋습니다. 가져오기 모델 테이블이 메모리 내 열 저장소이기 때문입니다. 이러한 방식으로 열을 효율적으로 필터링하도록 명시적으로 최적화됩니다.

그러나 부울 식이 필터 인수로 사용될 때 적용되는 제한 사항이 있습니다. 제한은 다음과 같습니다.

  • 여러 테이블의 열을 참조할 수 없습니다.
  • 측정값을 참조할 수 없음
  • 중첩된 CALCULATE 함수를 사용할 수 없음
  • 테이블을 검색하거나 반환하는 함수를 사용할 수 없음

즉, 더 복잡한 필터 요구 사항에 대해 테이블 식을 사용해야 합니다.

이제 다른 측정값 정의를 고려합니다. 요구 사항은 수익을 달성한 월에 대해서만 판매를 계산하는 것입니다.

Sales for Profitable Months =
CALCULATE(
    [Sales],
    FILTER(
        VALUES('Date'[Month]),
        [Profit] > 0)
    )
)

이 예제에서는 FILTER 함수를 사용해야 합니다. 수익을 달성하지 못한 달을 제거하기 위해 이익 측정값을 평가해야 하기 때문입니다. 필터 인수로 사용되는 경우 부울 식에서 측정값을 사용할 수 없습니다.

권장 사항

최상의 성능을 위해 가능한 한 부울 식을 필터 인수로 사용하는 것이 좋습니다.

따라서 FILTER 함수는 필요한 경우에만 사용해야 합니다. 이를 사용하여 복잡한 열 비교를 필터링할 수 있습니다. 이러한 열 비교에는 다음이 포함될 수 있습니다.

  • 측정값 그룹
  • 기타 열
  • OR DAX 함수 또는 OR 논리 연산자 사용(||)