論理ビューの概要
このドキュメントでは、BigQuery での論理ビューのサポートの概要について説明します。
概要
ビューは SQL クエリによって定義される仮想テーブルです。BigQuery のデフォルトのビュータイプは論理ビューです。クエリ結果には、ビューを定義するクエリで指定されたテーブルとフィールドのデータのみが含まれます。
ビューをクエリするたびに、そのビューを定義しているクエリが実行されます。
ビューのタイプ
論理ビューはデフォルトのビュータイプですが、大規模なビューや計算負荷の高いビューを頻繁にクエリする場合は、マテリアライズド ビューの作成を検討する必要があります。これは、パフォーマンスと効率を高めるためにクエリ結果を定期的にキャッシュに保存する計算済みのビューです。
ただし、多くの場合は、データのサブセットのみをクエリすることで、または他の手法を使用することで、マテリアライズド ビューを作成しなくても論理ビューのパフォーマンスを改善できます。
承認済みビューを作成して、ソース データセットのデータのサブセットをセカンダリ データセットのビューで共有することもできます。このビューを特定のユーザーやグループ(プリンシパル)と共有できます。これらのユーザーやグループは、共有されたデータを表示してクエリできますが、ソース データセットに直接アクセスすることはできません。
承認済みビューは、論理ビューまたはマテリアライズド ビューのいずれかに対して作成できます。マテリアライズド ビューに対する承認済みビューは、承認済みマテリアライズド ビューと呼ばれます。
ユースケース
ビューの一般的なユースケースは次のとおりです。
- 複雑なクエリや限定されたデータセットに簡単に再利用できる名前を付けてから、他のユーザーによるアクセスを承認する。ビューの作成後、このビューに対してユーザーはテーブルと同様にクエリを実行できます。
- 計算ロジックや結合ロジックを抽象化して共通のオブジェクトに格納し、クエリの使用を簡素化する。
- ベーステーブルへのアクセス権を付与せずに、データのサブセットと計算ロジックにアクセスできるようにする。
- 複数のユースケースで、コンピューティング コストが高く、データセットの結果が小さいクエリを最適化する。
次のように、ビューは他のコンテキストでも使用できます。
- Looker Studio などの可視化ツールのデータソースとして使用する。
- Analytics Hub のサブスクライバーとデータを共有する手段として使用する。
マテリアライズド ビューとの比較
論理ビューは仮想的なものであり、再利用可能なデータセットの参照を提供しますが、データを物理的に格納することはありません。マテリアライズド ビューは、論理ビューと同様に 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 でビューへのアクセスを制御するには、承認済みビューをご覧ください。
次のステップ
- ビューの作成方法については、ビューの作成をご覧ください。
- 承認済みビューの作成方法については、承認済みビューの作成をご覧ください。
- ビューのメタデータを取得する方法については、ビューの情報の取得をご覧ください。
- ビューの管理の詳細については、ビューの管理をご覧ください。