如何将 JSON 传递到 Azure 数据工厂 V2 中具有嵌入式动态内容的 Azure 函数
How to pass JSON into an Azure Function with embedded dynamic content in Azure Data Factory V2
在 ADFv2 中,我正在查找日期并将其传递给 Azure 函数。我可以像这样传递数据:
@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed
但是,如果我将其嵌入 JSON 字符串中,如下所示:
{"lastProcessDate":"@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed"}
我得到这个 {"lastProcessDate":"@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed"} 而不是 {"lastProcessDate":"2019-11 -13"} 作为函数的输入。
最后我尝试使用一个参数也没有成功。
@concat('{"lastProcessDate":"', string(pipeline().parameters.lastProcessDate), '"}')
这里的问题是没有设置参数。我这样设置参数:
@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed
然而,这是一个默认值,永远不会动态更新。如果我可以更新此字符串,则 @concat 方法将起作用,但无法弄清楚如何动态更新管道的参数。
另一个选项可能是管道变量,但我不知道如何引用该变量。
如何将字符串与动态内容连接在一起?
我能够通过创建第二个管道来实现它。这不是最优的,但适用于 运行 遇到同样问题的人。希望有人能找到比这更好的解决方案!
从第一个管道开始,我用这个设置了第二个管道参数:
@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed
我将第二个管道中的参数命名为 lastProcessDate,这样就可以了:
@concat('{"lastProcessDate":"', string(pipeline().parameters.lastProcessDate), '"}')
这不是直截了当的,也不可能是 Microsoft 期望我们解决这个问题的方式!
我认为您缺少的是,当您在 json 字符串中使用 at 符号“@”时,您应该在它后面加上大括号“{”
在您的示例中,它看起来像这样:
{"lastProcessDate":"@{activity('GetLastDateProcessed').output.firstRow.LastDateProcessed}"}
我是用命令实现的。
{
"storedprocedure":"storedProcName",
"params":"@{variables('currentDt')}"
}
在 ADFv2 中,我正在查找日期并将其传递给 Azure 函数。我可以像这样传递数据:
@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed
但是,如果我将其嵌入 JSON 字符串中,如下所示:
{"lastProcessDate":"@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed"}
我得到这个 {"lastProcessDate":"@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed"} 而不是 {"lastProcessDate":"2019-11 -13"} 作为函数的输入。
最后我尝试使用一个参数也没有成功。
@concat('{"lastProcessDate":"', string(pipeline().parameters.lastProcessDate), '"}')
这里的问题是没有设置参数。我这样设置参数:
@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed
另一个选项可能是管道变量,但我不知道如何引用该变量。
如何将字符串与动态内容连接在一起?
我能够通过创建第二个管道来实现它。这不是最优的,但适用于 运行 遇到同样问题的人。希望有人能找到比这更好的解决方案!
从第一个管道开始,我用这个设置了第二个管道参数:
@activity('GetLastDateProcessed').output.firstRow.LastDateProcessed
我将第二个管道中的参数命名为 lastProcessDate,这样就可以了:
@concat('{"lastProcessDate":"', string(pipeline().parameters.lastProcessDate), '"}')
这不是直截了当的,也不可能是 Microsoft 期望我们解决这个问题的方式!
我认为您缺少的是,当您在 json 字符串中使用 at 符号“@”时,您应该在它后面加上大括号“{”
在您的示例中,它看起来像这样:
{"lastProcessDate":"@{activity('GetLastDateProcessed').output.firstRow.LastDateProcessed}"}
我是用命令实现的。
{
"storedprocedure":"storedProcName",
"params":"@{variables('currentDt')}"
}