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

適用於:Azure Data Factory Azure Synapse Analytics

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

The role of the Copy activity

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

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

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

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

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

Copy activity overview

支援的資料存放區和格式

類別 資料存放區 支援作為來源 支援作為接收器 Azure IR 支援 自我裝載 IR 支援
Azure Azure Blob 儲存體
  Azure 認知搜尋索引
  Azure Cosmos DB (SQL API)
  適用於 MongoDB 的 Azure Cosmos DB API
  Azure 資料總管
  Azure Data Lake Storage Gen1
  Azure Data Lake Storage Gen2 \(部分機器翻譯\)
  適用於 MariaDB 的 Azure 資料庫
  適用於 MySQL 的 Azure 資料庫
  適用於 PostgreSQL 的 Azure 資料庫
  Azure Databricks Delta Lake
  Azure 檔案
  Azure SQL Database
  Azure SQL 受控執行個體
  Azure Synapse Analytics
  Azure 資料表儲存體
Database 適用於 Oracle 的 Amazon RDS
  適用於 SQL Server 的 Amazon RDS
  Amazon Redshift
  DB2
  Drill
  Google BigQuery
  Greenplum
  HBase
  Hive
  Apache Impala
  Informix
  MariaDB
  Microsoft Access
  MySQL
  Netezza
  Oracle
  Phoenix
  PostgreSQL
  Presto
  SAP Business Warehouse via Open Hub
  SAP Business Warehouse via MDX
  SAP HANA 只有ODBC 連接器和 SAP Hana ODBC 驅動程式才支援接收
  SAP Table
  Snowflake
  Spark
  SQL Server
  Sybase
  Teradata
  Vertica
NoSQL Cassandra
  Couchbase (預覽)
  MongoDB
  MongoDB Atlas
檔案 Amazon S3
  Amazon S3 相容儲存體
  檔案系統
  FTP
  Google Cloud Storage
  HDFS
  Oracle 雲端儲存空間
  SFTP
一般通訊協定 一般 HTTP
  泛型 OData
  一般 ODBC
  一般 REST
服務和應用程式 Amazon Marketplace Web Service
  Concur (預覽)
  Dataverse
  Dynamics 365
  Dynamics AX
  Dynamics CRM
  Google AdWords
  HubSpot
  Jira
  Magento (預覽)
  Marketo (預覽)
  Microsoft 365
  Oracle Eloqua (預覽)
  Oracle Responsys (預覽)
  Oracle Service Cloud (預覽)
  PayPal (預覽)
  QuickBooks (預覽)
  Salesforce
  Salesforce 服務雲端
  Salesforce Marketing Cloud
  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. 使用 複製活動 建立管線。 下一節提供範例。

Syntax

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

"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 Yes
輸入 指定您建立的資料集,指向來源資料。 複製活動只支援單一輸入。 Yes
輸出 指定您建立的資料集,指向接收資料。 複製活動僅支援單一輸出。
typeProperties 指定要設定複製活動的屬性。
source 指定複製來源類型和用於擷取資料的對應屬性。
For more information, see the "Copy activity properties" section in the connector article listed in Supported data stores and formats.
Yes
接收 指定複製接收類型和寫入資料的對應屬性。
For more information, see the "Copy activity properties" section in the connector article listed in Supported data stores and formats.
Yes
轉譯程式 指定從來源到接收的明確資料行對應。 當預設複製行為不符合您的需求時,就會套用這個屬性。
如需詳細資訊,請參閱 複製活動中架構對應
No
dataIntegrationUnits 指定量值,代表 Azure 整合運行 時間用於資料複製的電源量。 這些單位先前稱為雲端資料移動單位, (DMU) 。
如需詳細資訊,請參閱 資料整合單位
No
parallelCopies 指定從來源讀取資料並將資料寫入接收時,您希望複製活動使用的平行處理原則。
如需詳細資訊,請參閱 平行複製
No
保留 指定是否要在資料複製期間保留中繼資料/ACL。
如需詳細資訊,請參閱 保留中繼資料
No
enableStaging
stagingSettings
指定是否要在 Blob 儲存體中暫存過渡資料,而不是直接從來源將資料複製到接收。
如需實用案例和設定詳細資料的相關資訊,請參閱 分段複製
No
enableSkipIncompatibleRow
redirectIncompatibleRowSettings
選擇當您將資料從來源複製到接收時如何處理不相容的資料列。
如需詳細資訊,請參閱 容錯

監視

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

增量複製

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

效能和微調

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

從上次失敗的執行繼續

當您以檔案為基礎的存放區之間以二進位格式複製大量檔案時,複製活動支援從上次失敗執行繼續,並選擇將資料夾/檔案階層從來源保留到接收,例如將資料從 Amazon S3 遷移至Azure Data Lake Storage Gen2。 它適用于下列檔案型連接器:Amazon S3、Amazon S3Compatible 儲存體Azure BlobAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2、Azure 檔案儲存體檔案系統FTPGoogle Cloud 儲存體HDFSOracle Cloud 儲存體SFTP

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

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

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

    Copy resume

有幾點需要注意:

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

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

保留中繼資料與資料

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

結構描述和資料類型對應

如需複製活動如何將來源資料對應至接收的資訊,請參閱架構和資料類型對應

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

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

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

您可以在複製活動來源索引標籤上找到下列組態。您也可以使用您定義的資料行名稱,一如往常地對應複製活動 架構對應 中的其他資料行。

Add additional columns in copy activity

提示

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

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

屬性 描述 必要
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>"
            }
        }
    }
]

自動建立接收資料表

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

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

Create sink tables

容錯

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

資料一致性驗證

當您將資料從來源移至目的地存放區時,複製活動會提供一個選項,讓您執行額外的資料一致性驗證,以確保資料不只成功從來源複製到目的地存放區,也會驗證在來源和目的地存放區之間保持一致。 在資料移動期間找到不一致的檔案之後,您可以中止複製活動,或讓容錯設定略過不一致的檔案,繼續複製其餘檔案。 您可以在複製活動中啟用會話記錄設定,以取得略過的檔案名。 如需詳細資訊,請參閱 複製活動中的資料一致性驗證

會話記錄

您可以記錄複製的檔案名,這可協助您進一步確保資料不只成功從來源複製到目的地存放區,也可以藉由檢閱複製活動會話記錄,在來源和目的地存放區之間保持一致。 如需詳細資訊,請參閱 會話登入複製活動

後續步驟

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