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 アクティビティ (ソース/-) | ① ② |
Lookup アクティビティ | ① ② |
① Azure 統合ランタイム ② セルフホステッド統合ランタイム
ソースまたはシンクとしてサポートされているデータ ストアの一覧については、サポートされるデータ ストアに関する表を参照してください。
具体的には、この SharePoint List Online コネクタでは、サービス プリンシパル認証を使用して OData プロトコルを介してデータが取得されます。
ヒント
このコネクタは、ファイルではなく、SharePoint Online リストからのデータのコピーをサポートしています。 「SharePoint Online からのファイルをコピーする」セクションからファイルをコピーする方法を参照してください。
作業の開始
パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用します。
UI を使用して SharePoint Online リストへのリンク サービスを作成する
次の手順を使用して、Azure portal の UI で SharePoint Online リストへのリンク サービスを作成します。
Azure Data Factory または Synapse ワークスペースの [管理] タブに移動し、[リンク サービス] を選択して、[新規] をクリックします。
SharePoint を検索し、SharePoint Online リスト コネクタを選択します。
サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。
コネクタの構成の詳細
次のセクションでは、SharePoint Online リスト コネクタに固有のエンティティの定義に使用できるプロパティについて詳しく説明します。
リンクされたサービスのプロパティ
SharePoint Online リストのリンクされたサービスでは、次のプロパティがサポートされます。
プロパティ | 説明 | 必須 |
---|---|---|
type | type プロパティを SharePointOnlineList に設定する必要があります。 | はい |
siteUrl | SharePoint Online サイトの url (例: https://contoso.sharepoint.com/sites/siteName )。 |
はい |
servicePrincipalId | Microsoft Entra ID に登録されているアプリケーションのアプリケーション (クライアント) ID。 | はい |
servicePrincipalCredentialType | サービス プリンシパル認証に使用する資格情報の種類を指定します。 使用できる値は ServicePrincipalCert と ServicePrincipalKey です。 |
いいえ |
ServicePrincipalCert に関して | ||
servicePrincipalEmbeddedCert | Microsoft Entra ID に登録されているアプリケーションの base64 でエンコードされた証明書を指定し、証明書のコンテンツ タイプが PKCS #12 であることを確認します。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 こちらの記事を参照して、アクセス許可設定を構成する必要があります。 | いいえ |
servicePrincipalEmbeddedCertPassword | 証明書がパスワードで保護されている場合は、証明書のパスワードを指定します。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 | いいえ |
ServicePrincipalKey に関して | ||
servicePrincipalKey | アプリケーションのキーです。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 アクセス許可の設定など、詳細についてはこちらのセクションを参照してください。 | いいえ |
tenantId | アプリケーションが存在するテナント ID。 | はい |
connectVia | データ ストアに接続するために使用される Integration Runtime。 指定されていない場合は、既定の Azure Integration Runtime が使用されます。 | いいえ |
Note
Azure ACS (Access Control Services) に基づくサービス プリンシパル キー認証を使用している場合は、ACS の提供終了計画に伴い、サービス プリンシパル証明書認証に切り替えることをお勧めします。
例 1: サービス プリンシパル キー認証を使用する
{
"name": "SharePointOnlineList",
"properties": {
"type": "SharePointOnlineList",
"typeProperties": {
"siteUrl": "<site URL>",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredentialType": "ServicePrincipalKey",
"servicePrincipalKey": {
"type": "SecureString",
"value": "<service principal key>"
},
"tenantId": "<tenant ID>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
例 2: サービス プリンシパル証明書認証を使用する
{
"name": "SharePointOnlineList",
"properties": {
"type": "SharePointOnlineList",
"typeProperties": {
"siteUrl": "<site URL>",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredentialType": "ServicePrincipalCert",
"servicePrincipalEmbeddedCert": {
"type": "SecureString",
"value": "<base64 encoded string of (.pfx) certificate data>"
},
"servicePrincipalEmbeddedCertPassword": {
"type": "SecureString",
"value": "<password of your certificate>"
},
"tenantId": "<tenant ID>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
サービス プリンシパル キーを使用するためのアクセス許可を付与する
SharePoint List Online コネクタでは、サービス プリンシパル認証を使用して SharePoint に接続されます。 設定するには、次の手順を実行します。
Microsoft ID プラットフォームにアプリケーションを登録する。 方法については、「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」を参照してください。 これらの値を記録しておきます。リンクされたサービスを定義するときに使います。
- アプリケーション ID
- アプリケーション キー
- テナント ID
以下の手順のようにして、登録したアプリケーションに SharePoint Online サイトのアクセス許可を付与します。 そのためには、サイト管理者ロールが必要です。
SharePoint Online サイト リンクを開きます。 例: プレースホルダー
<your-site-url>
がサイトを表す、https://<your-site-url>/_layouts/15/appinv.aspx
形式の URL。登録したアプリケーション ID を検索し、空欄に入力して [作成] をクリックします。
アプリ ドメイン:
contoso.com
リダイレクト URL:
https://www.contoso.com
権限の要求 XML:
<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read"/> </AppPermissionRequests>
Note
SharePoint コネクタを構成するコンテキストでは、"アプリ ドメイン" と "リダイレクト URL" は、SharePoint データへのアクセスを許可するために Microsoft Entra ID に登録した SharePoint アプリを示します。 "アプリ ドメイン" は、SharePoint サイトがホストされているドメインです。 たとえば、SharePoint サイトが "https://contoso.sharepoint.com" にある場合、"アプリ ドメイン" は "contoso.sharepoint.com" になります。 "リダイレクト URL" は、ユーザーが SharePoint アプリを認証し、そのアプリにアクセス許可を付与した後、そのアプリがリダイレクトされる先の URL です。 この URL は、アプリがアクセス許可を持つ SharePoint サイト上のページである必要があります。 たとえば、ライブラリ内のファイルの一覧を表示するページや、ドキュメントの内容を表示するページの URL を使用できます。
このアプリに対して [信頼する] をクリックします。
データセットのプロパティ
データセットの定義に使用できるセクションとプロパティの完全な一覧については、「データセットとリンクされたサービス」を参照してください。 次のセクションでは、SAP テーブル データセットでサポートされるプロパティの一覧を示します。
プロパティ | 内容 | 必須 |
---|---|---|
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 セクションでサポートされています。
プロパティ | 内容 | 必須 |
---|---|---|
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 コネクタをソースとして使用してデータをコピーします。
「サービス プリンシパル キーを使用するためのアクセス許可を付与する」セクションに従って Microsoft Entra アプリケーションを作成し、SharePoint Online にアクセス許可を付与します。
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 に設定されている必要があります。
- URL:
コピー アクティビティを、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
などのドメイン名を含めるようにしてください。 - 認証の種類: 匿名 (コピー アクティビティのソースで、構成されているベアラー トークンを後で使用します)
- ベース URL:
- データセット: 目的の形式を選択します。 ファイルをそのままコピーするには、"バイナリ" の種類を選択します。
- コピー アクティビティのソース:
- 要求メソッド:GET
- 追加のヘッダー: 次の式を使用します。
@{concat('Authorization: Bearer ', activity('<Web-activity-name>').output.access_token)}
。ここで、アップストリームの Web アクティビティによって生成されたベアラー トークンが authorization ヘッダーとして使用されます。 Web アクティビティ名を置き換えてください。
- サポートされているシンク先に対する Copy アクティビティ シンクを構成します。
- HTTP のリンクされたサービス:
Note
Microsoft Entra アプリケーションに SharePoint Online に対する FullControl
アクセス許可がある場合でも、IRM が有効になっているドキュメント ライブラリからファイルをコピーすることはできません。
Lookup アクティビティのプロパティ
プロパティの詳細については、Lookup アクティビティに関するページを参照してください。
関連するコンテンツ
コピー アクティビティでソースおよびシンクとしてサポートされているデータ ストアの一覧については、「サポートされるデータ ストアと形式」を参照してください。