Azure Data Factory 및 Synapse Analytics의 Common Data Model 형식

적용 대상: Azure Data Factory Azure Synapse Analytics

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

CDM(Common Data Model) 메타데이터 시스템을 사용하면 애플리케이션 및 비즈니스 프로세스에서 데이터 및 해당 의미를 쉽게 공유할 수 있습니다. 자세히 알아보려면 Common Data Model 개요를 참조하세요.

Azure Data Factory 및 Synapse 파이프라인에서 사용자는 매핑 데이터 흐름을 사용하여 ADLS Gen2(Azure Data Lake Storage Gen2)에 저장된 model.json 및 매니페스트 양식 모두의 CDM 엔터티에서 데이터를 변환할 수 있습니다. 분할된 폴더에서 데이터를 CSV 또는 Parquet 형식으로 지정하는 CDM 엔터티 참조를 사용하여 CDM 형식으로 데이터를 싱크할 수도 있습니다.

매핑 데이터 흐름 속성

Common Data Model은 원본 및 싱크로서의 매핑 데이터 흐름에서 인라인 데이터 세트로 사용할 수 있습니다.

참고 항목

CDM 엔터티를 작성할 때는 참조로 사용할 기존 CDM 엔터티 정의(메타데이터 스키마)가 이미 정의되어 있어야 합니다. 데이터 흐름 싱크가 해당 CDM 엔터티 파일을 읽고 필드 매핑을 위한 싱크로 스키마를 가져옵니다.

원본 속성

다음 표에는 CDM 원본에서 지원하는 속성이 나열되어 있습니다. 이러한 속성은 원본 옵션 탭에서 편집할 수 있습니다.

이름 설명 필수 허용된 값 데이터 흐름 스크립트 속성
형식 형식은 cdm여야 합니다. cdm format
메타데이터 형식 데이터에 대한 엔터티 참조가 있는 위치입니다. CDM 버전 1.0을 사용하는 경우 매니페스트를 선택합니다. 1.0보다 이전의 CDM 버전을 사용하는 경우 model.json을 선택합니다. 'manifest' 또는 'model' manifestType
루트 위치: 컨테이너 CDM 폴더의 컨테이너 이름입니다. 문자열 fileSystem
루트 위치: 폴더 경로 CDM 폴더의 루트 폴더 위치입니다. 문자열 folderPath
매니페스트 파일: 엔터티 경로 루트 폴더 안에 있는 엔터티의 폴더 경로입니다. 아니요 문자열 entityPath
매니페스트 파일: 매니페스트 이름 매니페스트 파일의 이름입니다. 기본값은 'default'입니다. 아니요 문자열 manifestName
마지막으로 수정한 시간으로 필터링 마지막으로 수정된 시간에 따라 파일을 필터링하도록 선택합니다. 아니요 타임스탬프 modifiedAfter
modifiedBefore
스키마 연결된 서비스 모음이 위치하는 연결된 서비스입니다. 예(매니페스트를 사용하는 경우) 'adlsgen2' 또는 'github' corpusStore
엔터티 참조 컨테이너 모음이 위치하는 컨테이너입니다. 예(매니페스트를 사용하고 모음이 ADLS Gen2에 있는 경우) 문자열 adlsgen2_fileSystem
엔터티 참조 리포지토리 GitHub 리포지토리 이름 예(매니페스트를 사용하고 모음이 GitHub에 있는 경우) 문자열 github_repository
엔터티 참조 분기 GitHub 리포지토리 분기입니다. 예(매니페스트를 사용하고 모음이 GitHub에 있는 경우) 문자열 github_branch
모음 폴더 모음의 루트 위치입니다. 예(매니페스트를 사용하는 경우) 문자열 corpusPath
모음 엔터티 엔터티 참조의 경로입니다. 문자열 개체
파일을 찾을 수 없음 허용 true이면 파일이 없는 경우 오류가 throw되지 않습니다. 아니요 true 또는 false ignoreNoFilesFound

원본 및 싱크 변환에서 '엔터티 참조'를 선택하는 경우 다음 세 가지 옵션 중에서 엔터티 참조 위치를 선택할 수 있습니다.

  • 로컬은 서비스가 이미 사용하는 매니페스트 파일에 정의된 엔터티를 사용합니다.
  • 사용자 지정은 서비스가 사용하는 매니페스트 파일과 다른 엔터티 매니페스트 파일을 가리킵니다.
  • 표준은 GitHub에서 유지 관리되는 CDM 엔터티의 표준 라이브러리로부터 엔터티 참조를 사용합니다.

싱크 설정

  • 쓰려는 엔터티의 정의가 포함된 CDM 엔터티 참조 파일을 가리킵니다.

entity settings

  • 서비스에서 엔터티를 작성하는 데 사용할 출력 파일의 파티션 경로 및 형식을 정의합니다.

entity format

  • 출력 파일 위치와 매니페스트 파일 위치 및 이름을 설정합니다.

cdm location

스키마 가져오기

CDM은 인라인 데이터 세트로만 사용할 수 있으며 기본적으로 연결된 스키마가 없습니다. 열 메타데이터를 가져오려면 프로젝션 탭에서 스키마 가져오기 단추를 클릭합니다. 이를 통해 말뭉치에서 지정한 열 이름과 데이터 형식을 참조할 수 있습니다. 스키마를 가져오려면 데이터 흐름 디버그 세션이 활성 상태여야 하고 가리킬 기존 CDM 엔터티 정의 파일이 있어야 합니다.

싱크 변환에서 데이터 흐름 열을 엔터티 속성에 매핑할 때 '매핑' 탭을 클릭하고 '스키마 가져오기'를 선택합니다. 서비스는 싱크 옵션에서 가리키는 엔터티 참조를 읽어 대상 CDM 스키마에 매핑할 수 있도록 합니다.

CDM sink settings

참고 항목

Power BI 또는 Power Platform 데이터 흐름에서 시작된 model.json 원본 형식을 사용하는 경우 원본 변환에서 "모음 경로가 Null이거나 비어 있습니다." 오류가 발생할 수 있습니다. 이는 model.json 파일에 포함된 파티션 위치 경로의 서식 지정 문제 때문일 수 있습니다. 이를 수정하려면 다음 단계를 수행하세요.

  1. 텍스트 편집기에서 model.json 파일을 엽니다.
  2. partitions.Location 속성을 찾습니다.
  3. 'blob.core.windows.net'을 'dfs.core.windows.net'으로 변경합니다.
  4. URL에서 '%2F' 인코딩을 모두 '/'로 수정합니다.
  5. ADF 데이터 흐름을 사용하는 경우 파티션 파일 경로의 특수 문자를 영숫자 값으로 바꾸거나 Azure Synapse 데이터 흐름으로 전환해야 합니다.

CDM 원본 데이터 흐름 스크립트 예제

source(output(
        ProductSizeId as integer,
        ProductColor as integer,
        CustomerId as string,
        Note as string,
        LastModifiedDate as timestamp
    ),
    allowSchemaDrift: true,
    validateSchema: false,
    entity: 'Product.cdm.json/Product',
    format: 'cdm',
    manifestType: 'manifest',
    manifestName: 'ProductManifest',
    entityPath: 'Product',
    corpusPath: 'Products',
    corpusStore: 'adlsgen2',
    adlsgen2_fileSystem: 'models',
    folderPath: 'ProductData',
    fileSystem: 'data') ~> CDMSource

싱크 속성

다음 표에는 CDM 싱크에서 지원하는 속성이 나열되어 있습니다. 이러한 속성은 설정 탭에서 편집할 수 있습니다.

이름 설명 필수 허용된 값 데이터 흐름 스크립트 속성
형식 형식은 cdm여야 합니다. cdm format
루트 위치: 컨테이너 CDM 폴더의 컨테이너 이름입니다. 문자열 fileSystem
루트 위치: 폴더 경로 CDM 폴더의 루트 폴더 위치입니다. 문자열 folderPath
매니페스트 파일: 엔터티 경로 루트 폴더 안에 있는 엔터티의 폴더 경로입니다. 아니요 문자열 entityPath
매니페스트 파일: 매니페스트 이름 매니페스트 파일의 이름입니다. 기본값은 'default'입니다. 아니요 문자열 manifestName
스키마 연결된 서비스 모음이 위치하는 연결된 서비스입니다. 'adlsgen2' 또는 'github' corpusStore
엔터티 참조 컨테이너 모음이 위치하는 컨테이너입니다. 예(모음이 ADLS Gen2에 있는 경우) 문자열 adlsgen2_fileSystem
엔터티 참조 리포지토리 GitHub 리포지토리 이름 예(모음이 GitHub에 있는 경우) 문자열 github_repository
엔터티 참조 분기 GitHub 리포지토리 분기입니다. 예(모음이 GitHub에 있는 경우) 문자열 github_branch
모음 폴더 모음의 루트 위치입니다. 문자열 corpusPath
모음 엔터티 엔터티 참조의 경로입니다. 문자열 개체
파티션 경로 파티션이 기록될 위치입니다. 아니요 문자열 partitionPath
폴더 지우기 쓰기 전에 대상 폴더를 지운 경우 아니요 true 또는 false truncate
형식 유형 Parquet 형식을 지정하려면 선택합니다. 아니요 parquet, 지정된 경우 subformat
열 구분 기호 DelimitedText에 쓰는 경우 열을 구분하는 방법입니다. 예(DelimitedText에 쓰는 경우) 문자열 columnDelimiter
첫 행을 헤더로 DelimitedText를 사용하는 경우 열 이름이 헤더로 추가되는지 여부입니다. 아니요 true 또는 false columnNamesAsHeader

CDM 싱크 데이터 흐름 스크립트 예제

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

CDMSource sink(allowSchemaDrift: true,
    validateSchema: false,
    entity: 'Product.cdm.json/Product',
    format: 'cdm',
    entityPath: 'ProductSize',
    manifestName: 'ProductSizeManifest',
    corpusPath: 'Products',
    partitionPath: 'adf',
    folderPath: 'ProductSizeData',
    fileSystem: 'cdm',
    subformat: 'parquet',
    corpusStore: 'adlsgen2',
    adlsgen2_fileSystem: 'models',
    truncate: true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> CDMSink

매핑 데이터 흐름의 원본 변환을 만듭니다.