ビューを作成して管理する

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

必要なアクセス許可

ビューを作成するには:

  • 親カタログに対する USE CATALOG のアクセス許可と、親スキーマに対する USE SCHEMA および CREATE TABLE のアクセス許可が必要です。 メタストア管理者またはカタログ所有者は、これらすべての権限を許可できます。 スキーマ所有者は、スキーマに対する USE SCHEMA および CREATE TABLE 権限を付与できます。
  • ビューで参照されるテーブルとビューの読み取りができる必要があります (テーブルまたはビューでの SELECT、カタログでの USE CATALOG、スキーマでの USE SCHEMA)。
  • ビューがワークスペース ローカルの Hive メタストア内のテーブルを参照している場合、そのビューにアクセスできるのは、ワークスペース ローカル テーブルが含まれるワークスペースからに限られます。 このため、Databricks では、Unity Catalog メタストア内にあるテーブルまたはビューからのみビューを作成することをお勧めします。
  • Delta Sharing を使用して自分と共有されているビューを参照するビューを作成することはできません。 「Delta Sharing とは」を参照してください。

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

  • Databricks Runtime 15.4 以降でのシングル ユーザー コンピューティング リソース、共有コンピューティング リソース、SQL ウェアハウスの場合は、ビュー自体に対する SELECT、その親カタログに対する USE CATALOG、その親スキーマに対する USE SCHEMA が必要です。

    Note

    Databricks Runtime 15.4 LTS 以降でシングル ユーザー コンピューティング リソースを使っている場合は、"ワークスペースがサーバーレス コンピューティングに対して有効になっていること" を確認する必要があります。これは、ビューの基になるテーブルとビューにアクセスする必要なしにビュー アクセスをサポートするデータ フィルター機能を実行します。 そのため、シングル ユーザー コンピューティングを使ってビューのクエリを実行すると、サーバーレス コンピューティング リソースに対して課金される場合があります。 「シングル ユーザー コンピューティングに対するきめ細かなアクセス制御」をご覧ください。 Databricks Runtime 15.4 とサーバーレス コンピューティングを使用するデータ フィルター処理は、パブリック プレビュー段階です。

  • Databricks Runtime 15.3 以前でのシングル ユーザー コンピューティング リソースの場合は、親カタログに対する USE CATALOG と親スキーマに対する USE SCHEMA に加えて、ビューが参照するすべてのテーブルとビューに対する 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;