データセットの管理

このドキュメントでは、BigQuery でデータセットを管理する方法について説明します。データセットを作成した後、以下のようにデータセットを管理できます。

データセットの名前変更

現時点では、既存のデータセットの名前を変更することはできず、データセットをコピーして新しい名前を付けることもできません。データセット名を変更する必要がある場合は、以下の手順に従ってデータセットを再作成してください。

  1. 新しいデータセットを作成し、新しい名前を指定します。

  2. 元のデータセットから新しいデータセットにテーブルをコピーします。

  3. 新しいデータセットにビューをコピーするか、新しいデータセット内でビューを再作成します。

  4. 追加のストレージ費用を避けるために、元のデータセットを削除します。

データセットのコピー

現時点では、データセットをコピーすることはできません。代わりに、以下の手順に従ってデータセットを再作成してください。

  1. 新しいデータセットを作成します。データセット名はプロジェクト内で一意でなければならないため、同じプロジェクト内で再作成する場合はデータセットの名前を変える必要があります。

  2. 元のデータセットから新しいデータセットにテーブルをコピーします。

  3. 新しいデータセットにビューをコピーするか、新しいデータセット内でビューを再作成します。

  4. 追加のストレージ費用を避けるために、元のデータセットを削除します。

データセットの削除

次の方法でデータセットを削除できます。

  • GCP Console または従来の BigQuery ウェブ UI を使用する
  • bq rm CLI コマンドを使用する
  • datasets.delete API メソッドを呼び出す

必要な権限

データセットを削除するユーザーは、データセット レベルで OWNER アクセス権を持っているか、bigquery.datasets.delete 権限を含むプロジェクト レベルの IAM 役割が割り当てられている必要があります。さらに、データセットにテーブルが含まれている場合は bigquery.tables.delete も必要です。事前定義されたプロジェクト レベルの IAM 役割のうち、bigquery.datasets.deletebigquery.tables.delete の両方の権限を含むものは以下のとおりです。

また、bigquery.user 役割には bigquery.datasets.create 権限が含まれているため、bigquery.user 役割に割り当てられたユーザーは、自分が作成した任意のデータセットを削除できます。bigquery.user 役割に割り当てられているユーザーがデータセットを作成すると、そのユーザーには、作成したデータセットへの OWNER アクセス権が付与されます。 データセットへの OWNER アクセス権が付与されたユーザーは、そのデータセットを完全に制御できます。

BigQuery での IAM 役割と権限の詳細については、アクセス制御をご覧ください。データセット レベルの役割の詳細については、データセットに対する基本の役割をご覧ください。

データセットの削除

ウェブ UI を使用してデータセットを削除すると、そのデータセット内のテーブル(およびテーブルに含まれるデータ)も削除されます。CLI を使用してデータセットを削除する場合、データセットのテーブルも削除するには -r フラグを使用する必要があります。

データセットを削除した後、そのデータセットを復元したり、削除を取り消したりすることできません。データセットの削除は永続的です。

データセットを削除するには:

Console

  1. [リソース] パネルからデータセットを選択し、ウィンドウの右側にある [データセットを削除] をクリックします。

    データセットの削除

  2. [データセット削除の確認] ダイアログで、データセットの名前をテキスト ボックスに入力し、[削除] をクリックします。

従来の UI

  1. ナビゲーション内のデータセット名の横にある下矢印アイコン 下矢印アイコン をクリックし、[Create new table] をクリックします。

  2. [Delete Dataset] ダイアログで、次の操作を行います。

    • [Dataset ID] に、削除するデータセットの名前を入力します。
    • [OK] をクリックします。

コマンドライン

データセットを削除するには、bq rm コマンドで(オプションの)--dataset フラグまたは -d ショートカット フラグを指定します。CLI を使用してデータセットを削除するときは、コマンドを確認する必要があります。-f フラグを使用すると、確認をスキップできます。

また、データセット内にテーブルがある場合は、-r フラグを使用してデータセット内のすべてのテーブルを削除する必要があります。削除するテーブルがデフォルト プロジェクト以外のプロジェクトにある場合は、[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 キーを押します。

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

bq rm -r -f myotherproject:mydataset

API

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

Go

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

if err := client.Dataset(datasetID).Delete(ctx); err != nil {
	return fmt.Errorf("Failed to delete dataset: %v", err)
}

Java

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

DatasetId datasetId = DatasetId.of(projectId, datasetName);
boolean deleted = bigquery.delete(datasetId, DatasetDeleteOption.deleteContents());
if (deleted) {
  // the dataset was deleted
} else {
  // the dataset was not found
}

Node.js

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');

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

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

  // Create a client
  const bigqueryClient = new BigQuery();

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

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

PHP

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

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 のリファレンス ドキュメントをご覧ください。

from google.cloud import bigquery

# TODO(developer): 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)

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

Ruby

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

require "google/cloud/bigquery"

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

  # Delete a dataset that does not contain any tables
  dataset = bigquery.dataset dataset_id
  dataset.delete
  puts "Dataset #{dataset_id} deleted."
end

次のステップ

このページは役立ちましたか?評価をお願いいたします。

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

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