如何解决在Azure数据工厂中保存触发器参数以更新最近修改的行
我目前正在尝试将滚动窗口触发器的windowStartTime和windowEndTime传递到数据流管道的参数中。根据[this forum] [1],我无法将触发器参数直接传递到管道中,因此使用[this guide] [2]我需要将以下 parameter code 块添加到触发器中将这两个变量传递到ADF>“管理”>“触发器”>“触发器”代码中的参数myWindowStart和myWindowEnd中:
{
"name": "trigger5","properties": {
"annotations": [],"runtimeState": "Stopped","pipeline": {
"pipelineReference": {
"referenceName": "pipeline1","type": "PipelineReference"
},"parameters": {
"MyWindowStart": {
"type": "Expression","value": "@{concat('output',formatDateTime(trigger().outputs.windowStartTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
},"MyWindowEnd": {
"type": "Expression",formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
}
}
},//redacted
}
但是,在按“确定”时,代码将进行编辑不保存。重新打开代码时,我所做的任何编辑都不会显示。
有什么想法吗?
完整上下文:我正尝试将翻滚窗口值传递给查询,以便根据该行的最后修改时间从数据库中提取行,并将这些行向上插入另一个数据库。
解决方法
关于这是为什么的任何想法?
为什么未保存您的编辑是因为您的编辑存在一些错误。
直接更改触发器的代码不会显示任何错误,保存失败是ADF的反馈,它告诉您编辑错误。
尝试遵循文档并检查错误输出:
https://docs.microsoft.com/en-us/azure/data-factory/parameters-data-flow
,弄清楚了!张贴在下面的任何人也坚持这一点。这涉及passing a system variable to the trigger's parameter和passings parameters from triggers to a dataset。
必须将翻转触发的开始和结束时间传递给触发参数,管道参数,数据流参数,数据源的SQL查询,以便仅提取在翻转窗口之间更新的行。执行时间范围。这样可以将最近的事务从一个SQL表插入另一个SQL表中。
管道设置:
创建2个字符串类型的参数。我将其命名为MyWindowStart和MyWindowEnd,并将其值分别设置为'@trigger()。outputs.MyWindowStart'和'@trigger()。outputs.MyWindowEnd'。这需要一些猜测才能正确。
创建一个数据流活动,该活动最终将具有2个参数(“ start”和“ end”,稍后在数据流活动中创建)。
分别将'start'和'end'的值设置为'@pipeline()。parameters.MyWindowStart'和'@pipeline()。parameters.MyWindowEnd'的管道表达式。
Tumbling trigger设置:
管线>触发器>新建/编辑>新建触发器>选择翻转窗口和其他详细信息>确定>触发器运行参数MyWindowStart作为'@trigger()。outputs.windowStartTime'和MyWindowEnd作为'@trigger()。outputs.windowEndTime '
upsert data flow活动中的源数据集设置:
我在数据流活动中创建了两个类型为“字符串”的参数(“开始”和“结束”),并将默认值设置为随机日期值。如果管道将其默认值设置为其他值,则这些默认值将不会传递到查询中。
查询使用引用数据流参数,并用双引号引起来,参数名称包含在'{$ -parameter name-}'
中花了几天时间使它正确,但是希望人们能发现它有用!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。