このドキュメントでは、BigQuery でビューを作成する方法について説明します。
BigQuery では、以下の方法でビューを作成できます。
- GCP Console または従来の BigQuery ウェブ UI
- コマンドライン ツールの
bq mk
コマンド tables.insert
API メソッドの呼び出し- クライアント ライブラリの使用
CREATE VIEW
データ定義言語(DDL)ステートメントの送信
ビューの命名
BigQuery でビューを作成する場合、ビュー名はデータセットごとに一意にする必要があります。ビュー名には次の制限があります。
- 1,024 文字以内
- 英字(大文字または小文字)、数字、アンダースコアだけが含まれている
ビューの制限
BigQuery ビューには次の制限があります。
- ビューが含まれるデータセットと、そのビューで参照されるテーブルが属するデータセットは、同じロケーションに存在する必要があります。
- ビューからデータをエクスポートする BigQuery ジョブは実行できません。
TableDataList
JSON API メソッドを使用してビューからデータを取得することはできません。詳細については、Tabledata: list をご覧ください。- ビューを使用するときは、標準 SQL クエリとレガシー SQL クエリを併用できません。標準 SQL クエリでは、レガシー SQL 構文で定義したビューを参照できません。
- ビューでクエリ パラメータを参照することはできません。
- ビューを作成すると、元のテーブルのスキーマがビューと一緒に保存されます。ビューの作成後に列の追加や削除などを行うと、ビューを更新するまでは正確なスキーマが報告されません。報告されるスキーマが正確でない場合でも、送信されたクエリは正しい結果を出力します。
- レガシー SQL ビューを標準 SQL 構文に自動的に更新することはできません。ビューの定義に使用されているクエリを変更するには、GCP Console の [クエリを編集] オプション、従来の BigQuery ウェブ UI の [Edit query] オプション、
bq update --view
CLI コマンド、クライアント ライブラリ、API メソッドの update または patch を使用します。 - ビューを定義する SQL クエリにユーザー定義の関数を含めることはできません。
- ワイルドカード テーブルクエリでビューを参照することはできません。
ビューに適用される割り当てと上限については、ビューの上限をご覧ください。
必要な権限
ビューは BigQuery でテーブル リソースとして扱われるため、ビューを作成するにはテーブルの作成と同じ権限が必要です。ビューを作成するユーザーには、少なくとも bigquery.tables.create
権限が付与されている必要があります。bigquery.tables.create
権限は、事前定義された以下の Cloud IAM 役割に含まれています。
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
また、bigquery.datasets.create
権限があるユーザーがデータセットを作成すると、作成したデータセットに対する bigquery.dataOwner
アクセス権がそのユーザーに付与されます。
bigquery.dataOwner
アクセス権により、データセットに含まれるビューの作成が許可されます。
BigQuery での Cloud IAM 役割と権限については、事前定義された役割と権限をご覧ください。
ビューの作成
ビューを作成するには、ビューにアクセス可能なデータを定義する SQL クエリを作成します。
ビューの作成に使用する標準 SQL クエリには、テーブルのプロジェクト ID を含め、`project_id.dataset.table`
の形式でビューの参照を含める必要があります。標準 SQL では、別のプロジェクトからビューがクエリされたときのあいまいさを避けるため、明示的なプロジェクト ID が必要です。
ビューを作成するには:
Console
クエリを実行した後、クエリ結果ウィンドウの上にある [ビューを保存] ボタンをクリックして、クエリをビューとして保存します。
[ビューの保存] ダイアログで、次の操作を行います。
- [プロジェクト名] で、ビューを保存するプロジェクトを選択します。
- [データセット名] で、ビューを含むデータセットを選択します。ビューを含むデータセットと、そのビューによって参照されているテーブルを含むデータセットは、同じロケーションに存在する必要があります。
- [テーブル名] に、ビューの名前を入力します。
- [保存] をクリックします。
従来の UI
クエリを実行した後、クエリ結果ウィンドウの [Save View] ボタンをクリックし、結果をビューとして保存します。
[Save View] ダイアログで、次の操作を行います。
- [Project] で、ビューを保存するプロジェクトを選択します。
- [Dataset] で、ビューを格納するデータセットを選択します。ビューを含むデータセットと、そのビューによって参照されているテーブルを含むデータセットは、同じロケーションに存在する必要があります。
- [Table ID] に、ビューの名前を入力します。
- [OK] をクリックします。
CLI
mk
コマンドを使用して --view
フラグを指定します。標準 SQL クエリを使用する場合は、--use_legacy_sql
フラグを追加して false
に設定します。オプションのパラメータには --expiration
、--description
、--label
があります。
Google Cloud Storage またはローカル ファイルに格納されている外部のユーザー定義関数リソースをクエリで参照する場合は、--view_udf_resource
フラグを使用してリソースを指定します。--view_udf_resource
フラグはここでは説明しません。UDF の使用方法の詳細については、標準 SQL ユーザー定義関数をご覧ください。
デフォルト プロジェクト以外のプロジェクトにビューを作成する場合は、--project_id
フラグを使用してプロジェクト ID を指定します。
bq mk \ --use_legacy_sql=false \ --view_udf_resource=path_to_file \ --expiration integer \ --description "description" \ --label key:value, key:value \ --view 'query' \ --project_id project_id \ dataset.view
ここで
- path_to_file は、ビューで使用されるユーザー定義関数リソースとして読み込まれ、すぐに評価されるコードファイルの URI またはローカル ファイル システムのパスです。フラグを繰り返して複数のファイルを指定します。
- integer は、ビューのデフォルトの存続期間(秒)です。最小値は 3,600 秒(1 時間)です。現在時刻にこの整数値を足した値が有効期限になります。ビューの作成時に有効期限を設定した場合、データセットのデフォルトのテーブル有効期限設定は無視されます。
- description はビューの説明であり、引用符で囲みます。
- key:value は、ラベルを表す Key-Value ペアです。カンマ区切りリストを使用して複数のラベルを入力できます。
- query は有効なクエリです。標準 SQL ビューでは、クエリにテーブルのプロジェクト ID とビューの参照を
`[PROJECT_ID].[DATASET].[TABLE]`
の形式で含める必要があります。 - project_id はプロジェクト ID です(デフォルトのプロジェクトが構成されていない場合)。
- dataset は、プロジェクト内のデータセットです。
- view は、作成するビューの名前です。
例:
デフォルト プロジェクトにある mydataset
内に myview
という名前のビューを作成するには、次のコマンドを入力します。存続期間は 3,600 秒(1 時間)、説明は This is my view
、ラベルは organization:development
に設定されます。ビューの作成に使用されるクエリは、USA Name データ一般公開データセットのデータを照会します。
bq mk \
--use_legacy_sql=false \
--expiration 3600 \
--description "This is my view" \
--label organization:development \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC' \
mydataset.myview
myotherproject
にある mydataset
内に myview
という名前のビューを作成するには、次のコマンドを入力します。存続期間は 3,600 秒(1 時間)、説明は This is my view
、ラベルは organization:development
に設定されます。ビューの作成に使用されるクエリは、USA Name データ一般公開データセットのデータを照会します。
bq mk \
--use_legacy_sql=false \
--expiration 3600 \
--description "This is my view" \
--label organization:development \
--view \
'SELECT
name,
number
FROM
`bigquery-public-data.usa_names.usa_1910_current`
WHERE
gender = "M"
ORDER BY
number DESC' \
--project_id myotherproject \
mydataset.myview
ビューを作成した後、ビューの有効期限、説明、ラベルを更新できます。詳細については、ビューの更新をご覧ください。
API
view
プロパティを含むテーブル リソースを指定して、tables.insert
メソッドを呼び出します。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Go 向けの手順に沿って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Python の設定手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
ビューを作成したら、テーブルと同じ方法でビューにクエリを実行します。
次のステップ
- 承認済みビューの作成方法については、承認済みビューの作成をご覧ください。
- ビューの一覧表示の詳細については、ビューの一覧表示をご覧ください。
- ビューのメタデータを取得する方法については、ビューの情報の取得をご覧ください。
- ビューを更新する方法については、ビューの更新をご覧ください。
- ビューの管理の詳細については、ビューの管理をご覧ください。