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 儲存體 Gen1Azure 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 檔案的壓縮編解碼器。
允許的值為 bzip2gzip、deflateZipDeflateTarGzipTarsnappylz4。 默認值不會壓縮。
請注意,目前 複製活動 不支援 「snappy」 和 「lz4」,而對應數據流不支援 「ZipDeflate」、“TarGzip” 和 “Tar”。
請注意,使用複製活動將 ZipDeflate/TarGzip/Tar 檔案解壓縮並寫入檔案型接收數據存放區時,預設會擷取至 folder:<path specified in dataset>/<folder named as source compressed file>/,使用preserveCompressionFileNameAsFolderpreserveZipFileNameAsFolder/複製活動來源來控制是否保留壓縮檔的名稱作為資料夾結構。
否。
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 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 儲存體 Gen1、Azure Data Lake 儲存體 Gen2Amazon S3SFTP。 您可以使用 XML 資料集或使用 內嵌資料集來指向 XML 檔案。

來源屬性

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

名稱 描述 必要 允許的值 數據流腳本屬性
通配符路徑 將會處理符合通配符路徑的所有檔案。 覆寫數據集中設定的資料夾和檔案路徑。 No String[] 通配符路徑
數據分割根路徑 針對分割的檔案數據,您可以輸入資料分割根路徑,以將數據分割資料夾讀取為數據行 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_的 “value column” 值。 如果套用,它也會繼承專案的命名空間。