使用 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 List 連接器支援下列功能:
支援的功能 | IR |
---|---|
複製活動 (來源/-) | 4.9 |
查閱活動 | 4.9 |
① Azure 整合執行階段 ② 自我裝載整合執行階段
如需支援作為來源或接收器的資料存放區清單,請參閱支援的資料存放區表格。
具體而言,此 SharePoint 清單線上連接器會使用服務主體驗證,並透過 OData 通訊協定來擷取資料。
提示
此連接器支援從 SharePoint Online 清單複製資料,而不是從檔案。 在從 SharePoint Online 複製檔案一節,了解如何複製檔案。
開始使用
若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:
使用 UI 建立與 SharePoint Online 清單的連結服務
使用下列步驟,在 Azure 入口網站 UI 中建立與 SharePoint Online 清單的連結服務。
前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:
搜尋 SharePoint 然後選取 SharePoint Online 清單連接器。
設定服務詳細資料,測試連線,然後建立新的連結服務。
連接器設定詳細資料
下列各節提供屬性的相關詳細資料,您可以使用這些屬性來定義 SharePoint Online 清單連接器專屬的實體。
連結服務屬性
以下是針對 SharePoint Online 清單連結服務支援的屬性:
屬性 | 說明 | 必要 |
---|---|---|
type | 類型屬性必須設定為:SharePointOnlineList。 | Yes |
siteUrl | SharePoint Online 網站 URL,例如 https://contoso.sharepoint.com/sites/siteName 。 |
Yes |
servicePrincipalId | 已在 Microsoft Entra ID 中註冊應用程式的應用程式 (用戶端) 識別碼。 | Yes |
servicePrincipalCredentialType | 指定要用於服務主體驗證的認證類型。 允許值為:ServicePrincipalCert 和 ServicePrincipalKey 。 |
No |
適用於 ServicePrincipalCert | ||
servicePrincipalEmbeddedCert | 指定在 Microsoft Entra ID 中所註冊應用程式的 base64 編碼憑證,並確定憑證內容類型為 PKCS #12。 將此欄位標記為 SecureString 以將其安全地儲存,或參考 Azure Key Vault 中儲存的祕密。 您必須設定參考本文的權限設定。 | No |
servicePrincipalEmbeddedCertPassword | 如果您的憑證受到密碼保護,則指定您憑證的密碼。 將此欄位標記為 SecureString 以將其安全地儲存,或參考 Azure Key Vault 中儲存的祕密。 | No |
適用於 ServicePrincipalKey | ||
servicePrincipalKey | 應用程式的金鑰。 將此欄位標記為 SecureString 以將其安全地儲存,或參考 Azure Key Vault 中儲存的祕密。 如需更多詳細資料 (包括權限設定),請參閱此章節。 | No |
tenantId | 您的應用程式所在的租用戶識別碼。 | Yes |
connectVia | 用來連線到資料存放區的整合執行階段。 如果未指定,則會使用預設的 Azure Integration Runtime。 | No |
注意
如果您使用以 Azure ACS (存取控制服務) 為基礎的服務主體金鑰驗證,由於 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 清單線上連接器會使用服務主體驗證來連線到 SharePoint。 請遵循這些步驟進行設定:
向 Microsoft 身分識別平台註冊應用程式。 若要深入了解,請參閱快速入門:向 Microsoft 身分識別平台註冊應用程式。 請記下這些值,以便用於定義連結服務:
- Application ID
- 應用程式金鑰
- 租用戶識別碼
依照下列步驟,將 SharePoint Online 網站權限授與已註冊的應用程式。 若要這麼做,您需要網站管理員角色。
開啟 SharePoint Online 網站連結。 例如,
https://<your-site-url>/_layouts/15/appinv.aspx
格式的 URL,其中預留位置<your-site-url>
是您的網站。搜尋您註冊的應用程式識別碼、填入空白欄位,然後按一下 [建立]。
應用程式網域:
contoso.com
重新導向 URL:
https://www.contoso.com
權限要求 XML:
<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read"/> </AppPermissionRequests>
注意
在設定 SharePoint 連接器的內容中,「應用程式網域」和「重新導向 URL」是指您已在 Microsoft Entra ID 中註冊以允許存取 SharePoint 資料的 SharePoint 應用程式。 「應用程式網域」是裝載您 SharePoint 網站所在的網域。 例如,如果您的 SharePoint 網站位於「https://contoso.sharepoint.com"」;,則「應用程式網域」會是 "contoso.sharepoint.com"。 「重新導向 URL」是 SharePoint 應用程式在使用者驗證並授與應用程式權限之後,將重新導向的目標 URL。 此 URL 應該是您 SharePoint 網站上應用程式有權存取的頁面。 例如,您可以使用頁面的 URL 來顯示程式庫中的檔案清單,或是顯示文件內容的頁面。
針對此應用程式按一下 [允許存取]。
資料集屬性
如需定義資料集的區段和屬性完整清單,請參閱資料集和連結服務。 下列小節提供 SAP 資料表資料集所支援的屬性清單。
屬性 | 描述 | 必要 |
---|---|---|
type | 資料集的 type 屬性必須設定為 SharePointOnlineLResource。 | Yes |
listName | SharePoint Online 清單的名稱。 請注意,檔案名稱中不允許使用單引號 (')。 | Yes |
範例
{
"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。 | Yes |
query | 用來篩選資料的自訂 OData 查詢選項。 範例:"$top=10&$select=Title,Number" 。 |
No |
httpRequestTimeout | HTTP 要求取得回應的逾時 (以秒為單位)。 預設值為 300 (5 分鐘)。 | No |
範例
"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>"
}
}
}
]
注意
無法為 SharePoint Online 清單來源選取多個選擇資料類型。
SharePoint Online 清單的資料類型對應
當您從 SharePoint Online 清單複製資料時,在 SharePoint Online 清單資料類型與服務在內部使用的過渡期資料類型之間會使用下列對應。
SharePoint Online 資料類型 | OData 資料類型 | 過渡資料類型 |
---|---|---|
單行文字 | 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 | 布林值 |
個人或群組 | Edm.Int32 | Int32 |
超連結或圖片 | Edm.String | String |
計算 (根據其他欄進行計算) | Edm.String / Edm.Double / Edm.DateTime / Edm.Boolean | String / Double / DateTime / Boolean |
附件 | 不支援 | |
工作結果 | 不支援 | |
外部資料 | 不支援 | |
受管理的中繼資料 | 不支援 |
從 SharePoint Online 複製檔案
您可以使用 Web 活動從 SharePoint Online 複製檔案,以從 SPO 驗證和抓取存取權杖,然後傳遞至後續的複製活動,將 HTTP 連接器作為來源來複製資料。
遵循授與使用服務主體金鑰的權限一節來建立 Microsoft Entra 應用程式,並將權限授與 SharePoint Online。
建立 Web 活動,以從 SharePoint Online 取得存取權杖:
- URL:
https://accounts.accesscontrol.windows.net/[Tenant-ID]/tokens/OAuth/2
。 取代租用戶識別碼。 - 方法:POST
- 標頭:
- 內容類型: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]
。 取代用戶端識別碼 (應用程式識別碼)、用戶端密碼 (應用程式金鑰)、租用戶識別碼和租用戶名稱 (SharePoint 租用戶)。
警告
在 Web 活動中,將 [安全輸出] 選項設定為 [是],以防止以純文字記錄權杖值。 任何進一步使用此值的活動都應該將其 [安全輸入] 選項設定為 [是]。
- URL:
搭配 HTTP 連接器作為來源鏈結複製活動,以複製 SharePoint Online 檔案內容:
- 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 活動所產生的持有人權杖作為授權標頭。 取代 Web 活動名稱。
- 為任何支援的接收目的地設定複製活動接收。
- HTTP 連結服務:
注意
即使 Microsoft Entra 應用程式具有 SharePoint Online 的 FullControl
權限,您也無法從已啟用 IRM 的文件庫複製檔案。
查閱活動屬性
若要了解屬性的詳細資料,請參閱查閱活動。
相關內容
如需複製活動作為來源和接收端支援的資料存放區清單,請參閱支援的資料存放區和格式。