ビューの概要
ビューは SQL クエリによって定義される仮想テーブルです。ビューを使用すると、複雑なクエリや限定された一連のデータに簡単に再利用できる名前を付けることができ、その後他のユーザーのアクセスを承認できます。ビューを作成すると、ユーザーはテーブルと同様にビューに対してもクエリを実行できます。クエリ結果には、ビューを定義するクエリで指定されたテーブルとフィールドのデータのみが含まれます。
ビューをクエリするたびに、ビューを定義しているクエリが実行されます。大規模なビューや計算負荷の高いビューを頻繁にクエリする場合は、マテリアライズド ビューの作成を検討する必要があります。
BigQuery ビューは、一般的に次のような目的で使用されます。
- 計算ロジックや結合ロジックを抽象化して共通のオブジェクトに格納し、クエリの使用を簡素化する
- ベーステーブルにアクセスせずに、データのサブセットと計算ロジックにアクセスできるようにする
ビューは、Looker Studio などの可視化ツールのデータソースとしても使用できます。
マテリアライズド ビューとの比較
ビューは仮想的なものであり、再利用可能なデータセットの参照を提供しますが、データを物理的に格納することはありません。マテリアライズド ビューは、通常のビューと同様に SQL を使用して定義されますが、パフォーマンス向上のために BigQuery が使用するデータを物理的に格納します。詳細な比較については、マテリアライズド ビューの機能をご覧ください。
ビューの制限
BigQuery ビューには次の制限があります。
- ビューは読み取り専用です。 たとえば、データを挿入、更新、削除するクエリは実行できません。
- ビューを含むデータセットと、そのビューによって参照されているテーブルを含むデータセットは、同じロケーションに存在する必要があります。
- ビュー内の参照は、データセットで修飾する必要があります。デフォルトのデータセットはビューの本文に影響しません。
TableDataList
JSON API メソッドを使用してビューからデータを取得することはできません。詳細については、Tabledata: list をご覧ください。- ビューを使用するときは、GoogleSQL クエリとレガシー SQL クエリを併用できません。GoogleSQL クエリは、レガシー SQL 構文を使用して定義したビューを参照できません。
- ビューでクエリ パラメータを参照することはできません。
- ビューを作成すると、元のテーブルのスキーマがビューと一緒に保存されます。ビューの作成後に列を追加、削除、または変更しても、ビューは自動的に更新されません。ビューの SQL 定義が変更されるか、ビューが再作成されるまで、報告されるスキーマは不正確なままになります。報告されるスキーマが正確でない場合でも、送信されたクエリは正しい結果を出力します。
- レガシー SQL ビューを GoogleSQL 構文に自動的に更新することはできません。ビューの定義に使用されるクエリを変更するには、次のものを使用できます。
- Google Cloud コンソールの [クエリの編集] オプション
- bq コマンドライン ツールの
bq update --view
コマンド - BigQuery クライアント ライブラリ
- update API メソッドまたは patch API メソッド。
- ビューを定義する SQL クエリに一時的なユーザー定義関数と、一時テーブルを含めることはできません。
- ワイルドカード テーブル クエリでビューを参照することはできません。
ビューの割り当て
ビューに適用される割り当てと制限については、ビューの制限をご覧ください。
ビューの定義に使用する SQL クエリにもクエリジョブの割り当てが適用されます。
ビューの料金
BigQuery のビューは論理ビューです。マテリアライズド ビューではありません。実体化されたビューではないため、ビューを照会するたびに、ビューを定義しているクエリが実行されます。クエリは、トップレベル クエリで直接または間接的に参照される全テーブル フィールドの合計データ量に基づいて課金されます。詳細については、クエリの料金をご覧ください。
ビューのセキュリティ
BigQuery でビューへのアクセスを制御するには、承認済みビューをご覧ください。
次のステップ
- ビューの作成方法については、ビューの作成をご覧ください。
- 承認済みビューの作成方法については、承認済みビューの作成をご覧ください。
- ビューのメタデータを取得する方法については、ビューの情報の取得をご覧ください。
- ビューの管理の詳細については、ビューの管理をご覧ください。