기술 자료

게시 후 계산, 필터 및 타임스탬프가 예기치 않은 결과를 표시함


게시 날짜: 01 Oct 2013
마지막 수정 날짜: 19 Dec 2019

문제

통합 문서 또는 데이터 원본을 게시한 후 NOW(), TODAY(), 기준 날짜 필터링 및 타임스탬프(마지막으로 업데이트된 타임스탬프)에 기반한 계산이 예기치 않은 결과를 표시합니다. 계산, 필터 및 타임스탬프가 서로 다른 표준 시간대에서 계산된 것처럼 나타납니다.

환경

  • Tableau Online
  • Tableau Server

해결 방법

뷰에 표시된 날짜 및 날짜/시간 필드의 표준 시간대를 조정하려면

  1. Tableau Desktop에서 통합 문서를 엽니다.
  2. 분석 > 계산된 필드 만들기를 선택합니다.
    • 날짜/시간 필드에서 다음과 유사한 계산을 만듭니다.
      DATEADD('hour',<number of hours>,[<datetime field>])
    • 날짜 필드에서 다음과 유사한 계산을 만듭니다.
      IF DATEPART('hour', NOW()) > <PST time of midnight> then DATEADD('day', 1, <datetime field>) else <datetime field> end
      • 예: IF DATEPART('hour', NOW()) > 6 THEN DATEADD('day', 1, [Date]) else [Date] END 이 식은 시간이 자정에서 6시간 이상 지난 경우 "Date"라는 날짜 필드에 1일을 추가하고, 그렇지 않은 경우 날짜를 동일하게 유지합니다. 
      • DATEPART 또는 DATEADD 날짜 함수에 대한 자세한 내용은 Tableau 도움말에서 날짜 함수를 참조하십시오. 
  3. 뷰에 사용된 날짜/시간 필드를 새로 만든 계산된 필드로 바꿉니다.
  4. 통합 문서 또는 데이터 원본을 다시 게시합니다.


기준 날짜 필터를 데이터 집합의 최근 시간으로 필터링하는 계산으로 바꾸려면

  1. 다음과 같이 계산을 만듭니다.
    [DateTimeField] >= {FIXED: MAX(DATETRUNC('hour',[DateTimeField]))} 
  2. 필터 선반에 계산을 배치하고 "참"을 표시하도록 선택합니다. 


기준 날짜 필터를 원하는 표준 시간대의 "현재 시간"으로 필터링하는 계산으로 바꾸려면

  1. 다음과 같이 계산을 만듭니다. 참고로, 다음 계산은 태평양 표준시(Tableau Online 10ay)를 동부 표준시(가상 사용자)로 변환합니다.
    [DateTimeField] >= DATEADD('hour', 3, NOW()) 
  2. 필터 선반에 계산을 배치하고 "참"을 표시하도록 선택합니다. 

원인

통합 문서를 게시한 후 NOW(), TODAY(), 기준 날짜 필터링 및 타임스탬프가 Tableau Server 또는 Tableau Online의 표준 시간대로 지역화됩니다.

 

추가 정보

일광 절약 시간을 준수하는 지역에 있는 경우 시간을 이동하는 간격이 변경될 수 있습니다. 다음 계산에서는 일광 절약 시간이 3월 두 번째 일요일에 시작하여 11월 첫 번째 일요일에 끝난다고 가정하여 UTC 시간을 태평양 시간으로 변환합니다.
DATEADD('hour',
IF [<datetime field>] <= IFNULL(
    { FIXED DATETRUNC('year', [<datetime field>]) : MIN(
    IF DATEPART('month', [<datetime field>]) = 3
    THEN
    DATEADD('minute', 119, DATEADD('day',    IF DATEPART('weekday', DATETRUNC('month', [<datetime field>])) >1
    THEN 7 - (DATEPART('weekday', DATETRUNC('month', [<datetime field>])) - 1)
    ELSE 0
    END
    + 7,    DATETRUNC('month', [<datetime field>])
    ))
    END
    )}
, TODAY()+1)
OR [<datetime field>] >=
    { FIXED DATETRUNC('year', [<datetime field>]) : MIN(IF DATEPART('month', [<datetime field>]) = 11
    THEN
    DATEADD('minute', 119, DATEADD('day',    IF DATEPART('weekday', DATETRUNC('month', [<datetime field>])) >1
    THEN 7 - (DATEPART('weekday', DATETRUNC('month', [<datetime field>])) - 1)
    ELSE 0
    END,    DATETRUNC('month', [<datetime field>])
    ))
    END
    )}
THEN -8
ELSE -7
END,
[<datetime field>])



이 문서에 대한 논의... 피드백 포럼
이 문서로 문제가 해결되었습니까?