我有一个复制活动,该活动将一个表从MySQL复制到Azure表存储。 这很好。 但是,当我在Azure表上执行查找时,出现错误。 (数据太多)
这是设计参考的文档: 查找活动最多有5,000行,最大大小为2 MB。
还提到了一种解决方法: 设计一个两级管道,其中外部管道在内部管道上进行迭代,以检索不超过最大行数或最大大小的数据。
我该怎么做?有没有一种方法可以定义偏移量(例如只能读取1000行)
答案 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条记录?