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