다음을 통해 공유


SWITCH

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

값 목록에 대해 식을 평가하고 가능한 여러 결과 식 중 하나를 반환합니다. 이 함수는 여러 개의 중첩된 IF 문을 사용하지 않도록 하는 데 사용할 수 있습니다.

구문

SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])

매개 변수

용어 정의
expression 식이 여러 번 계산되는 단일 스칼라 값을 반환하는 모든 DAX 식입니다(각 행/컨텍스트에 대해).
value expression결과와 일치시킬 상수 값입니다.
result expression 결과가 해당 value일치하는지 평가할 스칼라 식입니다.
else expression 결과가 value 인수와 일치하지 않는 경우 평가할 스칼라 식입니다.

반환 값

value일치하는 항목이 있으면 해당 result 스칼라 값이 반환됩니다. value일치하는 항목이 없으면 else 값이 반환됩니다. 일치하는 values 없고 else 지정되지 않은 경우 BLANK 반환됩니다.

설명

  • 계산할 expression 상수 값 또는 식일 수 있습니다. 이 함수의 일반적인 용도는 첫 번째 매개 변수를 TRUE설정하는 것입니다. 아래 예제를 참조하세요.
  • 모든 result 식과 else 식은 동일한 데이터 형식이어야 합니다.
  • 조건의 순서가 중요합니다. 한 value 일치하면 해당 result 반환되고 다른 후속 values 평가되지 않습니다. 평가할 가장 제한적인 values 덜 제한적인 values전에 지정해야 합니다. 아래 예제를 참조하세요.

예제

SWITCH 일반적인 용도는 expression 상수 values비교하는 것입니다. 다음 예제에서는 월 이름의 계산 열을 만듭니다.

= SWITCH (
         [Month Number Of Year],
         1, "January",
         2, "February",
         3, "March",
         4, "April",
         5, "May",
         6, "June",
         7, "July",
         8, "August",
         9, "September",
         10, "October",
         11, "November",
         12, "December",
         "Unknown month number"
        )

SWITCH 또 다른 일반적인 용도는 중첩된 여러 IF 문을 바꾸는 것입니다. 이 작업은 다음 예제와 같이 식을 TRUE설정하여 제품의 재주문 지점 및 안전 재고 수준을 비교하여 재고 부족의 잠재적 위험을 식별합니다.

= SWITCH (
        TRUE,
        [Reorder Point] > [Safety Stock Level], "Good: Safety stock level exceeded",
        [Reorder Point] = [Safety Stock Level], "Minimal: Safety stock level met",
        [Reorder Point] < [Safety Stock Level], "At risk: Safety stock level not met",
        ISBLANK ( [Reorder Point] ), "Incomplete: Reorder point not set",
        ISBLANK ( [Safety Stock Level] ), "Incomplete: Safety stock level not set",
        "Unknown"
        )

values 순서가 중요합니다. 다음 예제에서는 첫 번째 값이 두 번째 값보다 덜 제한적이므로 두 번째 result 반환되지 않습니다. 이 예제의 결과는 항상 A 또는 C있지만 B않습니다.

= SWITCH (
         TRUE,
         Product[Standard Cost] < 100, "A",
         Product[Standard Cost] < 10, "B",
         "C"
         )

다음 문은 result 인수의 데이터 형식이 다르기 때문에 오류를 반환합니다. 모든 resultelse 인수의 데이터 형식은 동일해야 합니다.

= SWITCH (
        [Class],
        "L", "Large",
        "H", 0.1
        )