논리 함수
이 문서에서는 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" "(Season = Spring) 및 (Season = Fall)이 동시에 참이면 It's the apocalypse and footwear doesn't matter가 반환됩니다." |
참고 | 경우에 따라 IF 및 IIF와 함께 사용됩니다. 또한 NOT 및 OR을 참조하십시오. 두 식이 모두
참고: |
CASE
구문 | CASE <expression>
|
출력 | 데이터 유형의 <then> 값에 따라 다릅니다. |
정의 |
|
예 |
"Season 필드를 보십시오. 값이 Summer이면 Sandals를 반환합니다. 값이 Winter이면 Boots를 반환합니다. 계산의 옵션 중 Season 필드의 옵션과 일치하는 것이 없으면 Sneakers를 반환합니다." |
참고 | WHEN, THEN, ELSE 및 END와 함께 사용됩니다. 팁: 그룹을 여러 번 사용하여 복잡한 CASE 함수와 동일한 결과를 얻거나 이전 예와 같이 CASE를 사용하여 기본 그룹화 함수를 대체할 수 있습니다. 해당하는 시나리오에 어느 함수의 성능이 더 우수한지 테스트하는 것이 좋을 수 있습니다. |
ELSE
구문 | CASE <expression>
|
정의 | 테스트된 식 중 참이 아닌 경우 반환할 기본값을 지정하는 데 사용되는 IF 또는 CASE 식의 선택적 부분입니다. |
예 | IF [Season] = "Summer" THEN 'Sandals' CASE [Season] |
참고 | CASE, WHEN, IF, ELSEIF, THEN 및 END와 함께 사용됩니다.
|
ELSEIF
구문 | [ELSEIF <test2> THEN <then2>] |
정의 | 초기 IF 이외의 추가 조건을 지정하는 데 사용되는 IF 식의 선택적 부분입니다. |
예 | IF [Season] = "Summer" THEN 'Sandals' |
참고 | IF, THEN, ELSE 및 END와 함께 사용됩니다.
|
END
정의 | IF 또는 CASE 식을 닫는 데 사용됩니다. |
예 | IF [Season] = "Summer" THEN 'Sandals' "Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 두 식 중 어느 것도 참이 아니면 Sneakers를 반환합니다." CASE [Season] "Season 필드를 보십시오. 값이 Summer이면 Sandals를 반환합니다. 값이 Winter이면 Boots를 반환합니다. 계산의 옵션 중 Season 필드의 옵션과 일치하는 것이 없으면 Sneakers를 반환합니다." |
참고 |
IF
구문 | IF <test1> THEN <then1> |
출력 | 데이터 유형의 <then> 값에 따라 다릅니다. |
정의 | 일련의 식을 테스트하여 true인 첫 번째 |
예 | IF [Season] = "Summer" THEN 'Sandals' "Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 두 식 중 어느 것도 참이 아니면 Sneakers를 반환합니다." |
참고 |
IFNULL
구문 | IFNULL(expr1, expr2) |
출력 | 데이터 유형의 <expr> 값에 따라 다릅니다. |
정의 | null이 아니면 |
예 | IFNULL([Assigned Room], "TBD") "Assigned Room 필드가 null이 아닌 경우 해당 값을 반환합니다. Assigned Room 필드가 null인 경우 대신 TBD를 반환합니다." |
참고 | ISNULL과 비교하십시오. 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', "Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 둘 다 참이 아니면 Sneakers를 반환합니다." IIF('Season' = 'Summer', 'Sandals', "Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 식 중 어느 것도 참이 아니면 Sneakers를 반환합니다." |
참고 |
즉, 아래 계산에서는 A=A가 true로 평가되자마자 식 평가가 중지되므로 결과는 Orange가 아닌 Red가 됩니다.
|
IN
구문 | <expr1> IN <expr2> |
출력 | 부울(true 또는 false) |
정의 | <expr1> 의 값이 <expr2> 의 값 중 하나와 일치하는 경우 TRUE 를 반환합니다. |
예 | SUM([Cost]) IN (1000, 15, 200) "Cost 필드의 값이 1000, 15 또는 200입니까?" [Field] IN [Set] "Field의 값이 Set에 존재합니까?" |
참고 |
WHEN도 참조하십시오. |
ISDATE
구문 | ISDATE(string) |
출력 | 부울(true 또는 false) |
정의 | <string> 이 유효한 날짜이면 true를 반환합니다. 입력 식은 문자열(텍스트) 필드여야 합니다. |
예 | ISDATE("2018-09-22") "2018-09-22 문자열이 올바른 형식의 날짜입니까?" |
참고 | 유효한 날짜로 간주되는 날짜는 계산을 평가하는 시스템의 로캘(링크가 새 창에서 열림)에 따라 다릅니다. 예를 들면 다음과 같습니다. 미국의 경우:
영국의 경우:
|
ISNULL
구문 | ISNULL(expression) |
출력 | 부울(true 또는 false) |
정의 |
|
예 | ISNULL([Assigned Room]) "Assigned Room 필드가 null입니까?" |
참고 | IFNULL과 비교하십시오. ZN도 참조하십시오. |
MAX
구문 | MAX(expression) 또는 MAX(expr1, expr2) |
출력 | 인수와 동일한 데이터 유형이거나, 인수의 일부가 null인 경우 NULL 값이 출력됩니다. |
정의 | 두 인수의 최대값을 반환합니다(두 인수가 동일한 데이터 유형이어야 함).
|
예 | MAX(4,7) = 7 |
참고 | 문자열의 경우
데이터베이스 데이터 원본의 경우 날짜의 경우 날짜의 경우 집계 형식
비교 형식
|
MIN
구문 | MIN(expression) 또는 MIN(expr1, expr2) |
출력 | 인수와 동일한 데이터 유형이거나, 인수의 일부가 null인 경우 NULL 값이 출력됩니다. |
정의 | 두 인수의 최소값을 반환합니다(두 인수가 동일한 데이터 유형이어야 함).
|
예 | MIN(4,7) = 4 |
참고 | 문자열의 경우
데이터베이스 데이터 원본의 경우 날짜의 경우 날짜의 경우 집계 형식
비교 형식
|
NOT
구문 | NOT <expression> |
출력 | 부울(true 또는 false) |
정의 | 식에 대한 논리 부정을 수행합니다. |
예 | IF NOT [Season] = "Summer" "Season이 Summer와 같지 않으면 Don't wear sandals를 반환합니다. 그렇지 않은 경우 Wear sandals를 반환합니다." |
참고 |
OR
구문 | <expr1> OR <expr2> |
출력 | 부울(true 또는 false) |
정의 | 두 식에 대한 논리합을 수행합니다. |
예 | IF [Season] = "Spring" OR [Season] = "Fall" "(Season = Spring) 또는 (Season = Fall)이 참인 경우 Sneakers를 반환합니다." |
참고 | 경우에 따라 IF 및 IIF와 함께 사용됩니다. 또한 AND 및 NOT을 참조하십시오. 식이 하나라도
참고: |
THEN
구문 | IF <test1> THEN <then1>
|
정의 | 특정 값이나 테스트가 true인 경우 반환할 결과를 정의하는 데 사용되는 IF , ELSEIF 또는 CASE 식의 필수 부분입니다. |
예 | IF [Season] = "Summer" THEN 'Sandals' "Season = Summer이면 Sandals을 반환합니다. 그렇지 않으면 옆의 식을 봅니다. Season = Winter이면 Boots를 반환합니다. 두 식 중 어느 것도 참이 아니면 Sneakers를 반환합니다." CASE [Season] "Season 필드를 보십시오. 값이 Summer이면 Sandals를 반환합니다. 값이 Winter이면 Boots를 반환합니다. 계산의 옵션 중 Season 필드의 옵션과 일치하는 것이 없으면 Sneakers를 반환합니다." |
참고 |
WHEN
구문 | CASE <expression>
|
정의 | CASE 식의 필수 부분입니다. <expression> 과 일치하는 첫 번째 <value> 를 찾고 해당 <then> 을 반환합니다. |
예 | CASE [Season] "Season 필드를 보십시오. 값이 Summer이면 Sandals를 반환합니다. 값이 Winter이면 Boots를 반환합니다. 계산의 옵션 중 Season 필드의 옵션과 일치하는 것이 없으면 Sneakers를 반환합니다." |
참고 | CASE, THEN, ELSE 및 END와 함께 사용됩니다.
CASE <expression>
|
ZN
구문 | ZN(expression) |
출력 | <expression> 의 데이터 유형에 따라 달라지거나 0입니다. |
정의 | null이 아니면 <expression>을 반환하고, 그렇지 않으면 0을 반환합니다. |
예 | ZN([Test Grade]) "test grade가 null이 아닌 경우 해당 값을 반환합니다. test grade가 null이면 0을 반환합니다." |
참고 |
ISNULL도 참조하십시오. |
참고: 일부는 실제로 논리 연산자이며 파란색이 아니라 검은색으로 표시됩니다. 자세한 내용은 연산자 구문을 참조하십시오.
CASE는 보통 IF 또는 IIF보다 사용하기가 쉽습니다. 대부분의 경우 IF, IIF 및 CASE를 같은 의미로 사용할 수 있습니다. 일반적으로 CASE 함수가 더 간결하고 이해하기 쉽지만 CASE 문은 항상 IF 문으로 다시 작성할 수 있습니다. 그러나 각 ELSEIF가 다른 필드를 참조할 수 있으므로 일부 IF 문은 CASE 문으로 작성할 수 없습니다.
팁: 이 세 가지 함수에서 동일한 논리를 사용하는 예를 비교해 보겠습니다.
CASE | IF | IIF |
CASE [Region] | IF [Region] = 'West' THEN 1 | IIF([Region] = 'West', 1, |
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
논리 계산 만들기
아래의 단계를 수행하여 논리 계산을 만드는 방법을 배워 보십시오.
- Tableau Desktop에서 Tableau와 함께 제공된 샘플 – 슈퍼스토어라는 저장된 데이터 원본에 연결합니다.
- 워크시트로 이동합니다.
- 데이터 패널에서 State(시/도)를 행 선반에 끌어 놓습니다.
- 데이터 패널에서 Category(범주)를 행 선반으로 끌어 State(시/도) 오른쪽에 놓습니다.
- 데이터 패널에서 Sales(매출)를 열 선반에 끌어 놓습니다.
- 분석 > 계산된 필드 만들기를 선택합니다.
- 계산 에디터가 열리면 다음을 수행합니다.
- 계산된 필드의 이름을 KPI로 지정합니다.
- 다음 수식을 입력합니다.
SUM([Profit]) > 0
이 계산은 멤버가 0보다 큰지 빠르게 확인합니다. 0보다 큰 경우 true를 반환하고 그렇지 않으면 false를 반환합니다.
- 작업을 마쳤으면 확인을 클릭합니다.
- 데이터 패널에서 KPI를 마크 카드의 색상으로 끌어 놓습니다.
이제 각 주에서 손해가 발생한 범주를 확인할 수 있습니다.
새 계산된 필드가 데이터 패널의 측정값 아래에 나타납니다. 다른 필드와 마찬가지로, 하나 이상의 비주얼리제이션에서 이 필드를 사용할 수 있습니다.