在 Azure 入口網站 中使用 Azure Data Factory 大量複製多個數據表

適用於: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的單一分析解決方案。 Microsoft Fabric 涵蓋從數據移動到數據科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版

本教學課程示範如何將數個數據表從 Azure SQL 資料庫 複製到 Azure Synapse Analytics。 您也可以在其他複製案例中套用相同的模式。 例如,將數據表從 SQL Server/Oracle 複製到 Azure SQL 資料庫/Azure Synapse Analytics /Azure Blob,將不同的路徑從 Blob 複製到 Azure SQL 資料庫 數據表。

注意

如果您不熟悉 Azure Data Factory,請參閱 Azure Data Factory 簡介。

概括而言,本教學課程包含下列步驟:

  • 建立資料處理站。
  • 建立 Azure SQL 資料庫、Azure Synapse Analytics 和 Azure 儲存體 連結的服務。
  • 建立 Azure SQL 資料庫 和 Azure Synapse Analytics 數據集。
  • 建立管線來查閱要複製的數據表,並建立另一個管線來執行實際的複製作業。
  • 啟動管線執行。
  • 監視管線和活動執行。

本教學課程使用 Azure 入口網站。 若要瞭解如何使用其他工具/SDK 來建立數據處理站,請參閱 快速入門

端對端工作流程

在此案例中,您在 Azure SQL 資料庫 中有一些數據表想要複製到 Azure Synapse Analytics。 以下是在管線中發生的工作流程中的邏輯步驟順序:

Workflow

  • 第一個管線會查閱需要複製到接收數據存放區的數據表清單。 或者,您可以維護元數據數據表,其中列出要複製到接收數據存放區的所有數據表。 然後,管線會觸發另一個管線,它會逐一查看資料庫中的每個數據表,並執行數據複製作業。
  • 第二個管線會執行實際的複本。 它會使用資料表清單做為參數。 針對清單中的每個數據表,將 Azure SQL 資料庫 中的特定數據表複製到 Azure Synapse Analytics 中的對應數據表,以透過 Blob 記憶體和 PolyBase存複製,以獲得最佳效能。 在此範例中,第一個管線會將數據表清單當做 參數的值傳遞。

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

必要條件

  • Azure 儲存體 帳戶。 Azure 儲存體 帳戶會作為大量複製作業中的暫存 Blob 記憶體。
  • Azure SQL Database。 此資料庫包含源數據。 使用 Adventure Works LT 範例數據在 SQL 資料庫 中建立資料庫,並遵循在 Azure SQL 資料庫 中建立資料庫一文。 本教學課程會將此範例資料庫的所有數據表複製到 Azure Synapse Analytics。
  • Azure Synapse Analytics。 此數據倉儲會保存從 SQL 資料庫 複製的數據。 如果您沒有 Azure Synapse Analytics 工作區,請參閱 開始使用 Azure Synapse Analytics 一文,以取得建立 Azure Synapse Analytics 的步驟。

存取 SQL Server 的 Azure 服務

針對 SQL 資料庫 和 Azure Synapse Analytics,允許 Azure 服務存取 SQL Server。 請確定已針對您的伺服器開啟 [允許 Azure 服務和資源存取此伺服器] 設定。 此設定可讓 Data Factory 服務從 Azure SQL 資料庫 讀取數據,並將數據寫入 Azure Synapse Analytics。

若要確認並開啟此設定,請移至您的伺服器 > [安全性 > 防火牆] 和 [虛擬網络 > ] 設定 [允許 Azure 服務和資源將此伺服器 存取至 ON]。

建立資料處理站

  1. 啟動 Microsoft EdgeGoogle Chrome 網頁瀏覽器。 目前只有 Microsoft Edge 和 Google Chrome 網頁瀏覽器才支援 Data Factory UI。

  2. 前往 Azure 入口網站

  3. 在 [Azure 入口網站] 功能表的左側,選取 [建立資源>整合>Data Factory]。

    Data Factory selection in the "New" pane

  4. 在 [ 新增數據處理站 ] 頁面上,輸入 ADFTutorialBulkCopyDF 作為 名稱

    Azure Data Factory 的名稱必須是 全域唯一的。 如果您看到名稱欄位的下列錯誤,請變更數據處理站的名稱(例如 yournameADFTutorialBulkCopyDF)。 如需 Data Factory 成品的命名規則,請參閱 Data Factory - 命名 規則一文。

    Data factory name "ADFTutorialBulkCopyDF" is not available
    
  5. 選取您要在其中建立數據處理站的 Azure 訂用帳戶。

  6. 針對資源群組,執行下列步驟之一:

    • 選取 [ 使用現有的],然後從下拉式清單中選取現有的資源群組。

    • 選取 [ 新建],然後輸入資源群組的名稱。

      若要瞭解資源群組,請參閱 使用資源群組來管理您的 Azure 資源

  7. 針對版本選取 V2

  8. 選取數據處理站的位置。 如需 Data Factory 目前可用的 Azure 區域清單,請選取您在下列頁面上感興趣的區域,然後展開 [分析 ] 以找出 Data Factory依區域提供的產品。 數據處理站所使用的數據存放區(Azure 儲存體、Azure SQL 資料庫 等)和計算(HDInsight 等)可以位於其他區域。

  9. 按一下 [建立]

  10. 建立完成後,選取 [移至資源 ] 以流覽至 Data Factory 頁面。

  11. 在 [開啟 Azure Data Factory Studio] 圖格上選取 [開啟],以在不同的索引卷標中啟動 Data Factory UI 應用程式。

建立連結服務

您可以建立連結服務,將您的資料存放區和計算連結至數據處理站。 鏈接服務具有 Data Factory 服務用來在運行時間連接到數據存放區的連線資訊。

在本教學課程中,您會將 Azure SQL 資料庫、Azure Synapse Analytics,以及 Azure Blob 儲存體 數據存放區連結至數據處理站。 Azure SQL 資料庫 是源數據存放區。 Azure Synapse Analytics 是接收/目的地數據存放區。 Azure Blob 儲存體 是在使用 PolyBase 將數據載入 Azure Synapse Analytics 之前暫存數據。

建立來源 Azure SQL 資料庫 連結服務

在此步驟中,您會建立連結服務,以將 Azure 中的資料庫連結至數據處理站 SQL 資料庫。

  1. 從左窗格開啟 [管理] 索引標籤

  2. 在 [鏈接服務] 頁面上,選取 [+新增 ] 以建立新的鏈接服務。

    New linked service.

  3. 在 [新增鏈接服務] 視窗中,選取 [Azure SQL 資料庫],然後按兩下 [繼續]。

  4. 在 [新增鏈接服務][Azure SQL 資料庫] 視窗中,執行下列步驟:

    a. 輸入 AzureSqlDatabaseLinkedService 作為 [名稱]。

    b. 選取您的伺服器以取得 伺服器名稱

    c. 選取資料庫名稱的資料庫

    d. 輸入 要連線到資料庫的用戶 名稱。

    e. 輸入 用戶的密碼

    f. 若要使用指定的信息來測試資料庫的連線,請按兩下 [ 測試連線]。

    .g 按兩下 [建立] 以儲存連結的服務。

建立接收 Azure Synapse Analytics 鏈接服務

  1. 在 [連線 ions] 索引標籤中,再次按下工具列上的 [+ 新增]。

  2. 在 [ 新增鏈接服務 ] 視窗中,選取 [Azure Synapse Analytics],然後按兩下 [ 繼續]。

  3. 在 [ 新增鏈接服務 (Azure Synapse Analytics)] 視窗中,執行下列步驟:

    a. 輸入 AzureSqlDWLinkedService 作為 [名稱]。

    b. 選取您的伺服器以取得 伺服器名稱

    c. 選取資料庫名稱的資料庫

    d. 輸入 [用戶名稱 ] 以連線到您的資料庫。

    e. 輸入 用戶的密碼

    f. 若要使用指定的信息來測試資料庫的連線,請按兩下 [ 測試連線]。

    .g 按一下 [建立]

建立預備 Azure 儲存體 連結服務

在本教學課程中,您會使用 Azure Blob 記憶體作為過渡暫存區域,以啟用 PolyBase 以提升複製效能。

  1. 在 [連線 ions] 索引標籤中,再次按下工具列上的 [+ 新增]。

  2. 在 [新增鏈接服務] 視窗中,選取 [Azure Blob 儲存體],然後按兩下 [繼續]。

  3. 在 [新增鏈接服務] (Azure Blob 儲存體) 視窗中,執行下列步驟:

    a. 輸入 Azure 儲存體 LinkedService 作為 [名稱]。
    b. 選取 Azure 儲存體 帳戶,以取得 儲存體 帳戶名稱

    c. 按一下 [建立]

建立資料集

在本教學課程中,您會建立來源和接收數據集,以指定儲存數據的位置。

輸入數據集 AzureSqlDatabaseDataset 是指 AzureSqlDatabaseLinkedService。 鏈接的服務會指定要連線到資料庫的 連接字串。 數據集會指定資料庫的名稱,以及包含源數據的數據表。

輸出數據集 AzureSqlDWDataset 是指 AzureSqlDWLinkedService。 鏈接的服務會指定要連線至 Azure Synapse Analytics 的 連接字串。 數據集會指定複製數據的資料庫和數據表。

在本教學課程中,來源和目的地 SQL 數據表不會在數據集定義中硬式編碼。 相反地,ForEach 活動會在運行時間將數據表的名稱傳遞至 複製活動。

建立來源 SQL 資料庫 的數據集

  1. 從左窗格中選取 [ 撰寫] 索引標籤。

  2. 選取左窗格中的 + [加號],然後選取 [ 數據集]。

    New dataset menu

  3. 在 [新增數據集] 視窗中,選取 [Azure SQL 資料庫],然後按兩下 [繼續]。

  4. 在 [設定屬性] 視窗中的 [名稱] 底下,輸入 AzureSqlDatabaseDataset。 在 [鏈接服務] 底下,選取 [AzureSqlDatabaseLinkedService]。 然後按一下 [確定] 。

  5. 切換至 [連線 ion] 索引標籤,選取 [數據表] 的任何數據表。 此數據表是虛擬數據表。 您可以在建立管線時指定來源資料集的查詢。 此查詢可用來從資料庫擷取數據。 或者,您可以按兩下 [ 編輯] 複選框,然後輸入 dbo.dummyName 做為資料表名稱。

建立接收 Azure Synapse Analytics 的數據集

  1. 按兩下 左窗格中的 [+ (加號] ,然後按兩下 [ 資料集]。

  2. 在 [新增數據集] 視窗中,選取 [Azure Synapse Analytics],然後按兩下 [繼續]。

  3. 在 [設定屬性] 視窗中的 [名稱] 底下,輸入 AzureSqlDWDataset。 在 [鏈接服務] 底下,選取 [AzureSqlDWLinkedService]。 然後按一下 [確定] 。

  4. 切換至 [ 參數] 索引卷標,按兩下 [+ 新增],然後輸入 DWTableName 做為參數名稱。 再次按下 [+ 新增 ],然後輸入 DWSchema 以取得參數名稱。 如果您從頁面複製/貼上此名稱,請確定 DWTableName 和 DWSchema 結尾沒有尾端空格符

  5. 切換至 [連線 ion] 索引標籤,

    1. 針對 [數據表],檢查 [ 編輯] 選項。 選取第一個輸入方塊,然後按下下方的 [ 新增動態內容 ] 連結。 在 [新增動態內容] 頁面中,按兩下 [參數] 下的 [DWSchema],這會自動填入頂端表達式文本框@dataset().DWSchema,然後按兩下 [完成]。

      Dataset connection tablename

    2. 選取第二個輸入方塊,然後按下下方的 [ 新增動態內容 ] 連結。 在 [新增動態內容] 頁面中,按兩下 [參數] 下的 [DWTAbleName],這會自動填入頂端表達式文本框@dataset().DWTableName,然後按兩下 [完成]。

    3. 數據集的 tableName 屬性會設定為作為 DWSchemaDWTableName 參數自變數傳遞的值。 ForEach 活動會逐一查看數據表清單,並逐一傳遞至 複製活動。

建立管線

在本教學課程中,您會建立兩個管線: IterateAndCopySQLTablesGetTableListAndTriggerCopyData

GetTableListAndTriggerCopyData 管線會執行兩個動作:

  • 查閱 Azure SQL 資料庫 系統資料表,以取得要複製的數據表清單。
  • 觸發管線 IterateAndCopySQLTables 以執行實際的數據複製。

IterateAndCopySQLTables 管線會以數據表清單作為參數。 針對清單中的每個數據表,它會使用分段複製和 PolyBase,將數據從 Azure SQL 資料庫 中的數據表複製到 Azure Synapse Analytics。

建立管線 IterateAndCopySQLTables

  1. 在左窗格中,按兩下 [+ ](加號),然後按兩下 [管線]。

    New pipeline menu

  2. 在 [屬性] 下的 [一般] 面板中,指定 [名稱] 的 [IterateAndCopySQLTables]。 然後按下右上角的 [屬性] 圖示,以折疊面板。

  3. 切換至 [ 參數] 索引標籤,然後執行下列動作:

    a. 按一下 [+ 新增]

    b. 輸入 tableList 以取得參數 名稱

    c. 針對 [類型] 選取 [陣列]。

  4. 在 [活動] 工具箱中,展開 [反復專案和條件],然後將 ForEach 活動拖放至管線設計介面。 您也可以在 [活動] 工具箱中 搜尋活動

    a. 在底部的 [ 一般] 索引標籤中,輸入 [IterateSQLTables ] 以取得 [名稱]。

    b. 切換至 [設定] 索引標籤,按兩下 [專案] 的輸入方塊,然後按下下方的 [新增動態內容] 連結。

    c. 在 [新增動態內容] 頁面中,折疊 [系統變數式] 區段,按兩下 [參數] 底下的 tableList,這會自動填入頂端表達式文字框作為 @pipeline().parameter.tableList。 然後按一下 [ 完成]。

    Foreach parameter builder

    d. 切換至 [ 活動] 索引 卷標,按兩下鉛筆圖示 ,將子活動新增至 ForEach 活動。

    Foreach activity builder

  5. 在 [活動] 工具箱中,展開 [移動與傳輸],然後將 [複製數據活動] 拖放至管線設計工具介面。 請注意頂端的階層連結功能表。 IterateAndCopySQLTable 是管線名稱,IterateSQLTables 是 ForEach 活動名稱。 設計工具位於活動範圍中。 若要從 ForEach 編輯器切換回管線編輯器,您可以按下階層連結選單中的連結。

    Copy in ForEach

  6. 切換至 [ 來源] 索引標籤,然後執行下列步驟:

    1. 選取 [來源數據集] 的 [AzureSqlDatabaseDataset]。

    2. 選取 [使用查詢] 的 [查詢] 選項。

    3. 按兩下列查詢輸入] 方塊 -> 選擇下方的[新增動態內容] -> 輸入下列查詢表示式 -> 選取 [完成]。

      SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]
      
  7. 切換至 [ 接收 ] 索引標籤,然後執行下列步驟:

    1. 選取 [接收數據集] 的 [AzureSqlDWDataset]。

    2. 單擊 DWTableName 參數 VALUE 的輸入方塊 -> 選取 下方的 [新增動態內容 ],輸入 @item().TABLE_NAME 表達式作為腳本,然後> 選取 [ 完成]。

    3. 按兩下 DWSchema 參數 VALUE 的輸入方塊 -> 選取 下方的 [新增動態內容 ],輸入 @item().TABLE_SCHEMA 表示式作為腳本,然後> 選取 [ 完成]。

    4. 針對 [複製方法],選取 [PolyBase]。

    5. 清除 [ 使用類型預設 選項]。

    6. 針對 [數據表] 選項,預設設定為 [無]。 如果您沒有在接收 Azure Synapse Analytics 中預先建立數據表,請啟用 [自動建立資料表 ] 選項,複製活動就會根據源數據自動為您建立數據表。 如需詳細資訊,請參閱 自動建立接收數據表

    7. 按兩下 [ 預先複製文稿 輸入] 方塊 -> 選取下方的 [新增動態內容 ] -> 輸入下列運算式作為腳本 -> 選取 [ 完成]。

      IF EXISTS (SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]) TRUNCATE TABLE [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]
      

      Copy sink settings

  8. 切換至 [設定] 索引標籤,然後執行下列步驟:

    1. 選取 [啟用預備] 複選框
    2. 針對 [市集帳戶鏈接服務] 選取 [Azure 儲存體 LinkedService]。
  9. 若要驗證管線設定,請按兩下頂端管線工具列上的 [ 驗證 ]。 請確定沒有驗證錯誤。 若要關閉 管線驗證報告,請按兩下雙角括弧 >>

建立管線 GetTableListAndTriggerCopyData

此管線會執行兩個動作:

  • 查閱 Azure SQL 資料庫 系統資料表,以取得要複製的數據表清單。
  • 觸發管線 「IterateAndCopySQLTables」 以執行實際的數據複製。

以下是建立管線的步驟:

  1. 在左窗格中,按兩下 [+ ](加號),然後按兩下 [管線]。

  2. 在 [屬性] 下的 [一般] 面板中,將管線的名稱變更為 GetTableListAndTriggerCopyData

  3. 在 [活動] 工具箱中,展開 [一般],然後將 [查閱] 活動拖放至管線設計工具介面,然後執行下列步驟:

    1. 輸入 LookupTableList 以取得 名稱
    2. 輸入 [從我的資料庫 擷取資料表清單] 以取得 [描述]。
  4. 切換至 [設定] 索引標籤,然後執行下列步驟:

    1. 選取 [來源數據集] 的 [AzureSqlDatabaseDataset]。

    2. 選取 [查詢 ] 以 使用查詢

    3. 針對 [查詢] 輸入下列 SQL 查詢

      SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA = 'SalesLT' and TABLE_NAME <> 'ProductModel'
      
    4. 清除 [僅限第一列] 字段的複選框。

      Lookup activity - settings page

  5. 將 [執行管線] 活動從 [活動] 工具箱拖放至管線設計工具介面,並將名稱設定為 TriggerCopy

  6. 若要將 [查閱] 活動 連線[執行管線] 活動,請將附加至 [查閱] 活動的綠色方塊拖曳至 [執行管線] 活動的左邊。

    Connect Lookup and Execute Pipeline activities

  7. 切換至 [執行管線] 活動的 [設定] 索引卷標,然後執行下列步驟:

    1. 針對 [叫用管線] 選取 [IterateAndCopySQLTables]。

    2. 清除 [等候完成時等候] 複選框

    3. 在 [參數] 區段中,按兩下 [值] 底下的輸入方塊 - 選取 [新增動態內容->> 輸入@activity('LookupTableList').output.value為資料表名稱值 -> 選取 [完成]。 您要將查閱活動的結果清單設定為第二個管線的輸入。 結果清單包含必須將資料複製到目的地的數據表清單。

      Execute pipeline activity - settings page

  8. 若要驗證管線,請按兩下工具列上的 [ 驗證 ]。 確認沒有任何驗證錯誤。 若要關閉 管線驗證報告,請按下 >>

  9. 若要將實體 (數據集、管線等) 發佈至 Data Factory 服務,請按兩下視窗頂端的 [ 全部發佈 ]。 等到發佈成功為止。

觸發管線執行

  1. 移至管線 GetTableListAndTriggerCopyData,按兩下頂端管線工具列上的 [新增觸發程式],然後按兩下 [立即觸發]。

  2. 確認 [管線執行] 頁面上的執行,然後選取 [完成]。

監視管道執行

  1. 切換至 [ 監視] 索引標籤。按兩下 [重新 整理],直到您看到解決方案中兩個管線的執行為止。 繼續重新整理清單,直到您看到 [成功 ] 狀態為止。

  2. 若要檢視與 GetTableListAndTriggerCopyData 管線相關聯的活動執行,請按兩下管線的管線名稱連結。 您應該會看到此管線執行的兩個活動執行。 Monitor Pipeline run

  3. 若要檢視查閱活動的輸出,請按兩下 [活動名稱] 資料行下活動旁的 [輸出] 連結。 您可以將 [輸出] 視窗最大化並還原。 檢閱之後,按兩下 [ X ] 關閉 [ 輸出 ] 視窗。

    {
        "count": 9,
        "value": [
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "Customer"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "ProductDescription"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "Product"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "ProductModelProductDescription"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "ProductCategory"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "Address"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "CustomerAddress"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "SalesOrderDetail"
            },
            {
                "TABLE_SCHEMA": "SalesLT",
                "TABLE_NAME": "SalesOrderHeader"
            }
        ],
        "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (East US)",
        "effectiveIntegrationRuntimes": [
            {
                "name": "DefaultIntegrationRuntime",
                "type": "Managed",
                "location": "East US",
                "billedDuration": 0,
                "nodes": null
            }
        ]
    }
    
  4. 若要切換回 [管線執行] 檢視,請單擊階層連結功能表頂端的 [ 所有管線執行 ] 連結。 按兩下 [IterateAndCopySQLTables] 連結 (在 [管線名稱] 資料行底下),以檢視管線的活動執行。 請注意,查閱活動輸出中的每個數據表都有一個複製活動執行。

  5. 確認數據已複製到您在本教學課程中使用的目標 Azure Synapse Analytics。

您在本教學課程中執行下列步驟:

  • 建立資料處理站。
  • 建立 Azure SQL 資料庫、Azure Synapse Analytics 和 Azure 儲存體 鏈接服務。
  • 建立 Azure SQL 資料庫 和 Azure Synapse Analytics 數據集。
  • 建立管線來查閱要複製的數據表,並建立另一個管線來執行實際的複製作業。
  • 啟動管線執行。
  • 監視管線和活動執行。

前進到下列教學課程,以瞭解如何以累加方式將數據從來源複製到目的地: