簡體   English   中英

如何將 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), '"}')

這不是直截了當的,不可能是微軟期望我們解決這個問題的方式!

我認為您缺少的是,當您在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM