転送の操作

BigQuery Data Transfer Service を使用して転送を作成すると、次の操作が可能になります。

  • 転送構成に関する情報の取得
  • 転送構成の一覧表示
  • 転送の実行履歴の表示
  • ログメッセージなどの転送実行の詳細の表示
  • 転送の更新
  • バックフィルの設定
  • 認証情報の更新
  • 転送の無効化
  • 転送の削除

転送に関する情報の取得

転送を作成すると、転送の構成に関する情報を取得できます。この構成には、転送を作成したときに指定した値が含まれます。

必要な権限

転送に関する情報を取得するには、bigquery.transfers.get 権限が必要です。次の IAM 事前定義ロールには bigquery.transfers.get 権限が含まれています。

  • bigquery.admin
  • bigquery.user

bigquery.transfers.get 権限が付与されたユーザーは、プロジェクトのすべての転送に関する情報を表示できます。

BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

転送に関する情報の取得

転送構成に関する情報を取得するには:

Console

  1. Cloud Console で、BigQuery ページに移動します。

    [BigQuery] ページに移動

  2. [転送] をクリックします。

  3. [転送] ページで、リストから該当する転送をクリックします。

  4. 選択した転送の [構成] をクリックします。

  5. 転送構成とデータソースの詳細が表示されます。次の例は、Teradata の移行の構成プロパティを示しています。

    Console での転送構成

bq

bq show コマンドを入力して、転送構成のリソース名を指定します。--format フラグを使用して出力を制御できます。

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

ここで

たとえば、転送構成 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 パラメータで転送構成を指定します。

Java

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());
    }
  }
}

転送構成の一覧表示

必要な権限

プロジェクト内のすべての転送または転送構成を一覧表示するには、bigquery.transfers.get 権限が必要です。次の IAM 事前定義ロールには bigquery.transfers.get 権限が含まれています。

  • bigquery.admin
  • bigquery.user

bigquery.transfers.get 権限が付与されたユーザーは、プロジェクトのすべての転送を一覧表示できます。

BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

転送の一覧表示

プロジェクトの転送構成を一覧表示するには:

Console

  1. Cloud Console で、BigQuery ページに移動します。

    [BigQuery] ページに移動

  2. [転送] をクリックします。

  3. 転送構成がプロジェクトにある場合、転送構成のリストは、[転送] ページに表示されます。

bq

プロジェクトのすべての転送構成をロケーション別に一覧表示するには、bq ls コマンドを入力して、--transfer_location フラグと --transfer_config フラグを指定します。--project_id フラグを指定して、特定のプロジェクトを指定することもできます。--project_id を指定しない場合は、デフォルトのプロジェクトが使用されます。--format フラグを使用して出力を制御できます。

--filter フラグを指定すると、特定のデータソースの転送構成を一覧表示できます。

特定の数の転送構成をページ分け形式で表示するには、--max_results フラグを使用して転送の数を指定します。このコマンドは、--page_token フラグを使用して、指定したページトークンを返し、次の n 個の構成を表示します。

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

ここで

  • location は、転送構成のロケーションです。ロケーションは、転送を作成するときに指定されます。
  • project_id は、プロジェクト ID です。
  • integer は 1 ページに表示する結果の数です。
  • data_sources は次のいずれかです。
    • dcm_dt: キャンペーン マネージャー
    • google_cloud_storage: クラウド ストレージ
    • cross_region_copyデータセットをコピーする
    • dfp_dt: Google アド マネージャー
    • adwords: Google 広告
    • merchant_center: Google Merchant Center
    • play: Google Play
    • doubleclick_search: 検索広告 360
    • youtube_channel: YouTube - チャンネル レポート
    • youtube_content_owner: YouTube - コンテンツ所有者レポート

例:

US にあるデフォルトのプロジェクトのすべての転送構成を表示するには、次のコマンドを入力します。--format フラグを使用して出力を制御します。

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

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 の広告とキャンペーン マネージャーの転送構成を一覧表示するには、次のコマンドを入力します。

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

API

projects.locations.transferConfigs.list メソッドを使用して、parent パラメータでプロジェクト ID を指定します。

Java

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());
    }
  }
}

実行履歴の表示

スケジュールされた転送が実行されると、成功した転送実行と失敗した転送実行を含む実行履歴が転送構成ごとに保持されます。90 日が経過した転送実行は実行履歴から自動的に削除されます。

必要な権限

転送構成の実行履歴を表示するには、bigquery.transfers.get 権限が必要です。bigquery.transfers.get 権限は、IAM 事前定義ロール bigquery.user に含まれています。

BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

実行履歴の表示

転送構成の実行履歴を表示するには:

Console

  1. Cloud Console で、BigQuery ページに移動します。

    [BigQuery] ページに移動

  2. [転送] をクリックします。

  3. [転送] ページで、リストから該当する転送をクリックします。

  4. 選択した転送の [実行履歴] ページが表示されます。

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 は、転送構成のロケーションです。ロケーションは、転送を作成するときに指定されます。
  • 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.list メソッドを使用して、parent パラメータでプロジェクト ID を指定します。

Java

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());
    }
  }
}

転送実行の詳細とログメッセージの表示

実行履歴に転送実行が表示されたら、ログメッセージ、警告とエラー、実行名、開始時間と終了時間などの実行の詳細を表示できます。

必要な権限

転送実行の詳細を表示するには、bigquery.transfers.get 権限が必要です。bigquery.transfers.get 権限は、IAM 事前定義ロール bigquery.user に含まれています。

BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

転送実行の詳細の表示

転送実行の詳細を表示するには:

Console

  1. Cloud Console で、BigQuery ページに移動します。

    [BigQuery] ページに移動

  2. [転送] をクリックします。

  3. [転送] ページで、リストから該当する転送をクリックします。

  4. 選択した転送の [実行履歴] ページが表示されます。

  5. 転送の個別の実行をクリックして [実行の詳細] パネルをクリックすると、その転送の実行が開きます。

  6. [実行の詳細] で、エラー メッセージを確認します。この情報は、Google Cloud サポートへのお問い合わせの際に必要になります。実行の詳細には、ログメッセージと警告も含まれます。

    Console での実行の詳細

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 パラメータで転送実行の実行名を指定します。

Java

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());
    }
  }
}

転送の更新

転送が追加されると、転送を編集できます。転送の作成中に入力されたフィールドはすべて編集できます([Source] を除く)。

  • 宛先データセット
  • 表示名
  • 特定の転送タイプに指定されたすべてのパラメータ
  • 実行通知設定

必要な権限

転送を更新するには、bigquery.transfers.update 権限が必要です。bigquery.transfers.update 権限は、IAM 事前定義ロール bigquery.admin に含まれています。

BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

転送の更新

転送を更新するには:

Console

  1. Cloud Console で、BigQuery ページに移動します。

    [BigQuery] ページに移動

  2. [転送] をクリックします。

  3. [転送] ページで、リストから該当する転送をクリックします。

  4. [編集] をクリックして転送構成を更新します。

bq

bq update コマンドを入力して、--transfer_config フラグを使用して転送構成のリソース名を指定して、--display_name--target_dataset--refresh_window_days、または --params のフラグを指定します。

bq update \
--display_name='name' \
--target_dataset=dataset \
--params='parameters' \
--refresh_window_days=integer \
--transfer_config \
resource_name

ここで

  • name は、転送構成の表示名です。
  • dataset は、転送構成の抽出先データセットです。
  • parameters には、転送構成のパラメータを JSON 形式で指定します。例: --params='{"param":"param_value"}'。次のパラメータは編集できます。
    • Google 広告: customer_id
    • キャンペーン マネージャー: bucketnetwork_id
    • Google アド マネージャー: bucketnetwork_code
    • Google Merchant Center: merchant_id
    • Google Play: buckettable_suffix
    • 検索広告 360: agency_idadvertiser_idinclude_removed_entitiestable_filtercustom_floodlight_variables
    • YouTube チャンネル: table_suffix
    • YouTube コンテンツ所有者: content_owner_idtable_suffix
  • integer は 0~30 の値です。ウィンドウの更新構成については、転送タイプのドキュメントをご覧ください。
  • resource_name は、転送のリソース名(転送構成)です。転送のリソース名が不明の場合は、bq ls --transfer_config --transfer_location=location コマンドを発行してすべての転送を一覧表示します。

例:

Google 広告の転送 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7 の表示名、ターゲット データセット、更新ウィンドウ、パラメータを更新するには、次のコマンドを入力します。

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

API

projects.transferConfigs.patch メソッドを使用して、transferConfig.name パラメータで転送構成のリソース名を指定します。転送のリソース名が不明の場合は、bq ls --transfer_config --transfer_location=location コマンドを発行してすべての転送を一覧表示するか、projects.locations.transferConfigs.list メソッドを呼び出して、parent パラメータでプロジェクト ID を指定します。

Java

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());
    }
  }
}

バックフィルと更新実行の設定

更新を実行する

以下のタイプの転送では、バックフィルを使用できません。ただし、更新実行を設定することはできます。

バックフィル

データのバックフィルは、いつでも手動で開始できます。ソースの制限とは別に、BigQuery Data Transfer Service は、バックフィル リクエストごとに最大 180 日間のサポートを提供します。同時バックフィル リクエストはサポートされていません。

バックフィルできるデータ量については、データソースのドキュメントをご覧ください。

  • キャンペーン マネージャー
  • Google アド マネージャー
  • Google 広告
    • Google 広告のバックフィルを構成すると、マッチテーブルのスナップショットが 1 日に 1 回取得され、最新の実行日付のパーティションに保存されます。バックフィルをスケジュールすると、次のテーブルのマッチテーブル スナップショットは更新されません。
      • Ad
      • AdGroup
      • AgeRange
      • Audience
      • BidGoal
      • Budget
      • Campaign
      • Criteria
      • Customer
      • Gender
      • Keyword
      • LocationBasedCampaignCriterion
      • ParentalStatus
      • Placement
      • Video
  • Google Merchant Center(ベータ版)
  • Google Play
  • 検索広告 360
    • 検索広告 360 のバックフィルを設定すると、マッチテーブルのスナップショットが 1 日 1 回取得され、最新の実行日付のパーティションに保存されます。バックフィルをスケジュールすると、次のテーブルのマッチテーブル スナップショットは更新されません。
      • Account
      • Ad
      • Advertiser
      • AdGroup
      • AdGroupTarget
      • BidStrategy
      • Campaign
      • CampaignTarget
      • FeedItem
      • FloodlightActivity
      • Keyword
      • NegativeAdGroupKeyword
      • NegativeAdGroupTarget
      • NegativeCampaignKeyword
      • NegativeCampaignTarget
      • ProductAdvertised
      • ProductGroup
      • ProductLeadAndCrossSellFloodlightStats
      • Video
      • Placement
      • Video
  • YouTube - チャンネル レポート
  • YouTube - コンテンツ所有者レポート

バックフィルは Cloud Storage の転送には使用できません。ただし、Cloud Storage 転送の更新実行を設定することはできます。

必要な権限

バックフィルをスケジュールするには、bigquery.transfers.update 権限が必要です。bigquery.transfers.update 権限は、IAM 事前定義ロール bigquery.admin に含まれています。

BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

バックフィルのスケジュール設定

バックフィルをスケジュールするには:

Console

  1. Cloud Console で、BigQuery ページに移動します。

    [BigQuery] ページに移動

  2. [転送] をクリックします。

  3. [転送] ページで、リストから該当する転送をクリックします。

  4. [展開] のメニューをクリックし、[バックフィルのスケジュール構成] を選択します。

  5. [バックフィルのスケジュール設定] ダイアログで、[開始日] と [終了日] を選択します。

    更新日の設定

bq

bq mk コマンドを入力し、--transfer_run フラグを指定して、--start_time--end_time を指定します。

bq mk \
--transfer_run \
--start_time='start_time' \
--end_time='end_time' \
resource_name

ここで

  • start_timeend_time は、Z で終わるタイムスタンプか、有効なタイムゾーンのオフセットを含むタイムスタンプです。例:

    • 2017-08-19T12:11:35.00Z
    • 2017-05-25T00:00:00+00:00
  • resource_name は、転送のリソース名(転送構成)です。転送のリソース名が不明の場合は、bq ls --transfer_config --transfer_location=location コマンドを発行してすべての転送を一覧表示します。

例:

転送設定 projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7 のバックフィルをスケジュールするには、次のコマンドを入力します。

bq mk \
--transfer_run \
--start_time 2017-05-25T00:00:00Z \
--end_time 2017-05-25T00:00:00Z \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7

API

projects.locations.transferConfigs.scheduleRuns メソッドを使用し、parent パラメータで転送構成のリソース名を指定します。

Java

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());
    }
  }
}

認証情報の更新

転送では、転送を作成したユーザーの認証情報を使用します。転送構成に接続しているユーザーを変更する必要がある場合は、転送の認証情報を更新できます。これは、転送を作成したユーザーが組織からいなくなった場合に役立ちます。

必要な権限

認証情報を更新するには、bigquery.transfers.update 権限が必要です。bigquery.transfers.update 権限は、IAM 事前定義ロール bigquery.admin に含まれています。

BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

転送の認証情報の更新

転送の認証情報を更新するには:

Console

  1. Cloud Console で、BigQuery ページに移動します。

    [BigQuery] ページに移動

  2. [転送] をクリックします。

  3. [転送] ページで、リストから該当する転送をクリックします。

  4. [展開] メニューをクリックし、[認証情報を更新] を選択します。

  5. Google アカウントにログインして [許可] をクリックすると、レポートデータの表示権限と、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 広告の転送 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 メソッドを使用して、authorizationCode パラメータと updateMask パラメータを指定します。

Java

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());
    }
  }
}

転送の無効化

転送を無効にすると、転送名に disabled が追加されます。転送が無効になると、新しい転送実行はスケジュールされず、新しいバックフィルは許可されません。進行中の転送実行はすべて行われます。

転送を無効にしても、すでに BigQuery に転送されたデータは削除されませんデータセットを削除するかテーブルを削除するまでは、これまでに転送されたデータに対して標準の BigQuery ストレージ費用がかかります。

必要な権限

移行を無効にするには、bigquery.transfers.update 権限が必要です。bigquery.transfers.update 権限は、IAM 事前定義ロール bigquery.admin に含まれています。

BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

転送の無効化

転送を無効にするには:

コンソール

  1. Google Cloud Console で、[BigQuery] ページに移動します。

    BigQuery に移動

  2. [Transfers] をクリックします。

  3. [転送] ページで、リストから無効にする転送をクリックします。

  4. [無効にする] をクリックします。転送を再度有効にするには、[有効にする] をクリックします。

bq

CLI では、転送を無効にすることはできません。

API

projects.locations.transferConfigs.patch メソッドを使用して、projects.locations.transferConfig リソースの disabledtrue に設定します。

Java

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());
    }
  }
}

転送を再度有効にするには:

/*
 * 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 ストレージ費用がかかります。

必要な権限

移行を削除するには、bigquery.transfers.update 権限が必要です。bigquery.transfers.update 権限は、IAM 事前定義ロール bigquery.admin に含まれています。

BigQuery Data Transfer Service での IAM ロールの詳細については、アクセス制御のリファレンスをご覧ください。

転送の削除

転送を削除するには:

コンソール

  1. Google Cloud Console で、[BigQuery] ページに移動します。

    BigQuery に移動

  2. [Transfers] をクリックします。

  3. [転送] ページで、リストから削除する転送をクリックします。

  4. [削除] をクリックします。本当に削除するかの確認のため、「削除」という単語をボックスに入力する必要があります。

bq

bq rm コマンドを入力して、転送構成のリソース名を指定します。-f フラグを使用すると、操作の確認を省略して転送構成を削除できます。

bq rm \
-f \
--transfer_config \
resource_name

ここで

  • resource_name は、転送のリソース名(転送構成とも呼ばれます)です。転送のリソース名が不明の場合は、bq ls --transfer_config --transfer_location=location コマンドを発行してすべての転送を一覧表示します。

たとえば、転送構成 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 パラメータで削除対象のリソースを指定します。

Java

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());
    }
  }
}