전송 관리

이 문서에서는 기존 데이터 전송 구성을 관리하는 방법을 보여줍니다.

백필 실행을 시작해도 기존 전송을 수동으로 트리거할 수 있습니다.

전송 보기

각 전송에 대한 정보를 보고 모든 기존 전송을 나열하고 전송 실행 기록이나 로그 메시지를 확인하여 기존 전송 구성을 봅니다.

필요한 역할

전송 세부정보를 보는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 BigQuery 사용자(roles/bigquery.user) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

또한 Google Cloud 콘솔을 통해 로그 메시지를 보려면 Cloud Logging 데이터를 볼 수 있는 권한이 있어야 합니다. 로그 뷰어 역할(roles/logging.viewer)은 Logging의 모든 기능에 대한 읽기 전용 액세스 권한을 제공합니다. 클라우드 로그 데이터에 적용되는 Identity and Access Management(IAM) 권한과 역할에 대한 자세한 내용은 Cloud Logging 액세스 제어 가이드를 참조하세요.

BigQuery Data Transfer Service의 IAM 역할에 대한 자세한 내용은 액세스 제어를 참조하세요.

전송 세부정보 가져오기

전송을 만든 후 전송 구성 정보를 가져올 수 있습니다. 구성에는 전송을 만들 때 입력한 값과 리소스 이름과 같은 기타 중요한 정보가 포함됩니다.

전송 구성 정보를 가져오려면 다음 안내를 따르세요.

콘솔

  1. 데이터 전송 페이지로 이동합니다.

    데이터 전송으로 이동

  2. 세부정보를 가져올 전송을 선택합니다.

  3. 전송 구성 및 데이터 소스 세부정보를 보려면 전송 세부정보 페이지에서 구성을 클릭합니다. 다음 예시는 Google Ads 전송의 구성 속성을 보여줍니다.

    Console에서 전송 구성

bq

bq show 명령어를 입력하고 전송 구성 리소스 이름을 제공합니다. --format 플래그를 사용하면 출력 형식을 제어할 수 있습니다.

bq show \
--format=prettyjson \
--transfer_config resource_name

resource_name을 전송 리소스 이름(전송 구성이라고도 함)으로 바꿉니다. 전송 리소스 이름을 모르면 bq ls --transfer_config --transfer_location=location으로 리소스 이름을 찾습니다.

예를 들어 다음 명령어를 입력하여 전송 구성 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7을 표시합니다.

bq show \
--format=prettyjson \
--transfer_config projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

projects.locations.transferConfigs.get 메서드를 사용하고 name 매개변수를 사용하여 전송 구성을 제공합니다.

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.GetTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import java.io.IOException;

// Sample to get config info.
public class GetTransferConfigInfo {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    getTransferConfigInfo(configId);
  }

  public static void getTransferConfigInfo(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      GetTransferConfigRequest request =
          GetTransferConfigRequest.newBuilder().setName(configId).build();
      TransferConfig info = dataTransferServiceClient.getTransferConfig(request);
      System.out.print("Config info retrieved successfully." + info.getName() + "\n");
    } catch (ApiException ex) {
      System.out.print("config not found." + ex.toString());
    }
  }
}

전송 구성 나열

프로젝트의 모든 기존 전송 구성을 나열하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 데이터 전송 페이지로 이동합니다.

    데이터 전송으로 이동

  2. 프로젝트에 전송 구성이 있는 경우 전송 구성 목록이 데이터 전송 목록에 표시됩니다.

bq

프로젝트의 모든 전송 구성을 위치별로 나열하려면 bq ls 명령어를 입력하고 --transfer_location--transfer_config 플래그를 제공합니다. 또한 --project_id 플래그를 입력하여 특정 프로젝트를 지정할 수도 있습니다. --project_id를 지정하지 않으면 기본 프로젝트가 사용됩니다. --format 플래그를 사용하면 출력 형식을 제어할 수 있습니다.

특정 데이터 소스의 전송 구성을 나열하려면 --filter 플래그를 제공합니다.

특정 개수의 전송 구성을 페이지 번호 매김 형식으로 보려면 --max_results 플래그를 제공하여 전송 수를 제공합니다. 이 명령어는 --page_token 플래그를 사용하여 사용자가 제공하는 페이지 토큰을 반환하여 다음 n개 구성을 표시합니다. --max_results가 생략된 경우 반환되는 구성 한도는 1,000개이며 --max_results는 1,000보다 큰 값을 수락하지 않습니다. 프로젝트에 구성이 1,000개 넘게 있으면 --max_results--page_token을 사용하여 모두 반복합니다.

bq ls \
--transfer_config \
--transfer_location=location \
--project_id=project_id \
--max_results=integer \
--filter=dataSourceIds:data_sources

다음을 바꿉니다.

예를 들면 다음과 같습니다.

다음 명령어를 입력하여 기본 프로젝트의 미국 내 모든 전송 구성을 표시합니다. 출력은 --format 플래그를 통해 제어됩니다.

bq ls \
--format=prettyjson \
--transfer_config \
--transfer_location=us

다음 명령어를 입력하여 프로젝트 ID myproject에 대한 미국 내 모든 전송 구성을 표시합니다.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject

다음 명령어를 입력하여 최근 전송 구성 3개를 나열합니다.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject \
--max_results=3

이 명령어는 다음 페이지 토큰을 반환합니다. 페이지 토큰을 복사하고 이를 bq ls 명령어에 제공하여 다음 3개 결과를 확인합니다.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject \
--max_results=3 \
--page_token=AB1CdEfg_hIJKL

다음 명령어를 입력하여 프로젝트 ID myproject의 Ads 및 Campaign Manager 전송 구성을 나열합니다.

bq ls \
--transfer_config \
--transfer_location=us \
--project_id=myproject \
--filter=dataSourceIds:dcm_dt,google_ads

API

projects.locations.transferConfigs.list 메서드를 사용하고 parent 매개변수를 사용하여 프로젝트 ID를 제공합니다.

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ListTransferConfigsRequest;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import java.io.IOException;

// Sample to get list of transfer config
public class ListTransferConfigs {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    listTransferConfigs(projectId);
  }

  public static void listTransferConfigs(String projectId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      ListTransferConfigsRequest request =
          ListTransferConfigsRequest.newBuilder().setParent(parent.toString()).build();
      dataTransferServiceClient
          .listTransferConfigs(request)
          .iterateAll()
          .forEach(config -> System.out.print("Success! Config ID :" + config.getName() + "\n"));
    } catch (ApiException ex) {
      System.out.println("Config list not found due to error." + ex.toString());
    }
  }
}

Python

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

project_id = "my-project"
parent = transfer_client.common_project_path(project_id)

configs = transfer_client.list_transfer_configs(parent=parent)
print("Got the following configs:")
for config in configs:
    print(f"\tID: {config.name}, Schedule: {config.schedule}")

전송 실행 기록 보기

예약 전송이 실행됨에 따라 각 전송 구성의 전송 실행 성공과 실패를 포함한 실행 기록이 유지됩니다. 90일이 지난 전송 실행은 자동으로 실행 기록에서 삭제됩니다.

전송 구성 실행 기록을 보려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 데이터 전송 페이지로 이동합니다.

    데이터 전송으로 이동

  2. 데이터 전송 목록에서 전송을 클릭합니다.

  3. 선택한 전송에 대한 실행 기록 페이지가 표시됩니다.

bq

특정 전송 구성의 전송 실행을 나열하려면 bq ls 명령어를 입력하고 --transfer_run 플래그를 제공합니다. 또한 --project_id 플래그를 입력하여 특정 프로젝트를 지정할 수도 있습니다. resource_name에 프로젝트 정보가 없으면 --project_id 값이 사용됩니다. --project_id를 지정하지 않으면 기본 프로젝트가 사용됩니다. --format 플래그를 사용하면 출력 형식을 제어할 수 있습니다.

특정 개수의 전송 실행을 보려면 --max_results 플래그를 제공합니다. 이 명령어는 --page_token 플래그를 사용하여 사용자가 제공하는 페이지 토큰을 반환하여 다음 n개 구성을 표시합니다.

실행 상태를 기준으로 전송 실행을 나열하려면 --filter 플래그를 제공합니다.

bq ls \
--transfer_run \
--max_results=integer \
--transfer_location=location \
--project_id=project_id \
--filter=states:state, ... \
resource_name

다음을 바꿉니다.

  • integer는 반환할 결과 수입니다.
  • location은 전송 구성 위치입니다. location은 전송을 만들 때 지정됩니다.
  • project_id는 프로젝트 ID입니다.
  • state, ...는 다음 중 하나이거나 쉼표로 구분된 목록입니다.
    • SUCCEEDED
    • FAILED
    • PENDING
    • RUNNING
    • CANCELLED
  • resource_name은 전송 리소스 이름입니다(또는 전송 구성이라고 함). 전송 리소스 이름을 모르면 bq ls --transfer_config --transfer_location=location으로 리소스 이름을 찾습니다.

예를 들면 다음과 같습니다.

다음 명령어를 입력하여 전송 구성 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7의 최근 3회 실행 내역을 표시합니다. 출력은 --format 플래그를 통해 제어됩니다.

bq ls \
--format=prettyjson \
--transfer_run \
--max_results=3 \
--transfer_location=us \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

이 명령어는 다음 페이지 토큰을 반환합니다. 페이지 토큰을 복사하고 이를 bq ls 명령어에 제공하여 다음 3개 결과를 확인합니다.

bq ls \
--format=prettyjson \
--transfer_run \
--max_results=3 \
--page_token=AB1CdEfg_hIJKL \
--transfer_location=us \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

다음 명령어를 입력하여 전송 구성 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7의 실패한 모든 실행 내역을 표시합니다.

bq ls \
--format=prettyjson \
--transfer_run \
--filter=states:FAILED \
--transfer_location=us \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

projects.locations.transferConfigs.runs.list 메서드를 사용하고 parent 매개변수를 사용하여 프로젝트 ID를 지정합니다.

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ListTransferRunsRequest;
import java.io.IOException;

// Sample to get run history from transfer config.
public class RunHistory {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    runHistory(configId);
  }

  public static void runHistory(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ListTransferRunsRequest request =
          ListTransferRunsRequest.newBuilder().setParent(configId).build();
      dataTransferServiceClient
          .listTransferRuns(request)
          .iterateAll()
          .forEach(run -> System.out.print("Success! Run ID :" + run.getName() + "\n"));
    } catch (ApiException ex) {
      System.out.println("Run history not found due to error." + ex.toString());
    }
  }
}

전송 실행 세부정보 및 로그 메시지 보기

전송 실행이 실행 기록에 나타나면 로그 메시지, 경고 및 오류, 실행 이름, 시작 시간 및 종료 시간을 포함한 실행 세부정보를 확인할 수 있습니다.

전송 실행 세부정보를 보려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 데이터 전송 페이지로 이동합니다.

    데이터 전송으로 이동

  2. 데이터 전송 목록에서 전송을 클릭합니다.

  3. 선택한 전송에 대한 실행 기록 페이지가 표시됩니다.

  4. 전송의 개별 실행을 클릭하면 해당 전송 실행에 대한 실행 세부정보 패널이 열립니다.

  5. 실행 세부정보에서 오류 메시지를 확인합니다. 이 정보는 Cloud Customer Care에 문의하는 경우에 필요합니다. 실행 세부정보에는 로그 메시지와 경고도 포함됩니다.

    콘솔에서 세부정보 실행

bq

전송 실행 세부정보를 보려면 bq show 명령어를 입력하고 --transfer_run 플래그를 사용하여 전송 실행의 실행 이름을 제공합니다. --format 플래그를 사용하면 출력 형식을 제어할 수 있습니다.

bq show \
--format=prettyjson \
--transfer_run run_name

run_name을 전송 실행의 실행 이름으로 바꿉니다. bq ls 명령어를 사용하여 실행 이름을 검색할 수 있습니다.

예:

다음 명령어를 입력하여 전송 실행 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g의 세부정보를 표시합니다.

bq show \
--format=prettyjson \
--transfer_run \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

전송 실행의 전송 로그 메시지를 보려면 --transfer_log 플래그를 사용하여 bq ls 명령어를 입력합니다. --message_type 플래그를 사용하여 로그 메시지를 유형별로 필터링할 수 있습니다.

특정 개수의 로그 메시지를 보려면 --max_results 플래그를 제공합니다. 이 명령어는 --page_token 플래그를 사용하여 사용자가 제공하는 페이지 토큰을 반환하여 다음 n개 메시지를 표시합니다.

bq ls \
--transfer_log \
--max_results=integer \
--message_type=messageTypes:message_type \
run_name

다음을 바꿉니다.

  • integer는 반환할 로그 메시지 수입니다.
  • message_type은 보려는 로그 메시지 유형입니다(단일 값 또는 쉼표로 구분된 목록)
    • INFO
    • WARNING
    • ERROR
  • run_name은 전송 실행의 실행 이름입니다. bq ls 명령어를 사용하여 실행 이름을 검색할 수 있습니다.

예를 들면 다음과 같습니다.

다음 명령어를 입력하여 전송 실행 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g의 처음 2개 로그 메시지를 확인합니다.

bq ls \
--transfer_log \
--max_results=2 \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

이 명령어는 다음 페이지 토큰을 반환합니다. 페이지 토큰을 복사하고 이를 bq ls 명령어에 제공하여 다음 2개 결과를 확인합니다.

bq ls \
--transfer_log \
--max_results=2 \
--page_token=AB1CdEfg_hIJKL \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

전송 실행 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g의 오류 메시지만 확인하려면 다음 명령어를 입력합니다.

bq ls \
--transfer_log \
--message_type=messageTypes:ERROR \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7/runs/1a2b345c-0000-1234-5a67-89de1f12345g

API

projects.transferConfigs.runs.transferLogs.list 메서드를 사용하고 parent 매개변수를 사용하여 전송 실행의 실행 이름을 제공합니다.

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.GetTransferRunRequest;
import com.google.cloud.bigquery.datatransfer.v1.TransferRun;
import java.io.IOException;

// Sample to get run details from transfer config.
public class RunDetails {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // runId examples:
    // `projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}/runs/{run_id}`
    String runId = "MY_RUN_ID";
    runDetails(runId);
  }

  public static void runDetails(String runId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      GetTransferRunRequest request = GetTransferRunRequest.newBuilder().setName(runId).build();
      TransferRun run = dataTransferServiceClient.getTransferRun(request);
      System.out.print("Run details retrieved successfully :" + run.getName() + "\n");
    } catch (ApiException ex) {
      System.out.print("Run details not found." + ex.toString());
    }
  }
}

전송 수정

전송 구성에 대한 정보를 수정하고 전송 구성에 연결된 사용자의 사용자 인증 정보를 업데이트하고 전송을 중지하거나 삭제하여 기존 전송을 수정할 수 있습니다.

필요한 역할

전송을 수정하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 BigQuery 관리자(roles/bigquery.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

전송 업데이트

전송 구성을 만든 후 다음 필드를 수정할 수 있습니다.

  • 대상 데이터 세트
  • 표시 이름
  • 특정 전송 유형으로 지정된 매개변수
  • 실행 알림 설정
  • 서비스 계정

전송이 생성되면 전송 소스를 수정할 수 없습니다.

전송을 업데이트하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 데이터 전송 페이지로 이동합니다.

    데이터 전송으로 이동

  2. 데이터 전송 목록에서 전송을 클릭합니다.

  3. 수정을 클릭하여 전송 구성을 업데이트합니다.

bq

bq update 명령어를 입력하고 --transfer_config 플래그를 사용하여 전송 구성의 리소스 이름을 입력하고 --display_name, --params, --refresh_window_days, --schedule, 또는 --target_dataset 플래그를 제공합니다. 선택적으로 예약된 쿼리 또는 Cloud Storage 전송에 --destination_kms_key 플래그를 제공할 수 있습니다.

bq update \
--display_name='NAME' \
--params='PARAMETERS' \
--refresh_window_days=INTEGER \
--schedule='SCHEDULE'
--target_dataset=DATASET_ID \
--destination_kms_key="DESTINATION_KEY" \
--transfer_config \
--service_account_name=SERVICE_ACCOUNT \
RESOURCE_NAME

다음을 바꿉니다.

  • NAME: 전송 구성의 표시 이름입니다.
  • PARAMETERS: JSON 형식으로 생성된 전송 구성의 매개변수입니다. 예를 들면 --params='{"param1":"param_value1"}'입니다. 다음 매개변수를 수정할 수 있습니다.
    • Campaign Manager: bucketnetwork_id
    • Google Ad Manager: bucketnetwork_code
    • Google Ads: customer_id
    • Google 판매자 센터: merchant_id
    • Google Play: buckettable_suffix
    • 예약된 쿼리: destination_table_kms_key, destination_table_name_template, partitioning_field, partitioning_type, query, write_disposition
    • Search Ads 360: advertiser_id, agency_id, custom_floodlight_variables, include_removed_entities, table_filter
    • YouTube 채널: table_suffix
    • YouTube 콘텐츠 소유자: content_owner_idtable_suffix
  • INTEGER: 0~30 사이의 값입니다. 새로고침 창 설정 방법에 대한 자세한 내용은 전송 유형의 문서를 참조하세요.
  • SCHEDULE: 반복 일정입니다(예: --schedule="every 3 hours"). schedule 구문에 대한 설명은 schedule 형식 지정을 참조하세요.
  • DATASET_ID. 전송 구성의 대상 데이터 세트입니다.
  • DESTINATION_KEY: Cloud KMS 키 리소스 ID입니다(예: projects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name). CMEK는 예약된 쿼리 또는 Cloud Storage 전송에만 사용 가능합니다.
  • SERVICE_ACCOUNT: 이 전송에 사용할 서비스 계정을 지정합니다.
  • RESOURCE_NAME: 전송 리소스 이름입니다(전송 구성이라고도 함). 전송 리소스 이름을 모르면 bq ls --transfer_config --transfer_location=location으로 리소스 이름을 찾습니다.

예를 들면 다음과 같습니다.

다음 명령어는 Google Ads 전송 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7에 대한 표시 이름, 대상 데이터 세트, 새로고침 기간, 매개변수를 업데이트합니다.

bq update \
--display_name='My changed transfer' \
--params='{"customer_id":"123-123-5678"}' \
--refresh_window_days=3 \
--target_dataset=mydataset2 \
--transfer_config \
 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

다음 명령어는 예약된 쿼리 전송 projects/myproject/locations/us/transferConfigs/5678z567-5678-5z67-5yx9-56zy3c866vw9의 매개변수 및 일정을 업데이트합니다.

bq update \
--params='{"destination_table_name_template":"test", "write_disposition":"APPEND"}' \
--schedule="every 24 hours" \
--transfer_config \
projects/myproject/locations/us/transferConfigs/5678z567-5678-5z67-5yx9-56zy3c866vw9

API

projects.transferConfigs.patch 메서드를 사용하고 transferConfig.name 매개변수를 사용하여 전송의 리소스 이름을 제공합니다. 전송 리소스 이름을 모르면 bq ls --transfer_config --transfer_location=location로 리소스 이름을 찾으세요. 또한 projects.locations.transferConfigs.list 메서드를 호출하고 parent 매개변수를 사용해서 프로젝트 ID를 제공하여 모든 전송을 나열할 수 있습니다.

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update transfer config.
public class UpdateTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setName(configId)
            .setDisplayName("UPDATED_DISPLAY_NAME")
            .build();
    FieldMask updateMask = FieldMaskUtil.fromString("display_name");
    updateTransferConfig(transferConfig, updateMask);
  }

  public static void updateTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config updated successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not updated." + ex.toString());
    }
  }
}

Python

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

from google.cloud import bigquery_datatransfer
from google.protobuf import field_mask_pb2

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
new_display_name = "My Transfer Config"

transfer_config = bigquery_datatransfer.TransferConfig(name=transfer_config_name)
transfer_config.display_name = new_display_name

transfer_config = transfer_client.update_transfer_config(
    {
        "transfer_config": transfer_config,
        "update_mask": field_mask_pb2.FieldMask(paths=["display_name"]),
    }
)

print(f"Updated config: '{transfer_config.name}'")
print(f"New display name: '{transfer_config.display_name}'")

사용자 인증 정보 업데이트

전송은 전송을 만든 사용자의 사용자 인증 정보를 사용합니다. 전송 구성에 연결된 사용자를 변경해야 하는 경우, 전송 사용자 인증 정보를 업데이트할 수 있습니다. 이 기능은 전송을 만든 사용자가 더 이상 조직에 없는 경우에 유용합니다.

전송 사용자 인증 정보를 업데이트하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 소유권을 이전할 사용자로 로그인합니다.

  2. 데이터 전송 페이지로 이동합니다.

    데이터 전송으로 이동

  3. 데이터 전송 목록에서 전송을 클릭합니다.

  4. 더보기 메뉴를 클릭한 후 사용자 인증 정보 새로고침을 선택합니다.

  5. 허용을 클릭하여 보고 데이터를 확인하고 BigQuery 데이터에 액세스하고 관리할 수 있는 BigQuery Data Transfer Service 권한을 부여합니다.

bq

bq update 명령어를 입력하고 --transfer_config 플래그를 사용하여 전송 구성의 리소스 이름을 제공하고, --update_credentials 플래그를 제공합니다.

bq update \
--update_credentials=boolean \
--transfer_config \
resource_name

다음을 바꿉니다.

  • boolean은 전송 구성의 사용자 인증 정보를 업데이트해야 하는지 여부를 나타내는 부울 값입니다.
  • resource_name은 전송 리소스 이름입니다(또는 전송 구성이라고 함). 전송 리소스 이름을 모르면 bq ls --transfer_config --transfer_location=location으로 리소스 이름을 찾습니다.

예를 들면 다음과 같습니다.

다음 명령어를 입력하여 Google Ads 전송 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7의 사용자 인증 정보를 업데이트합니다.

bq update \
--update_credentials=true \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

projects.transferConfigs.patch 메서드를 사용하고 authorizationCodeupdateMask 매개변수를 제공합니다.

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update credentials in transfer config.
public class UpdateCredentials {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    String serviceAccount = "MY_SERVICE_ACCOUNT";
    TransferConfig transferConfig = TransferConfig.newBuilder().setName(configId).build();
    FieldMask updateMask = FieldMaskUtil.fromString("service_account_name");
    updateCredentials(transferConfig, serviceAccount, updateMask);
  }

  public static void updateCredentials(
      TransferConfig transferConfig, String serviceAccount, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .setServiceAccountName(serviceAccount)
              .build();
      dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Credentials updated successfully");
    } catch (ApiException ex) {
      System.out.print("Credentials was not updated." + ex.toString());
    }
  }
}

Python

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

from google.cloud import bigquery_datatransfer
from google.protobuf import field_mask_pb2

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

service_account_name = "abcdef-test-sa@abcdef-test.iam.gserviceaccount.com"
transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"

transfer_config = bigquery_datatransfer.TransferConfig(name=transfer_config_name)

transfer_config = transfer_client.update_transfer_config(
    {
        "transfer_config": transfer_config,
        "update_mask": field_mask_pb2.FieldMask(paths=["service_account_name"]),
        "service_account_name": service_account_name,
    }
)

print("Updated config: '{}'".format(transfer_config.name))

전송 중지

전송을 중지하면 disabled가 전송 이름에 추가됩니다. 전송을 중지하면 새 전송 실행이 예약되지 않고 새 백필이 허용되지 않습니다. 진행 중인 전송 실행은 완료됩니다.

전송을 중지해도 이미 BigQuery에 전송된 데이터는 삭제되지 않습니다. 개발자가 데이터 세트를 삭제하거나 테이블을 삭제할 때까지 이전에 전송한 데이터에 대한 표준 BigQuery 스토리지 요금이 청구됩니다.

전송을 중지하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 전송을 클릭합니다.

  3. 전송 페이지에서 사용 중지할 목록의 전송을 클릭합니다.

  4. 사용 중지를 클릭합니다. 전송을 다시 사용 설정하려면 사용을 클릭합니다.

bq

CLI에서는 전송 중지가 지원되지 않습니다.

API

projects.locations.transferConfigs.patch 메서드를 사용하고 projects.locations.transferConfig 리소스에서 disabledtrue로 설정합니다.

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to disable transfer config.
public class DisableTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder().setName(configId).setDisabled(true).build();
    FieldMask updateMask = FieldMaskUtil.fromString("disabled");
    disableTransferConfig(transferConfig, updateMask);
  }

  public static void disableTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config disabled successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not disabled." + ex.toString());
    }
  }
}

전송을 다시 사용 설정하려면 다음 안내를 따르세요.

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.bigquerydatatransfer;

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.cloud.bigquery.datatransfer.v1.UpdateTransferConfigRequest;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to disable transfer config.
public class DisableTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    TransferConfig transferConfig =
        TransferConfig.newBuilder().setName(configId).setDisabled(true).build();
    FieldMask updateMask = FieldMaskUtil.fromString("disabled");
    disableTransferConfig(transferConfig, updateMask);
  }

  public static void disableTransferConfig(TransferConfig transferConfig, FieldMask updateMask)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      UpdateTransferConfigRequest request =
          UpdateTransferConfigRequest.newBuilder()
              .setTransferConfig(transferConfig)
              .setUpdateMask(updateMask)
              .build();
      TransferConfig updateConfig = dataTransferServiceClient.updateTransferConfig(request);
      System.out.println("Transfer config disabled successfully :" + updateConfig.getDisplayName());
    } catch (ApiException ex) {
      System.out.print("Transfer config was not disabled." + ex.toString());
    }
  }
}

전송 삭제

전송이 삭제되면 새 전송 실행이 예약되지 않습니다. 진행 중인 전송 실행은 중지됩니다.

전송을 삭제해도 BigQuery로 이미 전송된 데이터는 삭제되지 않습니다. 개발자가 데이터 세트를 삭제하거나 테이블을 삭제할 때까지 이전에 전송한 데이터에 대한 표준 BigQuery 스토리지 요금이 청구됩니다.

전송을 삭제하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 전송을 클릭합니다.

  3. 전송 페이지에서 삭제할 목록의 전송을 클릭합니다.

  4. 삭제를 클릭합니다. 안전을 위해 상자에 'delete'라는 단어를 입력하여 작업을 확인해야 합니다.

bq

bq rm 명령어를 입력하고 전송 구성 리소스 이름을 제공합니다. -f 플래그를 사용하면 확인 없이 전송 구성을 삭제할 수 있습니다.

bq rm \
-f \
--transfer_config \
resource_name

각 항목의 의미는 다음과 같습니다.

예를 들어 다음 명령어를 입력하여 전송 구성 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7을 표시합니다.

bq rm \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

projects.locations.transferConfigs.delete 메서드를 사용하고 name 매개변수를 사용하여 삭제하려는 리소스를 제공합니다.

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.DeleteTransferConfigRequest;
import java.io.IOException;

// Sample to delete a transfer config
public class DeleteTransferConfig {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // i.e projects/{project_id}/transferConfigs/{config_id}` or
    // `projects/{project_id}/locations/{location_id}/transferConfigs/{config_id}`
    String configId = "MY_CONFIG_ID";
    deleteTransferConfig(configId);
  }

  public static void deleteTransferConfig(String configId) throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      DeleteTransferConfigRequest request =
          DeleteTransferConfigRequest.newBuilder().setName(configId).build();
      dataTransferServiceClient.deleteTransferConfig(request);
      System.out.println("Transfer config deleted successfully");
    } catch (ApiException ex) {
      System.out.println("Transfer config was not deleted." + ex.toString());
    }
  }
}

Python

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import google.api_core.exceptions
from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
try:
    transfer_client.delete_transfer_config(name=transfer_config_name)
except google.api_core.exceptions.NotFound:
    print("Transfer config not found.")
else:
    print(f"Deleted transfer config: {transfer_config_name}")

수동 전송 트리거

백필 실행이라고도 하는 전송을 수동으로 트리거하여 자동 예약 전송 외부의 추가 데이터 파일을 로드할 수 있습니다. 런타임 매개변수를 지원하는 데이터 소스를 사용하면 이전 데이터를 로드할 날짜나 시간 범위를 지정하여 전송을 수동으로 트리거할 수도 있습니다.

언제든지 데이터 백필을 수동으로 시작할 수 있습니다. 소스 제한 외에도 BigQuery Data Transfer Service는 백필 요청당 최대 180일을 지원합니다. 동시 백필 요청은 지원되지 않습니다.

백필에 사용할 수 있는 데이터 양은 해당 데이터 소스의 전송 가이드를 참조하세요.

필요한 역할

전송을 수정하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 BigQuery 관리자(roles/bigquery.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

수동으로 전송 또는 백필 트리거

다음 방법을 사용하여 전송 또는 백필 실행을 수동으로 트리거할 수 있습니다.

  • Google Cloud 콘솔을 사용하여 전송 실행을 선택한 후 지금 전송 실행 또는 백필 예약을 클릭합니다.
  • bq 명령줄 도구를 사용하여 bq mk –transfer run 명령어를 사용합니다.
  • projects.locations.transferConfigs.startManualRuns method API 메서드를 호출합니다.

각 메서드에 대한 자세한 내용을 보려면 해당 탭을 선택하세요.

콘솔

  1. Google Cloud 콘솔에서 데이터 전송 페이지로 이동합니다.

    데이터 전송으로 이동

  2. 목록에서 전송을 선택합니다.

  3. 지금 전송 실행 또는 백필 예약을 클릭합니다. 전송 구성 유형에 따라 옵션 하나만 사용할 수 있습니다.

    • 지금 전송 실행을 클릭한 경우 일회성 전송 실행 또는 특정 날짜에 실행(해당하는 경우)을 선택합니다. 특정 날짜에 실행을 선택한 경우 특정 날짜와 시간을 선택합니다.

      지금 전송 실행

    • 백필 예약을 클릭한 경우 일회성 전송 실행 또는 특정 기간에 실행(해당하는 경우)을 선택합니다. 기간 실행을 선택한 경우 시작 및 종료 날짜와 시간을 선택합니다.

      백필 예약

  4. OK(확인)를 클릭합니다.

bq

전송 실행을 수동으로 시작하려면 --transfer_run 플래그와 함께 bq mk 명령어를 입력합니다.

bq mk \
--transfer_run \
--run_time='RUN_TIME' \
RESOURCE_NAME

다음을 바꿉니다.

  • RUN_TIME은 이전 전송 날짜를 지정하는 타임스탬프입니다. Z로 끝나거나 유효한 시간대 오프셋이 포함된 타임스탬프를 사용합니다(예: 2022-08-19T12:11:35.00Z 또는 2022-05-25T00:00:00+00:00).
    • 전송에 런타임 매개변수가 없거나 이전 전송을 지정하지 않고 지금 전송을 트리거하려면 이 필드에 현재 시간을 입력합니다.
  • RESOURCE_NAME은 전송 구성에 나열된 리소스 이름입니다(예: projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7).

일정 기간 동안 전송 실행을 수동으로 시작하려면 --transfer_run 플래그, 기간과 함께 bq mk 명령어를 입력합니다.

bq mk \
--transfer_run \
--start_time='START_TIME' \
--end_time='END_TIME' \
RESOURCE_NAME

다음을 바꿉니다.

  • START_TIMEEND_TIME은 Z로 끝나거나 유효한 시간대 오프셋이 포함된 타임스탬프입니다. 이러한 값은 백필하려는 이전 전송 실행이 포함된 시간 범위를 지정합니다(예: 2022-08-19T12:11:35.00Z 또는 2022-05-25T00:00:00+00:00).
  • RESOURCE_NAME은 전송 구성에 나열된 리소스 이름입니다(예: projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7).

API

전송 실행을 수동으로 시작하려면 projects.locations.transferConfigs.startManualRuns 메서드를 사용하고 상위 매개변수를 사용하여 전송 구성 리소스 이름을 입력합니다. 전송 구성 리소스 이름을 찾으려면 전송 정보 가져오기를 참조하세요.

  "requestedRunTime": "RUN_TIME"

다음을 바꿉니다.

  • RUN_TIME은 이전 전송 날짜를 지정하는 타임스탬프입니다. Z로 끝나거나 유효한 시간대 오프셋이 포함된 타임스탬프를 사용합니다(예: 2022-08-19T12:11:35.00Z 또는 2022-05-25T00:00:00+00:00).
    • 전송에 런타임 매개변수가 없거나 이전 전송을 지정하지 않고 지금 전송을 트리거하려면 이 필드에 현재 시간을 입력합니다.

날짜 범위의 전송 실행을 수동으로 시작하려면 기간을 입력합니다.

"requestedTimeRange": {
  "startTime": "START_TIME",
  "endTime": "END_TIME"
}

다음을 바꿉니다.

  • START_TIMEEND_TIME은 Z로 끝나거나 유효한 시간대 오프셋이 포함된 타임스탬프입니다. 이러한 값은 백필하려는 이전 전송 실행이 포함된 시간 범위를 지정합니다(예: 2022-08-19T12:11:35.00Z 또는 2022-05-25T00:00:00+00:00).

Java

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsRequest;
import com.google.cloud.bigquery.datatransfer.v1.ScheduleTransferRunsResponse;
import com.google.protobuf.Timestamp;
import java.io.IOException;
import org.threeten.bp.Clock;
import org.threeten.bp.Instant;
import org.threeten.bp.temporal.ChronoUnit;

// Sample to run schedule back fill for transfer config
public class ScheduleBackFill {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String configId = "MY_CONFIG_ID";
    Clock clock = Clock.systemDefaultZone();
    Instant instant = clock.instant();
    Timestamp startTime =
        Timestamp.newBuilder()
            .setSeconds(instant.minus(5, ChronoUnit.DAYS).getEpochSecond())
            .setNanos(instant.minus(5, ChronoUnit.DAYS).getNano())
            .build();
    Timestamp endTime =
        Timestamp.newBuilder()
            .setSeconds(instant.minus(2, ChronoUnit.DAYS).getEpochSecond())
            .setNanos(instant.minus(2, ChronoUnit.DAYS).getNano())
            .build();
    scheduleBackFill(configId, startTime, endTime);
  }

  public static void scheduleBackFill(String configId, Timestamp startTime, Timestamp endTime)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ScheduleTransferRunsRequest request =
          ScheduleTransferRunsRequest.newBuilder()
              .setParent(configId)
              .setStartTime(startTime)
              .setEndTime(endTime)
              .build();
      ScheduleTransferRunsResponse response = client.scheduleTransferRuns(request);
      System.out.println("Schedule backfill run successfully :" + response.getRunsCount());
    } catch (ApiException ex) {
      System.out.print("Schedule backfill was not run." + ex.toString());
    }
  }
}

Python

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import datetime

from google.cloud.bigquery_datatransfer_v1 import (
    DataTransferServiceClient,
    StartManualTransferRunsRequest,
)

# Create a client object
client = DataTransferServiceClient()

# Replace with your transfer configuration name
transfer_config_name = "projects/1234/locations/us/transferConfigs/abcd"
now = datetime.datetime.now(datetime.timezone.utc)
start_time = now - datetime.timedelta(days=5)
end_time = now - datetime.timedelta(days=2)

# Some data sources, such as scheduled_query only support daily run.
# Truncate start_time and end_time to midnight time (00:00AM UTC).
start_time = datetime.datetime(
    start_time.year, start_time.month, start_time.day, tzinfo=datetime.timezone.utc
)
end_time = datetime.datetime(
    end_time.year, end_time.month, end_time.day, tzinfo=datetime.timezone.utc
)

requested_time_range = StartManualTransferRunsRequest.TimeRange(
    start_time=start_time,
    end_time=end_time,
)

# Initialize request argument(s)
request = StartManualTransferRunsRequest(
    parent=transfer_config_name,
    requested_time_range=requested_time_range,
)

# Make the request
response = client.start_manual_transfer_runs(request=request)

# Handle the response
print("Started manual transfer runs:")
for run in response.runs:
    print(f"backfill: {run.run_time} run: {run.name}")

로그 기록 및 모니터링

BigQuery Data Transfer Service는 전송에 대한 관측 가능성을 제공하는 Cloud Monitoring 및 Cloud Logging으로 로그와 측정항목을 내보냅니다. Monitoring을 사용하여 전송을 모니터링하도록 대시보드를 설정하고, 전송 실행 성능을 평가하고, 오류 메시지를 확인하여 전송 실패 문제를 해결할 수 있습니다. Logging을 사용하여 전송 실행 또는 전송 구성과 관련된 로그를 볼 수 있습니다.

전송 활동 및 데이터 액세스 로그와 관련해 BigQuery Data Transfer Service에 제공되는 감사 로그를 확인할 수도 있습니다.