Azure Data Factory 和 Azure Synapse Analytics 中的分隔文字格式

適用於: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的單一分析解決方案。 Microsoft Fabric 涵蓋從數據移動到數據科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版

當您想要 剖析分隔的文字檔,或將數據寫入分隔的文字格式時,請遵循這篇文章。

下列連接器支援分隔文字格式:

資料集屬性

如需可用來定義資料集之區段和屬性的完整清單,請參閱 數據集 一文。 本節提供分隔文字數據集所支持的屬性清單。

屬性 描述 必要
type 數據集的 type 屬性必須設定為 DelimitedText Yes
location 檔案的位置設定。 每個檔案型連接器都有自己的位置類型和支持的屬性。location Yes
columnDelimiter 用來分隔檔案中數據行的字元。。
預設值為 逗號 ,。 當數據行分隔符定義為空字串時,這表示沒有分隔符,則會將整行視為單一數據行。
目前,只有對應數據流不支持數據行分隔符做為空字串,但不支援 複製活動。
No
rowDelimiter 針對 複製活動,用來分隔檔案中數據列的單一字元或 “\r\n”。 預設值是讀取時下列任何一個值:[“\r\n”、“\r”、“\n”]; on write: “\r\n”。 只有在 copy 命令中才支援 “\r\n”。
針對對應數據流,用來分隔檔案中數據列的單一或兩個字元。 預設值是讀取時下列任何一個值:[“\r\n”、“\r”、“\n”]; 寫入時:「\n」。。
當數據列分隔符設定為無分隔符(空字串),數據行分隔符也必須設定為無分隔符(空字串),這表示將整個內容視為單一值。
目前,只有對應數據流不支持數據列分隔符做為空字串,但不支援 複製活動。
No
quoteChar 如果單一字元包含數據行分隔符,則為數據行值加上引號。
預設值為 雙引號"
當定義為空字串時 quoteChar ,表示沒有引號 char 且數據行值未加上引號,而且 escapeChar 用來逸出數據行分隔符和本身。
No
escapeChar 在引號值內逸出引號的單一字元。
預設值為 反斜杠 \
當定義為空字串時 escapeCharquoteChar 也必須將 設定為空字串,在此情況下,請確定所有數據行值不包含分隔符。
No
firstRowAsHeader 指定是否要將第一列視為具有數據行名稱的行首行。
允許的值為 truefalse (預設值)。
當第一個數據列作為標頭為 false 時,注意 UI 資料預覽和查閱活動輸出會自動產生數據行名稱作為 Prop_{n} (從 0 開始),複製活動需要 從來源到接收的明確對應 ,並依序數尋找數據行(從 1 開始),以及對應數據流清單,並找出名稱為 Column_{n} 的資料行(從 1 開始)。
No
nullValue 指定 null 值的字串表示。
預設值為 空字串
No
encodingName 用來讀取/寫入測試檔案的編碼類型。
允許的值如下:“UTF-8”、“UTF-8 不含 BOM”、“UTF-16”、“UTF-16BE”、“UTF-32”、“UTF-32BE”、“US-ASCII”、“UTF-7”、 “BIG5”、“EUC-JP”、“EUC-KR”、“GB2312”、“GB18030”、“JOHAB”、“SHIFT-JIS”、“CP875”、“CP866”、“CP866”、“IBM00858”、“IBM037”、“IBM273”、“IBM437”、“IBM500”、“IBM737”、 “IBM775”、“IBM850”、“IBM852”、“IBM855”、“IBM857”、“IBM860”、“IBM861”、“IBM863”、“IBM864”、“IBM865”、“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-12552”、“WINDOWS-1253”、“WINDOWS-1254”、“WINDOWS-1255”、“WINDOWS-1256”、“WINDOWS-1257”、“WINDOWS-1258”。
注意 對應數據流不支援UTF-7編碼。
注意 對應數據流不支援使用位元組順序標記 (BOM) 的 UTF-8 編碼。
No
compressionCodec 用來讀取/寫入文字檔的壓縮編解碼器。
允許的值為 bzip2gzip、deflateZipDeflateTarGzipTarsnappylz4。 默認值不會壓縮。
請注意,目前 複製活動 不支援 「snappy」 和 「lz4」,且對應數據流不支援 「ZipDeflate」、“TarGzip” 和 「Tar」。。
請注意,使用複製活動將 ZipDeflate/TarGzip/Tar 檔案解壓縮並寫入檔案型接收數據存放區時,預設會擷取至 folder:<path specified in dataset>/<folder named as source compressed file>/,使用preserveCompressionFileNameAsFolderpreserveZipFileNameAsFolder/複製活動來源來控制是否保留壓縮檔的名稱作為資料夾結構。
No
compressionLevel 壓縮比例。
允許的值為 最佳最快值。
- 最快: 即使產生的檔案未以最佳方式壓縮,壓縮作業也應該儘快完成。
- 最佳:即使作業需要較長的時間才能完成,壓縮作業也應該以最佳方式壓縮。 如需詳細資訊,請參閱 壓縮層級 主題。
No

以下是 Azure Blob 儲存體 上分隔文字資料集的範例:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<Azure Blob Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "container": "containername",
                "folderPath": "folder/subfolder",
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "escapeChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

複製活動 屬性

如需可用來定義活動的區段和屬性的完整清單,請參閱 管線 一文。 本節提供分隔文字來源和接收所支援的屬性清單。

以分隔文字作為來源

複製活動 *source* 區段中支援下列屬性。

屬性 描述 必要
type 複製活動來源的 type 屬性必須設定為 DelimitedTextSource Yes
format 設定 屬性群組。 請參閱下方的分隔文字讀取設定表。 No
store 設定 如何從數據存放區讀取數據的一組屬性。 每個檔案型連接器在 下 storeSettings都有自己的支援讀取設定。 No

支援的分隔文字讀取設定formatSettings

屬性 描述 必要
type 格式的類型 設定 必須設定為 DelimitedTextRead 設定 Yes
skipLineCount 指出從輸入檔案讀取資料時要略過的非空白數據列數目
如果同時指定 skipLineCount 和 firstRowAsHeader,則會先略過行,然後從輸入檔讀取標頭資訊。
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
"activities": [
    {
        "name": "CopyFromDelimitedText",
        "type": "Copy",
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "storeSettings": {
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                },
                "formatSettings": {
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 3,
                    "compressionProperties": {
                        "type": "ZipDeflateReadSettings",
                        "preserveZipFileNameAsFolder": false
                    }
                }
            },
            ...
        }
        ...
    }
]

分隔文字作為接收

複製活動 *sink* 區段中支援下列屬性。

屬性 描述 必要
type 複製活動來源的 type 屬性必須設定為 DelimitedTextSink Yes
format 設定 屬性群組。 請參閱下方的分隔文字寫入設定表。 No
store 設定 如何將數據寫入數據存放區的屬性群組。 每個檔案型連接器在下 storeSettings都有自己的支援寫入設定。 No

支援的分隔文字寫入設定formatSettings

屬性 描述 必要
type 格式的類型 設定 必須設定為 DelimitedTextWrite 設定 Yes
fileExtension 用來命名輸出檔案的延伸名,例如、 .csv.txt。 在輸出 DelimitedText 數據集中未指定 時 fileName ,必須指定它。 在輸出數據集中設定檔名時,它會當做接收檔名使用,而且將會忽略擴展名設定。 在輸出數據集中未指定檔名時,是
maxRowsPerFile 將數據寫入資料夾時,您可以選擇寫入多個檔案,並指定每個檔案的數據列上限。 No
fileNamePrefix 設定時 maxRowsPerFile 適用。
將數據寫入多個檔案時,指定檔名前置詞,導致此模式: <fileNamePrefix>_00000.<fileExtension>。 如果未指定,則會自動產生檔名前置詞。 當來源是檔案型存放區或 啟用資料分割選項的數據存放區時,這個屬性不適用。
No

對應數據流屬性

在對應數據流中,您可以在下列數據存放區中讀取和寫入分隔文字格式:Azure Blob 儲存體、Azure Data Lake 儲存體 Gen1Azure Data Lake 儲存體 Gen2 和 SFTP,而且您可以在 Amazon S3讀取分隔文字格式。

內嵌數據集

對應數據流支援「內嵌數據集」作為定義來源和接收的選項。 內嵌分隔數據集會直接在來源和接收轉換內定義,而且不會在定義的數據流外部共用。 它適用於直接在數據流內參數化數據集屬性,並可受益於共用ADF數據集的改善效能。

當您讀取大量來源資料夾和檔案時,您可以藉由在投影內設定 [使用者投影架構] 選項來改善數據流檔案探索的效能 |[架構選項] 對話框。 此選項會關閉ADF的預設架構自動探索,並大幅改善檔案探索的效能。 設定此選項之前,請務必匯入投影,讓 ADF 具有現有的投影架構。 此選項不適用於架構漂移。

來源屬性

下表列出分隔文字來源所支援的屬性。 您可以在 [ 來源選項 ] 索引標籤編輯這些屬性。

名稱 描述 必要 允許的值 數據流腳本屬性
通配符路徑 將會處理符合通配符路徑的所有檔案。 覆寫數據集中設定的資料夾和檔案路徑。 String[] 通配符路徑
數據分割根路徑 針對分割的檔案數據,您可以輸入資料分割根路徑,以將數據分割資料夾讀取為數據行 String partitionRootPath
檔案清單 您的來源是否指向列出要處理的檔案的文字檔 truefalse fileList
多行資料列 原始程序檔是否包含跨越多行的數據列。 多行值必須以引號括住。 truefalse multiLineRow
要儲存檔名的數據行 使用來源檔名和路徑建立新的數據行 String rowUrlColumn
完成之後 在處理之後刪除或移動檔案。 檔案路徑從容器根目錄開始 刪除: truefalse
移動: ['<from>', '<to>']
purgeFiles
moveFiles
依上次修改日期來篩選 選擇根據上次更改檔案的時間篩選檔案 時間戳記 modifiedAfter
modifiedBefore
允許找不到任何檔案 如果為 true,則找不到任何檔案時不會擲回錯誤 truefalse ignoreNoFilesFound
最大資料行數 預設值為 20480。 當數據行編號超過 20480 時自定義此值 整數 maxColumns

注意

檔案清單的數據流來源支援僅限於檔案中的1024個專案。 若要包含更多檔案,請在檔案清單中使用通配符。

來源範例

下圖是對應數據流中分隔文字來源設定的範例。

DelimitedText source

相關聯的數據流腳本為:

source(
    allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: false,
	multiLineRow: true,
	wildcardPaths:['*.csv']) ~> CSVSource

注意

數據流來源支援Hadoop檔案系統支援的一組有限的Linux通配符

接收屬性

下表列出分隔文字接收所支援的屬性。 您可以在 [設定] 索引標籤編輯這些屬性。

名稱 描述 必要 允許的值 數據流腳本屬性
清除資料夾 如果在寫入之前清除目的地資料夾 truefalse truncate
檔名選項 寫入數據的命名格式。 根據預設,每個分割區一個檔案的格式為 part-#####-tid-<guid> 模式:字串
每個分割區:String[]
將檔案命名為數據行數據:字串
輸出至單一檔案: ['<fileName>']
將資料夾命名為資料列資料:字串
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames
rowFolderUrlColumn
全部引述 以引弧括住所有值 truefalse quoteAll
頁首 將客戶標頭新增至輸出檔案 [<string array>] 標頭

接收範例

下圖是對應數據流中分隔文字接收組態的範例。

DelimitedText sink

相關聯的數據流腳本為:

CSVSource sink(allowSchemaDrift: true,
    validateSchema: false,
    truncate: true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> CSVSink

以下是一些與分隔文字格式相關的常見連接器和格式:

  • Azure Blob 儲存體 (connector-azure-blob-storage.md)
  • 二進位格式 (format-binary.md)
  • Dataverse(connector-dynamics-crm-office-365.md)
  • 差異格式(format-delta.md)
  • Excel 格式(format-excel.md)
  • 檔案系統(connector-file-system.md)
  • FTP(connector-ftp.md)
  • HTTP(connector-http.md)
  • JSON 格式(format-json.md)
  • Parquet 格式(format-parquet.md)