在Azure Data Factory的Lookup中处理> 5000行

时间:2019-04-24 10:54:01

标签: azure azure-data-factory

我有一个复制活动,该活动将一个表从MySQL复制到Azure表存储。 这很好。 但是,当我在Azure表上执行查找时,出现错误。 (数据太多)

这是设计参考的文档: 查找活动最多有5,000行,最大大小为2 MB。

还提到了一种解决方法: 设计一个两级管道,其中外部管道在内部管道上进行迭代,以检索不超过最大行数或最大大小的数据。

我该怎么做?有没有一种方法可以定义偏移量(例如只能读取1000行)

azure data factory

2 个答案:

答案 0 :(得分:0)

您真的需要5000次foreach迭代吗?您在foreach中正在执行哪种过程,难道没有更有效的方法吗?

否则,也许可以采用以下解决方案。

使用2个整数变量创建一个新管道:迭代并以0作为默认计数。

首先确定所需的迭代次数。查找以确定数据集的总数。在您的查询中,将其除以5000,加一并向上舍入。使用设置的变量活动将迭代变量的值设置为此值。

接下来,添加带有诸如@less(variables('count'),variables('iterations'))之类的表达式的while循环。在这个while循环中,调用您当前的管道,并将count变量作为参数传递。执行管道活动之后,将count变量设置为+1。

在当前管道中,您可以将limit / offset子句与MySQL查询中的传递参数结合使用,以获取第一次迭代的前0-5000个结果,第二次迭代的前5000-10000个等。

如果您真的需要在表存储上进行迭代,那么我看到的唯一解决方案是您必须自己在结果集上创建分页,您可以为此目的使用逻辑应用程序并使用webhook对其进行调用。

答案 1 :(得分:0)

您好,我遇到了实施此解决方案的问题:

** 使用2个整数变量迭代创建一个新管道,并以0作为默认计数。 创建ADF变量时,只能选择数组,布尔值或字符串。 我应该如何创建一个Int变量?

接下来,添加一个带有@less(variables('count'),variables('iterations'))之类的表达式的while循环。在这个while循环中,调用您当前的管道,并将count变量作为参数传递。执行管道活动后,将count变量设置为+1。

执行完管道后,将添加到设置计数变量+ 1的值是多少?当我设置此值时,设置给该变量的唯一值是+1。根据表达式,假设该值小于迭代次数。在第二个管道中的偏移量SQL查询中这如何工作?

在当前管道中,可以将limit / offset子句与SQL查询中的传递参数结合使用,以获取第一次迭代的前0-5000个结果,第二次迭代的前5000-10000个等。 如果我们使用第一个管道中设置的count变量的值,那将如何增加接下来的1000条记录?