Databricks SQLでマテリアライズドビューを構成する
プレビュー
この機能は パブリック プレビュー段階です。
この記事では、結果のアクセス制御を含め、 Databricks SQLでマテリアライズドビューを構成する方法について説明します。 ほとんどの構成は、 CREATE OR REPLACE MATERIALIZED VIEWステートメントを使用してマテリアライズドビューを作成するとき、または作成後にALTER TABLEステートメントを使用して実行できます。
マテリアライズドビューを説明する
マテリアライズドビューの列とデータ型を取得するには、 DESCRIBE ステートメントを使用します。 マテリアライズドビューの列、データ型、所有者、場所、作成時間、更新ステータスなどのメタデータを取得するには、 DESCRIBE EXTENDED使用します。 DESCRIBEステートメントを送信するには、Databricks UI の SQL エディター、 Databricks SQL CLI 、またはDatabricks SQL APIを使用します。
Catalog Explorer でマテリアライズドビューの詳細情報を取得する
カタログ エクスプローラーを使用して、マテリアライズドビューの詳細を表示することもできます。
- クリック
サイドバーの カタログ 。
- 左側のカタログ エクスプローラー ツリーでカタログを開き、マテリアライズドビューが配置されているスキーマを選択します。
- 選択したスキーマの下にある テーブル アイテムを開き、[マテリアライズドビュー] をクリックします。
ここから、マテリアライズドビュー名の下にあるタブを使用して、マテリアライズドビューに関する以下の情報を表示および編集できます。
- ステータスとスケジュールの更新
- パイプラインの詳細を参照して、更新の履歴と各更新の詳細なログを確認してください。 概要 タブの [ 更新の詳細を表示 ] をクリックして、パイプラインの詳細を表示します。
- テーブルスキーマ
- サンプルデータ (アクティブなコンピュートが必要です)
- 権限
- このマテリアライズドビューが依存するテーブルやパイプラインなどのリネージ
- 使い方を知る
- このマテリアライズドビュー用に作成したモニター
カタログ エクスプローラーでは使用できないテーブルのプロパティがいくつかあります。これらのプロパティについては、またはプログラムで情報を取得するには、 DESCRIBE EXTENDEDコマンドを使用できます。
マテリアライズドビューの定義を更新する
マテリアライズドビューを指定するクエリがその定義です。 マテリアライズドビューの定義を変更するには、クエリを編集するか、同じビュー名で新しいCREATE OR REPLACE MATERIALIZED VIEWクエリを作成して実行します。 完全な更新を実行してマテリアライズドビューを更新し、さらに新しい定義を使用して更新します。
マテリアライズドビューへのアクセスを制御する
マテリアライズドビューは、豊富なアクセス制御をサポートして、潜在的にプライベートなデータを公開しないようにしながら、データ共有をサポートします。 マテリアライズド・ビューの所有者または MANAGE 権限を持つユーザーは、他のユーザーに SELECT 権限を付与できます。 マテリアライズドビューへの SELECT アクセス権を持つユーザは、マテリアライズドビューが参照するテーブルへのアクセス権 SELECT 必要はありません。 このアクセス制御により、基になるデータへのアクセスを制御しながら、データを共有できます。
マテリアライズドビューに権限を付与する
マテリアライズドビューへのアクセスを許可するには、 GRANTステートメントを使用します。
GRANT <privilege_type> ON <mv_name> TO <principal>;
privilege_type は次のいずれかになります。
SELECT- ユーザーはマテリアライズドビューをSELECTできます。REFRESH- ユーザーはマテリアライズドビューをREFRESHできます。 更新は所有者の権限を使用して実行されます。
次の例では、マテリアライズドビューを作成し、選択権限と更新権限をユーザーに付与します。
CREATE MATERIALIZED VIEW mv_name AS SELECT * FROM source_table;
-- Grant read-only access:
GRANT SELECT ON mv_name TO read_only_user;
-- Grand read and refresh access:
GRANT SELECT ON mv_name TO refresh_user;
GRANT REFRESH ON mv_name TO refresh_user;
マテリアライズドビューの権限の剥奪
マテリアライズドビューからのアクセスを取り消すには、 REVOKEステートメントを使用します。
REVOKE privilege_type ON <mv_name> FROM principal;
ソース テーブルに対するSELECT権限がマテリアライズドビューの所有者、またはマテリアライズドビューに対するMANAGEまたはSELECT権限を付与されている他のユーザーから取り消された場合、またはソース テーブルが削除された場合でも、マテリアライズドビューの所有者またはアクセス権を付与されたユーザーは引き続きマテリアライズドビューをクエリできます。 ただし、次の動作が発生します。
- マテリアライズドビューの所有者またはマテリアライズドビューにアクセスできなくなった他の人は、そのマテリアライズドビューを
REFRESHできなくなり、マテリアライズドビューは古くなります。 - スケジュールを使用して自動化されている場合、次にスケジュールされている
REFRESH失敗するか、実行されません。
次の例では、 read_only_userからSELECT権限を取り消します。
REVOKE SELECT ON mv_name FROM read_only_user;
ランタイムチャンネルを設定する
SQLウェアハウスで作成したマテリアライズドビューはパイプラインを使用して自動更新されます。 ラインパイプは当然currentチャンネルのランタイムを使用します。 リリース プロセスについては、 Lakeflow Spark宣言型パイプライン リリース ノートとリリース アップグレード プロセスを参照してください。
Databricks本番運用ワークロードにはcurrentチャンネルを使用することをおすすめします。 新機能は最初にpreviewチャンネルにリリースされます。 テーブル プロパティとしてpreview指定することで、パイプラインをプレビュー チャンネルに設定して新機能をテストできます。 このプロパティは、テーブルを作成するとき、または ALTER ステートメントを使用してテーブルが作成された後に指定できます。
次のコード例は、CREATE ステートメントでプレビューするチャンネルを設定する方法を示しています。
CREATE OR REPLACE MATERIALIZED VIEW sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
AS ...
チャンネルの作成後に変更するには、 ALTER TABLEステートメントを使用します。
ALTER TABLE <table-name> SET TBLPROPERTIES ('pipelines.channel' = 'preview');