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