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

この記事では、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 のバージョン、アクセス モードによって異なります。

  • すべてのコンピューティング リソースについて、ビュー自体、親カタログ、USE CATALOGおよびそのUSE SCHEMA親スキーマが必要SELECTです。 これは、SQL ウェアハウス、共有アクセス モードのクラスター、Databricks Runtime 15.4 以降のシングル ユーザー アクセス モードのクラスターなど、Unity カタログをサポートするすべてのコンピューティングの種類に適用されます。
  • シングル ユーザー アクセス モードを使用する Databricks Runtime 15.3 以下のクラスターの場合は、親カタログと親スキーマに加えてUSE CATALOG、ビューによって参照されるすべてのテーブルとUSE SCHEMAビューもSELECT必要です。

Note

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;