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시간 전의
<time>
을 가져오려면 다음을 실행합니다.#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
그런 후 다음 쿼리에서
<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시간 전의
<time1>
을 가져오려면 다음을 실행합니다.#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -1, 'HOUR')/1000)
30분 전의
<time2>
를 가져옵니다.#legacySQL SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()), -30, 'MINUTE')/1000)
다음 쿼리에서
<time1>
과<time2>
를 바꿉니다.#legacySQL SELECT COUNT(*) FROM [PROJECT_ID:DATASET.TABLE@time1-time2]