メインコンテンツまでスキップ

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 でマテリアライズドビューの詳細情報を取得する

カタログ エクスプローラーを使用して、マテリアライズドビューの詳細を表示することもできます。

  1. クリックデータアイコン。サイドバーの カタログ
  2. 左側のカタログ エクスプローラー ツリーでカタログを開き、マテリアライズドビューが配置されているスキーマを選択します。
  3. 選択したスキーマの下にある テーブル アイテムを開き、[マテリアライズドビュー] をクリックします。

ここから、マテリアライズドビュー名の下にあるタブを使用して、マテリアライズドビューに関する以下の情報を表示および編集できます。

  • ステータスとスケジュールの更新
  • パイプラインの詳細を参照して、更新の履歴と各更新の詳細なログを確認してください。 概要 タブの [ 更新の詳細を表示 ] をクリックして、パイプラインの詳細を表示します。
  • テーブルスキーマ
  • サンプルデータ (アクティブなコンピュートが必要です)
  • 権限
  • このマテリアライズドビューが依存するテーブルやパイプラインなどのリネージ
  • 使い方を知る
  • このマテリアライズドビュー用に作成したモニター

カタログ エクスプローラーでは使用できないテーブルのプロパティがいくつかあります。これらのプロパティについては、またはプログラムで情報を取得するには、 DESCRIBE EXTENDEDコマンドを使用できます。

マテリアライズドビューの定義を更新する

マテリアライズドビューを指定するクエリがその定義です。 マテリアライズドビューの定義を変更するには、クエリを編集するか、同じビュー名で新しいCREATE OR REPLACE MATERIALIZED VIEWクエリを作成して実行します。 完全な更新を実行してマテリアライズドビューを更新し、さらに新しい定義を使用して更新します。

マテリアライズドビューの所有者を変更する

メタストア管理者とワークスペース管理者の両方である場合は、マテリアライズドビューの所有者を変更できます。 マテリアライズドビュー はLakeflow 宣言型パイプラインを自動的に作成して使用し、変更を処理します。 マテリアライズドビューの所有者を変更するには、次の手順に従います。

  • カタログエクスプローラでマテリアライズドビューを開き、 概要 タブで 更新の詳細を表示 をクリックします。これにより、マテリアライズドビューを管理するパイプラインのパイプライン詳細が開きます。
  • 共有 をクリックします。 権限設定 ダイアログが表示されます。これらの設定を編集するには、メタストアおよびワークスペース管理者である必要があります。
  • 現在の所有者の名前の右側にある x をクリックして、現在の所有者を削除します。
  • 入力を開始すると、利用可能なユーザーのリストがフィルタリングされます。新しいパイプラインの所有者となるユーザーをクリックします。
  • 保存 をクリックして変更を保存し、ダイアログを閉じます。

パイプラインで定義されたマテリアライズドビューを含むすべてのパイプライン資産は、新しいパイプライン所有者によって所有されます。 今後のすべての更新は、新しい所有者の ID を使用して実行されます。

所有者がソーステーブルに対する権限を失った場合

所有者を変更し、新しい所有者がソース テーブルにアクセスできない場合 (または、基礎となるソース テーブルに対するSELECT権限が取り消された場合)、ユーザーは引き続きマテリアライズドビューをクエリできます。 しかし:

  • マテリアライズドビューをREFRESHすることはできません。
  • 次にスケジュールされたマテリアライズドビューの更新は失敗します。

ソース データにアクセスできなくなると更新ができなくなりますが、既存のマテリアライズドビューの読み取りが直ちに無効になるわけではありません。

マテリアライズドビューへのアクセスを制御する

マテリアライズドビューは、豊富なアクセス制御をサポートして、潜在的にプライベートなデータを公開しないようにしながら、データ共有をサポートします。 マテリアライズド・ビューの所有者または MANAGE 権限を持つユーザーは、他のユーザーに SELECT 権限を付与できます。 マテリアライズドビューへの SELECT アクセス権を持つユーザは、マテリアライズドビューが参照するテーブルへのアクセス権 SELECT 必要はありません。 このアクセス制御により、基になるデータへのアクセスを制御しながら、データを共有できます。

マテリアライズドビューに権限を付与する

マテリアライズドビューへのアクセスを許可するには、 GRANTステートメントを使用します。

SQL
GRANT <privilege_type> ON <mv_name> TO <principal>;

privilege_type は次のいずれかになります。

  • SELECT - ユーザーはマテリアライズドビューをSELECTできます。
  • REFRESH - ユーザーはマテリアライズドビューをREFRESHできます。 更新は所有者の権限を使用して実行されます。

次の例では、マテリアライズドビューを作成し、選択権限と更新権限をユーザーに付与します。

SQL
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ステートメントを使用します。

SQL
REVOKE privilege_type ON <mv_name> FROM principal;

ソース テーブルに対するSELECT権限がマテリアライズドビューの所有者、またはマテリアライズドビューに対するMANAGEまたはSELECT権限を付与されている他のユーザーから取り消された場合、またはソース テーブルが削除された場合でも、マテリアライズドビューの所有者またはアクセス権を付与されたユーザーは引き続きマテリアライズドビューをクエリできます。 ただし、次の動作が発生します。

  • マテリアライズドビューの所有者またはマテリアライズドビューにアクセスできなくなった他の人は、そのマテリアライズドビューをREFRESHできなくなり、マテリアライズドビューは古くなります。
  • スケジュールを使用して自動化されている場合、次にスケジュールされているREFRESH失敗するか、実行されません。

次の例では、 read_only_userからSELECT権限を取り消します。

SQL
REVOKE SELECT ON mv_name FROM read_only_user;

ランタイムチャンネルを設定する

SQLウェアハウスを使用して作成されたマテリアライズドビューは、パイプラインを使用して自動的に更新されます。Lakeflow 宣言型パイプラインは、 current チャンネル by デフォルト のランタイムを使用します。 リリース プロセスの詳細については Lakeflow 宣言型パイプライン リリースノート と リリース アップグレード プロセス を参照してください。

Databricksでは本番運用ワークロードには current チャンネルを使用することをお勧めします。 新機能は最初に preview チャンネルにリリースされます。 プレビュー Lakeflow 宣言型パイプライン チャンネルにパイプラインを設定して、 preview をテーブル プロパティとして指定することで新機能をテストできます。 このプロパティは、テーブルを作成するとき、または ALTER ステートメントを使用してテーブルを作成した後に指定できます。

次のコード例は、CREATE ステートメントでプレビューするチャンネルを設定する方法を示しています。

SQL
CREATE OR REPLACE MATERIALIZED VIEW sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
AS ...

チャンネルの作成後に変更するには、 ALTER TABLEステートメントを使用します。

SQL
ALTER TABLE <table-name> SET TBLPROPERTIES ('pipelines.channel' = 'preview');