legacy SQL의 테이블 데코레이터

일반적으로 BigQuery는 쿼리를 실행할 때 열 전체를 검색합니다. legacy SQL에서 테이블 데코레이터를 사용하면 데이터의 하위 집합에 대한 쿼리를 더욱 경제적으로 실행할 수 있습니다. 테이블 복사, 테이블 내보내기 또는 tabledata.list를 사용한 데이터 나열 작업에서처럼 테이블을 읽을 때마다 테이블 데코레이터를 사용할 수 있습니다.

테이블 데코레이터는 <time>의 상댓값과 절댓값을 사용합니다. 상댓값은 음수로, 절댓값은 양수로 표시됩니다. 예를 들어 -3600000은 현재 시간 기준 1시간 전을 밀리초 단위로 표시한 것이며, 3600000은 1970년 1월 1일 이후의 1시간을 밀리초 단위로 표시한 것입니다.

시간 데코레이터

시간 데코레이터(이전에는 스냅샷 데코레이터)는 특정 시점의 테이블 이전 데이터를 참조합니다.

구문

@<time>
  • 에포크 이후의 <time>(밀리초)에서 테이블의 이전 데이터를 참조합니다.
  • <time>은 지난 7일 이내여야 하며 테이블 생성 시간보다 길거나 같아야 하지만, 테이블 삭제 또는 만료 시간보다 작아야 합니다.
  • @0은 테이블에 사용할 수 있는 가장 오래된 데이터를 참조하는 특수한 사례입니다.

시간 데코레이터는 legacy SQL 외부에서도 사용됩니다. bq cp 명령어에서 테이블을 삭제한 후 7일 이내에 삭제된 테이블(/bigquery/docs/managing-tables#undeletetable)을 복원하기 위해 사용할 수 있습니다.

예시

1시간 전의 테이블 이전 데이터를 가져오려면 다음 안내를 따르세요.

상댓값 예시

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000]

절댓값 예시

  1. 1시간 전의 <time>을 가져오려면 다음을 실행합니다.

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. 그런 후 다음 쿼리에서 <time>을 바꿉니다.

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time]
    

범위 데코레이터

구문

@<time1>-<time2>
  • <time1><time2>(에포크 이후의 경과 시간(밀리 초)) 사이에 추가된 테이블 데이터를 나타냅니다.
  • <time1><time2>는 지난 7일 이내여야 합니다.
  • <time2>는 선택사항이며 기본값은 'now'입니다.

예시

상댓값 예시

1시간 전과 30분 전 사이에 추가된 테이블 데이터를 가져오려면 다음 안내를 따르세요.

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-3600000--1800000]

지난 10분 동안의 데이터를 얻는 가져오는 방법:

#legacySQL
SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@-600000-]

절댓값 예시

1시간 전과 30분 전 사이에 추가된 테이블 데이터를 가져오려면 다음 안내를 따르세요.

  1. 1시간 전의 <time1>을 가져오려면 다음을 실행합니다.

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
    
  2. 30분 전의 <time2>를 가져옵니다.

    #legacySQL
    SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
    
  3. 다음 쿼리에서 <time1><time2>를 바꿉니다.

    #legacySQL
    SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]