在 Azure 数据工厂中保存触发器参数以更新最近修改的行
Saving trigger parameters in Azure Data Factory to upsert recently modified rows
我目前正在尝试将翻滚 window 触发器的 windowStartTime 和 windowEndTime 传递到数据流管道的参数中。根据 [this forum][1],我无法将触发器参数直接传递到管道中,因此使用 [this guide][2] 我需要添加以下 parameter code 进入触发器将两个变量传递到参数 myWindowStart 和 myWindowEnd in ADF>Manage>Triggers>Trigger code:
{
"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",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
}
}
},
//redacted
}
但是,当按下 'OK' 时,代码编辑 不保存 。当我重新打开代码时,我所做的编辑 none 显示出来。
想知道这是为什么吗?
完整上下文:我正在尝试将翻滚的 window 值传递到查询中,以便根据上次修改该行的时间从数据库中提取行,并将这些行插入到另一个数据库中.
Any thoughts as to why this is?
为什么你的编辑没有被保存是因为你的编辑有一些错误。
直接修改trigger代码不会报错,保存失败是ADF反馈的,告诉你编辑错误
尝试按照文档查看错误输出:
https://docs.microsoft.com/en-us/azure/data-factory/parameters-data-flow
想通了!在下面发布任何坚持这一点的人。这涉及passing a system variable to the trigger's parameter and passings parameters from triggers to a dataset.
翻滚触发器开始和结束时间必须传递给触发器参数,传递给管道参数,传递给数据流参数,传递给数据源的SQL查询,以便只提取那些行在翻滚 window 的执行时间范围内更新。这会将最近的交易从 SQL table 更新到另一个 SQL table.
管道设置:
创建2个字符串类型的参数。我将我的命名为 MyWindowStart 和 MyWindowEnd,并将值分别设置为“@trigger().outputs.MyWindowStart”和“@trigger().outputs.MyWindowEnd”。这需要一些猜测才能正确。
创建一个最终将有 2 个参数的数据流 activity(稍后在数据流 activity 中创建的 'start' 和 'end')。
将'start'和'end'的值分别设置为'@pipeline().parameters.MyWindowStart'和'@pipeline().parameters.MyWindowEnd'的管道表达式.
Tumbling trigger 设置:
Pipeline>Trigger>New/Edit>New trigger>select Tumbling Window and other details>OK>Trigger 运行 Parameters MyWindowStart as '@trigger().outputs.windowStartTime' and MyWindowEnd as '@trigger().outputs.windowEndTime'
upsert data flow中的源数据集设置activity:
我在数据流 activity 中创建了两个 'string' 类型的参数('start' 和 'end'),并将默认值设置为随机日期值。如果管道将它们的值设置为其他值,这些默认值将不会传递到查询中。
查询使用引用数据流参数,用双引号括起来,参数名用'{$ -parameter name-}'包裹
我花了几天时间才弄好,但希望人们觉得这有用!
我目前正在尝试将翻滚 window 触发器的 windowStartTime 和 windowEndTime 传递到数据流管道的参数中。根据 [this forum][1],我无法将触发器参数直接传递到管道中,因此使用 [this guide][2] 我需要添加以下 parameter code 进入触发器将两个变量传递到参数 myWindowStart 和 myWindowEnd in ADF>Manage>Triggers>Trigger code:
{
"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",
"value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
}
}
},
//redacted
}
但是,当按下 'OK' 时,代码编辑 不保存 。当我重新打开代码时,我所做的编辑 none 显示出来。
想知道这是为什么吗?
完整上下文:我正在尝试将翻滚的 window 值传递到查询中,以便根据上次修改该行的时间从数据库中提取行,并将这些行插入到另一个数据库中.
Any thoughts as to why this is?
为什么你的编辑没有被保存是因为你的编辑有一些错误。
直接修改trigger代码不会报错,保存失败是ADF反馈的,告诉你编辑错误
尝试按照文档查看错误输出:
https://docs.microsoft.com/en-us/azure/data-factory/parameters-data-flow
想通了!在下面发布任何坚持这一点的人。这涉及passing a system variable to the trigger's parameter and passings parameters from triggers to a dataset.
翻滚触发器开始和结束时间必须传递给触发器参数,传递给管道参数,传递给数据流参数,传递给数据源的SQL查询,以便只提取那些行在翻滚 window 的执行时间范围内更新。这会将最近的交易从 SQL table 更新到另一个 SQL table.
管道设置:
创建2个字符串类型的参数。我将我的命名为 MyWindowStart 和 MyWindowEnd,并将值分别设置为“@trigger().outputs.MyWindowStart”和“@trigger().outputs.MyWindowEnd”。这需要一些猜测才能正确。
创建一个最终将有 2 个参数的数据流 activity(稍后在数据流 activity 中创建的 'start' 和 'end')。
将'start'和'end'的值分别设置为'@pipeline().parameters.MyWindowStart'和'@pipeline().parameters.MyWindowEnd'的管道表达式.
Tumbling trigger 设置:
Pipeline>Trigger>New/Edit>New trigger>select Tumbling Window and other details>OK>Trigger 运行 Parameters MyWindowStart as '@trigger().outputs.windowStartTime' and MyWindowEnd as '@trigger().outputs.windowEndTime'
upsert data flow中的源数据集设置activity:
我在数据流 activity 中创建了两个 'string' 类型的参数('start' 和 'end'),并将默认值设置为随机日期值。如果管道将它们的值设置为其他值,这些默认值将不会传递到查询中。
查询使用引用数据流参数,用双引号括起来,参数名用'{$ -parameter name-}'包裹
我花了几天时间才弄好,但希望人们觉得这有用!