sql - Azure 数据工厂 V2 : How to pass a file name to stored procedure variable

标签 sql azure parameters azure-data-factory

我有一个重要的 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 上进行设置,有什么想法吗?

最佳答案

Any ideas on how to pass the Excel file names to the variable "@company" and set this up on Azure Data Factory V2?

根据你的描述,我发现Event-based trigger在 azure 数据工厂中也许会满足您的需求。基于事件的触发器运行管道以响应事件,例如 Azure Blob 存储中的文件到达或文件删除。

因此,当在 blob 存储中创建新的 excel 文件时(顺便说一句,它仅支持 V2 存储帐户,更多详细信息请参阅此 article ),您可以获得 @triggerBody().folderPath@triggerBody().fileName。要在管道中使用这些属性的值,您必须将这些属性映射到管道参数。将属性映射到参数后,您可以通过整个管道中的 @pipeline.parameters.parameterName 表达式访问触发器捕获的值。 (doc)

您可以获取文件名并将其传递到存储过程中。然后进行删除和复制事件。

关于sql - Azure 数据工厂 V2 : How to pass a file name to stored procedure variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52335266/

相关文章:

mysql - 如何改进这个 SQL? (MySQL数据库)

azure - react native azure 通知中心

asp.net - 如何在 Windows Azure 上使用多个实例的 asp.net 缓存

java - 如何将子类参数传递给父类(super class)私有(private)变量?

mysql - 如何过滤两列之间的一组数字?

mysql - 修复低效且困难的查询

azure - 作为客户端,我如何解析 Windows Azure SAS key 的到期日期?

javascript - 通过作为参数传递和全局变量访问函数内部变量之间的区别?

c - 在C函数中传递不同的数据成员

javascript - 为什么我的 sql 语句在编辑器中有效,但在 JS 函数中无效?