簡體   English   中英

Azure 數據工廠 V2:如何將文件名傳遞給存儲過程變量

[英]Azure Data Factory V2: How to pass a file name to stored procedure variable

我有一個具有以下結構的重要 Azure SQL 表:

Company     Revenue
-------------------
A              100
B              200
C              100
.               .
.               .
.               .

我現在正在 Azure 數據工廠 V2 上構建一個存儲過程,它將每月從上面的 Azure SQL 事實表中刪除一家特殊公司的所有記錄。 對於這個練習,這個特殊的公司應由變量@company 標識。 存儲過程的結構被創建為:

@company NVARCHAR(5)

DELETE FROM table 
WHERE [company] = @company

由於每個公司都會有不同的 Excel 文件,這些文件將按月將數據插入到此表中(使用復制活動),因此我想在添加最新數據之前使用上面的存儲過程刪除該公司的舊數據一。

然后我想將該 Excel 文件(存儲在 blob 容器中)的名稱傳遞給變量“@company”,以便存儲過程知道要從事實表中刪除的相關數據是什么。 例如:如果 Excel 文件為“A”,則存儲過程應為“從公司 = A 的表中刪除”。

關於如何將 Excel 文件名傳遞給變量“@company”並在 Azure 數據工廠 V2 上進行設置的任何想法?

關於如何將 Excel 文件名傳遞給變量“@company”並在 Azure 數據工廠 V2 上進行設置的任何想法?

根據您的描述,我發現 azure 數據工廠中基於事件的觸發器可能會滿足您的需求。 基於事件的觸發器運行管道以響應 Azure Blob 存儲中的事件,例如文件到達或文件刪除。

因此,當在 blob 存儲中創建新的 excel 文件時(順便說一句,它僅支持 V2 存儲帳戶,更多詳細信息請參閱本文),您可以獲得@triggerBody().folderPath@triggerBody().fileName 要在管道中使用這些屬性的值,您必須將這些屬性映射到管道參數。 將屬性映射到參數后,您可以在整個管道中通過@pipeline.parameters.parameterName表達式訪問觸發器捕獲的值。 ( 文檔)

您可以獲取文件名並將其傳遞到您的存儲過程中。 然后進行刪除和復制活動。

我使用存儲過程活動,您可以從管道參數中填充參數: https : //docs.microsoft.com/en-us/azure/data-factory/transform-data-using-stored-procedure

ADF 存儲過程

可以點擊“導入”,選擇存儲過程后自動添加參數,也可以手動添加。 然后,您可以使用管道表達式來動態填充它們,例如,按照 Jay Gong 的建議,使用觸發器參數@triggerBody().folderPath@triggerBody().fileName

或者,您可以向復制活動添加預復制腳本,而不是使用存儲過程:

預拷貝腳本

這僅對適當的接收器顯示,例如數據庫表。 您也可以動態填充此腳本。 在您的情況下,這可能如下所示:

@{concat('DELETE FROM table 
WHERE [company] = ''',triggerBody().fileName,'''')}

向包含文件名的管道添加一個參數,並將其設置為@triggerBody().fileName或任何更復雜的表達式,以防您多次使用它,這也可能是有意義的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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