Azure Data Factory 또는 Synapse Analytics를 사용하여 Microsoft 365(Office 365)에서 Azure로 데이터 복사 및 변환

적용 대상: Azure Data Factory Azure Synapse Analytics

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

Azure Data Factory 및 Synapse Analytics 파이프라인은 Microsoft Graph 데이터 연결과 통합되어 Microsoft 365(Office 365) 테넌트의 풍부한 조직 데이터를 확장 가능한 방식으로 Azure로 가져와서 분석 애플리케이션을 빌드하고 이러한 중요 데이터 자산을 기반으로 인사이트를 추출할 수 있습니다. Privileged Access Management와 통합하면 Microsoft 365(Office 365)의 큐레이팅된 중요한 데이터에 대한 보안 액세스 제어가 가능합니다. Microsoft Graph 데이터 연결에 대한 개요는 이 링크를 참조하세요.

이 문서에서는 복사 작업을 사용하여 데이터를 복사하고 Data Flow를 사용하여 Microsoft 365(Office 365)에서 데이터를 변환하는 방법을 설명합니다. 데이터 복사에 대한 소개는 복사 작업 개요를 참조하세요. 데이터 변환에 대한 소개는 매핑 데이터 흐름 개요를 참조하세요.

참고 항목

Microsoft 365 Data Flow 커넥터는 현재 미리 보기 상태입니다. 참여하려면 M365 + Analytics 미리 보기 등록 양식을 사용합니다.

지원되는 기능

이 Microsoft 365(Office 365) 커넥터는 다음과 같은 기능에 지원됩니다.

지원되는 기능 IR
복사 작업(원본/-)
매핑 데이터 흐름(원본/-)

① Azure 통합 런타임 ② 자체 호스팅 통합 런타임

ADF Microsoft 365(Office 365) 커넥터와 Microsoft Graph 데이터 연결을 사용하면 주소록 연락처, 일정 이벤트, 이메일 메시지, 사용자 정보, 사서함 설정을 비롯하여 Exchange 이메일 지원 사서함에서 다양한 유형의 데이터 세트를 대규모로 수집할 수 있습니다. 사용 가능한 데이터 세트의 전체 목록을 보려면 여기를 참조하세요.

현재 단일 복사 작업 및 데이터 흐름 내에서는 Microsoft 365(Office 365)의 데이터를 Azure Blob Storage, Azure Data Lake Storage Gen1Azure Data Lake Storage Gen2를 JSON 형식(setOfObjects 형식)으로만 수집할 수 있습니다. Azure Blob Storage 복사할 때 출력은 JSON 텍스트가 포함된 Blob입니다. Microsoft 365(Office 365)를 다른 유형의 데이터 저장소나 다른 형식으로 로드하려면, 첫 번째 복사 작업 또는 데이터 흐름을 후속 작업과 연결하여 지원되는 ADF 대상 저장소로 데이터를 추가로 로드할 수 있습니다("지원되는 데이터 저장소 및 형식" 표의 "싱크로 지원" 열 참조).

Important

  • 데이터 팩터리 또는 Synapse 작업 영역과 싱크 데이터 저장소가 포함된 Azure 구독은 Microsoft 365(Office 365) 테넌트와 동일한 Microsoft Entra 테넌트에 속해야 합니다.
  • 복사 작업에 사용된 Azure Integration Runtime 지역 및 대상이 Microsoft 365(Office 365) 테넌트 사용자의 사서함이 있는 곳과 동일한 지역에 있어야 합니다. Azure IR 위치가 결정되는 방식을 이해하려면 여기를 참조하세요. 지원되는 Office 지역 및 해당되는 Azure 지역 목록은 여기 표를 참조하세요.
  • 서비스 주체 인증은 Azure Blob Storage, Azure Data Lake Storage Gen1 및 Azure Data Lake Storage Gen2가 대상 저장소로 지원되는 유일한 인증 메커니즘입니다.

참고 항목

원본 및 싱크 연결된 서비스 모두에서 Azure 통합 런타임을 사용하세요. 자체 호스팅 통합 런타임과 관리형 가상 네트워크 통합 런타임은 지원되지 않습니다.

필수 조건

Microsoft 365(Office 365)에서 Azure로 데이터를 복사하고 변환하려면 다음 필수 단계를 완료해야 합니다.

  • Microsoft 365(Office 365) 테넌트 관리자가 여기에 설명된 온보딩 작업을 완료해야 합니다.
  • Microsoft Entra ID에서 Microsoft Entra 웹 애플리케이션을 만들고 구성합니다. 자세한 내용은 Microsoft Entra 애플리케이션 만들기를 참조하세요.
  • Microsoft 365(Office 365)에 대한 연결된 서비스를 정의하는 데 사용되므로 다음 값을 적어둡니다.
  • Microsoft Entra 웹 애플리케이션의 소유자로 데이터 액세스를 요청할 사용자 ID를 추가(Microsoft Entra 웹 애플리케이션 > 설정 > 소유자 > 소유자 추가를 통해)합니다.
    • 사용자 ID는 데이터를 가져오는 Microsoft 365(Office 365) 조직에 소속되어 있어야 하며 게스트 사용자여서는 안 됩니다.

새로운 데이터 액세스 요청 승인

이 컨텍스트(어떤 데이터 테이블이 액세스되고 있는지, 어떤 대상 계정에 데이터가 로드 중인지, 어떤 사용자 ID가 데이터 액세스를 요청하고 있는지의 조합)에 대한 데이터를 처음 요청하는 경우 복사 작업 상태가 '진행 중'으로 표시되고, 작업 아래 '세부 정보' 링크를 클릭할 때만 'RequestingConsent'로 상태가 표시됩니다. 데이터 액세스 승인자 그룹의 구성원이 Privileged Access Management에서 요청을 승인해야 데이터 추출을 진행할 수 있습니다.

승인자가 데이터 액세스 요청을 승인하는 방법은 여기를 참조하고 데이터 액세스 승인자 그룹을 설정하는 방법을 포함하여 Privileged Access Management와의 전반적인 통합에 대한 설명은 여기를 참조하세요.

시작하기

Microsoft 365(Office 365) 커넥터 사용에 대한 연습은 Microsoft 365(Office 365)에서 데이터 로드 문서를 참조하세요.

다음 도구 또는 SDK 중 하나를 사용하여 복사 작업 및 데이터 흐름이 있는 파이프라인을 만들 수 있습니다. 링크를 선택하면 복사 작업으로 파이프라인을 만드는 단계별 지침을 안내하는 자습서로 이동됩니다.

UI를 사용하여 Microsoft 365(Office 365)에 연결된 서비스 만들기

다음 단계를 사용하여 Azure Portal UI에서 Microsoft 365(Office 365)에 연결된 서비스를 만듭니다.

  1. Azure Data Factory 또는 Synapse 작업 영역에서 관리 탭으로 이동하여 연결된 서비스를 선택하고 새로 만들기를 클릭합니다.

  2. Microsoft 365(Office 365)를 검색하고 Microsoft 365(Office 365) 커넥터를 선택합니다.

    Screenshot of the Microsoft 365 (Office 365) connector.

  3. 서비스 세부 정보를 구성하고, 연결을 테스트하고, 새로운 연결된 서비스를 만듭니다.

    Screenshot of linked service configuration for Microsoft 365 (Office 365).

커넥터 구성 세부 정보

다음 섹션에서는 Microsoft 365(Office 365) 커넥터에 한정된 Data Factory 엔터티를 정의하는 데 사용되는 속성에 대해 자세히 설명합니다.

연결된 서비스 속성

다음은 Microsoft 365(Office 365) 연결된 서비스에 대해 지원되는 속성입니다.

속성 설명 필수
type 형식 속성은 Office365로 설정해야 합니다.
office365TenantId Microsoft 365(Office 365) 계정이 속하는 Azure 테넌트 ID입니다.
servicePrincipalTenantId Microsoft Entra 웹 애플리케이션이 상주하는 테넌트 정보를 지정합니다.
servicePrincipalId 애플리케이션의 클라이언트 ID를 지정합니다.
servicePrincipalKey 애플리케이션의 키를 지정합니다. 이 필드를 SecureString으로 표시하여 안전하게 저장합니다.
connectVia 데이터 저장소에 연결하는 데 사용할 Integration Runtime입니다. 지정하지 않으면 기본 Azure Integration Runtime을 사용합니다. 아니요

참고 항목

office365TenantIdservicePrincipalTenantId 사이의 차이점 및 제공할 해당 값:

  • 자체 조직에서 사용하기 위해 Microsoft 365(Office 365) 데이터에 대한 애플리케이션을 개발하는 엔터프라이즈 개발자인 경우, 두 속성 모두에 조직의 Microsoft Entra 테넌트 ID인 동일한 테넌트 ID를 제공해야 합니다.
  • 고객용 애플리케이션을 개발하는 ISV 개발자의 경우 office365TenantId가 고객(애플리케이션을 설치하는 사용자)의 Microsoft Entra 테넌트 ID이며 servicePrincipalTenantId가 회사의 Microsoft Entra 테넌트 ID가 됩니다.

예제:

{
    "name": "Office365LinkedService",
    "properties": {
        "type": "Office365",
        "typeProperties": {
            "office365TenantId": "<Microsoft 365 (Office 365) tenant id>",
            "servicePrincipalTenantId": "<AAD app service principal tenant id>",
            "servicePrincipalId": "<AAD app service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<AAD app service principal key>"
            }
        }
    }
}

데이터 세트 속성

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

Microsoft 365(Office 365)에서 데이터를 복사하려는 경우 다음과 같은 속성이 지원됩니다.

속성 설명 필수
type 데이터 세트의 type 속성은 Office365Table로 설정해야 합니다.
tableName Microsoft 365(Office 365)에서 추출할 데이터 세트의 이름입니다. 추출할 수 있는 Microsoft 365(Office 365) 데이터 세트 목록은 여기를 참조하세요.

데이터 세트에서 dateFilterColumn, startTime, endTimeuserScopeFilterUri를 설정한 경우 여전히 있는 그대로 지원되지만 앞으로는 작업 원본에 새 모델을 사용하는 것이 좋습니다.

예제

{
    "name": "DS_May2019_O365_Message",
    "properties": {
        "type": "Office365Table",
        "linkedServiceName": {
            "referenceName": "<Microsoft 365 (Office 365) linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [],
        "typeProperties": {
            "tableName": "BasicDataSet_v0.Event_v1"
        }
    }
}

복사 작업 속성

작업 정의에 사용할 수 있는 섹션 및 속성의 전체 목록은 파이프라인 문서를 참조하세요. 이 섹션에서는 Microsoft 365(Office 365) 원본에서 지원하는 속성의 목록을 제공합니다.

Microsoft 365(Office 365)를 원본으로 제공

Microsoft 365(Office 365)에서 데이터를 복사하기 위해 복사 작업 source 섹션에서 지원되는 속성은 다음과 같습니다.

속성 설명 필수
type 복사 작업 원본의 형식 속성을 Office365Source로 설정해야 합니다.
allowedGroups 그룹 선택 조건자입니다. 이 속성을 사용하여 데이터를 검색할 사용자 그룹을 최대 10개까지 선택할 수 있습니다. 그룹을 지정되지 않는 경우 전체 조직에 대한 데이터가 반환됩니다. 아니요
userScopeFilterUri allowedGroups 속성을 지정되지 않는 경우 전체 테넌트에 적용되는 조건자 식을 사용하여 Microsoft 365(Office 365)에서 추출할 특정 행을 필터링할 수 있습니다. 조건자 형식은 Microsoft Graph API의 쿼리 형식과 일치해야 합니다(예: https://graph.microsoft.com/v1.0/users?$filter=Department eq 'Finance'). 아니요
dateFilterColumn DateTime 필터 열의 이름입니다. 이 속성을 사용하여 Microsoft 365(Office 365) 데이터가 추출되는 시간 범위를 제한할 수 있습니다. 데이터 세트에 하나 이상의 DateTime 열이 있는 경우 예입니다. 이 DateTime 필터가 필요한 데이터 세트의 목록을 보려면 여기를 참조하세요.
startTime 필터링할 시작 날짜/시간 값입니다. dateFilterColumn을 지정하는 경우 예입니다.
endTime 사이에서 필터링할 끝 날짜/시간 값입니다. dateFilterColumn을 지정하는 경우 예입니다.
outputColumns 싱크로 복사할 열의 배열입니다. 아니요

예제:

"activities": [
    {
        "name": "CopyFromO365ToBlob",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Microsoft 365 (Office 365) input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "Office365Source",
                "dateFilterColumn": "CreatedDateTime",
                "startTime": "2019-04-28T16:00:00.000Z",
                "endTime": "2019-05-05T16:00:00.000Z",
                "userScopeFilterUri": "https://graph.microsoft.com/v1.0/users?$filter=Department eq 'Finance'",
                "outputColumns": [
                    {
                        "name": "Id"
                    },
                    {
                        "name": "CreatedDateTime"
                    },
                    {
                        "name": "LastModifiedDateTime"
                    },
                    {
                        "name": "ChangeKey"
                    },
                    {
                        "name": "Categories"
                    },
                    {
                        "name": "OriginalStartTimeZone"
                    },
                    {
                        "name": "OriginalEndTimeZone"
                    },
                    {
                        "name": "ResponseStatus"
                    },
                    {
                        "name": "iCalUId"
                    },
                    {
                        "name": "ReminderMinutesBeforeStart"
                    },
                    {
                        "name": "IsReminderOn"
                    },
                    {
                        "name": "HasAttachments"
                    },
                    {
                        "name": "Subject"
                    },
                    {
                        "name": "Body"
                    },
                    {
                        "name": "Importance"
                    },
                    {
                        "name": "Sensitivity"
                    },
                    {
                        "name": "Start"
                    },
                    {
                        "name": "End"
                    },
                    {
                        "name": "Location"
                    },
                    {
                        "name": "IsAllDay"
                    },
                    {
                        "name": "IsCancelled"
                    },
                    {
                        "name": "IsOrganizer"
                    },
                    {
                        "name": "Recurrence"
                    },
                    {
                        "name": "ResponseRequested"
                    },
                    {
                        "name": "ShowAs"
                    },
                    {
                        "name": "Type"
                    },
                    {
                        "name": "Attendees"
                    },
                    {
                        "name": "Organizer"
                    },
                    {
                        "name": "WebLink"
                    },
                    {
                        "name": "Attachments"
                    },
                    {
                        "name": "BodyPreview"
                    },
                    {
                        "name": "Locations"
                    },
                    {
                        "name": "OnlineMeetingUrl"
                    },
                    {
                        "name": "OriginalStart"
                    },
                    {
                        "name": "SeriesMasterId"
                    }
                ]
            },
            "sink": {
                "type": "BlobSink"
            }
        }
    }
]

Microsoft 365 커넥터로 데이터 변환

매핑 데이터 흐름을 통해 Microsoft 365 데이터 세트를 원본으로 사용할 수 있습니다. 데이터 흐름은 데이터 세트를 자동으로 평면화하여 데이터를 변환합니다. 이를 통해 사용자는 평면화된 데이터 세트를 활용하여 분석 시나리오를 가속화하는 데 집중할 수 있습니다.

매핑 데이터 흐름 속성

Microsoft 365 커넥터를 원본으로 사용하여 매핑 데이터 흐름을 만들려면 다음 단계를 완료합니다.

  1. ADF Studio에서 작성자 허브의 데이터 흐름 섹션으로 이동하고 ... 단추를 선택하여 데이터 흐름 작업 메뉴를 드롭다운하고 새 데이터 흐름 항목을 선택합니다. 데이터 흐름 캔버스의 상단 표시줄에 있는 데이터 흐름 디버그 단추를 사용하여 디버그 모드를 켭니다.

    Screenshot of the data flow debug button in mapping data flow.

  2. 매핑 데이터 흐름 편집기에서 원본 추가를 선택합니다.

    Screenshot of add source in mapping data flow.

  3. 원본 설정 탭의 원본 형식 속성에서 인라인을 선택하고 인라인 데이터 세트 형식에서 Microsoft 365(Office 365)를 선택합니다. 이전에 만든 Microsoft 365 연결된 서비스도 마찬가지입니다.

    Screenshot of the select dataset option in source settings of mapping data flow source.

  4. 원본 옵션 탭에서 변환하려는 Microsoft 365 테이블의 테이블 이름을 선택합니다. 또한 자동 평면화 옵션을 선택하여 데이터 흐름이 원본 데이터 세트를 자동으로 평면화할지 여부를 결정합니다.

    Screenshot of the source options of mapping data flow source.

  5. 프로젝션, 최적화검사의 경우 매핑 데이터 흐름을 따르세요.

  6. 데이터 미리 보기 탭에서 새로 고침 단추를 클릭하여 유효성 검사를 위해 샘플 데이터 세트를 가져옵니다.

복사 작업에서 원본 및 싱크로 지원되는 데이터 저장소 목록은 지원되는 데이터 저장소를 참조하세요.