전송에 런타임 매개변수 사용

Cloud Storage 또는 Amazon S3 전송을 설정할 때 URI와 대상 테이블 모두 매개변수화할 수 있으므로 날짜별로 구성된 버킷에서 데이터를 로드할 수 있습니다. 쿼리 매개변수와 구분하기 위해 이러한 매개변수를 _runtime parameters_라고 합니다.

전송에서 런타임 매개변수를 사용하면 다음을 수행할 수 있습니다.

  • 대상 테이블의 파티션을 나누는 방식 지정
  • 특정 날짜와 일치하는 파일 검색

사용 가능한 런타임 매개변수

Cloud Storage 또는 Amazon S3 전송을 설정할 때 런타임 매개변수를 사용하여 대상 테이블의 파티션을 나누는 방법을 지정할 수 있습니다.

매개변수 템플릿 유형
run_time 형식이 지정된 타임스탬프 일정에 따라 UTC 시간으로 표시됩니다. 정기적으로 예약된 전송의 경우 run_time은 원하는 실행 시간을 나타냅니다. 예를 들어 전송이 '24시간마다'로 설정된 경우 연속된 두 쿼리 사이의 run_time 차이는 정확히 24시간입니다(단, 실제 실행 시간에는 약간 차이가 있을 수 있음).

TransferRun.runTime을 참조하세요.
run_date 날짜 문자열 run_time 매개변수의 날짜는 %Y%m%d 형식으로 표시됩니다(예: '20180101'). 이 형식은 내부 데이터화 시간으로 파티션을 나눈 테이블에서 사용할 수 있습니다.

템플릿 시스템

Cloud Storage 및 Amazon S3 전송에서는 템플릿 구문을 통해 대상 테이블 이름에 런타임 매개변수를 사용할 수 있습니다.

매개변수 템플릿 구문

템플릿 구문은 기본 문자열 템플릿과 시간 오프셋을 지원합니다. 매개변수는 다음 형식으로 참조됩니다.

  • {run_date}
  • {run_time[+\-offset]|"time_format"}
매개변수 목적
run_date 이 매개변수는 YYYYMMDD 형식의 날짜로 대체됩니다.
run_time 이 매개변수는 다음 속성을 지원합니다.


offset
시간(h), 분(m), 초(s)의 순서로 표시되는 시간 오프셋입니다.
일(d)은 지원되지 않습니다.
소수가 허용됩니다(예: 1.5h).

time_format
형식이 지정된 문자열. 가장 일반적인 형식 지정 매개변수는 년(%Y), 월(%m), 일(%d)입니다.
파티션을 나눈 테이블에서는 YYYYMMDD가 필수 서픽스입니다. 이는 '%Y%m%d'와 같습니다.

datetime 요소 형식 지정에 대해 자세히 알아보세요.

사용 참고사항:
  • run_time, offset, time 형식 사이에 공백이 없어야 합니다.
  • 문자열에 리터럴 중괄호를 포함하려면 ‘\{‘ and ‘\}’로 이스케이프 처리합니다.
  • “YYYY|MM|DD”와 같은 time_format에 리터럴 따옴표 또는 세로 막대를 포함하려면 형식 문자열에서 ‘\”’ 또는 ‘\|’로 이스케이프 처리합니다.

매개변수 템플릿 예

다음 예는 다양한 시간 형식을 사용하여 대상 테이블 이름을 지정하고 실행 시간을 오프셋하는 방법을 보여줍니다.
run_time(UTC) 템플릿 매개변수 출력 대상 테이블 이름
2018-02-15 00:00:00 mytable mytable
2018-02-15 00:00:00 mytable_{run_time|"%Y%m%d"} mytable_20180215
2018-02-15 00:00:00 mytable_+25h{run_time|"%Y%m%d"} mytable_20180216
2018-02-15 00:00:00 mytable_-1h{run_time|"%Y%m%d"} mytable_20180214
2018-02-15 00:00:00 mytable_+1.5h{run_time|"%Y%m%d;%H"}
또는
mytable_+90m{run_time|"%Y%m%d;%H"}
mytable_2018021501
2018-02-15 00:00:00 {run_time+97s|"%Y%m%d"}_mytable_{run_time|"%H%M%s"} 20180215_mytable_000137

파티션 나누기 옵션

Cloud Storage 및 Amazon S3 전송은 파티션을 나누거나 파티션을 나누지 않은 대상 테이블에 쓸 수 있습니다. BigQuery에는 두 가지 유형의 테이블 파티션 나누기가 있습니다.

  • 수집 시간으로 파티션을 나눈 테이블: 수집 시간을 기준으로 파티션을 나눈 테이블입니다. Cloud Storage 및 Amazon S3 전송에서 수집 시간은 전송 실행 시간입니다.
  • 파티션을 나눈 테이블: TIMESTAMP 또는 DATE 열을 기준으로 파티션을 나눈 테이블입니다.

열을 기준으로 대상 테이블의 파티션을 나누는 경우 대상 테이블을 만들고 스키마를 지정할 때 파티션을 나눌 열을 식별합니다. 열을 기준으로 파티션을 나누는 테이블을 만드는 방법은 파티션을 나눈 테이블 생성 및 사용을 참조하세요.

파티션 나누기 예

런타임 매개변수 예

이 예는 일반적인 사용 사례에 와일드 카드 문자와 매개변수를 결합하는 방법을 보여줍니다. 모든 예에서 run_time2018-02-15 00:00:00(UTC)이라고 가정합니다.

현지 시간대를 기준으로 데이터의 파티션을 나누는 경우 템플릿 구문의 오프셋 메커니즘을 사용하여 UTC에서 시간 오프셋을 수동으로 계산해야 합니다.

Cloud Storage 또는 Amazon S3 데이터를 파티션을 나누지 않은 테이블로 전송

이 사용 사례에서는 Cloud Storage 또는 Amazon S3 버킷의 새 파일을 파티션을 나누지 않은 테이블에 로드합니다. 이 예에서는 URI에 와일드 카드를 사용하고 임시 새로고침 전송을 사용하여 최소한 한 시간이 지난 새 파일을 가져옵니다.

데이터 소스 소스 URI 대상 테이블 이름
Cloud Storage gs://bucket/*.csv mytable
Amazon S3 s3://bucket/*.csv mytable

모든 데이터 스냅샷을 수집-시간으로 파티션을 나눈 테이블에 로드

이 경우 지정된 URI의 모든 데이터는 오늘 날짜로 파티션을 나눈 테이블에 전송됩니다. 새로고침 전송에서 이 구성은 마지막 로드 이후에 새로 추가된 파일을 가져와 특정 파티션에 추가합니다.

데이터 소스 소스 URI 매개변수화된 대상 테이블 평가된 대상 테이블
Cloud Storage gs://bucket/*.csv mytable${run_time|"%Y%m%d"} my_table$20180215
Amazon S3 s3://bucket/*.csv mytable${run_time|"%Y%m%d"} my_table$20180215

날짜별 데이터를 수집-시간으로 파티션을 나눈 테이블에 로드

이 사용 사례에서는 오늘 날짜의 데이터를 오늘 날짜로 파티션을 나눈 테이블에 전송합니다. 이 예는 특정 날짜와 일치하는 새로 추가된 파일을 검색하여 검색된 데이터를 해당 파티션에 로드하는 새로고침 전송에 해당합니다.

데이터 소스 매개변수화된 URI 매개변수화된 대상 테이블 평가된 URI 평가된 대상 테이블
Cloud Storage gs://bucket/events-{run_time|"%Y%m%d"}/*.csv mytable${run_time|"%Y%m%d"} gs://bucket/events-20180215/*.csv my_table$20180215
Amazon S3 s3://bucket/events-{run_time|"%Y%m%d"}/*.csv mytable${run_time|"%Y%m%d"} s3://bucket/events-20180215/*.csv my_table$20180215

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.