如何从ADFV2中的if活动引发错误?

时间:2018-10-15 22:20:37

标签: azure-data-factory-2

我有一个子管道,该子管道使用数据集从控制文件接收指令。这些说明定义了从哪个目录复制文件。

首先,此子管道通过源文件夹上的“获取元数据”活动检查文件是否存在。然后,如果从GetMetaData返回了一个或多个子项,它将执行一个子管道来处理数据。

在控件数据集中,还有一个必填的Y / N字段,这意味着如果文件夹或文件不存在,我可以忽略该错误。

如果该文件夹不存在,则GetMEtadata将失败。如果存在但没有文件,我得到0个子项。因此,文件或文件夹丢失(错误或0项)会发生2种不同的情况。

无论哪种情况,我都需要将GetMetaData的输出路由到IF,以检查是否需要该文件。如果不是,则消耗错误并返回。如果需要,请提出错误。

虽然我找不到找到错误的方法。同样重要的是,有没有一种替代方法可以更好地与ADF V2设计配合使用?

非常感谢, 马克。

5 个答案:

答案 0 :(得分:2)

我有类似的情况,我使用SqlStoreProcedure进行管理。

"storedProcedureName": "sp_executesql", "storedProcedureParameters": { "stmt": { "value": "Declare @err_msg NVARCHAR(150)SET @err_msg=N'Error occurred in this pipeline somehow somewhere something. Best regards. EXISTSCheers'RAISERROR(@err_msg,15,1)", "type": "string" } }

StoredProcedureName:sp_executesql

StoredProcedureParameter:stmt

值:声明@err_msg NVARCHAR(150)SET @ err_msg = N'此管道中的某个地方发生错误。最好的祝福。 EXISTSCheers'RAISERROR(@ err_msg,15,1)(当然,您可以更改错误文本:)

类型:字符串

希望这会有所帮助

答案 1 :(得分:2)

我使用“设置变量任务”来实现此目的。

在变量表达式中,我被零除。这引发了一个错误,可根据需要启动我的管道。我认为可以采用的最通用的方式。

"name": "Throw Error",
"description": "You can't throw an error in DF so I try to divide by zero. :)",
"type": "SetVariable",
"dependsOn": [],
"userProperties": [],
"typeProperties": {
   "variableName": "ThrowError",
   "value": {
      "value": "@div(1,0)",
      "type": "Expression"
   }
}

答案 2 :(得分:0)

我正在使用的解决方案是在API管理中创建一个模拟API,该API返回500个HTTP代码以及一条错误消息。有关如何执行此操作的更多详细信息,请参见:https://docs.microsoft.com/en-us/azure/api-management/mock-api-responses

从ADF管道内部,我使用Web Activity传入错误消息来调用此模拟API。

然后我可以看到失败的管道并出现预期的错误。

答案 3 :(得分:0)

我使用 Web Activity 并获取了一个不存在的 URL:www.notreal-nvlsuifhg9348h4932.com

(不过我确实喜欢 Chris Hume 的 Set 1/0 选项。可能会窃取它;))

答案 4 :(得分:0)

我发现抛出错误的最简单方法是对以下查询进行 SQL 查找:

THROW 99999, 'Error message thrown', 1

对我们来说,我们广泛使用 Azure 函数应用程序,因此我们创建了一个名为“ThrowError”的特殊函数,该函数会抛出一个错误,并将消息作为参数提供。仅当您已经使用 Azure Function Apps 时,这是最简单的,不值得只创建一个函数。

相关问题