使用 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
複製活動 (來源/-) ① ②
查閱活動 ① ②

① Azure 整合執行階段 ② 自我裝載整合執行階段

如需支援作為來源或接收器的資料存放區清單,請參閱支援的資料存放區表格。

具體而言,此 SharePoint 清單線上連接器會使用服務主體驗證,並透過 OData 通訊協定來擷取資料。

提示

此連接器支援從 SharePoint Online 清單複製資料,而不是從檔案。 在從 SharePoint Online 複製檔案一節,了解如何複製檔案。

必要條件

SharePoint 清單線上連接器會使用服務主體驗證來連線到 SharePoint。 請遵循這些步驟進行設定:

  1. 向 Microsoft 身分識別平台註冊應用程式。 若要深入了解,請參閱快速入門:向 Microsoft 身分識別平台註冊應用程式。 請記下這些值,以便用於定義連結服務:

    • Application ID
    • 應用程式金鑰
    • 租用戶識別碼
  2. 依照下列步驟,將 SharePoint Online 網站權限授與已註冊的應用程式。 若要這麼做,您需要網站管理員角色。

    1. 開啟 SharePoint Online 網站連結,例如 https://[your_site_url]/_layouts/15/appinv.aspx (取代網站 URL)。

    2. 搜尋您註冊的應用程式識別碼、填入空白欄位,然後按一下 [建立]。

      • 應用程式網域: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.

      注意

      在設定 SharePoint 連接器的內容中,「應用程式網域」和「重新導向 URL」是指您已在 Microsoft Entra ID 中註冊以允許存取 SharePoint 資料的 SharePoint 應用程式。 「應用程式網域」是裝載您 SharePoint 網站所在的網域。 例如,如果您的 SharePoint 網站位於「https://contoso.sharepoint.com"」;,則「應用程式網域」會是 "contoso.sharepoint.com"。 「重新導向 URL」是 SharePoint 應用程式在使用者驗證並授與應用程式權限之後,將重新導向的目標 URL。 此 URL 應該是您 SharePoint 網站上應用程式有權存取的頁面。 例如,您可以使用頁面的 URL 來顯示程式庫中的檔案清單,或是顯示文件內容的頁面。

    3. 針對此應用程式按一下 [允許存取]。

開始使用

若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:

使用 UI 建立與 SharePoint Online 清單的連結服務

使用下列步驟,在 Azure 入口網站 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 類型屬性必須設定為:SharePointOnlineList Yes
siteUrl SharePoint Online 網站 URL,例如 https://contoso.sharepoint.com/sites/siteName Yes
servicePrincipalId 已在 Microsoft Entra ID 中註冊應用程式的應用程式 (用戶端) 識別碼。 如需更多詳細資料 (包括權限設定),請參閱必要條件 Yes
servicePrincipalKey 應用程式的金鑰。 將此欄位標記為 SecureString 以將其安全地儲存,或參考 Azure Key Vault 中儲存的祕密 Yes
tenantId 您的應用程式所在的租用戶識別碼。 Yes
connectVia 用來連線到資料存放區的整合執行階段。 如果未指定,則會使用預設的 Azure Integration Runtime。 No

範例:

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

資料集屬性

如需定義資料集的區段和屬性完整清單,請參閱資料集和連結服務。 下列小節提供 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 連接器作為來源來複製資料。

sharepoint copy file flow

  1. 請遵循先決條件一節來建立 Microsoft Entra 應用程式,並將權限授與 SharePoint Online。

  2. 建立 Web 活動,以從 SharePoint Online 取得存取權杖:

    • URLhttps://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 活動中,將 [安全輸出] 選項設定為 [是],以防止以純文字記錄權杖值。 任何進一步使用此值的活動都應該將其 [安全輸入] 選項設定為 [是]。

  3. 搭配 HTTP 連接器作為來源鏈結複製活動,以複製 SharePoint Online 檔案內容:

    • HTTP 連結服務:
      • 基底 URLhttps://[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 活動所產生的持有人權杖作為授權標頭。 取代 Web 活動名稱。
    • 如往常般設定複製活動接收器。

注意

即使 Microsoft Entra 應用程式具有 SharePoint Online 的 FullControl 權限,您也無法從已啟用 IRM 的文件庫複製檔案。

查閱活動屬性

若要了解屬性的詳細資料,請參閱查閱活動

如需複製活動作為來源和接收端支援的資料存放區清單,請參閱支援的資料存放區和格式