我正在使用 ADFv2,我想使用在数据集级别定义的一些可选参数。我没有发现是否可以实现。
如果我在数据集中定义一个参数(在管道级别定义一个参数并将两者连接起来以便管道将值传递给数据集级别的参数之后)当我手动运行管道并且不指定我得到的值错误
No value provided for Parameter 'parameter'
我正在使用 ADFv2,我想使用在数据集级别定义的一些可选参数。我没有发现是否可以实现。
如果我在数据集中定义一个参数(在管道级别定义一个参数并将两者连接起来以便管道将值传递给数据集级别的参数之后)当我手动运行管道并且不指定我得到的值错误
No value provided for Parameter 'parameter'
仅适用于任何可能想要做这样的事情的人。至少在今天之前,我们不能有管道的可选参数,这是根据 ADF 产品团队通过 Azure 中的支持票告诉我的内容而设计的。
我最近遇到了这个问题,这里提供的答案并不能完全满足我的需求。我们使用 ADF 管道的方式依赖于要设置的参数,如果您需要手动运行它或者如果由触发器运行,则为空,以便它们可以动态设置为触发器的日期/时间活性。
在我们的管道中,我们有如下检查。
@if(empty(string(pipeline().parameters.FolderDate)),
formatDateTime(utcnow(),'yyyyMMdd'),
pipeline().parameters.FolderDate)
事实证明,如果您将参数提供为小写 null,那么我的管道将按预期工作。
尝试@coalesce(null)
作为参数的表达式。
@fgbaezp,这是一个较晚的答案,但您可以使用动态内容为参数分配一个空字符串,例如 @toLower('')
我们有一个 blob csv 文件的数据集。数据集具有参数化的文件名,以及容器和目录。
当此数据集是接收器时,我们可能希望指定要写入的文件,或将其留空并让 Azure 为我们提供 data_xxxx.csv 文件名。
当此数据集是源时,我们可能希望指定打开哪个文件,或者将其留空以使用通配符选项(目录中的所有 csv)。
在这种有限的意义上,我们希望文件名参数是可选的。
但是您不能在 UI 中将数据集参数字段留空,否则管道将无法编译(验证)。
在那些我们希望文件名为空的情况下,我们使用上面建议的技巧来注入一个空字符串(我们使用@coalesce(pipeline().parameters.filename,''
)并在触发管道时将文件名参数留空。
如果您不为参数指定值,您会期望什么?如果您有该参数的默认值,则可以在定义参数时指定默认值。
"parameters": {
"parameter1": {
"type": "String",
"defaultValue": "defaultValue1"
}
}