什麼是視圖?
視圖是 Unity Catalog 中繼資料庫中一個或多個資料表和視圖查詢結果的只讀物件。 您可以從資料表和多個架構和目錄中的其他檢視建立檢視。
本文說明您可以在 Azure Databricks 中建立的檢視,並提供查詢這些檢視所需的許可權和計算說明。
如需有關建立視圖的更多資訊,請參閱:
Unity 目錄中的視圖
在 Unity 目錄中,檢視位於三層命名空間的第三層 (catalog.schema.view
):
視圖通常會在中繼存放區針對一個或多個數據源或數據表儲存查詢文字。 在 Azure Databricks 中,檢視相當於將 Spark DataFrame 保存為架構中的物件。 不同於 DataFrame,您可以查詢 Azure Databricks 中任何地方的檢視,假設您有權這麼做。 建立檢視不會處理或寫入任何數據。 只有查詢文字會註冊至相關聯架構中的中繼存放區。
注意
如果檢視是由 Delta 表格以外的數據源支援,則可能會有不同的執行語意。 Databricks 建議您一律使用資料表或視圖名稱來參考資料來源,以定義視圖。 藉由指定路徑或 URI 來定義資料集的檢視,可能會導致數據控管需求混淆。
具象化視圖
具體化檢視會以累加方式計算和更新定義查詢所傳回的結果。 Azure Databricks 上的具體化檢視是一種特殊的 Delta 數據表。 與所有其他檢視不同的是,Azure Databricks 上的檢視在查詢時是透過評估定義邏輯來計算結果,而具體化檢視則會預先處理和儲存結果,將它們儲存在底層表格中,無論是透過重新整理排程還是執行管線更新來處理更新。
您可以使用 Databricks SQL 在 Unity 目錄中註冊具體化檢視,或將它們定義為 DLT 管線的一部分。 請參閱 在 Databricks SQL 中使用具象化檢視 和 什麼是 DLT?。
暫存檢視
暫存檢視的範圍和持續性有限,且未註冊至架構或目錄。 暫存檢視的存留期會根據您使用的環境而有所不同:
- 在筆記本和作業中,暫時檢視的範圍僅限於筆記本或腳本層級。 它們無法在宣告的筆記本外部引用,並且當筆記本與叢集中斷連結時將不存在。
- 在 Databricks SQL 中,暫存檢視的範圍設定為查詢層級。 相同查詢內的多個語句可以使用暫存檢視,但無法在其他查詢中參考,即使在相同的儀錶板內也一樣。
動態檢視
除了數據遮罩之外,動態檢視還可以用來提供行層級和列層級的訪問控制。 請參閱建立動態檢視。
Hive 中繼存放區中的視圖(舊版)
您可以針對任何數據源定義舊版 Hive 檢視,並在舊版 Hive 中繼存放區中註冊它們。 Databricks 建議將所有舊版 Hive 檢視移轉至 Unity 目錄。 請參閱 Hive 中繼資料庫中的檢視。
Hive 全域暫存視圖(舊版)
全域暫存檢視是舊版 Azure Databricks 功能,可讓您註冊針對計算資源執行的所有工作負載可用的暫存檢視。 全域暫存視圖是 Hive 和 HDFS 的遺留組件。 Databricks 不建議使用全域暫存檢視。
查詢視圖的需求
若要讀取在 Unity 目錄中註冊的檢視,所需的許可權取決於計算類型、Databricks 執行時間版本和存取模式。
注意
針對所有檢視,會對檢視本身以及其所依據的基礎資料表和檢視進行許可權檢查。 檢查基礎表和檢視之許可權的使用者取決於計算。 針對下列專案,Unity 目錄會檢查檢視擁有者對基礎數據的許可權:
- 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
的情況,請確認您的工作區 已啟用無伺服器計算。
無伺服器運算處理資料篩選,允許訪問視圖,而無需對其基礎表和視圖設置許可權。 請注意,當您使用專用運算資源查詢檢視時,可能會產生無伺服器運算的相關費用。 如需詳細資訊,請參閱 專用計算的精細存取控制(先前稱為單一使用者計算)。