共用方式為


在 Azure 儲存體 上建立和改變差異外部數據表

適用於: ✅Microsoft網狀架構Azure 數據總管

本文中的命令可用來建立或改變 執行命令之資料庫中的差異外部數據表 。 差異外部數據表會參考位於 Azure Blob 儲存體、Azure Data Lake Store Gen1 或 Azure Data Lake Store Gen2 中的 Delta Lake 數據表數據。

注意

如果數據表存在, .create 命令將會失敗併發生錯誤。 使用 .create-or-alter 或修改 .alter 現有的數據表。

若要加速透過外部差異資料表的查詢,請參閱 查詢加速原則

權限

若要 .create 至少 需要資料庫用戶 許可權,而且 .alter 至少 需要數據表管理員 許可權。

若要 .create-or-alter 使用受控識別驗證的外部數據表, 需要 AllDatabasesAdmin 許可權。

語法

.create.alter | | .create-or-alterexternal table TableName [(Schema)]delta kind = (StorageConnectionString ) [ 屬性 [ (with,...]])

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
TableName string ✔️ 遵守 實體名稱規則的外部數據表名稱 。 外部數據表不能與相同資料庫中的一般數據表同名。
結構描述 string 選擇性的外部數據架構是一或多個數據行名稱和數據類型的逗號分隔清單,其中每個專案都遵循格式:ColumnName : ColumnType。 如果未指定,則會根據最新的差異數據表版本,從差異記錄檔自動推斷。
StorageConnectionString string ✔️ 差異數據表根資料夾路徑,包括認證。 可以指向 Azure Blob 儲存體 Blob 容器、Azure Data Lake Gen 2 文件系統或 Azure Data Lake Gen 1 容器。 外部數據表儲存類型是由提供的 連接字串 所決定。 請參閱記憶體 連接字串
屬性 string PropertyName = PropertyValue 格式的索引鍵/值屬性組。 請參閱 選擇性屬性

注意

  • 如果提供自定義架構,則具有不相容類型的非現有數據行或數據行會填入 Null 值。
  • 數據分割的相關信息會自動從差異記錄檔推斷。 數據分割數據行會新增為數據表架構的虛擬數據行。 如需詳細資訊,請參閱 虛擬數據行
  • 路徑格式會自動從數據分割資訊推斷。 如需詳細資訊,請參閱 路徑格式

提示

針對自定義架構,您可以使用 infer_storage_schema 外掛程式,根據外部檔案內容推斷架構。

驗證與授權

存取外部數據表的驗證方法是以建立期間所提供的 連接字串 為基礎,而存取數據表所需的許可權會根據驗證方法而有所不同。

支持的驗證方法與 Azure 儲存體 外部數據表支援的方法相同。

選擇性屬性

屬性 類型​ 描述
folder string 數據表的資料夾
docString string 記錄數據表的字串
namePrefix string 如果設定,表示檔案的前置詞。 在寫入作業上,所有檔案都會以這個前置詞寫入。 在讀取作業上,只會讀取具有此前置詞的檔案。
fileExtension string 如果設定,表示檔案的擴展名。 寫入時,檔名會以這個後綴結尾。 在讀取時,只會讀取具有此擴展名的檔案。
encoding string 顯示文字的編碼方式: UTF8NoBOM (預設值) 或 UTF8BOM
dryRun bool 如果設定,則不會保存外部資料表定義。 這個選項適用於驗證外部數據表定義,特別是與 或 sampleUris 參數搭配filesPreview使用。

注意

建立期間會存取外部差異數據表,以推斷數據分割資訊,並選擇性地推斷架構。 請確定資料表定義有效且可存取記憶體。

範例

使用推斷的架構建立或改變差異外部數據表

在下列外部數據表中,架構會自動從最新的差異數據表版本推斷。

.create-or-alter external table ExternalTable  
kind=delta 
( 
   h@'https://storageaccount.blob.core.windows.net/container1;secretKey'
) 

使用自訂架構建立差異外部數據表

在下列外部數據表中,會指定自定義架構,並覆寫差異數據表的架構。 如果稍後需要以最新的差異數據表版本為基礎的架構來取代自定義架構,請執行 .alter | .create-or-alter 命令而不指定架構,如上一個範例所示。

.create external table ExternalTable (Timestamp:datetime, x:long, s:string) 
kind=delta
( 
   h@'abfss://filesystem@storageaccount.dfs.core.windows.net/path;secretKey'
)

限制

  • 不支援時間移動。 只會使用最新的差異數據表版本。