다음을 통해 공유


수식의 데이터 필터링

수식에 필터를 만들어 계산에서 사용되는 원본 데이터의 값을 제한할 수 있습니다. 이렇게 하려면 테이블을 수식의 입력으로 지정한 다음 필터 식을 정의합니다. 제공하는 필터 식은 데이터를 쿼리하고 원본 데이터의 하위 집합만 반환하는 데 사용됩니다. 필터는 수식 결과를 업데이트할 때마다 데이터의 현재 컨텍스트에 따라 동적으로 적용됩니다. 이 섹션에서는 DAX(Data Analysis Expressions) 수식 내에서 필터를 만드는 방법에 대해 설명합니다.

수식에 사용되는 테이블에서 필터 만들기

수식에서 테이블을 입력으로 사용하는 필터를 적용할 수 있습니다. 테이블 이름을 입력하는 대신 FILTER 함수를 사용하여 지정된 테이블의 행 하위 집합을 정의합니다. 그런 다음 이 하위 집합은 사용자 지정 집계와 같은 작업을 위해 다른 함수로 전달됩니다.

대리점에 대한 주문 정보가 들어 있는 데이터 테이블에서 각 대리점의 판매액을 계산하고자 하는 경우를 예로 들어 보겠습니다. 이때 고가 제품을 여러 개 판매한 대리점에 대해서만 판매액을 표시하려 합니다. DAX 예제 통합 문서를 기반으로 하는 다음 수식에서는 필터를 사용하여 이 계산을 만드는 방법에 대한 한 가지 예를 보여 줍니다.

=SUMX( 
     FILTER ('ResellerSales_USD', 'ResellerSales_USD'[Quantity] > 5 &&
     'ResellerSales_USD'[ProductStandardCost_USD] > 100), 
     'ResellerSales_USD'[SalesAmt]
     )
  • 수식의 첫 번째 부분은 테이블을 인수로 사용하는 PowerPivot 집계 함수 중 하나를 지정합니다. SUMX는 테이블에서 합계를 계산합니다.

  • 수식의 두 번째 부분 FILTER(table, expression)는 SUMX에 사용할 데이터를 알려 줍니다. SUMX에는 테이블 또는 테이블이 되는 식이 필요합니다. 여기서는 테이블의 모든 데이터를 사용하는 대신 FILTER 함수를 통해 사용할 테이블 행을 지정합니다.

    이 필터 식은 두 부분으로 이루어집니다. 첫 번째 부분은 필터를 적용할 테이블을 지정합니다. 두 번째 부분은 필터 조건으로 사용할 식을 정합니다. 이 경우 100달러가 넘는 제품 및 6개 이상을 판매한 대리점을 필터링합니다. && 연산자는 논리곱 AND이며 필터링된 하위 집합에 속하는 행에 대해 두 조건이 모두 참임을 나타냅니다.

  • 수식의 셋째 부분은 SUMX 함수에 합계를 계산할 값을 알려 줍니다. 이 경우에는 판매액만 사용합니다.

테이블을 반환하는 FILTER와 같은 함수는 PowerPivot 통합 문서에 테이블이나 행을 직접 반환하지 않고 항상 다른 함수에 포함됩니다. FILTER 함수 및 필터링에 사용되는 기타 함수에 대한 자세한 내용은 필터 함수(DAX)를 참조하십시오.

[!참고]

필터 식은 해당 필터가 사용되는 컨텍스트의 영향을 받습니다. 예를 들어 측정값에서 필터를 사용하는 경우 측정값이 피벗 테이블이나 피벗 차트에서 사용되고 있으면 사용자가 피벗 테이블에서 적용한 추가 필터나 슬라이서에 따라 반환되는 데이터의 하위 집합이 달라질 수 있습니다. 컨텍스트에 대한 자세한 내용은 DAX 수식의 컨텍스트를 참조하십시오.

중복을 제거하는 필터

특정 값을 필터링하는 것 외에 다른 테이블 또는 열에서 고유한 값 집합을 반환할 수도 있습니다. 이 필터는 열에서 고유 값의 수를 계산하거나 고유한 값 목록을 다른 작업에 사용하려는 경우에 도움이 될 수 있습니다. DAX에서는 고유한 값을 반환하는 두 가지 함수인 DISTINCT 함수VALUES 함수를 제공합니다.

  • DISTINCT 함수는 함수의 인수로 지정하는 단일 열을 검토하고 고유한 값만 포함하는 새 열을 반환합니다.

  • VALUES 함수는 고유한 값의 목록을 반환할 뿐 아니라 알 수 없는 멤버도 반환합니다. 관계로 조인된 두 테이블의 값을 사용할 때 값이 한 테이블에는 없고 다른 테이블에는 있는 경우에 이 함수를 사용할 수 있습니다. 알 수 없는 멤버 처리에 대한 자세한 내용은 DAX 수식의 컨텍스트을 참조하십시오.

이러한 함수는 모두 전체 값 열을 반환합니다. 따라서 함수를 사용하여 다른 함수에 전달되는 값 목록을 얻을 수 있습니다. 예를 들어 다음 수식에서 고유 제품 키를 사용하여 특정 대리점에서 판매한 개별 제품 목록을 얻은 다음 COUNTROWS 함수를 사용하여 해당 목록의 제품 수를 셀 수 있습니다.

=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))

컨텍스트가 필터에 미치는 영향

피벗 테이블 또는 피벗 차트에 DAX 수식을 추가할 때 수식의 결과는 컨텍스트에 따라 달라질 수 있습니다. PowerPivot 테이블에서 작업하고 있는 경우 컨텍스트는 현재 행 및 그 값입니다. 피벗 테이블 또는 피벗 차트에서 작업 중인 경우 컨텍스트는 조각화나 필터링 같은 작업에서 정의된 데이터의 집합 또는 하위 집합을 나타냅니다. 피벗 테이블 또는 피벗 차트의 디자인도 컨텍스트에 영향을 줍니다. 예를 들어 매출액을 지역 및 연도별로 그룹화하는 피벗 테이블을 만드는 경우 이러한 지역 및 연도에 적용되는 데이터만 피벗 테이블에 표시됩니다. 따라서 피벗 테이블에 추가한 측정값은 측정값 수식의 필터와 열 머리글 및 행 머리글의 컨텍스트에서 계산됩니다.

자세한 내용은 DAX 수식의 컨텍스트를 참조하십시오.

필터 제거

복잡한 수식을 사용할 경우 현재 필터가 무엇인지 정확히 알아야 하거나 수식의 필터 부분을 수정해야 할 수도 있습니다. DAX에서는 필터를 제거하고 현재 필터 컨텍스트의 일부로 유지할 열을 제어하는 데 사용할 수 있는 여러 함수를 제공합니다. 이 섹션에서는 이러한 함수가 수식의 결과에 어떤 영향을 주는지에 대해 간략히 설명합니다.

ALL 함수를 사용하여 모든 필터 재정의

ALL 함수를 사용하면 이전에 적용된 모든 필터를 재정의하고 집계 또는 다른 작업을 수행하는 함수에 테이블의 모든 행을 반환할 수 있습니다. 테이블 대신 하나 이상의 열을 ALL,에 대한 인수로 사용할 경우 ALL 함수는 다른 컨텍스트 필터를 무시하고 모든 행을 반환합니다.

[!참고]

관계형 데이터베이스 용어를 잘 알고 있는 경우 ALL 함수를 모든 테이블의 자연 왼쪽 우선 외부 조인을 생성하는 것으로 간주할 수 있습니다.

예를 들어 Sales 및 Products 테이블이 있고 현재 제품의 매출액 합계를 모든 제품의 매출액으로 나눈 값을 계산하는 수식을 만들려고 한다고 가정합니다. 이 수식을 측정값에서 사용하는 경우 피벗 테이블의 사용자가 슬라이서를 사용하여 각 행에 제품 이름을 표시하도록 특정 제품을 필터링할 수 있다는 점을 고려해야 합니다. 따라서 필터나 슬라이서에 관계없이 분모에 대해 true 값을 가져오려면 ALL 함수를 추가하여 필터를 재정의해야 합니다. 다음 수식은 ALL 함수를 사용하여 기존 필터의 효과를 무시하는 방법에 대한 한 가지 예입니다.

=SUM (Sales[Amount])/SUMX(Sales[Amount], FILTER(Sales, ALL(Products)))
  • 수식의 첫 번째 부분 SUM (Sales[Amount])는 분자를 계산합니다.

  • 이러한 합계에서는 현재 컨텍스트를 고려합니다. 즉, 수식을 계산 열에 추가하면 행 컨텍스트가 적용되고 수식을 피벗 테이블에 측정값으로 추가하면 피벗 테이블에 적용된 모든 필터(필터 컨텍스트)가 적용됩니다.

  • 수식의 두 번째 부분에서는 분모를 계산합니다. ALL 함수는 Products 테이블에 적용될 수 있는 모든 필터를 재정의합니다.

예를 포함하여 자세한 내용은 ALL 함수를 참조하십시오.

ALLEXCEPT 함수를 사용한 특정 필터 재정의

ALLEXCEPT 함수도 기존 필터를 재정의합니다. 하지만 이 함수에서는 유지할 기존 필터를 지정할 수 있습니다. ALLEXCEPT 함수의 인수로 지정한 열은 계속 필터링됩니다. 전체 열은 아니지만 대부분의 열에서 필터를 재정의하려면 ALL보다 ALLEXCEPT가 편리합니다. ALLEXCEPT 함수는 여러 다른 열을 필터링하는 피벗 테이블을 만들 때 수식에서 사용되는 값을 제어하려는 경우에 특히 유용합니다. 피벗 테이블에서 ALLEXCEPT를 사용하는 방법에 대한 예를 포함하여 자세한 내용은 ALLEXCEPT 함수를 참조하십시오.

참고 항목

관련 자료

PowerPivot에서 데이터 필터링 및 정렬

필터 함수(DAX)