ビューの管理

このドキュメントでは、Google BigQuery でビューを管理する方法について説明します。BigQuery ビューは、次の方法で管理できます。

ビューのコピー

現在、あるデータセットから別のデータセットへビューをコピーするためにサポートされている方法はありません。ターゲット データセットにビューを再作成する必要があります。

ビューの再作成を簡単にするために、SQL クエリを古いビューからコピーできます。ビューを定義する SQL クエリをコピーする方法は次のとおりです。

従来の UI

  1. UI ナビゲーション ペインで、ビューを選択します。

  2. [View Details] パネルで [Details] をクリックします。

  3. [Query] ボックスにテキストをコピーします。

コマンドライン

bq show コマンドを発行します。--format フラグを使用して出力を制御できます。デフォルトのプロジェクト以外のプロジェクトのビューに関する情報を取得する場合は、[PROJECT_ID]:[DATASET] の形式でプロジェクト ID をデータセットに追加します。ビューのプロパティをファイルに書き込むには、> [PATH_TO_FILE] をコマンドに追加します。

bq show --format=prettyjson [PROJECT_ID]:[DATASET].[VIEW] > [PATH_TO_FILE]

各要素の意味は次のとおりです。

  • [PROJECT_ID] はプロジェクト ID です。
  • [DATASET] はデータセットの名前です。
  • [VIEW] は、ビューの名前です。
  • [PATH_TO_FILE] は、ローカルマシン上の出力ファイルへのパスです。

例:

mydataset 内の myview に関するすべての情報を表示するには、次のコマンドを入力します。mydataset はデフォルトのプロジェクトにあります。

bq show --format=prettyjson mydataset.myview

mydataset 内の myview に関するすべての情報を表示するには、次のコマンドを入力します。mydataset はデフォルトのプロジェクトではなく myotherproject にあります。ビューのプロパティは、ローカル ファイル /tmp/myview.json に書き込まれます。

bq show --format=prettyjson myotherproject:mydataset.myview > /tmp/myview.json

ビューの名前の変更

現在、既存のビューの名前を変更することはできません。ビュー名を変更する必要がある場合は、新しい名前でビューを再作成します。

ビューの削除

ビューを削除する方法は次のとおりです。

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

現時点では、利用可能なメソッドで削除できるビューは一度に 1 つだけです。

指定した期間の経過後にビューが自動的に削除されるには、データセット レベルでデフォルトの有効期限を設定するか、ビューを作成するときに有効期限を設定します。

必要な権限

ビューを削除するには、テーブルの削除と同じ権限が必要です。データセット レベルで OWNER アクセス権が割り当てられているか、bigquery.tables.delete 権限を含むプロジェクト レベルの IAM 役割が割り当てられている必要があります。次の事前定義されたプロジェクト レベルの IAM 役割には、bigquery.tables.delete 権限が含まれています。

事前定義されたプロジェクト レベルの役割が割り当てられているユーザーは、そのプロジェクト内のどのデータセットのビューも削除できます。データセット レベルで OWNER 権限が割り当てられているユーザーは、そのデータセット内のビューのみを削除できます。

これに加えて、bigquery.user 役割には bigquery.datasets.create 権限が含まれていることから、bigquery.user 役割に割り当てられたユーザーは、そのユーザーが作成したどのデータセットのビューも削除することができます。bigquery.user 役割に割り当てられているユーザーがデータセットを作成すると、そのユーザーにはそのデータセットへの OWNER アクセス権が付与されます。データセットへの OWNER アクセス権が付与されたユーザーは、そのデータセットとその中のすべてのテーブルとビューに対するあらゆる制御が可能です。

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

ビューの削除

ビューを削除する方法は次のとおりです。

従来の UI

  1. ナビゲーション バーのビュー名の横にある下矢印アイコン 下矢印アイコン をクリックし、[Delete view] をクリックします。

  2. メッセージが表示されたら、[OK] をクリックして確認します。

コマンドライン

ビューを削除するには、--table フラグ(または -t ショートカット)を指定した bq rm コマンドを使用します。CLI を使用してビューを削除する場合は、処理を確認する必要があります。--force フラグ(または -f ショートカット)を使用すると、確認をスキップできます。

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

bq rm -f -t [PROJECT_ID]:[DATASET].[VIEW]

各要素の意味は次のとおりです。

  • [PROJECT_ID] はプロジェクト ID です。
  • [DATASET] は、テーブルを含むデータセットの名前です。
  • [VIEW] は、削除するビューの名前です。

例:

次のコマンドを入力すると、myviewmydataset から削除されます。mydataset はデフォルトのプロジェクトにあります。

bq rm -t mydataset.myview

次のコマンドを入力すると、myviewmydataset から削除されます。mydataset はデフォルトのプロジェクトではなく myotherproject にあります。

bq rm -t myotherproject:mydataset.myview

次のコマンドを入力すると、myviewmydataset から削除されます。mydataset はデフォルトのプロジェクトにあります。-f ショートカットが指定されているため、確認は省略されます。

bq rm -f -t mydataset.myview

API

API の tables.delete メソッドを呼び出し、削除するビューを tableId パラメータで指定します。

C#

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

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

public class BigQueryDeleteTable
{
    public void DeleteTable(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        client.DeleteTable(datasetId, tableId);
        Console.WriteLine($"Table {tableId} deleted.");
    }
}

Go

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

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
table := client.Dataset(datasetID).Table(tableID)
if err := table.Delete(ctx); err != nil {
	return err
}

Java

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

TableId tableId = TableId.of(projectId, datasetName, tableName);
boolean deleted = bigquery.delete(tableId);
if (deleted) {
  // the table was deleted
} else {
  // the table was not found
}

Node.js

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

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

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = "your-project-id";
// const datasetId = "my_dataset";
// const tableId = "my_table";

// Creates a client
const bigquery = new BigQuery({projectId});

// Deletes the table
await bigquery
  .dataset(datasetId)
  .table(tableId)
  .delete();

console.log(`Table ${tableId} 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';
// $tableId = 'The BigQuery table ID';

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

Python

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

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'my_dataset'
# table_id = 'my_table'

table_ref = client.dataset(dataset_id).table(table_id)
client.delete_table(table_ref)  # API request

print('Table {}:{} deleted.'.format(dataset_id, table_id))

Ruby

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

require "google/cloud/bigquery"

def delete_table dataset_id = "my_dataset_id", table_id = "my_table_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  table    = dataset.table table_id

  table.delete

  puts "Table #{table_id} deleted."
end

次のステップ

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

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

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