Loading

계산된 필드가 Null 결과를 반환함

게시 일자: Nov 13, 2023
상세 설명
계산된 필드가 예상된 결과 대신 NULL 값이나 비어 있는 값을 반환함

Cause

  • 시나리오 1, 2 및 4의 경우 NULL을 포함하는 모든 계산은 NULL을 반환합니다. 이는 NULL 값이 숫자 값이 아니므로 특수한 처리가 필요하기 때문입니다.
  • 시나리오 3의 경우 Tableau가 ELSE 문이 없는 모든 논리 계산에 ELSE NULL을 추가합니다. 즉, 모든 조건이 False이면 NULL이 반환됩니다.
  • 시나리오 5의 경우 0으로 나뉜 숫자는 수학적으로 정의되지 않습니다. 일관성을 위해 Tableau는 값을 NULL로 표시합니다. 자세한 내용은 Wikipedia 문서 0으로 나누기를 참고하세요.
솔루션
클릭하여 솔루션 확장
시나리오 1: NULL 값이 있는 필드가 포함된 식이 NULL 값을 반환할 수 있음
[Sales]+[Profit] 식은 하나 또는 두 측정값 모두가 NULL인 기초 데이터의 모든 레코드에 대해 NULL을 반환합니다. 전체 합계가 NULL인 경우 SUM()과 같은 집계 함수는 NULL 값을 무시하지만 SUM([Sales])+SUM([Profit]) 식이 NULL을 반환할 수 있습니다.

솔루션: 필드 또는 집계 함수를 ZN()으로 래핑하세요.
ZN() 함수는 NULL 값을 0으로 변환합니다.

[Sales] + [Profit] 식을 ZN( [Sales] ) + ZN( [Profit] )과 같이 수정합니다.

SUM( [Sales] ) + SUM( [Profit] ) 식을 ZN( SUM( [Sales] )) + ZN( SUM( [Profit] ))과 같이 수정합니다.
클릭하여 솔루션 확장
시나리오 2: NULL 값이 포함된 조건이 NULL 값을 반환함
NULL을 참조하는 모든 조건은 NULL을 반환합니다. 예를 들어 [Region] = NULL은 항상 NULL 값을 반환합니다.

솔루션: ISNULL() 또는 IFNULL()를 사용하세요.
ISNULL() 함수는 필드 또는 리터럴 값이 NULL인지 여부를 확인하여 True 또는 False를 반환합니다. IFNULL() 함수는 NULL 값을 지정된 값으로 바꿉니다.

[Region] = NULL 식을 ISNULL( [Region] )과 같이 수정합니다.
클릭하여 솔루션 확장
시나리오 3: CASE 또는 IF 문에 ELSE 문이 없으면 True인 조건이 없는 경우 NULL 값을 반환함
Tableau 는 각 조건을 차례대로 읽고 True인 조건이 있으면 해당 값을 반환합니다. True인 조건이 없으면 Tableau는 ELSE 문의 값을 반환합니다. ELSE 문이 없으면 Tableau는 NULL을 반환합니다. 예를 들어 다음 계산은 'North Pole(북극)'이 샘플 Superstore 데이터 집합의 지역이 아니기 때문에 항상 NULL을 반환합니다.
 
IF [Region] = "North Pole"
THEN [Sales]
END
 
옵션 1: True를 반환하도록 조건을 변경하세요. 예를 들면 다음과 같습니다.

IF [Region] = "Central"
THEN [Sales]
END


옵션 2: ELSE 문을 추가하여 NULL이 아닌 값을 반환합니다. 예를 들면 다음과 같습니다.

IF [Region] = "North Pole"
THEN [Sales]
ELSE 0
END
클릭하여 솔루션 확장
시나리오 4: 상호 배타적인 여러 CASE 또는 IF 문을 포함하는 식은 NULL 값을 반환할 수 있음
IF 또는 CASE 문을 비교하거나, 동시에 True가 아닌 여러 조건을 포함하는 계산은 NULL을 반환할 수 있습니다. 예를 들어 Superstore 데이터를 사용하는 다음 예에서는 두 IF 문이 NULL이 아닌 값을 동시에 반환하는 레코드가 기초 데이터에 없기 때문에 항상 NULL이 반환됩니다. 
IF [Region] = "Central" THEN [Sales] END
-
IF [Region] = "West" THEN [Sales] END

솔루션: 모든 식에서 NULL이 아닌 값이 반환되도록 계산을 수정하세요.

옵션 1 

SUM()과 같이 각 IF THEN 문을 집계로 래핑합니다.
SUM( IF [Region] = "Central" THEN [Sales] END )
 - 
SUM( IF [Region] = "West" THEN [Sales] END )

참고: 이 옵션은 조건 문에 사용된 차원이 뷰에 포함되는 경우 작동하지 않습니다. 위의 예는 [Region(지역)]이 뷰에 포함되는 경우 작동하지 않습니다.


옵션 2

집계된 각 IF THEN 문을 LOD(세부 수준) 식으로 래핑합니다. 예를 들면 다음과 같습니다.
{ FIXED : SUM( IF [Region] = "Central" THEN [Sales] END ) }

-

{ FIXED : SUM( IF [Region] = "West" THEN [Sales] END ) }

 

참고: 뷰의 차원을 위의 계산에 추가해야 할 수 있습니다(FIXED 뒤에 추가).

옵션 3

집계된 각 IF THEN 문을 테이블 함수로 래핑합니다. 예를 들면 다음과 같습니다.
WINDOW_SUM( SUM( IF [Region] = "Central" THEN [Sales] END ))
- 
WINDOW_SUM( SUM( IF [Region] = "West" THEN [Sales] END ))
테이블 함수를 사용하는 다른 예는 뷰에서 동일한 두 측정값 사이의 차이 계산을 참조하세요.
클릭하여 솔루션 확장
시나리오 5: 숫자가 아닌 문자열을 숫자로 변환
숫자가 아닌 문자가 포함된 문자열(텍스트 값)을 숫자로 변환하면 NULL이 반환됩니다.

솔루션: 문자열을 수정하여 숫자가 아닌 문자를 제거하세요.
예를 들어 [Price(가격)] 필드에 "$4.50" 문자열이 포함되는 경우 다음 계산에서는 NULL이 반환됩니다.

FLOAT( [Price] )

[Price(가격)]의 모든 값에 선행 '$'가 있는 경우 계산을 다음과 같이 수정할 수 있습니다.

FLOAT( RIGHT( [Price], LEN( [Price] ) - 1 ))

[Price(가격)]의 일부 문자열 값에 '$'가 포함되고 일부에는 포함되지 않는 경우 계산을 다음과 같이 수정할 수 있습니다.

FLOAT(
IF ISNULL( FLOAT( LEFT( [Price],1 )))
THEN RIGHT( [Price], LEN( [Price] ) - 1 )
ELSE [Price]
END

)
클릭하여 솔루션 확장
시나리오 6: 0으로 나누는 식은 NULL을 반환함
Tableau에서 숫자를 0으로 나누면 NULL 값을 반환합니다.

솔루션: 분모를 다른 값으로 변경하세요.
클릭하여 솔루션 확장
시나리오 7: DATE() 또는 DATEPARSE()가 NULL을 반환할 수 있음
텍스트 값의 날짜 형식이 컴퓨터 로캘에서 지원되지 않는 경우 DATE() 또는 DATEPARSE() 함수가 NULL을 반환할 수 있습니다. 자세한 내용은 필드를 날짜 필드로 변환을 참조하세요.

지정된 날짜 형식이 필드의 날짜 형식과 일치하지 않는 경우에도 DATEPARSE() 함수가 NULL을 반환할 수 있습니다. [Order Date(주문 날짜)]에 m/d/yyyy 형식의 값(예: "1/13/2018")이 포함되어 있다고 가정합니다. 이 경우 DATEPARSE('m-d-yyyy', [Order Date] ) 계산은 슬래시 대신 대시를 사용하기 때문에 NULL 값을 반환합니다.

솔루션: 데이터의 날짜 형식과 정확하게 일치하도록 날짜 형식을 변경하세요.
Knowledge 기사 번호

001474028

 
로드 중
Salesforce Help | Article