【问题标题】:Handle >5000 rows in Lookup @ Azure Data Factory在 Lookup @ Azure Data Factory 中处理 >5000 行
【发布时间】:2019-04-24 10:54:00
【问题描述】:

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

这是按照文档设计的: Lookup 活动最多有 5,000 行,最大大小为 2 MB。

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

我该怎么做?有没有办法定义偏移量(例如只读取 1000 行)

【问题讨论】:

    标签: azure azure-data-factory


    【解决方案1】:

    您真的需要 5000 次 foreach 迭代吗?你在foreach里做的是什么流程,没有更高效的方法吗?

    否则,也许下面的解决方案是可能的。

    使用 2 个整数变量创建一个新管道:迭代和计数,默认值为 0。

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

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

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

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

    【讨论】:

    • 感谢您的帮助!我正在为表存储中的每一行调用一个 azure 函数。我这样做是因为只运行一个处理所有行的 azure 函数会运行太长时间(5 分钟是标准 azure 函数的限制)你会推荐另一种架构吗?
    【解决方案2】:

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

    **创建一个包含 2 个整数变量迭代的新管道,并以 0 作为默认值。 创建 ADF 变量时,唯一可供选择的选项是数组、布尔值或字符串。 我应该如何创建一个 Int 变量?

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

    在管道执行后,将添加到 set count 变量 + 1 中的内容?当我设置它时,设置给该变量的唯一值是 +1。根据提供的表达式,这应该小于迭代次数。这将如何在第二个管道中的偏移 SQL 查询中工作?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多