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" 는 식을 평가할 때 적용되는 필터입니다.