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

Cloud Storage 전송을 설정할 때는 Cloud Storage 경로와 대상 테이블을 모두 매개변수화하여, 날짜별로 정리된 Cloud Storage 버킷에서 데이터를 로드할 수 있습니다. 다른 매개변수와 구분하기 위해 이러한 매개변수를 _runtime parameters_라고 부릅니다.

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

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

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

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

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

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

템플릿 시스템

Cloud Storage 전송은 템플릿 구문을 통해 대상 테이블 이름에서 런타임 매개변수를 지원합니다.

매개변수 템플릿 구문

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

  • {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 전송은 파티션을 나눈 대상 테이블과 파티션을 나누지 않은 대상 테이블에 쓸 수 있습니다. BigQuery에는 두 가지 유형의 테이블 파티션 나누기가 있습니다.

  • 내부 데이터화 시간으로 파티션을 나눈 테이블: 내부 데이터화 시간을 기준으로 파티션을 나눈 테이블입니다. Cloud Storage 전송의 경우 내부 데이터화 시간은 전송의 실행 시간입니다.
  • 파티션을 나눈 테이블: TIMESTAMP 또는 DATE 열을 기준으로 파티션을 나눈 테이블입니다.

대상 테이블의 열에서 파티션이 나뉜 경우 대상 테이블을 만들고 스키마를 지정할 때 파티션을 나눈 열을 식별합니다. 파티션을 나눈 테이블 만들기 및 사용에서 열을 기준으로 파티션을 나눈 테이블을 만드는 방법에 대해 자세히 알아보세요.

파티션 나누기 예

런타임 매개변수 예

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

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

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

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

소스(Cloud Storage URI) 대상 테이블 이름
구성됨 gs://bucket/*.csv mytable
평가됨 gs://bucket/*.csv mytable

모든 데이터 스냅샷을 내부 데이터화-시간으로 파티션을 나눈 테이블로 로드

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

소스(Cloud Storage URI) 대상 테이블 이름
구성됨 gs://bucket/*.csv mytable${run_time|”%Y%m%d”}
평가됨 gs://bucket/*.csv my_table$20180215

날짜별 데이터를 내부 데이터화-시간으로 파티션을 나눈 테이블로 로드

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

소스(Cloud Storage URI) 대상 테이블 이름
구성됨 gs://bucket/events-{run_time|"%Y%m%d"}/*.csv mytable${run_time|”%Y%m%d”}
평가됨 gs://bucket/events-20180215/*.csv my_table$20180215

다음 단계

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

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

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