視圖是 Unity Catalog 中繼資料庫中一個或多個資料表和視圖查詢結果的只讀物件。 您可以從多個架構和目錄中的資料表及其他檢視建立檢視。
本文說明您可以在 Azure Databricks 中建立的檢視,並說明查詢這些檢視所需的權限與運算。
如需有關建立視圖的更多資訊,請參閱:
Unity 目錄中的視圖
在 Unity 目錄中,檢視位於三層命名空間的第三層 (catalog.schema.view):
視圖通常會在中繼存放區針對一個或多個數據源或數據表儲存查詢文字。 在 Azure Databricks 中,視圖相當於以 schema 中物件形式持久化的 Spark DataFrame。 與 DataFrames 不同的是,只要你有權限,你可以從 Azure Databricks 的任何位置查詢視圖。 建立檢視不會處理或寫入任何數據。 只有查詢文字會註冊至相關聯架構中的中繼存放區。
注意
如果檢視使用非 Delta 表格的數據源,則檢視可能會有不同的執行語意。 Databricks 建議您一律使用資料表或視圖名稱來參考資料來源,以定義視圖。 藉由指定路徑或 URI 來定義資料集的檢視,可能會導致數據控管需求混淆。
指標檢視
Unity 目錄中的計量檢視會定義可重複使用的商務計量,這些計量會集中維護並可供工作區中的所有使用者存取。 計量檢視會抽象化常用的 KPI 背後的邏輯,例如營收、客戶計數或轉換率,以便跨儀錶板、筆記本和報表持續查詢這些 KPI。 每個計量檢視會根據源數據表、檢視或 SQL 查詢來指定一組量值和維度。 計量檢視定義於 YAML 中,並使用 SQL 進行查詢。
使用計量檢視有助於減少計量定義中可能會跨多個工具和工作流程重複的不一致。 若要深入瞭解,請參閱 計量檢視 。
具象化視圖
具體化檢視會以累加方式計算和更新定義查詢所傳回的結果。 Azure Databricks 上的實體化視圖是一種特殊的 Delta 表格。 而 Azure Databricks 上的其他檢視則是透過評估定義檢視的邏輯來計算結果,實體化檢視則會處理結果,並在更新處理時將其儲存在底層資料表中,無論是使用更新排程或執行管線更新。
您可以使用 Databricks SQL 在 Unity 目錄中註冊具體化檢視,或將它們定義為 Lakeflow Spark 宣告式管線的一部分。 請參閱 在 Databricks SQL 和 Lakeflow Spark 宣告式管線中使用具體化檢視。
暫存檢視
暫存檢視的範圍和持續性有限,且未註冊至架構或目錄。 暫存檢視的存留期會根據您使用的環境而有所不同:
- 在筆記本和作業中,暫時檢視的範圍僅限於筆記本或腳本層級。 它們無法在宣告的筆記本外部引用,並且當筆記本與叢集中斷連結時將不存在。
- 在 Databricks SQL 中,暫存檢視的範圍設定為查詢層級。 同一查詢中的多個語句可以使用該暫存檢視,但在其他查詢中無法被引用,即使是在同一儀錶板中也不行。
動態檢視
除了數據遮罩之外,動態檢視還可以用來提供行層級和列層級的訪問控制。 請參閱建立動態檢視。
Hive 中繼存放區中的視圖(舊版)
您可以針對任何數據源定義舊版 Hive 檢視,並在舊版 Hive 中繼存放區中註冊它們。 Databricks 建議將所有舊版 Hive 檢視移轉至 Unity 目錄。 請參閱 Hive 中繼資料庫中的檢視。
Hive 全域暫存視圖(舊版)
全域暫存視圖是 Azure Databricks 的舊有功能,允許你註冊一個臨時視圖,該暫存視圖對所有針對運算資源執行的工作負載皆可用。 全域暫存視圖是 Hive 和 HDFS 的遺留組件。 Databricks 不建議使用全域暫存檢視。
查詢視圖的需求
若要讀取在 Unity 目錄中註冊的檢視,所需的許可權取決於計算類型、Databricks 執行時間版本和存取模式。
注意
針對所有檢視,會對檢視本身以及其所依據的基礎資料表和檢視進行許可權檢查。 根據計算資源,檢查基礎表格和檢視權限的使用者可能有所不同。 針對下列事項,Unity Catalog 會檢查視圖擁有者對基礎數據的權限:
- SQL 資料倉庫。
- 標準計算(先前為共享計算)。
- Databricks Runtime 15.4 LTS 和更新版本的專用計算(先前為單一用戶計算),並啟用細粒度訪問控制。
針對 Databricks Runtime 15.3 和以下的專用計算,Unity Catalog 會檢查檢視擁有者的許可權和檢視使用者對底層數據的許可權。
此行為會反映在下列需求中。 不論是哪一種情況,檢視擁有者都必須保有對於基礎數據的許可權,以便檢視使用者能存取檢視。
- 針對所有計算資源,您必須在檢視本身設有
SELECT、在其父目錄上設有USE CATALOG,以及在其父架構上設有USE SCHEMA。 這適用於支援 Unity 目錄的所有計算類型,包括 SQL 倉儲、標準存取模式中的叢集,以及 Databricks Runtime 15.4 和更新版本專用存取模式中的叢集。 - 針對使用專用存取模式的 Databricks Runtime 15.3 及以下版本的叢集,除了在檢視所參考的所有資料表和檢視上必須有
SELECT權限外,您還必須在它們的父目錄上有USE CATALOG,以及在它們的父架構上有USE SCHEMA。
注意
如果您在 Databricks Runtime 15.4 LTS 和更新版本上使用專用叢集,並且希望避免在基礎表和檢視表上要求具有 SELECT,那麼請確認 您的工作區已啟用無伺服器計算。
無伺服器運算處理資料篩選,允許訪問視圖,而無需對其基礎表和視圖設置許可權。 請注意,當您使用專用運算資源查詢檢視時,可能會產生無伺服器運算的相關費用。 如需詳細資訊,請查看 專用計算的精細存取控制。