Azure Data Factory 和 Azure Synapse Analytics 中的複製活動

適用於:Azure Data Factory Azure Synapse Analytics

秘訣

想找一個簡單的資料移動方式嗎? Microsoft Fabric 中的複製工作提供一種簡單且可擴展的方式來載入資料,無需建立管線。 學習如何創造一個。

在 Azure Data Factory 和 Synapse 管線中,您可以使用複製活動在內部部署與雲端資料存放區之間複製資料。 複製資料之後,您可以使用其他活動進一步轉換和分析資料。 您也可以使用複製活動來發佈商業智慧 (BI) 及應用程式使用情況的轉換和分析結果。

複製活動的角色

複製活動會在整合執行階段上執行。 您可以針對不同的資料複製案例,使用不同類型的整合執行階段:

  • 透過網際網路從任何 IP 公開存取的兩個資料存放區之間複製資料時,您可以使用 Azure 整合執行階段進行複製活動。 此整合執行階段安全、可靠、可調整且可在全域使用。
  • 在內部部署或具有存取控制的網路 (例如,Azure 虛擬網路) 資料存放區之間複製資料時,您需要設定自我裝載整合執行階段。

整合執行階段必須與每個來源及接收資料存放區相關聯。 如需複製活動如何決定要使用哪一個整合執行階段的相關資訊,請參閱判斷要使用的 IR。

附註

您無法在相同的複製活動中使用多個自行佈署整合運行環境。 活動的來源和接收必須與相同的自我裝載整合執行階段進行連線。

若要將資料從來源複製到接收,執行複製活動的服務會執行下列步驟:

  1. 從來源資料存放區讀取資料。
  2. 執行序列化/還原序列化、壓縮/解壓縮及資料行對應等。 其會根據輸入資料集、輸出資料集及複製活動的設定執行這些作業。
  3. 將資料寫入接收/目的地資料存放區。

複製活動概觀

附註

如果自我裝載整合執行階段用於複製活動內的來源或接收器資料存放區,則必須可以從裝載整合執行階段的伺服器來存取來源和接收器,複製活動才會成功。

支援的資料存放區和格式

類別 資料存放區 支援作為來源 支援作為接收器 受 Azure IR 支援 受自我裝載 IR 支援
天藍色 Azure Blob 儲存體 ✓ ✓ ✓ ✓
  Azure AI 搜尋服務索引 ✓ ✓ ✓
  適用於 NoSQL 的 Azure Cosmos DB ✓ ✓ ✓ ✓
  適用於 MongoDB 的 Azure Cosmos DB ✓ ✓ ✓ ✓
  Azure 資料總管 ✓ ✓ ✓ ✓
  Azure Data Lake Storage Gen1 ✓ ✓ ✓ ✓
  Azure Data Lake Storage Gen2 \(部分機器翻譯\) ✓ ✓ ✓ ✓
  適用於 MariaDB 的 Azure 資料庫 ✓ ✓ ✓
  適用於 MySQL 的 Azure 資料庫 ✓ ✓ ✓ ✓
  適用於 PostgreSQL 的 Azure 資料庫 ✓ ✓ ✓ ✓
  Azure Databricks Delta Lake ✓ ✓ ✓ ✓
  Azure 檔案 ✓ ✓ ✓ ✓
  Azure SQL 資料庫 ✓ ✓ ✓ ✓
  Azure SQL 受控執行個體 ✓ ✓ ✓ ✓
  Azure Synapse Analytics ✓ ✓ ✓ ✓
  Azure 資料表儲存體 ✓ ✓ ✓ ✓
資料庫 適用於 Oracle 的 Amazon RDS ✓ ✓ ✓
  適用於 SQL Server 的 Amazon RDS ✓ ✓ ✓
  Amazon Redshift ✓ ✓ ✓
  DB2 ✓ ✓ ✓
  鑽機 ✓ ✓ ✓
  谷歌 BigQuery ✓ ✓ ✓
  Greenplum ✓ ✓ ✓
  HBase ✓ ✓ ✓
  Hive ✓ ✓ ✓
  阿帕奇黑斑羚 ✓ ✓ ✓
  Informix ✓ ✓ ✓
  MariaDB ✓ ✓ ✓
  Microsoft Access ✓ ✓ ✓
  MySQL ✓ ✓ ✓
  Netezza ✓ ✓ ✓
  Oracle ✓ ✓ ✓ ✓
  鳳凰 ✓ ✓ ✓
  PostgreSQL ✓ ✓ ✓
  Presto ✓ ✓ ✓
  透過 Open Hub 存取 SAP Business Warehouse ✓ ✓
  SAP Business Warehouse 使用 MDX ✓ ✓
  SAP HANA ✓ 只支援接收器搭配 ODBC 連接器和 SAP Hana ODBC 驅動程式 ✓
  SAP Table ✓ ✓
  雪花 ✓ ✓ ✓ ✓
  火花 ✓ ✓ ✓
  SQL 伺服器 ✓ ✓ ✓ ✓
  Sybase ✓ ✓
  Teradata ✓ ✓ ✓
  Vertica ✓ ✓ ✓
NoSQL 卡珊德拉 ✓ ✓ ✓
  Couchbase (預覽) ✓ ✓ ✓
  MongoDB ✓ ✓ ✓ ✓
  MongoDB 圖集 ✓ ✓ ✓ ✓
檔案 Amazon S3 ✓ ✓ ✓
  Amazon S3 相容儲存體 ✓ ✓ ✓
  檔案系統 ✓ ✓ ✓ ✓
  FTP ✓ ✓ ✓
  谷歌雲存儲 ✓ ✓ ✓
  HDFS ✓ ✓ ✓
  Oracle 雲端儲存空間 ✓ ✓ ✓
  SFTP ✓ ✓ ✓ ✓
一般通訊協定 一般 HTTP ✓ ✓ ✓
  泛型 OData ✓ ✓ ✓
  一般 ODBC ✓ ✓ ✓
  一般 REST ✓ ✓ ✓ ✓
服務和應用程式 Amazon Marketplace Web Service (已淘汰)
  Concur (預覽) ✓ ✓ ✓
  Dataverse ✓ ✓ ✓ ✓
  Dynamics 365 ✓ ✓ ✓ ✓
  Dynamics AX ✓ ✓ ✓
  Dynamics CRM ✓ ✓ ✓ ✓
  谷歌AdWords ✓ ✓ ✓
  HubSpot ✓ ✓ ✓
  Jira ✓ ✓ ✓
  Magento (預覽) ✓ ✓ ✓
  Marketo (預覽) ✓ ✓ ✓
  Microsoft 365 ✓ ✓ ✓
  Oracle Eloqua (預覽) ✓ ✓ ✓
  Oracle Responsys (預覽) ✓ ✓ ✓
  Oracle Service Cloud (預覽) ✓ ✓ ✓
  PayPal (預覽) ✓ ✓ ✓
  QuickBooks (預覽) ✓ ✓ ✓
  Salesforce ✓ ✓ ✓ ✓
  Salesforce 服務雲端 ✓ ✓ ✓ ✓
  Salesforce 行銷雲端 ✓ ✓ ✓
  SAP Cloud for Customer (C4C) ✓ ✓ ✓ ✓
  SAP ECC ✓ ✓ ✓
  ServiceNow ✓ ✓ ✓
SharePoint Online 清單 ✓ ✓ ✓
  Shopify (預覽) ✓ ✓ ✓
  Square (預覽) ✓ ✓ ✓
  Web 資料表 (HTML 資料表) ✓ ✓
  Xero ✓ ✓ ✓
  Zoho (預覽) ✓ ✓ ✓

附註

如果連接器標示為「預覽」則您可以試用並提供意見反應給我們。 如果您需要依賴解決方案中的預覽連接器,請連絡 Azure 支援。

支援的檔案格式

Azure Data Factory 支援下列檔案格式。 請參閱每篇文章,以取得以格式為基礎的設定。

您可以使用複製活動在兩個以檔案為基礎的資料存放區之間「依原狀複製檔案」,藉此有效率地複製資料,而不需經過序列化或還原序列化。 此外,您也可以剖析或產生指定格式的檔案,例如,您可以執行下列動作:

  • 從 SQL Server 資料庫複製資料,並以 Parquet 格式寫入 Azure Data Lake Storage Gen2。
  • 從內部部署檔案系統複製文字 (CSV) 格式的檔案,然後以 Avro 格式寫入 Azure Blob 儲存體中。
  • 從內部部署檔案系統複製壓縮檔案、立即解壓縮檔案,並將解壓縮的檔案寫入 Azure Data Lake Storage Gen2。
  • 從 Azure Blob 儲存體複製 Gzip 壓縮文字 (CSV) 格式的資料,然後寫入 Azure SQL Database 中。
  • 需要序列化/還原序列化或壓縮/解壓縮的更多活動。

支援區域

啟用複製活動的服務可在 Azure 整合執行階段位置中列出的區域和地理位置全域提供使用。 全域可用的拓撲可確保進行有效率的資料移動,通常可避免發生跨區域躍點的情況。 請參閱依 區域的產品 ,以檢查特定區域中 Data Factory、Synapse 工作區和資料移動的可用性。

組態

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

一般而言,若要在 Azure Data Factory 或 Synapse 管線中使用複製活動,您必須:

  1. 為來源和接收資料存放區建立連結的服務。 您可以在本文的支援的資料存放區和格式一節中找到支援的連接器清單。 如需設定資訊和支援的屬性,請參閱連接器文章的<連結服務屬性>一節。
  2. 建立來源和接收的資料集。 如需設定資訊和支援的屬性,請參閱來源和接收連接器文章的〈資料集屬性〉一節。
  3. 建立具有複製活動的管線。 下一節提供範例。

語法

下列複製活動範本包含完整的支援屬性清單。 請指定適合您案例的屬性。

"activities":[
    {
        "name": "CopyActivityTemplate",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<source dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<sink dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>",
                <properties>
            },
            "sink": {
                "type": "<sink type>"
                <properties>
            },
            "translator":
            {
                "type": "TabularTranslator",
                "columnMappings": "<column mapping>"
            },
            "dataIntegrationUnits": <number>,
            "parallelCopies": <number>,
            "enableStaging": true/false,
            "stagingSettings": {
                <properties>
            },
            "enableSkipIncompatibleRow": true/false,
            "redirectIncompatibleRowSettings": {
                <properties>
            }
        }
    }
]

語法詳細資料

屬性 描述 必要項?
型別 針對複製活動,設定為 Copy 是的
輸入 指定您所建立並指向來源資料的資料集。 複製活動僅支援單一輸入。 是的
輸出 指定您所建立並指向接收資料的資料集。 複製活動僅支援單一輸出。 是的
typeProperties 指定設定複製活動的屬性。 是的
來源 指定複製來源類型和擷取資料的對應屬性。
如需詳細資料,請參閱支援的資料存放區和格式所列連接器發行項的<複製活動屬性>一節。
是的
接收 指定複製接收類型和寫入資料的對應屬性。
如需詳細資料,請參閱支援的資料存放區和格式所列連接器發行項的<複製活動屬性>一節。
是的
轉譯程式 指定從來源到接收的明確資料行對應。 當預設複製行為不符合您的需求時,就會套用這個屬性。
如需詳細資訊,請參閱複製活動中結構描述對應。
否
dataIntegrationUnits 指定量值,表示 Azure 整合執行階段用於資料複製的電源量。 這些單位之前稱為「雲端資料移動單位」(DMU)。
如需詳細資訊,請參閱資料整合單位。
否
parallelCopies 指定從來源讀取資料和寫入資料到接收時,複製活動要使用的平行處理原則。
如需詳細資訊,請參閱平行複製。
否
保留 指定是否要在資料複製期間保留中繼資料/ACL。
如需詳細資訊,請參閱保留中繼資料。
否
enableStaging
stagingSettings
指定是否要在 Blob 儲存體暫存過度資料,而不是直接從來源將資料複製到接收。
如需實用案例和設定細節的相關資訊,請參閱分段複製。
否
enableSkipIncompatibleRow
redirectIncompatibleRowSettings
選擇從來源將資料複製到接收時,要如何處理不相容的資料列。
如需詳細資訊,請參閱容錯。
否

監視

您可以在 Azure Data Factory 和 Synapse 管線中以視覺化方式和程式設計方式監視複製活動執行。 如需詳細資訊,請參閱監視複製活動。

增量複製

Data Factory 和 Synapse 管線可讓您以累加方式將差異資料從來源資料存放區複製到接收資料存放區。 詳情請參閱教學課程:以累加方式複製資料。

效能和微調

複製活動監視體驗會顯示每個活動執行的複製效能統計資料。 複製活動效能和可擴縮性指南描述透過複製活動影響資料移動效能的重要因素。 其中也列出在測試期間所觀察到的效能值,並討論如何最佳化複製活動效能。

從上次失敗的執行繼續

當您在檔案型存放區之間依現狀複製二進位格式的大型檔案,並選擇將來源的資料夾/檔案階層保留到接收時,複製活動支援從上次失敗執行繼續,例如將資料從 Amazon S3 移轉至 Azure Data Lake Storage Gen2。 它適用於下列檔案型連接器: Amazon S3、 Amazon S3 相容儲存體Azure Blob、 Azure Data Lake Storage Gen1、 Azure Data Lake Storage Gen2、 Azure 檔案儲存體、 檔案系統、 FTP、 Google Cloud Storage、 HDFS、 Oracle Cloud Storage 和 SFTP。

您可以使用下列兩種方式來使用複製活動繼續:

  • 活動層級重試:您可以設定複製活動的重試計數。 在管線執行期間,如果此複製活動執行失敗,下一次自動重試會從上次試用的失敗點開始。

  • 從失敗的活動重新執行:管線執行完成之後,您也可以在 ADF UI 監視檢視或以程式設計方式,從失敗的活動觸發重新執行。 如果失敗的活動是複製活動,則管線不僅會從此活動重新執行,也會從先前執行的失敗點繼續執行。

    繼續複製

請注意以下幾點:

  • 繼續執行發生在檔案層級。 如果複製檔案時複製活動失敗,則在下次執行時,將重新複製此特定檔案。
  • 為了讓繼續執行功能可以正常運作,請勿在重新執行之間變更複製活動設定。
  • 當您從 Amazon S3、Azure Blob、Azure Data Lake Storage Gen2 和 Google Cloud Storage 複製資料時,複製活動可以從任意數目的複製檔案繼續。 而在其餘檔案型連接器作為來源的情況下,目前複製活動支援從有限數目的檔案繼續,數量範圍通常在數千以內,而且會隨著案路徑的長度而有所不同;超過此數量的檔案將在重新執行期間重新複製。

對於二進位檔案複製以外的其他案例,複製活動會從頭開始重新執行。

附註

透過自我裝載執行階段從上次失敗執行的繼續執行現在只在自我裝載整合執行階段 5.43.8935.2 版或更新版本中提供支援。

保留中繼資料與資料

將資料從來源複製到接收時,在 Data Lake 移轉之類的案例中,您也可以選擇使用複製活動來保留中繼資料和 ACL 以及資料。 如需詳細資訊,請參閱保留中繼資料。

將中繼資料標記新增至檔案型接收器

接收器是 Azure 記憶體型 (Azure Data Lake 儲存體或 Azure Blob 儲存體) 時,我們可以選擇將一些中繼資料新增至檔案。 這些中繼資料將會以索引鍵值組的形式出現為檔案屬性的一部分。 對於所有類型的檔案型接收器,您可以使用管線參數、系統變數、函數和變數來新增涉及動態內容的中繼資料。 除此之外,對於二進位檔案型匯入,您可以選擇使用關鍵字 $$LASTMODIFIED 來新增來源檔案的上次修改日期時間,並將自訂值作為中繼資料添加到匯入檔案中。

結構描述和資料類型對應

如需複製活動如何將來源資料對應至接收的相關資訊,請參閱結構描述和資料類型對應。

在複製期間新增其他資料行

除了將資料從來源資料存放區複製到接收之外,您也可以設定在複製期間新增其他資料行,以一併複製到接收。 例如:

  • 當您從 檔案型來源複製時,請將相對檔案路徑儲存為 String 類型的其他數據行,以追蹤數據的來源檔案。
  • 將指定的來源資料行複製為另一個資料行。
  • 新增具有 ADF 運算式的資料行,以附加 ADF 系統變數 (例如管線名稱/管線識別碼),或儲存上游活動輸出中的其他動態值。
  • 新增具有靜態值的資料行,以符合下游取用需求。

您可以在複製活動來源索引標籤上找到下列設定。您也可以使用您定義的資料行名稱,照常在複製活動結構描述對應中對應這些額外的資料行。

在複製活動新增其他資料行

秘訣

此功能適用於最新的資料集模型。 如果您沒有從 UI 看到此選項,請嘗試建立新的資料集。

若要以程式設計方式進行設定,請在複製活動來源中新增 additionalColumns 屬性:

屬性 描述 必要
額外欄位 新增要複製到接收的其他資料行。

additionalColumns 陣列下的每個物件都代表額外的資料行。 name 定義資料行名稱,而 value 表示該資料行的資料值。

允許的資料值為:
- $$FILEPATH - 保留變數表示將來源檔案的相對路徑儲存至資料集中指定的資料夾路徑。 套用至檔案型來源。
- $$COLUMN:<source_column_name> - 保留變數模式表示將指定的來源資料行複製為另一個資料行
- 運算式
- 靜態值
否

範例︰

"activities":[
    {
        "name": "CopyWithAdditionalColumns",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "<source type>",
                "additionalColumns": [
                    {
                        "name": "filePath",
                        "value": "$$FILEPATH"
                    },
                    {
                        "name": "newColName",
                        "value": "$$COLUMN:SourceColumnA"
                    },
                    {
                        "name": "pipelineName",
                        "value": {
                            "value": "@pipeline().Pipeline",
                            "type": "Expression"
                        }
                    },
                    {
                        "name": "staticValue",
                        "value": "sampleValue"
                    }
                ],
                ...
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

秘訣

設定其他資料行之後,請記得在 [對應] 索引標籤中將其對應至目的地接收器。

自動建立接收資料表

當您將資料複製到 SQL 資料庫/Azure Synapse Analytics 時,如果目的地資料表不存在,複製活動會支援根據來源資料自動建立資料表。 其目的在於協助您快速開始載入資料,並評估 SQL 資料庫/Azure Synapse Analytics。 資料擷取之後,您可以視需求檢閱和調整接收資料表結構描述。

將資料從任何來源複製到下列接收資料存放區時,支援使用此功能。 您可以在 ADF 製作 UI ->複製活動接收器 ->資料表選項 ->自動建立角色上或透過複製活動接收承載中的 tableOption 屬性找到此選項ADF 製作 UI。

建立接收資料表

容錯

根據預設,複製活動會停止複製資料,並在來源資料列與接收資料列不相容時傳回失敗。 若要讓複製成功,您可以設定複製活動略過並記錄不相容的資料列,並只複製相容的資料。 如需詳細資訊,請參閱複製活動容錯。

資料一致性驗證

當您將資料從來源移至目的地存放區時,複製活動會提供選項,讓您執行額外的資料一致性驗證,以確保資料不僅成功從來源複製到目的地存放區,而且還驗證來源與目的地存放區之間的一致性。 在資料移動期間發現不一致的檔案之後,您可以啟用容錯設定來略過不一致的檔案,藉此中止複製活動或繼續複製其餘部分。 您可以在複製活動中啟用工作階段記錄設定,以取得略過的檔案名稱。 如需詳細資訊,請參閱複製活動中的資料一致性驗證。

工作階段記錄

您可以記錄複製的檔名,這可協助您進一步確保資料不僅成功從來源複製到目的地存放區,而且透過檢閱複製活動工作階段記錄,來源和目的地存放區之間的一致性。 如需詳細資料,請參閱工作階段登入複製活動。

請參閱下列快速入門、教學課程和範例: