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