如何在 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 上添加多个变量?如果可能的话,这个ForEachValue上的Stored Procedure上写的动态内容怎么样,在你的解释参数中只指@item(),它只包含ParamArray值? Foreach活动一次只能接收一个数组类型的参数。 `@item()` 表示ParamArray 数组中的每个元素。 是的,我们可以在ForEach活动中使用Set variable活动。 我以为你有3个存储过程要按顺序执行,每次接收到的参数值都是一样的。 哈哈哈,不好意思,突然从你的回答中得到了另一个启示。好的,非常感谢约瑟夫!非常感谢您的回答

以上是关于如何在 Azure 数据工厂上对存储过程进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 数据工厂链活动

Azure 数据工厂中的 Azure Synapse 存储过程:是同步调用吗?

将日期时间参数从管道传递到数据流源存储过程 Azure 数据工厂

如何基于 Azure 数据工厂中创建的 Blob 执行触发器?

当资源组上有删除锁时,如何使用 Powershell 停止 Azure 数据工厂的存储事件触发器?

如何使用数据工厂将数据从 Azure Blob 存储增量加载到 Azure SQL 数据库?