ビューとは?
ビューは、Unity Catalog メタストア内の 1 つ以上のテーブルとビューに対するクエリの結果である読み取り専用オブジェクトです。 ビューは、テーブルから作成したり、複数のスキーマやカタログ内の他のビューから作成したりできます。
この記事では、 Databricks で作成できるビューについて説明し、クエリを実行するために必要なアクセス許可とコンピュートについて説明します。
ビューの作成に関する情報については、以下を参照してください。
Unity Catalog のビュー
Unity Catalog では、ビューは 3 レベルの名前空間 (catalog.schema.view
の 3 番目のレベルにあります。
ビューには、通常、メタストア内の 1 つ以上のデータソースまたはテーブルに対するクエリのテキストが格納されます。 Databricks では、ビューはスキーマ内のオブジェクトとして保持される Spark データフレーム に相当します。 データフレームとは異なり、Databricksのどこからでもビューをクエリできます。その権限があれば、その権限があります。ビューを作成しても、データの処理や書き込みは行われません。 クエリ テキストのみが、関連付けられたスキーマのメタストアに登録されます。
ビューは、 Delta テーブル以外のデータソースによってサポートされている場合、実行セマンティクスが異なる可能性があります。 Databricks では、常にテーブル名またはビュー名を使用してデータソースを参照することでビューを定義することをお勧めします。 パスまたは URI を指定してデータセットに対してビューを定義すると、データガバナンスの要件が混乱する可能性があります。
具体化されたビュー
マテリアライズドビュー は、定義クエリによって返された結果を増分的に計算および更新します。 Databricks上のマテリアライズドビューは、特別な種類のDeltaテーブルです。Databricks の他のすべてのビューは、クエリ時にビューを定義したロジックを評価して結果を計算しますが、マテリアライズドビュー は、更新スケジュールまたはパイプライン更新の実行を使用して更新が処理されるときに、結果を処理して基になるテーブルに格納します。
を使用して で登録する マテリアライズドビューUnity Catalog Databricks SQLを使用するか、DLT パイプラインの一部として定義できます。「Databricks SQLでのマテリアライズドビューの使用」および「DLT とは」を参照してください。
一時的なビュー
一時ビューは、スコープと永続性が制限されており、スキーマまたはカタログに登録されません。 一時ビューの有効期間は、使用している環境によって異なります。
- ノートブックとジョブでは、テンポラリビューのスコープはノートブックまたはスクリプトレベルに設定されます。 これらは、宣言されているノートブックの外部で参照することはできず、ノートブックがクラスターからデタッチされると存在しなくなります。
- Databricks SQLでは、一時ビューのスコープはクエリーレベルに設定されます。同じクエリー内の複数のステートメントで一時ビューを使用できますが、同じダッシュボード内であっても他のクエリーで一時ビューを参照することはできません。
ダイナミック ビュー
動的ビューを使用すると、データマスキングに加えて、行レベルと列レベルのアクセス制御を提供できます。 「動的ビューの作成」を参照してください。
Hive metastoreのビュー (レガシー)
任意のデータソースに対して従来の Hive ビューを定義し、従来の Hive metastoreで登録することができます。 Databricks では、すべてのレガシ Hive ビューを Unity Catalog に移行することをお勧めします。 「Hive metastoreのビュー」を参照してください。
Hive グローバル温度ビュー (レガシ)
グローバル一時ビューは、コンピュート リソースに対して実行されているすべてのワークロードで使用できる一時ビューを登録できるようにする従来の Databricks 機能です。 グローバル一時ビューは、Hive と HDFS の従来のホールドオーバーです。 Databricks では、グローバル一時ビューを使用しないことをお勧めします。
ビューのクエリの要件
Unity Catalogに登録されているビューを読み取るために必要な権限は、コンピュートの種類、Databricks Runtimeバージョン、およびアクセスモードによって異なります。
すべてのビューについて、ビュー自体と、ビューが構築されている基になるテーブルとビューの両方に対して、アクセス許可チェックが実行されます。 基になるテーブルとビューのパーミッションがチェックされるユーザーは、コンピュートによって異なります。 次の場合、Unity Catalog は、基になるデータに対するビュー所有者のアクセス許可を確認します。
- SQLウェアハウス.
- Standard コンピュート (旧称 shared コンピュート).
- Databricks Runtime 15.4 LTS 以上で、きめ細かなアクセス制御が有効になっている専用のコンピュート (旧称シングル ユーザー コンピュート)。
Databricks Runtime 15.3 以前の専用コンピュートの場合、Unity Catalog は、基になるデータに対するビュー所有者の権限とビュー ユーザーの権限の両方を確認します。
この動作は、以下に示す要件に反映されています。 いずれの場合も、ビューの所有者は、ビュー ユーザーがビューにアクセスするために、基になるデータに対するアクセス許可を保持する必要があります。
- すべてのコンピュート リソースについて、ビュー自体に
SELECT
、親カタログにUSE CATALOG
、親スキーマにUSE SCHEMA
が必要です。 これは、 15.4 以降の ウェアハウス、標準アクセス モードでのクラスター、専用アクセス モードでのクラスターなど、 をサポートするすべてのコンピュート タイプに適用されます。Unity CatalogSQLDatabricks Runtime - 専用アクセスモードを使用する Databricks Runtime 15.3 以下のクラスターでは、ビューによって参照されるすべてのテーブルとビューに対する
SELECT
に加えて、親カタログのUSE CATALOG
と親スキーマのUSE SCHEMA
も必要です。
Databricks Runtime 15.4 LTS 以降で専用のクラスターを使用していて、基になるテーブルとビューにSELECT
が必要なくない場合は、 ワークスペースがサーバレス コンピュートに対して有効になっている ことを確認します。
サーバレス コンピュートは、データ・フィルタリングを処理します。これにより、基礎となるテーブルやビューに対するパーミッションを必要とせずにビューにアクセスできます。 専用のコンピュートを使用してビューをクエリすると、サーバレス コンピュートの料金が発生する可能性があることに注意してください。 詳細については、「 Fine-grained access control on dedicated コンピュート (旧称 single user コンピュート)」を参照してください。