Azure Data Factory 和 Synapse Analytics 管線中的 XML 格式
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory (部分機器翻譯),這是適用於企業的全方位分析解決方案。 Microsoft Fabric (部分機器翻譯) 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用 (部分機器翻譯)!
當您想要剖析 XML 檔案時,請遵循此文章。
下列連接器可支援 XML 格式:Amazon S3、Amazon S3 相容儲存體、Azure Blob、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2、Azure 檔案儲存體、檔案系統、FTP、Google Cloud Storage、HDFS、HTTP、Oracle Cloud Storage 和 SFTP。 支援 Excel 格式作為來源,但不支援接收。
資料集屬性
如需可用來定義資料集的區段和屬性完整清單,請參閱資料集一文。 本節提供 XML 資料集所支援的屬性清單。
屬性 | 描述 | 必要 |
---|---|---|
type | 資料集的 type 屬性必須設定為 Xml。 | Yes |
location | 檔案的位置設定。 每個檔案型連接器都包含專屬的位置類型,並支援 location 下的屬性。 請參閱連接器文章 -> 資料集屬性一節中的詳細資料。 |
Yes |
encodingName | 用來讀取/寫入測試檔案的編碼類型。 允許的值如下:"UTF-8"、"UTF-16"、"UTF-16BE"、"UTF-32"、"UTF-32BE"、"US-ASCII"、"UTF-7"、"BIG5"、"EUC-JP"、"EUC-KR"、"GB2312"、"GB18030"、"JOHAB"、"SHIFT-JIS"、"CP875"、"CP866"、"IBM00858"、"IBM037"、"IBM273"、"IBM437"、"IBM500"、"IBM737"、"IBM775"、"IBM850"、"IBM852"、"IBM855"、"IBM857"、"IBM860"、"IBM861"、"IBM863"、"IBM864"、"IBM865"、"IBM869"、"IBM870"、"IBM01140"、"IBM01141"、"IBM01142"、"IBM01143"、"IBM01144"、"IBM01145"、"IBM01146"、"IBM01147"、"IBM01148"、"IBM01149"、"ISO-2022-JP"、"ISO-2022-KR"、"ISO-8859-1"、"ISO-8859-2"、"ISO-8859-3"、"ISO-8859-4"、"ISO-8859-5"、"ISO-8859-6"、"ISO-8859-7"、"ISO-8859-8"、"ISO-8859-9"、"ISO-8859-13"、"ISO-8859-15"、"WINDOWS-874"、"WINDOWS-1250"、"WINDOWS-1251"、"WINDOWS-1252"、"WINDOWS-1253"、"WINDOWS-1254"、"WINDOWS-1255"、"WINDOWS-1256"、"WINDOWS-1257"、"WINDOWS-1258"。 |
No |
nullValue | 指定 Null 值的字串表示法。 預設值是空字串。 |
No |
壓縮 | 設定檔案壓縮的屬性群組。 當您要在活動執行期間執行壓縮/解壓縮時,請設定此區段。 | No |
type (在 compression 下) |
用來讀取/寫入 XML 檔案的壓縮轉碼器。 允許的值為 bzip2、gzip、deflate、ZipDflate、TarGzip、Tar、snappy 或 lz4。 預設為不壓縮。 請注意,複製活動目前不支援 "snappy" 與 "lz4",而對應資料流不支援 "ZipDeflate"、"TarGzip" 和 "Tar"。 請注意,使用複製活動將 ZipDeflate/TarGzip/Tar 檔案解壓縮並寫入檔案型接收資料存放區時,預設會將檔案擷取至資料夾: <path specified in dataset>/<folder named as source compressed file>/ ,在複製活動來源上使用 preserveZipFileNameAsFolder /preserveCompressionFileNameAsFolder 來控制是否要保留壓縮檔的名稱做為資料夾結構。 |
否。 |
level (在 compression 下) |
壓縮比。 允許的值為 Optimal 或 Fastest。 - Fastest:即使產生的檔案不以最佳方式壓縮,也應盡快完成壓縮作業。 - Optimal:即使作業需要較長時間完成,壓縮作業也應以最佳方式壓縮。 如需詳細資訊,請參閱 壓縮層級 主題。 |
No |
以下是 Azure Blob 儲存體上的 XML 資料集範例:
{
"name": "XMLDataset",
"properties": {
"type": "Xml",
"linkedServiceName": {
"referenceName": "<Azure Blob Storage linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"container": "containername",
"folderPath": "folder/subfolder",
},
"compression": {
"type": "ZipDeflate"
}
}
}
}
複製活動屬性
如需可用來定義活動的區段和屬性完整清單,請參閱管線一文。 本節提供 XML 來源所支援的屬性清單。
了解如何從結構描述對應對應 XML 資料和接收資料存放區/格式。 預覽 XML 檔案時,資料會以 JSON 階層顯示,且您會使用 JSON 路徑以指向欄位。
XML 做為來源
複製活動的 [來源] 區段支援下列屬性。 透過 XML 連接器行為深入了解。
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的 type屬性必須設定為 XmlSource。 | Yes |
formatSettings | 屬性群組。 請參閱以下的 XML 讀取設定表格。 | No |
storeSettings | 屬性群組,可決定從資料存放區讀取資料的方式。 在 storeSettings 下,每個檔案型連接器都包含專屬的支援讀取設定。 請參閱連接器文章 -> 複製活動屬性一節中的詳細資料。 |
No |
支援的 XML 讀取設定位於 formatSettings
底下:
屬性 | 描述 | 必要 |
---|---|---|
type | formatSettings 的類型必須設定為 XmlReadSettings。 | Yes |
validationMode | 指定是否要驗證 XML 結構描述。 允許的值為 none (預設值,無驗證)、xsd (使用 XSD 驗證)、dtd (使用 DTD 驗證)。 |
No |
命名空間 | 是否要在剖析 XML 檔案時啟用命名空間。 允許的值為:true (預設值)、false。 | No |
namespacePrefixes | 前置詞對應的命名空間 URI,用於在剖析 XML 檔案時指定欄位。 如果 XML 檔案已啟用命名空間和命名空間,則欄位名稱預設會與 XML 文件中相同。 如果此對應中已定義命名空間 URI 的項目,則欄位名稱為 prefix:fieldName 。 |
No |
detectDataType | 是否要偵測整數、雙精度浮點數和布林值資料類型。 允許的值為:true (預設值)、false。 | No |
compressionProperties | 關於如何針對指定的壓縮轉碼器解壓縮資料的一組屬性。 | No |
preserveZipFileNameAsFolder ( compressionProperties ->type 下為 ZipDeflateReadSettings ) |
將輸入資料集設定為使用 ZipDeflate 壓縮時適用。 指出是否要在複製期間保留來源 ZIP 檔案名稱做為資料夾結構。 - 設定為 true (預設) 時,服務會將解壓縮的檔案寫入 <path specified in dataset>/<folder named as source zip file>/ 。- 設定為 false 時,服務會將解壓縮的檔案直接寫入 <path specified in dataset> 。 請確定不同的來源 ZIP 檔案中沒有重複的檔案名稱,以避免發生競爭或非預期的行為。 |
No |
preserveCompressionFileNameAsFolder ( compressionProperties -type > 下為 TarGZipReadSettings 或 TarReadSettings ) |
將輸入資料集設定為使用 TarGzip/Tar 壓縮時適用。 指出是否要在複製期間保留來源壓縮檔案名稱做為資料夾結構。 - 設定為 true (預設) 時,服務會將解壓縮的檔案寫入 <path specified in dataset>/<folder named as source compressed file>/ 。 - 設定為 false 時,服務會將解壓縮的檔案直接寫入 <path specified in dataset> 。 請確定不同的來源檔案中沒有重複的檔案名稱,以避免發生競爭或非預期的行為。 |
No |
對應資料流程屬性
在對應資料流中,您可以在下列資料存放區讀取 XML 格式:Azure Blob 儲存體、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2、Amazon S3 和 SFTP。 您可以使用 XML 資料集或內嵌資料集來指向 XML 檔案。
來源屬性
下表列出 XML 來源支援的屬性。 您可以在 [來源選項] 索引標籤中編輯這些屬性。透過 XML 連接器行為深入了解。 使用內嵌資料集時,您會看到其他檔案設定,其與資料集屬性一節所述的屬性相同。
名稱 | 描述 | 必要 | 允許的值 | 資料流程指令碼屬性 |
---|---|---|---|---|
萬用字元路徑 | 系統會處理符合萬用字元路徑的所有檔案。 覆寫資料集的資料夾和檔案路徑集合。 | No | String[] | wildcardPaths |
分割區根路徑 | 如果是分割的檔案資料,您可以輸入分割區根路徑,讀取作為資料行的分割資料夾 | No | String | partitionRootPath |
檔案清單 | 您的來源是否指向列出待處理檔案的文字檔 | No | true 或 false |
fileList |
儲存檔案名稱的資料行 | 使用來源檔案名稱和路徑,建立新的資料行 | No | String | rowUrlColumn |
完成後 | 處理後刪除或移動檔案。 從容器根開始的檔案路徑 | No | 刪除:true 或 false 移動: ['<from>', '<to>'] |
purgeFiles moveFiles |
依上次修改日期來篩選 | 根據上次變更檔案的時間,選擇篩選的檔案 | No | 時間戳記 | modifiedAfter modifiedBefore |
驗證模式 | 指定是否要驗證 XML 結構描述。 | No | None (預設值,無驗證)xsd (使用 XSD 驗證)dtd (使用 DTD 驗證)。 |
validationMode |
命名空間 | 是否要在剖析 XML 檔案時啟用命名空間。 | No | true (預設值) 或 false |
命名空間 |
命名空間前置詞對組 | 前置詞對應的命名空間 URI,用於在剖析 XML 檔案時指定欄位。 如果 XML 檔案已啟用命名空間和命名空間,則欄位名稱預設會與 XML 文件中相同。 如果此對應中已定義命名空間 URI 的項目,則欄位名稱為 prefix:fieldName 。 |
No | 具有模式 ['URI1'->'prefix1','URI2'->'prefix2'] 的陣列 |
namespacePrefixes |
允許找不到任何檔案 | 如果為 true,找不到檔案時不會擲回錯誤 | 否 | true 或 false |
ignoreNoFilesFound |
XML 來源指令碼範例
下列指令碼是使用資料集模式的對應資料流中 XML 來源組態的範例。
source(allowSchemaDrift: true,
validateSchema: false,
validationMode: 'xsd',
namespaces: true) ~> XMLSource
下列指令碼是使用內嵌資料集模式的 XML 來源組態的範例。
source(allowSchemaDrift: true,
validateSchema: false,
format: 'xml',
fileSystem: 'filesystem',
folderPath: 'folder',
validationMode: 'xsd',
namespaces: true) ~> XMLSource
XML 連接器行為
使用 XML 做為來源時,請注意下列事項。
XML 屬性:
- 元素的屬性會剖析為階層中元素的子欄位。
- 屬性欄位的名稱會遵循模式
@attributeName
。
XML 結構描述驗證:
- 您可以選擇不要驗證結構描述,或使用 XSD 或 DTD 驗證結構描述。
- 使用 XSD 或 DTD 來驗證 XML 檔案時,必須在 XML 檔案內透過相對路徑參考 XSD/DTD。
命名空間處理:
- 使用資料流程時可以停用命名空間,在此情況下,定義命名空間的屬性會剖析為一般屬性。
- 啟用命名空間時,元素和屬性的名稱預設會遵循模式
namespaceUri,elementName
和namespaceUri,@attributeName
。 您可以在來源中為每個命名空間 URI 定義命名空間前置詞,在此情況下,元素和屬性的名稱會改為遵循模式definedPrefix:elementName
或definedPrefix:@attributeName
。
值資料行:
- 如果 XML 元素同時具有簡單文字值和屬性/子項目,則簡單文字值會剖析為具有內建欄位名稱
_value_
的「值資料行」值。 而如果適用,它也會繼承元素的命名空間。
- 如果 XML 元素同時具有簡單文字值和屬性/子項目,則簡單文字值會剖析為具有內建欄位名稱