[英]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), '"}')
這不是直截了當的,不可能是微軟期望我們解決這個問題的方式!
我認為您缺少的是,當您在 json 字符串中使用 at-sign '@' 時,您應該在它后面加上一個大括號 '{'
在您的示例中,它看起來像這樣:
{"lastProcessDate":"@{activity('GetLastDateProcessed').output.firstRow.LastDateProcessed}"}
這是來源(在評論中找到): https : //azure.microsoft.com/en-us/blog/azure-functions-now-supported-as-a-step-in-azure-data-factory-管道/#:~:text=Azure%20Data%20Factory%20(ADF)%20is,in%20your%20data%20factory%20pipelines 。
我能夠通過命令實現這一點。
{
"storedprocedure":"storedProcName",
"params":"@{variables('currentDt')}"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.