ビューを作成して管理する
この記事では、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;