データセットを管理する

このドキュメントでは、データセットのコピー、別のロケーションでのデータセットの再作成、データセットの保護、データセットの削除、削除されたデータセットからのテーブルの復元、BigQuery でのデータセットの削除の取り消しを行う方法について説明します。

BigQuery 管理者は、アナリストが使用するテーブルビューへのアクセスを整理して制御できます。データセットの詳細については、データセットの概要をご覧ください。

既存のデータセットの名前の変更や、データセットの作成後にデータセットを移動することはできません。データセット名を変更する代替手段として、データセットをコピーして、宛先データセットの名前を変更します。データセットを再配置するには、次のいずれかの方法を使用します。

必要なロール

このセクションでは、データセットの管理に必要なロールと権限について説明します。コピー元またはコピー先のデータセットが、コピーに使用するプロジェクトと同じプロジェクトにある場合、そのデータセットに対する追加の権限またはロールは必要ありません。

データセットの管理に必要な権限を取得するには、次に挙げる IAM ロールの付与を、管理者に依頼してください。

ロールの付与の詳細については、アクセスの管理をご覧ください。

これらの事前定義ロールには、データセットを管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

データセットを管理するには、次の権限が必要です。

  • データセットをコピーする:
    • コピー先プロジェクトに対する bigquery.transfers.update
    • コピー先プロジェクトに対する bigquery.jobs.create
    • コピー元とコピー先のデータセットに対する bigquery.datasets.get
    • コピー元とコピー先のデータセットに対する bigquery.tables.list
    • コピー先データセットに対する bigquery.datasets.update
    • コピー先データセットに対する bigquery.tables.create
  • データセットを削除する:
    • プロジェクトに対する bigquery.datasets.delete
    • プロジェクトに対する bigquery.tables.delete
  • 削除したデータセットを復元する:
    • プロジェクトに対する bigquery.datasets.create
    • データセットに対する bigquery.datasets.get

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

BigQuery における IAM ロールと権限の詳細については、IAM の概要をご覧ください。

データセットのコピー

データの抽出、移動、BigQuery への再読み込みなしに、リージョン内またはリージョン間でのパーティション分割データを含むデータセットをコピーできます。BigQuery は、バックエンドで BigQuery Data Transfer Service を使用してデータセットをコピーします。データを転送する際のロケーションに関する考慮事項については、データのロケーションと転送をご覧ください。

データセット コピー構成ごとに、一度にアクティブにできる転送実行は 1 つだけです。追加の転送実行はキューに入れられます。Google Cloud コンソールを使用している場合は、繰り返しのコピーをスケジューリングし、BigQuery Data Transfer Service でメールまたは Pub/Sub 通知を構成できます。

制限事項

データセットをコピーする場合は、次の制限事項が適用されます。

  • ソース データセットから次のリソースはコピーできません。

    • ビュー。
    • ルーティン(UDF など)。
    • 外部テーブル。
    • コピージョブがリージョン間で存在する場合、変更データ キャプチャ(CDC)テーブル。同じリージョン内での CDC テーブルのコピーがサポートされています。
    • コピージョブがリージョン間で存在する場合、顧客管理の暗号鍵(CMEK)で暗号化されたテーブル。デフォルトの暗号化を使用したテーブルについては、リージョン間でコピーできます。

      CMEK で暗号化されたテーブルを含む、同じリージョン内のすべての暗号化されたテーブルをコピーできます。

  • 次のリソースをコピージョブのコピー先データセットとして使用することはできません。

    • 書き込みに最適化されたストレージ。
    • コピージョブがリージョン間で存在する場合、CMEK で暗号化されたデータセット。

      ただし、CMEK で暗号化されたテーブルは、同じリージョン内でコピーする場合、コピー先テーブルとして使用できます。

  • コピージョブ間の最小頻度は 12 時間です。

  • コピー先データセット内のパーティション分割テーブルへのデータの追加はサポートされていません。

  • コピー元データセットとコピー先データセットにテーブルが存在し、コピー元テーブルが最後にコピーが成功してから変更されていない場合、それはスキップされます。[コピー先テーブルを上書きする] チェックボックスが選択されていたとしても、コピー元テーブルはスキップされます。

  • コピー先データセット内のテーブルを切り捨てる場合、データセット コピージョブはコピージョブを開始する前に、コピー先データセット内のリソースに加えられた変更を検出しません。データセットのコピージョブは、コピー先データセットのすべてのデータ(テーブルとスキーマの両方を含む)を上書きします。

  • コピー先テーブルには、コピージョブの開始後にコピー元テーブルに加えられた変更が反映されない場合があります。

  • BigQuery Omni リージョンでは、データセットのコピーはサポートされていません。

  • データセットを別の VPC Service Controls サービス境界のプロジェクトにコピーするには、次の下り(外向き)ルールを設定する必要があります。

    • 宛先プロジェクトの VPC Service Controls サービス境界構成で、IAM プリンシパルに次のメソッドが必要です。

      • bigquery.datasets.get
      • bigquery.tables.list
      • bigquery.tables.get
      • bigquery.tables.getData
    • ソース プロジェクトの VPC Service Controls サービス境界構成で、使用する IAM プリンシパルのメソッドを All Methods に設定する必要があります。

データセットをコピーする

次のオプションのいずれかを選択します。

コンソール

  1. コピー先データセットに対して BigQuery Data Transfer Service を有効にします。

    BigQuery Data Transfer Service API を有効にする

  2. 必要なロールがあることを確認します。

    Pub/Sub の転送実行通知を設定する場合は(これらの手順の後述のオプション 2)、pubsub.topics.setIamPolicy 権限が必要です。

    メール通知のみを設定する場合は、Pub/Sub 権限は必要ありません。詳細については、BigQuery Data Transfer Service の実行通知をご覧ください。

  3. コピー元データセットと同じリージョンまたは別のリージョンに BigQuery データセットを作成します。

オプション 1: BigQuery のコピー関数を使用する

1 回限りの転送を作成するには、BigQuery のコピー関数を使用します。

  1. BigQuery ページに移動します。

    [BigQuery] に移動

  2. [エクスプローラ] パネルでプロジェクトを開いて、データセットを選択します。

  3. [データセット情報] セクションで、 [コピー] をクリックしてから、次のようにします。

    1. [データセット] フィールドで、新しいデータセットを作成するか、リストから既存のデータセット ID を選択します。

      プロジェクト内のデータセット名は一意である必要があります。プロジェクトとデータセットは異なるリージョンに存在していてもかまいませんが、リージョンを越えたコピーができるのは一部のリージョンのみに限られます。

      [ロケーション] フィールドに、コピー元データセットのロケーションが表示されます。

    2. 省略可: コピー先テーブルのデータとスキーマの両方をコピー元テーブルで上書きするには、[コピー先テーブルを上書きする] チェックボックスをオンにします。コピー元とコピー先の両方のテーブルは、同じパーティショニング スキーマを持つ必要があります。

    3. データセットをコピーするには、[コピー] をクリックします。

オプション 2: BigQuery Data Transfer Service を使用する

定期的なコピーをスケジュールし、メールまたは Pub/Sub 通知を構成するには、Google Cloud コンソールで BigQuery Data Transfer Service を使用します。

  1. [データ転送] ページに移動します。

    [データ転送] に移動

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

  3. [コピー元] リストで、[データセット コピー] を選択します。

  4. [表示名] フィールドに、転送実行の名前を入力します。

  5. [スケジュール オプション] セクションで、次の操作を行います。

    1. [繰り返しの頻度] で、転送を実行する頻度のオプションを選択します。

      [カスタム] を選択した場合は、カスタム頻度(たとえば、every day 00:00)を入力します。詳細については、スケジュールのフォーマットをご覧ください。

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

  6. [転送先の設定] セクションで、転送データを保存するコピー先データセットを選択します。[新しいデータセットの作成] をクリックして、この転送用に選択する前に新しいデータセットを作成することもできます。

  7. [データソースの詳細] に、次の情報を入力します。

    1. [コピー元データセット] に、コピーするデータセット ID を入力します。
    2. [コピー元プロジェクト] に、コピー元データセットのプロジェクト ID を入力します。
  8. コピー先テーブルのデータとスキーマの両方をコピー元テーブルで上書きするには、[コピー先テーブルを上書きする] チェックボックスをオンにします。コピー元とコピー先の両方のテーブルは、同じパーティショニング スキーマを持つ必要があります。

  9. [サービス アカウント] メニューで、Google Cloud プロジェクトに関連付けられたサービス アカウントからサービス アカウントを選択します。ユーザー認証情報を使用する代わりに、サービス アカウントを転送に関連付けることができます。データ転送でサービス アカウントを使用する方法の詳細については、サービス アカウントの使用をご覧ください。

    • フェデレーション ID でログインした場合、転送を作成するにはサービス アカウントが必要です。Google アカウントでログインした場合、転送用のサービス アカウントは省略可能です。
    • サービス アカウントには必要なロールが付与されている必要があります。
  10. 省略可: [通知オプション] セクションで、次のようにします。

    • メール通知を有効にするには、切り替えボタンをクリックします。このオプションを有効にすると、転送の実行が失敗した場合、転送構成のオーナーがメール通知を受信します。
    • Pub/Sub 通知を有効にするには、切り替えボタンをクリックしてから、リストからトピック名を選択するか、トピックを作成するをクリックするかします。このオプションで、Pub/Sub の転送実行通知を構成します。
  11. [保存] をクリックします。

bq

  1. コピー先データセットに対して BigQuery Data Transfer Service を有効にします。

  2. 必要なロールがあることを確認します。

  3. BigQuery データセットを作成するには、データセット作成フラグ --datasetlocation フラグとともに bq mk コマンドを使用します。

    bq mk \
      --dataset \
      --location=LOCATION \
      PROJECT:DATASET
    

    次のように置き換えます。

    • LOCATION: データセットをコピーするロケーション
    • PROJECT: ターゲット データセットのプロジェクト ID
    • DATASET: ターゲット データセットの名前
  4. データセットをコピーするには、転送作成フラグ --transfer_config--data_source フラグとともに bq mk コマンドを使用します。--data_source フラグを cross_region_copy に設定する必要があります。--data_source フラグの有効な値の一覧については、bq コマンドライン ツール リファレンスの transfer-config フラグをご覧ください。

    bq mk \
      --transfer_config \
      --project_id=PROJECT \
      --data_source=cross_region_copy \
      --target_dataset=DATASET \
      --display_name=NAME \
     --service_account_name=SERCICE_ACCOUNT \
      --params='PARAMETERS'
    

    次のように置き換えます。

    • NAME: コピージョブまたは転送構成の表示名

    • SERVICE_ACCOUNT: 転送の認証に使用されるサービス アカウント名。サービス アカウントは、転送の作成に使用した project_id が所有している必要があります。また、必要な権限がすべて付与されている必要があります。

    • PARAMETERS: 転送構成のパラメータ(JSON 形式)

      データセット コピー構成のパラメータは次のものを含みます。

      • source_dataset_id: コピーするコピー元データセットの ID
      • source_project_id: コピー元データセットがあるプロジェクトの ID
      • overwrite_destination_table: 前のコピーのテーブルを切り捨て、すべてのデータを更新できるオプションのフラグ

      コピー元とコピー先の両方のテーブルは、同じパーティショニング スキーマを持つ必要があります。

    次の例は、システムの環境に基づいたパラメータの形式を示しています。

    • Linux: 単一引用符を使用して JSON 文字列を囲みます。次に例を示します。

      '{"source_dataset_id":"mydataset","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'
      
    • Windows コマンドライン: 二重引用符を使用して JSON 文字列を囲み、文字列内の二重引用符をバックスラッシュでエスケープします。次に例を示します。

      "{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}"
      
    • PowerShell: 単一引用符を使用して JSON 文字列を囲み、文字列内の二重引用符をバックスラッシュでエスケープします。次に例を示します。

      '{\"source_dataset_id\":\"mydataset\",\"source_project_id\":\"mysourceproject\",\"overwrite_destination_table\":\"true\"}'
      

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

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

API

  1. コピー先データセットに対して BigQuery Data Transfer Service を有効にします。

  2. 必要なロールがあることを確認します。

  3. BigQuery データセットを作成するには、定義済みのデータセット リソースを指定して datasets.insert メソッドを呼び出します。

  4. データセットをコピーするには、projects.locations.transferConfigs.create メソッドを使用し、TransferConfig リソースのインスタンスを提供します。

Java

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートJava の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to copy dataset from another gcp project
public class CopyDataset {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String destinationProjectId = "MY_DESTINATION_PROJECT_ID";
    final String destinationDatasetId = "MY_DESTINATION_DATASET_ID";
    final String sourceProjectId = "MY_SOURCE_PROJECT_ID";
    final String sourceDatasetId = "MY_SOURCE_DATASET_ID";
    Map<String, Value> params = new HashMap<>();
    params.put("source_project_id", Value.newBuilder().setStringValue(sourceProjectId).build());
    params.put("source_dataset_id", Value.newBuilder().setStringValue(sourceDatasetId).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(destinationDatasetId)
            .setDisplayName("Your Dataset Copy Name")
            .setDataSourceId("cross_region_copy")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    copyDataset(destinationProjectId, transferConfig);
  }

  public static void copyDataset(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient dataTransferServiceClient = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = dataTransferServiceClient.createTransferConfig(request);
      System.out.println("Copy dataset created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Copy dataset was not created." + ex.toString());
    }
  }
}

Python

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートPython の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

pip install google-cloud-bigquery-datatransfer を使用して BigQuery Data Transfer API 用の Python クライアントをインストールします。次に、データセットをコピーするための転送構成を作成します。
from google.cloud import bigquery_datatransfer

transfer_client = bigquery_datatransfer.DataTransferServiceClient()

destination_project_id = "my-destination-project"
destination_dataset_id = "my_destination_dataset"
source_project_id = "my-source-project"
source_dataset_id = "my_source_dataset"
transfer_config = bigquery_datatransfer.TransferConfig(
    destination_dataset_id=destination_dataset_id,
    display_name="Your Dataset Copy Name",
    data_source_id="cross_region_copy",
    params={
        "source_project_id": source_project_id,
        "source_dataset_id": source_dataset_id,
    },
    schedule="every 24 hours",
)
transfer_config = transfer_client.create_transfer_config(
    parent=transfer_client.common_project_path(destination_project_id),
    transfer_config=transfer_config,
)
print(f"Created transfer config: {transfer_config.name}")

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

データセット コピージョブを表示する

Google Cloud コンソールで、データセットのコピージョブのステータスを確認し、詳細を表示するには、次のようにします。

  1. Google Cloud コンソールで、[データ転送] ページに移動します。

    [データ転送] に移動

  2. 転送の詳細を表示する転送を選択し、次のようにします。

    1. [転送の詳細] ページで、転送実行を選択します。

    2. 更新するには、[ 更新] をクリックします。

別のロケーションにデータセットを再作成する

データセットをあるロケーションから別のロケーションに手動で移動する手順は次のとおりです。

  1. データセットと同じロケーションか、データセットのロケーションに含まれるロケーションの Cloud Storage バケットに、BigQuery テーブルからデータをエクスポートします。たとえば、データセットが「EU」マルチリージョン ロケーションにある場合は、EU の一部である「europe-west1」ベルギーのロケーションにデータをエクスポートできます。

    BigQuery からのデータのエクスポートに対しては課金されませんが、エクスポートしたデータを Cloud Storage に保存する場合は課金の対象になります。BigQuery からのエクスポートには、エクスポート ジョブの上限が適用されます。

  2. データを、Cloud Storage のエクスポート バケットから転送先の場所に作成した新しいバケットに、コピーまたは移動します。たとえば、US マルチリージョンから asia-northeast1 東京リージョンにデータを移動すると、東京で作成したバケットにデータが転送されます。Cloud Storage オブジェクトの転送について詳しくは、Cloud Storage ドキュメントのオブジェクトのコピー、名前変更、移動をご覧ください。

    リージョン間でデータを転送すると、Cloud Storage でネットワークの下り(外向き)料金が発生します。

  3. 新しいロケーションに新しい BigQuery データセットを作成し、Cloud Storage バケットから新しいデータセットにデータを読み込みます。

    BigQuery へのデータの読み込みに対しては課金されませんが、Cloud Storage にデータを保存した場合は課金の対象となり、データまたはバケットを削除するまで料金が請求されます。読み込まれたデータを BigQuery に保存することについても、請求の対象になります。BigQuery へのデータの読み込みには、読み込みジョブの上限が適用されます。

また、Cloud Composer を使用して、大規模なデータセットをプログラムで移動し、コピーすることもできます。

Cloud Storage を使用した大量のデータセットの保存と移動について詳しくは、Cloud Storage とビッグデータの使用をご覧ください。

データセットを保護する

BigQuery でデータセットへのアクセスを制御するには、データセットへのアクセスの制御をご覧ください。データ暗号化の詳細については、保存データの暗号化をご覧ください。

データセットの削除

Google Cloud コンソールを使用してデータセットを削除すると、データセット内のテーブルとビュー(データを含む)も削除されます。bq コマンドライン ツールを使用してデータセットを削除する場合は、-r フラグを使用してテーブルとビューを削除する必要があります。

データセットを削除するには、次のいずれかの方法を選択します。

コンソール

  1. [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. [エクスプローラ] ペインでプロジェクトを開いて、データセットを選択します。

  3. アクション オプションを開いて、[削除] をクリックします。

  4. [データセットを削除する] ダイアログで、フィールドに「delete」と入力してから、[削除] をクリックします。

SQL

データセットを削除するには、DROP SCHEMA DDL ステートメントを使用します。

次の例では、mydataset という名前のデータセットを削除します。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    DROP SCHEMA IF EXISTS mydataset;
    

    デフォルトでは、これは空のデータセットを削除する場合にのみ機能します。データセットとそのすべてのコンテンツを削除するには、CASCADE キーワードを使用します。

    DROP SCHEMA IF EXISTS mydataset CASCADE;
    

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

--dataset または -d フラグを指定して(省略可能)、bq rm コマンドを使用します。データセットにテーブルが含まれている場合は、-r フラグを使用してデータセット内のすべてのテーブルを削除する必要があります。-r フラグを使用する場合は、--dataset フラグまたは -d フラグを省略できます。

コマンドを実行すると、システムから確認を求められます。-f フラグを使用すると、確認をスキップできます。

削除するテーブルがデフォルト プロジェクト以外のプロジェクトにある場合は、PROJECT_ID:DATASET の形式でプロジェクト ID をデータセット名に追加します。

bq rm -r -f -d PROJECT_ID:DATASET

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • DATASET: 削除するデータセットの名前。

例:

次のコマンドを入力して、mydataset という名前のデータセットと、その中のすべてのテーブルをデフォルト プロジェクトから削除します。このコマンドでは -d フラグを使用します。

bq rm -r -d mydataset

プロンプトが表示されたら、「y」と入力して Enter キーを押します。

myotherproject から mydataset と含まれるすべてのテーブルを削除するには、次のコマンドを入力します。このコマンドではオプションの -d フラグを使用していません。確認をスキップするために -f フラグを使用しています。

bq rm -r -f myotherproject:mydataset

bq ls コマンドを使用して、データセットが削除されたことを確認できます。

API

datasets.delete メソッドを呼び出してデータセットを削除します。その際、データセット内のテーブルも削除するには、deleteContents パラメータを true に設定します。

C#

次のコードサンプルでは、空のデータセットを削除します。

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートC# の手順に沿って設定を行ってください。詳細については、BigQuery C# API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

pip install google-cloud-bigquery-datatransfer を使用して BigQuery Data Transfer API 用の Python クライアントをインストールします。次に、データセットをコピーするための転送構成を作成します。

using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteDataset
{
    public void DeleteDataset(
        string projectId = "your-project-id",
        string datasetId = "your_empty_dataset"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Delete a dataset that does not contain any tables
        client.DeleteDataset(datasetId: datasetId);
        Console.WriteLine($"Dataset {datasetId} deleted.");
    }
}

次のコードサンプルでは、データセットとそのすべてのコンテンツを削除します。

// Copyright(c) 2018 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.
//

using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryDeleteDatasetAndContents
{
    public void DeleteDatasetAndContents(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_with_tables"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Use the DeleteDatasetOptions to delete a dataset and its contents
        client.DeleteDataset(
            datasetId: datasetId,
            options: new DeleteDatasetOptions() { DeleteContents = true }
        );
        Console.WriteLine($"Dataset {datasetId} and contents deleted.");
    }
}

Go

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートGo の手順に沿って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

pip install google-cloud-bigquery-datatransfer を使用して BigQuery Data Transfer API 用の Python クライアントをインストールします。次に、データセットをコピーするための転送構成を作成します。
import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// deleteDataset demonstrates the deletion of an empty dataset.
func deleteDataset(projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	// To recursively delete a dataset and contents, use DeleteWithContents.
	if err := client.Dataset(datasetID).Delete(ctx); err != nil {
		return fmt.Errorf("Delete: %v", err)
	}
	return nil
}

Java

次のコードサンプルでは、空のデータセットを削除します。

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートJava の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

pip install google-cloud-bigquery-datatransfer を使用して BigQuery Data Transfer API 用の Python クライアントをインストールします。次に、データセットをコピーするための転送構成を作成します。
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.DatasetDeleteOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.DatasetId;

public class DeleteDataset {

  public static void runDeleteDataset() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetName = "MY_DATASET_NAME";
    deleteDataset(projectId, datasetName);
  }

  public static void deleteDataset(String projectId, String datasetName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      DatasetId datasetId = DatasetId.of(projectId, datasetName);
      boolean success = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents());
      if (success) {
        System.out.println("Dataset deleted successfully");
      } else {
        System.out.println("Dataset was not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Dataset was not deleted. \n" + e.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.bigquery;

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.DatasetId;

// Sample to delete dataset with contents.
public class DeleteDatasetAndContents {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String datasetName = "MY_DATASET_NAME";
    deleteDatasetAndContents(projectId, datasetName);
  }

  public static void deleteDatasetAndContents(String projectId, String datasetName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      DatasetId datasetId = DatasetId.of(projectId, datasetName);
      // Use the force parameter to delete a dataset and its contents
      boolean success = bigquery.delete(datasetId, BigQuery.DatasetDeleteOption.deleteContents());
      if (success) {
        System.out.println("Dataset deleted with contents successfully");
      } else {
        System.out.println("Dataset was not found");
      }
    } catch (BigQueryException e) {
      System.out.println("Dataset was not deleted with contents. \n" + e.toString());
    }
  }
}

Node.js

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートNode.js の手順に沿って設定を行ってください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

pip install google-cloud-bigquery-datatransfer を使用して BigQuery Data Transfer API 用の Python クライアントをインストールします。次に、データセットをコピーするための転送構成を作成します。
// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function deleteDataset() {
  // Deletes a dataset named "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = 'my_dataset';

  // Create a reference to the existing dataset
  const dataset = bigquery.dataset(datasetId);

  // Delete the dataset and its contents
  await dataset.delete({force: true});
  console.log(`Dataset ${dataset.id} deleted.`);
}

PHP

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートPHP の手順に沿って設定を行ってください。詳細については、BigQuery PHP API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

pip install google-cloud-bigquery-datatransfer を使用して BigQuery Data Transfer API 用の Python クライアントをインストールします。次に、データセットをコピーするための転送構成を作成します。
use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->delete();
printf('Deleted dataset %s' . PHP_EOL, $datasetId);

Python

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートPython の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

pip install google-cloud-bigquery-datatransfer を使用して BigQuery Data Transfer API 用の Python クライアントをインストールします。次に、データセットをコピーするための転送構成を作成します。

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set model_id to the ID of the model to fetch.
# dataset_id = 'your-project.your_dataset'

# Use the delete_contents parameter to delete a dataset and its contents.
# Use the not_found_ok parameter to not receive an error if the dataset has already been deleted.
client.delete_dataset(
    dataset_id, delete_contents=True, not_found_ok=True
)  # Make an API request.

print("Deleted dataset '{}'.".format(dataset_id))

Ruby

次のコードサンプルでは、空のデータセットを削除します。

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートRuby の手順に沿って設定を行ってください。詳細については、BigQuery Ruby API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。

pip install google-cloud-bigquery-datatransfer を使用して BigQuery Data Transfer API 用の Python クライアントをインストールします。次に、データセットをコピーするための転送構成を作成します。
require "google/cloud/bigquery"

def delete_dataset dataset_id = "my_empty_dataset"
  bigquery = Google::Cloud::Bigquery.new

  # Delete a dataset that does n