Azure Data Factory 和 Synapse Analytics 管線中的 XML 格式

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory (部分機器翻譯),這是適用於企業的全方位分析解決方案。 Microsoft Fabric (部分機器翻譯) 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用 (部分機器翻譯)!

當您想要剖析 XML 檔案時,請遵循此文章。

下列連接器可支援 XML 格式:Amazon S3Amazon S3 相容儲存體Azure BlobAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2Azure 檔案儲存體檔案系統FTPGoogle Cloud StorageHDFSHTTPOracle Cloud StorageSFTP。 支援 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 檔案的壓縮轉碼器。
允許的值為 bzip2gzipdeflateZipDflateTarGzipTarsnappylz4。 預設為不壓縮。
請注意,複製活動目前不支援 "snappy" 與 "lz4",而對應資料流不支援 "ZipDeflate"、"TarGzip" 和 "Tar"。
請注意,使用複製活動將 ZipDeflate/TarGzip/Tar 檔案解壓縮並寫入檔案型接收資料存放區時,預設會將檔案擷取至資料夾:<path specified in dataset>/<folder named as source compressed file>/,在複製活動來源上使用 preserveZipFileNameAsFolder/preserveCompressionFileNameAsFolder 來控制是否要保留壓縮檔的名稱做為資料夾結構。
否。
level
(compression)
壓縮比。
允許的值為 OptimalFastest
- 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> 下為 TarGZipReadSettingsTarReadSettings)
將輸入資料集設定為使用 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 Gen1Azure Data Lake Storage Gen2Amazon S3SFTP。 您可以使用 XML 資料集或內嵌資料集來指向 XML 檔案。

來源屬性

下表列出 XML 來源支援的屬性。 您可以在 [來源選項] 索引標籤中編輯這些屬性。透過 XML 連接器行為深入了解。 使用內嵌資料集時,您會看到其他檔案設定,其與資料集屬性一節所述的屬性相同。

名稱 描述 必要 允許的值 資料流程指令碼屬性
萬用字元路徑 系統會處理符合萬用字元路徑的所有檔案。 覆寫資料集的資料夾和檔案路徑集合。 No String[] wildcardPaths
分割區根路徑 如果是分割的檔案資料,您可以輸入分割區根路徑,讀取作為資料行的分割資料夾 No String partitionRootPath
檔案清單 您的來源是否指向列出待處理檔案的文字檔 No truefalse fileList
儲存檔案名稱的資料行 使用來源檔案名稱和路徑,建立新的資料行 No String rowUrlColumn
完成後 處理後刪除或移動檔案。 從容器根開始的檔案路徑 No 刪除:truefalse
移動:['<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,找不到檔案時不會擲回錯誤 truefalse 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,elementNamenamespaceUri,@attributeName。 您可以在來源中為每個命名空間 URI 定義命名空間前置詞,在此情況下,元素和屬性的名稱會改為遵循模式 definedPrefix:elementNamedefinedPrefix:@attributeName
  • 值資料行:

    • 如果 XML 元素同時具有簡單文字值和屬性/子項目,則簡單文字值會剖析為具有內建欄位名稱 _value_ 的「值資料行」值。 而如果適用,它也會繼承元素的命名空間。