共用方式為


在 Databricks SQL 中設定具體化檢視

本文說明如何在 Databricks SQL 中設定具體化檢視,包括結果的存取控制。 當您使用 CREATE OR REPLACE MATERIALIZED VIEW 陳述式建立實體化檢視時,或在建立之後使用 ALTER TABLE 陳述式來設定大部分的配置。

描述具體化檢視

若要擷取具體化檢視的直欄和資料類型,請使用 DESCRIBE 陳述式。 若要擷取具體化檢視的欄位、資料類型和中繼資料(例如擁有者、位置、創建時間和更新狀態),請使用 DESCRIBE EXTENDED。 若要提交 DESCRIBE 陳述式,請使用 Azure Databricks UI 中的 SQL 編輯器、 Databricks SQL CLIDatabricks SQL API

使用目錄瀏覽器取得具體化檢視的詳細資訊

或者,您可以使用 「目錄總管」 來檢視具體化檢視的詳細資料。

  1. 按一下[資料] 圖示。在側邊欄中點擊目錄
  2. 在左側的 [目錄總管] 樹狀目錄中,開啟目錄,然後選取具體化檢視所在的架構。
  3. 開啟您所選取架構底下的 [數據表 ] 項目,然後按兩下具體化檢視。

從這裡,您可以使用具體化檢視名稱下的索引標籤來檢視和編輯具體化檢視的相關資訊,包括:

  • 重新整理狀態和排程
  • 請參閱管線詳細資料,以查看重新整理的歷程記錄,以及每次重新整理的詳細記錄。 按一下 [概觀] 索引標籤中的 [查看重新整理詳細資料] 以查看管線詳細資料。
  • 數據表架構
  • 範例資料(需要作用中的計算)
  • 權限
  • 譜系,包括此具體化檢視相依的資料表和管線
  • 使用情況的深入解析
  • 您為此具體化檢視建立的監視器

表格的一些內容在「型錄瀏覽器」中無法使用。 對於這些屬性,或要以程式方式取得資訊,您可以使用 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專用權被從具體化檢視擁有者或任何已被授予具體化檢視的MANAGESELECT專用權的使用者撤銷時,或來源資料表被刪除時,具體化檢視擁有者或獲得存取權的使用者仍然能夠查詢具體化檢視。 但是,會發生下列行為:

  • 具體化檢視擁有者或其他已失去具體化檢視存取權的人無法再 REFRESH 存取該具體化檢視,而且具體化檢視將會過時。
  • 如果使用排程進行自動化,則下一個排程的 REFRESH 會失敗或未執行。

下列範例會撤銷 SELECTread_only_user 權限:

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');