Cloud Storage 전송
Cloud Storage용 BigQuery Data Transfer Service 커넥터를 사용하면 Cloud Storage에서 BigQuery로 반복되는 데이터 로드를 예약할 수 있습니다.
시작하기 전에
Cloud Storage 데이터 전송을 만들기 전에 다음을 수행합니다.
- BigQuery Data Transfer Service 사용 설정에 필요한 모든 작업을 완료했는지 확인합니다.
- Cloud Storage URI를 검색합니다.
- 데이터를 저장할 BigQuery 데이터세트를 만듭니다.
- 데이터 전송을 위한 대상 테이블을 만들고 스키마 정의를 지정합니다.
- 고객 관리 암호화 키(CMEK)를 지정하려는 경우 서비스 계정에 암호화 및 복호화 권한이 있어야하며, Cloud KMS 키 리소스 ID가 필요합니다. CMEK가 BigQuery Data Transfer Service에서 작동하는 방식에 대한 자세한 내용은 전송에 암호화 키 지정을 참조하세요.
제한사항
Cloud Storage에서 BigQuery로 반복되는 데이터 전송에는 다음과 같은 제한사항이 적용됩니다.
- 데이터 전송에 와일드 카드 또는 런타임 파라미터로 정의한 패턴과 일치하는 모든 파일은 대상 테이블에 정의한 것과 동일한 스키마를 공유해야 합니다. 그렇지 않으면 전송이 실패합니다. 실행 사이에 테이블 스키마를 변경해도 전송이 실패합니다.
- Cloud Storage 객체는 버전을 지정할 수 있으므로 보관처리된 Cloud Storage 객체는 BigQuery 데이터 전송에서 지원되지 않는다는 점에 유의해야 합니다. 객체를 전송하려면 활성 상태여야 합니다.
- 지속적인 데이터 전송의 경우 Cloud Storage에서 BigQuery로 개별적으로 로드되는 데이터와 달리 전송을 설정하기 전에 대상 테이블을 만들어야 합니다. CSV 및 JSON 파일의 경우 테이블 스키마도 미리 정의해야 합니다. BigQuery에서는 반복되는 데이터 전송 프로세스 중에 테이블을 만들 수 없습니다.
- Cloud Storage에서 데이터 전송은 기본적으로 쓰기 환경설정 파라미터를
APPEND
로 설정합니다. 이 모드에서는 수정되지 않은 파일을 BigQuery에 한 번만 로드할 수 있습니다. 파일의last modification time
속성이 업데이트되면 파일이 새로고침됩니다. 데이터 전송 중에 Cloud Storage 파일이 수정되는 경우 BigQuery Data Transfer Service는 모든 파일이 전송되거나 한 번만 전송된다는 보장을 하지 않습니다. Cloud Storage 버킷에서 BigQuery로 데이터를 로드할 때는 다음과 같은 제한사항이 적용됩니다.
데이터 세트 위치가
US
멀티 리전 이외의 값으로 설정되면 Cloud Storage 버킷은 데이터 세트와 동일한 리전에 있거나 동일한 멀티 리전에 포함되어 있어야 합니다.BigQuery는 외부 데이터 소스의 데이터 일관성을 보장하지 않습니다. 쿼리가 실행되는 동안 기본 데이터가 변경되면 예상치 못한 동작이 발생할 수 있습니다.
BigQuery는 Cloud Storage 객체 버전 관리를 지원하지 않습니다. Cloud Storage URI에 세대 번호를 포함하면 로드 작업이 실패합니다.
Cloud Storage 소스 데이터 형식에 따라 추가 제한사항이 적용될 수 있습니다. 자세한 내용은 다음을 참고하세요.
Cloud Storage 버킷은 BigQuery에서 대상 데이터 세트의 리전이나 멀티 리전과 호환되는 위치에 있어야 합니다. 이를 코로케이션이라고 합니다. 자세한 내용은 Cloud Storage 전송 데이터 위치를 참조하세요.
최소 간격
- 소스 파일은 선택되어 즉시 데이터 전송되며 최소 파일 기간은 없습니다.
- 반복 데이터 전송 사이의 최소 간격은 15분입니다. 반복 데이터 전송의 기본 간격은 24시간입니다.
필수 권한
BigQuery로 데이터를 로드할 때는 데이터를 신규 또는 기존 BigQuery 테이블과 파티션에 로드할 수 있는 권한이 있어야 합니다. Cloud Storage에서 데이터를 로드하는 경우에는 데이터가 포함된 버킷에 대한 액세스 권한도 필요합니다. 다음과 같은 필수 권한이 있는지 확인합니다.
BigQuery: 데이터 전송을 만드는 사람 또는 서비스 계정에 다음과 같은 BigQuery의 권한이 있는지 확인합니다.
- 데이터 전송을 만드는
bigquery.transfers.update
권한 - 대상 데이터 세트에 대한
bigquery.datasets.get
및bigquery.datasets.update
권한
사전 정의된 IAM 역할
bigquery.admin
에는bigquery.transfers.update
,bigquery.datasets.update
,bigquery.datasets.get
권한이 있습니다. BigQuery Data Transfer Service의 IAM 역할에 대한 자세한 내용은 액세스 제어를 참조하세요.- 데이터 전송을 만드는
Cloud Storage: 개별 버킷에 대한
storage.objects.get
권한 또는 그 이상의 권한이 필요합니다. URI 와일드 카드를 사용 중인 경우에는storage.objects.list
권한도 있어야 합니다. 전송에 성공할 때마다 소스 파일을 삭제하려는 경우에는storage.objects.delete
권한도 필요합니다. 사전 정의된 IAM 역할storage.objectAdmin
에 이러한 모든 권한이 포함되어 있습니다.
Cloud Storage 전송 설정
BigQuery Data Transfer Service에서 Cloud Storage 데이터 전송을 만들려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔의 데이터 전송 페이지로 이동합니다.
전송 만들기를 클릭합니다.
소스 유형 섹션의 소스에 Google Cloud Storage를 선택합니다.
전송 구성 이름 섹션의 표시 이름에 데이터 전송 이름(예:
My Transfer
)을 입력합니다. 전송 이름은 나중에 수정해야 할 경우를 대비해 전송을 식별할 수 있는 값이면 됩니다.일정 옵션 섹션에서 다음을 수행합니다.
반복 빈도를 선택합니다. 시간, 일, 주 또는 월을 선택하면 빈도도 지정해야 합니다. 커스텀을 선택하여 커스텀 반복 빈도를 지정할 수도 있습니다. 주문형을 선택한 경우 수동으로 전송을 트리거하면 이 데이터 전송이 실행됩니다.
해당하는 경우 지금 시작 또는 설정 시간에 시작을 선택하고 시작 날짜와 실행 시간을 제공합니다.
대상 설정 섹션의 대상 데이터세트에서 데이터를 저장하기 위해 만든 데이터세트를 선택합니다.
데이터 소스 세부정보 섹션에서 다음을 수행합니다.
- 대상 테이블에 대상 테이블 이름을 입력합니다. 대상 테이블은 테이블 이름 지정 규칙을 따라야 합니다. 대상 테이블 이름은 매개변수로도 지정할 수 있습니다.
- Cloud Storage URI에 Cloud Storage URI를 입력합니다. 와일드 카드 및 매개변수가 지원됩니다.
- 쓰기 환경설정에서 다음을 선택합니다.
- APPEND: 기존 대상 테이블에 새 데이터를 증분식으로 추가합니다. APPEND는 쓰기 환경설정의 기본값입니다.
- MIRROR: 각 데이터 전송 실행 중에 대상 테이블의 데이터를 덮어씁니다.
BigQuery Data Transfer Service가 APPEND 또는 MIRROR를 사용하여 데이터를 수집하는 방법에 대한 자세한 내용은 Cloud Storage 전송을 위한 데이터 수집을 참조하세요.
writeDisposition
필드에 대한 자세한 내용은JobConfigurationLoad
를 참조하세요.- 데이터 전송이 성공할 때마다 소스 파일을 삭제하려면 전송 후 소스 파일 삭제 체크박스를 선택합니다. 삭제 작업은 최선의 방식으로 실행됩니다. 소스 파일을 삭제하려는 첫 번째 시도가 실패한 경우 삭제 작업은 재시도되지 않습니다.
전송 옵션 섹션에서 다음을 수행합니다.
- 모든 형식 아래에서 다음을 수행합니다.
- 허용되는 오류 개수에 작업을 실행할 때 BigQuery가 무시할 수 있는 불량 레코드의 최댓값을 입력합니다. 불량 레코드 수가 이 값을 초과하면 작업 결과에 '잘못된' 오류가 반환되고 작업이 실패합니다. 기본값은
0
입니다. - (선택사항) 십진수 타겟 유형에 소스 십진수 값을 변환할 수 있는 가능한 SQL 데이터 유형의 쉼표로 구분된 목록을 입력합니다. 변환에 적합한 SQL 데이터 유형은 다음 조건에 따라 달라집니다.
- 변환에 사용되는 데이터 유형은 다음 목록에서 소스 데이터의 정밀도 및 규모를 지원하는 첫 번째 데이터 유형이 됩니다. 순서는 NUMERIC, BIGNUMERIC, STRING입니다.
- 나열된 데이터 유형이 정밀도 및 규모를 지원하지 않는 경우 지정된 목록에서 가장 넓은 범위를 지원하는 데이터 유형이 선택됩니다. 소스 데이터를 읽을 때 값이 지원되는 범위를 초과하면 오류가 발생합니다.
- 데이터 유형 STRING은 모든 정밀도 및 규모 값을 지원합니다.
- 이 필드를 비워두면 데이터 유형은 기본적으로 ORC의 경우 "NUMERIC,STRING", 다른 파일 형식의 경우 "NUMERIC"으로 설정됩니다.
- 이 필드에 중복된 데이터 유형이 있으면 안 됩니다.
- 이 필드에 나열하는 데이터 유형의 순서는 무시됩니다.
- 허용되는 오류 개수에 작업을 실행할 때 BigQuery가 무시할 수 있는 불량 레코드의 최댓값을 입력합니다. 불량 레코드 수가 이 값을 초과하면 작업 결과에 '잘못된' 오류가 반환되고 작업이 실패합니다. 기본값은
- JSON, CSV 아래에서 다음을 수행합니다.
- 데이터 전송 시 대상 테이블의 스키마와 맞지 않는 데이터를 삭제하려면 알 수 없는 값 무시 체크박스를 선택합니다.
- AVRO에서 다음을 수행합니다.
- 데이터 전송에서 Avro 논리 유형을 해당하는 BigQuery 데이터 유형으로 변환하려면 avro 논리 유형 사용 체크박스를 선택합니다. 기본 동작은 대부분의 유형에 대해
logicalType
속성을 무시하고 대신 기본 Avro 유형을 사용합니다.
- 데이터 전송에서 Avro 논리 유형을 해당하는 BigQuery 데이터 유형으로 변환하려면 avro 논리 유형 사용 체크박스를 선택합니다. 기본 동작은 대부분의 유형에 대해
CSV 아래에서 다음을 수행합니다.
- 필드 구분 기호에 필드를 구분하는 문자를 입력합니다. 기본값은 쉼표입니다.
- 따옴표 문자에 CSV 파일에서 데이터 섹션을 인용하는 데 사용하는 문자를 입력합니다. 기본값은 큰 따옴표(
"
)입니다. - 건너뛸 헤더 행에 가져오지 않으려는 소스 파일의 헤더 행 수를 입력합니다. 기본값은
0
입니다. - 따옴표가 있는 필드 안에서 줄바꿈을 허용하려면 따옴표 안에 줄바꿈 허용 체크박스를 선택합니다.
- 누락된
NULLABLE
열이 있는 행을 데이터 전송하려면 불균일 행 허용 체크박스를 선택합니다.
- 모든 형식 아래에서 다음을 수행합니다.
서비스 계정 메뉴에서 Google Cloud 프로젝트와 연결된 서비스 계정의 서비스 계정을 선택합니다. 사용자 인증 정보를 사용하는 대신 서비스 계정을 데이터 전송에 연결할 수 있습니다. 데이터 전송에서 서비스 계정을 사용하는 방법에 대한 자세한 내용은 서비스 계정 사용을 참조하세요.
선택사항: 알림 옵션 섹션에서 다음을 수행합니다.
선택사항: 고급 옵션 섹션에서 다음을 수행합니다.
- CMEK를 사용하는 경우 고객 관리 키를 선택합니다. 선택할 수 있는 CMEK 목록이 표시됩니다.
CMEK가 BigQuery Data Transfer Service에서 작동하는 방식에 대한 자세한 내용은 전송에 암호화 키 지정을 참조하세요.
저장을 클릭합니다.
bq
bq mk
명령어를 입력하고 전송 생성 플래그 --transfer_config
를 지정합니다. 다음 플래그도 필요합니다.
--data_source
--display_name
--target_dataset
--params
선택적 플래그:
--destination_kms_key
: 이 데이터 전송에 고객 관리 암호화 키(CMEK)를 사용하는 경우 Cloud KMS 키의 키 리소스 ID를 지정합니다. CMEK가 BigQuery Data Transfer Service에서 작동하는 방식에 대한 자세한 내용은 전송에 암호화 키 지정을 참조하세요.--service_account_name
- 사용자 계정 대신 Cloud Storage 전송 인증에 사용할 서비스 계정을 지정합니다.
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=NAME \ --target_dataset=DATASET \ --destination_kms_key="DESTINATION_KEY" \ --params='PARAMETERS' \ --service_account_name=SERVICE_ACCOUNT_NAME
각 항목의 의미는 다음과 같습니다.
- PROJECT_ID는 프로젝트 ID입니다. 특정 프로젝트를 지정하는
--project_id
가 입력되지 않으면 기본 프로젝트가 사용됩니다. - DATA_SOURCE는 데이터 소스입니다(예:
google_cloud_storage
). - NAME은 데이터 전송 구성의 표시 이름입니다. 전송 이름은 나중에 수정해야 할 경우를 대비해 전송을 식별할 수 있는 값이면 됩니다.
- DATASET는 전송 구성 대상 데이터 세트입니다.
- DESTINATION_KEY: Cloud KMS 키 리소스 ID입니다(예:
projects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name
). - PARAMETERS에는 JSON 형식으로 생성된 전송 구성의 매개변수가 있습니다. 예를 들면
--params='{"param":"param_value"}'
입니다.destination_table_name_template
: 대상 BigQuery 테이블의 이름입니다.data_path_template
: 전송할 파일이 포함된 Cloud Storage URI입니다. 와일드 카드 1개를 포함할 수 있습니다.write_disposition
: 일치하는 파일이 대상 테이블에 추가되는지 또는 전체적으로 미러링되는지 결정합니다. 지원되는 값은APPEND
또는MIRROR
입니다. BigQuery Data Transfer Service가 Cloud Storage 전송에서 데이터를 추가하거나 미러링하는 방법은 Cloud Storage 전송을 위한 데이터 수집을 참조하세요.file_format
: 전송할 파일의 형식입니다. 형식은CSV
,JSON
,AVRO
,PARQUET
,ORC
입니다. 기본값은CSV
입니다.max_bad_records
: 모든file_format
값에 대해 무시할 수 있는 잘못된 레코드의 최대 개수입니다. 기본값은0
입니다.decimal_target_types
: 모든file_format
값에 대해 소스 십진수 값을 변환할 수 있는 가능한 SQL 데이터 유형의 쉼표로 구분된 목록입니다. 이 필드가 제공되지 않은 경우 데이터 유형이 기본적으로"NUMERIC,STRING"
(ORC
) 및"NUMERIC"
(다른 파일 형식)으로 설정됩니다.ignore_unknown_values
: 모든file_format
값에 대해 스키마와 일치하지 않는 값이 포함된 행을 수락하도록TRUE
로 설정합니다. 자세한 내용은JobConfigurationLoad
참조 테이블에서ignoreUnknownvalues
필드 세부정보를 참조하세요.use_avro_logical_types
:AVRO
file_format
값에 대해 원시 유형만 사용하는 대신(예:INTEGER
) 논리적 유형을 해당 유형으로 해석하도록(예:TIMESTAMP
)TRUE
로 설정합니다.parquet_enum_as_string
:PARQUET
file_format
값의 경우PARQUET
ENUM
논리적 유형을 기본BYTES
대신STRING
으로 유추하도록TRUE
로 설정합니다.parquet_enable_list_inference
:PARQUET
file_format
값의 경우 특히PARQUET
LIST
논리적 유형에 대해 스키마 추론을 사용하도록TRUE
로 설정합니다.reference_file_schema_uri
: 읽기 스키마가 있는 참조 파일에 대한 URI 경로입니다.field_delimiter
:CSV
file_format
값의 경우 필드를 구분하는 문자입니다. 기본값은 쉼표입니다.quote
:CSV
file_format
값의 경우 CSV 파일에서 데이터 섹션을 인용하는 데 사용되는 문자입니다. 기본값은 큰 따옴표("
)입니다.skip_leading_rows
:CSV
file_format
값의 경우 가져오지 않으려는 선행 헤더 행의 수를 나타냅니다. 기본값은 0입니다.allow_quoted_newlines
:CSV
file_format
값의 경우 인용된 필드 내의 줄바꿈을 허용하도록TRUE
로 설정합니다.allow_jagged_rows
:CSV
file_format
값의 경우 선택적인 후행 열이 누락된 행을 수락하도록TRUE
로 설정합니다. 누락된 값은NULL
로 채워집니다.preserve_ascii_control_characters
:CSV
file_format
값의 경우 임베딩된 ASCII 제어 문자를 보존하도록TRUE
로 설정합니다.encoding
:CSV
인코딩 유형을 지정합니다. 지원되는 값은UTF8
,ISO_8859_1
,UTF16BE
,UTF16LE
,UTF32BE
,UTF32LE
입니다.delete_source_files
: 각 전송이 성공한 후 소스 파일을 삭제하도록TRUE
로 설정합니다. 소스 파일을 삭제하려는 첫 번째 시도가 실패할 경우 삭제 작업이 다시 실행되지 않습니다. 기본값은FALSE
입니다.
- SERVICE_ACCOUNT_NAME은 전송을 인증하는 데 사용되는 서비스 계정 이름입니다. 서비스 계정은 전송을 만드는 데 사용한 것과 동일한
project_id
가 소유해야 하며 모든 필수 권한이 있어야 합니다.
예를 들어 다음 명령어는 gs://mybucket/myfile/*.csv
의 data_path_template
값, 대상 데이터 세트 mydataset
, file_format
CSV
를 사용하여 My Transfer
라는 Cloud Storage 데이터 전송을 만듭니다. 이 예시에는 CSV
file_format과 연관된 선택적 매개변수의 기본값이 아닌 값이 포함되어 있습니다.
기본 프로젝트에 데이터 전송이 생성됩니다.
bq mk --transfer_config \
--target_dataset=mydataset \
--project_id=myProject \
--display_name='My Transfer' \
--destination_kms_key=projects/myproject/locations/mylocation/keyRings/myRing/cryptoKeys/myKey \
--params='{"data_path_template":"gs://mybucket/myfile/*.csv",
"destination_table_name_template":"MyTable",
"file_format":"CSV",
"max_bad_records":"1",
"ignore_unknown_values":"true",
"field_delimiter":"|",
"quote":";",
"skip_leading_rows":"1",
"allow_quoted_newlines":"true",
"allow_jagged_rows":"false",
"delete_source_files":"true"}' \
--data_source=google_cloud_storage \
--service_account_name=abcdef-test-sa@abcdef-test.iam.gserviceaccount.com projects/862514376110/locations/us/transferConfigs/ 5dd12f26-0000-262f-bc38-089e0820fe38
명령어를 실행한 후 다음과 같은 메시지가 수신됩니다.
[URL omitted] Please copy and paste the above URL into your web browser and
follow the instructions to retrieve an authentication code.
안내에 따라 인증 코드를 명령줄에 붙여넣습니다.
API
projects.locations.transferConfigs.create
메서드를 사용하고 TransferConfig
리소스의 인스턴스를 지정합니다.
자바
이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.
BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.
전송을 통한 암호화 키 지정
고객 관리 암호화 키(CMEK)를 지정하여 전송 실행의 데이터를 암호화할 수 있습니다. CMEK를 사용하여 Cloud Storage에서의 전송을 지원할 수 있습니다.전송에 CMEK를 지정하면 BigQuery Data Transfer Service는 CMEK를 수집된 데이터의 모든 중간 디스크 캐시에 적용하여 전체 데이터 전송 워크플로가 CMEK를 준수하도록 합니다.
원래 CMEK를 사용해 생성되지 않은 전송의 경우 기존 전송을 업데이트하여 CMEK를 추가할 수 없습니다. 예를 들어 원래 기본적으로 암호화된 대상 테이블을 지금 CMEK로 암호화되도록 변경할 수 없습니다. 반대로 CMEK로 암호화된 대상 테이블을 다른 유형의 암호화가 적용되도록 변경할 수도 없습니다.
전송 구성이 원래 CMEK 암호화를 사용하여 생성된 경우 전송에 대해 CMEK를 업데이트할 수 있습니다. 전송 구성에 대해 CMEK를 업데이트하면 BigQuery Data Transfer Service는 전송의 다음 실행 시 CMEK를 대상 테이블에 전파하는데, 여기서 BigQuery Data Transfer Service는 전송 실행 중 오래된 CMEK를 새 CMEK로 대체합니다. 자세한 내용은 전송 업데이트를 참고하세요.
프로젝트 기본 키를 사용할 수도 있습니다. 전송과 함께 프로젝트 기본 키를 지정하면 BigQuery Data Transfer Service는 프로젝트 기본 키를 새 전송 구성의 기본 키로 사용합니다.
수동 전송 트리거
Cloud Storage에서 자동으로 예약된 데이터 전송 외에도 수동으로 추가 데이터 파일을 로드하는 전송을 트리거할 수 있습니다.
전송 구성이 런타임 매개변수화된 경우 추가 전송을 시작할 기간을 지정해야 합니다.
데이터 전송을 트리거하려면 다음 단계를 따르세요.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
데이터 전송을 클릭합니다.
목록에서 데이터 전송을 선택합니다.
지금 전송 실행 또는 백필 예약(런타임 매개변수화된 전송 구성)을 클릭합니다.
지금 전송 실행을 클릭한 경우 일회성 전송 실행 또는 특정 날짜에 실행(해당하는 경우)을 선택합니다. 특정 날짜에 실행을 선택한 경우 특정 날짜와 시간을 선택합니다.
백필 예약을 클릭한 경우 일회성 전송 실행 또는 특정 기간에 실행(해당하는 경우)을 선택합니다. 기간 실행을 선택한 경우 시작 및 종료 날짜와 시간을 선택합니다.
확인을 클릭합니다.
bq
bq mk
명령어를 입력하고 --transfer_run
플래그를 제공합니다. --run_time
플래그 또는 --start_time
및 --end_time
플래그를 사용할 수 있습니다.
bq mk \ --transfer_run \ --start_time='START_TIME' \ --end_time='END_TIME' \ RESOURCE_NAME
bq mk \ --transfer_run \ --run_time='RUN_TIME' \ RESOURCE_NAME
각 항목의 의미는 다음과 같습니다.
START_TIME과 END_TIME은
Z
로 끝나거나 유효한 시간대 오프셋을 포함하는 타임스탬프입니다. 예를 들면 다음과 같습니다.2017-08-19T12:11:35.00Z
2017-05-25T00:00:00+00:00
RUN_TIME은 데이터 전송 실행을 예약할 시간을 지정하는 타임스탬프입니다. 현재 시간으로 일회성 전송을 실행하려면
--run_time
플래그를 사용하면 됩니다.RESOURCE_NAME은 전송 리소스 이름(또는 전송 구성이라고 함)입니다(예:
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
). 전송의 리소스 이름을 모르면bq ls --transfer_config --transfer_location=LOCATION
명령어를 실행하여 리소스 이름을 찾습니다.
API
projects.locations.transferConfigs.startManualRuns
메서드를 사용하고 parent
매개변수를 사용하여 전송 구성 리소스를 제공합니다.
다음 단계
- Cloud Storage 전송에서 런타임 매개변수 알아보기
- BigQuery Data Transfer Service 자세히 알아보기