ビューの作成と管理

この記事では、Unity Catalog でビューを作成する方法を説明します。 ビューとはを参照してください。

必要な権限

ビューを作成するには、次のようにします。

  • 親カタログに対する USE CATALOG 権限と、親スキーマに対する USE SCHEMA 権限と CREATE TABLE 権限が必要です。 メタストア管理者またはカタログ所有者は、これらすべての特権を付与できます。 スキーマ所有者は、スキーマに対する USE SCHEMA および CREATE TABLE 権限をユーザーに付与できます。

  • ビューで参照される表とビュー (表またはビューのSELECT 、カタログの USE CATALOG 、スキーマの USE SCHEMA ) を読み取ることができる必要があります。

  • ビューがワークスペースローカルHive metastore内のテーブルを参照する場合、そのビューにはワークスペースローカル テーブルを含むワークスペースからのみアクセスできます。 このため、Databricks では、Unity Catalog メタストアにあるテーブルまたはビューからのみビューを作成することをお勧めします。

  • Delta Sharingを使用して共有されているビューを参照するビューを作成することはできません。 Delta Sharingとは何ですか?を参照してください。

ビューを読み取るために必要なアクセス許可は、コンピュートの種類、 Databricks Runtimeバージョン、およびアクセス モードによって異なります。

  • すべてのコンピュート リソースについて、ビュー自体に SELECT 、親カタログに USE CATALOG 、親スキーマに USE SCHEMA が必要です。 これは、 SQLウェアハウス、Databricks Runtime 15.4 以降の共有アクセス モードのクラスター、シングル ユーザー アクセス モードのクラスターなど、 Unity Catalogをサポートするすべてのコンピュートタイプに適用されます。

  • シングル ユーザー アクセス モードを使用する Databricks Runtime 15.3 以前のクラスターの場合、ビューによって参照されるすべてのテーブルとビューに対する SELECT に加えて、親カタログに対する USE CATALOG と親スキーマに対する USE SCHEMA も必要です。

注:

Databricks Runtime 15.4 LTS 以上でシングルユーザークラスタを使用していて、基盤となるテーブルとビューにSELECTが必要なくない場合は、ワークスペースがサーバレス コンピュートに対して有効になっていることを確認します。

サーバレス コンピュートは、データ・フィルタリングを処理します。これにより、基礎となるテーブルやビューに対するパーミッションを必要とせずにビューにアクセスできます。 シングル ユーザ コンピュートを使用してビューをクエリすると、サーバレス コンピュートの料金が発生する可能性があることに注意してください。 詳細については、シングル ユーザー コンピュートでのきめ細かなアクセス制御を参照してください。

ビューを作成する

ビューを作成するには、次の SQL コマンドを実行します。 括弧内の項目はオプションです。 プレースホルダーの値を置き換えます。

  • <catalog-name>:カタログの名前。

  • <schema-name>:スキーマの名前。

  • <view-name>: ビューの名前。

  • <query>: ビューの構成に使用されるクエリ、列、テーブル、およびビュー。

CREATE VIEW <catalog-name>.<schema-name>.<view-name> AS
SELECT <query>;

たとえば、sales_raw表の列からsales_redactedという名前のビューを作成するには、次のようにします。

CREATE VIEW sales_metastore.sales.sales_redacted AS
SELECT
  user_id,
  email,
  country,
  product,
  total
FROM sales_metastore.sales.sales_raw;

Databricks Terraform プロバイダーdatabricks_table を使用してビューを作成することもできます。ビューのフルネームのリストは、 databricks_viewsを使用して取得できます。

ビューをドロップする

ビューを削除するには、ビューの所有者である必要があります。 ビューを削除するには、次の SQL コマンドを実行します。

DROP VIEW IF EXISTS catalog_name.schema_name.view_name;