[英]how to get the name of the activity dynamically in ADF
我有一個管道,它采用所有階段的名稱並在筆記本中使用它,如何在 ADF 中動態獲取每個階段的名稱並使用它? 如何實現這種情況?
目前, ADF 中無法動態獲取活動名稱。 但是,由於您想要失敗的活動名稱,我們可以從錯誤本身(在這種情況下)中獲取名稱。
請按照以下演示進行操作:
首先,將您的主管道視為子管道,並使用父管道執行它,並使用父管道獲取子管道中的活動名稱和錯誤。
這是我的示例子管道(主管道)。 在此,為了創建一個錯誤,我在名為My Copy Data的復制活動中給出了錯誤的源文件路徑。
使用 Set Variable 存儲錯誤和在父管道中執行管道活動后生成錯誤的活動名稱。
@activity('Execute Pipeline1').error.message
這會給你像Operation on target activity failed
這樣的錯誤。 通過使用它,我們可以在下一個變量中獲取活動的名稱。
為錯誤設置變量活動:
為活動名稱設置變量:
使用此表達式獲取活動名稱。
@substring(variables('error'), add(indexOf(variables('error'),'target'),7), sub(indexOf(variables('error'),'failed'),add(indexOf(variables('error'),'target'),7)))
Databricks 筆記本活動:
創建一個數據塊筆記本活動並將這些變量作為參數傳遞給它並將其存儲在增量表中。
databricks 筆記本中的代碼:
activity_name=dbutils.widgets.get("activity_name")
error=dbutils.widgets.get("error")
#Create a delta table before this and append these values on delta table for
every failure
print(activity_name)
print(error)
執行后的 Databricks 作業:
您可以在筆記本活動之后使用邏輯應用獲取郵件,並使用 web 活動將活動名稱和錯誤消息傳遞給它。
首先按照Microsoft 官方文檔創建一個郵件邏輯應用程序。
然后,在 web 活動和正文中給出邏輯應用程序的 URL,如下所示。
{
"message" : "The failed activity in your pipeline is @{variables('activityname')}
and This is the error message @{variables('error')}.",
"dataFactoryName" : "@{pipeline().DataFactory}",
"pipelineName" : "@{pipeline().Pipeline}",
"receiver" : "@{pipeline().parameters.reciever}"
}
現在,您可以收到子管道每次故障的郵件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.