複製資料,並在成功或失敗時傳送電子郵件通知
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
在本教學課程中,您會建立 Data Factory 管道來展示部分的控制流程功能。 這個管道只是簡單地從 Azure Blob 儲存體中的一個容器複製到相同儲存體帳戶中的另一個容器。 如果複製活動成功,管線會在成功電子郵件中傳送成功複製作業的詳細資料 (例如寫入的資料量)。 如果複製活動失敗,管線會在失敗電子郵件中傳送複製失敗的詳細資料 (例如錯誤訊息)。 在整個教學課程中,您會看到如何傳遞參數。
案例的高階概觀:
您會在本教學課程中執行下列步驟:
- 建立資料處理站。
- 建立 Azure 儲存體連結服務。
- 建立 Azure Blob 資料集
- 建立其中包含複製活動和網路活動的管線
- 將活動的輸出傳送至後續的活動
- 利用參數傳遞和系統變數
- 啟動管道執行
- 監視管道和活動執行
本教學課程使用 Azure 入口網站。 您可以使用其他機制來與 Azure Data Factory 互動,請參閱目錄中的「快速入門」。
必要條件
- Azure 訂用帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
- Azure 儲存體帳戶。 您會使用 Blob 儲存體作為來源資料存放區。 如果您沒有 Azure 儲存體帳戶,請參閱建立儲存體帳戶一文,按照步驟來建立帳戶。
- Azure SQL Database。 您會使用資料庫作為接收資料存放區。 如果您在 Azure SQL Database 中沒有資料庫,請參閱在 Azure SQL Database 中建立資料庫一文,按照步驟建立資料庫。
建立 Blob 資料表
啟動 [記事本]。 複製下列文字,並在磁碟上儲存為 input.txt 檔案。
John,Doe Jane,Doe
使用 Azure 儲存體總管之類的工具來執行以下步驟:
- 建立 adfv2branch 容器。
- 在 adfv2branch 容器中建立 input 資料夾。
- 將 input.txt 檔案上傳至容器。
建立電子郵件工作流程端點
若要從管線觸發電子郵件的傳送,您需要使用 Azure Logic Apps 來定義工作流程。 如需建立邏輯應用程式工作流程的詳細資訊,請參閱建立範例取用邏輯應用程式工作流程。
成功電子郵件工作流程
建立名為 CopySuccessEmail
的取用邏輯應用程式工作流程。 新增名為當收到 HTTP 要求的「要求」觸發程序,並新增名為傳送電子郵件的 [Office 365 Outlook] 動作。 如果出現提示,請登入您的 Office 365 Outlook 帳戶。
針對 [要求] 觸發程序,使用下列 JSON 填入 [要求本文 JSON 結構描述] 方塊:
{
"properties": {
"dataFactoryName": {
"type": "string"
},
"message": {
"type": "string"
},
"pipelineName": {
"type": "string"
},
"receiver": {
"type": "string"
}
},
"type": "object"
}
工作流程設計工具中的 [要求] 觸發程序看起來應該像下圖:
對於 [傳送電子郵件] 動作,利用要求本文 JSON 結構描述中傳遞的屬性,以自訂您要如何格式化電子郵件。 以下是範例:
儲存工作流程。 請記下成功電子郵件工作流程的 HTTP Post 要求 URL:
//Success Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000
失敗電子郵件工作流程
請遵循相同的步驟,建立另一個名為 CopyFailEmail
的邏輯應用程式工作流程。 在 [要求] 觸發程序中,要求本文 JSON 架構值式相同的。 變更電子郵件的格式 (例如 Subject
),以調整為適合失敗電子郵件。 以下是範例:
儲存工作流程。 請記下失敗電子郵件工作流程的 HTTP Post 要求 URL:
//Fail Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000
您現在應該有兩個工作流程 URL:
//Success Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000
//Fail Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000
建立資料處理站
啟動 Microsoft Edge 或 Google Chrome 網頁瀏覽器。 目前,只有 Microsoft Edge 和 Google Chrome 網頁瀏覽器支援 Data Factory UI。
展開左上方的功能表,然後選取 [建立資源]。 然後選取 [整合]>>[Data Factory]:
在 [新增資料處理站] 頁面中,輸入 ADFTutorialDataFactory 作為 [名稱]。
Azure Data Factory 的名稱必須是 全域唯一的。 如果您收到錯誤,請變更 Data Factory 名稱 (例如 yournameADFTutorialDataFactory),然後試著重新建立。 請參閱 Data Factory - 命名規則一文,以了解 Data Factory 成品的命名規則。
Data factory 名稱 "ADFTutorialDataFactory" 無法使用。
選取您要在其中建立資料處理站的 Azure 訂用帳戶。
針對 [資源群組],請執行下列其中一個步驟︰
選取 [使用現有的] ,然後從下拉式清單選取現有的資源群組。
選取 [建立新的] ,然後輸入資源群組的名稱。
若要了解資源群組,請參閱 使用資源群組管理您的 Azure 資源。
針對 [版本] 選取 [V2]。
選取 Data Factory 的 [位置] 。 只有受到支援的位置會顯示在下拉式清單中。 資料處理站所使用的資料存放區 (Azure 儲存體、Azure SQL Database 等) 和計算 (HDInsight 等) 可位於其他區域。
選取 [釘選到儀表板] 。
按一下 [建立]。
建立完成之後,您會看到如圖中所示的 [Data Factory] 頁面。
按一下 [開啟 Azure Data Factory Studio] 圖格,以在另一個索引標籤中啟動 Azure Data Factory 使用者介面 (UI)。
建立新管線
在此步驟中,您會建立具有一個複製活動與兩個 Web 活動的管線。 您會使用下列功能來建立管線:
- 管線參數,該參數由資料集所存取。
- Web 活動,可叫用邏輯應用程式工作流程來傳送成功/失敗電子郵件。
- 將一個活動與另一個活動連線 (成功和失敗時)
- 使用一個活動的輸出作為後續活動的輸入
在 Data Factory UI 的首頁中,按一下 [協調] 圖格。
在管線的 [屬性] 視窗中,切換至 [參數] 索引標籤,然後使用 [新增] 按鈕即可新增 String 類型的下列三個參數:sourceBlobContainer、sinkBlobContainer 和 receiver。
- sourceBlobContainer - 管線中由來源 Blob 資料集所取用的參數。
- sinkBlobContainer - 管線中由接收 Blob 資料集所取用的參數
- 接收者 - 管線中的兩項 Web 活動會使用此參數,將成功或失敗電子郵件傳送給其電子郵件地址由此參數指定的接收者。
在 [活動] 工具箱中,搜尋 [複製] 並將 [複製] 活動拖放至管線設計工具介面。
選取您拖曳到管線設計工具介面上的 [複製] 活動。 在底部 [複製] 活動的 [屬性] 視窗中,切換到 [來源] 索引標籤,然後按一下 [+ 新增]。 您在此步驟中為複製活動建立來源資料集。
在 [新增資料集] 視窗中,選取頂端的 [Azure] 索引標籤,接著選擇 [Azure Blob 儲存體],然後選取 [繼續]。
在 [選取格式] 視窗中,選擇 [DelimitedText],然後選取 [繼續]。
您會看到標題為 [設定屬性] 的新索引標籤。 將資料集的名稱變更為 SourceBlobDataset。 選取 [連結服務] 下拉式清單,然後選擇 [+新增] 以建立來源資料集的新連結服務。
您會看到 [新增連結服務 ] 視窗,您可在其中填寫連結服務的必要屬性。
在 [新增連結服務] 視窗中,完成下列步驟:
- 輸入 AzureStorageLinkedService 作為 [名稱]。
- 針對 [儲存體帳戶名稱] 選取您的 Azure 儲存體帳戶。
- 按一下 [建立]。
在接下來顯示的 [設定屬性] 視窗中,選取 [開啟此資料集] 以輸入檔案名稱的參數化值。
針對資料夾輸入
@pipeline().parameters.sourceBlobContainer
,針對檔案名稱輸入emp.txt
。切換回 [管線] 索引標籤 (或按一下左側樹狀檢視中的管線),然後選取設計工具上的 [複製] 活動。 確認已針對 [來源資料集] 選取您的新資料集。
在 [屬性] 視窗中,切換至 [接收] 索引標籤,然後為 [接收資料集] 按一下 [+ 新增]。 您在此步驟中為複製活動建立的接收資料集與您建立來源資料集的方式類似。
在 [新增資料集] 視窗中,選取 [Azure Blob 儲存體]並按一下 [繼續],然後在 [選取格式] 視窗上再次選取 [DelimitedText],再次按一下 [繼續]。
在資料集的 [設定屬性] 頁面中,輸入 SinkBlobDataset 作為 [名稱],然後針對 LinkedService選取 [AzureStorageLinkedService]。
展開 [屬性] 頁面的 [進階] 區段,然後選取 [開啟此資料集]。
在資料集 [連線] 索引標籤上,編輯 [ 檔案路徑]。 針對資料夾輸入
@pipeline().parameters.sinkBlobContainer
,並針對檔案名稱輸入@concat(pipeline().RunId, '.txt')
。 運算式會使用目前的管線執行識別碼供檔案名稱使用。 如需支援的系統變數和運算式清單,請參閱系統變數和運算式語言。切換回頂端的 [管線] 索引標籤。 在搜尋方塊中搜尋 [Web],並將 [Web] 活動拖放至管線設計工具介面。 將活動的名稱設定為 SendSuccessEmailActivity。 「網路活動」允許呼叫任何 REST 端點。 如需活動的詳細資訊,請參閱網路活動。 這個管道會使用「網路活動」來呼叫 Logic Apps 電子郵件工作流程。
從 [一般] 索引標籤切換至 [設定] 索引標籤,並執行下列步驟:
針對 [URL],指定傳送成功電子郵件之邏輯應用程式工作流程的 URL。
針對 [方法] 選取 [POST]。
按一下 [標頭] 區段中的 [+ 新增標頭] 連結。
新增標頭 [Content-type] 並將它設定為 application/json。
為 [主體] 指定下列 JSON。
{ "message": "@{activity('Copy1').output.dataWritten}", "dataFactoryName": "@{pipeline().DataFactory}", "pipelineName": "@{pipeline().Pipeline}", "receiver": "@pipeline().parameters.receiver" }
訊息主體包含下列屬性:
訊息 - 傳遞
@{activity('Copy1').output.dataWritten
的值。 存取先前複製活動的屬性,並傳遞 dataWritten 的值。 對於失敗案例,請傳遞錯誤輸出,而不是@{activity('CopyBlobtoBlob').error.message
。Data Factory 名稱 - 傳遞
@{pipeline().DataFactory}
的值。這是系統變數,可讓您存取對應的資料處理站名稱。 如需系統變數的清單,請參閱系統變數一文。管線名稱 - 傳遞
@{pipeline().Pipeline}
的值。 這也是系統變數,可讓您存取對應的管道名稱。接收者 - 傳遞 "@pipeline().parameters.receiver") 的值。 存取管道參數。
將複製活動旁的綠色核取方塊按鈕拖放在 Web 活動上,以將 [複製] 活動連線至 [Web] 活動。
將另一個 [Web] 活動從 [活動] 工具箱拖放至管線設計工具表面,並將 [名稱] 設定為 SendFailureEmailActivity。
切換至 [設定] 索引標籤,並執行下列步驟:
針對 [URL],指定傳送失敗電子郵件之邏輯應用程式工作流程的 URL。
針對 [方法] 選取 [POST]。
按一下 [標頭] 區段中的 [+ 新增標頭] 連結。
新增標頭 [Content-type] 並將它設定為 application/json。
為 [主體] 指定下列 JSON。
{ "message": "@{activity('Copy1').error.message}", "dataFactoryName": "@{pipeline().DataFactory}", "pipelineName": "@{pipeline().Pipeline}", "receiver": "@pipeline().parameters.receiver" }
選取管線設計工具中 [複製] 活動右側的紅色 X 按鈕,然後將其拖放到您剛建立的 [SendFailureEmailActivity]。
若要驗證管線,按一下工具列上的 [驗證] 按鈕。 按一下 >> 按鈕,以關閉 [管線驗證輸出] 視窗。
若要將實體 (資料集、管線等等) 發佈至 Data Factory 服務,請選取 [全部發佈]。 請靜待 [發佈成功] 訊息顯示。
觸發成功的管線執行
若要觸發管狀執行,按一下工具列上的 [觸發],然後按一下 [立即觸發]。
在 [管線執行] 視窗中,執行下列步驟:
輸入 adftutorial/adfv2branch/input 作為 sourceBlobContainer 參數。
輸入 adftutorial/adfv2branch/output 作為 sourceBlobContainer 參數。
輸入接收者的電子郵件地址。
按一下 [完成]
監視成功的管線執行
若要監視管線執行,請切換到左側的 [監視] 索引標籤。 您會看到由您手動觸發的管線執行。 使用 [重新整理] 按鈕可重新整理清單。
若要檢視與此管線執行相關聯的活動執行,請按一下 [動作] 資料行中的第一個連結。 您可以按一下頂端的 [管線],來切換回到前一個檢視。 使用 [重新整理] 按鈕可重新整理清單。
觸發失敗的管線執行
切換至左側的 [編輯] 索引標籤。
若要觸發管狀執行,按一下工具列上的 [觸發],然後按一下 [立即觸發]。
在 [管線執行] 視窗中,執行下列步驟:
- 輸入 adftutorial/dummy/input 作為 sourceBlobContainer 參數。 請確定 adftutorial 容器中不存在 dummy 資料夾。
- 輸入 adftutorial/dummy/output 作為 sourceBlobContainer 參數。
- 輸入接收者的電子郵件地址。
- 按一下完成。
監視失敗的管線執行
若要監視管線執行,請切換到左側的 [監視] 索引標籤。 您會看到由您手動觸發的管線執行。 使用 [重新整理] 按鈕可重新整理清單。
按一下管線執行的 [錯誤] 連結以查看錯誤的詳細資料。
若要檢視與此管線執行相關聯的活動執行,請按一下 [動作] 資料行中的第一個連結。 使用 [重新整理] 按鈕可重新整理清單。 請注意,管線中的複製活動失敗了。 Web 活動成功地將失敗電子郵件傳送給指定收件者。
按一下 [動作] 資料行中的 [錯誤] 連結,以查看錯誤的詳細資料。
相關內容
在本教學課程中,您已執行下列步驟:
- 建立資料處理站。
- 建立 Azure 儲存體連結服務。
- 建立 Azure Blob 資料集
- 建立包含複製活動和網路活動的管道
- 將活動的輸出傳送至後續的活動
- 利用參數傳遞和系統變數
- 啟動管道執行
- 監視管道和活動執行
您現在可以繼續閱讀<概念>一節,以了解 Azure Data Factory 的詳細資訊。