データセットのコピー

データを抽出して移動してから BigQuery に再読み込みする代わりに、データセットを同じリージョン内で、またはあるリージョンから別のリージョンにコピーできます。1 回だけコピーすることはもちろん、任意に指定した定期的なスケジュールでコピーすることも可能です。

始める前に

データセットのコピーを作成する前に、次のことを行います。

  • データセットのコピーには、BigQuery Data Transfer Service の機能を使用します。宛先データセットの Google Cloud Platform プロジェクトで、BigQuery Data Transfer Service の有効化に必要なすべての操作が完了していることを確認します。
  • 従来の BigQuery ウェブ UI を使用して転送を作成する場合は、権限ウィンドウが表示されるように、ブラウザで bigquery.cloud.google.com からのポップアップを許可します。データセットのコピー(転送の一種)を管理するための BigQuery Data Transfer Service 権限をユーザーに与える必要があります。
  • コピー先データセットとして、コピー元データセットと同じリージョンまたは異なるリージョンに BigQuery データセットを作成します。データセットの作成時に、BigQuery データを保存するロケーションを指定します。データセットのコピーができるリージョンはまだ限られています(ロケーションの制限をご覧ください)。データセット名はプロジェクトごとに一意である必要があります。
  • コピー元データセットの ID とコピー元プロジェクトの ID を調べます。
  • Cloud Pub/Sub の転送実行通知を設定する場合は、pubsub.topics.setIamPolicy 権限が必要です。メール通知のみを設定する場合、Cloud Pub/Sub の権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。

必要な権限

データセットのコピーを作成する前に、その操作を行うユーザーに対して次の必要な BigQuery 権限が付与されていることを確認します。

  1. コピー転送を作成するための bigquery.transfers.update 権限。

  2. コピー元データセットに対する bigquery.tables.list 権限。

    bigquery.tables.list 権限は、以下の事前定義されたプロジェクト レベルの IAM 役割に含まれています。

    • bigquery.dataViewer
    • bigquery.dataEditor
    • bigquery.dataOwner
    • bigquery.metadataViewer
    • bigquery.user
  3. コピー先データセットに対する bigquery.tables.list 権限と bigquery.tables.create 権限。

    bigquery.tables.list 権限と bigquery.tables.create 権限は、以下の事前定義されたプロジェクト レベルの IAM 役割に含まれています。

    • bigquery.dataEditor
    • bigquery.dataOwner
  4. 事前定義されたプロジェクト レベルの IAM 役割の bigquery.admin には、データセットのコピーに必要なすべての権限が含まれています。BigQuery での IAM の役割の詳細については、アクセス制御をご覧ください。

データセットのコピーの設定

データセットのコピーを作成するには:

Console

オプション 1: [データセットをコピー] アイコンを使用します。

  1. BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. コピー元データセットのデータセット名を選択します。

  3. [データセットをコピー] アイコンをクリックします。

    [データセットをコピー] アイコン

  4. [データセットをコピー] ダイアログ ボックスで、プロジェクト ID とコピー先データセットの ID を選択します。プロジェクトとデータセットは異なるリージョンに存在していてもかまいませんが、リージョンを越えたコピーができるのは一部のリージョンのみに限られます

  5. プロジェクト内のデータセット名は一意である必要があります。

  6. 必要に応じて、コピー先データセット内のすべてのデータを更新(上書き)する場合は [コピー先テーブルを上書きする] ボックスをオンにします。テーブルとスキーマの両方が上書きされます。

    [データセットをコピー] ダイアログ

  7. 余分なストレージ コストがかからないようにするため、古いデータセットを削除することを検討してください。

オプション 2: [転送] UI を使用します。

  1. BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

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

  3. [+ 転送を作成] をクリックします。

  4. [転送の作成] ページで、次の操作を行います。

    • [ソースタイプ] セクションの [ソース] で、[Dataset Copy] を選択します。

      転送のソース

    • [転送構成名] セクションの [表示名] に、転送名(例: My Transfer)を入力します。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。

      転送名

    • [スケジュール オプション] セクションで、[スケジュール] をデフォルト値([すぐに開始可能])のままにするか、[設定した時間に開始] をクリックします。

      • [繰り返しの頻度] で、転送を実行する頻度のオプションを選択します。以下のようなオプションがあります。

        • 毎日(デフォルト)
        • 毎週
        • 毎月
        • カスタム
        • オンデマンド

        [毎日] 以外のオプションを選択した場合は、追加のオプションが利用可能です。たとえば、[毎週] を選択した場合、曜日を選択するためのオプションが表示されます。

      • [開始日と実行時間] に、転送を開始する日付と時刻を入力します。[すぐに開始可能] を選択した場合、このオプションは無効になります。

        転送スケジュール

    • [宛先データセット] で、データを保存するために別のリージョンに作成したデータセットを選択します。

    • [Source dataset] に、コピー元データセットの名前を入力します。

    • [ソース プロジェクト] に、コピー元データセットが存在するプロジェクトの ID を入力します。

    • (省略可)コピー先データセット内のすべてのデータを更新(上書き)する場合は [コピー先テーブルを上書きする] ボックスをオンにします。テーブルとスキーマの両方が上書きされます。

      新しいデータセット コピー

    • (省略可)[通知オプション] セクションで、次の操作を行います。

      • 切り替えボタンをクリックしてメール通知を有効にします。このオプションを有効にすると、転送の実行が失敗した場合、転送管理者にメール通知が送信されます。
      • [Cloud Pub/Sub トピックを選択してください] で、トピック名を選択するか、[トピックを作成する] をクリックしてトピックを作成します。このオプションで、Cloud Pub/Sub の転送実行通知を構成します。

      Cloud Pub/Sub トピック

  5. [保存] をクリックします。

  6. 余分なストレージ コストがかからないようにするため、古いデータセットを削除することを検討してください。

従来の UI

  1. 従来の BigQuery ウェブ UI に移動します。

    従来の BigQuery ウェブ UI に移動

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

  3. [Add Transfer] をクリックします。

  4. [New Transfer] ページで次の操作を行います。

    • [Source] で [Dataset Copy] を選択します。
    • [表示名] に転送名(例: My Dataset Copy)を入力します。表示名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
    • (省略可)[スケジュール] では、デフォルト値の [毎日](作成時間に基づいて 24 時間ごと)のままにするか、[編集] をクリックして時間を変更します。間隔を [毎週]、[毎月]、[カスタム] に変更することもできます。[カスタム] を選択すると、every 12 hours のような Cron と同様の時間を指定するよう求められます。最短許容時間は 12 時間です。

    • [宛先データセット] で、該当するデータセットを選択します。

    • [Source dataset] に、コピー元データセットの名前を入力します。

    • [Source project] で、コピー元データセットが存在するプロジェクトを選択します。

      新しいデータセット コピー

    • (省略可)[Advanced] セクションを展開し、転送の実行通知を構成します。

    • [Cloud Pub/Sub topic] に、Cloud Pub/Sub トピックの名前(例: projects/myproject/topics/mytopic)を入力します。

    • [メール通知を送信する] をオンにして、転送の実行が失敗した場合のメール通知を許可します。

      Cloud Pub/Sub トピック

  5. [追加] をクリックします。

  6. 余分なストレージ コストがかからないようにするため、古いデータセットを削除することを検討してください。

CLI

bq mk コマンドを入力して、転送作成フラグ --transfer_config を指定します。次のフラグも必要です。

  • --project_id
  • --data_source
  • --target_dataset
  • --display_name
  • --params

    bq mk --transfer_config --project_id=[PROJECT_ID] --data_source=[DATA_SOURCE] --target_dataset=[DATASET] --display_name=[NAME] --params='[PARAMETERS]'
    

ここで

  • --project_id は、Google Cloud Platform プロジェクト ID です。--project_id を指定しない場合は、デフォルトのプロジェクトが使用されます。
  • --data_source は、データソースです。cross_region_copy
  • --target_dataset は、転送構成の BigQuery ターゲット データセットです。
  • --display_name は、コピージョブ(転送構成)の表示名です。転送名には、後で修正が必要になった場合に簡単に識別できる任意の名前を使用できます。
  • --params には、作成される転送構成のパラメータを JSON 形式で指定します。例: --params='{"param":"param_value"}'。データセットをコピーする場合は source_dataset_id パラメータと source_project_id パラメータを指定する必要があり、必要に応じて overwrite_destination_table パラメータを指定します。

データセット コピー構成のパラメータは次のとおりです。

  • source_dataset_id : コピー元データセットの ID。
  • source_project_id : コピー元データセットがあるプロジェクトの ID。
  • (省略可)overwrite_destination_table : 以前にコピーしたテーブルを切り捨ててすべてのデータを更新する場合は、このパラメータを含めます。

たとえば次のコマンドは、mydataset というコピー先データセットと myproject という ID のプロジェクトを使用して My Transfer という名前のデータセット コピー構成を作成します。

bq mk --transfer_config --project_id=myproject --data_source=cross_region_copy --target_dataset=123_demo_tokyo --display_name='My Dataset Copy' --params='{"source_dataset_id":"123_demo_eu","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'

API

projects.locations.transferConfigs.create メソッドを使用して、TransferConfig リソースのインスタンスを指定します。

データセット コピージョブの表示と更新

[転送] で、データセットのコピーの進行状況と詳細を見ることができます。

Console

コンソールの転送ボタン

コンソールの転送詳細の表示

データセット コピー更新ジョブは、ユーザーが指定したスケジュールで実行されるようスケジュールされます。これは構成可能です。デフォルトは 24 時間ごとです。新しいコピージョブを直ちに実行する場合は、[その他] メニューをクリックして [Refresh Now] をクリックします。

データセット コピーの更新ボタン

従来の UI

従来の UI の転送ボタン

データセット コピー更新ジョブは、ユーザーが指定したスケジュールで実行されるようスケジュールされます。これは構成可能です。デフォルトは 24 時間ごとです。新しいコピージョブを直ちに実行する場合は、[Refresh Now] をクリックします。

データセット コピーの更新ボタン

料金

データセットのコピーは、ベータ期間中は無料で利用できます。

一般提供の際は、リージョン間でコピーされたデータに対して、Compute Engine ネットワークのリージョン間の下りと同じ料金が適用されます。

リージョン間のコピーではデータを圧縮して送信するため、課金される GB 数はデータセットのサイズより小さくなる場合があります。

割り当てと制限

BigQuery でのデータセットのコピーには以下の制限が適用されます。これらの制限は、コマンドライン ツール(CLI)、コンソール、従来の BigQuery ウェブ UI を使用して作成されたコピージョブに適用されます。また、ジョブタイプとしてコピーを指定した jobs.insert API メソッドを使用してプログラムで送信されるコピージョブにも適用されます。

コピーされたデータには、BigQuery のストレージとクエリに関するすべての標準使用料金がかかります。詳細については、BigQuery の料金をご覧ください。

BigQuery データセットのコピーに対する制限は次のとおりです。

割り当て

リージョン内

同じリージョン内でのデータセットのコピーは、すべての BigQuery コピージョブと同じ割り当てに従います。

BigQuery でのテーブルのコピーには、以下の上限が適用されます。これらの上限は、コマンドライン ツール、GCP Console、従来の BigQuery ウェブ UI を使用してデータをコピーするときに自動的に作成されるジョブに適用されます。また、ジョブタイプとしてコピーを指定した jobs.insert API メソッドを使用してプログラムで送信されるコピージョブにも適用されます。

  • 宛先テーブルごとの 1 日あたりコピージョブ数 - 1,000(失敗を含む)
  • プロジェクトごとの 1 日あたりのコピージョブ数 - 100,000(失敗を含む)

リージョン間

  • 宛先テーブルごとの 1 日あたりのコピージョブ数 - 100(失敗を含む)
  • プロジェクトごとの 1 日あたりのコピージョブ数 - 2,000(失敗を含む)

一般的な制限事項

  • データセット コピーの転送構成を作成する前に、コピー先データセットを作成する必要があります。

  • データセット コピー構成ごとに、一度にアクティブにできるコピーは 1 つだけです。転送を追加で実行しようとした場合、そのジョブはキューに入れられます。

データ型の制限

  • ビューのコピーはサポートされていません。
  • 外部テーブルのコピーはサポートされていません。
  • ストリーミング バッファ内のストレージのコピーはサポートされていません。
  • 顧客管理の暗号鍵で暗号化されたテーブルをコピーできるかどうかは、同じリージョン内でコピーするか異なるリージョン間でコピーするかによって異なります。

リージョン内

同じリージョン内でデータセットをコピーする場合は、顧客管理の暗号鍵(CMEK)で暗号化されたテーブルを含む暗号化されたテーブルをコピーできます。

リージョン間

デフォルトの暗号化を使用したテーブルについては、リージョン間でコピーできます。現時点では、顧客管理の暗号鍵(CMEK)で暗号化されたテーブルをリージョン間でコピーすることはできません。CMEK で暗号化されたテーブルは、テーブルをコピー先データセットにコピーするときにスキップされます。

コピー元データセットの制限

コピー元データセットに格納できるテーブルの最大数は 20,000 個です。実行ごとにコピーできるテーブルの数は、同じリージョン内でコピーするか異なるリージョン間でコピーするかによって異なります。

リージョン内

  • 最大 20,000 個のテーブルを含むデータセットをコピー元として使用できます。

  • 実行ごとに最大 20,000 個のテーブルをコピー先データセットにコピーできます。

リージョン間

  • 最大 20,000 個のテーブルを含むデータセットをコピー元として使用できます。

  • 実行ごとに最大 1,000 個のテーブルをコピー先データセットにコピーできます。

8,000 個のテーブルを含むデータセットのリージョン間コピーを構成すると、BigQuery Data Transfer Service により 8 個の実行単位が順次自動的に作成されます。最初の実行で 1,000 個のテーブルがコピーされ、次回の 24 時間後の実行で次の 1,000 個のテーブルがコピーされるという形で、データセット内のすべてのテーブルがコピーされます。この方法で最大 20,000 個のテーブルを含むデータセットをコピーできます。

テーブルの制限事項

  • パーティション分割テーブルのコピーは現在サポートされています。ただし、パーティション分割テーブルへのデータの追加はサポートされていません。

  • コピー元データセットとコピー先データセットにある同じテーブルの内容が、最後にコピーが成功してから変更されていない場合、そのテーブルはスキップされます。これは、[コピー先テーブルを上書きする] ボックスがチェックされている場合でも同様です。

  • テーブルを切り捨てる場合は、データセットのコピーが開始される前に、コピー先データセットに加えられた変更は確認されません。コピー先データセット内のすべてのデータが更新(上書き)されます。テーブルとスキーマの両方が上書きされます。

ロケーションの制限

データセットのコピーは、リージョンからリージョン、単一リージョンからマルチリージョン、マルチリージョンから単一リージョン、マルチリージョンからマルチリージョンに対して行うことができます。

現在、データセットのコピーができるリージョンは限られています。以下に示すように、データセットのコピーは BigQuery Data Transfer Service が現在サポートされているリージョンでのみ作成できます。

リージョンのロケーション

リージョン名 リージョンの説明
ヨーロッパ
europe-west2 ロンドン
アジア太平洋
asia-northeast1 東京
asia-southeast1 シンガポール
australia-southeast1 シドニー

マルチリージョン

マルチリージョン名 マルチリージョンの説明
EU EU1
US 米国

1 EU マルチリージョンにあるデータは、europe-west2(ロンドン)データセンターには保存されません。

次のステップ

  • 転送構成に関する情報の取得、転送構成の一覧表示、転送の実行履歴の表示など、転送の使用方法については、転送の操作をご覧ください。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。