목차
개요
DAX 함수의 기본 문법 및 어떻게 동작하는지 이해하고 싶을 때 “계산 열”을 통해 연습하면 도움이 많이 됩니다. 측정값과 달리 계산 열은 테이블에서 바로 확인할 수 있기 때문이죠.
이번 포스트를 통해서 아래 DAX 함수 및 논리 연산자, 변수 등을 살펴보려고 합니다.
- IF, SWITCH
- IN
- VAR
Colors 열에 하나 이상의 색 (Color)이 있는 경우를 가정해 봅니다.
대부분의 열은 단일 값을 갖지만, 이처럼 열의 내용이 free text처럼 여러 단어나 문장으로 구성되어 있는 경우, 원하는 여러 개의 단어 중에 만족하는 행을 찾아 카테고리를 아래와 같이 “계산 열”을 만들면 필터와 함께 활용할 수 있는 장점이 생깁니다.
여러 개의 키워드 중에서 일치하는 값 찾기
위에서 정의한 테이블을 예제로 DAX 식을 만들어 보겠습니다.
원하는 키워드는 "White" 또는 "Red"입니다. 이 중에 하나와 대소문자 구분 없이 정확하게 맞는 것을 찾는 과정입니다.
따라서 아래 쓰인 DAX 식은 "테이블 도구 --> 새 열"을 통해서 만든 "계산 열"을 위한 DAX 식입니다.
DAX SWITCH 함수
가장 간단한 방법으로 SWITCH 함수를 이용해서 여러 개의 키워드와 일치하는지 판단하는 것입니다.
SWITCH 함수는 아래 문서에 기술되어 있습니다.
SWICH 구문은 일반적인 프로그램 언어가 갖고 있는 “IF, IF ELSE, THEN” 구문과유사합니다.
- SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
위 구문을 이용해서 DAX 식을 만들면 아래와 같습니다.
Color Matched SWITCH =
SWITCH (
SHOP[Colors],
"White", "Matched",
"Red", "Match",
"False"
)
"계산 열"을 만들기 때문에 매 행마다 반복해서 (행 컨텍스트) 식을 평가하고 그 값이 일치하는지 살피게 됩니다.
DAX IF 함수, 논리 연산자 IN
비교할 키워드가 단지 2개가 아니라 아주 많을 경우 (즉, 예처럼 더 많은 색 중의 하나에 해당하는 것을 찾으려고 하면), SWITCH 함수로 표현할 때 식의 라인이 늘어나 읽기가 불편해집니다.
이때, IF 함수 및 연산자 IN을 사용해서 식을 간단히 할 수 있습니다.
DAX IF 함수
먼저 DAX IF 함수는 아래 페이지에 기술되어 있습니다.
DAX IF 함수 구문은 간단합니다. 평가식을 두고 만족할 때와 만족하지 않을 때의 반환 값을 정의할 수 있습니다.
- IF(<logical_test>, <value_if_true>[, <value_if_false>])
DAX 논리 연산자 IN
논리 연산자 IN을 통해 논리적 OR 조건을 만들고, 조건을 만족할 경우 참 (TRUE)를 반환합니다.
DAX IF 함수와 논리 연산자 IN을 조합해서 DAX 식을 만들면 아래와 같습니다.
Color Matched IN =
IF (
SHOP[Colors] IN { "White", "Red" },
"Matched",
"False"
)
IF 함수의 <logical_test>에 해당되는 식은 SHOP[Colors] IN {"White", "Red"}입니다.
따라서 이 식을 만족하면 결과에 “Matched”가 저장되고, 그렇지 않을 경우 “False”가 저장됩니다.
IN 연산자가 사용된 부분을 보면 테이블 생성자로 중괄호 ({, })가 사용된다는 점을 꼭 기억하세요.
따라서 이 식은 SHOP[Colors]의 값이 “White” 또는 “Red”에 해당되면 참 (TRUE)를 반환합니다.
DAX CONTAINSROW 함수
사실 논리 연산자 IN은 아래 CONTAINSROW로 표현할 수 있는 것을 간략하게 만든 것입니다.
먼저 DAX CONTAINSROW 함수는 아래 페이지에 기술되어 있습니다.
CONTAINSROW 함수 구문입니다.
- CONTAINSROW(<Table>, <Value> [, <Value> [, …] ] )
<Table> 파라미터를 위해 중괄호 ({,})를 사용하거나, 실제 테이블 이름을 넣을 수 있습니다.
연산자 IN과 동일한 기능의 CONTAINSROW를 사용하면 아래와 같습니다.
Color Matched CONTAINSROW =
IF (
CONTAINSROW (
{
"WHITE",
"Red"
},
SHOP[Colors]
),
"Matched",
"False"
)
결론적으로, CONTAINSROW 함수보다 IN 함수가 더 읽기에 편합니다.
지금까지 사용한 DAX 식으로 계산 열을 만들었을 때 결과입니다. 세 가지 DAX 식은 모두 같은 결과를 보여주고 있습니다.
DAX 키워드 VAR 변수 만들기
앞에 정의한 3개의 DAX 식 중에서 가장 읽기에 좋은 식은 함수 IF와 연산자 IN을 사용한 경우입니다.
Color Matched IN =
IF (
SHOP[Colors] IN { "White", "Red" },
"Matched",
"False"
)
IN과 함께 테이블 생성자 중괄호 ({,})를 사용하고 있는데, 색깔의 수가 많아질 때, IF 문장이 길어지고, 의미 파악에 어려울 수 있습니다.
따라서 선택하고자 하는 내용을 좀 더 관리하기 쉽게 하기 위해서 변수로 선언할 수 있습니다.
DAX VAR 키워드에 대한 내용을 아래에서 찾을 수 있습니다.
VAR 키워드 구문
- VAR <name> = <expression>
VAR로 선언할 수 있는 것들은 제한적이고, 한 번만 계산되어 주의해야 할 점이 있지만, 복잡한 식을 간단하게 만들 수 있는 장점이 있습니다.
그리고 항상 RETURN과 함께 사용되어야 합니다. 따라서 VAR를 사용할 때 문법적으로 아래와 같은 구문을 갖습니다.
VAR <name> = <expression>
RETURN <expression>
아래와 같이 VAR 키워드를 사용해 색을 정의했을 때, IF 함수가 보다 보기 편해졌네요.
Color Matched Var =
VAR Matched_Color = {
"White",
"Red"
}
RETURN
IF (
SHOP[Colors] IN Matched_Color,
"Matched",
"False"
)
VAR 키워드는 아래처럼 RETURN 키워드와 항상 같이 합니다. 즉, 최종적으로 계산되는 식을 RETURN을 통해 알려줘야 합니다.
마치며
텍스트를 분석한 결과를 계산 열에 저장하면서 DAX 기본적인 함수 (IF, SWITCH), 논리 연산자 IN, 키워드 VAR를 다뤘습니다.
위에 나온 모든 식은 아래처럼 동일한 결과를 보여줍니다.
이번 포스트는 키워드가 정확하게 매치되는 것을 찾았죠.
다음 포스트에는 키워드가 포함된 텍스트를 찾고 싶을 때, 쓸 수 있는 DAX 식을 알아보도록 하겠습니다.
계산 열에 대한 기초적인 내용은 아래 포스트를 참고하세요.
Power BI DAX 기초 - 계산 열과 행 컨텍스트 이해
목차 개요 행 컨텍스트를 설명하는 대표적인 예로 “계산 열 (calculated column)”이 있습니다. 원본 테이블에 없지만 필요에 따라 DAX 식으로 열을 추가해 측정값 계산에 사용할 수 있습니
brightsomuch.tistory.com
'Power BI' 카테고리의 다른 글
Power BI 문자열 필터 기능 시각적 개체 Text Filter (1) | 2024.07.18 |
---|---|
Power BI DAX 기초 – 계산 열 키워드 찾기 SWITCH FILTER 활용 (0) | 2024.07.17 |
Power BI DAX 기초 - 시간 인텔리전스 (1) | 2024.07.15 |
Power BI DAX 기초 - 계산 열과 행 컨텍스트 이해 (1) | 2024.07.14 |
Power BI DAX 기초 - FILTER 함수 행 컨텍스트 이해 (0) | 2024.07.13 |