ビューのプロパティの更新

このドキュメントでは、ビュー プロパティとメタデータの更新方法について説明します。ビューを作成したら、次のビュー プロパティを更新できます。

必要な権限

ビューを更新するには、少なくとも bigquery.tables.update 権限と bigquery.tables.get 権限が付与されている必要があります。ビューの SQL クエリを更新する場合は、ビューの SQL クエリで参照されるテーブルに対してクエリを実行する権限も必要です。

bigquery.tables.update 権限および bigquery.tables.get 権限は、事前定義された以下の Cloud IAM の役割に含まれています。

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

また、bigquery.datasets.create 権限を持つユーザーがデータセットを作成すると、そのデータセットに対する bigquery.dataOwner アクセス権がユーザーに付与されます。bigquery.dataOwner アクセス権により、データセットに含まれるテーブルとビューに対する更新の実行権限が付与されます。

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

ビューの SQL クエリの更新

ビューの定義に使用される SQL クエリは、次の方法で更新できます。

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

CLI または API を使用して、SQL 言語を従来の SQL から標準 SQL に変更できます。GCP Console または従来の BigQuery ウェブ UI では、従来の SQL ビューを標準 SQL に更新することはできません。

ビューの SQL クエリを更新するには:

Console

  1. [リソース] パネルで、プロジェクトとデータセットを展開し、ビューを選択します。

  2. [詳細] タブをクリックします。

    詳細を表示する

  3. [クエリ] ボックスの上の、[クエリを編集] ボタンをクリックします。表示されたダイアログの [開く] をクリックします。

    クエリを編集

  4. [クエリエディタ] ボックスで SQL クエリを編集し、[ビューを保存] をクリックします。

    ビューを保存

  5. [ビューを保存] ダイアログですべてのフィールドが正しいことを確認してから、[保存] をクリックします。

従来の UI

  1. ビューを選択します。

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

  3. [Query] ボックスで [Edit Query] をクリックします。

  4. [Query] ボックスで SQL クエリを編集して、[Save View] をクリックします。

    ビューを更新する

CLI

--view フラグを指定して bq update コマンドを発行します。標準 SQL を使用して、クエリ言語をレガシー SQL から標準 SQL に更新するには、--use_legacy_sql フラグを指定し、false に設定します。

Google Cloud Storage またはローカル ファイルに格納されている外部のユーザー定義関数リソースをクエリで参照する場合は、--view_udf_resource フラグを使用してリソースを指定します。--view_udf_resource フラグはここでは説明しません。UDF の使用方法の詳細については、標準 SQL ユーザー定義関数をご覧ください。

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

bq update \
--use_legacy_sql=false \
--view_udf_resource=path_to_file \
--view='query' \
project_id:dataset.view

ここで

  • path_to_file は、ビューで使用されるユーザー定義関数リソースとして読み込まれ、すぐに評価されるコードファイルの URI またはローカル ファイル システムのパスです。フラグを繰り返して複数のファイルを指定します。
  • query は、有効な標準 SQL クエリです。
  • project_id はプロジェクト ID です。
  • dataset はビューを含むデータセットです。
  • view は、更新するビューの名前です。

例:

次のコマンドを入力して、mydatasetmyview という名前のビューの SQL クエリを更新します。mydataset はデフォルト プロジェクトにあります。ビューを更新するために使用されるクエリの例では、USA Name Data パブリック データセットのデータをクエリします。

bq update \
--use_legacy_sql=false \
--view \
'SELECT
  name,
  number
FROM
  `bigquery-public-data.usa_names.usa_1910_current`
WHERE
  gender = "M"
ORDER BY
  number DESC' \
mydataset.myview

次のコマンドを入力して、mydatasetmyview という名前のビューの SQL クエリを更新します。mydataset はデフォルト プロジェクトではなく myotherproject にあります。ビューを更新するために使用されるクエリの例では、USA Name Data パブリック データセットのデータをクエリします。

bq update \
--use_legacy_sql=false \
--view \
'SELECT
  name,
  number
FROM
  `bigquery-public-data.usa_names.usa_1910_current`
WHERE
  gender = "M"
ORDER BY
  number DESC' \
myotherproject:mydataset.myview

API

ビューを更新するには、更新された view プロパティを含むテーブル リソースを使用して tables.patch メソッドを呼び出します。tables.update メソッドはテーブル リソース全体を置き換えるため、tables.patch メソッドの方が適切です。

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")
view := client.Dataset(datasetID).Table(viewID)
meta, err := view.Metadata(ctx)
if err != nil {
	return err
}

newMeta := bigquery.TableMetadataToUpdate{
	// This example updates a view into the shakespeare dataset to exclude works named after kings.
	ViewQuery: "SELECT word, word_count, corpus, corpus_date FROM `bigquery-public-data.samples.shakespeare` WHERE corpus NOT LIKE '%king%'",
}

if _, err := view.Update(ctx, newMeta, meta.ETag); err != nil {
	return err
}

Python

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

# from google.cloud import bigquery
# client = bigquery.Client()
# project = 'my-project'
# source_dataset_id = 'my_source_dataset'
# source_table_id = 'us_states'
# shared_dataset_ref = client.dataset('my_shared_dataset')

# This example shows how to update a shared view of a source table of
# US States. The view's query will be updated to contain only states with
# names starting with 'M'.
view_ref = shared_dataset_ref.table("my_shared_view")
view = bigquery.Table(view_ref)
sql_template = 'SELECT name, post_abbr FROM `{}.{}.{}` WHERE name LIKE "M%"'
view.view_query = sql_template.format(project, source_dataset_id, source_table_id)
view = client.update_table(view, ["view_query"])  # API request

ビューの有効期限の更新

デフォルトのテーブル有効期限をデータセット レベルで設定することも(テーブルとビューの両方に反映される)、ビューを作成するときにそのビューの有効期限を設定することもできます。ビューを作成するときに有効期限を設定すると、データセットのデフォルトのテーブル有効期限は無視されます。デフォルトのテーブル有効期限をデータセット レベルで設定せず、ビューの作成時にも有効期限を設定しなかった場合は、ビューが失効することはないので、ビューを手動で削除する必要があります。

ビューを作成した後、次の方法でビューの有効期限を更新できます。

  • 従来の BigQuery ウェブ UI の使用
    • 現在、GCP Console でビューの有効期限を変更できません。
  • CLI の bq update コマンドを使用する
  • tables.patch API メソッドを呼び出す
  • クライアント ライブラリを使用する

ビューの有効期限を更新するには:

Console

  1. ナビゲーション パネルで、ビューを選択します。

  2. [詳細を表示] ページで、[詳細] タブをクリックします。

  3. [ビューの情報] の右側にある編集アイコン(鉛筆)をクリックします。

  4. [ビューの情報] ダイアログの [有効期限の表示] で、[日付を指定] をクリックします。

  5. 日付ピッカーで有効期限の日付と時刻を入力し、[OK] をクリックします。

  6. [更新] をクリックします。更新された有効期限が [ビュー情報] セクションに表示されます。

DDL

データ定義言語(DDL)ステートメントを使用すると、標準 SQL クエリ構文を使用してテーブルとビューの作成と変更ができます。

データ定義言語ステートメントの使用をご覧ください。

GCP Console で DDL ステートメントを使用するには:

  1. [クエリを新規作成] をクリックします。

  2. [クエリエディタ] テキスト領域に DDL ステートメントを入力します。

    ALTER VIEW mydataset.myview
    SET OPTIONS (
    -- Sets view expiration to timestamp 2025-02-03 12:34:56 in the America/Los Angeles time zone
    expiration_timestamp=TIMESTAMP("2025-02-03 12:34:56", "America/Los Angeles")
    );
    
  3. [実行] をクリックします。

従来の UI

  1. ナビゲーション パネルで、ビューを選択します。

  2. [View Details] ページで、[Details] をクリックします。

  3. [Expiration Time] の [Edit] をクリックします。

  4. [Update Expiration] ダイアログで、[In] をクリックし、有効期限を日数として入力します。

  5. [OK] をクリックします。更新された有効期限が [Details] ページに表示されます。

    有効期限の表示

CLI

--expiration フラグを指定して bq update コマンドを発行します。更新するビューがデフォルト プロジェクト以外のプロジェクトにある場合は、project_id:dataset の形式でプロジェクト ID をデータセット名に追加します。

bq update \
--expiration integer \
project_id:dataset.view

ここで

  • integer は、テーブルのデフォルトの存続期間(秒)です。 最小値は 3,600 秒(1 時間)です。現在時刻にこの整数値を足した値が有効期限になります。
  • project_id はプロジェクト ID です。
  • dataset は、更新するビューが存在しているデータセットの名前です。
  • view は更新するビューの名前です。

例:

次のコマンドを入力して、mydataset 内の myview のパーティションの有効期限を 5 日間(43200 秒)に更新します。mydataset はデフォルト プロジェクトにあります。

bq update --expiration 432000 mydataset.myview

次のコマンドを入力して、mydataset 内の myview のパーティションの有効期限を 5 日間(43200 秒)に更新します。mydataset はデフォルト プロジェクトではなく myotherproject にあります。

bq update --expiration 432000 myotherproject:mydataset.myview

API

tables.patch メソッドを呼び出し、テーブル リソースexpirationTime プロパティを使用します。tables.update メソッドはテーブル リソース全体を置き換えるため、tables.patch メソッドの方が適切です。REST API を使用する場合、ビューの有効期限はミリ秒単位で表されます。

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")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	ExpirationTime: time.Now().Add(time.Duration(5*24) * time.Hour), // table expiration in 5 days.
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Python

ビューの有効期限の更新は、テーブルの有効期限の更新と同じプロセスです。

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

import datetime
import pytz

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.expires is None

# set table to expire 5 days from now
expiration = datetime.datetime.now(pytz.utc) + datetime.timedelta(days=5)
table.expires = expiration
table = client.update_table(table, ["expires"])  # API request

# expiration is stored in milliseconds
margin = datetime.timedelta(microseconds=1000)
assert expiration - margin <= table.expires <= expiration + margin

ビューの説明の更新

ビューの説明は次の方法で更新できます。

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

ビューの説明を更新するには:

Console

BigQuery ウェブ UI を使用してビューを作成するときに、説明を追加することはできません。ビューが作成されると、[詳細] ページで説明を追加できます。

  1. [リソース] リストで、ビューを選択します。

  2. [詳細] タブをクリックします。

    詳細を表示する

  3. [説明] の横にある鉛筆アイコンをクリックします。

    ビューの説明の編集

  4. ダイアログ ボックスに説明を入力します。[更新] をクリックして、新しい説明を保存します。

DDL

データ定義言語(DDL)ステートメントを使用すると、標準 SQL クエリ構文を使用してテーブルとビューの作成と変更ができます。

データ定義言語ステートメントの使用をご覧ください。

GCP Console で DDL ステートメントを使用するには:

  1. [クエリを新規作成] をクリックします。

  2. [クエリエディタ] テキスト領域に DDL ステートメントを入力します。

     ALTER VIEW mydataset.myview
     SET OPTIONS (
       description="Description of myview"
     );
     

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

従来の UI

  1. ナビゲーション パネルで、ビューを選択します。

  2. [View Details] ページで、[Details] をクリックします。

  3. [Description] セクションで、[View Details] をクリックして、説明ボックスを開きます。

  4. ボックスに説明を入力します。ボックスの外側をクリックすると、テキストが保存されます。

    テーブルの説明

CLI

--description フラグを指定して bq update コマンドを発行します。更新するビューがデフォルト プロジェクト以外のプロジェクトにある場合は、[PROJECT_ID]:[DATASET] の形式でプロジェクト ID をデータセット名に追加します。

bq update \
--description "description" \
project_id:dataset.view

ここで

  • description は引用符で囲んだ、ビューを説明するテキストです。
  • project_id はプロジェクト ID です。
  • dataset は、更新するビューが存在しているデータセットの名前です。
  • view は更新するビューの名前です。

例:

次のコマンドを入力して、mydatasetmyview の説明を「Description of myview」に変更します。mydataset はデフォルト プロジェクトにあります。

bq update --description "Description of myview" mydataset.myview

mydataset 内の myview の説明を「Description of myview」に変更するには、次のコマンドを入力します。mydataset はデフォルト プロジェクトではなく myotherproject にあります。

bq update \
--description "Description of myview" \
myotherproject:mydataset.myview

API

tables.patch メソッドを呼び出し、description プロパティを使用して、テーブル リソースのビューの説明を更新します。tables.update メソッドはテーブル リソース全体を置き換えるため、tables.patch メソッドの方が適切です。

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")
tableRef := client.Dataset(datasetID).Table(tableID)
meta, err := tableRef.Metadata(ctx)
if err != nil {
	return err
}
update := bigquery.TableMetadataToUpdate{
	Description: "Updated description.",
}
if _, err = tableRef.Update(ctx, update, meta.ETag); err != nil {
	return err
}

Java

ビューの説明の更新は、テーブルの説明の更新と同じプロセスです。

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

// String datasetName = "my_dataset_name";
// String tableName = "my_table_name";
// String newDescription = "new_description";

Table beforeTable = bigquery.getTable(datasetName, tableName);
TableInfo tableInfo = beforeTable.toBuilder()
    .setDescription(newDescription)
    .build();
Table afterTable = bigquery.update(tableInfo);

Python

ビューの説明の更新は、テーブルの説明の更新と同じプロセスです。

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

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('my_table')
# table = client.get_table(table_ref)  # API request

assert table.description == "Original description."
table.description = "Updated description."

table = client.update_table(table, ["description"])  # API request

assert table.description == "Updated description."

次のステップ

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

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

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