Azure Data Factory 和 Azure Synapse Analytics 中的分隔文字格式
適用於: Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的單一分析解決方案。 Microsoft Fabric 涵蓋從數據移動到數據科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版 !
當您想要 剖析分隔的文字檔,或將數據寫入分隔的文字格式時,請遵循這篇文章。
下列連接器支援分隔文字格式:
- Amazon S3
- Amazon S3 相容 儲存體
- Azure Blob
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2 \(部分機器翻譯\)
- Azure 檔案
- 檔案系統
- FTP
- Google Cloud 儲存體
- Hdfs
- HTTP
- Oracle Cloud 儲存體
- SFTP
資料集屬性
如需可用來定義資料集之區段和屬性的完整清單,請參閱 數據集 一文。 本節提供分隔文字數據集所支持的屬性清單。
屬性 | 描述 | 必要 |
---|---|---|
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 | 在引號值內逸出引號的單一字元。 預設值為 反斜杠 \ 。 當定義為空字串時 escapeChar , quoteChar 也必須將 設定為空字串,在此情況下,請確定所有數據行值不包含分隔符。 |
No |
firstRowAsHeader | 指定是否要將第一列視為具有數據行名稱的行首行。 允許的值為 true 和 false (預設值)。 當第一個數據列作為標頭為 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 | 用來讀取/寫入文字檔的壓縮編解碼器。 允許的值為 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 /複製活動來源來控制是否保留壓縮檔的名稱作為資料夾結構。 |
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 TarGZipReadSettings 或 TarReadSettings ) |
當輸入數據集設定為 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 儲存體 Gen1、Azure Data Lake 儲存體 Gen2 和 SFTP,而且您可以在 Amazon S3 中讀取分隔文字格式。
內嵌數據集
對應數據流支援「內嵌數據集」作為定義來源和接收的選項。 內嵌分隔數據集會直接在來源和接收轉換內定義,而且不會在定義的數據流外部共用。 它適用於直接在數據流內參數化數據集屬性,並可受益於共用ADF數據集的改善效能。
當您讀取大量來源資料夾和檔案時,您可以藉由在投影內設定 [使用者投影架構] 選項來改善數據流檔案探索的效能 |[架構選項] 對話框。 此選項會關閉ADF的預設架構自動探索,並大幅改善檔案探索的效能。 設定此選項之前,請務必匯入投影,讓 ADF 具有現有的投影架構。 此選項不適用於架構漂移。
來源屬性
下表列出分隔文字來源所支援的屬性。 您可以在 [ 來源選項 ] 索引標籤編輯這些屬性。
名稱 | 描述 | 必要 | 允許的值 | 數據流腳本屬性 |
---|---|---|---|---|
通配符路徑 | 將會處理符合通配符路徑的所有檔案。 覆寫數據集中設定的資料夾和檔案路徑。 | 否 | String[] | 通配符路徑 |
數據分割根路徑 | 針對分割的檔案數據,您可以輸入資料分割根路徑,以將數據分割資料夾讀取為數據行 | 否 | String | partitionRootPath |
檔案清單 | 您的來源是否指向列出要處理的檔案的文字檔 | 否 | true 或 false |
fileList |
多行資料列 | 原始程序檔是否包含跨越多行的數據列。 多行值必須以引號括住。 | 否 true 或 false |
multiLineRow | |
要儲存檔名的數據行 | 使用來源檔名和路徑建立新的數據行 | 否 | String | rowUrlColumn |
完成之後 | 在處理之後刪除或移動檔案。 檔案路徑從容器根目錄開始 | 否 | 刪除: true 或 false 移動: ['<from>', '<to>'] |
purgeFiles moveFiles |
依上次修改日期來篩選 | 選擇根據上次更改檔案的時間篩選檔案 | 否 | 時間戳記 | modifiedAfter modifiedBefore |
允許找不到任何檔案 | 如果為 true,則找不到任何檔案時不會擲回錯誤 | 否 | true 或 false |
ignoreNoFilesFound |
最大資料行數 | 預設值為 20480。 當數據行編號超過 20480 時自定義此值 | 否 | 整數 | maxColumns |
注意
檔案清單的數據流來源支援僅限於檔案中的1024個專案。 若要包含更多檔案,請在檔案清單中使用通配符。
來源範例
下圖是對應數據流中分隔文字來源設定的範例。
相關聯的數據流腳本為:
source(
allowSchemaDrift: true,
validateSchema: false,
ignoreNoFilesFound: false,
multiLineRow: true,
wildcardPaths:['*.csv']) ~> CSVSource
注意
數據流來源支援Hadoop檔案系統支援的一組有限的Linux通配符
接收屬性
下表列出分隔文字接收所支援的屬性。 您可以在 [設定] 索引標籤編輯這些屬性。
名稱 | 描述 | 必要 | 允許的值 | 數據流腳本屬性 |
---|---|---|---|---|
清除資料夾 | 如果在寫入之前清除目的地資料夾 | 否 | true 或 false |
truncate |
檔名選項 | 寫入數據的命名格式。 根據預設,每個分割區一個檔案的格式為 part-#####-tid-<guid> |
否 | 模式:字串 每個分割區:String[] 將檔案命名為數據行數據:字串 輸出至單一檔案: ['<fileName>'] 將資料夾命名為資料列資料:字串 |
filePattern partitionFileNames rowUrlColumn partitionFileNames rowFolderUrlColumn |
全部引述 | 以引弧括住所有值 | 否 | true 或 false |
quoteAll |
頁首 | 將客戶標頭新增至輸出檔案 | 否 | [<string array>] |
標頭 |
接收範例
下圖是對應數據流中分隔文字接收組態的範例。
相關聯的數據流腳本為:
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)