다음을 통해 공유


CALCULATE

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

수정된 filter 컨텍스트에서 식을 평가합니다.

메모

CALCULATETABLE 함수도 있습니다. except반환하는 식에 적용된 filter 컨텍스트 수정할 정확히 동일한 기능을 수행합니다.

통사론

CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])

매개 변수

학기 정의
expression 평가할 식입니다.
filter1, filter2,… (선택 사항) 부울 식은 or, filtersor 한정자 함수를 정의하는 테이블 식을 filter.

first 매개 변수로 사용되는 식은 기본적으로 measure동일합니다.

Filters 수 있습니다.

  • 부울 filter 식
  • 테이블 filter 식
  • 수정 함수 Filter

여러 filters있는 경우 AND(&&) 논리 연산자사용하여 평가할 수 있습니다. 즉, all 조건은 TRUE, or(OR) 논리 연산자가 || 두 조건 중 하나가 true수 있음을 의미합니다.

부울 filter 식

부울 식 filterTRUEorFALSE계산되는 식입니다. 준수해야 하는 몇 가지 규칙이 있습니다.

  • 단일 테이블의 열을 참조할 수 있습니다.
  • 측정값을 참조할 수 없습니다.
  • 중첩된 CALCULATE 함수를 사용할 수 없습니다.

Power BI Desktop의 2021년 9월 릴리스부터 다음이 적용됩니다.

  • 집계 함수에 인수로 전달되지 않는 한 테이블을 반환할 or 검사하는 함수를 사용할 수 없습니다.
  • value 포함할 수 있습니다. 예를 들어
    Total sales on the last selected date =
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
    )
    

테이블 filter 식

테이블 식 filter 테이블 개체를 filter적용합니다. 모델 테이블에 대한 참조일 수 있지만 테이블 개체를 반환하는 함수일 가능성이 높습니다. FILTER 함수를 사용하여 부울 filter 식으로 정의할 수 없는 조건을 포함하여 복잡한 filter 조건을 적용할 수 있습니다.

Filter 한정자 함수

Filter 한정자 함수를 사용하면 단순히 filters추가하는 것 이상을 수행할 수 있습니다. filter 컨텍스트를 수정할 때 추가 제어를 제공합니다.

기능 목적
REMOVEFILTERS 단일 테이블의 all 열에서 filters 테이블의 or 더 많은 열에서 filtersor, orall 제거합니다.
ALL 1, ALLEXCEPT, ALLNOBLANKROW 단일 테이블의 filters 열에서 or 한 or 더 많은 열에서 all 제거합니다.
KEEPFILTERS 동일한 열에서 기존 filter 제거하지 않고 filters 추가합니다.
USERELATIONSHIP related 열 간에 비활성 관계를 적용하면 활성 관계가 자동으로 비활성 상태가 됩니다.
CROSSFILTER 관계를 사용하지 않도록 설정할 filteror 방향(둘 다에서 단일 방향, or 둘 다에서 둘 다로)을 수정합니다.

1 해당 변형을 ALLand 함수는 두 filter 한정자가 모두 테이블 개체를 반환하는 함수로 and 동작합니다. 도구에서 If 함수를 지원하는 REMOVEFILTERSfilters제거하는 데 사용하는 것이 좋습니다.

반환 value

식의 결과인 value.

발언

  • filter 식이 제공되면 CALCULATE 함수는 filter 컨텍스트를 수정하여 식을 evaluate. 각 filter 식에 대해 filter 식이 not 함수에 래핑될 KEEPFILTERS 두 가지 가능한 표준 결과가 있습니다.

    • 열(If 테이블)이 or 컨텍스트에 없는 filterfilters 컨텍스트에 새 filter 추가하여 식을 evaluate.
    • 열(If 테이블)이 이미 or 컨텍스트에 filterfilters 식을 filters 새 evaluate 기존 CALCULATE 덮어씁니다.
  • 없이 사용되는 함수는 특정 요구 사항을 달성합니다. 행 컨텍스트를 filter 컨텍스트로 전환합니다. 모델 데이터를 요약하는 식(모델 notmeasure)을 행 컨텍스트에서 평가해야 하는 경우 필요합니다. 이 시나리오는 반복기 함수의 식이 계산될 때 계산 열 수식 or 발생할 수 있습니다. 모델 measure 행 컨텍스트에서 사용되는 경우 컨텍스트 전환은 자동으로 수행됩니다.

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

예제

다음 Sales 테이블 measure 정의는 수익 결과를 생성하지만 파란색이 있는 제품에 대해서만 생성됩니다.

이 문서의 예제는 sample Adventure Works DW 2020 Power BI Desktop 모델과 함께 사용할 수 있습니다. 모델을 얻으려면 DAXsample 모델참조하세요.

Blue Revenue =
CALCULATE(
    SUM(Sales[Sales Amount]),
    'Product'[Color] = "Blue"
)
범주 판매액 Blue Revenue
액세서리 $1,272,057.89 $165,406.62
자전거 $94,620,526.21 $8,374,313.88
의류 $2,117,613.45 $259,488.37
구성 요소 $11,799,076.66 $803,642.10
Total $109,809,274.20 $9,602,850.97

함수는 수정된 컨텍스트에서 Sales Amount 열을 Sales 테이블의 평가합니다. 색 열을 테이블에 새 추가됩니다. 열에 이미 적용된 모든 덮어씁니다.

다음 Sales 테이블 measure 정의는 all 판매 채널의 매출 대비 매출 비율을 생성합니다.

채널 판매액 수익 % 총 채널
인터넷 $29,358,677.22 26.74%
리셀러 $80,450,596.98 73.26%
Total $109,809,274.20 100.00%
Revenue % Total Channel =
DIVIDE(
    SUM(Sales[Sales Amount]),
    CALCULATE(
        SUM(Sales[Sales Amount]),
        REMOVEFILTERS('Sales Order'[Channel])
    )
)

함수는 컨텍스트에서 Sales Amount 열 Sales 테이블의 합계를 수정된 컨텍스트의 동일한 식으로 나누는 식을 나눕니다. CALCULATE 한정자 함수인 filter 함수를 사용하여 REMOVEFILTERS 컨텍스트를 수정하는 filter 함수입니다. filters 테이블 Channel 열에서 제거합니다.

다음 Customer 테이블 계산 열 정의는 고객을 로열티 클래스로 분류합니다. 매우 간단한 시나리오입니다. 고객이 생성한 수익이 $2500 미만이면 Low로 분류됩니다. 그렇지 않으면 높은.

Customer Segment =
IF(
    CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
    "Low",
    "High"
)

이 예제에서 행 컨텍스트는 filter 컨텍스트로 변환됩니다. 컨텍스트 전환이라고 합니다. ALLEXCEPT 함수는 filters 열 allexcept 테이블 열에서 제거합니다.

Filter 컨텍스트Row 컨텍스트CALCULATETABLE 함수Filter 함수