適用於:
Azure Data Factory
Azure Synapse Analytics
提示
Data Factory in Microsoft Fabric 是下一代的 Azure Data Factory,擁有更簡單的架構、內建 AI 及新功能。 如果你是資料整合新手,建議先從 Fabric Data Factory 開始。 現有的 ADF 工作負載可升級至 Fabric,以存取資料科學、即時分析與報告等新能力。
要將 Oracle Server、Netezza、Teradata 或 SQL Server 的資料倉儲資料複製到 Azure Synapse Analytics,你必須從多個資料表載入大量資料。 通常,資料必須在每個資料表中進行分割,如此即可從單一資料表使用多個執行緒平行載入資料列。 本文描述要在這些案例中使用的範本。
注意
如果你想從資料量較少的資料表複製資料到Azure Synapse Analytics,使用 Azure Data Factory 複製資料工具會更有效率。 本文中所述範本其範圍遠超出該案例所需的內容。
關於此解決方案範本
此範本會擷取要從外部控制資料表複製的來源資料庫分割區清單。 然後,這段程式碼會遍歷來源資料庫中的每個分割區,並將資料複製到目的地。
範本包含三個活動:
- 查閱會從外部控制資料表擷取確定資料庫分割區的清單。
- ForEach 從 Lookup 活動取得分割區清單,並將每個分割區遍歷到 複製活動。
- [複製] 會從來源資料庫存放區將每個分割區複製到目的地存放區。
範本會定義下列參數:
- Control_Table_Name 是外部控制資料表,其用來儲存來源資料庫的分割區清單。
- Control_Table_Schema_PartitionID 是外部控制資料表中的資料行名稱,其用來儲存每個分割區識別碼。 請確定來源資料庫中每個分割區其分割區識別碼是唯一的。
- Control_Table_Schema_SourceTableName 是外部控制資料表,其用來儲存來源資料庫中的每個資料表名稱。
- Control_Table_Schema_FilterQuery 是外部控制資料表中的資料行名稱,用來儲存篩選查詢以取得來源資料庫中每個分割區的資料。 例如,若您依年份來分割資料,則每個資料列中儲存的查詢可能類似於 ‘select * from datasource where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''。
- Data_Destination_Folder_Path 是資料被複製到目的地儲存的路徑(適用於你選擇的目的地是「檔案系統」或「Azure Data Lake Storage Gen1」)。
- Data_Destination_Container 是目的地存放區中資料複製目標的根資料夾路徑。
- Data_Destination_Directory 是根目錄下將資料複製到目的地存放區的目錄路徑。
最後三個參數會定義目的地存放區的路徑,只有在您所選目的地是檔案型儲存體時,才會顯示這些參數。 如果你選擇「Azure Synapse Analytics」作為目的地儲存庫,這些參數就不是必須的。 但 Azure Synapse Analytics 中的資料表名稱和結構必須與來源資料庫中的相同。
如何使用此解決方案範本
在 SQL Server 或 Azure SQL Database 建立一個控制表,來儲存來源資料庫分割區清單以便批量複製。 在下列範例中,來源資料庫中有五個分割區。 三個分割區用於 datasource_table,兩個分割區則用於 project_table。 資料行 LastModifytime 是用來分割來源資料庫中資料表 datasource_table 的資料。 用來讀取第一個分割區的查詢為 'select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''。 您可使用類似查詢來讀取其他分割區的資料。
Create table ControlTableForTemplate ( PartitionID int, SourceTableName varchar(255), FilterQuery varchar(255) ); INSERT INTO ControlTableForTemplate (PartitionID, SourceTableName, FilterQuery) VALUES (1, 'datasource_table','select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''), (2, 'datasource_table','select * from datasource_table where LastModifytime >= ''2016-01-01 00:00:00'' and LastModifytime <= ''2016-12-31 23:59:59.999'''), (3, 'datasource_table','select * from datasource_table where LastModifytime >= ''2017-01-01 00:00:00'' and LastModifytime <= ''2017-12-31 23:59:59.999'''), (4, 'project_table','select * from project_table where ID >= 0 and ID < 1000'), (5, 'project_table','select * from project_table where ID >= 1000 and ID < 2000');移至 從資料庫進行大量複製 範本。 建立與外部控制資料表 (在步驟 1 中所建立) 的新連線。
建立與來源資料庫 (資料複製來源) 的新連線。
建立與您正在將資料複製至之目的地資料存放區的新連線。
選取使用此範本。
您會看到管線,如下列範例所示:
選取 [偵錯],輸入 [參數],然後選取 [完成]。
您會看到類似下列範例的結果:
(可選)如果你選擇「Azure Synapse Analytics」作為資料目的地,你必須依照 Azure Synapse Analytics Polybase 的要求,輸入 Azure Blob 儲存的連線以進行暫存。 此範本會自動為 Blob 儲存體產生容器路徑。 請在管線執行之後,檢查容器是否已建立。