다음을 통해 공유


KEEPFILTERS

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

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

통사론

KEEPFILTERS(<expression>)

매개 변수

학기 정의
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에 대해 평가되면 다음 결과를 가져옵니다.

[$$ in WA] $ 2,467,248.34
[$$ in WA and 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]의 외부 필터를 재정의하고 필터가 동일한 열에 적용되므로 자체 필터 인수를 대체한다는 것입니다.

다음으로 식을 검사하고 [$$ in WA !!]. 인수 필터에는 오리건이 포함되고 외부 CALCULATE 식에는 워싱턴과 브리티시 컬럼비아의 필터가 포함되어 있기 때문에 이 수식이 워싱턴의 판매 가치를 어떻게 반환할 수 있는지 궁금할 수 있습니다. 대답은 KEEPFILTERSCALCULATE 기본 동작을 수정하고 추가 필터를 추가한다는 것입니다. 필터의 교집합이 사용되므로 이제 외부 필터 '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 함수