ビューの管理
このドキュメントでは、BigQuery でビューを管理する方法について説明します。BigQuery ビューは、次の方法で管理できます。
始める前に
このドキュメントの各タスクを実行するために必要な権限をユーザーに与える Identity and Access Management(IAM)のロールを付与します。タスクの実行に必要な権限(存在する場合)は、タスクの「必要な権限」セクションに記載されています。
ビューを更新する
ビューを作成したら、次のビュー プロパティを更新できます。
必要な権限
ビューを更新するには、次の IAM 権限が必要です。
bigquery.tables.update
bigquery.tables.get
次の IAM 事前定義ロールには、ビューの更新に必要な権限が含まれています。
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
また、bigquery.datasets.create
権限がある場合は、作成したデータセット内のテーブルとビューを更新できます。
ビューの SQL クエリを更新するには、ビューの SQL クエリで参照されるテーブルに対してクエリを実行する権限も必要です。
BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。
ビューの SQL クエリの更新
ビューの定義に使用される SQL クエリは、次の方法で更新できます。
- Google Cloud コンソールを使用する
- bq コマンドライン ツールの
bq update
コマンドの使用 tables.patch
API メソッドを呼び出す- クライアント ライブラリの使用
SQL 言語は、API または bq コマンドライン ツールでレガシー SQL から GoogleSQL に変更できます。Google Cloud コンソールでは、レガシー SQL ビューを GoogleSQL にアップデートできません。
ビューの SQL クエリを更新するには:
Console
[エクスプローラ] パネルで、プロジェクトとデータセットを展開し、ビューを選択します。
[詳細] タブをクリックします。
[クエリ] ボックスの上の、[クエリを編集] ボタンをクリックします。表示されたダイアログの [開く] をクリックします。
[クエリエディタ] ボックスで SQL クエリを編集し、[ビューを保存] をクリックします。
[ビューを保存] ダイアログですべてのフィールドが正しいことを確認してから、[保存] をクリックします。
bq
--view
フラグを指定して bq update
コマンドを発行します。GoogleSQL を使用するか、クエリ言語をレガシー SQL から GoogleSQL に更新するには、--use_legacy_sql
フラグを指定し、false
に設定します。
Cloud Storage またはローカル ファイルに格納されている外部のユーザー定義関数リソースをクエリで参照する場合は、--view_udf_resource
フラグを使用してリソースを指定します。--view_udf_resource
フラグはここでは説明しません。UDF を使用する詳細については、GoogleSQL ユーザー定義関数をご覧ください。
更新するビューがデフォルト プロジェクト以外のプロジェクトにある場合は、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: 有効な GoogleSQL クエリ
- project_id: プロジェクト ID
- dataset: 更新するビューを含むデータセットの名前
- view: 更新するビューの名前
例
次のコマンドを入力して、mydataset
の myview
という名前のビューの 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
次のコマンドを入力して、mydataset
の myview
という名前のビューの 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 のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
ビューの有効期限の更新
デフォルトのテーブル有効期限をデータセット レベルで設定することも(テーブルとビューの両方に反映される)、ビューを作成するときにそのビューの有効期限を設定することもできます。ビューを作成するときに有効期限を設定すると、データセットのデフォルトのテーブル有効期限は無視されます。デフォルトのテーブル有効期限をデータセット レベルで設定せず、ビューの作成時にも有効期限を設定しなかった場合は、ビューが失効することはないので、ビューを手動で削除する必要があります。
ビューを作成した後、次の方法でビューの有効期限を更新できます。
- Google Cloud コンソールを使用する
- GoogleSQL 構文で記述されたデータ定義言語(DDL)ステートメントを使用する
- bq コマンドライン ツールの
bq update
コマンドを使用する tables.patch
API メソッドを呼び出す- クライアント ライブラリを使用する
ビューの有効期限を更新するには:
Console
ナビゲーション パネルで、ビューを選択します。
[詳細を表示] ページで、[詳細] タブをクリックします。
[ビューの情報] の右側にある編集アイコン(鉛筆)をクリックします。
[ビューの情報] ダイアログの [有効期限の表示] で、[日付を指定] をクリックします。
日付ピッカーで有効期限の日付と時刻を入力し、[OK] をクリックします。
[更新] をクリックします。更新された有効期限が [ビュー情報] セクションに表示されます。
SQL
ALTER VIEW SET OPTIONS
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
ALTER VIEW DATASET_ID.MY_VIEW SET OPTIONS ( expiration_timestamp = TIMESTAMP('NEW_TIMESTAMP'));
次のように置き換えます。
- DATASET_ID: ビューを含むデータセットの ID
- MY_VIEW: 更新するビューの名前
- NEW_TIMESTAMP: タイムスタンプ値
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
--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 日間(432,000 秒)に更新します。mydataset
はデフォルト プロジェクトにあります。
bq update \
--expiration 432000 \
mydataset.myview
次のコマンドを入力して、mydataset
内の myview
のパーティションの有効期限を 5 日間(432,000 秒)に更新します。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 のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
ビューの有効期限の更新は、テーブルの有効期限の更新と同じプロセスです。
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
ビューの説明の更新
ビューの説明は次の方法で更新できます。
- Google Cloud コンソールを使用する
- GoogleSQL 構文で記述されたデータ定義言語(DDL)ステートメントを使用する
- bq コマンドライン ツールの
bq update
コマンドを使用する tables.patch
API メソッドを呼び出す- クライアント ライブラリを使用する
ビューの説明を更新するには:
コンソール
Google Cloud コンソールを使用してテーブルを作成する場合、説明を追加することはできません。ビューの作成後に、[詳細] ページで説明を追加できます。
[エクスプローラ] パネルで、プロジェクトとデータセットを展開し、ビューを選択します。
[詳細] タブをクリックします。
[説明] の横にある鉛筆アイコンをクリックします。
ダイアログ ボックスに説明を入力します。[更新] をクリックして、新しい説明を保存します。
SQL
ALTER VIEW SET OPTIONS
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
ALTER VIEW DATASET_ID.MY_VIEW SET OPTIONS ( description = 'NEW_DESCRIPTION');
次のように置き換えます。
- DATASET_ID: ビューを含むデータセットの ID
- MY_VIEW: 更新するビューの名前
- NEW_DESCRIPTION: 新しいビューの説明
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
--description
フラグを指定して bq update
コマンドを発行します。更新するビューがデフォルト プロジェクト以外のプロジェクトにある場合は、[PROJECT_ID]:[DATASET]
の形式でプロジェクト ID をデータセット名に追加します。
bq update \ --description "description" \ project_id:dataset.view
次のように置き換えます。
- description: 引用符で囲んだ、ビューを説明するテキストです
- project_id: プロジェクト ID。
- dataset: 更新するビューを含むデータセットの名前
- view: 更新するビューの名前
例
次のコマンドを入力して、mydataset
の myview
の説明を「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 のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java
ビューの説明の更新は、テーブルの説明の更新と同じプロセスです。
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Java の手順に沿って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
ビューの説明の更新は、テーブルの説明の更新と同じプロセスです。
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートの Python の手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
ビューをコピーする
ビューは Google Cloud コンソールを使用してコピーできます。
bq コマンドライン ツール、REST API、クライアント ライブラリを使用してビューをコピーすることはできませんが、ターゲット データセット内のビューをコピーすることはできます。
必要な権限
Google Cloud コンソールでビューをコピーするには、コピー元データセットとコピー先データセットに対する IAM 権限が必要です。
コピー元データセットでは、次のものが必要です。
bigquery.tables.get
bigquery.tables.getData
(ビューの SQL クエリによって参照されるテーブルにアクセスするために必要です)
コピー先データセットでは、次のものが必要です。
bigquery.tables.create
(宛先データセット内にビューのコピーを作成できます)
次の IAM 事前定義ロールには、ビューのコピーに必要な権限が含まれています。
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
また、bigquery.datasets.create
権限がある場合は、作成したデータセットにビューをコピーできます。コピー先データセットを作成しない限り、コピー先データセットにもアクセスする必要もあります。
BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。
ビューをコピーする
ビューをコピーするには:
[エクスプローラ] パネルで、プロジェクトとデータセットを開いて、ビューを選択します。
詳細パネルで [ビューをコピー] をクリックします。
[ビューのコピー] ダイアログで、次の操作を行います。
- [ソース] セクションで、プロジェクト名、データセット名、テーブル名が正しいことを確認します。
[送信先] セクションで、次の操作を行います。
- [プロジェクト名] で、ビューのコピー先のプロジェクトを選択します。
- [データセット名] で、コピーしたビューを格納するデータセットを選択します。
- [テーブル名] に、ビューの名前を入力します。ボックスに新しいビューの名前を入力して、ビューの名前を変更できます。新しい名前を入力する場合は、ビューの命名規則に従う必要があります。
[コピー] をクリックします。
コピージョブの上限が適用されます。詳細については、割り当てと上限をご覧ください。
ビューの名前を変更する
現在、ビューの名前の変更は、Google Cloud コンソールを使用してビューをコピーした場合のみ行えます。ビューをコピーするときに名前を変更する方法については、ビューのコピーをご覧ください。
bq コマンドライン ツール、API、クライアント ライブラリを使用して、既存のビューの名前を変更できません。代わりに、新しい名前でビューを再作成する必要があります。
ビューの削除
ビューを削除する方法は次のとおりです。
- Google Cloud コンソールを使用する
- bq コマンドライン ツールの
bq rm
コマンドを使用する tables.delete
API メソッドを呼び出す
現在利用可能なメソッドでは、一度に 1 つのビューしか削除できません。
指定した期間の経過後にビューが自動的に削除されるようにするには、データセット レベルでデフォルトの有効期限を設定するか、ビューを作成するときに有効期限を設定します。
承認済みビューを削除した場合、ソース データセットの承認済みビューリストから削除されたビューを削除するまで最大 24 時間かかることがあります。
ビューを削除すると、このビューに関連付けられている権限も削除されます。削除されたビューを再作成する場合は、以前にそのビューに関連付けられていたアクセス権限を手動で再構成する必要があります。
必要な権限
ビューを削除するには、次の IAM 権限が必要です。
bigquery.tables.delete
次の IAM 事前定義ロールには、ビューを削除するために必要な権限が含まれています。
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
bigquery.datasets.create
権限がある場合は、作成したデータセットにビューを削除できます。
BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。
ビューを削除する
ビューを削除する方法は次のとおりです。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
[エクスプローラ] パネルで、プロジェクトとデータセットを開いて、ビューを選択します。
詳細パネルで [ビューを削除] をクリックします。
ダイアログに「
"delete"
」と入力し、[削除] をクリックして確定します。
SQL
DROP VIEW
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
DROP VIEW mydataset.myview;
次のように置き換えます。
- DATASET_ID: ビューを含むデータセットの ID
- MY_VIEW: 更新するビューの名前
- NEW_DESCRIPTION: 新しいビューの説明
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
bq rm
コマンドに --table
フラグ(または -t
ショートカット)を指定して実行して、ビューを削除します。bq コマンドライン ツールを使用してビューを削除する場合は、アクションを確認する必要があります。--force
フラグ(または -f
ショートカット)を使用して確認をスキップできます。
ビューがデフォルト プロジェクト以外のプロジェクト内のデータセットにある場合は、project_id:dataset
の形式でプロジェクト ID をデータセット名に追加します。
bq rm \ -f \ -t \ project_id:dataset.view
ここで
- project_id は、プロジェクト ID です。
- dataset は、テーブルを含むデータセットの名前です。
- view は、削除するビューの名前です。
例:
bq
コマンドの実行には、bq コマンドライン ツールを使用します。
Google Cloud コンソールで、[Cloud Shell] をアクティブにします。
myview
を mydataset
から削除するには、次のコマンドを入力します。mydataset
はデフォルト プロジェクトにあります。
bq rm -t mydataset.myview
myview
を mydataset
から削除するには、次のコマンドを入力します。mydataset
はデフォルト プロジェクトではなく myotherproject
にあります。
bq rm -t myotherproject:mydataset.myview
myview
を mydataset
から削除するには、次のコマンドを入力します。mydataset
はデフォルト プロジェクトにあります。このコマンドでは -f
ショートカットを使用しているため、確認は省略されます。
bq rm -f -t mydataset.myview
API
tables.delete
API メソッドを呼び出して、tableId
パラメータを使用して削除するビューを指定します。
C#
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある C# の設定手順を完了してください。詳細については、BigQuery C# API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Go
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Go の設定手順を完了してください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
PHP
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある PHP の設定手順を完了してください。詳細については、BigQuery PHP API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Ruby
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Ruby の設定手順を完了してください。詳細については、BigQuery Ruby API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
ビューを復元する
削除したビューを直接復元することはできませんが、特定のシナリオでは回避策があります。
- 親データセットが削除されたためにビューが削除された場合は、データセットの削除を取り消すことでビューを取得できます。
- ビューが明示的に削除された場合は、ビューの作成または更新に使用した最後のクエリを使用して、ビューを再作成できます。ビューの作成または更新オペレーションのクエリ定義は、ログで確認できます。
ビューのセキュリティ
BigQuery でビューへのアクセスを制御するには、承認済みビューをご覧ください。
次のステップ
- ビューの作成方法については、ビューを作成するをご覧ください。
- 承認済みビューの作成方法については、承認済みビューの作成についてのページをご覧ください。
- ビューのメタデータを取得する方法については、ビューに関する情報の取得をご覧ください。