Azure Data Factory 및 Azure Synapse Analytics의 구분된 텍스트 형식

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

구분된 텍스트 파일을 구문 분석하거나 데이터를 구분된 텍스트 형식으로 쓰려는 경우 이 문서를 따릅니다.

구분 기호로 분리된 텍스트 형식은 다음 커넥터에 대해 지원됩니다.

데이터 세트 속성

데이터 세트를 정의하는 데 사용할 수 있는 섹션 및 속성의 전체 목록은 데이터 세트 문서를 참조하세요. 이 섹션에서는 구분된 텍스트 데이터 세트에서 지원하는 속성 목록을 제공합니다.

속성 설명 필수
type 데이터 세트의 type 속성을 DelimitedText설정해야 합니다.
location 파일의 위치 설정입니다. 각 파일 기반 커넥터에는 자체 위치 유형과 지원되는 속성이 있습니다 location.
columnDelimiter 파일의 열을 구분하는 데 사용되는 문자입니다.
기본값은 쉼표 ,입니다. 열 구분 기호가 빈 문자열로 정의되면 구분 기호가 없음을 의미하며 전체 줄이 단일 열로 표시됩니다.
현재 열 구분 기호는 매핑 데이터 흐름에만 지원되고 복사 작업에는 지원되지 않습니다.
아니요
rowDelimiter 복사 작업에서 파일의 행을 구분하는 데 사용되는 문자 또는 "\r\n"입니다. 기본값은 읽기의 경우 ["\r\n", "\r", "\n"] 중 하나이고, 쓰기의 경우 "\r\n"입니다. "\r\n"은 복사 명령에서만 지원됩니다.
매핑 데이터 흐름의 경우 파일의 행을 구분하는 데 사용되는 단일 또는 두 문자입니다. 기본값은 읽기의 경우 ["\r\n", "\r", "\n"] 중 하나이고, 쓰기의 경우 "\n"입니다.
행 구분 기호를 구분 기호(빈 문자열)로 설정하면 열 구분 기호도 구분 기호(빈 문자열)로 설정되지 않아야 합니다. 즉, 전체 콘텐츠를 단일 값으로 처리해야 합니다.
현재 행 구분 기호는 매핑 데이터 흐름에만 지원되고 복사 작업에는 지원되지 않습니다.
아니요
quoteChar 열 구분 기호가 포함된 경우 열 값을 인용할 단일 문자입니다.
기본값은 큰따옴표"입니다.
빈 문자열로 정의되는 경우 quoteChar 따옴표 문자가 없고 열 값이 따옴표로 묶 escapeChar 이지 않고 열 구분 기호와 그 자체를 이스케이프하는 데 사용됨을 의미합니다.
아니요
escapeChar 따옴표 안에 따옴표를 이스케이프할 단일 문자입니다.
기본값은 백슬래시\입니다.
escapeChar를 빈 문자열로 정의한 경우에는 quoteChar도 빈 문자열로 설정해야 합니다. 이 경우 모든 열 값에 구분 기호가 포함되지 않아야 합니다.
아니요
firstRowAsHeader 첫 번째 행을 열 이름이 있는 머리글 줄로 처리/만들지 여부를 지정합니다.
허용되는 값은 truefalse(기본값)입니다.
헤더로 첫 번째 행이 false이면 UI 데이터 미리 보기 및 조회 작업 출력은 열 이름을 Prop_{n}(0부터 시작)으로 자동으로 생성합니다. 복사 작업에는 원본에서 싱크로의 명시적 매핑이 필요하며 서수(1부터 시작)로 열을 찾고 데이터 흐름 목록을 매핑하고 이름이 Column_{n}(1부터 시작)인 열을 찾습니다.
아니요
nullValue null 값의 문자열 표현을 지정합니다.
기본값은 빈 문자열입니다.
아니요
encodingName 테스트 파일을 읽고 쓰는 데 사용되는 인코딩 형식입니다.
허용되는 값: "UTF-8","UTF-8 without 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", "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".
참고 매핑 데이터 흐름은 UTF-7 인코딩을 지원하지 않습니다.
참고 매핑 데이터 흐름은 BOM(Byte Order Mark)을 사용한 UTF-8 인코딩을 지원하지 않습니다.
아니요
compressionCodec 텍스트 파일을 읽고 쓰는 데 사용되는 압축 코덱입니다.
허용되는 값은 bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappy 또는 lz4입니다. 기본값은 압축되지 않음입니다.
현재 복사 작업 "snappy" 및 "lz4"를 지원하지 않으며 매핑 데이터 흐름은 "ZipDeflate", "TarGzip" 및 "Tar"를 지원하지 않습니다.
참고 복사 작업을 통해 ZipDeflate/TarGzip/Tar 파일의 압축을 풀고 파일 기반 싱크 데이터 저장소에 쓸 때, 기본적으로 파일은 <path specified in dataset>/<folder named as source compressed file>/과 같이 폴더로 추출됩니다. 즉, 복사 작업 원본에서 preserveZipFileNameAsFolder/preserveCompressionFileNameAsFolder를 사용하여 압축된 파일의 이름을 폴더 구조로 유지할지 여부를 제어합니다.
아니요
compressionLevel 압축 비율입니다.
허용되는 값은 최적 또는 가장 빠릅니다.
- 가장 빠른 속도: 결과 파일이 최적으로 압축되지 않은 경우에도 압축 작업이 가능한 한 빨리 완료되어야 합니다.
- 최적: 작업을 완료하는 데 시간이 더 오래 걸리더라도 압축 작업을 최적으로 압축해야 합니다. 자세한 내용은 압축 수준 항목을 참조하세요.
아니요

다음은 Azure Blob Storage에서 구분된 텍스트 데이터 세트의 예입니다.

{
    "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설정해야 합니다.
형식설정 속성 그룹입니다. 아래의 구분된 텍스트 읽기 설정 표를 참조하세요. 아니요
storeSettings 데이터 저장소에서 데이터를 읽는 방법에 대한 속성 그룹입니다. 각 파일 기반 커넥터에는 storeSettings 아래에 고유의 지원되는 읽기 설정이 있습니다. 아니요

다음에서 구분된 텍스트 읽기 설정을 지원합니다formatSettings.

속성 설명 필수
type formatSettings의 형식을 DelimitedTextReadSettings로 설정해야 합니다.
skipLineCount 입력 파일에서 데이터를 읽을 때 건너뛸 비어 있지 않은 행의 수를 나타냅니다.
skipLineCount와 firstRowAsHeader를 모두 지정하면 먼저 줄을 건너뛰고 입력 파일에서 헤더 정보를 읽습니다.
아니요
compressionProperties 지정된 압축 코덱에 대한 데이터의 압축을 푸는 방법에 대한 속성 그룹입니다. 아니요
preserveZipFileNameAsFolder
(compressionProperties->type 아래 ZipDeflateReadSettings으로)
ZipDeflate 압축을 사용하여 입력 데이터 세트를 구성할 때 적용됩니다. 원본 zip 파일 이름을 복사 중에 폴더 구조로 유지할지 여부를 나타냅니다.
- true(기본값)설정하면 서비스에서 압축을 푼 파일을 <path specified in dataset>/<folder named as source zip file>/씁니다.
- false설정하면 서비스에서 압축을 푼 파일을 직접 <path specified in dataset>씁니다. 경주 또는 예기치 않은 동작을 방지하기 위해 다른 원본 zip 파일에 중복된 파일 이름이 없는지 확인합니다.
아니요
preserveCompressionFileNameAsFolder
(compressionProperties->type 아래 TarGZipReadSettings 또는 TarReadSettings으로)
입력 데이터 세트가 TarGzip/Tar 압축을 사용하여 구성될 때 적용됩니다. 원본 압축 파일 이름을 복사 중에 폴더 구조로 유지할지 여부를 나타냅니다.
- true(기본값)설정하면 서비스에서 압축을 풉니다.<path specified in dataset>/<folder named as source compressed file>/
- false설정하면 서비스에서 압축 해제된 파일을 직접 <path specified in dataset>씁니다. 경주 또는 예기치 않은 동작을 방지하기 위해 다른 소스 파일에 중복된 파일 이름이 없는지 확인합니다.
아니요
"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설정해야 합니다.
형식설정 속성 그룹입니다. 아래 구분된 텍스트 쓰기 설정 표를 참조하세요. 아니요
storeSettings 데이터 저장소에 데이터를 쓰는 방법에 대한 속성 그룹입니다. 각 파일 기반 커넥터에는 자체 지원되는 쓰기 설정이 있습니다 storeSettings. 아니요

다음에서 구분된 텍스트 쓰기 설정을 지원합니다formatSettings.

속성 설명 필수
type 형식설정 형식은 DelimitedTextWrite설정 설정해야 합니다.
fileExtension 출력 파일의 이름을 지정하는 데 사용되는 파일 확장명(예: .csv. .txt 출력 DelimitedText 데이터 세트에 fileName이 지정되지 않은 경우 이 속성을 반드시 지정해야 합니다. 출력 데이터 세트에서 파일 이름을 구성하면 싱크 파일 이름으로 사용되며 파일 확장명 설정은 무시됩니다. 출력 데이터 세트에 파일 이름을 지정하지 않은 경우 예
maxRowsPerFile 폴더에 데이터를 쓸 때 여러 파일에 쓰고 파일당 최대 행을 지정하도록 선택할 수 있습니다. 아니요
fileNamePrefix 구성된 경우 maxRowsPerFile 적용됩니다.
여러 파일에 데이터를 쓸 때 파일 이름 접두사를 지정합니다. 이 패턴은 <fileNamePrefix>_00000.<fileExtension>입니다. 지정하지 않으면 파일 이름 접두사는 자동으로 생성됩니다. 원본이 파일 기반 저장소 또는 파티션 옵션 사용 데이터 저장소인 경우에는 이 속성이 적용되지 않습니다.
아니요

매핑 데이터 흐름 속성

매핑 데이터 흐름에서는 Azure Blob Storage, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2SFTP와 같은 데이터 저장소에서 구분 기호로 분리된 텍스트 형식을 읽고 쓸 수 있으며 Amazon S3에서 구분 기호로 분리된 텍스트 형식을 읽을 수 있습니다.

인라인 데이터 세트

매핑 데이터 흐름은 원본 및 싱크를 정의하기 위한 옵션으로 "인라인 데이터 세트"를 지원합니다. 인라인으로 구분된 데이터 세트는 원본 및 싱크 변환 내에서 직접 정의되며 정의된 데이터 흐름 외부에서 공유되지 않습니다. 데이터 흐름 내에서 직접 데이터 세트 속성을 매개 변수화하는 데 유용하며 공유 ADF 데이터 세트의 성능 향상을 활용할 수 있습니다.

많은 수의 원본 폴더와 파일을 읽을 때 프로젝션 | 내에서 "사용자 프로젝션된 스키마" 옵션을 설정하여 데이터 흐름 파일 검색의 성능을 향상시킬 수 있습니다. 스키마 옵션 대화 상자. 이 옵션은 ADF의 기본 스키마 자동 검색을 해제하고 파일 검색의 성능을 크게 향상시킵니다. 이 옵션을 설정하기 전에 ADF에 프로젝션에 대한 기존 스키마가 있도록 프로젝션을 가져와야 합니다. 이 옵션은 스키마 드리프트에서 작동하지 않습니다.

원본 속성

아래 표에서는 구분된 텍스트 원본에서 지원하는 속성을 나열합니다. 이러한 속성은 원본 옵션 탭에서 편집할 수 있습니다.

이름 설명 필수 허용된 값 데이터 흐름 스크립트 속성
와일드 카드 경로 와일드 카드 경로와 일치하는 모든 파일이 처리됩니다. 데이터 세트에 설정된 폴더 및 파일 경로를 재정의합니다. 아니요 String[] wild카드Paths
파티션 루트 경로 분할된 파일 데이터의 경우 분할된 폴더를 열로 읽기 위해 파티션 루트 경로를 입력할 수 있습니다. 아니요 문자열 partitionRootPath
파일 목록 원본이 처리할 파일을 나열하는 텍스트 파일을 가리키는지 여부 아니요 true 또는 false fileList
여러 줄 행 원본 파일에 여러 줄에 걸쳐 있는 행이 포함되어 있는지를 나타냅니다. 여러 줄 값은 따옴표로 되어 있어야 합니다. 아니요 true 또는 false multiLineRow
파일 이름을 저장할 열 원본 파일 이름 및 경로를 사용하여 새 열을 만듭니다. 아니요 문자열 rowUrlColumn
완료 후 처리 후 파일을 삭제하거나 이동합니다. 컨테이너 루트에서 파일 경로 시작 아니요 삭제: true 또는 false
이동: ['<from>', '<to>']
purgeFiles
moveFiles
마지막으로 수정한 시간으로 필터링 마지막으로 변경된 시기에 따라 파일을 필터링하도록 선택 아니요 타임스탬프 modifiedAfter
modifiedBefore
파일을 찾을 수 없음 허용 true이면 파일이 없으면 오류가 throw되지 않습니다. 아니요 true 또는 false ignoreNoFilesFound
최대 열 기본값은 20480입니다. 열 번호가 20480을 초과할 때 이 값을 사용자 지정합니다. 아니요 정수 maxColumns

참고 항목

파일 목록에 대한 데이터 흐름 원본 지원은 파일의 1024개 항목으로 제한됩니다. 더 많은 파일을 포함하려면 파일 목록에 야생 카드 사용합니다.

원본 예

아래 이미지는 매핑 데이터 흐름에서 구분된 텍스트 원본 구성의 예입니다.

DelimitedText source

연결된 데이터 흐름 스크립트는 다음과 같습니다.

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

참고 항목

데이터 흐름 원본은 Hadoop 파일 시스템에서 지원하는 제한된 Linux globbing 집합을 지원합니다.

싱크 속성

아래 표에서는 구분된 텍스트 싱크에서 지원하는 속성을 나열합니다. 설정 탭에서 이러한 속성을 편집할 수 있습니다.

이름 설명 필수 허용된 값 데이터 흐름 스크립트 속성
폴더 지우기 쓰기 전에 대상 폴더를 지운 경우 아니요 true 또는 false truncate
파일 이름 옵션 기록된 데이터의 명명 형식입니다. 기본적으로 파티션당 하나의 파일 형식 part-#####-tid-<guid> 아니요 패턴: 문자열
파티션당: String[]
열 데이터로 파일 이름 지정: 문자열
단일 파일로 출력: ['<fileName>']
폴더를 열 데이터로 이름 지정: String
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames
rowFolderUrlColumn
모두 따옴표로 묶기 모든 값을 따옴표로 묶습니다. 아니요 true 또는 false quoteAll
헤더 출력 파일에 고객 헤더 추가 아니요 [<string array>] 헤더

싱크 예

아래 이미지는 매핑 데이터 흐름에서 구분된 텍스트 싱크 구성의 예입니다.

DelimitedText sink

연결된 데이터 흐름 스크립트는 다음과 같습니다.

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

다음은 구분된 텍스트 형식과 관련된 몇 가지 일반적인 커넥터 및 형식입니다.

  • Azure Blob Storage(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)