使用 Azure 数据工厂或 Synapse Analytics 将数据从 Microsoft 365 (Office 365) 复制到 Azure

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

Azure 数据工厂和 Synapse Analytics 管道与 Microsoft Graph 数据连接集成,允许你以可缩放的方式将 Microsoft 365 (Office 365) 租户中的丰富组织数据引入 Azure,并生成分析应用程序和基于这些有价值的数据资产提取见解。 与 Privileged Access Management 的集成为 Microsoft 365 (Office 365) 中组织有序的有价值的数据提供安全访问控制。 有关 Microsoft Graph 数据连接的概述,请参阅此链接

本文概述了如何使用复制活动从 Microsoft 365 (Office 365) 复制数据。 有关复制数据的介绍,请阅读复制活动概述

支持的功能

以下功能支持此 Microsoft 365 (Office 365) 连接器:

支持的功能 IR
复制活动(源/-)

① Azure 集成运行时 ② 自承载集成运行时

使用 ADF Microsoft 365 (Office 365) 连接器和 Microsoft Graph 数据连接可以从已启用 Exchange 电子邮件的邮箱中大规模地引入不同类型的数据集,包括通讯簿联系人、日历事件、电子邮件、用户信息和邮箱设置等。 请参阅此处以查看可用数据集的完整列表。

目前,在单个复制活动中,只能采用 JSON 格式(类型 setOfObjects)将数据从 Microsoft 365 (Office 365) 引入 Azure Blob 存储Azure Data Lake Storage Gen2 中。 当复制到 Azure Blob 存储时,输出是包含 JSON 文本的 Blob。 如果要将 Microsoft 365 (Office 365) 加载到其他类型的或其他格式的数据存储,可以将第一个复制活动与后续活动链接在一起,以进一步将数据加载到任何支持的 ADF 目标存储(请参阅“支持的数据存储和格式”表中的“作为接收器支持”列)。

重要

  • 包含数据工厂或 Synapse Analytics 和接收器数据存储的 Azure 订阅必须位于与 Microsoft 365 (Office 365) 租户相同的 Microsoft Entra 租户下。
  • 确保用于复制活动的 Azure Integration Runtime 区域以及目标在 Microsoft 365 (Office 365) 租户用户邮箱所在的同一区域中。 若要了解如何确定 Azure IR 位置,请参阅此处。 有关受支持的 Office 区域和对应的 Azure 区域列表,请参阅此处的表
  • 服务主体身份验证是 Azure Blob 存储、Azure Data Lake Storage Gen2 作为目标存储时唯一支持的身份验证机制。

注意

请在源和接收器链接服务中都使用 Azure 集成运行时。 不支持自承载集成运行时和托管的虚拟网络集成运行时。

先决条件

要将数据从 Microsoft 365 (Office 365) 复制到 Azure,需要完成下列必备步骤:

  • Microsoft 365 (Office 365) 租户管理员必须完成载入操作,如此处所述。
  • 在 Microsoft Entra ID 中创建和配置 Microsoft Entra Web 应用程序。 有关说明,请参阅创建 Microsoft Entra 应用程序
  • 记下以下值,这些值用于定义 Microsoft 365 (Office 365) 的链接服务:
  • 添加用户标识,其会作为 Microsoft Entra Web 应用程序的所有者发出数据访问请求(从 Microsoft Entra Web 应用程序 >“设置”>“所有者”>“添加所有者”添加)。
    • 用户标识必须位于你从中获取数据的 Microsoft 365 (Office 365) 组织中,并且不能是来宾用户。

批准新的数据访问请求

如果这是你首次请求此上下文(要访问的数据表、要将数据加载到的目标帐户和发出数据访问请求的用户标识的组合)的数据,则复制活动状态将显示为“正在进行”;仅当单击“操作”下的“详细信息”链接时,状态才显示为“正在请求许可”。 在继续执行数据提取之前,数据访问审批者组的成员需要在 Privileged Access Management 中审批该请求。

请参阅此处,了解审批者如何批准数据访问请求。

使用入门

提示

有关使用 Microsoft 365 (Office 365) 连接器的演练,请参阅从 Microsoft 365 (Office 365) 加载数据一文。

可以使用以下工具或 SDK 之一创建包含复制活动的管道。 选择链接导航到相关教程,其中涵盖有关创建包含复制活动的管道的分步说明。

使用 UI 创建到 Microsoft 365 (Office 365) 的链接服务

使用以下步骤在 Azure 门户 UI 中创建一个到 Microsoft 365 (Office 365) 的链接服务。

  1. 浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡并选择“链接服务”,然后单击“新建”:

  2. 搜索“Microsoft 365 (Office 365)”并选择“Microsoft 365 (Office 365) 连接器”。

    Microsoft 365 (Office 365) 连接器的屏幕截图。

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    Microsoft 365 (Office 365) 的链接服务配置的屏幕截图。

连接器配置详细信息

对于特定于 Microsoft 365 (Office 365) 连接器的数据工厂实体,以下部分提供有关用于定义这些实体的属性的详细信息。

链接服务属性

Microsoft 365 (Office 365) 链接服务支持以下属性:

属性 描述 必需
type type 属性必须设置为:Office 365
office365TenantId Microsoft 365 (Office 365) 帐户所属的 Azure 租户 ID。
servicePrincipalTenantId 指定 Microsoft Entra Web 应用程序所在的租户信息。
servicePrincipalId 指定应用程序的客户端 ID。
servicePrincipalKey 指定应用程序的密钥。 将此字段标记为 SecureString 以安全存储它。
connectVia 用于连接到数据存储的 Integration Runtime。 如果未指定,则使用默认 Azure Integration Runtime。

注意

office365TenantId 和 servicePrincipalTenantId 之间的差异和提供的相应值:

  • 如果你是一名企业开发人员,正在开发便于自己组织使用的针对 Microsoft 365 (Office 365) 数据的应用程序,则应该为这两个属性提供相同的租户 ID,即组织的 Microsoft Entra 租户 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) 数据集列表,请参阅此处

如果在数据集中设置了 dateFilterColumnstartTimeendTimeuserScopeFilterUri,则仍按原样支持该数据集,但建议你以后在活动源中使用新模型。

示例

{
    "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 复制活动源的 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 日期/时间筛选器列的名称。 可以使用此属性限制要提取 Microsoft 365 (Office 365) 数据的时间范围。 如果数据集有一个或多个日期/时间列,则为必需的。 有关需要此日期/时间筛选器的数据集的列表,请参阅此处
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"
            }
        }
    }
]

有关复制活动支持作为源和接收器的数据存储的列表,请参阅支持的数据存储