논리 함수

이 문서에서는 Tableau의 논리 함수와 관련 사용법을 소개합니다. 또한 예제를 사용하여 논리 계산을 만드는 방법을 보여 줍니다.

논리 계산을 사용하는 이유

논리 계산을 사용하면 특정 조건이 참인지, 아니면 거짓인지(부울 논리)를 결정할 수 있습니다. 예를 들어 특정 구분 단위를 기준으로 값을 분류할 수 있습니다.

논리 계산은 다음과 비슷한 모양입니다.

IF [Profit] > 0 
THEN 'Profitable'
ELSEIF [Profit] = 0 THEN 'Break even'
ELSE 'Loss'
END

Tableau에서 사용할 수 있는 논리 함수 및 연산자

AND

구문<expr1> AND <expr2>
정의두 식에 대한 논리곱을 수행합니다. (양변 모두 참이면 논리 테스트는 true를 반환합니다.)
출력부울(true 또는 false)
IF [Season] = "Spring" AND "[Season] = "Fall" 
THEN "It's the apocalypse and footwear doesn't matter"
END

"(Season = Spring) 및 (Season = Fall)이 동시에 참이면 'It's the apocalypse and footwear doesn't matter'가 반환됩니다."

참고

경우에 따라 IFIIF와 함께 사용됩니다. 또한 NOTOR을 참조하십시오.

두 식이 모두 TRUE(즉, FALSE 또는 NULL이 아님)이면 결과는 TRUE입니다. 식이 하나라도 NULL이면 결과는 NULL입니다. 다른 모든 경우의 결과는 FALSE입니다.

AND 비교의 결과가 워크시트에 표시되는 계산을 만드는 경우 TRUEFALSE가 표시됩니다. 이 설정을 변경하려면 서식 대화 상자의 형식 영역을 사용합니다.

참고AND 연산자는 단락 평가를 사용합니다. 즉, 첫 번째 식이 FALSE로 평가되면 두 번째 식은 평가되지 않습니다. 이 기능은 첫 번째 식이 FALSE이고 두 번째 식에서 오류가 발생하는 경우에 유용할 수 있습니다. 이 경우 두 번째 식은 평가되지 않기 때문입니다.

CASE

구문CASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
출력데이터 유형의 <then> 값에 따라 다릅니다.
정의

expression을 평가하고 지정된 옵션(<value1>, <value2> 등)과 비교합니다. 식과 일치하는 value가 있으면 CASE가 해당 return 값을 반환합니다. 일치 항목이 없으면 (선택 사항) 기본값이 반환됩니다. 기본값이 없고 일치하는 값도 없으면 Null이 반환됩니다.

CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

"Season 필드를 보십시오. 값이 Summer이면 Sandals를 반환합니다. 값이 Winter이면 Boots를 반환합니다. 계산의 옵션 중 Season 필드의 옵션과 일치하는 것이 없으면 Sneakers를 반환합니다."

참고

또한 IFIIF을 참조하십시오.

WHEN, THEN, ELSEEND와 함께 사용됩니다.

: 그룹을 여러 번 사용하여 복잡한 CASE 함수와 동일한 결과를 얻거나 이전 예와 같이 CASE를 사용하여 기본 그룹화 함수를 대체할 수 있습니다. 해당하는 시나리오에 어느 함수의 성능이 더 우수한지 테스트하는 것이 좋을 수 있습니다.

ELSE

구문CASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
정의테스트된 식 중 참이 아닌 경우 반환할 기본값을 지정하는 데 사용되는 IF 또는 CASE 식의 선택적 부분입니다.
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END
참고

CASE, WHEN, IF, ELSEIF, THENEND와 함께 사용됩니다.

ELSECASEIF와 함께 선택 사항입니다. ELSE가 지정되지 않은 계산의 경우 <test> 중 어느 것도 참이 아니면 전체 계산은 null을 반환합니다.

ELSE는 조건이 필요하지 않고(예: [Season] = "Winter") 이는 null 처리의 한 형태로 간주될 수 있습니다.

ELSEIF

구문[ELSEIF <test2> THEN <then2>]
정의초기 IF 이외의 추가 조건을 지정하는 데 사용되는 IF 식의 선택적 부분입니다.
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSEIF [Season] = "Spring" THEN 'Sneakers'
ELSEIF [Season] = "Autumn" THEN 'Sneakers'
ELSE 'Bare feet'
END
참고

IF, THEN, ELSEEND와 함께 사용됩니다.

ELSEIF는 추가 IF 절로 간주될 수 있습니다. ELSEIF는 선택 사항이며 여러 번 반복할 수 있습니다.

ELSE와 달리 ELSEIF는 조건이 필요합니다(예: [Season] = "Winter").

END

정의IF 또는 CASE 식을 닫는 데 사용됩니다.
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

"Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 두 식 중 어느 것도 참이 아니면 Sneakers를 반환합니다."

CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

"Season 필드를 보십시오. 값이 Summer이면 Sandals를 반환합니다. 값이 Winter이면 Boots를 반환합니다. 계산의 옵션 중 Season 필드의 옵션과 일치하는 것이 없으면 Sneakers를 반환합니다."

참고

CASE, WHEN, IF, ELSEIF, THENELSE와 함께 사용됩니다.

IF

구문IF <test1> THEN <then1>
[ELSEIF <test2> THEN <then2>...]
[ELSE <default>]
END
출력데이터 유형의 <then> 값에 따라 다릅니다.
정의

일련의 식을 테스트하여 true인 첫 번째 <test>에 대해 <then> 값을 반환합니다.

IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

"Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 두 식 중 어느 것도 참이 아니면 Sneakers를 반환합니다."

참고

또한 IFIIF을 참조하십시오.

ELSEIF, THEN, ELSEEND와 함께 사용됩니다.

IFNULL

구문IFNULL(expr1, expr2)
출력데이터 유형의 <expr> 값에 따라 다릅니다.
정의

null이 아니면 <expr1>을 반환하고, 그렇지 않으면 <expr2>를 반환합니다.

IFNULL([Assigned Room], "TBD")

"Assigned Room 필드가 null이 아닌 경우 해당 값을 반환합니다. Assigned Room 필드가 null인 경우 대신 TBD를 반환합니다."

참고

ISNULL과 비교하십시오. IFNULL은 항상 값을 반환합니다. ISNULL은 부울(true 또는 false)을 반환합니다.

ZN도 참조하십시오.

IIF

구문IIF(<test>, <then>, <else>, [<unknown>])
출력식에 있는 값의 데이터 유형에 따라 다릅니다.
정의조건이 충족되는지 확인하고(<test>) 테스트가 참이면 <then>을 반환하고, 테스트가 거짓이면 <else>를 반환하며, 테스트가 null이면 <unknown>에 대한 선택적 값을 반환합니다. 선택적 unknown이 지정되지 않은 경우 IIF가 null을 반환합니다.
IIF([Season] = 'Summer', 'Sandals', 'Other footwear')

"Season = Summer이면 Sandals을 반환합니다. 그렇지 않은 경우 Other footwear를 반환합니다."

IIF([Season] = 'Summer', 'Sandals', 
IIF('Season' = 'Winter', 'Boots', 'Other footwear')
)

"Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 둘 다 참이 아니면 Sneakers를 반환합니다."

IIF('Season' = 'Summer', 'Sandals', 
IIF('Season' = 'Winter', 'Boots',
IIF('Season' = 'Spring', 'Sneakers', 'Other footwear')
)
)

"Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 식 중 어느 것도 참이 아니면 Sneakers를 반환합니다."

참고

또한 IFCASE를 참조하십시오.

IIF에는 ELSEIF(예: IF) 또는 반복되는 WHEN 절(예: CASE)과 상응하는 것이 없습니다. 대신 IIF 문을 <unknown> 요소로 중첩하여 여러 테스트를 순차적으로 평가할 수 있습니다. 가장 바깥쪽에 있는 첫 번째 true가 반환됩니다.

즉, 아래 계산에서는 A=A가 true로 평가되자마자 식 평가가 중지되므로 결과는 Orange가 아닌 Red가 됩니다.

IIF('A' = 'A', 'Red', IIF('B' = 'B', 'Orange', IIF('C' = 'D', 'Yellow', 'Green')))

IN

구문<expr1> IN <expr2>
출력부울(true 또는 false)
정의<expr1>의 값이 <expr2>의 값 중 하나와 일치하는 경우 TRUE를 반환합니다.
SUM([Cost]) IN (1000, 15, 200)

"Cost 필드의 값이 1000, 15 또는 200입니까?"

[Field] IN [Set]

"Field의 값이 Set에 존재합니까?"

참고

<expr2>의 값은 집합, 리터럴 값의 목록 또는 결합된 필드일 수 있습니다.

WHEN도 참조하십시오.

ISDATE

구문ISDATE(string)
출력부울(true 또는 false)
정의<string>이 유효한 날짜이면 true를 반환합니다. 입력 식은 문자열(텍스트) 필드여야 합니다.
ISDATE("2018-09-22")

"2018-09-22 문자열이 올바른 형식의 날짜입니까?"

참고

유효한 날짜로 간주되는 날짜는 계산을 평가하는 시스템의 로캘(링크가 새 창에서 열림)에 따라 다릅니다. 예를 들면 다음과 같습니다.

미국의 경우:

  • ISDATE("2018-09-22") = TRUE
  • ISDATE("2018-22-09") = FALSE

영국의 경우:

  • ISDATE("2018-09-22") = FALSE
  • ISDATE("2018-22-09") = TRUE

ISNULL

구문ISNULL(expression)
출력부울(true 또는 false)
정의

<expression>이 NULL인 경우(유효한 데이터를 포함하지 않는 경우) true를 반환합니다.

ISNULL([Assigned Room])

"Assigned Room 필드가 null입니까?"

참고

IFNULL과 비교하십시오. IFNULL은 항상 값을 반환합니다. ISNULL은 부울을 반환합니다.

ZN도 참조하십시오.

MAX

구문MAX(expression) 또는 MAX(expr1, expr2)
출력인수와 동일한 데이터 유형이거나, 인수의 일부가 null인 경우 NULL 값이 출력됩니다.
정의

두 인수의 최대값을 반환합니다(두 인수가 동일한 데이터 유형이어야 함).

MAX 함수를 단일 필드에 집계로 적용할 수도 있습니다.

MAX(4,7) = 7
MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021#
MAX([Name]) = "Zander"
참고

문자열의 경우

MAX는 일반적으로 사전순으로 마지막에 오는 값입니다.

데이터베이스 데이터 원본의 경우 MAX 문자열 값은 데이터베이스가 해당 열에 정의한 정렬 순서에서 가장 높은 값을 찾습니다.

날짜의 경우

날짜의 경우 MAX는 가장 최근 날짜입니다. MAX가 집계인 경우 결과에 날짜 계층 구조가 없습니다. MAX가 비교인 경우 결과에 날짜 계층 구조가 유지됩니다.

집계 형식

MAX(expression)는 집계 함수이며 단일 집계 결과를 반환합니다. 이는 비주얼리제이션에서 AGG(expression)와 같이 표시됩니다.

비교 형식

MAX(expr1, expr2)는 두 값을 비교하여 행 수준 값을 반환합니다.

MIN도 참조하십시오.

MIN

구문MIN(expression) 또는 MIN(expr1, expr2)
출력인수와 동일한 데이터 유형이거나, 인수의 일부가 null인 경우 NULL 값이 출력됩니다.
정의

두 인수의 최소값을 반환합니다(두 인수가 동일한 데이터 유형이어야 함).

MIN 함수를 단일 필드에 집계로 적용할 수도 있습니다.

MIN(4,7) = 4
MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#
MIN([Name]) = "Abebi"
참고

문자열의 경우

MIN은 일반적으로 사전순으로 맨 처음 나타나는 값입니다.

데이터베이스 데이터 원본의 경우 MIN 문자열 값은 데이터베이스가 해당 열에 정의한 정렬 순서에서 가장 낮은 값을 찾습니다.

날짜의 경우

날짜의 경우 MIN은 가장 이른 날짜입니다. MIN가 집계인 경우 결과에 날짜 계층 구조가 없습니다. MIN가 비교인 경우 결과에 날짜 계층 구조가 유지됩니다.

집계 형식

MIN(expression)는 집계 함수이며 단일 집계 결과를 반환합니다. 이는 비주얼리제이션에서 AGG(expression)와 같이 표시됩니다.

비교 형식

MIN(expr1, expr2)는 두 값을 비교하여 행 수준 값을 반환합니다.

MAX도 참조하십시오.

NOT

구문NOT <expression>
출력부울(true 또는 false)
정의식에 대한 논리 부정을 수행합니다.
IF NOT [Season] = "Summer" 
THEN 'Don't wear sandals'
ELSE 'Wear sandals' 
END

"Season이 Summer와 같지 않으면 Don't wear sandals를 반환합니다. 그렇지 않은 경우 Wear sandals를 반환합니다."

참고

경우에 따라 IFIIF와 함께 사용됩니다. 또한 ANDOR을 참조하십시오.

OR

구문<expr1> OR <expr2>
출력부울(true 또는 false)
정의두 식에 대한 논리합을 수행합니다.
IF [Season] = "Spring" OR [Season] = "Fall" 
THEN "Sneakers"
END

"(Season = Spring) 또는 (Season = Fall)이 참인 경우 Sneakers를 반환합니다."

참고

경우에 따라 IFIIF와 함께 사용됩니다. 또한 ANDNOT을 참조하십시오.

식이 하나라도 TRUE이면 결과는 TRUE입니다. 두 식이 모두 FALSE이면 결과는 FALSE입니다. 두 식이 모두 NULL이면 결과는 NULL입니다.

OR 비교의 결과가 워크시트에 표시되는 계산을 만드는 경우 Tableau에 TRUE 및 FALSE가 표시됩니다. 이 설정을 변경하려면 서식 대화 상자의 형식 영역을 사용합니다.

참고OR 연산자는 단락 평가를 사용합니다. 즉, 첫 번째 식이 TRUE로 평가되면 두 번째 식은 평가되지 않습니다. 이 기능은 첫 번째 식이 TRUE이고 두 번째 식에서 오류가 발생하는 경우에 유용할 수 있습니다. 이 경우 두 번째 식은 평가되지 않기 때문입니다.

THEN

구문IF <test1> THEN <then1>
[ELSEIF <test2> THEN <then2>...]
[ELSE <default>]
END
정의특정 값이나 테스트가 true인 경우 반환할 결과를 정의하는 데 사용되는 IF, ELSEIF 또는 CASE 식의 필수 부분입니다.
IF [Season] = "Summer" THEN 'Sandals' 
ELSEIF [Season] = "Winter" THEN 'Boots'
ELSE 'Sneakers' 
END

"Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 두 식 중 어느 것도 참이 아니면 Sneakers를 반환합니다."

CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

"Season 필드를 보십시오. 값이 Summer이면 Sandals를 반환합니다. 값이 Winter이면 Boots를 반환합니다. 계산의 옵션 중 Season 필드의 옵션과 일치하는 것이 없으면 Sneakers를 반환합니다."

참고

CASE, WHEN, IF, ELSEIF, THEN, ELSEEND와 함께 사용됩니다.

WHEN

구문CASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
정의CASE 식의 필수 부분입니다. <expression>과 일치하는 첫 번째 <value>를 찾고 해당 <then>을 반환합니다.
CASE [Season] 
WHEN 'Summer' THEN 'Sandals'
WHEN 'Winter' THEN 'Boots'
ELSE 'Sneakers'
END

"Season 필드를 보십시오. 값이 Summer이면 Sandals를 반환합니다. 값이 Winter이면 Boots를 반환합니다. 계산의 옵션 중 Season 필드의 옵션과 일치하는 것이 없으면 Sneakers를 반환합니다."

참고

CASE, THEN, ELSEEND와 함께 사용됩니다.

CASE는 다음과 같은 WHEN IN 구성도 지원합니다.

CASE <expression> 
WHEN IN <set1> THEN <then1>
WHEN IN <combinedfield> THEN <then2>
...
ELSE <default>
END

WHEN IN에서 비교하는 값은 집합, 리터럴 값의 목록 또는 결합된 필드여야 합니다. IN도 참조하십시오.

ZN

구문ZN(expression)
출력<expression>의 데이터 유형에 따라 달라지거나 0입니다.
정의null이 아니면 <expression>을 반환하고, 그렇지 않으면 0을 반환합니다.
ZN([Test Grade])

"test grade가 null이 아닌 경우 해당 값을 반환합니다. test grade가 null이면 0을 반환합니다."

참고

ZN은 식이 null인 경우 계산에 지정되지 않고 항상 0이 되는 IFNULL의 특수한 경우입니다.

ZN은 추가 계산을 수행할 때 특히 유용하며 null은 전체 계산을 null로 렌더링합니다. 그러나 이러한 결과에서 null이 항상 0을 의미하는 것은 아니며 누락된 데이터를 나타낼 수 있으므로 해석할 때는 주의해야 합니다.

ISNULL도 참조하십시오.


참고: 일부는 실제로 논리 연산자이며 파란색이 아니라 검은색으로 표시됩니다. 자세한 내용은 연산자 구문을 참조하십시오.

CASE, IF 및 IIF에 대한 참고 사항

CASE는 보통 IF 또는 IIF보다 사용하기가 쉽습니다. 대부분의 경우 IF, IIF 및 CASE를 같은 의미로 사용할 수 있습니다. 일반적으로 CASE 함수가 더 간결하고 이해하기 쉽지만 CASE 문은 항상 IF 문으로 다시 작성할 수 있습니다. 그러나 각 ELSEIF가 다른 필드를 참조할 수 있으므로 일부 IF 문은 CASE 문으로 작성할 수 없습니다.

: 이 세 가지 함수에서 동일한 논리를 사용하는 예를 비교해 보겠습니다.

CASEIFIIF
CASE [Region]
WHEN 'West' THEN 1
WHEN 'East' THEN 2
WHEN 'South' THEN 3
WHEN 'North' Then 4
ELSE 5
END
IF [Region] = 'West' THEN 1
ELSEIF [Region] = 'East' THEN 2
ELSEIF [Region] = 'South' THEN 3
ELSEIF [Region] = 'North' THEN 4
ELSE 5
END
IIF([Region] = 'West', 1,
IIF([Region] = 'East', 2,
IIF([Region] = 'South', 3,
IIF([Region] = 'North', 4,
5, 0)
)
)
)

CASE 구조는 매우 간단하고 작성법과 이해가 쉽습니다. 단, 식(여기서는 [Region])은 IF나 IIF와 달리 논리 연산이 될 수 없습니다.

Null은 IF와 마찬가지로 CASE에서도 동일하게 처리됩니다.

IF THEN 구조에서는 여러 ELSEIF 절을 허용하므로 IIF보다 여러 평가를 훨씬 쉽게 수행할 수 있습니다.

Null 처리: 알 수 없는(null) 결과는 동일한 ELSE 절에 의해 false 결과로 처리됩니다. 여기에서는 지정된 4개 Region(null 포함) 이외의 Region에는 값 5가 할당됩니다.

IIF 구조는 알 수 없는 결과를 false 결과와 다르게 처리하며 IF와는 다른 구문을 갖습니다. 특정 Null 처리의 단점은 위와 같이 중첩되어 작성법과 이해가 어려울 수 있다는 것입니다.

Null 처리: 지정된 4개 이외의 null이 아닌 Region에는 값 5가 할당되지만 null 값에는 0이 할당됩니다.

참고: 그룹을 여러 번 사용하여 복잡한 CASE 함수와 동일한 결과를 얻을 수 있습니다. 한 옵션이 다른 옵션보다 성능이 더 좋은지 테스트해 보십시오.

CASE 함수는 다음과 같은 시나리오에 유용할 수 있습니다.

CASE LEFT(DATENAME('weekday',[Order Date]),3)
WHEN 'Sun' THEN 0
WHEN 'Mon' THEN 1
WHEN 'Tue' THEN 2
WHEN 'Wed' THEN 3
WHEN 'Thu' THEN 4
WHEN 'Fri' THEN 5
WHEN 'Sat' THEN 6
END

또는 매개 변수(링크가 새 창에서 열림)와 함께 사용할 때 차트에서 볼 측정값을 선택할 수 있는 기능을 최종 사용자에게 제공합니다.

CASE [Choose a Measure]
WHEN "Sales" THEN SUM([Sales])
WHEN "Profit" THEN AVG([Profit])
WHEN "Quantity" THEN COUNT([Quantity])
WHEN "Shipping Cost" THEN MEDIAN([Shipping Cost])
END

논리 계산 만들기

아래의 단계를 수행하여 논리 계산을 만드는 방법을 배워 보십시오.

  1. Tableau Desktop에서 Tableau와 함께 제공된 샘플 – 슈퍼스토어라는 저장된 데이터 원본에 연결합니다.
  2. 워크시트로 이동합니다.
  3. 데이터 패널에서 State(시/도) 선반에 끌어 놓습니다.
  4. 데이터 패널에서 Category(범주) 선반으로 끌어 State(시/도) 오른쪽에 놓습니다.
  5. 데이터 패널에서 Sales(매출) 선반에 끌어 놓습니다.
  6. 분석 > 계산된 필드 만들기를 선택합니다.
  7. 계산 에디터가 열리면 다음을 수행합니다.
    • 계산된 필드의 이름을 KPI로 지정합니다.
    • 다음 수식을 입력합니다.
      SUM([Profit]) > 0

      이 계산은 멤버가 0보다 큰지 빠르게 확인합니다. 0보다 큰 경우 true를 반환하고 그렇지 않으면 false를 반환합니다.

    • 작업을 마쳤으면 확인을 클릭합니다.
  8. 새 계산된 필드가 데이터 패널의 측정값 아래에 나타납니다. 다른 필드와 마찬가지로, 하나 이상의 비주얼리제이션에서 이 필드를 사용할 수 있습니다.

  9. 데이터 패널에서 KPI를 마크 카드의 색상으로 끌어 놓습니다.

    이제 각 주에서 손해가 발생한 범주를 확인할 수 있습니다.

참고 항목

KPI(Key Progress Indicator) 시각화

Tableau의 함수

Tableau 함수(범주별)

Tableau 함수(사전순)

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!