다음을 통해 공유


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

아래의 지원되는 구분된 텍스트 쓰기 설정formatSettings:

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

참고 항목

파일 목록에 대한 데이터 흐름 원본 지원은 파일에서 1,024개의 항목으로 제한됩니다. 추가 파일을 포함하려면 파일 목록에서 와일드카드를 사용합니다.

원본 예

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

DelimitedText 원본

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

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

참고 항목

데이터 흐름 원본은 Hadoop 파일 시스템에서 지원하는 제한된 Linux 와일드 카드 세트를 지원합니다.

싱크 속성

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

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

싱크 예

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

DelimitedText 싱크

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

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

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