Azure Data Factory または Azure Synapse Analytics を使用して SharePoint Online リストからデータをコピーする

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

この記事では、Azure Data Factory と Azure Synapse パイプラインのコピー アクティビティを使用して、SharePoint Online リストから、または SharePoint Online リストにデータをコピーする方法について説明します。 この記事は、Copy アクティビティの概要を説明する Copy アクティビティに関する記事に基づいています。

サポートされる機能

この SharePoint Online リスト コネクタでは、次の機能がサポートされます。

サポートされる機能 IR
Copy アクティビティ (ソース/-) 1.1
Lookup アクティビティ 1.1

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

ソースまたはシンクとしてサポートされているデータ ストアの一覧については、サポートされるデータ ストアに関する表を参照してください。

具体的には、この SharePoint List Online コネクタでは、サービス プリンシパル認証を使用して OData プロトコルを介してデータが取得されます。

ヒント

このコネクタは、ファイルではなく、SharePoint Online リストからのデータのコピーをサポートしています。 「SharePoint Online からのファイルをコピーする」セクションからファイルをコピーする方法を参照してください。

前提条件

SharePoint List Online コネクタでは、サービス プリンシパル認証を使用して SharePoint に接続されます。 設定するには、次の手順を実行します。

  1. Microsoft ID プラットフォームにアプリケーションを登録する。 方法については、「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」を参照してください。 これらの値を記録しておきます。リンクされたサービスを定義するときに使います。

    • アプリケーション ID
    • アプリケーション キー
    • テナント ID
  2. 以下の手順のようにして、登録したアプリケーションに SharePoint Online サイトのアクセス許可を付与します。 そのためには、サイト管理者ロールが必要です。

    1. SharePoint Online サイト リンクを開きます。たとえば、https://[your_site_url]/_layouts/15/appinv.aspx (サイトの URL は置き換えてください)。

    2. 登録したアプリケーション ID を検索し、空欄に入力して [作成] をクリックします。

      • アプリ ドメイン: contoso.com

      • リダイレクト URL: https://www.contoso.com

      • 権限の要求 XML:

        <AppPermissionRequests AllowAppOnlyPolicy="true">
            <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read"/>
        </AppPermissionRequests>
        

        Grant SharePoint Online site permission to your registered application when you have site admin role.

      Note

      SharePoint コネクタを構成するコンテキストでは、"アプリ ドメイン" と "リダイレクト URL" は、SharePoint データへのアクセスを許可するために Microsoft Entra ID に登録した SharePoint アプリを示します。 "アプリ ドメイン" は、SharePoint サイトがホストされているドメインです。 たとえば、SharePoint サイトが "https://contoso.sharepoint.com" にある場合、"アプリ ドメイン" は "contoso.sharepoint.com" になります。 "リダイレクト URL" は、ユーザーが SharePoint アプリを認証し、そのアプリにアクセス許可を付与した後、そのアプリがリダイレクトされる先の URL です。 この URL は、アプリがアクセス許可を持つ SharePoint サイト上のページである必要があります。 たとえば、ライブラリ内のファイルの一覧を表示するページや、ドキュメントの内容を表示するページの URL を使用できます。

    3. このアプリに対して [信頼する] をクリックします。

はじめに

パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用します。

UI を使用して SharePoint Online リストへのリンク サービスを作成する

次の手順を使用して、Azure portal の UI で SharePoint Online リストへのリンク サービスを作成します。

  1. Azure Data Factory または Synapse ワークスペースの [管理] タブに移動し、[リンク サービス] を選択して、[新規] をクリックします。

  2. SharePoint を検索し、SharePoint Online リスト コネクタを選択します。

    Screenshot of the SharePoint Online List connector.

  3. サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。

    Screenshot of linked service configuration for a SharePoint Online List.

コネクタの構成の詳細

次のセクションでは、SharePoint Online リスト コネクタに固有のエンティティの定義に使用できるプロパティについて詳しく説明します。

リンクされたサービスのプロパティ

SharePoint Online リストのリンクされたサービスでは、次のプロパティがサポートされます。

プロパティ 説明 必須
type type プロパティを SharePointOnlineList に設定する必要があります。 はい
siteUrl SharePoint Online サイトの url (例: https://contoso.sharepoint.com/sites/siteName)。 はい
servicePrincipalId Microsoft Entra ID に登録されているアプリケーションのアプリケーション (クライアント) ID。 アクセス許可の設定を含む詳細については、「前提条件」を参照してください。 はい
servicePrincipalKey アプリケーションのキーです。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 はい
tenantId アプリケーションが存在するテナント ID。 はい
connectVia データ ストアに接続するために使用される Integration Runtime。 指定されていない場合は、既定の Azure Integration Runtime が使用されます。 いいえ

例:

{
    "name": "SharePointOnlineList",
    "properties": {
        "type": "SharePointOnlineList",
        "typeProperties": {
            "siteUrl": "<site URL>",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenantId": "<tenant ID>"
        }
    }
}

データセットのプロパティ

データセットの定義に使用できるセクションとプロパティの完全な一覧については、「データセットとリンクされたサービス」を参照してください。 次のセクションでは、SAP テーブル データセットでサポートされるプロパティの一覧を示します。

プロパティ Description 必須
type データセットの type プロパティは SharePointOnlineLResource に設定する必要があります。 はい
listName SharePoint Online リストの名前。 アポストロフィ (') はファイル名では使用できないことに注意してください。 はい

{
    "name": "SharePointOnlineListDataset",
    "properties":
    {
        "type": "SharePointOnlineListResource",
        "linkedServiceName": {
            "referenceName": "<SharePoint Online List linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties":
        {
            "listName": "<name of the list>"
        }
    }
}

コピー アクティビティのプロパティ

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 SharePoint Online リスト ソースでサポートされているプロパティの一覧を次のセクションに示します。

ソースとしての SharePoint Online リスト

SharePoint Online リストからデータをコピーするために、以下のプロパティがコピー アクティビティの source セクションでサポートされています。

プロパティ Description 必須
type コピー アクティビティ ソースの type プロパティは、SharePointOnlineListSource に設定する必要があります。 はい
query データをフィルター処理するためのカスタムの OData クエリ オプション。 例: "$top=10&$select=Title,Number". いいえ
httpRequestTimeout HTTP 要求の応答が返されるまでのタイムアウト (秒単位)。 既定値は 300 (5 分間) です。 いいえ

"activities":[
    {
        "name": "CopyFromSharePointOnlineList",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SharePoint Online List input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SharePointOnlineListSource",
                "query": "<OData query e.g. $top=10&$select=Title,Number>"
            }, 
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Note

SharePoint Online リストのソースに対して複数の "選択" データ型を選択することはできません。

SharePoint Online リストのデータ型マッピング

SharePoint Online リストからデータをコピーする際、SharePoint Online リストのデータ型とサービスの内部で使用される中間データ型との間では、次のマッピングが使用されます。

SharePoint Online のデータ型 OData のデータ型 中間データ型
1 行のテキスト Edm.String String
複数行のテキスト Edm.String String
選択 (メニューから選択) Edm.String String
数値 (1、1.0、100) Edm.Double Double
通貨 ($、¥、€) Edm.Double Double
日時 Edm.DateTime DateTime
参照 (このサイトに既に存在する情報) Edm.Int32 Int32
はい/いいえ (チェック ボックス) Edm.Boolean Boolean
ユーザーまたはグループ Edm.Int32 Int32
ハイパーリンクまたは画像 Edm.String String
計算 (他の列に基づく計算) Edm.String / Edm.Double / Edm.DateTime / Edm.Boolean String / Double / DateTime / Boolean
Attachment サポートされていません
タスクの結果 サポートされていません
外部データ サポートされていません
マネージド メタデータ サポートされていません

SharePoint Online からのファイルをコピーする

SharePoint Online からファイルをコピーするには、Web アクティビティを使用して認証し、SPO からアクセス トークンを取得し、後続のコピー アクティビティに渡し、HTTP コネクタをソースとして使用してデータをコピーします。

sharepoint copy file flow

  1. 前提条件」セクションに従って Microsoft Entra アプリケーションを作成し、SharePoint Online にアクセス許可を付与します。

  2. Web アクティビティを作成し、SharePoint Online からアクセス トークンを取得します。

    • URL: https://accounts.accesscontrol.windows.net/[Tenant-ID]/tokens/OAuth/2。 テナント ID は置き換えてください。
    • メソッド: POST
    • Headers:
      • Content-Type: application/x-www-form-urlencoded
    • 本文: grant_type=client_credentials&client_id=[Client-ID]@[Tenant-ID]&client_secret=[Client-Secret]&resource=00000003-0000-0ff1-ce00-000000000000/[Tenant-Name].sharepoint.com@[Tenant-ID]。 クライアント ID (アプリケーション ID)、クライアント シークレット (アプリケーション キー)、テナント ID、テナント名 (SharePoint テナント) を置き換えます。

    注意事項

    トークン値がプレーン テキストでログに記録されないようにするには、Web アクティビティで [セキュリティで保護された出力] オプションを true に設定します。 この値を使用するその他のアクティビティでは、[セキュリティで保護された入力] オプションが true に設定されている必要があります。

  3. コピー アクティビティを、SharePoint Online ファイルのコンテンツをコピーするソースとして HTTP コネクタとチェーンします。

    • HTTP のリンクされたサービス:
      • ベース URL: https://[site-url]/_api/web/GetFileByServerRelativeUrl('[relative-path-to-file]')/$value。 サイト URL とファイルの相対パスを置き換えてください。 SharePoint サイトの URL と、https://[sharepoint-domain-name].sharepoint.com/sites/[sharepoint-site]/_api/web/GetFileByServerRelativeUrl('/sites/[sharepoint-site]/[relative-path-to-file]')/$value などのドメイン名を含めるようにしてください。
      • 認証の種類: 匿名 (コピー アクティビティのソースで、構成されているベアラー トークンを後で使用します)
    • データセット: 目的の形式を選択します。 ファイルをそのままコピーするには、"バイナリ" の種類を選択します。
    • コピー アクティビティのソース:
      • 要求メソッド:GET
      • 追加のヘッダー: 次の式を使用します。@{concat('Authorization: Bearer ', activity('<Web-activity-name>').output.access_token)}。ここで、アップストリームの Web アクティビティによって生成されたベアラー トークンが authorization ヘッダーとして使用されます。 Web アクティビティ名を置き換えてください。
    • コピー アクティビティのシンクを通常どおりに構成します。

Note

Microsoft Entra アプリケーションに SharePoint Online に対する FullControl アクセス許可がある場合でも、IRM が有効になっているドキュメント ライブラリからファイルをコピーすることはできません。

Lookup アクティビティのプロパティ

プロパティの詳細については、Lookup アクティビティに関するページを参照してください。

コピー アクティビティでソースおよびシンクとしてサポートされているデータ ストアの一覧については、「サポートされるデータ ストアと形式」を参照してください。