如何在 Azure 数据工厂上对存储过程进行排序?
Posted
技术标签:
【中文标题】如何在 Azure 数据工厂上对存储过程进行排序?【英文标题】:How to sequence stored procedure process on Azure Data Factory? 【发布时间】:2021-08-10 07:12:04 【问题描述】:我有一个带有DateTime
参数的存储过程,我想执行管道序列,所以它将首先在“JAN-FEB”开始,然后是“MAR-APR”,然后是“MEI-JUN”
我该怎么做?不使用存储过程中的硬管道?
所以对于这样的例子:
我有 3 个具有不同 DateTime
的存储过程。而且我不希望它这样运行。
我可以做些什么来解决我的问题?在这种情况下,我可以使用 Azure 数据工厂的什么功能?
注意:
我为什么要对这个存储过程进行排序是为了防止Azure Synapse
崩溃。因为在这个脚本中将处理来自源表的大约 10 亿 行,我需要批处理这个过程以防止任何错误。
【问题讨论】:
【参考方案1】:首先您可以在 ADF 中定义一个数组类型变量。例如。 ['JAN-FEB','MAR-APR','MEI-JUN']
通过 Foreach 活动遍历这个数组。选择Sequential
,这将依次循环内部活动。添加动态内容,选择你声明的变量名。
在 Foreach 活动中,我们可以使用存储过程,点击Import
将在你的存储过程中导入参数。然后添加动态内容@item()
。
ADF 将按顺序执行存储过程。
【讨论】:
非常感谢您的解释,但是在这里我想问一下,是否可以在ForEach
items 上添加多个变量?如果可能的话,这个ForEach
和Value
上的Stored Procedure上写的动态内容怎么样,在你的解释参数中只指@item()
,它只包含ParamArray
值?
Foreach活动一次只能接收一个数组类型的参数。 `@item()` 表示ParamArray
数组中的每个元素。
是的,我们可以在ForEach
活动中使用Set variable
活动。
我以为你有3个存储过程要按顺序执行,每次接收到的参数值都是一样的。
哈哈哈,不好意思,突然从你的回答中得到了另一个启示。好的,非常感谢约瑟夫!非常感谢您的回答以上是关于如何在 Azure 数据工厂上对存储过程进行排序?的主要内容,如果未能解决你的问题,请参考以下文章
Azure 数据工厂中的 Azure Synapse 存储过程:是同步调用吗?
将日期时间参数从管道传递到数据流源存储过程 Azure 数据工厂
如何基于 Azure 数据工厂中创建的 Blob 执行触发器?