共用方式為


開啟鏡像登陸區域需求和格式

本文詳述 Microsoft Fabric 中開啟鏡像的登陸區域和數據表/數據行作業需求。

重要

此功能處於預覽

一旦您透過網狀架構入口網站或 Fabric 工作區中的公用 API 建立開啟的鏡像資料庫,您就可以在鏡像資料庫專案的 [首頁] 頁面的 OneLake 中取得登陸區域 URL。 此登陸區域是您的應用程式以 Parquet 格式建立元數據檔案和登陸數據的位置(未壓縮、Snappy、GZIP、ZSTD)。

網狀架構入口網站的螢幕快照,其中顯示鏡像資料庫專案首頁中的登陸區域 URL 位置。

登陸區域

針對每個鏡像資料庫,OneLake 中都有元數據和差異數據表的唯一儲存位置。 開啟鏡像會為應用程式提供登陸區域資料夾,以建立元數據檔案,並將數據推送至 OneLake。 鏡像會監視登陸區域中的這些檔案,並讀取新增之數據表和數據的資料夾。

例如,如果您有在登陸區域中建立的數據表 (Table ATable BTable C、 ),請建立資料夾,例如下列 URL:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableC

登陸區域中的元數據檔案

每個數據表資料夾都必須包含檔案 _metadata.json

此資料表元資料檔案包含 JSON 記錄,目前僅將唯一索引鍵資料列指定為 keyColumns

例如,若要宣告數據行 C1 ,以及 C2 做為數據表的複合唯一索引鍵:

{
   "keyColumns" : ["C1", "C2"]
}

如果未 keyColumns 指定 或 _metadata.json ,則無法更新/刪除。 您可以隨時新增此檔案,但一旦新增 keyColumns 就無法變更。

登陸區域中的數據檔和格式

開啟鏡像支援 Parquet 作為登陸區域檔格式,無論是否壓縮。 支援的壓縮格式包括Snappy、GZIP 和 ZSTD。

寫入登陸區域的所有 Parquet 檔案都有下列格式:

<RowMarker><DataColumns>

  • RowMarker:數據行名稱是 __rowMarker__ (包括前後 rowMarker的兩個底線)。

    • RowMaker 值:
      • 0 針對 INSERT
      • 1 適用於UPDATE
      • 2 for DELETE
      • 4 for UPSERT
  • 數據列順序:檔案中的所有記錄都應該按照交易中套用的自然順序。 對於更新多次的相同數據列而言,這很重要。 開啟鏡像會使用檔案中的順序來套用變更。

  • 檔案順序:檔案應該以單調遞增的數位新增。

  • 檔案名:檔案名為 20 位數,例如 00000000000000000001.parquet 第一個檔案,而 00000000000000000002.parquet 第二個數位則為 。 檔名應以連續數字為單位。 鏡像服務會自動刪除檔案,但最後一個檔案將會保留,讓發行者系統可以參考它,以依序新增下一個檔案。

初始載入

若要將數據初始載入至開啟的鏡像資料庫,所有數據列都應該有 INSERT 做為數據列標記。 如果沒有 RowMarker 檔案中的數據,鏡像會將整個檔案視為 INSERT。

累加變更

開啟鏡像會依序讀取累加變更,並將其套用至目標 Delta 數據表。 順序在變更記錄檔和檔案的順序中是隱含的。

更新的數據列必須包含完整數據列數據,且所有數據行。

以下是將數據列記錄的一些範例 parquet 數據從 Redmond 變更EmployeeLocationEmployeeID為 Bellevue 的 E0001。 在此案例中,數據EmployeeID行已標示為登陸區域中元數據檔案中的索引鍵數據行。

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue

如果索引鍵數據行已更新,則應該由上一個索引鍵數據行上的 DELETE 和具有新索引鍵和數據之 INSERT 數據列呈現。 例如,將 E0001 的唯一RowMarkerEmployeeID標識碼變更為 E0002 的數據列記錄。 您不需要提供 DELETE 資料列的所有資料行數據,只有索引鍵數據行。

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue

數據表作業

開啟鏡像支持數據表作業,例如新增、卸除和重新命名數據表。

新增資料表

開啟鏡像會挑選應用程式新增至登陸區域的任何數據表。 在每次反覆運算中開啟新數據表的鏡像掃描。

卸除資料表

開啟鏡像會追蹤資料夾名稱。 如果刪除數據表資料夾,開啟鏡像會卸除鏡像資料庫中的數據表。

如果重新建立資料夾,開啟鏡像會卸除數據表,並使用資料夾中的新數據重新建立該數據表,方法是追蹤資料夾的ETag來完成。

嘗試卸除數據表時,您可以嘗試刪除資料夾,但有可能開啟鏡像仍在使用資料夾中的數據,而導致發行者刪除失敗。

重新命名數據表

若要重新命名數據表,請卸除並重新建立具有初始和增量數據的資料夾。 數據必須重新填入重新命名的數據表。

結構描述

您可以在架構資料夾內指定資料表路徑。 架構登陸區域應該有 <schemaname>.schema 資料夾名稱。 可以有多個架構,而且架構中可以有多個數據表。

例如,如果您有要在登陸區域中建立的架構 (Schema1Schema2) 和數據表 (Table ATable BTable C、 ),請在 OneLake 中建立類似下列路徑的資料夾:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema2.schema/TableC

數據表數據行和數據行作業

資料行類型

  • 登陸區域支持簡單的 parquet 類型。
  • 複雜類型應該寫入為 JSON 字串。
  • 地理、影像等二進位複雜類型可以儲存為登陸區域中的二進位類型。

新增資料行

如果新的數據行新增至 parquet 檔案,則開啟鏡像會將數據行新增至差異數據表。

刪除資料行

如果從新的記錄檔卸除數據行,請開啟新數據列中這些數據行的鏡像存放區 NULL ,而舊數據列具有數據中的數據行。 若要刪除數據行, 請卸除數據表 ,然後再次在登陸區域中建立數據表資料夾,這會導致使用新的架構和數據重新建立 Delta 資料表。

開啟鏡像一律會聯集舊版新增數據的所有數據行。 若要移除數據行,請重新建立資料表/資料夾。

變更資料行類型

若要變更數據行類型,請卸除並重新建立具有新數據行類型之初始和累加數據的資料夾。 提供新的數據行類型而不重新建立數據表會導致錯誤,而該數據表的復寫將會停止。 重新建立數據表資料夾之後,複寫會以新的資料和架構繼續執行。

重新命名資料行

若要重新命名數據行,請刪除資料表資料夾,然後使用所有資料和新的資料列名稱重新建立資料夾。

後續步驟