[파워쿼리] if 조건문 활용하기
엑셀, VBA, 파워쿼리/파워쿼리

[파워쿼리] if 조건문 활용하기

by Jongg 2024. 4. 21.
728x90

 

파워쿼리에도 엑셀, VBA 등과 같이, if를 활용한 조건문이 있습니다.

파워쿼리에서 if 문을 사용하여 조건 열을 만들 수도 있고, 다른 함수 안에서도 활용할 수 있습니다. 
예시 파일에서는 테이블에서 쿼리를 생성하기 때문에 아래의 글을 함께 읽으시길 바랍니다. 

 

 

[파워쿼리- 쿼리 생성하는 5가지 방법] #1 테이블/범위에서 가져오기

파워쿼리는 엑셀 파일, CSV 파일 등과 데이터를 연결하여 쿼리를 생성한 후, 분석에 용이하게 가공해주는 프로그램입니다. 따라서, 쿼리를 생성하는 것은 파워쿼리 사용의 첫 단계입니다. 파워쿼

writingpjt.tistory.com

 

예시.xlsx
0.01MB

 

#1. if 조건문 구조: if - then -else

 

파워쿼리에서 if 조건문은 'if 조건 then 참일 때 결과 else 거짓일 때 결과' 형식입니다.

아래의 예시를 보면서 더 자세히 설명드리겠습니다.  

▲ 만약에 위의 표와 같이 점수(score)가 분포되어 있고, 50점 미만은 점수와 상관없이 학점이 F라고 가정합시다. 그러면 'a' 학생은 학점이 F가 될 것입니다.

▲위의 사진과 같이 '사용자지정 열'을 클릭 후  ' = if [score] < 50 then "F" else [score] ' 를 입력하면, 50점 미만은 "F", 50점 이상의 점수는 점수로 표시되는 'grade' 열이 생성됩니다.

 

▲코딩 결과

 

#2. if 조건문 중첩하기

if 조건문은 엑셀처럼 중첩해서 사용할 수 있습니다.

위의 예시에서 50점 미만은 F, 70점 미만은 C, 90점 미만은 B, 90점 이상(나머지 점수)은 A라고 가정합니다.

▲위의 사진과 같이 '사용자지정 열'을 클릭 후
 
= if [score] < 50 then "F"
 else if [score] < 70 then "C"
 else if [score] < 90 then "B" else "A"

과 같이 if문을 중첩적으로 활용하면 점수에 따라 아래와 같이 성적을 분류할 수 있습니다. 

 

▲코딩결과

 

728x90

 

#3. 값 바꾸기 등 다른 함수 안에서도 활용 가능

 

만약에 'F' 성적의 학생은 이름(name)을 '낙제'라고 바꾼다고 가정해 봅시다. 

우선, 아래와 같이 'name'열에 우클릭 후 '값 바꾸기'를 클릭합니다. 

▲ name열 데이터에 우클릭 후 값 바꾸기 클릭

 

▲ 수식을 만들기 위함이기 때문에 우선 같은 값을 입력한 후 확인을 누릅니다.

 

▲ 위의 사진과 같이 
= Table.ReplaceValue(#"추가된 사용자 지정 항목","a","a",Replacer.ReplaceText,{"name"})
라는 수식이 자동적으로 완성됩니다. 

Table.ReplaceValue 함수의 기본적인 구조를 간단히 설명하자면 아래와 같습니다. 

Table.ReplaceValue(테이블명(보통 쿼리 이전단계), 바꾸기 전 값, 바꾼 후 값, Replacer.ReplaceText, {"바꿀 열의 이름"}) 입니다.  

 

▲ 따라서, 아래와 같이 수식을 작성하면, grade가 F인 학생 이름은 '낙제'로 변경됩니다. 
= Table.ReplaceValue(#"추가된 사용자 지정 항목"each [name]each if [grade]= "F" then "낙제" else [name],Replacer.ReplaceText,{"name"})

 

여기서
1) #"추가된 사용자 지정 항목" 은 원본 표(보통 쿼리 이전 단계)를 
2) each [name] 은 name 열의 데이터 하나하나를,

3) each if [grade]= "F" then "낙제" else [name] 은 grade에 따른 조건문을, 

4) {"name"} 은 바꾼 값이 적용될 열(name 열)의 이름을 의미합니다.

728x90

댓글