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 儲存體 Gen1、Azure Data Lake 儲存體 Gen2、Azure 檔案儲存體、檔案系統、FTP、Google Cloud 儲存體、HDFS、HTTP、 Oracle Cloud 儲存體 和 SFTP。 支援它作為來源,但不支援接收。
資料集屬性
如需可用來定義資料集之區段和屬性的完整清單,請參閱 數據集 一文。 本節提供 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 ”、“IBM737”、“IBM775”、 “IBM850”、“IBM852”、“IBM855”、“IBM857”、“IBM860”、“IBM861”、“IBM863”、“IBM864”、“IBM865”、“IBM869”、“IBM8889”、“IBM888 70”、“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-1252”、“WINDOWS-1 1253”、“WINDOWS-1254”、“WINDOWS-1255”、“WINDOWS-1256”、“WINDOWS-1257”、“WINDOWS-1258”。 |
No |
nullValue | 指定 null 值的字串表示。 預設值為 空字串。 |
No |
壓縮 | 要配置檔案壓縮的屬性群組。 當您想要在活動執行期間執行壓縮/解壓縮時,請設定本節。 | No |
type (下 compression ) |
用來讀取/寫入 XML 檔案的壓縮編解碼器。 允許的值為 bzip2、gzip、deflate、ZipDeflate、TarGzip、Tar、snappy 或 lz4。 默認值不會壓縮。 請注意,目前 複製活動 不支援 「snappy」 和 「lz4」,而對應數據流不支援 「ZipDeflate」、“TarGzip” 和 “Tar”。 請注意,使用複製活動將 ZipDeflate/TarGzip/Tar 檔案解壓縮並寫入檔案型接收數據存放區時,預設會擷取至 folder: <path specified in dataset>/<folder named as source compressed file>/ ,使用preserveCompressionFileNameAsFolder preserveZipFileNameAsFolder /複製活動來源來控制是否保留壓縮檔的名稱作為資料夾結構。 |
否。 |
level (下 compression ) |
壓縮比例。 允許的值為 最佳 或 最快值。 - 最快: 即使產生的檔案未以最佳方式壓縮,壓縮作業也應該儘快完成。 - 最佳:即使作業需要較長的時間才能完成,壓縮作業也應該以最佳方式壓縮。 如需詳細資訊,請參閱 壓縮層級 主題。 |
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 作為來源
複製活動 *source* 區段中支援下列屬性。 深入瞭解 XML 連接器行為。
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的 type 屬性必須設定為 XmlSource。 | Yes |
format 設定 | 屬性群組。 請參閱下面的 XML 讀取設定表。 | No |
store 設定 | 如何從數據存放區讀取數據的一組屬性。 每個檔案型連接器在 下 storeSettings 都有自己的支援讀取設定。 請參閱連接器文章 -> 複製活動 屬性一節中的詳細數據。 |
No |
支援的 XML 讀取設定:formatSettings
屬性 | 描述 | 必要 |
---|---|---|
type | 格式的類型 設定 必須設定為 XmlRead 設定。 | 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 as ZipDeflateReadSettings ) |
當輸入數據集設定為 ZipDeflate 壓縮時適用。 指出是否要在複製期間保留來源 zip 檔名作為資料夾結構。 - 當設定為 true (預設值)時,服務會將解壓縮的檔案寫入至 <path specified in dataset>/<folder named as source zip file>/ 。- 當設定為 false 時,服務會將解壓縮的檔案直接寫入 。 <path specified in dataset> 請確定您在不同的來源 zip 檔案中沒有重複的檔名,以避免發生賽車或非預期的行為。 |
No |
preserveCompressionFileNameAsFolder (在 compressionProperties ->type as 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 儲存體 Gen1、Azure Data Lake 儲存體 Gen2、Amazon S3 和 SFTP。 您可以使用 XML 資料集或使用 內嵌資料集來指向 XML 檔案。
來源屬性
下表列出 XML 來源所支援的屬性。 您可以在 [ 來源選項 ] 索引標籤編輯這些屬性。深入瞭解 XML 連接器行為。 使用內嵌數據集時,您會看到其他檔案設定,這與數據集屬性一節中所述 的屬性 相同。
名稱 | 描述 | 必要 | 允許的值 | 數據流腳本屬性 |
---|---|---|---|---|
通配符路徑 | 將會處理符合通配符路徑的所有檔案。 覆寫數據集中設定的資料夾和檔案路徑。 | No | String[] | 通配符路徑 |
數據分割根路徑 | 針對分割的檔案數據,您可以輸入資料分割根路徑,以將數據分割資料夾讀取為數據行 | 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_
的 “value column” 值。 如果套用,它也會繼承專案的命名空間。
- 如果 XML 元素同時具有簡單文字值和屬性/子元素,則簡單文字值會剖析為具有內建域名