【BigQuery】TIMESTAMP()orFORMAT_TIMESTAMP()로 UTC에서 JST로 변환

배경



BigQuery 정보



대화형 쿼리 실행 할 때 Console에서 BigQuery 웹 UI를 사용하고 구문 오류 등을 그 자리에서 바로 감지되는 것은 장점 중 하나이다.

발생한 문제


  • BigQuery에서 JST 형식의 TIMESTAMP 형식의 열에 데이터가 저장되어 있으며 이러한 데이터를 함수 계산하여 별도의 테이블 열로 만들면 기본적으로 UTC 형식으로 변환되어 새 테이블에 삽입됩니다. 버리는 경우.
  • FORMAT_TIMESTAMP( )를 사용하여 BigQuery 웹 UI에 두드리면 구문 오류가 없었지만 Clear 결과는 유효하지 않은 값을 반환했습니다.

  • 다음과 같이 쿼리하려고했습니다.

    실행해 보면, 이렇게 되어 있습니다.


    목표



    원래 테이블의 데이터를 JST로 변환하고 최신 날짜 데이터 (최대 값)를 비교하여 DATE로 추출합니다.

    FORMAT_TIMESTAMP()



    설명



    자료 목록
    1. 표준 SQL 함수 및 연산자
    2. FORMAT_TIMESTAMP()

    타임 스탬프를 지정된 format_string에 따라 포맷합니다.
    FORMAT_TIMESTAMP(format_string, timestamp[, time_zone])
    

    반환 데이터 유형
    STRING

    여기까지, 조사해 오면, 에러의 원인은 밝혀진 것 같습니다.MAX(STRING) 로 버렸는가? ! 설마! ! !
    이제 string_expression에서 timestamp_expression로 변환합시다.

    TIMESTAMP()



    설명



    자료 목록
    1. 표준 SQL 함수 및 연산자
    2. TIMESTAMP()
    TIMESTAMP(
      string_expression[, timezone] |
      date_expression[, timezone] |
      datetime_expression[, timezone]
    )
    

    과연, TIMESTAMP( )를 사용하면 좋을 것 같네요.
    빨리 BigQuery 웹 UI에 두드려 봅시다.

    오류 2020-01-29 00:00:00 UTC+9 가 잘 JST로 변환되어 DATE 형식의 2020-01-28로 추출되었습니다.


    정리 한마디



    복수의 함수, 연산자를 조합해 쿼리할 때나 형 변환을 빈번하게 행해질 때 등, 머리가 혼란이 되어 버리는 것이 자신에게는 보통? 일상적인? 그렇다면 한 개 하나의 함수를 정리할지 또 누군가에게 확인해 주시는지는 그런 실수를 억제할 수 있는 해결책이 아닐까요.

    좋은 웹페이지 즐겨찾기