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 データ接続の概要については、こちらのリンクを参照してください。

この記事では、コピー アクティビティを使って、Microsoft 365 (Office 365) からデータをコピーし、データ フローでデータを変換する方法の概要を示します。 データのコピーの概要については、コピー アクティビティの概要を参照してください。 データの変換の概要については、マッピング データ フローの概要を参照してください。

注意

現在、Microsoft 365 Data Flow コネクタはプレビュー段階です。 参加するには、M365 + Analytics プレビューのサインアップ フォームを使用します。

サポートされる機能

この Microsoft 365 (Office 365) コネクタは、以下の機能でサポートされています。

サポートされる機能 IR
Copy アクティビティ (ソース/-) 1
マッピング データ フロー (ソース/-) 1

① Azure 統合ランタイム ② セルフホステッド統合ランタイム

ADF Microsoft 365 (Office 365) コネクタと Microsoft Graph データ接続を使うと、アドレス帳の連絡先、予定表イベント、メール メッセージ、ユーザー情報、メールボックスの設定など、Exchange Email 対応のメールボックスからさまざまな種類のデータセットを大量に取り込むことができます。 使用できるデータセットの詳細な一覧については、こちらを参照してください。

現在、単一のコピー アクティビティとデータ フロー内では、Microsoft 365 (Office 365) から Azure Blob StorageAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2 に JSON 形式 (setOfObjects 型) でデータを取り込むことだけができます。 Azure Blob Storage にコピーする場合、出力は JSON テキストを含む BLOB です。 Microsoft 365 (Office 365) を他の種類のデータ ストアに読み込んだり、他の形式で読み込む必要がある場合は、最初のコピー アクティビティまたはデータ フローを後続のアクティビティに連結して、任意のサポートされている ADF 変換先ストアにデータをさらに読み込むことができます (「サポートされるデータ ストアと形式」の表の「シンクとしてサポート」列をご覧ください)。

重要

  • データ ファクトリまたは 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 Web アプリケーションを作成し、構成します。 手順については、Microsoft Entra アプリケーションの作成に関する記事を参照してください。
  • 次の値を記録しておきます。Microsoft 365 (Office 365) 用のリンク済みサービスを定義するときに使います。
  • Microsoft Entra Web アプリケーションの所有者としてデータ アクセス要求を行うユーザーの ID を追加します (Microsoft Entra Web アプリケーションから > [設定] > [所有者] > [所有者の追加])。
    • ユーザー ID は、データの取得先の Microsoft 365 (Office 365) 組織に属している必要があり、ゲスト ユーザーであってはなりません。

新しいデータ アクセス要求の承認

このコンテキスト (アクセスされようとしているデータ テーブル、データが読み込まれようとしている宛先アカウント、データ アクセス要求を行っているユーザー ID の組み合わせ) のデータを要求するのはこれが初めてである場合は、コピー アクティビティの状態が "In Progress (進行中)" として表示されます。[アクション] の下にある [詳細] リンクをクリックしたときにのみ、状態は "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) のリンク サービスでは、次のプロパティがサポートされます。

プロパティ Description 必須
type type プロパティは、次のように設定する必要があります:Office365 はい
office365TenantId Microsoft 365 (Office 365) アカウントが属している Azure テナント ID です。 はい
servicePrincipalTenantId Microsoft Entra Web アプリケーションが存在するテナントの情報を指定します。 はい
servicePrincipalId アプリケーションのクライアント ID を取得します。 はい
servicePrincipalKey アプリケーションのキーを取得します。 安全に格納するには、このフィールドを SecureString とマークします。 はい
connectVia データ ストアに接続するために使用される統合ランタイム。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 いいえ

注意

office365TenantIdservicePrincipalTenantId の違いと、対応する指定値:

  • 自分の組織で使うための 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) からデータをコピーする場合、次のプロパティがサポートされます。

プロパティ Description 必須
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 セクションでは次のプロパティがサポートされています。

プロパティ Description 必須
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 DateTime フィルター列の名前。 Microsoft 365 (Office 365) データを抽出する時間範囲を制限するには、このプロパティを使います。 はい (データセットに DateTime 列が 1 つ以上ある場合)。 この DateTime フィルターが必要なデータセットの一覧については、こちらを参照してください。
startTime フィルター処理する開始 DateTime の値。 はい (dateFilterColumn が指定されている場合)
endTime フィルター処理する終了 DateTime の値。 はい (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 データセットは、マッピング データ フローを含むソースとして使用できます。 データ フローでは、データセットを自動的にフラット化することでデータを変換します。 これにより、ユーザーはフラット化されたデータセットを活用して分析シナリオを高速化することに集中できます。

Mapping Data Flow のプロパティ

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. [データ プレビュー] タブで、[更新] ボタンをクリックして、検証用のサンプル データセットをフェッチします。

Copy アクティビティでソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関するセクションを参照してください。