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

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費啟動新的試用版

在 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 AI 搜尋服務索引
  Azure Cosmos DB for NoSQL
  Azure Cosmos DB for MongoDB
  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 Amazon RDS for Oracle
  Amazon RDS for SQL Server
  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
  DynamicsAX
  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. 建立具有複製活動的管線。 下一節提供範例。

語法

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

"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>
            }
        }
    }
]

語法詳細資料

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

監視

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

增量複製

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

效能和微調

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

從上次失敗的執行繼續

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

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

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

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

    Copy resume

請注意以下幾點:

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

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

保留中繼資料與資料

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

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

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

結構描述和資料類型對應

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

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

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

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

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

Add additional columns in copy activity

提示

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

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

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

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

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

範例:

"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。

Create sink tables

容錯

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

資料一致性驗證

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

工作階段記錄

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

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