データセットの管理

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

データセットの名前変更

現在、既存のデータセットの名前を変更することはできませんが、データセットをコピーすることはできます。データセットのコピーをご覧ください。

データセットのコピー

データセットをコピーする手順(リージョン間でのコピーを含む)については、データセットのコピーをご覧ください。

データセットの移動

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

  1. BigQuery テーブルから、データセットと同じロケーションにあるリージョンまたはマルチリージョンの Cloud Storage バケットにデータをエクスポートします。たとえば、データセットが EU のマルチリージョン ロケーションにある場合は、EU のリージョン バケットまたはマルチリージョン バケットにデータをエクスポートします。

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

  2. Cloud Storage バケットから新しいロケーションのリージョン バケットまたはマルチリージョン バケットに、データをコピーするか移動します。たとえば、米国のマルチリージョン ロケーションから東京のリージョン ロケーションにデータを移動すると、データは東京のリージョン バケットに転送されます。Cloud Storage オブジェクトの転送について詳しくは、Cloud Storage ドキュメントのオブジェクトの名前変更、コピー、移動をご覧ください。

    リージョン間でデータを転送すると、Cloud Storage でネットワークの下り料金が発生することに注意してください。

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

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

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

データセットの削除

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

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

必要な権限

データセットを削除するには、少なくとも bigquery.datasets.delete 権限が付与されている必要があります。データセットにテーブルまたはビューが含まれている場合は、bigquery.tables.delete も必要です。事前定義された次の IAM 役割には、bigquery.datasets.deletebigquery.tables.delete の両方の権限が含まれています。

  • bigquery.dataOwner
  • bigquery.admin

また、bigquery.datasets.create 権限があるユーザーがデータセットを作成すると、作成したデータセットに対する bigquery.dataOwner アクセス権がそのユーザーに付与されます。 bigquery.dataOwner アクセス権により、ユーザーは自身が作成したデータセットとテーブルを削除できます。

BigQuery での Cloud IAM 役割と権限の詳細については、事前定義された役割と権限をご覧ください。

データセットの削除

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

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

Console

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

    データセットの削除

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

従来の UI

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

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

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

CLI

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

また、データセット内にテーブルがある場合は、-r フラグを使用してデータセット内のすべてのテーブルを削除する必要があります。削除するテーブルがデフォルト プロジェクト以外のプロジェクトに含まれている場合は、project_id:dataset の形式でそのプロジェクト ID をデータセット名に追加します。

bq rm -r -f -d <var>project_id:dataset</var>

ここで

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

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 のサポートページをご覧ください。