본문 바로가기
POWER BI

[POWER BI/파워비아이] DAX - 다중 조건부 함수: SWITCH 배워보기

by 하니in독일 2024. 10. 21.
반응형

 

안녕하세요?

지난 시간에 우리는 조건부 서식을 만드는 IF구문에 대해 배워봤습니다. 많은 분들이 잘 알고 계시는 조건부 서식이기도 하고, 가장 자주 사용되는 것 중 하나였지요. 오늘은 다중 조건, 즉 여러 가지의 조건을 한 식에 적용하고 싶을 때 사용할 수 있는 SWITCH 함수에 대해 배워보겠습니다. 


SWITCH 함수란?

SWITCH 함수는 Power BI의 DAX 언어에서 사용되는 다중 조건 함수로, 여러 개의 논리식을 평가하여 해당 조건에 맞는 결과를 반환합니다. `IF` 함수와 유사하지만, `SWITCH` 함수는 복잡한 조건문을 보다 깔끔하게 작성할 수 있도록 해줍니다. 특히, 여러 개의 조건을 순차적으로 평가할 때 유용합니다.


기본 구조

기본식 = SWITCH(<표현식>, <값1>, <결과 1>, [<값 2>, <결과 2>,...], [<기본 결과>])


- 표현식: 평가하고자 하는 기본 표현식

- 값: 표현식과 비교할 값

- 결과: 이에 따른 결과 
- 기본 결과: 마지막으로 모든 조건이 충족되지 않을 때 반환할 값 (옵션)

 

이 함수는 크게 두 가지 방법으로 사용 할 수 있는데요. 아래의 예시를 통해 좀 더 쉽게 알아보도록 합시다. 

Category  Product  Sales Amount Tax
Clothes A 100  
Food B 150  
Beverage C 200  
Electronics D 15  
Clothes E 50  
Food F 70  
Beverage G 75  
Electronics H 90  

 

1. 각 조건별로 다른 value 적용하기

예를 들어, 제품의 카테고리에 따라 서로 다른 세율을 적용하고 싶다면 다음과 같이 작성할 수 있습니다:

Tax = SWITCH('Table'[Category],
"Electronics",0.1,
"Clothes",0.15,
"Food",0.19,
0.2)

 

그러면 결과치는 다음과 같이 나옵니다. 간단한 수식으로 다양한 조건부를 한 번에 표현할 수 있다는 것이지요!  

Category  Product  Sales Amount Tax
Clothes A 100 15.00%
Food B 150 19.00%
Beverage C 200 20.00%
Electronics D 15 10.00%
Clothes E 50 15.00%
Food F 70 19.00%
Beverage G 75 20.00%
Electronics H 90 10.00%

 

2. 조건부를 통해 등급 나누기

여기서 한발 더 나아가, 판매량에 따라 등급을 나누고자 한다면? 그 때에도 이 함수를 사용할 수 있습니다. 

Rate = SWITCH(TRUE(),
'Table'[Sales Amount]>150,"A",
'Table'[Sales Amount]>100,"B",
'Table'[Sales Amount]>50,"C",
"D")

 

먼저, True() 함수를 사용해, 조건을 순차적으로 평가합니다. 만약, 첫 번째 조건이 참이면 해당 결과를 그렇지 않으면 다음결과로 넘어가는 식으로 결과를 완성할 수 있습니다. 

그러면 다음과 같은 결과를 쉽게 얻을 수 있습니다. :) 

Category  Product  Sales Amount  Tax Rate
Clothes A 100 15.00% C
Food B 150 19.00% B
Beverage C 200 20.00% A
Electronics D 15 10.00% D
Clothes E 50 15.00% D
Food F 70 19.00% C
Beverage G 75 20.00% C
Electronics H 90 10.00% C

반응형


오늘은 SWITCH 함수에 대해 알아보았습니다. IF 구문처럼 조건부서식이지만, 하나 이상의 조건을 넣어야 할 때에는 좀 더 유용하게 이용할 수 있고, 가독성이 높은 구문입니다. 

여러분도 이 구문을 이용해 시각화 보고서를 좀 더 전문적으로 만드는 데에 도움이 되기를 바랍니다. 

감사합니다. 

반응형