다음을 통해 공유


KEEPFILTERS

적용 대상: 계산 열 계산 테이블 측정 시각적 계산

CALCULATE 또는 CALCULATETABLE 함수를 평가하는 동안 필터가 적용되는 방식을 수정합니다.

구문

KEEPFILTERS(<expression>)  

매개 변수

용어 정의
임의의 식입니다.

반환 값

값의 테이블입니다.

설명

  • CALCULATE 및 CALCULATETABLE 함수 컨텍스트 내에서 KEEPFILTERS를 사용하여 해당 함수의 표준 동작을 재정의합니다.

  • 기본적으로 CALCULATE 같은 함수의 필터 인수는 식을 계산하기 위한 컨텍스트로 사용되며, 이에 따라 CALCULATE의 필터 인수가 동일한 열에 대한 기존 필터를 모두 대체합니다. CALCULATE에 대한 필터 인수의 영향을 받는 새 컨텍스트는 필터 인수의 일부로 언급된 열의 기존 필터에만 영향을 줍니다. CALCULATE 또는 기타 관련 함수의 인수에 언급된 열 이외의 열에 대한 필터는 여전히 유효하고 변경되지 않습니다.

  • KEEPFILTERS 함수를 사용하면 이 동작을 수정할 수 있습니다. KEEPFILTERS를 사용하는 경우 현재 컨텍스트의 모든 기존 필터가 필터 인수의 열과 비교되고 이러한 인수의 교집합은 식을 평가하기 위한 컨텍스트로 사용됩니다. 한 열에 대한 순 효과는 CALCULATE에 사용되는 필터 인수와 KEEPFILTER 함수의 인수에 있는 필터 둘 다 인수 집합이 모두 적용된다는 것입니다. 즉, CALCULATE 필터는 현재 컨텍스트를 대체하는 반면 KEEPFILTERS는 현재 컨텍스트에 필터를 추가합니다.

  • 이 함수는 계산 열 또는 RLS(행 수준 보안) 규칙에서 사용되는 경우 DirectQuery 모드에서 사용할 수 없습니다.

예시

다음 예제에서는 CALCULATE 또는 CALCULATETABLE 수식의 일부로 KEEPFILTERS 함수를 사용하는 방법을 보여 주는 몇 가지 일반적인 시나리오를 안내합니다.

처음 세 식은 비교에 사용할 간단한 데이터를 가져옵니다.

  • 워싱턴 주에 대한 인터넷 판매.

  • 워싱턴 주와 오리건 주에 대한 인터넷 판매(두 주 모두 결합).

  • 워싱턴 주와 브리티시 컬럼비아 주에 대한 인터넷 판매(두 지역 모두 결합).

네 번째 식은 워싱턴과 오리건의 인터넷 판매를 계산하고 워싱턴과 브리티시 컬럼비아에 대한 필터가 적용됩니다.

다음 식은 워싱턴 및 오리건의 Internet Sales를 계산하지만 KEEPFILTERS를 사용합니다. 워싱턴과 브리티시 컬럼비아에 대한 필터는 이전 컨텍스트의 일부입니다.

EVALUATE ROW(  
  "$$ in WA"  
    , CALCULATE('Internet Sales'[Internet Total Sales]  
                , 'Geography'[State Province Code]="WA"  
      )  
, "$$ in WA and OR"  
    , CALCULATE('Internet Sales'[Internet Total Sales]  
               , 'Geography'[State Province Code]="WA"   
                 || 'Geography'[State Province Code]="OR"  
      )  
, "$$ in WA and BC"  
    , CALCULATE('Internet Sales'[Internet Total Sales]  
               , 'Geography'[State Province Code]="WA"   
                 || 'Geography'[State Province Code]="BC"  
      )  
, "$$ in WA and OR ??"  
    , CALCULATE(  
          CALCULATE('Internet Sales'[Internet Total Sales]  
                    ,'Geography'[State Province Code]="WA"   
                      || 'Geography'[State Province Code]="OR"  
          )  
          , 'Geography'[State Province Code]="WA"   
            || 'Geography'[State Province Code]="BC"  
      )  
, "$$ in WA !!"  
    , CALCULATE(  
          CALCULATE('Internet Sales'[Internet Total Sales]  
                   , KEEPFILTERS('Geography'[State Province Code]="WA"   
                              || 'Geography'[State Province Code]="OR"  
                     )  
          )  
          , 'Geography'[State Province Code]="WA"   
            || 'Geography'[State Province Code]="BC"  
      )  
)  

이 식이 샘플 데이터베이스 AdventureWorks DW에 대해 평가되면 다음 결과를 가져옵니다.

Column
[$$ in WA] $ 2,467,248.34
[WA 및 OR의 $$ ] $ 3,638,239.88
[$$ in WA and BC] $ 4,422,588.44
[$$ in WA and OR ??] $ 3,638,239.88
[$$ in WA !!] $ 2,467,248.34

참고 항목

위의 결과는 교육용으로 단일 행 대신 표에 서식이 지정되었습니다.

먼저 식을 검사합니다. [$$ in WA and OR ??]. 외부 CALCULATE 식에 워싱턴 및 브리티시 컬럼비아에 대한 필터가 포함되어 있으므로 이 수식이 워싱턴과 오리건에서 판매 값을 반환하는 방법을 궁금해할 수 있습니다. 대답은 CALCULATE의 기본 동작이 'Geography'[State Province Code]의 외부 필터를 재정의하고 필터가 동일한 열에 적용되므로 자체 필터 인수를 대체한다는 것입니다.

다음으로, 식 [WA !!의 $$]을 검사합니다. 인수 필터에 오리건이 포함되고 외부 CALCULATE 식에 워싱턴과 브리티시 컬럼비아의 필터가 포함되어 있기 때문에 이 수식이 워싱턴의 판매 값을 어떻게 반환할 수 있는지 궁금할 수 있습니다. 정답은 KEEPFILTERS가 CALCULATE의 기본 동작을 수정하고 추가 필터를 추가한다는 것입니다. 필터의 교집합이 사용되므로 이제 외부 필터 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") 가 필터 인수 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR",. 두 필터가 모두 동일한 열에 적용되므로 결과 필터 'Geography'[State Province Code]="WA" 는 식을 평가할 때 적용되는 필터입니다.

필터 함수
CALCULATE 함수
CALCULATETABLE 함수