共用方式為


LIVE 架構 (舊版)

本文提供 LIVE 虛擬架構的舊版語法和行為概觀。

LIVE 虛擬架構是 DLT 管線的舊版功能,被視為已淘汰。 您仍然可以針對使用此模式建立的管線使用舊版發行模式和 LIVE 虛擬架構。

未來版本的 Azure Databricks 將會移除舊版 LIVE 虛擬架構和舊版發行模式的支援。

注意

舊版的發佈模式管線會在 DLT 管線設定 UI 的 [摘要欄位] 中指出。 如果管線的 JSON 規格中已設定 target 欄位,您也可以確認管線使用舊版發佈模式。

您無法使用管線設定UI來建立具有舊版發佈模式的新管線。 如果您需要使用舊版 LIVE 語法部署新的管線,請連絡 Databricks 帳戶代表。

什麼是 LIVE 虛擬架構?

注意

不再需要 LIVE 虛擬架構,才能在 DLT 的預設發佈模式中分析數據集相依性。

LIVE 架構是 DLT 中的程式設計概念,可定義管線中建立或更新之所有數據集的虛擬界限。 根據設計,LIVE 架構不會直接系結至已發佈架構中的數據集。 相反地,LIVE 架構可讓管線中的邏輯規劃並執行,即使使用者不想將數據集發佈至架構也一樣。

在舊版發佈模式管線中,您可以使用 LIVE 關鍵詞參考目前管線中的其他數據集進行讀取,例如,SELECT * FROM LIVE.bronze_table。 在新的 DLT 管線的預設發佈模式中,會以無訊息方式忽略此語法,這表示不合格的標識碼會使用目前的架構。 請參閱 設定目標目錄和架構

管線的傳統發佈模式

LIVE 虛擬架構會與 DLT 管線的舊版發佈模式搭配使用。 所有在 2025 年 2 月 5 日之前建立的數據表預設都會使用舊版發佈模式。

下表說明在舊版發佈模式中,在管線中建立或更新之所有具體化檢視和串流數據表的行為:

記憶體選項 儲存位置或目錄 目標架構 行為
Hive 中繼存放區 未指定 未指定 數據集元數據和數據會儲存至 DBFS 根目錄。 未向Hive中繼存放區註冊任何資料庫物件。
Hive 元資料庫 雲端物件記憶體的 URI 或檔案路徑。 未指定 數據集元數據和數據會儲存至指定的儲存位置。 未向Hive中繼存放區註冊任何資料庫物件。
Hive 中繼資料庫 未指定 Hive 中繼存放區中的現有或新架構。 數據集元數據和數據會儲存至 DBFS 根目錄。 管線中的所有具體化檢視和串流數據表都會發佈至Hive中繼存放區中指定的架構。
Hive 中繼存放區 雲端物件記憶體的 URI 或檔案路徑。 Hive 中繼存放區中的現有或新架構。 數據集元數據和數據會儲存至指定的儲存位置。 管線中的所有具體化檢視和串流數據表都會發佈至Hive中繼存放區中指定的架構。
Unity 目錄 現有的 Unity Catalog 編目。 未指定 數據集元數據和數據會儲存在與目標目錄相關聯的預設儲存位置。 Unity 目錄不會註冊任何資料庫物件。
Unity 目錄 現有的 Unity Catalog 目錄。 Unity 目錄中的現有或新架構。 數據集元數據和數據會儲存在與目標架構或目錄相關聯的預設儲存位置。 管線中的所有具體化檢視和串流數據表都會發佈至 Unity 目錄中的指定架構。

從 LIVE 架構更新原始程式碼

設定為使用新預設發佈模式執行的管線會以無訊息方式忽略 LIVE 架構語法。 根據預設,所有數據表讀取都會使用管線組態中指定的目錄和架構。

對於大部分現有的管線,此行為變更不會影響,因為舊版 LIVE 虛擬架構行為也會將讀取導向管線組態中指定的目錄和架構。

重要

舊版程式碼如果包含使用工作區預設目錄和架構進行讀取的操作,則需要進行程式碼更新。 請考慮下列具體化檢視定義:

CREATE MATERIALIZED VIEW silver_table
AS SELECT * FROM raw_data

在舊版發佈模式中,從 raw_data 資料表進行的未限定讀取會使用工作區的預設目錄和結構,例如 main.default.raw_data。 在新的預設管線模式中,預設使用的目錄和架構是在管線組態中設定的。 若要確保此程式代碼會如預期般運作,請更新參考以使用數據表的完整標識符,如下列範例所示:

CREATE MATERIALIZED VIEW silver_table
AS SELECT * FROM main.default.raw_data

使用 Unity Catalog 舊版發佈模式管線的事件日誌

重要

event_log TVF 適用於將數據表發佈至 Unity 目錄的舊版發佈模式管線。 新管線的預設行為會將事件記錄檔發佈至針對管線設定的目標目錄和架構。 請參閱 查詢事件記錄檔

使用Hive中介資料存儲設定的數據表在事件記錄檔的支持和行為上也有所不同。 請參閱 使用 Hive 中繼存放區管線的事件記錄檔

如果您的管線使用舊版發佈模式將數據表發行至 Unity 目錄,您必須使用 event_log資料表值函式 (TVF) 來擷取管線的事件記錄檔。 您可以將管線標識碼或數據表名稱傳遞至TVF,以擷取管線的事件記錄檔。 例如,若要擷取標識碼為 04c78631-3dd7-4856-b2a6-7d84e9b2638b之管線的事件記錄檔記錄:

SELECT * FROM event_log("04c78631-3dd7-4856-b2a6-7d84e9b2638b")

若要擷取建立或擁有表格 my_catalog.my_schema.table1之管道的事件記錄:

SELECT * FROM event_log(TABLE(my_catalog.my_schema.table1))

若要呼叫TVF,您必須使用共用叢集或 SQL 倉儲。 例如,您可以使用連結至共用叢集的筆記本,或使用 連接到 SQL 倉庫的 SQL 編輯器

為了簡化管線的查詢事件,管線的擁有者可以透過 event_log TVF建立檢視。 下列範例會為管線的事件日誌建立一個檢視。 本文中包含的範例事件記錄查詢中會使用此檢視。

注意

  • event_log TVF 只能由管線擁有者呼叫。
  • 您無法在管線或查詢中使用 event_log 資料表值函式來存取多個管線的事件記錄檔。
  • 您無法與其他使用者共用透過 event_log 資料表值函式所建立的檢視。
CREATE VIEW event_log_raw AS SELECT * FROM event_log("<pipeline-ID>");

<pipeline-ID> 替換為 DLT 管線的唯一識別碼。 您可以在 DLT UI 中 管線詳細資料 面板中找到識別碼。

每次管線執行的實例稱為 更新。 您通常會想要擷取最新更新的資訊。 執行下列查詢來尋找最新更新的標識符,並將它儲存在 latest_update_id 暫存檢視中。 本文中包含的範例事件記錄查詢中會使用此檢視:

CREATE OR REPLACE TEMP VIEW latest_update AS SELECT origin.update_id AS id FROM event_log_raw WHERE event_type = 'create_update' ORDER BY timestamp DESC LIMIT 1;